I am trying to do volume rendering of my dicom dataset. I want it to render the object with exact intensity values of the voxels, for this I was suggested “Synchronize with Volumes module” on community, which I did after reading the documentation of volume rendering module. But I am still clueless about a few things regarding the various settings on the module. On the 1st photo attached, you can see the volume rendered originally.
After checking the box of “Synchronize with Volumes module” the volume changed to this as shown in 2nd picture attached along with scalar and color transfer function on the left. I wanted to understand the “Scalar opacity mapping” given on the left pane, basically I want to create a Step function for opacity where below a certain threshold I want all the pixels to be transparent(those will be dark color noise pixel surrounding the tooth as shown in picture) and all the pixels above that threshold would be opaque. How can I achieve that with the given settings panel on the left ?
Secondly, regarding the “Scaler color mapping” setting, there I can see 6 points which are distributed across the intensity of the object, can we just shift the points manually? like I want point number 0 to be shifted a little ahead which is presently at zero.
Kindly help me understand how can I make use of this feature to view my object with accurate and original intensity. I am also attaching the snipped of 3D slicer volume rendering documentation I referred to.
You can move the points of all transfer functions by drag-and-drop. You can also choose a point index (
Point) above the transfer function plot and enter intensity (
X) and opacity (
Note that the intensity values on screen will be different in slice and 3D views due to shading (lighting). If you turn off shading (in Advanced section) then the volume will not look like a 3D object anymore.
What would you like to achieve?
Thanks, your suggestion helped understanding things alot, especially drag and drop of points.
I need to understand what I am now seeing, basically regarding the scalar opacity mapping function… From what my understanding is, it is a transfer function for opacity, and therefore I wanted to create a step function where under a certain threshold I can see the object completely (in original intensity ) and below that Everything is transparent, that I created successfully by dragging points in the map.
But i see when the map is linear and not step, it is able to preserve the shades and difference is contrast in the rendered volume, and when the map is step, it just displays the whole black object.
Now from what I understand, it should have shown me the object in original contrast(if not color) when the function is step, while what it is doing is when I am making the opacity mapping a linear function I am able to see exact contrast in my object at right places. How does linear mapping shows contrast and step mapping does not??
In slice views, the volume is displayed using a linear ramp (value*scale+offset). Step function would correspond to thresholding.
Pardon me, could you please tell what value, scale and offset are in our context ?
Is there any documentation i can refer to for this ?
I just meant that the window/level or min/max values that you set in Volumes module are ultimately translated to a linear scaling and offset (with clipping to the displayable scalar range of 0-255).
So, I have to keep the opacity transfer function linear or step ? To view some voxels completely and hide others completely.
I don’t know what your goal with the 3D visualization is. If you want to see the exact same intensities in 3D view as in 2D then click the “Synchronize with volumes module” button, disable shading, and set the scalar opacity to 1.0 everywhere. However this would result in quite boring 3D visualization - a black cube. If you cut into it using cropping then you’ll see the exact same intensity values as in slice views.
You can crop away the black box or the cylinder by setting scalar opacity to 0 below a certain intensity and leave 1.0 elsewhere (step function). Then the voxels that remain visible are still displayed with the exact same intensity in 2D and 3D views. You may see artifacts at the boundary that you may soften by using a ramp instead of a step function - but in this case at the boundary you won’ see exactly the same voxel values as in slice views, because there will be some some-transparent voxels at the boundary.
If you want to further reduce artifacts at the boundary or just want to be able to see inside the volume then you can reduce the opacity from 1.0 to 0.5 or 0.2 or even smaller value. Then at each pixel position you will see a mix of many voxels of the original volume, so it won’t be the same as what you see in slice views.
If you want to give more depth perception then you could enable shading, and to allow users to more easily distinguish different tissue types then you could add some colors to the color transfer functions. These of course would make the 3D rendering look even more different from slice views.