[vtkusers] Difference in images displayed in vtkImageViewer2 and vtkResliceImageViewer

Sankhesh Jhaveri sankhesh.jhaveri at kitware.com
Thu Sep 21 08:24:32 EDT 2017


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/29f11b59/attachment.html>


More information about the vtkusers mailing list