<div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Romain,<div><br></div><div>The vtkImageViewer2 is only designed for one image, so adding another vtkImageActor to it will usually not give good results.  Your guess that it is not showing the same slice is probably correct, but even if it did show the same slice, the mask might be invisible if it is rendered first instead of last.</div><div><br></div><div>Since your mask is the same size as the image, you can use vtkImageBlend to combine them into a single image for vtkImageViewer2.  To do this, the DICOM image would have to go through vtkImageMapToColors to convert it from grayscale to RGB or RGBA, then the RGBA mask can be added with vtkImageBlend.</div><div><br></div><div>The other option is to create your own vtkRenderWindow instead of using vtkImageViewer2.  This will give you more flexibility in terms of what you add to the window and how you interact with it.  For example, see the following example:</div><div><a href="https://github.com/Kitware/VTK/blob/9ac8f74/Examples/ImageProcessing/Python/ImageInteractorReslice.py">https://github.com/Kitware/VTK/blob/9ac8f74/Examples/ImageProcessing/Python/ImageInteractorReslice.py</a><br></div><div><br></div><div>Also, in for your mask lookup table you have SetNumberOfTableValues(3) and SetRange(0,2).  I'm guessing that these were just experimental values, since a mask should use SetNumberOfTableValues(2) and SetRange(0,1).</div><div><br></div><div>Cheers,</div><div> - David</div><div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 4, 2018 at 11:42 AM Romain LEGUAY <<a href="mailto:romain.leguay@gmail.com">romain.leguay@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello everyone,<br>
<br>
I try to add a mask to a 3D image (dicom) with no success.<br>
<br>
I followed this example:<br>
<a href="https://cmake.org/Wiki/VTK/Examples/Cxx/Images/Transparency" rel="noreferrer" target="_blank">https://cmake.org/Wiki/VTK/Examples/Cxx/Images/Transparency</a><br>
<br>
This is the step I follow:<br>
<br>
// Load the dicom<br>
vtkSmartPointer<vtkImageData> image = loadDicom(filename);<br>
imageViewer2D->SetInputData(image);<br>
imageViewer2D->GetRenderer()->ResetCamera();<br>
imageViewer2D->Render();<br>
<br>
// In a second time<br>
<br>
// Load the mask (with the same dimension, origin, spacing as the dicom image<br>
vtkSmartPointer<vtkImageData> maskImage = loadMask(filename_mask);<br>
<br>
vtkSmartPointer<vtkLookupTable> lookupTable =<br>
                                        vtkSmartPointer<vtkLookupTable>::New();<br>
lookupTable->SetNumberOfTableValues(3);<br>
lookupTable->SetRange(0.0,2.0);<br>
lookupTable->SetTableValue( 0, 0.0, 0.0, 0.0, 0.0 ); //label 0 is transparent<br>
lookupTable->SetTableValue( 1, 1.0, 0.0, 0.0, 1.0 ); //label 1 is opaque and red<br>
lookupTable->Build();<br>
<br>
vtkSmartPointer<vtkImageMapToColors> mapTransparency = vtkSmartPointer<vtkImageMapToColors>::New();<br>
mapTransparency->SetLookupTable(lookupTable);<br>
mapTransparency->PassAlphaToOutputOn();<br>
mapTransparency->SetInputData(maskImage);<br>
mapTransparency->Update();<br>
<br>
vtkSmartPointer<vtkImageActor> maskActor = vtkSmartPointer<vtkImageActor>::New();<br>
maskActor->GetMapper()->SetInputConnection(mapTransparency->GetOutputPort());<br>
maskActor->Update();<br>
<br>
imageViewer2D->GetRenderer()->AddActor(maskActor);<br>
imageViewer2D->GetRenderer()->ResetCamera();<br>
imageViewer2D->Render();<br>
<br>
<br>
<br>
When I load my mask and add it using vtkImageViewer2D::SetInputData method, I see correctly my mask.<br>
<br>
Is it possible that the image is in first plane and not the mask is hidden by it? If it’s the case, how can I change this behavior?<br>
<br>
Thank you,<br>
<br>
Romain<br>
</blockquote></div></div></div></div></div>