04-12-2009 10:55 PM
Hi All,
I am looking for guidance towards designing a LabVIEW based MRI simulation. I am a bit lost and would appreciate any advice.
Here is the main goal of the simulator:
**Have the user be able to adjust where along the z-axis a cross-sectional image of an arbitrary 3D collection of shapes is produced. Also be able to adjust the "density" of each of the shapes and show a corresponding change in the cross-sectional image (higher density objects will have a darker cross section)**
The simulator does not have to send a signal / measure the induced RF response/phase from individual atoms or any of that.
I want to do the following to get started:
04-13-2009 06:59 AM
gastro54 wrote:
- Initialize a collection of several 3D surfaces (simple ones such as elongated spheres, cubes, cylinders) on the same graph using the "3D Parametric Surface VI
- Define a user-controllable density value for each of the shapes.
- Let the user control where on the Z-axis a cross sectional image is formed.
MRI data is certainly not a collection of 3D shapes, but a 3D array of values (shades). As a first step, you should map your shapes into a 3D array. Extracting planes can then be easily done using "index array" with two of the dimensions disconnected. If you want to get data at noninteger indices or slanted planes, you would use e.g. trilinear interpolation.
04-13-2009 09:44 AM
This thread may help. Here is a preview.
Bubbles in fluid flow (pink)
Cross-section of mouse tendon.
Ben
04-13-2009 02:53 PM
Awsome: thanks for the replies - very helpful.
I looked through the thread you posted, Ben, and was particularly interested in the mouse tendon stuff.
I saw that the mouse tendon intensity data was in the form of a 1D unsigned array and that it represents a series of 100 256x256 image slices.
Is each 1-256, 257-512, etc group of elements in the array a single line in a particular slice? (So 256 "groups" of elements in the array would constitute a single 2D slice)?
If this is true, how does the indexing on the input to the for loop control the output to the intensity graph? What determines the number of iterations the for loop runs through? Is it determined by the "PlotAreaSize" property node?
I was able to reconstruct the 3D visualization vi you constructed to display the data as a solid 3d object using ActiveX stuff (that I don't understand completely).
What I will do next is try to find some real MRI datasets of interesting anatomical features, convert the dataset into the same format as the "mouse tendon data" and apply the same imaging techniques.
04-13-2009 09:57 PM
04-14-2009 05:48 AM
gastro54 wrote:Awsome: thanks for the replies - very helpful.
...
What I will do next is try to find some real MRI datasets of interesting anatomical features, convert the dataset into the same format as the "mouse tendon data" and apply the same imaging techniques.
Cool!
please post sample code to help others (and entertain me )
Ben
04-16-2009 10:38 PM - edited 04-16-2009 10:43 PM
OK - I found a sweet animated gif with 140 frames on wikipedia of a cranial MRI scan.
Is there any way to convert this to a 3D 256x256x140 intensity stack array?
04-17-2009 12:44 AM
OK I just found this thread: http://forums.ni.com/ni/board/message?board.id=170&thread.id=347413&view=by_date_ascending&page=1
Looks like I might be able to use this GIF reader, but I don't have the IMAQ package. Would someone be willing to use IMAQ's imagetoarray function to build a 3D array for me?
04-17-2009 05:40 AM
When last I looked at Mike's code it did not require add-ons like imaging. His code doesn't work?
Ben
04-17-2009 08:09 AM