Smooth label-map volume rendering

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Smooth label-map volume rendering

Bertram Sabrowsky-Hirsch

Hi all,

 

I am working with volume data before and after a classification algorithm.

The input volume has ushort intensity values, the output volume is a label-map where the values indicate each voxels class/label (background=0, vessel=1, aneurysm=2, …).

 

I am visualizing the input volume with a opacity transfer function that simulates a threshold filter (e.g. control points: 799=0.0, 800=1.0) and the result is a nice and smooth visualization of the volume.

 

However, the output volume has this blocky Minecraft style effect. The opacity transfer function has the control points: 0=0.0, 1=1.0 and I use the color transfer function to distinguish the classes/labels.

Is there a way to visualize the output volume in a similar way as the input volume? I considered generating iso-surface meshes and smooth those, but this is not really an option. I also don’t really understand why this is an issue because the

Input volume is also rendered with a distance of 1 between the two opacity thresholds. Are the volumes handled differently by vtk and how?

 

Input volume:

 

Output volume:

 

Kind regards,

Bertram


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Smooth label-map volume rendering

Andras Lasso

I would be interested in a good solution to this, too.

 

In 3d Slicer, we’ve been using flying edges filter, which creates usable (non-blocky) surfaces very quickly (suitable for interactive editing). The limitation is that we still need a smoothing filter to avoid all staircase artifacts, and that it increases update time by about a magnitude.

 

We’ve been evaluating using multi-volume rendering for displaying segmentation in 3D, to achieve faster updates and nicer transparent renderings. Multi-volume rendering is good because we can apply Gaussian smoothing on each input volume to get correctly reconstructed (non-blocky) surface and we can display overlapping segments. However, this Gaussian smoothing takes some time (still competitive with surface smoothing) and multi-volume renderer does not support shading yet (this is the blocking issue right now).

 

Andras

 

From: vtkusers <[hidden email]> On Behalf Of Bertram Sabrowsky-Hirsch
Sent: Thursday, June 7, 2018 3:54 AM
To: [hidden email]
Subject: [vtkusers] Smooth label-map volume rendering

 

Hi all,

 

I am working with volume data before and after a classification algorithm.

The input volume has ushort intensity values, the output volume is a label-map where the values indicate each voxels class/label (background=0, vessel=1, aneurysm=2, …).

 

I am visualizing the input volume with a opacity transfer function that simulates a threshold filter (e.g. control points: 799=0.0, 800=1.0) and the result is a nice and smooth visualization of the volume.

 

However, the output volume has this blocky Minecraft style effect. The opacity transfer function has the control points: 0=0.0, 1=1.0 and I use the color transfer function to distinguish the classes/labels.

Is there a way to visualize the output volume in a similar way as the input volume? I considered generating iso-surface meshes and smooth those, but this is not really an option. I also don’t really understand why this is an issue because the

Input volume is also rendered with a distance of 1 between the two opacity thresholds. Are the volumes handled differently by vtk and how?

 

Input volume:

 

Output volume:

 

Kind regards,

Bertram


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Smooth label-map volume rendering

Sankhesh Jhaveri-2

Hi Andras,

Note that the vtkGPUVolumeRayCastMapper already supports labeled data rendering.

Take a look at TestGPURayCastCompositeMask and TestGPURayCastCompositeMaskBlend.

Sankhesh


On Thu, Jun 7, 2018 at 12:08 PM Andras Lasso <[hidden email]> wrote:

I would be interested in a good solution to this, too.

 

In 3d Slicer, we’ve been using flying edges filter, which creates usable (non-blocky) surfaces very quickly (suitable for interactive editing). The limitation is that we still need a smoothing filter to avoid all staircase artifacts, and that it increases update time by about a magnitude.

 

We’ve been evaluating using multi-volume rendering for displaying segmentation in 3D, to achieve faster updates and nicer transparent renderings. Multi-volume rendering is good because we can apply Gaussian smoothing on each input volume to get correctly reconstructed (non-blocky) surface and we can display overlapping segments. However, this Gaussian smoothing takes some time (still competitive with surface smoothing) and multi-volume renderer does not support shading yet (this is the blocking issue right now).

 

Andras

 

From: vtkusers <[hidden email]> On Behalf Of Bertram Sabrowsky-Hirsch
Sent: Thursday, June 7, 2018 3:54 AM
To: [hidden email]
Subject: [vtkusers] Smooth label-map volume rendering

 

Hi all,

 

I am working with volume data before and after a classification algorithm.

The input volume has ushort intensity values, the output volume is a label-map where the values indicate each voxels class/label (background=0, vessel=1, aneurysm=2, …).

 

