## ===========================
## SUBDIRS(appli cmake lib plugins)
-SUBDIRS(lib)
+SUBDIRS(lib plugins)
## eof - $RCSfile$
## == Build instances for cpPlugins ==
## ===================================
+SET(fpa_DynLibs "${CMAKE_INSTALL_PREFIX}/bin|fpa")
+LIST(APPEND fpa_DynLibs "${CMAKE_INSTALL_PREFIX}/lib|fpa")
+LIST(APPEND fpa_DynLibs "${LIBRARY_OUTPUT_PATH}|fpa")
IF(USE_cpPlugins)
SUBDIRS(Instances)
+ FOREACH(_lib ${fpa_Instances})
+ LIST(APPEND fpa_DynLibs "${CMAKE_INSTALL_PREFIX}/bin|${_lib}")
+ LIST(APPEND fpa_DynLibs "${CMAKE_INSTALL_PREFIX}/lib|${_lib}")
+ LIST(APPEND fpa_DynLibs "${LIBRARY_OUTPUT_PATH}|${_lib}")
+ ENDFOREACH(_lib)
ENDIF(USE_cpPlugins)
+FILE(WRITE ${PROJECT_BINARY_DIR}/cpPlugins_Libraries.config "")
+FOREACH(_lib ${fpa_DynLibs})
+ FILE(APPEND ${PROJECT_BINARY_DIR}/cpPlugins_Libraries.config "${_lib}\n")
+ENDFOREACH(_lib)
## eof - $RCSfile$
fpa_${_def}.i
${cpPlugins_CONFIG_NUMBER_OF_FILES}
)
- LIST(APPEND _all_libs cpInstances_${_def})
+ LIST(APPEND _all_libs fpaInstances_${_def})
ENDFOREACH(_def)
+
+TARGET_LINK_LIBRARIES(
+ fpaInstances_DataObjects
+ ${VTK_LIBRARIES}
+ ${cpPlugins_Instances}
+ )
+TARGET_LINK_LIBRARIES(
+ fpaInstances_Filters
+ fpaInstances_DataObjects
+ )
+
SET(
fpa_Instances ${_all_libs}
CACHE INTERNAL "All valid instances." FORCE
+header #define ITK_MANUAL_INSTANTIATION
-d i_pixels=#pixels#
-d o_pixels=#pixels#
+define i_pixels=#scalar_pixels#
+define o_pixels=#scalar_pixels#
-i cpPlugins_Images.h
-t fpa/Base/Algorithm
-t fpa/Image/Algorithm
+tinclude fpa/Base/Algorithm:h|hxx
+tinclude fpa/Image/Algorithm:h|hxx
-c fpa::Base::Algorithm< itk::ImageToImageFilter< itk::Image< #i_pixels#, #process_dims# >, itk::Image< #o_pixels#, #process_dims# > >, itk::Index< #process_dims# >, #o_pixels# >
-c fpa::Image::Algorithm< itk::Image< #i_pixels#, #process_dims# >, itk::Image< #o_pixels#, #process_dims# > >
+instances fpa::Base::Algorithm< itk::ImageToImageFilter< itk::Image< #i_pixels#, #process_dims# >, itk::Image< #o_pixels#, #process_dims# > >, itk::Index< #process_dims# >, #o_pixels# >
+instances fpa::Image::Algorithm< itk::Image< #i_pixels#, #process_dims# >, itk::Image< #o_pixels#, #process_dims# > >
** eof - $RCSfile$
#define __fpa__Image__SkeletonFilter__h__
#include <itkProcessObject.h>
+#include <itkSimpleDataObjectDecorator.h>
#include <fpa/Image/MinimumSpanningTree.h>
#include <cpExtensions/DataStructures/Skeleton.h>
#include <set>
if( m != 0 || ( n.first / init_v ) < double( 1e-1 ) )
continue;
- std::cout << n.second << " " << n.first << " " << dmap->GetPixel( n.second ) << std::endl;
-
// Mark it and update end-points
m |= 0x01;
marks->SetPixel( n.second, m );
## == Build plugin library ==
## ==========================
-IF(USE_cpPlugins)
- Wrap_cpPlugins(
- _plugin
- ${CMAKE_CURRENT_SOURCE_DIR}/Plugins
- ${prj_VERSION} ${prj_SHORT_VERSION}
- fpa
- )
- TARGET_LINK_LIBRARIES(${_plugin} ${VTK_LIBRARIES} ${cpPlugins_LIB} ${cpPlugins_ImageIterators_LIB} ${fpa_Instances})
-ENDIF(USE_cpPlugins)
+INCLUDE_DIRECTORIES(
+ ${PROJECT_SOURCE_DIR}/lib
+ ${PROJECT_BINARY_DIR}/lib
+ )
+CreatePlugin(fpaPlugins Plugins ${cpPlugins_CONFIG_NUMBER_OF_FILES})
+TARGET_LINK_LIBRARIES(
+ fpaPlugins
+ cpPlugins cpExtensions
+ ${cpPlugins_Instances}
+ ${fpa_Instances}
+ )
+
+#IF(USE_cpPlugins)
+# Wrap_cpPlugins(
+# _plugin
+# ${CMAKE_CURRENT_SOURCE_DIR}/Plugins
+# ${prj_VERSION} ${prj_SHORT_VERSION}
+# fpa
+# )
+# TARGET_LINK_LIBRARIES(${_plugin} ${VTK_LIBRARIES} ${cpPlugins_LIB} ${cpPlugins_ImageIterators_LIB} ${fpa_Instances})
+#ENDIF(USE_cpPlugins)
## eof - $RCSfile$
\ No newline at end of file
-#include <plugins/Plugins/BaseImageFilter.h>
+#include <Plugins/BaseImageFilter.h>
#include <cpPlugins/DataObjects/Image.h>
// -------------------------------------------------------------------------
this->_ConfigureInput< _TData >( "Neighborhood", false, false );
this->_ConfigureOutput< _TImage >( "Output" );
- this->m_Parameters.ConfigureAsBool( "VisualDebug" );
- this->m_Parameters.ConfigureAsBool( "StopAtOneFront" );
- this->m_Parameters.SetBool( "VisualDebug", false );
- this->m_Parameters.SetBool( "StopAtOneFront", false );
+ this->m_Parameters.ConfigureAsBool( "VisualDebug", false );
+ this->m_Parameters.ConfigureAsBool( "StopAtOneFront", false );
}
// -------------------------------------------------------------------------
#ifndef __fpa__Plugins__BaseImageFilter__h__
#define __fpa__Plugins__BaseImageFilter__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
+++ /dev/null
-#include <plugins/Plugins/EndPointsFilter.h>
-#include <cpPlugins/DataObjects/Image.h>
-#include <cpPlugins/DataObjects/Mesh.h>
-#include <fpa/Image/EndPointsFilter.h>
-#include <fpa/Image/EndPointsFilter.hxx>
-
-// -------------------------------------------------------------------------
-fpaPlugins::EndPointsFilter::
-EndPointsFilter( )
- : Superclass( )
-{
- typedef cpPlugins::DataObjects::Image _TImage;
- typedef cpPlugins::DataObjects::Mesh _TMesh;
-
- this->_ConfigureInput< _TImage >( "DistanceMap", true, false );
- this->_ConfigureInput< _TImage >( "CostMap", true, false );
- this->_ConfigureInput< _TImage >( "MST", true, false );
- this->_ConfigureOutput< _TMesh >( "EndPoints" );
- this->_ConfigureOutput< _TMesh >( "Bifurcations" );
-}
-
-// -------------------------------------------------------------------------
-fpaPlugins::EndPointsFilter::
-~EndPointsFilter( )
-{
-}
-
-// -------------------------------------------------------------------------
-void fpaPlugins::EndPointsFilter::
-_GenerateData( )
-{
- auto o = this->GetInputData( "DistanceMap" );
- cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
- else this->_Error( "Invalid input image." );
-}
-
-// -------------------------------------------------------------------------
-template< class _TDistanceMap >
-void fpaPlugins::EndPointsFilter::
-_GD0( _TDistanceMap* dmap )
-{
- auto cmap = this->GetInputData< _TDistanceMap >( "CostMap" );
- if( cmap != NULL )
- this->_GD1( dmap, cmap );
- else
- this->_Error( "Temporary error: invalid cost map." );
-}
-
-// -------------------------------------------------------------------------
-template< class _TDistanceMap, class _TCostMap >
-void fpaPlugins::EndPointsFilter::
-_GD1( _TDistanceMap* dmap, _TCostMap* cmap )
-{
- typedef fpa::Image::EndPointsFilter< _TDistanceMap, _TCostMap > _TFilter;
- typedef typename _TFilter::TMST _TMST;
-
- auto mst = this->GetInputData< _TMST >( "MST" );
- if( mst == NULL )
- this->_Error( "Invalid MST." );
-
-
- auto filter = this->_CreateITK< _TFilter >( );
- filter->SetDistanceMap( dmap );
- filter->SetCostMap( cmap );
- filter->SetMST( mst );
- filter->Compute( );
-
- auto ep = filter->GetEndPoints( );
- auto bi = filter->GetBifurcations( );
-
- auto ep_pd = this->GetOutputData< vtkPolyData >( "EndPoints" );
- if( ep_pd == NULL )
- {
- auto points = vtkSmartPointer< vtkPoints >::New( );
- auto verts = vtkSmartPointer< vtkCellArray >::New( );
- auto lines = vtkSmartPointer< vtkCellArray >::New( );
- auto polys = vtkSmartPointer< vtkCellArray >::New( );
- auto strips = vtkSmartPointer< vtkCellArray >::New( );
- auto pd = vtkSmartPointer< vtkPolyData >::New( );
- pd->SetPoints( points );
- pd->SetVerts( verts );
- pd->SetLines( lines );
- pd->SetPolys( polys );
- pd->SetStrips( strips );
-
- this->GetOutput( "EndPoints" )->SetVTK( pd );
- ep_pd = this->GetOutputData< vtkPolyData >( "EndPoints" );
-
- } // fi
-
- for( auto iIt = ep.begin( ); iIt != ep.end( ); ++iIt )
- {
- typename _TCostMap::PointType p;
- cmap->TransformIndexToPhysicalPoint( *iIt, p );
-
- if( _TCostMap::ImageDimension == 1 )
- ep_pd->GetPoints( )->InsertNextPoint( p[ 0 ], 0, 0 );
- else if( _TCostMap::ImageDimension == 2 )
- ep_pd->GetPoints( )->InsertNextPoint( p[ 0 ], p[ 1 ], 0 );
- else if( _TCostMap::ImageDimension > 2 )
- ep_pd->GetPoints( )->InsertNextPoint( p[ 0 ], p[ 1 ], p[ 2 ] );
-
- ep_pd->GetVerts( )->InsertNextCell( 1 );
- ep_pd->GetVerts( )->InsertCellPoint( ep_pd->GetNumberOfPoints( ) - 1 );
-
- } // rof
-}
-
-// eof - $RCSfile$
+++ /dev/null
-#ifndef __fpa__Plugins__EndPointsFilter__h__
-#define __fpa__Plugins__EndPointsFilter__h__
-
-#include <plugins/fpaPlugins_Export.h>
-#include <cpPlugins/BaseObjects/ProcessObject.h>
-
-namespace fpaPlugins
-{
- /**
- */
- class fpaPlugins_EXPORT EndPointsFilter
- : public cpPlugins::BaseObjects::ProcessObject
- {
- cpPluginsObject(
- EndPointsFilter,
- cpPlugins::BaseObjects::ProcessObject,
- fpa
- );
-
- protected:
- template< class _TDistanceMap >
- inline void _GD0( _TDistanceMap* dmap );
-
- template< class _TDistanceMap, class _TCostMap >
- inline void _GD1( _TDistanceMap* dmap, _TCostMap* cmap );
- };
-
-} // ecapseman
-
-#endif // __fpa__Plugins__EndPointsFilter__h__
-
-// eof - $RCSfile$
-#include <plugins/Plugins/ExtractPathFromMinimumSpanningTree.h>
+#include <Plugins/ExtractPathFromMinimumSpanningTree.h>
#include <cpPlugins/DataObjects/Image.h>
#include <cpPlugins/DataObjects/PolyLineParametricPath.h>
-#include <fpa_DataObjects.h>
#include <vtkPolyData.h>
+#include <fpa/Image/MinimumSpanningTree.h>
// -------------------------------------------------------------------------
fpaPlugins::ExtractPathFromMinimumSpanningTree::
this->_ConfigureInput< _TMST >( "MST", true, false );
this->_ConfigureInput< _TData >( "Seeds", true, false );
- this->_ConfigureOutput< _TPath >( "Paths" );
+ this->_ConfigureOutput< _TPath >( "Output" );
}
// -------------------------------------------------------------------------
typename _TPath::Pointer path;
mst->GetPath( path, seeds[ 0 ], seeds[ 1 ] );
- this->GetOutput( "Paths" )->SetITK( path );
+ this->GetOutput( "Output" )->SetITK( path );
}
// eof - $RCSfile$
#ifndef __fpa__Plugins__ExtractPathFromMinimumSpanningTree__h__
#define __fpa__Plugins__ExtractPathFromMinimumSpanningTree__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
-#include <plugins/Plugins/GaussianModelCost.h>
+#include <Plugins/GaussianModelCost.h>
#include <cpPlugins/DataObjects/Image.h>
#include <fpa/Base/Functors/GaussianModel.h>
-#include <fpa/Base/Functors/GaussianModel.hxx>
// -------------------------------------------------------------------------
fpaPlugins::GaussianModelCost::
#ifndef __fpa__Plugins__GaussianModelCost__h__
#define __fpa__Plugins__GaussianModelCost__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
-#include <plugins/Plugins/ImageDijkstra.h>
+#include <Plugins/ImageDijkstra.h>
#include <cpPlugins/DataObjects/Image.h>
-#include <vtkPolyData.h>
+#include <cpPlugins/DataObjects/Image_Demanglers.h>
#include <fpa/Image/Dijkstra.h>
-#include <fpa/Base/Dijkstra.hxx>
-#include <fpa/Image/Dijkstra.hxx>
+#include <vtkPolyData.h>
// -------------------------------------------------------------------------
fpaPlugins::ImageDijkstra::
_GenerateData( )
{
auto o = this->GetInputData( "Input" );
- cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
- else this->_Error( "Invalid input image." );
+ cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 )
+ this->_Error( "Invalid input image." );
}
// -------------------------------------------------------------------------
typename _TInputImage::IndexType idx;
unsigned int dim =
( _TInputImage::ImageDimension < 3 )? _TInputImage::ImageDimension: 3;
+
for( int i = 0; i < seeds->GetNumberOfPoints( ); ++i )
{
double buf[ 3 ];
#ifndef __fpa__Plugins__ImageDijkstra__h__
#define __fpa__Plugins__ImageDijkstra__h__
-#include <plugins/Plugins/BaseImageFilter.h>
+#include <Plugins/BaseImageFilter.h>
namespace fpaPlugins
{
-#include <plugins/Plugins/InvertCost.h>
+#include <Plugins/InvertCost.h>
#include <cpPlugins/DataObjects/Image.h>
#include <fpa/Base/Functors/Inverse.h>
-#include <fpa/Base/Functors/Inverse.hxx>
// -------------------------------------------------------------------------
fpaPlugins::InvertCost::
#ifndef __fpa__Plugins__InvertCost__h__
#define __fpa__Plugins__InvertCost__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
-#include <plugins/Plugins/SimpleImageDijkstraCost.h>
+#include <Plugins/SimpleImageDijkstraCost.h>
#include <cpPlugins/DataObjects/Image.h>
+#include <cpPlugins/DataObjects/Image_Demanglers.h>
-#include <fpa_DataObjects.h>
+#include <itkImage.h>
+#include <fpa/Image/Functors/SimpleDijkstraCost.h>
// -------------------------------------------------------------------------
fpaPlugins::SimpleImageDijkstraCost::
choices.push_back( "float" );
choices.push_back( "double" );
this->m_Parameters.ConfigureAsChoices( "ResultType", choices );
- this->m_Parameters.ConfigureAsBool( "UseImageSpacing" );
-
this->m_Parameters.SetSelectedChoice( "ResultType", "float" );
- this->m_Parameters.SetBool( "UseImageSpacing", false );
+ this->m_Parameters.ConfigureAsBool( "UseImageSpacing", false );
}
// -------------------------------------------------------------------------
_GenerateData( )
{
auto o = this->GetInputData( "Input" );
- cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
- else this->_Error( "Invalid input image." );
+ cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 )
+ this->_Error( "Invalid input image." );
}
// -------------------------------------------------------------------------
#ifndef __fpa__Plugins__SimpleImageDijkstraCost__h__
#define __fpa__Plugins__SimpleImageDijkstraCost__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
-#include <plugins/Plugins/SimpleImageNeighborhood.h>
+#include <Plugins/SimpleImageNeighborhood.h>
#include <cpPlugins/DataObjects/Image.h>
+#include <cpPlugins/DataObjects/Image_Demanglers.h>
-#include <fpa_DataObjects.h>
+#include <itkImage.h>
+#include <fpa/Image/Functors/SimpleNeighborhood.h>
// -------------------------------------------------------------------------
fpaPlugins::SimpleImageNeighborhood::
this->_ConfigureInput< _TImage >( "Input", true, false );
this->_ConfigureOutput< _TData >( "Output" );
- this->m_Parameters.ConfigureAsUint( "Order" );
- this->m_Parameters.SetUint( "Order", 1 );
+ this->m_Parameters.ConfigureAsUint( "Order", 1 );
}
// -------------------------------------------------------------------------
_GenerateData( )
{
auto o = this->GetInputData( "Input" );
- cpPlugins_Demangle_ImageProcessDims( o, _GD0 );
- else this->_Error( "Invalid input image." );
+ cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 )
+ this->_Error( "Invalid input image." );
}
// -------------------------------------------------------------------------
#ifndef __fpa__Plugins__SimpleImageNeighborhood__h__
#define __fpa__Plugins__SimpleImageNeighborhood__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
-#include <plugins/Plugins/SkeletonFilter.h>
+#include <Plugins/SkeletonFilter.h>
#include <cpPlugins/DataObjects/Image.h>
+#include <cpPlugins/DataObjects/Image_Demanglers.h>
#include <cpPlugins/DataObjects/Skeleton.h>
+
#include <fpa/Image/SkeletonFilter.h>
-#include <fpa/Image/SkeletonFilter.hxx>
-#include <itkSimpleDataObjectDecorator.hxx>
+#include <itkImage.h>
+
+/* TODO
+ #include <fpa/Image/SkeletonFilter.hxx>
+ #include <itkSimpleDataObjectDecorator.hxx>
+*/
// -------------------------------------------------------------------------
fpaPlugins::SkeletonFilter::
_GenerateData( )
{
auto o = this->GetInputData( "DistanceMap" );
- cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
- else this->_Error( "Invalid input image." );
+ cpPlugins_Demangle_Image_RealPixels_AllDims_1( o, _GD0 )
+ this->_Error( "Invalid input image." );
}
// -------------------------------------------------------------------------
void fpaPlugins::SkeletonFilter::
_GD0( _TDistanceMap* dmap )
{
- auto cmap = this->GetInputData< _TDistanceMap >( "CostMap" );
- if( cmap != NULL )
- this->_GD1( dmap, cmap );
- else
- this->_Error( "Temporary error: invalid cost map." );
+ auto o = this->GetInputData( "CostMap" );
+ cpPlugins_Demangle_Image_RealPixels_2( o, _GD1, _TDistanceMap::ImageDimension, dmap )
+ this->_Error( "Invalid input image." );
}
// -------------------------------------------------------------------------
-template< class _TDistanceMap, class _TCostMap >
+template< class _TCostMap, class _TDistanceMap >
void fpaPlugins::SkeletonFilter::
-_GD1( _TDistanceMap* dmap, _TCostMap* cmap )
+_GD1( _TCostMap* cmap, _TDistanceMap* dmap )
{
typedef fpa::Image::SkeletonFilter< _TDistanceMap, _TCostMap > _TFilter;
typedef typename _TFilter::TMST _TMST;
this->GetOutput( "Skeleton" )->SetITK( filter->GetSkeleton( ) );
this->GetOutput( "Marks" )->SetITK( filter->GetMarks( ) );
-
/* TODO
auto ep = filter->GetEndPoints( );
auto bi = filter->GetBifurcations( );
#ifndef __fpa__Plugins__SkeletonFilter__h__
#define __fpa__Plugins__SkeletonFilter__h__
-#include <plugins/fpaPlugins_Export.h>
+#include <fpaPlugins_Export.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
namespace fpaPlugins
template< class _TDistanceMap >
inline void _GD0( _TDistanceMap* dmap );
- template< class _TDistanceMap, class _TCostMap >
- inline void _GD1( _TDistanceMap* dmap, _TCostMap* cmap );
+ template< class _TCostMap, class _TDistanceMap >
+ inline void _GD1( _TCostMap* cmap, _TDistanceMap* dmap );
};
} // ecapseman
--- /dev/null
+header #define ITK_MANUAL_INSTANTIATION
+
+define i_real=#real_types#
+define o_real=#real_types#
+
+tinclude fpa/Image/Functors/SimpleNeighborhood:h|hxx
+tinclude fpa/Image/Functors/SimpleDijkstraCost:h|hxx
+tinclude fpa/Base/Functors/Inverse:h|hxx
+tinclude fpa/Base/Functors/GaussianModel:h|hxx
+tinclude fpa/Image/Dijkstra:h|hxx
+tinclude fpa/Image/SkeletonFilter:h|hxx
+
+cinclude itkImage.h
+cinclude itkSimpleDataObjectDecorator.hxx
+cinclude fpa/Base/Dijkstra.hxx
+
+instances fpa::Image::Functors::SimpleNeighborhood< itk::Image< #scalar_pixels#, #process_dims# > >
+instances fpa::Image::Functors::SimpleDijkstraCost< itk::Image< #scalar_pixels#, #process_dims# >, #real_types# >
+
+instances fpa::Base::Functors::Inverse< #i_real#, #o_real# >
+instances fpa::Base::Functors::GaussianModel< #i_real#, #o_real# >
+
+instances fpa::Image::Dijkstra< itk::Image< #scalar_pixels#, #process_dims# >, itk::Image< #real_types#, #process_dims# > >
+instances fpa::Image::SkeletonFilter< itk::Image< #i_real#, #process_dims# >, itk::Image< #o_real#, #process_dims# > >
+
+** eof - $RCSfile$