I am developing an application for Diffusion weighted imaging. For some mathematical modeling I need the signal intensity value from DWI volume data. I just want to make sure
If I load a DWI volume as dwi and use dwi.GetID(). The resulting array is the signal intensity values or do I need to apply some weighting?
Hi! The DWI volume will contain both baseline images acquired without diffusion weighting, as well as images with diffusion weighting. The “signal” is often defined as the ratio of a diffusion-weighted to a non-diffusion-weighted image (also called baseline or b=0) at each pixel. Or, the denominator can be the average of the baseline images. You need to see how the signal is defined in the particular equation you are interested in. You can take a look at the code for diffusion brain masking and also for tensor computation in order to see how the different components of the image are handled according to their b-values.
Thank you for your response, it helped a lot. I just have one confusion in the data. if I use “dwi.GetID()” It returns my diffusion weighted volume node. I can convert it into an array by using (slicer.util.array).
The returned matrix are integer numbers from 0 to 4506
What exactly these values represents? is it some kind of weighted signal values?
Hi. No the numbers are the scan from the scanner. You have to read more of the code I pointed you to. The “signal” in papers usually refers to a ratio as I described before. You have to calculate this ratio (or the natural log of this ratio) from the actual DWI scan, which is the data from the scanner and includes both baseline and diffusion weighted images, in an order determined by the b values. I can’t tell you what any voxel in your array represents. You have to use the b values to figure this out. Reading other code will be the best way to see examples.
@ljod just want to clarify one more thing. how can I access the actual data from the scanner for each voxel? I thought if I use “dwi.GetID()” I can get the actual data from the scanner but apparently its something else.
I understand the the sequence of my data. I can extract diffusion weighted and non diffusion weighted images,what I dont know is the value from the scanner for each voxels.
As you have suggested,I have read the code, I now have an access of the gradient matrix and b values as well. I just want to get an access of the data from the scanner. Can you please guide me in this regard.
the data from the scanner is in your image array. However it will be safer to access it using vtk operations to get the correct image component according to the b value and gradient direction of interest. Examples of this are in the masking code here for example: