[vtkusers] Difference in images displayed in vtkImageViewer2 and vtkResliceImageViewer

K O ranjith kor1581 at gmail.com
Thu Sep 21 11:03:30 EDT 2017


Hello,

Thanks for the support,

While setting  vtkScalarsToColors* -> SetRange(0,1); and then set it
to vtkResliceImageViewer*
->* SetLookupTable, the *vtkResliceImageViewer* giving result as other
viewer. While evaluating *vtkResliceImageViewer* I noticed this api
because, it’s something related to color and it is not available with
vtkImageviewer2.*

*Is this the correct way? what is the purpose of *vtkScalarsToColors  in
vtkResliceImageViewer?

Thanks

On Thu, Sep 21, 2017 at 5:54 PM, Sankhesh Jhaveri <
sankhesh.jhaveri at kitware.com> wrote:

> Hi,
>
> Based on the screenshots, it doesn’t seem like there is a distortion in
> the slice (IMO).
> Try setting the interactor style to vtkInteractorStyleImage and hold and
> drag left mouse button. This would change the window width and
> level. Hopefully, you’ll be able to match the display at some point and
> compare window values.
>
> Thanks,
> Sankhesh
>>
> On Thu, Sep 21, 2017 at 4:55 AM K O ranjith <kor1581 at gmail.com> wrote:
>
>> Hi,
>> This is the code i used for image viewer with vtkResliceImageViewer, is
>> this ok?
>> as per vtk class reference doc, the vtkResliceImageViewer will behave
>> like vtkImageViewer2
>> <https://www.vtk.org/doc/nightly/html/classvtkImageViewer2.html>,  if
>> the Reslice mode is set to RESLICE_AXIS_ALIGNED,
>> but the setting not affecting in image display.
>>
>> viewwidget::viewwidget(QWidget *parent) : QWidget(parent)
>> {
>>
>>      QPointer<QVTKWidget> m_vtkWgt      = new QVTKWidget(this);
>>
>>     vtkSmartPointer<vtkResliceImageViewer> m_vtkImViewer   =
>> vtkSmartPointer<vtkResliceImageViewer>::New();
>>
>>      QPointer<QHBoxLayout> m_loSinWin      = new QHBoxLayout(this);
>>
>>     vtkSmartPointer<vtkDICOMReader> m_vtkDcmRdr m_vtkDcmRdr     =
>> vtkSmartPointer<vtkDICOMReader>::New();
>>
>>     m_MetaData      = vtkSmartPointer<vtkDICOMMetaData>::New();
>>
>>     m_loSinWin->addWidget(m_vtkWgt);
>>     this->setLayout(m_loSinWin);
>>
>>     vtkSmartPointer <vtkDICOMDirectory> vtkDcmDir = vtkSmartPointer<
>> vtkDICOMDirectory>::New();
>>
>>     vtkSmartPointer <vtkStringArray>  aVtkStrFNames;
>>
>>     QString imgFolder = QDir::currentPath()+"/sampledicom/MRIX_LUMBAR/
>> Lumbar/3-PlaneLoc1";
>>     vtkDcmDir->SetDirectoryName(imgFolder.toStdString().c_str());
>>     vtkDcmDir->RequirePixelDataOn();
>>     vtkDcmDir->Update();
>>      // Iterate through all of the studies that are present.
>>     int iNoStudies = vtkDcmDir ->GetNumberOfStudies();
>>     for(int i = 0; i < iNoStudies; i++)
>>     {
>>         // Get information related to the patient study
>>         //vtkDICOMItem   patient = dicomdir ->GetPatientRecordForStudy(i);
>>         //vtkDICOMItem   study = dicomdir ->GetStudyRecord(i);
>>         // Iterate through all of the series in this study.
>>         int j1 = vtkDcmDir ->GetFirstSeriesForStudy(i);
>>         int j2 = vtkDcmDir ->GetLastSeriesForStudy(i);
>>         for (int j = j1; j <= j2; j++)
>>         {
>>             aVtkStrFNames = vtkDcmDir->GetFileNamesForSeries(j);
>>             // do something with the files
>>             m_vtkDcmRdr ->SetFileNames(aVtkStrFNames);
>>             m_vtkDcmRdr->UpdateInformation();
>>             m_vtkDcmRdr ->Update();
>>         }
>>     }
>>     //m_vtkDcmRdr->SetMemoryRowOrderToFileNative();
>>     m_vtkImViewer->SetSliceOrientationToXY();
>>     m_vtkImViewer->SetResliceModeToAxisAligned();
>>     m_vtkDcmRdr->Update();
>>     m_MetaData = m_vtkDcmRdr->GetMetaData();
>>     //m_vtkImViewer->SetInputConnection(m_vtkDcmRdr->GetOutputPort());
>>
>>     m_vtkImViewer->SetInputData(m_vtkDcmRdr->GetOutput());
>>
>>
>>     m_vtkImViewer->SetRenderWindow(m_vtkWgt->GetRenderWindow());
>>
>>
>>     double dDefaultWinWidth   = m_MetaData->GetAttributeValue (0 , DC ::
>> WindowWidth ). AsDouble () ;
>>
>>     double dDefaultWinLevel   = m_MetaData-> GetAttributeValue(0 , DC ::
>> WindowCenter ). AsDouble () ;
>>
>>     m_vtkImViewer->SetColorLevel(dDefaultWinWidth);
>>     m_vtkImViewer->SetColorWindow(dDefaultWinLevel);
>>
>>
>>     m_vtkImViewer->SetupInteractor(m_vtkWgt->GetInteractor());
>>
>>     m_vtkImViewer->GetRenderer()->ResetCamera();
>>     m_vtkImViewer->Render();
>>     m_vtkWgt->GetInteractor()->Initialize();
>>     m_vtkWgt->show();
>> }
>>
>>
>> On Wed, Sep 20, 2017 at 9:14 PM, K O ranjith <kor1581 at gmail.com> wrote:
>>
>>> Hello,
>>>
>>> Thanks for the support.
>>>
>>> As I mentioned in my question I have tried to set the window level and
>>> width from the dicom metadata to both the viewer’s using the api s
>>>
>>>     m_vtkImViewer->SetColorLevel(dDefaultWinWidth);
>>>
>>>     m_vtkImViewer->SetColorWindow(dDefaultWinLevel);
>>>
>>> but the result from vtkResliceImageViewer is different than other
>>> viewers, ie vtkImageViewer2 and other dicom viewer applications.
>>>
>>>
>>>
>>> While connecting the vtkResliceImageViewer with vtkDICOMReader with api
>>> “SetInputData””, have .
>>>
>>>
>>>
>>> So I tried with the method vtkResliceImageViewer->SetInputConnection(vtkDICOMReader
>>> ->GetOutputPort());,  then vtk showing error message "Use SetInputData
>>> instead.", but the images are displaying image almost same as (but not
>>> exact )other viewers. But then also, while setting the window level and
>>> width from to the default value in the dicom metadata, the image display
>>> again getting distorted. But the vtkImageViewer2 have same proper result
>>> all the time.
>>>
>>> I used 2d dicom images for testing.
>>>
>>> Why this happening? What are the basic difference in both vtk viewers in
>>> displaying images and setting window level and width?
>>>
>>>
>>>
>>>
>>> On Wed, Sep 20, 2017 at 6:23 PM, Sankhesh Jhaveri <
>>> sankhesh.jhaveri at kitware.com> wrote:
>>>
>>>> The difference in the two images seems to be window width and level.
>>>> Ensure that the values are same in the vtkImageResliceViewer.
>>>>>>>>
>>>> On Wed, Sep 20, 2017 at 7:37 AM K O ranjith <kor1581 at gmail.com> wrote:
>>>>
>>>>> Hello,
>>>>> While displaying same dicom images in vtkResliceImageViewer and
>>>>> vtkImageViewer2, it showing images with a different window level and window
>>>>> width.
>>>>> I also tried to get the window level and window width values from
>>>>> dicom metadata and set in both the viewers. Then the vtkImageViewer2 giving
>>>>> same result as like other dicom viewer applications(like RadiAnt), but
>>>>> vtkResliceImageViewer showing a differnt result from others.
>>>>> I need to use vtkResliceImageViewer in my application.
>>>>> why images displaying in different manner in vtkResliceImageViewer and
>>>>> vtkImageViewer2?
>>>>> Can get the same result with vtkResliceImageViewer as like
>>>>> vtkImageViewer2?
>>>>> Do need to perform any configuration in vtkResliceImageViewer?
>>>>>
>>>>> (Attached the screenshot of screens displayed same dicom image with
>>>>> vtkResliceImageViewer and vtkImageViewer2)
>>>>>
>>>>> _______________________________________________
>>>>> 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:
>>>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>>>
>>>> --
>>>> Sankhesh Jhaveri *Sr. Research & Development Engineer* | Kitware
>>>> <http://www.kitware.com/> | (518) 881-4417
>>>>>>>>
>>>
>>>
>> --
> Sankhesh Jhaveri *Sr. Research & Development Engineer* | Kitware
> <http://www.kitware.com/> | (518) 881-4417
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170921/ef5479e3/attachment.html>


More information about the vtkusers mailing list