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 <fpa/DataStructures/Image/Path.h>
18 #include "FourierSeries.h"
21 class vtkSplineWidget;
33 class SeedWidgetOverImageActor;
44 typedef CTArteries Self;
45 typedef QMainWindow Superclass;
52 typedef double TScalar;
53 typedef itk::Image< TPixel, Dim > TImage;
54 typedef itk::Image< TScalar, Dim > TScalarImage;
56 typedef itk::ImageToVTKImageFilter< TImage > TVTKImage;
57 typedef itk::ImageToVTKImageFilter< TScalarImage > TVTKScalarImage;
58 typedef fpa::DataStructures::Image::Path< Dim > TAxis;
59 typedef ivq::ITK::Simple3DCurve< TScalar > TCurve;
60 typedef FourierSeries< TScalar, 2 > TFourier;
64 int argc, char* argv[],
65 QWidget* parent = NULL
67 virtual ~CTArteries( );
70 template< class _TStrings >
71 void _openImage( const _TStrings& fnames );
72 void _openDicom( const std::string& dirname );
73 void _showInputImage( );
76 void _prepareQuantification( );
77 void _showProcessResults( );
85 template< class _TImagePtr, class _TVTKImagePtr, class _TCurvePtr >
87 _TImagePtr& output, _TVTKImagePtr& vtk_output,
88 const _TImagePtr& input, const _TCurvePtr& curve
95 QDialog* m_DlgParameters;
96 Ui::Parameters* m_UIParameters;
99 TImage::Pointer m_Image;
100 TVTKImage::Pointer m_VTKImage;
102 // Output information
103 TScalarImage::Pointer m_Segmentation;
104 TVTKScalarImage::Pointer m_VTKSegmentation;
105 TAxis::Pointer m_Axis;
106 TCurve::Pointer m_Curve;
107 vtkSmartPointer< ivq::VTK::PolyDataActor > m_Surface;
110 TImage::Pointer m_CPRImage;
111 TScalarImage::Pointer m_CPRSegmentation;
112 TVTKImage::Pointer m_VTKCPRImage;
113 TVTKScalarImage::Pointer m_VTKCPRSegmentation;
115 // Quantification data
116 std::vector< vtkSmartPointer< vtkPolyData > > m_Contours;
117 std::vector< vtkSmartPointer< ivq::VTK::PolyDataActor > > m_ContoursActors;
118 ivq::VTK::PolyDataActor* m_ContourActor;
119 std::vector< TFourier > m_Fourier;
122 vtkSmartPointer< ivq::VTK::SeedWidgetOverImageActor > m_Seeds;
123 vtkSmartPointer< vtkSplineWidget > m_Spline;
125 friend class ContourCallback;
128 #endif // __CTArteries__h__