[IGSTK-Users] Qt and rending View2D

Özgür Güler ozgur_guler at gmx.at
Fri Apr 13 21:17:19 EDT 2012


Hi Anna,

I miss the scene graph implementation in your code. Additional to the
objects you create for a scene  (e.g. spatial object, object
representation, qt widget, view) you have to define a spatial relation
between the objects and the view. All objects implementing a
coordinate system can be connected together. I think following line
should fix your problem as your scene consist of one spatial object
(CT image).


m_ImageSpatialObject->RequestSetTransformAndParent( transform, view );

you can define a identity transformation as the argument "transform" here.

I hope this helps,
Özgür


2012/4/13 Anna Brounstein <abrou at ece.ubc.ca>:
> Hello,
>
> I am trying to view a slice of a CT volume loaded with the
> CTImageReaderClass. I am using Qt. As far as I can tell, the volume is
> loaded correctly, but it does not seem to render in the View2D. I
> believe the View2D is connected to the widget correctly, as I can
> succesfully change the background colour.
>
> I first read the image using CTImageReaderClass, then store it in a
> CTImageSpatialObject. I believe the ImageSpatialObject is created
> correctly, as it contains the correct information such as origin.
>
> Finally, I store the CTImageSpatialObject in a
> CTImageSpatialObjectRepresentation, so I can add it to the View2D.
> Again, I believe this is done correctly, because
> ImageSpatialObjectRepresentation contains the same data.
>
> One theory I have, is that I am not setting the RequestSetSlice(
> SliceType ) correctly. The object representation's
> m_SliceNumberToBeSet may be equal to 0, bt m_SliceNumber remains at
> 3452816845. I have tested multiple datasets from different sources. I
> am unsure how to fix this, if this is the case.
>
> My other theory is that I am not rendering the view correctly.
>
> Unfortunately, I haven't been able to find any examples that really
> help me. The closest I have found on my computer is
> FourViewsTrackingWithCT, but this is using FLTK and does not display
> anything (I don't believe it's loading correctly, as the sliders are
> greyed out as well; I assume this is a different issue).
>
> Also, please note that I am a View3D working correctly in the same
> project; similar to the OneViewTrackingWithQtAndMicronTracker example.
>
> My system is Windows XP, 32bit and I am using VS2010 Express. I am
> using ITK 3.20.1, VTK 5.8.0, IGSTK 4.4 and Qt 4.8.0. I appologize that
> this is basic, however I have not been able to find a solution or
> example online to help.
>
> I am wondering if anyone might have suggestions on where I have gone
> wrong, what I should read or examples I should look at. Thank you very
> much,
>
> Anna B
>
> Below is a snippet of my code:
>
>    // instantiate a 2D view
>    typedef igstk::View2D ViewType;
>    ViewType::Pointer view = ViewType::New();
>
>        typedef igstk::CTImageSpatialObject ImageSpatialObjectType;
>        ImageSpatialObjectType::Pointer m_ImageSpatialObject =
> ImageSpatialObjectType::New();
>
>        typedef igstk::CTImageReader ImageReaderType;
>        ImageReaderType::Pointer m_ImageReader = ImageReaderType::New();
>
>        typedef ImageSpatialObjectType::ImageType ITKImageType;
>
>        typedef igstk::CTImageSpatialObjectRepresentation ImageRepresentationType;
>        ImageRepresentationType::Pointer imageRepresentation =
> ImageRepresentationType::New();
>
>    igstkObserverObjectMacro( ImageSpatialObject,
> ImageReaderType::ImageModifiedEvent,ImageSpatialObjectType);
>    igstkObserverConstObjectMacro( ITKImage,
> ImageSpatialObjectType::ITKImageModifiedEvent, ITKImageType);
>
>
>        m_ImageReader->RequestSetDirectory(
> "C:/prototype/bin/DICOM/GE_PhilipsPhantom");
>
>        m_ImageReader->RequestReadImage();
>        if(!m_ImageReader->FileSuccessfullyRead () )
>        {
>                std::cout << "Image not read" << std::endl;
>        }
>        ImageSpatialObjectObserver::Pointer imageSpatialObjectObserver =
> ImageSpatialObjectObserver::New();
>
>        m_ImageReader->AddObserver( ImageReaderType::ImageModifiedEvent(),
> imageSpatialObjectObserver );
>
>        m_ImageReader->RequestGetImage();
>        if(!imageSpatialObjectObserver->GotImageSpatialObject())
>      {
>
>          std::cout << "Cannot Read Image" << std::endl;
>
>      }
>    else
>      {
>                std::cout << "Image Loaded" << std::endl;
>        m_ImageSpatialObject =
> imageSpatialObjectObserver->GetImageSpatialObject();
>                if(m_ImageSpatialObject->IsEmpty() )
>                {
>                        std::cout << "The Object is Empty!!!" << std::endl;
>                }
>      }
>        imageRepresentation->RequestSetImageSpatialObject( m_ImageSpatialObject );
>        imageRepresentation->RequestSetSliceNumber( 0 );
>        imageRepresentation->RequestSetOrientation(ImageRepresentationType::Axial );
>
>        view->RequestAddObject( imageRepresentation );
>        view->RequestSetOrientation( igstk::View2D::Axial );
>        view->RequestResetCamera();
>        view->SetRefreshRate( 30 );
>        view->SetLogger( logger );
>        mainWindow.SetDRRView( view );
>
>        view->RequestResetCamera();
>        mainWindow.show();
>        view->RequestStart();
>        view->SetRendererBackgroundColor(1,1,1);
>
>
>        // In the source file containg GUI information:
> void PrototypeGUI::SetDRRView( igstk::View2D * view )
> {
>
>        m_GUI.DRRView->RequestSetView (view);
>        view->AddObserver( igstk::CoordinateSystemTransformToEvent(),
>                                   m_ViewPickerObserver );
> }
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-users



-- 
*********************************************************************
Dr. Dipl.-Ing. Özgür Güler, Bakk. techn. PhD
Research Assistant
4D-Visualization Laboratory
Univ. ENT Clinic
Innsbruck Medical University
Anichstr. 35, A-6020 Innsbruck, Austria

tel.: +43 512 504 23428, fax.: +43 512 504 25231

voxelmaster.eu
www.gueler.at
*********************************************************************



More information about the IGSTK-Users mailing list