I am visualizing the input volume with a opacity transfer function that simulates a threshold filter (e.g. control points: 799=0.0, 800=1.0) and the result is a nice and smooth visualization of the volume.

 

However, the output volume has this blocky Minecraft style effect. The opacity transfer function has the control points: 0=0.0, 1=1.0 and I use the color transfer function to distinguish the classes/labels.

Is there a way to visualize the output volume in a similar way as the input volume? I considered generating iso-surface meshes and smooth those, but this is not really an option. I also don’t really understand why this is an issue because the

Input volume is also rendered with a distance of 1 between the two opacity thresholds. Are the volumes handled differently by vtk and how?

 

Input volume:

 

Output volume:

 

Kind regards,

Bertram

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
--
Sankhesh Jhaveri
Sr. Research & Development Engineer | Kitware | (518) 881-4417

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers

image001.jpg (9K) Download Attachment
image002.jpg (14K) Download Attachment
image002.jpg (14K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Smooth label-map volume rendering

terminator via vtkusers
In reply to this post by Bertram Sabrowsky-Hirsch
Wow why label-map volume rendering has many problems and limitation?
Except what you said, I figured out that I can't change opacity of each
component independently and just opacity of the first one (index=0) will be
applied (while I can SetScalarOpacity(1,tf),... ). Also Do you know why does
it just support up to four components?!

And is there any plan to solve them?



--
Sent from: http://vtk.1045678.n5.nabble.com/VTK-Users-f1224199.html
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Smooth label-map volume rendering

Andras Lasso
In reply to this post by Sankhesh Jhaveri-2

Thank you for the information.

 

Do these rendering options allow smoothing (low-pass filtering that reconstructs the continuous signal from discrete samples)?

 

Is visualization of overlapping segments supported? I know that generating new label value for each intersection combination and setting appropriate color and opacity value could be a solution. However, this is only practical if number of segments is small (up to 16 segments a label value could be a bitfield which encodes presence of each segment), but not a generally applicable solution, we need support visualization up to about 200 potentially overlapping segments. It is also a difficulty that current image processing filter implementations cannot operate directly on bitfield data (that was the main motivation for us to use to choose per-segment volumes instead of bitfield volumes for overlapping segment storage).

 

Andras

 

From: Sankhesh Jhaveri <[hidden email]>
Sent: Friday, June 8, 2018 3:06 PM
To: Andras Lasso <[hidden email]>
Cc: Bertram Sabrowsky-Hirsch <[hidden email]>; [hidden email]
Subject: Re: [vtkusers] Smooth label-map volume rendering

 

Hi Andras,

Note that the vtkGPUVolumeRayCastMapper already supports labeled data rendering.

Take a look at TestGPURayCastCompositeMask and TestGPURayCastCompositeMaskBlend.

Sankhesh

 

On Thu, Jun 7, 2018 at 12:08 PM Andras Lasso <[hidden email]> wrote:

I would be interested in a good solution to this, too.

 

In 3d Slicer, we’ve been using flying edges filter, which creates usable (non-blocky) surfaces very quickly (suitable for interactive editing). The limitation is that we still need a smoothing filter to avoid all staircase artifacts, and that it increases update time by about a magnitude.

 

We’ve been evaluating using multi-volume rendering for displaying segmentation in 3D, to achieve faster updates and nicer transparent renderings. Multi-volume rendering is good because we can apply Gaussian smoothing on each input volume to get correctly reconstructed (non-blocky) surface and we can display overlapping segments. However, this Gaussian smoothing takes some time (still competitive with surface smoothing) and multi-volume renderer does not support shading yet (this is the blocking issue right now).

 

Andras

 

From: vtkusers <[hidden email]> On Behalf Of Bertram Sabrowsky-Hirsch
Sent: Thursday, June 7, 2018 3:54 AM
To: [hidden email]
Subject: [vtkusers] Smooth label-map volume rendering

 

Hi all,

 

I am working with volume data before and after a classification algorithm.

The input volume has ushort intensity values, the output volume is a label-map where the values indicate each voxels class/label (background=0, vessel=1, aneurysm=2, …).

 

I am visualizing the input volume with a opacity transfer function that simulates a threshold filter (e.g. control points: 799=0.0, 800=1.0) and the result is a nice and smooth visualization of the volume.

 

However, the output volume has this blocky Minecraft style effect. The opacity transfer function has the control points: 0=0.0, 1=1.0 and I use the color transfer function to distinguish the classes/labels.

Is there a way to visualize the output volume in a similar way as the input volume? I considered generating iso-surface meshes and smooth those, but this is not really an option. I also don’t really understand why this is an issue because the

Input volume is also rendered with a distance of 1 between the two opacity thresholds. Are the volumes handled differently by vtk and how?

 

Input volume:

 

Output volume:

 

Kind regards,

Bertram

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers

--

Sankhesh Jhaveri
Sr. Research & Development Engineer | Kitware | (518) 881-4417


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Smooth label-map volume rendering

Sankhesh Jhaveri-2

Hi Andras,

I don’t think that there is any explicit smoothing operation performed by the mapper. However, final color computation does blend the mapped color values from the input volume and the mask.

Even though we call it a label map, it is more of a masking operation based on a secondary label map volume. By virtue of this, it supports overlapping segments. See the attached baseline image for TestGPURayCastCompositeMaskBlend:

TestGPURayCastCompositeMaskBlend


On Sat, Jun 9, 2018 at 3:16 PM Andras Lasso <[hidden email]> wrote:

Thank you for the information.

 

Do these rendering options allow smoothing (low-pass filtering that reconstructs the continuous signal from discrete samples)?

 

Is visualization of overlapping segments supported? I know that generating new label value for each intersection combination and setting appropriate color and opacity value could be a solution. However, this is only practical if number of segments is small (up to 16 segments a label value could be a bitfield which encodes presence of each segment), but not a generally applicable solution, we need support visualization up to about 200 potentially overlapping segments. It is also a difficulty that current image processing filter implementations cannot operate directly on bitfield data (that was the main motivation for us to use to choose per-segment volumes instead of bitfield volumes for overlapping segment storage).

 

Andras

 

From: Sankhesh Jhaveri <[hidden email]>
Sent: Friday, June 8, 2018 3:06 PM
To: Andras Lasso <[hidden email]>
Cc: Bertram Sabrowsky-Hirsch <[hidden email]>; [hidden email]
Subject: Re: [vtkusers] Smooth label-map volume rendering

 

Hi Andras,

Note that the vtkGPUVolumeRayCastMapper already supports labeled data rendering.

Take a look at TestGPURayCastCompositeMask and TestGPURayCastCompositeMaskBlend.

Sankhesh

 

On Thu, Jun 7, 2018 at 12:08 PM Andras Lasso <[hidden email]> wrote:

I would be interested in a good solution to this, too.

 

In 3d Slicer, we’ve been using flying edges filter, which creates usable (non-blocky) surfaces very quickly (suitable for interactive editing). The limitation is that we still need a smoothing filter to avoid all staircase artifacts, and that it increases update time by about a magnitude.

 

We’ve been evaluating using multi-volume rendering for displaying segmentation in 3D, to achieve faster updates and nicer transparent renderings. Multi-volume rendering is good because we can apply Gaussian smoothing on each input volume to get correctly reconstructed (non-blocky) surface and we can display overlapping segments. However, this Gaussian smoothing takes some time (still competitive with surface smoothing) and multi-volume renderer does not support shading yet (this is the blocking issue right now).

 

Andras

 

From: vtkusers <[hidden email]> On Behalf Of Bertram Sabrowsky-Hirsch
Sent: Thursday, June 7, 2018 3:54 AM
To: [hidden email]
Subject: [vtkusers] Smooth label-map volume rendering

 

Hi all,

 

I am working with volume data before and after a classification algorithm.

The input volume has ushort intensity values, the output volume is a label-map where the values indicate each voxels class/label (background=0, vessel=1, aneurysm=2, …).

 

I am visualizing the input volume with a opacity transfer function that simulates a threshold filter (e.g. control points: 799=0.0, 800=1.0) and the result is a nice and smooth visualization of the volume.

 

However, the output volume has this blocky Minecraft style effect. The opacity transfer function has the control points: 0=0.0, 1=1.0 and I use the color transfer function to distinguish the classes/labels.

Is there a way to visualize the output volume in a similar way as the input volume? I considered generating iso-surface meshes and smooth those, but this is not really an option. I also don’t really understand why this is an issue because the

Input volume is also rendered with a distance of 1 between the two opacity thresholds. Are the volumes handled differently by vtk and how?

 

Input volume:

 

Output volume:

 

Kind regards,

Bertram

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers

--

Sankhesh Jhaveri
Sr. Research & Development Engineer | Kitware | <a href="tel:(518)%20881-4417" value="+15188814417" target="_blank">(518) 881-4417

--
Sankhesh Jhaveri
Sr. Research & Development Engineer | Kitware | (518) 881-4417

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers