LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

3D imaging

I am presently working on a scanning application and was using an intensity graph to represent the data collected in 2D. Now i have to collect slice by
slice and plot the entire data as a 3D image.
Any suggestions how this can be accomplished?
0 Kudos
Message 1 of 10
(5,348 Views)
HI Mili,

I am Unsure what your data represents and how it must be presented. However I have done a similar application with slicing.

I used a 3D Surface graph. I had my 2D data feeding the Z Matrix Terminal. Since My Application - and it seems yours too - wants the display Slice by Slice, I had left the X and Y Vectors unconnected. The Vectors populate themselves based on no of rows in your 2D Array, begining with 0 so 0 is your first Slice, 1 is the second and so on.

I cannot post this Example as it is part of Larger Program and Copyrighted.

I hope this helps, If you need more clarification then Post more Details and I am sure you will get ample help from the forum.

Good Luck!!

Mache
Good Luck!

Mache
0 Kudos
Message 2 of 10
(5,348 Views)
Hi Mache,
Thanks for getting back to me with your information. In our imaging application, I scan a sample using a laser and collect counts from a Photomultiplier which represents fluorescence in the sample. These counts I feed to an intensity graph and see the flourescence image of the sample. Using the same concept, I have to make this in 3D. The same kind of data i get every slice and I need to put everything together for plotting purposes. Any idea how a 3D intensity graph would work.
Thanks again.
-Mili
0 Kudos
Message 3 of 10
(5,348 Views)
Hi Mili,

Here is a Small Vi Attached. I Hope this Helps. The Vi is Commented and is written in 6.1. I hope you are using 6.1.

Good Luck!!

Mache
Good Luck!

Mache
0 Kudos
Message 4 of 10
(5,348 Views)
> Thanks for getting back to me with your information. In our imaging
> application, I scan a sample using a laser and collect counts from a
> Photomultiplier which represents fluorescence in the sample. These
> counts I feed to an intensity graph and see the flourescence image of
> the sample. Using the same concept, I have to make this in 3D. The
> same kind of data i get every slice and I need to put everything
> together for plotting purposes. Any idea how a 3D intensity graph
> would work.


There is a type of display often used in medical imaging called a voxel
plot. The input is a 3D matrix of intensities. The intensities are
typically interpretted as absorption or a similar measurement and the
word voxel comes from volume pixel, t
he 2D intensities are displayed in
2D pixels from straight above, and the 3D matrix uses 3D pixels or
voxels that emit a certain amount of light. Typically, the viewpoint
can be changed so that you can view the 3D cube of voxels from different
angles to discover its geometry by looking at lots of 2D slices.

As I said, this is typically used for things like cat scans or 3D Xrays.
Now that I've given you all of this info, LV doesn't have such a
display built in. I have seen one built on the diagram and displayed in
the intensity graph, but it wasn't amazingly fast accumulating the
perpendicular vectors for each pixel of the intensity graph through the
3D matrix.

Your best bet might to be to look for another package or an external
ActiveX control that will do this.

Greg McKaskle
0 Kudos
Message 5 of 10
(5,348 Views)
Hi Greg,

Thanks for that enlightening information. I had no idea about the Voxel Plots. Do you know of any Packages which are Voxel Capable? This is just for My Knowledge to be filed in case it is needed in future.

Regards,

Mache
Good Luck!

Mache
0 Kudos
Message 6 of 10
(5,348 Views)
> Thanks for that enlightening information. I had no idea about the
> Voxel Plots. Do you know of any Packages which are Voxel Capable? This
> is just for My Knowledge to be filed in case it is needed in future.
>


I don't really know of any packages, but searching for Voxel Plot on
google did yield some papers, and maybe in there were some controls or
packages somewhere in the results.

Greg McKaskle
0 Kudos
Message 7 of 10
(5,348 Views)
how to use imshow matlab command in mathscript?
0 Kudos
Message 8 of 10
(4,686 Views)
Hi Barathindian,
 
The "imshow" function in MATLAB® is part of the Image Processing Toolbox.  You probably have this toolbox installed for MATLAB and may not have even realized it. LabVIEW MathScript does not currently support the imshow function.
 
If you are looking for a solution in graphical code, LabVIEW does provide some VIs for reading and writing PNG, JPEG, and BMP files.  You can find the VIs in the Programming >> Graphics & Sound >> Graphics Formats palette.  You can then use the Unflatten Pixmap VI to get a matrix representation of your image.
 
National Instruments also produces a Vision Development Module for LabVIEW that includes more advanced image acquisition (IMAQ) and image processing functionality.  This module is more for industrial and scientific use than for duplicating what might be provided in desktop image manipulation programs.
 
MATLAB® is a registered trademark of The MathWorks, Inc.
Aashish M
CEO
TransferFi
www.transferfi.com
0 Kudos
Message 9 of 10
(4,647 Views)
I have been working on something similar for a little while now.  I have two approaches I am working on.

The first utilizes Matlab to do the 3D rendering (3D Rendering Matlab.vi).  I will attach the LV code that I run.  My volume is 64x64x64.  If yours is different you may have to adjust some values.  The Matlab code is duplicated because some of the time I have two volumes to process.  It is currently set up to process the same volume twice.  There is no documentation since it isn't a completed vi.  The input to this vi is currently a .mat file

The second uses the 3D graph control in LabVIEW (3D Picture Control.vi).  I have been able to generate a wireframe representation of my data, but not a surface rendering.  This vi has default data hard coded into the 3D Array input.  The first part of the code organizes the data into a 1D array of ones and zeros where the ones represent values above a threshold.  The next part creates an indices array that allows lines to connect adjacent vertices so the display will be a wireframe.

Hope these help to get started.  I wish I knew more about mesh generation so that a surface could be created.


Randall Pursley
0 Kudos
Message 10 of 10
(4,622 Views)