#include "MacheteImageFilter.h" #include //#include #include #include #include // ------------------------------------------------------------------------- cpPlugins::BasicFilters::MacheteImageFilter:: MacheteImageFilter() : Superclass() { this->_AddInput("Input"); this->_MakeOutput< cpPlugins::Interface::Image >("Output"); this->m_Parameters->ConfigureAsReal("Radius", 20); //this->m_Parameters->ConfigureAsPoint("Point", 3, 3); this->m_Parameters->ConfigureAsReal("X", 30); this->m_Parameters->ConfigureAsReal("Y", 30); this->m_Parameters->ConfigureAsReal("Z", 30); } // ------------------------------------------------------------------------- cpPlugins::BasicFilters::MacheteImageFilter:: ~MacheteImageFilter() { } // ------------------------------------------------------------------------- std::string cpPlugins::BasicFilters::MacheteImageFilter:: _GenerateData() { cpPlugins::Interface::Image* image = this->GetInput< cpPlugins::Interface::Image >("Input"); if (image == NULL) return("MacheteImageFilter: No input image."); itk::DataObject* itk_image = NULL; std::string r = ""; cpPlugins_Image_Demangle_AllScalarTypes(2, image, itk_image, r, _GD0); else cpPlugins_Image_Demangle_AllScalarTypes(3, image, itk_image, r, _GD0); else cpPlugins_Image_Demangle_AllScalarTypes(4, image, itk_image, r, _GD0); else r = "MacheteImageFilter: Input image type not supported."; return(r); } // ------------------------------------------------------------------------- template< class I > std::string cpPlugins::BasicFilters::MacheteImageFilter:: _GD0(itk::DataObject* image) { return( this->_RealGD< I, itk::Image< unsigned char, I::ImageDimension > >( image ) ); } // ------------------------------------------------------------------------- template< class I, class O > inline std::string cpPlugins::BasicFilters::MacheteImageFilter:: _RealGD(itk::DataObject* image) { typedef cpExtensions::Algorithms::MacheteImageFilter< I, O > _F; typedef typename I::PixelType _RT; // Get parameters _RT rad_val = _RT(this->m_Parameters->GetReal("Radius")); double pointx = this->m_Parameters->GetReal("X"); double pointy = this->m_Parameters->GetReal("Y"); double pointz = this->m_Parameters->GetReal("Z"); // Configure filter _F* filter = this->_CreateITK< _F >(); filter->SetInput(dynamic_cast(image)); filter->SetRadius(rad_val); filter->SetPoint(pointx, pointy, pointz); filter->Update(); // Connect output cpPlugins::Interface::Image* out = this->GetOutput< cpPlugins::Interface::Image >("Output"); if (out != NULL) { out->SetITK< O >( filter->GetOutput( ) ); return(""); } else return("MacheteImageFilter: output not correctly created."); } // eof - $RCSfile$