Hi all,
I wonder what is the best way to process 3D image data in ImageJ. More and more medical images are produced in 3D, such as CT, MRI series.... In imageJ, the commonly used way is ImageStack (I guess). But after reading the StackProcessor and StackConverter, I have some questions: 1: it is important to switch the data between sagittal plane, coronal plane and transverse plane. I know that "stacks -> orthogonal views" can show three views at the same time. But from data processing point of view, sometimes we need to switch the whole stack from transverse view to sagittal views. I means, in matlab, we can use "permute" or "shiftdim" to just change the order of dimensions. In stackProcessor or stackConverter, I didn't find similar functions. 2: it is also important to do normalization of resolution. For example, a commonly used function is to normalize the stack to be 1x1x1mm voxel. In stackProcessor, there are "scale" and "resize", but non of them do z-axis interpolation. (They are just a loop of 2D resize) So my question is: what's the difference between "scale" and "resize" ? and what's the best way of doing normalization of resolution? 3: in 2D processing,we can use getFloatArray() to get the image in form of float[][] in 3D prcessing, can we use getVoxels to get the image in form of float[][][] ? Sorry if these questions are too basic. Best regards, Zhou Xin -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Dear Zhou Xin,
Yes ImageJ is not very developer-friendly for 3D processing. I released a basic tutorial for 3D in ImageJ years ago, it may be a bit outdated but give basic notions : http://imagejdocu.tudor.lu/doku.php?id=tutorial:working:3d_image_processing_and_analysis_with_imagej The guys from ImageJ2 did a great job in redesigning image format for multidimensional images, in the imglib2 library : http://fiji.sc/ImgLib2 I did not have the time to dig into this library, because I use my own library ;) http://imagejdocu.tudor.lu/doku.php?id=plugin:stacks:3d_ij_suite:start In ImageJ there is the function getVoxels from ImageStack, it is noted "experimental" but works well I think. Here some information, hope this helps. Best Thomas On 29/06/15 22:41, 周鑫 wrote: > Hi all, > > > I wonder what is the best way to process 3D image data in ImageJ. > More and more medical images are produced in 3D, such as CT, MRI series.... > In imageJ, the commonly used way is ImageStack (I guess). > But after reading the StackProcessor and StackConverter, I have some questions: > > > 1: it is important to switch the data between sagittal plane, coronal plane and transverse plane. > I know that "stacks -> orthogonal views" can show three views at the same time. > But from data processing point of view, sometimes we need to switch the whole stack from transverse view to sagittal views. > I means, in matlab, we can use "permute" or "shiftdim" to just change the order of dimensions. > In stackProcessor or stackConverter, I didn't find similar functions. > > > 2: it is also important to do normalization of resolution. > For example, a commonly used function is to normalize the stack to be 1x1x1mm voxel. > In stackProcessor, there are "scale" and "resize", but non of them do z-axis interpolation. (They are just a loop of 2D resize) > So my question is: what's the difference between "scale" and "resize" ? > and what's the best way of doing normalization of resolution? > > > 3: in 2D processing,we can use getFloatArray() to get the image in form of float[][] > in 3D prcessing, can we use getVoxels to get the image in form of float[][][] ? > > > Sorry if these questions are too basic. > > > Best regards, Zhou Xin > > > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > -- > /***************************************************************/ > Thomas Boudier, Associate Professor, UPMC, > Université Pierre et Marie Curie, Paris, France. > BioInformatics Institute (BII)/IPAL, Singapore. > /**************************************************************/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi List,
Coincidentally, I have a related query regarding analysing CAT scan Dicom images of knees in ImageJ. Is there a way to measure trabecular orientation in the xyz planes? Regards, Shameem Sampath The Bluespot Knee Clinic > On 30 Jun 2015, at 04:52, Thomas Boudier <[hidden email]> wrote: > > Dear Zhou Xin, > > Yes ImageJ is not very developer-friendly for 3D processing. I released a basic tutorial for 3D in ImageJ years ago, it may be a bit outdated but give basic notions : > > http://imagejdocu.tudor.lu/doku.php?id=tutorial:working:3d_image_processing_and_analysis_with_imagej > > The guys from ImageJ2 did a great job in redesigning image format for multidimensional images, in the imglib2 library : > > http://fiji.sc/ImgLib2 > > I did not have the time to dig into this library, because I use my own library ;) > > http://imagejdocu.tudor.lu/doku.php?id=plugin:stacks:3d_ij_suite:start > > In ImageJ there is the function getVoxels from ImageStack, it is noted "experimental" but works well I think. > > Here some information, hope this helps. > > Best > > Thomas > > >> On 29/06/15 22:41, 周鑫 wrote: >> Hi all, >> >> >> I wonder what is the best way to process 3D image data in ImageJ. >> More and more medical images are produced in 3D, such as CT, MRI series.... >> In imageJ, the commonly used way is ImageStack (I guess). >> But after reading the StackProcessor and StackConverter, I have some questions: >> >> >> 1: it is important to switch the data between sagittal plane, coronal plane and transverse plane. >> I know that "stacks -> orthogonal views" can show three views at the same time. >> But from data processing point of view, sometimes we need to switch the whole stack from transverse view to sagittal views. >> I means, in matlab, we can use "permute" or "shiftdim" to just change the order of dimensions. >> In stackProcessor or stackConverter, I didn't find similar functions. >> >> >> 2: it is also important to do normalization of resolution. >> For example, a commonly used function is to normalize the stack to be 1x1x1mm voxel. >> In stackProcessor, there are "scale" and "resize", but non of them do z-axis interpolation. (They are just a loop of 2D resize) >> So my question is: what's the difference between "scale" and "resize" ? >> and what's the best way of doing normalization of resolution? >> >> >> 3: in 2D processing,we can use getFloatArray() to get the image in form of float[][] >> in 3D prcessing, can we use getVoxels to get the image in form of float[][][] ? >> >> >> Sorry if these questions are too basic. >> >> >> Best regards, Zhou Xin >> >> >> >> -- >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html >> >> -- >> /***************************************************************/ >> Thomas Boudier, Associate Professor, UPMC, >> Université Pierre et Marie Curie, Paris, France. >> BioInformatics Institute (BII)/IPAL, Singapore. >> /**************************************************************/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Dear Shameem,
In my plugin ellipsoid fitting there is angles calculation, I did not test it much but should work. http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:3d_analysis:start Best Thomas On 30/06/15 19:53, Shameem Sampath wrote: > Hi List, > Coincidentally, I have a related query regarding analysing CAT scan Dicom images of knees in ImageJ. > Is there a way to measure trabecular orientation in the xyz planes? > Regards, > Shameem Sampath > The Bluespot Knee Clinic > > >> On 30 Jun 2015, at 04:52, Thomas Boudier <[hidden email]> wrote: >> >> Dear Zhou Xin, >> >> Yes ImageJ is not very developer-friendly for 3D processing. I released a basic tutorial for 3D in ImageJ years ago, it may be a bit outdated but give basic notions : >> >> http://imagejdocu.tudor.lu/doku.php?id=tutorial:working:3d_image_processing_and_analysis_with_imagej >> >> The guys from ImageJ2 did a great job in redesigning image format for multidimensional images, in the imglib2 library : >> >> http://fiji.sc/ImgLib2 >> >> I did not have the time to dig into this library, because I use my own library ;) >> >> http://imagejdocu.tudor.lu/doku.php?id=plugin:stacks:3d_ij_suite:start >> >> In ImageJ there is the function getVoxels from ImageStack, it is noted "experimental" but works well I think. >> >> Here some information, hope this helps. >> >> Best >> >> Thomas >> >> >>> On 29/06/15 22:41, 周鑫 wrote: >>> Hi all, >>> >>> >>> I wonder what is the best way to process 3D image data in ImageJ. >>> More and more medical images are produced in 3D, such as CT, MRI series.... >>> In imageJ, the commonly used way is ImageStack (I guess). >>> But after reading the StackProcessor and StackConverter, I have some questions: >>> >>> >>> 1: it is important to switch the data between sagittal plane, coronal plane and transverse plane. >>> I know that "stacks -> orthogonal views" can show three views at the same time. >>> But from data processing point of view, sometimes we need to switch the whole stack from transverse view to sagittal views. >>> I means, in matlab, we can use "permute" or "shiftdim" to just change the order of dimensions. >>> In stackProcessor or stackConverter, I didn't find similar functions. >>> >>> >>> 2: it is also important to do normalization of resolution. >>> For example, a commonly used function is to normalize the stack to be 1x1x1mm voxel. >>> In stackProcessor, there are "scale" and "resize", but non of them do z-axis interpolation. (They are just a loop of 2D resize) >>> So my question is: what's the difference between "scale" and "resize" ? >>> and what's the best way of doing normalization of resolution? >>> >>> >>> 3: in 2D processing,we can use getFloatArray() to get the image in form of float[][] >>> in 3D prcessing, can we use getVoxels to get the image in form of float[][][] ? >>> >>> >>> Sorry if these questions are too basic. >>> >>> >>> Best regards, Zhou Xin >>> >>> >>> >>> -- >>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html >>> >>> -- >>> /***************************************************************/ >>> Thomas Boudier, Associate Professor, UPMC, >>> Université Pierre et Marie Curie, Paris, France. >>> BioInformatics Institute (BII)/IPAL, Singapore. >>> /**************************************************************/ >> -- >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- /***************************************************************/ Thomas Boudier, Associate Professor, UPMC, Université Pierre et Marie Curie, Paris, France. BioInformatics Institute (BII)/IPAL, Singapore. /**************************************************************/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Thanks Thomas,
I'll check it out. Regards, Shameem Confidentiality Notice: This e-mail and any attachments are intended solely for the addressee and may contain confidential or privileged information. If you are not the named addressee, or the person responsible for delivering the message to the named addressee, please notify the sender as soon as possible and delete the material from your computer. This message will be protected by copyright. If it has come to you in error, you must not take any action based on its contents nor must you copy or show the message to any person other than the intended recipient. The Bluespot Knee Clinic > On 1 Jul 2015, at 04:17, Thomas Boudier <[hidden email]> wrote: > > Dear Shameem, > > In my plugin ellipsoid fitting there is angles calculation, I did not test it much but should work. > > http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:3d_analysis:start > > Best > > Thomas > >> On 30/06/15 19:53, Shameem Sampath wrote: >> Hi List, >> Coincidentally, I have a related query regarding analysing CAT scan Dicom images of knees in ImageJ. >> Is there a way to measure trabecular orientation in the xyz planes? >> Regards, >> Shameem Sampath >> The Bluespot Knee Clinic >> >> >>> On 30 Jun 2015, at 04:52, Thomas Boudier <[hidden email]> wrote: >>> >>> Dear Zhou Xin, >>> >>> Yes ImageJ is not very developer-friendly for 3D processing. I released a basic tutorial for 3D in ImageJ years ago, it may be a bit outdated but give basic notions : >>> >>> http://imagejdocu.tudor.lu/doku.php?id=tutorial:working:3d_image_processing_and_analysis_with_imagej >>> >>> The guys from ImageJ2 did a great job in redesigning image format for multidimensional images, in the imglib2 library : >>> >>> http://fiji.sc/ImgLib2 >>> >>> I did not have the time to dig into this library, because I use my own library ;) >>> >>> http://imagejdocu.tudor.lu/doku.php?id=plugin:stacks:3d_ij_suite:start >>> >>> In ImageJ there is the function getVoxels from ImageStack, it is noted "experimental" but works well I think. >>> >>> Here some information, hope this helps. >>> >>> Best >>> >>> Thomas >>> >>> >>>> On 29/06/15 22:41, 周鑫 wrote: >>>> Hi all, >>>> >>>> >>>> I wonder what is the best way to process 3D image data in ImageJ. >>>> More and more medical images are produced in 3D, such as CT, MRI series.... >>>> In imageJ, the commonly used way is ImageStack (I guess). >>>> But after reading the StackProcessor and StackConverter, I have some questions: >>>> >>>> >>>> 1: it is important to switch the data between sagittal plane, coronal plane and transverse plane. >>>> I know that "stacks -> orthogonal views" can show three views at the same time. >>>> But from data processing point of view, sometimes we need to switch the whole stack from transverse view to sagittal views. >>>> I means, in matlab, we can use "permute" or "shiftdim" to just change the order of dimensions. >>>> In stackProcessor or stackConverter, I didn't find similar functions. >>>> >>>> >>>> 2: it is also important to do normalization of resolution. >>>> For example, a commonly used function is to normalize the stack to be 1x1x1mm voxel. >>>> In stackProcessor, there are "scale" and "resize", but non of them do z-axis interpolation. (They are just a loop of 2D resize) >>>> So my question is: what's the difference between "scale" and "resize" ? >>>> and what's the best way of doing normalization of resolution? >>>> >>>> >>>> 3: in 2D processing,we can use getFloatArray() to get the image in form of float[][] >>>> in 3D prcessing, can we use getVoxels to get the image in form of float[][][] ? >>>> >>>> >>>> Sorry if these questions are too basic. >>>> >>>> >>>> Best regards, Zhou Xin >>>> >>>> >>>> >>>> -- >>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html >>>> >>>> -- >>>> /***************************************************************/ >>>> Thomas Boudier, Associate Professor, UPMC, >>>> Université Pierre et Marie Curie, Paris, France. >>>> BioInformatics Institute (BII)/IPAL, Singapore. >>>> /**************************************************************/ >>> -- >>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html >> -- >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > -- > /***************************************************************/ > Thomas Boudier, Associate Professor, UPMC, > Université Pierre et Marie Curie, Paris, France. > BioInformatics Institute (BII)/IPAL, Singapore. > /**************************************************************/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by Shameem Sampath
Dear Shameem,
On 30/06/15 12:54, Shameem Sampath wrote: > Hi List, > Coincidentally, I have a related query regarding analysing CAT scan Dicom images of knees in ImageJ. > Is there a way to measure trabecular orientation in the xyz planes? Trabecular orientation is usually measured using the mean intercept length (MIL) method, although in greyscale images, Fourier-based (autocorrelation) methods can work as well. The bigger problem you have is that if you have clinical CT images, you have relatively low resolution in the axial (z) direction compared to the in-plane resolution of the slices (xy) and trabecular size (in humans, no greater than 500µm diameter). Typical pixel spacings are something like 100-500 µm in xy and 500-2000µm in z. True resolution is usually somewhat less than that. Usually, z slice-spacing is 10-20× greater than xy pixel spacing. So that means it's very difficult to resolve the z element of any 3D trabecular orientation vector. If you really need trabecular orientation, you must have isotropic pixel spacing (same in x, y and z), otherwise your measurement is likely to be confounded by its interaction with pixel spacing. Best regards, Michael > Regards, > Shameem Sampath > The Bluespot Knee Clinic <http://www.rvc.ac.uk> This message, together with any attachments, is intended for the stated addressee(s) only and may contain privileged or confidential information. Any views or opinions presented are solely those of the author and do not necessarily represent those of the Royal Veterinary College. -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Thanks Michael.
Regards, Shameem Confidentiality Notice: This e-mail and any attachments are intended solely for the addressee and may contain confidential or privileged information. If you are not the named addressee, or the person responsible for delivering the message to the named addressee, please notify the sender as soon as possible and delete the material from your computer. This message will be protected by copyright. If it has come to you in error, you must not take any action based on its contents nor must you copy or show the message to any person other than the intended recipient. The Bluespot Knee Clinic > On 6 Jul 2015, at 11:24, Doube, Michael <[hidden email]> wrote: > > Dear Shameem, > >> On 30/06/15 12:54, Shameem Sampath wrote: >> Hi List, >> Coincidentally, I have a related query regarding analysing CAT scan Dicom images of knees in ImageJ. >> Is there a way to measure trabecular orientation in the xyz planes? > > Trabecular orientation is usually measured using the mean intercept length (MIL) method, although in greyscale images, Fourier-based (autocorrelation) methods can work as well. > > The bigger problem you have is that if you have clinical CT images, you have relatively low resolution in the axial (z) direction compared to the in-plane resolution of the slices (xy) and trabecular size (in humans, no greater than 500µm diameter). Typical pixel spacings are something like 100-500 µm in xy and 500-2000µm in z. True resolution is usually somewhat less than that. Usually, z slice-spacing is 10-20× greater than xy pixel spacing. So that means it's very difficult to resolve the z element of any 3D trabecular orientation vector. > > If you really need trabecular orientation, you must have isotropic pixel spacing (same in x, y and z), otherwise your measurement is likely to be confounded by its interaction with pixel spacing. > > Best regards, > > Michael > >> Regards, >> Shameem Sampath >> The Bluespot Knee Clinic > > <http://www.rvc.ac.uk> > > This message, together with any attachments, is intended for the stated addressee(s) only and may contain privileged or confidential information. Any views or opinions presented are solely those of the author and do not necessarily represent those of the Royal Veterinary College. > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by Thomas Boudier-3
Hi Thomas,
I am having trouble installing the 3D suite in my MacPro. The operating system is OS X Yosemite. Any suggestions? Regards, Shameem > On 1 Jul 2015, at 04:17, Thomas Boudier <[hidden email]> wrote: > > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Shameem,
On 21.09.2015 17:50, Dr S A Sampath Esq wrote: > I am having trouble installing the 3D suite in my MacPro. The operating system is OS X Yosemite. > Any suggestions? Can you be a bit more specific as to what exactly your trouble is? Did you enable the '3D Image Suite' [1] update site in the ImageJ updater [2]? Jan [1]: http://imagej.net/List_of_update_sites [2]: http://imagej.net/How_to_follow_a_3rd_party_update_site -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Dear Shameen,
What version of Java do you have ? the 3D suite is not working with java 1.5. Best, Thomas On 22/09/2015 00:04, Jan Eglinger wrote: > Hi Shameem, > > On 21.09.2015 17:50, Dr S A Sampath Esq wrote: >> I am having trouble installing the 3D suite in my MacPro. The >> operating system is OS X Yosemite. >> Any suggestions? > > Can you be a bit more specific as to what exactly your trouble is? > Did you enable the '3D Image Suite' [1] update site in the ImageJ > updater [2]? > > Jan > > [1]: http://imagej.net/List_of_update_sites > [2]: http://imagej.net/How_to_follow_a_3rd_party_update_site > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > > -- > /***************************************************************/ > Thomas Boudier, Associate Professor, UPMC, > Université Pierre et Marie Curie, Paris, France. > BioInformatics Institute (BII)/IPAL, Singapore. > /**************************************************************/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |