#include <fpa/DataStructures/Image/Path.h>
+#include "FourierSeries.h"
+
+class vtkPolyData;
+class vtkSplineWidget;
class QDialog;
namespace Ui
{
typedef itk::ImageToVTKImageFilter< TScalarImage > TVTKScalarImage;
typedef fpa::DataStructures::Image::Path< Dim > TAxis;
typedef ivq::ITK::Simple3DCurve< TScalar > TCurve;
+ typedef FourierSeries< TScalar, 2 > TFourier;
public:
explicit CTArteries(
void _showInputImage( );
void _process( );
+ void _prepareQuantification( );
void _showProcessResults( );
protected slots:
void _sConfig( );
void _sProcess( );
+private:
+ template< class _TImagePtr, class _TVTKImagePtr, class _TCurvePtr >
+ void _CPR(
+ _TImagePtr& output, _TVTKImagePtr& vtk_output,
+ const _TImagePtr& input, const _TCurvePtr& curve
+ );
+
private:
Ui::CTArteries* m_UI;
TCurve::Pointer m_Curve;
vtkSmartPointer< ivq::VTK::PolyDataActor > m_Surface;
+ // CPRs
+ TImage::Pointer m_CPRImage;
+ TScalarImage::Pointer m_CPRSegmentation;
+ TVTKImage::Pointer m_VTKCPRImage;
+ TVTKScalarImage::Pointer m_VTKCPRSegmentation;
+
+ // Quantification data
+ std::vector< vtkSmartPointer< vtkPolyData > > m_Contours;
+ std::vector< vtkSmartPointer< ivq::VTK::PolyDataActor > > m_ContoursActors;
+ ivq::VTK::PolyDataActor* m_ContourActor;
+ std::vector< TFourier > m_Fourier;
+
// Widgets
vtkSmartPointer< ivq::VTK::SeedWidgetOverImageActor > m_Seeds;
+ vtkSmartPointer< vtkSplineWidget > m_Spline;
+
+ friend class ContourCallback;
};
#endif // __CTArteries__h__