1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __CTArteries__h__
5 #define __CTArteries__h__
8 #include <itkImageToVTKImageFilter.h>
10 #include <vtkSmartPointer.h>
12 #include <QMainWindow>
14 #include <ivq/ITK/Simple3DCurve.h>
16 #include <ivq/ITK/ImagePath.h>
18 #include "FourierSeries.h"
21 class vtkSplineWidget;
35 class SeedWidgetOverImageActor;
46 typedef CTArteries Self;
47 typedef QMainWindow Superclass;
54 typedef double TScalar;
55 typedef itk::Image< TPixel, Dim > TImage;
56 typedef itk::Image< TScalar, Dim > TScalarImage;
58 typedef itk::ImageToVTKImageFilter< TImage > TVTKImage;
59 typedef itk::ImageToVTKImageFilter< TScalarImage > TVTKScalarImage;
60 typedef ivq::ITK::ImagePath< Dim > TAxis;
61 typedef ivq::ITK::Simple3DCurve< TScalar > TCurve;
62 typedef FourierSeries< TScalar, 2 > TFourier;
66 int argc, char* argv[],
67 QWidget* parent = NULL
69 virtual ~CTArteries( );
72 template< class _TStrings >
73 void _openImage( const _TStrings& fnames );
74 void _openDicom( const std::string& dirname );
75 void _showInputImage( );
77 void _process( const std::vector< TImage::PointType >& seeds );
78 void _prepareQuantification( );
79 void _showProcessResults( );
80 void _showStenosis( );
82 void _ExecuteLog( const std::string& fname );
88 void _sMarkReference( );
89 void _sMarkStenosis( );
90 void _sSaveResults( );
91 void _sUpdateContour( );
94 template< class _TImagePtr, class _TVTKImagePtr, class _TCurvePtr >
96 _TImagePtr& output, _TVTKImagePtr& vtk_output,
97 const _TImagePtr& input, const _TCurvePtr& curve
101 Ui::CTArteries* m_UI;
104 QDialog* m_DlgParameters;
105 Ui::Parameters* m_UIParameters;
108 TImage::Pointer m_Image;
109 TVTKImage::Pointer m_VTKImage;
111 // Output information
112 TScalarImage::Pointer m_Segmentation;
113 TVTKScalarImage::Pointer m_VTKSegmentation;
114 TAxis::Pointer m_Axis;
115 TCurve::Pointer m_Curve;
116 vtkSmartPointer< ivq::VTK::PolyDataActor > m_Surface;
119 TImage::Pointer m_CPRImage;
120 TScalarImage::Pointer m_CPRSegmentation;
121 TVTKImage::Pointer m_VTKCPRImage;
122 TVTKScalarImage::Pointer m_VTKCPRSegmentation;
124 // Quantification data
125 std::vector< vtkSmartPointer< vtkPolyData > > m_Contours;
126 std::vector< vtkSmartPointer< ivq::VTK::PolyDataActor > > m_ContoursActors;
127 ivq::VTK::PolyDataActor* m_ContourActor;
128 std::vector< TFourier > m_Fourier;
131 vtkSmartPointer< ivq::VTK::SeedWidgetOverImageActor > m_Seeds;
132 vtkSmartPointer< vtkSplineWidget > m_Spline;
136 int m_ReferenceSlice;
137 QCPItemLine* m_StenosisLine;
138 QCPItemLine* m_ReferenceLine;
139 QCPItemText* m_StenosisText;
141 friend class ContourCallback;
144 #endif // __CTArteries__h__