- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-===========================================================================*/
-
+==========================================================================*/
ADD_LIBRARY(clitkMedianImageFilterLib clitkMedianImageGenericFilter.cxx ${clitkMedianImageFilter_GGO_C})
IF (CLITK_BUILD_TOOLS)
- WRAP_GGO(clitkDicomInfo_GGO_C clitkDicomInfo.ggo)
- ADD_EXECUTABLE(clitkDicomInfo clitkDicomInfo.cxx ${clitkDicomInfo_GGO_C})
- TARGET_LINK_LIBRARIES(clitkDicomInfo clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkDicomInfo_GGO_C clitkDicomInfo.ggo)
+ ADD_EXECUTABLE(clitkDicomInfo clitkDicomInfo.cxx ${clitkDicomInfo_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkDicomInfo clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkDicom2Image_GGO_C clitkDicom2Image.ggo)
- ADD_EXECUTABLE(clitkDicom2Image clitkDicom2Image.cxx ${clitkDicom2Image_GGO_C})
- TARGET_LINK_LIBRARIES(clitkDicom2Image clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkDicom2Image_GGO_C clitkDicom2Image.ggo)
+ ADD_EXECUTABLE(clitkDicom2Image clitkDicom2Image.cxx ${clitkDicom2Image_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkDicom2Image clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkImageInfo_GGO_C clitkImageInfo.ggo)
- ADD_EXECUTABLE(clitkImageInfo clitkImageInfo.cxx ${clitkImageInfo_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageInfo clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkImageInfo_GGO_C clitkImageInfo.ggo)
+ ADD_EXECUTABLE(clitkImageInfo clitkImageInfo.cxx ${clitkImageInfo_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageInfo clitkCommon ${ITK_LIBRARIES})
- ADD_EXECUTABLE(clitkImageConvert clitkImageConvert.cxx)
- TARGET_LINK_LIBRARIES(clitkImageConvert clitkImageConvertLib clitkCommon ${ITK_LIBRARIES})
+ ADD_EXECUTABLE(clitkImageConvert clitkImageConvert.cxx)
+ TARGET_LINK_LIBRARIES(clitkImageConvert clitkImageConvertLib clitkCommon ${ITK_LIBRARIES})
- ADD_EXECUTABLE(clitkBinarizeImage clitkBinarizeImage.cxx)
- TARGET_LINK_LIBRARIES(clitkBinarizeImage clitkBinarizeImageLib clitkCommon ${ITK_LIBRARIES})
+ ADD_EXECUTABLE(clitkBinarizeImage clitkBinarizeImage.cxx)
+ TARGET_LINK_LIBRARIES(clitkBinarizeImage clitkBinarizeImageLib clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkVFResample_GGO_C clitkVFResample.ggo)
- ADD_EXECUTABLE(clitkVFResample clitkVFResample.cxx clitkVFResampleGenericFilter.cxx ${clitkVFResample_GGO_C})
- TARGET_LINK_LIBRARIES(clitkVFResample clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkVFResample_GGO_C clitkVFResample.ggo)
+ ADD_EXECUTABLE(clitkVFResample clitkVFResample.cxx clitkVFResampleGenericFilter.cxx ${clitkVFResample_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkVFResample clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkImageCreate_GGO_C clitkImageCreate.ggo)
- ADD_EXECUTABLE(clitkImageCreate clitkImageCreate.cxx ${clitkImageCreate_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageCreate clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkImageCreate_GGO_C clitkImageCreate.ggo)
+ ADD_EXECUTABLE(clitkImageCreate clitkImageCreate.cxx ${clitkImageCreate_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageCreate clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkZeroVF_GGO_C clitkZeroVF.ggo)
- ADD_EXECUTABLE(clitkZeroVF clitkZeroVF.cxx ${clitkZeroVF_GGO_C} clitkZeroVFGenericFilter.cxx)
- TARGET_LINK_LIBRARIES(clitkZeroVF clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkZeroVF_GGO_C clitkZeroVF.ggo)
+ ADD_EXECUTABLE(clitkZeroVF clitkZeroVF.cxx ${clitkZeroVF_GGO_C} clitkZeroVFGenericFilter.cxx)
+ TARGET_LINK_LIBRARIES(clitkZeroVF clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkImageExtractLine_GGO_C clitkImageExtractLine.ggo)
- ADD_EXECUTABLE(clitkImageExtractLine clitkImageExtractLine.cxx ${clitkImageExtractLine_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageExtractLine clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkImageExtractLine_GGO_C clitkImageExtractLine.ggo)
+ ADD_EXECUTABLE(clitkImageExtractLine clitkImageExtractLine.cxx ${clitkImageExtractLine_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageExtractLine clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkSplitImage_GGO_C clitkSplitImage.ggo)
- ADD_EXECUTABLE(clitkSplitImage clitkSplitImage.cxx clitkSplitImageGenericFilter.cxx ${clitkSplitImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkSplitImage clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkSplitImage_GGO_C clitkSplitImage.ggo)
+ ADD_EXECUTABLE(clitkSplitImage clitkSplitImage.cxx clitkSplitImageGenericFilter.cxx ${clitkSplitImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkSplitImage clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkVFMerge_GGO_C clitkVFMerge.ggo)
- ADD_EXECUTABLE(clitkVFMerge clitkVFMerge.cxx ${clitkVFMerge_GGO_C})
- TARGET_LINK_LIBRARIES(clitkVFMerge clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkVFMerge_GGO_C clitkVFMerge.ggo)
+ ADD_EXECUTABLE(clitkVFMerge clitkVFMerge.cxx ${clitkVFMerge_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkVFMerge clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkWriteDicomSeries_GGO_C clitkWriteDicomSeries.ggo)
- ADD_EXECUTABLE(clitkWriteDicomSeries clitkWriteDicomSeries.cxx ${clitkWriteDicomSeries_GGO_C})
- TARGET_LINK_LIBRARIES(clitkWriteDicomSeries clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkWriteDicomSeries_GGO_C clitkWriteDicomSeries.ggo)
+ ADD_EXECUTABLE(clitkWriteDicomSeries clitkWriteDicomSeries.cxx ${clitkWriteDicomSeries_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkWriteDicomSeries clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkAverageTemporalDimension_GGO_C clitkAverageTemporalDimension.ggo)
- ADD_EXECUTABLE(clitkAverageTemporalDimension clitkAverageTemporalDimension.cxx ${clitkAverageTemporalDimension_GGO_C})
- TARGET_LINK_LIBRARIES(clitkAverageTemporalDimension clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkAverageTemporalDimension_GGO_C clitkAverageTemporalDimension.ggo)
+ ADD_EXECUTABLE(clitkAverageTemporalDimension clitkAverageTemporalDimension.cxx ${clitkAverageTemporalDimension_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkAverageTemporalDimension clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkMedianTemporalDimension_GGO_C clitkMedianTemporalDimension.ggo)
- ADD_EXECUTABLE(clitkMedianTemporalDimension clitkMedianTemporalDimension.cxx
- ${clitkMedianTemporalDimension_GGO_C})
- TARGET_LINK_LIBRARIES(clitkMedianTemporalDimension clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkMedianTemporalDimension_GGO_C clitkMedianTemporalDimension.ggo)
+ ADD_EXECUTABLE(clitkMedianTemporalDimension clitkMedianTemporalDimension.cxx
+ ${clitkMedianTemporalDimension_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMedianTemporalDimension clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkWarpImage_GGO_C clitkWarpImage.ggo)
- ADD_EXECUTABLE(clitkWarpImage clitkWarpImage.cxx ${clitkWarpImage_GGO_C} clitkWarpImageGenericFilter.cxx)
- TARGET_LINK_LIBRARIES(clitkWarpImage clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkWarpImage_GGO_C clitkWarpImage.ggo)
+ ADD_EXECUTABLE(clitkWarpImage clitkWarpImage.cxx ${clitkWarpImage_GGO_C} clitkWarpImageGenericFilter.cxx)
+ TARGET_LINK_LIBRARIES(clitkWarpImage clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkInvertVF_GGO_C clitkInvertVF.ggo)
- ADD_EXECUTABLE(clitkInvertVF clitkInvertVF.cxx ${clitkInvertVF_GGO_C})
- TARGET_LINK_LIBRARIES(clitkInvertVF clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkInvertVF_GGO_C clitkInvertVF.ggo)
+ ADD_EXECUTABLE(clitkInvertVF clitkInvertVF.cxx ${clitkInvertVF_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkInvertVF clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkAffineTransform_GGO_C clitkAffineTransform.ggo)
- ADD_EXECUTABLE(clitkAffineTransform clitkAffineTransform.cxx ${clitkAffineTransform_GGO_C})
- TARGET_LINK_LIBRARIES(clitkAffineTransform clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkAffineTransform_GGO_C clitkAffineTransform.ggo)
+ ADD_EXECUTABLE(clitkAffineTransform clitkAffineTransform.cxx ${clitkAffineTransform_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkAffineTransform clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkSetBackground_GGO_C clitkSetBackground.ggo)
- ADD_EXECUTABLE(clitkSetBackground clitkSetBackground.cxx clitkSetBackgroundGenericFilter.cxx ${clitkSetBackground_GGO_C})
- TARGET_LINK_LIBRARIES(clitkSetBackground clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkSetBackground_GGO_C clitkSetBackground.ggo)
+ ADD_EXECUTABLE(clitkSetBackground clitkSetBackground.cxx clitkSetBackgroundGenericFilter.cxx ${clitkSetBackground_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkSetBackground clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkGuerreroVentilation_GGO_C clitkGuerreroVentilation.ggo)
- ADD_EXECUTABLE(clitkGuerreroVentilation clitkGuerreroVentilation.cxx clitkGuerreroVentilationGenericFilter.cxx ${clitkGuerreroVentilation_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGuerreroVentilation clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkGuerreroVentilation_GGO_C clitkGuerreroVentilation.ggo)
+ ADD_EXECUTABLE(clitkGuerreroVentilation clitkGuerreroVentilation.cxx clitkGuerreroVentilationGenericFilter.cxx ${clitkGuerreroVentilation_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGuerreroVentilation clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkGammaIndex_GGO_C clitkGammaIndex.ggo)
- ADD_EXECUTABLE(clitkGammaIndex clitkGammaIndex.cxx ${clitkGammaIndex_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGammaIndex vtkCommon vtkFiltering vtkGraphics vtkIO vtkImaging)
+ WRAP_GGO(clitkGammaIndex_GGO_C clitkGammaIndex.ggo)
+ ADD_EXECUTABLE(clitkGammaIndex clitkGammaIndex.cxx ${clitkGammaIndex_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGammaIndex vtkCommon vtkFiltering vtkGraphics vtkIO vtkImaging)
- ADD_EXECUTABLE(clitkImageArithm clitkImageArithm.cxx)
- TARGET_LINK_LIBRARIES(clitkImageArithm clitkImageArithmImageLib clitkCommon ${ITK_LIBRARIES} )
+ ADD_EXECUTABLE(clitkImageArithm clitkImageArithm.cxx)
+ TARGET_LINK_LIBRARIES(clitkImageArithm clitkImageArithmImageLib clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkUnsharpMask_GGO_C clitkUnsharpMask.ggo)
- ADD_EXECUTABLE(clitkUnsharpMask clitkUnsharpMask.cxx ${clitkUnsharpMask_GGO_C})
- TARGET_LINK_LIBRARIES(clitkUnsharpMask clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkUnsharpMask_GGO_C clitkUnsharpMask.ggo)
+ ADD_EXECUTABLE(clitkUnsharpMask clitkUnsharpMask.cxx ${clitkUnsharpMask_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkUnsharpMask clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkFooImage_GGO_C clitkFooImage.ggo)
- ADD_EXECUTABLE(clitkFooImage clitkFooImage.cxx ${clitkFooImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkFooImage clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkFooImage_GGO_C clitkFooImage.ggo)
+ ADD_EXECUTABLE(clitkFooImage clitkFooImage.cxx ${clitkFooImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkFooImage clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkMedianImageFilter_GGO_C clitkMedianImageFilter.ggo)
- ADD_EXECUTABLE(clitkMedianImageFilter clitkMedianImageFilter.cxx ${clitkMedianImageFilter_GGO_C})
- TARGET_LINK_LIBRARIES(clitkMedianImageFilter clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkMedianImageFilter_GGO_C clitkMedianImageFilter.ggo)
+ ADD_EXECUTABLE(clitkMedianImageFilter clitkMedianImageFilter.cxx ${clitkMedianImageFilter_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMedianImageFilter clitkCommon ${ITK_LIBRARIES})
- ADD_EXECUTABLE(clitkResampleImage clitkResampleImage.cxx)
- TARGET_LINK_LIBRARIES(clitkResampleImage clitkResampleImageLib clitkCommon ${ITK_LIBRARIES})
+ ADD_EXECUTABLE(clitkResampleImage clitkResampleImage.cxx)
+ TARGET_LINK_LIBRARIES(clitkResampleImage clitkResampleImageLib clitkCommon ${ITK_LIBRARIES})
- WRAP_GGO(clitkMinMaxMask_GGO_C clitkMinMaxMask.ggo)
- ADD_EXECUTABLE(clitkMinMaxMask clitkMinMaxMask.cxx ${clitkMinMaxMask_GGO_C})
- TARGET_LINK_LIBRARIES(clitkMinMaxMask clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkMinMaxMask_GGO_C clitkMinMaxMask.ggo)
+ ADD_EXECUTABLE(clitkMinMaxMask clitkMinMaxMask.cxx ${clitkMinMaxMask_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMinMaxMask clitkCommon ${ITK_LIBRARIES} )
- # WRAP_GGO(clitkAutoCrop_GGO_C clitkAutoCrop.ggo)
- # ADD_EXECUTABLE(clitkAutoCrop clitkAutoCrop.cxx ${clitkAutoCrop_GGO_C})
- # TARGET_LINK_LIBRARIES(clitkAutoCrop clitkCommon ${ITK_LIBRARIES} )
+ # WRAP_GGO(clitkAutoCrop_GGO_C clitkAutoCrop.ggo)
+ # ADD_EXECUTABLE(clitkAutoCrop clitkAutoCrop.cxx ${clitkAutoCrop_GGO_C})
+ # TARGET_LINK_LIBRARIES(clitkAutoCrop clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkDicomRTStruct2BinaryImage_GGO_C clitkDicomRTStruct2BinaryImage.ggo)
- ADD_EXECUTABLE(clitkDicomRTStruct2BinaryImage clitkDicomRTStruct2BinaryImage.cxx ${clitkDicomRTStruct2BinaryImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkDicomRTStruct2BinaryImage clitkDicomRTStruct clitkCommon ${ITK_LIBRARIES} )
+ WRAP_GGO(clitkDicomRTStruct2BinaryImage_GGO_C clitkDicomRTStruct2BinaryImage.ggo)
+ ADD_EXECUTABLE(clitkDicomRTStruct2BinaryImage clitkDicomRTStruct2BinaryImage.cxx ${clitkDicomRTStruct2BinaryImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkDicomRTStruct2BinaryImage clitkDicomRTStruct clitkCommon ${ITK_LIBRARIES} )
- WRAP_GGO(clitkImageLog_GGO_C clitkImageLog.ggo)
- ADD_EXECUTABLE(clitkImageLog clitkImageLog.cxx ${clitkImageLog_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageLog ${ITK_LIBRARIES} clitkCommon)
+ WRAP_GGO(clitkImageLog_GGO_C clitkImageLog.ggo)
+ ADD_EXECUTABLE(clitkImageLog clitkImageLog.cxx ${clitkImageLog_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageLog ${ITK_LIBRARIES} clitkCommon)
- WRAP_GGO(clitkFilter_GGO_C clitkFilter.ggo)
- ADD_EXECUTABLE(clitkFilter clitkFilter.cxx clitkFilterGenericFilter.cxx ${clitkFilter_GGO_C})
- TARGET_LINK_LIBRARIES(clitkFilter ${ITK_LIBRARIES} clitkCommon)
+ WRAP_GGO(clitkFilter_GGO_C clitkFilter.ggo)
+ ADD_EXECUTABLE(clitkFilter clitkFilter.cxx clitkFilterGenericFilter.cxx ${clitkFilter_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkFilter ${ITK_LIBRARIES} clitkCommon)
- WRAP_GGO(clitkConeBeamProjectImage_GGO_C clitkConeBeamProjectImage.ggo)
- ADD_EXECUTABLE(clitkConeBeamProjectImage clitkConeBeamProjectImage.cxx clitkConeBeamProjectImageGenericFilter.cxx ${clitkConeBeamProjectImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkConeBeamProjectImage ${ITK_LIBRARIES} clitkCommon )
+ WRAP_GGO(clitkConeBeamProjectImage_GGO_C clitkConeBeamProjectImage.ggo)
+ ADD_EXECUTABLE(clitkConeBeamProjectImage clitkConeBeamProjectImage.cxx clitkConeBeamProjectImageGenericFilter.cxx ${clitkConeBeamProjectImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkConeBeamProjectImage ${ITK_LIBRARIES} clitkCommon )
- WRAP_GGO(clitkComposeVF_GGO_C clitkComposeVF.ggo)
- ADD_EXECUTABLE(clitkComposeVF clitkComposeVFGenericFilter.cxx clitkComposeVF.cxx ${clitkComposeVF_GGO_C})
- TARGET_LINK_LIBRARIES(clitkComposeVF ${ITK_LIBRARIES} clitkCommon)
+ WRAP_GGO(clitkComposeVF_GGO_C clitkComposeVF.ggo)
+ ADD_EXECUTABLE(clitkComposeVF clitkComposeVFGenericFilter.cxx clitkComposeVF.cxx ${clitkComposeVF_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkComposeVF ${ITK_LIBRARIES} clitkCommon)
- WRAP_GGO(clitkMergeSequence_GGO_C clitkMergeSequence.ggo)
- ADD_EXECUTABLE(clitkMergeSequence clitkMergeSequence.cxx clitkMergeSequenceGenericFilter.cxx ${clitkMergeSequence_GGO_C})
- TARGET_LINK_LIBRARIES(clitkMergeSequence ${ITK_LIBRARIES} clitkCommon)
+ WRAP_GGO(clitkMergeSequence_GGO_C clitkMergeSequence.ggo)
+ ADD_EXECUTABLE(clitkMergeSequence clitkMergeSequence.cxx clitkMergeSequenceGenericFilter.cxx ${clitkMergeSequence_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMergeSequence ${ITK_LIBRARIES} clitkCommon)
- WRAP_GGO(clitkBackProjectImage_GGO_C clitkBackProjectImage.ggo)
- ADD_EXECUTABLE(clitkBackProjectImage clitkBackProjectImage.cxx clitkBackProjectImageGenericFilter.cxx ${clitkBackProjectImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkBackProjectImage ${ITK_LIBRARIES} clitkCommon )
+ WRAP_GGO(clitkBackProjectImage_GGO_C clitkBackProjectImage.ggo)
+ ADD_EXECUTABLE(clitkBackProjectImage clitkBackProjectImage.cxx clitkBackProjectImageGenericFilter.cxx ${clitkBackProjectImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkBackProjectImage ${ITK_LIBRARIES} clitkCommon )
- ADD_EXECUTABLE(clitkCropImage clitkCropImage.cxx ${clitkCropImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkCropImage clitkCropImageLib clitkCommon ${ITK_LIBRARIES})
+ ADD_EXECUTABLE(clitkCropImage clitkCropImage.cxx ${clitkCropImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkCropImage clitkCropImageLib clitkCommon ${ITK_LIBRARIES})
+
+ # WRAP_GGO(clitkExtractSlice_GGO_C clitkExtractSlice.ggo)
+ # ADD_EXECUTABLE(clitkExtractSlice clitkExtractSlice.cxx clitkExtractSliceGenericFilter.cxx ${clitkExtractSlice_GGO_C})
+ # TARGET_LINK_LIBRARIES(clitkExtractSlice clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkFlipImage_GGO_C clitkFlipImage.ggo)
+ ADD_EXECUTABLE(clitkFlipImage clitkFlipImage.cxx clitkFlipImageGenericFilter.cxx ${clitkFlipImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkFlipImage clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkMirrorPadImage_GGO_C clitkMirrorPadImage.ggo)
+ ADD_EXECUTABLE(clitkMirrorPadImage clitkMirrorPadImage.cxx clitkMirrorPadImageGenericFilter.cxx ${clitkMirrorPadImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMirrorPadImage clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkImageMoment_GGO_C clitkImageMoment.ggo)
+ ADD_EXECUTABLE(clitkImageMoment clitkImageMoment.cxx clitkImageMomentGenericFilter.cxx ${clitkImageMoment_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageMoment clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkImageStatistics_GGO_C clitkImageStatistics.ggo)
+ ADD_EXECUTABLE(clitkImageStatistics clitkImageStatistics.cxx clitkImageStatisticsGenericFilter.cxx ${clitkImageStatistics_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageStatistics clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkSetOrigin_GGO_C clitkSetOrigin.ggo)
+ ADD_EXECUTABLE(clitkSetOrigin clitkSetOrigin.cxx clitkSetOriginGenericFilter.cxx ${clitkSetOrigin_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkSetOrigin clitkCommon ${ITK_LIBRARIES} )
+
+ WRAP_GGO(clitkGetOrigin_GGO_C clitkGetOrigin.ggo)
+ ADD_EXECUTABLE(clitkGetOrigin clitkGetOrigin.cxx clitkGetOriginGenericFilter.cxx ${clitkGetOrigin_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGetOrigin clitkCommon ${ITK_LIBRARIES} )
+
+ WRAP_GGO(clitkGetDirection_GGO_C clitkGetDirection.ggo)
+ ADD_EXECUTABLE(clitkGetDirection clitkGetDirection.cxx clitkGetDirectionGenericFilter.cxx ${clitkGetDirection_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGetDirection clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkSetDirection_GGO_C clitkSetDirection.ggo)
+ ADD_EXECUTABLE(clitkSetDirection clitkSetDirection.cxx clitkSetDirectionGenericFilter.cxx ${clitkSetDirection_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkSetDirection clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkGetSize_GGO_C clitkGetSize.ggo)
+ ADD_EXECUTABLE(clitkGetSize clitkGetSize.cxx clitkGetSizeGenericFilter.cxx ${clitkGetSize_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGetSize clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkGetSpacing_GGO_C clitkGetSpacing.ggo)
+ ADD_EXECUTABLE(clitkGetSpacing clitkGetSpacing.cxx clitkGetSpacingGenericFilter.cxx ${clitkGetSpacing_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkGetSpacing clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkSetSpacing_GGO_C clitkSetSpacing.ggo)
+ ADD_EXECUTABLE(clitkSetSpacing clitkSetSpacing.cxx clitkSetSpacingGenericFilter.cxx ${clitkSetSpacing_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkSetSpacing clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkCombineImage_GGO_C clitkCombineImage.ggo)
+ ADD_EXECUTABLE(clitkCombineImage clitkCombineImage.cxx clitkCombineImageGenericFilter.cxx ${clitkCombineImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkCombineImage clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkPermuteAxes_GGO_C clitkPermuteAxes.ggo)
+ ADD_EXECUTABLE(clitkPermuteAxes clitkPermuteAxes.cxx clitkPermuteAxesGenericFilter.cxx ${clitkPermuteAxes_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkPermuteAxes clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkChangeImageOrientation_GGO_C clitkChangeImageOrientation.ggo)
+ ADD_EXECUTABLE(clitkChangeImageOrientation clitkChangeImageOrientation.cxx clitkChangeImageOrientationGenericFilter.cxx ${clitkChangeImageOrientation_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkChangeImageOrientation clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkVFConvert_GGO_C clitkVFConvert.ggo)
+ ADD_EXECUTABLE(clitkVFConvert clitkVFConvert.cxx clitkVFConvertGenericFilter.cxx ${clitkVFConvert_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkVFConvert ${ITK_LIBRARIES} clitkCommon )
+
+ WRAP_GGO(clitkImageToVectorImage_GGO_C clitkImageToVectorImage.ggo)
+ ADD_EXECUTABLE(clitkImageToVectorImage clitkImageToVectorImage.cxx clitkImageToVectorImageGenericFilter.cxx ${clitkImageToVectorImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkImageToVectorImage clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkVectorImageToImage_GGO_C clitkVectorImageToImage.ggo)
+ ADD_EXECUTABLE(clitkVectorImageToImage clitkVectorImageToImage.cxx clitkVectorImageToImageGenericFilter.cxx ${clitkVectorImageToImage_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkVectorImageToImage clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkBSplineCoefficientsToValues_GGO_C clitkBSplineCoefficientsToValues.ggo)
+ ADD_EXECUTABLE(clitkBSplineCoefficientsToValues clitkBSplineCoefficientsToValues.cxx clitkBSplineCoefficientsToValuesGenericFilter.cxx ${clitkBSplineCoefficientsToValues_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkBSplineCoefficientsToValues clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkValuesToBSplineCoefficients_GGO_C clitkValuesToBSplineCoefficients.ggo)
+ ADD_EXECUTABLE(clitkValuesToBSplineCoefficients clitkValuesToBSplineCoefficients.cxx clitkValuesToBSplineCoefficientsGenericFilter.cxx ${clitkValuesToBSplineCoefficients_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkValuesToBSplineCoefficients clitkCommon ${ITK_LIBRARIES})
+
+ ADD_EXECUTABLE(clitkMIP clitkMIP.cxx clitkMIPGenericFilter.cxx)
+ TARGET_LINK_LIBRARIES(clitkMIP clitkMIPLib clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkRelativePosition_GGO_C clitkRelativePosition.ggo)
+ ADD_EXECUTABLE(clitkRelativePosition clitkRelativePosition.cxx ${clitkRelativePosition_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkRelativePosition clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkTransformLandmarks_GGO_C clitkTransformLandmarks.ggo)
+ ADD_EXECUTABLE(clitkTransformLandmarks clitkTransformLandmarks.cxx ${clitkTransformLandmarks_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkTransformLandmarks clitkCommon ${ITK_LIBRARIES})
+
+ WRAP_GGO(clitkLineProfile_GGO_C clitkLineProfile.ggo)
+ ADD_EXECUTABLE(clitkLineProfile clitkLineProfile.cxx clitkLineProfileGenericFilter.cxx ${clitkLineProfile_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkLineProfile clitkCommon ${ITK_LIBRARIES})
- # WRAP_GGO(clitkExtractSlice_GGO_C clitkExtractSlice.ggo)
- # ADD_EXECUTABLE(clitkExtractSlice clitkExtractSlice.cxx clitkExtractSliceGenericFilter.cxx ${clitkExtractSlice_GGO_C})
- # TARGET_LINK_LIBRARIES(clitkExtractSlice clitkCommon ${ITK_LIBRARIES})
+ IF(CLITK_EXPERIMENTAL)
- WRAP_GGO(clitkFlipImage_GGO_C clitkFlipImage.ggo)
- ADD_EXECUTABLE(clitkFlipImage clitkFlipImage.cxx clitkFlipImageGenericFilter.cxx ${clitkFlipImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkFlipImage clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkMirrorPadImage_GGO_C clitkMirrorPadImage.ggo)
- ADD_EXECUTABLE(clitkMirrorPadImage clitkMirrorPadImage.cxx clitkMirrorPadImageGenericFilter.cxx ${clitkMirrorPadImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkMirrorPadImage clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkImageMoment_GGO_C clitkImageMoment.ggo)
- ADD_EXECUTABLE(clitkImageMoment clitkImageMoment.cxx clitkImageMomentGenericFilter.cxx ${clitkImageMoment_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageMoment clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkImageStatistics_GGO_C clitkImageStatistics.ggo)
- ADD_EXECUTABLE(clitkImageStatistics clitkImageStatistics.cxx clitkImageStatisticsGenericFilter.cxx ${clitkImageStatistics_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageStatistics clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkSetOrigin_GGO_C clitkSetOrigin.ggo)
- ADD_EXECUTABLE(clitkSetOrigin clitkSetOrigin.cxx clitkSetOriginGenericFilter.cxx ${clitkSetOrigin_GGO_C})
- TARGET_LINK_LIBRARIES(clitkSetOrigin clitkCommon ${ITK_LIBRARIES} )
-
- WRAP_GGO(clitkGetOrigin_GGO_C clitkGetOrigin.ggo)
- ADD_EXECUTABLE(clitkGetOrigin clitkGetOrigin.cxx clitkGetOriginGenericFilter.cxx ${clitkGetOrigin_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGetOrigin clitkCommon ${ITK_LIBRARIES} )
-
- WRAP_GGO(clitkGetDirection_GGO_C clitkGetDirection.ggo)
- ADD_EXECUTABLE(clitkGetDirection clitkGetDirection.cxx clitkGetDirectionGenericFilter.cxx ${clitkGetDirection_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGetDirection clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkSetDirection_GGO_C clitkSetDirection.ggo)
- ADD_EXECUTABLE(clitkSetDirection clitkSetDirection.cxx clitkSetDirectionGenericFilter.cxx ${clitkSetDirection_GGO_C})
- TARGET_LINK_LIBRARIES(clitkSetDirection clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkGetSize_GGO_C clitkGetSize.ggo)
- ADD_EXECUTABLE(clitkGetSize clitkGetSize.cxx clitkGetSizeGenericFilter.cxx ${clitkGetSize_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGetSize clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkGetSpacing_GGO_C clitkGetSpacing.ggo)
- ADD_EXECUTABLE(clitkGetSpacing clitkGetSpacing.cxx clitkGetSpacingGenericFilter.cxx ${clitkGetSpacing_GGO_C})
- TARGET_LINK_LIBRARIES(clitkGetSpacing clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkSetSpacing_GGO_C clitkSetSpacing.ggo)
- ADD_EXECUTABLE(clitkSetSpacing clitkSetSpacing.cxx clitkSetSpacingGenericFilter.cxx ${clitkSetSpacing_GGO_C})
- TARGET_LINK_LIBRARIES(clitkSetSpacing clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkCombineImage_GGO_C clitkCombineImage.ggo)
- ADD_EXECUTABLE(clitkCombineImage clitkCombineImage.cxx clitkCombineImageGenericFilter.cxx ${clitkCombineImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkCombineImage clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkPermuteAxes_GGO_C clitkPermuteAxes.ggo)
- ADD_EXECUTABLE(clitkPermuteAxes clitkPermuteAxes.cxx clitkPermuteAxesGenericFilter.cxx ${clitkPermuteAxes_GGO_C})
- TARGET_LINK_LIBRARIES(clitkPermuteAxes clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkChangeImageOrientation_GGO_C clitkChangeImageOrientation.ggo)
- ADD_EXECUTABLE(clitkChangeImageOrientation clitkChangeImageOrientation.cxx clitkChangeImageOrientationGenericFilter.cxx ${clitkChangeImageOrientation_GGO_C})
- TARGET_LINK_LIBRARIES(clitkChangeImageOrientation clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkVFConvert_GGO_C clitkVFConvert.ggo)
- ADD_EXECUTABLE(clitkVFConvert clitkVFConvert.cxx clitkVFConvertGenericFilter.cxx ${clitkVFConvert_GGO_C})
- TARGET_LINK_LIBRARIES(clitkVFConvert ${ITK_LIBRARIES} clitkCommon )
-
- WRAP_GGO(clitkImageToVectorImage_GGO_C clitkImageToVectorImage.ggo)
- ADD_EXECUTABLE(clitkImageToVectorImage clitkImageToVectorImage.cxx clitkImageToVectorImageGenericFilter.cxx ${clitkImageToVectorImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkImageToVectorImage clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkVectorImageToImage_GGO_C clitkVectorImageToImage.ggo)
- ADD_EXECUTABLE(clitkVectorImageToImage clitkVectorImageToImage.cxx clitkVectorImageToImageGenericFilter.cxx ${clitkVectorImageToImage_GGO_C})
- TARGET_LINK_LIBRARIES(clitkVectorImageToImage clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkBSplineCoefficientsToValues_GGO_C clitkBSplineCoefficientsToValues.ggo)
- ADD_EXECUTABLE(clitkBSplineCoefficientsToValues clitkBSplineCoefficientsToValues.cxx clitkBSplineCoefficientsToValuesGenericFilter.cxx ${clitkBSplineCoefficientsToValues_GGO_C})
- TARGET_LINK_LIBRARIES(clitkBSplineCoefficientsToValues clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkValuesToBSplineCoefficients_GGO_C clitkValuesToBSplineCoefficients.ggo)
- ADD_EXECUTABLE(clitkValuesToBSplineCoefficients clitkValuesToBSplineCoefficients.cxx clitkValuesToBSplineCoefficientsGenericFilter.cxx ${clitkValuesToBSplineCoefficients_GGO_C})
- TARGET_LINK_LIBRARIES(clitkValuesToBSplineCoefficients clitkCommon ${ITK_LIBRARIES})
-
- ADD_EXECUTABLE(clitkMIP clitkMIP.cxx clitkMIPGenericFilter.cxx)
- TARGET_LINK_LIBRARIES(clitkMIP clitkMIPLib clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkRelativePosition_GGO_C clitkRelativePosition.ggo)
- ADD_EXECUTABLE(clitkRelativePosition clitkRelativePosition.cxx ${clitkRelativePosition_GGO_C})
- TARGET_LINK_LIBRARIES(clitkRelativePosition clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkTransformLandmarks_GGO_C clitkTransformLandmarks.ggo)
- ADD_EXECUTABLE(clitkTransformLandmarks clitkTransformLandmarks.cxx ${clitkTransformLandmarks_GGO_C})
- TARGET_LINK_LIBRARIES(clitkTransformLandmarks clitkCommon ${ITK_LIBRARIES})
-
- WRAP_GGO(clitkLineProfile_GGO_C clitkLineProfile.ggo)
- ADD_EXECUTABLE(clitkLineProfile clitkLineProfile.cxx clitkLineProfileGenericFilter.cxx ${clitkLineProfile_GGO_C})
- TARGET_LINK_LIBRARIES(clitkLineProfile clitkCommon ${ITK_LIBRARIES})
+ WRAP_GGO(clitkBinaryImageToMesh_GGO_C clitkBinaryImageToMesh.ggo)
+ ADD_EXECUTABLE(clitkBinaryImageToMesh clitkBinaryImageToMesh.cxx ${clitkBinaryImageToMesh_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkBinaryImageToMesh ${ITK_LIBRARIES} vtkCommon vtkRendering)
+
+ WRAP_GGO(clitkMeshViewer_GGO_C clitkMeshViewer.ggo)
+ ADD_EXECUTABLE(clitkMeshViewer clitkMeshViewer.cxx ${clitkMeshViewer_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkMeshViewer vtkCommon vtkRendering)
+ ENDIF(CLITK_EXPERIMENTAL)
ENDIF(CLITK_BUILD_TOOLS)
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================*/
+#include "clitkBinaryImageToMesh_ggo.h"
+#include "clitkImageToImageGenericFilter.h"
+
+#include "vtkMetaImageReader.h"
+#include "vtkContourFilter.h"
+#include "vtkDecimatePro.h"
+#include "vtkPolyDataMapper.h"
+#include "vtkRenderer.h"
+#include "vtkRenderWindow.h"
+#include "vtkActor.h"
+#include "vtkCamera.h"
+#include "vtkOBJExporter.h"
+#include "vtkRenderWindowInteractor.h"
+#include "vtkSmartPointer.h"
+
+#include "itksys/SystemTools.hxx"
+
+void run(const args_info_clitkBinaryImageToMesh& argsInfo);
+
+int main(int argc, char** argv)
+{
+ GGO(clitkBinaryImageToMesh, args_info);
+
+ run(args_info);
+
+ return EXIT_SUCCESS;
+}
+
+void run(const args_info_clitkBinaryImageToMesh& argsInfo)
+{
+ std::string file = argsInfo.input_arg;
+
+ vtkSmartPointer<vtkMetaImageReader> pbmp_reader = vtkMetaImageReader::New();
+ pbmp_reader->SetFileName(file.c_str());
+ pbmp_reader->Update();
+
+ printf("Filtering...\n");
+ vtkSmartPointer<vtkContourFilter> pcontour = vtkContourFilter::New();
+ pcontour->SetValue(0, 0.5);
+ pcontour->SetInputConnection(pbmp_reader->GetOutputPort());
+
+ vtkSmartPointer<vtkDecimatePro> psurface = vtkDecimatePro::New();
+ psurface->SetInputConnection(pcontour->GetOutputPort());
+
+ vtkSmartPointer<vtkPolyDataMapper> skinMapper = vtkPolyDataMapper::New();
+ skinMapper->SetInputConnection(psurface->GetOutputPort());
+ skinMapper->ScalarVisibilityOff();
+
+ vtkSmartPointer<vtkActor> skin = vtkActor::New();
+ skin->SetMapper(skinMapper);
+
+ vtkSmartPointer<vtkCamera> aCamera = vtkCamera::New();
+ aCamera->SetViewUp (0, 0, -1);
+ aCamera->SetPosition (0, 1, 0);
+ aCamera->SetFocalPoint (0, 0, 0);
+ aCamera->ComputeViewPlaneNormal();
+ aCamera->Dolly(1.5);
+
+ vtkSmartPointer<vtkRenderer> aRenderer = vtkRenderer::New();
+ aRenderer->AddActor(skin);
+ aRenderer->SetActiveCamera(aCamera);
+ aRenderer->ResetCamera ();
+ aRenderer->SetBackground(0,0,0);
+ aRenderer->ResetCameraClippingRange ();
+
+ vtkSmartPointer<vtkRenderWindow> renWin = vtkRenderWindow::New();
+ renWin->AddRenderer(aRenderer);
+ renWin->SetSize(640, 480);
+
+ vtkSmartPointer<vtkOBJExporter> pwriter2 = vtkOBJExporter::New();
+ pwriter2->SetRenderWindow(renWin);
+
+ std::string output;
+ if (argsInfo.output_given) {
+ output = argsInfo.output_arg;
+ if (itksys::SystemTools::FileIsDirectory(output.c_str())) {
+ file = itksys::SystemTools::GetFilenameName(file.c_str());
+ file = itksys::SystemTools::GetFilenameWithoutExtension(file.c_str());
+ file = itksys::SystemTools::CollapseFullPath(file.c_str(), output.c_str());
+ }
+ else {
+ file = output;
+ }
+ }
+ else {
+ file = itksys::SystemTools::GetFilenameWithoutExtension(file);
+ }
+ pwriter2->SetFilePrefix(file.c_str());
+ pwriter2->Write();
+
+ vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkRenderWindowInteractor::New();
+ iren->SetRenderWindow(renWin);
+
+ skinMapper->Update();
+ bool interact = argsInfo.view_flag;
+ if (interact)
+ {
+ iren->Initialize();
+ iren->Start();
+ }
+ else
+ renWin->Render();
+}
+
+
--- /dev/null
+#File clitkBinaryImageToMesh.ggo
+package "clitkBinaryImageToMesh"
+version "1.0"
+purpose "Get the HU profile along the given line. Output to stdout."
+
+option "config" - "Config file" string no
+option "verbose" v "Verbose" flag off
+
+option "input" i "Input image" string yes
+option "output" o "Output mesh file prefix (if empty, use input file's base name as prefix; if a directoy, output to it using input file's base name as prefix; otherwise, use given name as prefix" string no
+option "view" - "View result" flag off
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================*/
+
+#include "vtkOBJReader.h"
+#include "vtkPolyDataMapper.h"
+#include "vtkRenderer.h"
+#include "vtkRenderWindow.h"
+#include "vtkActor.h"
+#include "vtkCamera.h"
+#include "vtkRenderWindowInteractor.h"
+#include "vtkSmartPointer.h"
+#include "vtkCommand.h"
+#include "vtkAnimationCue.h"
+#include "vtkAnimationScene.h"
+#include "vtkProperty.h"
+#include "vtkInteractorStyle.h"
+
+#include "clitkCommon.h"
+#include "clitkMeshViewer_ggo.h"
+
+#include <string>
+#include <iostream>
+#include <vector>
+
+typedef vtkSmartPointer<vtkOBJReader> ObjReaderType;
+typedef vtkSmartPointer<vtkPolyDataMapper> MapperType;
+typedef vtkSmartPointer<vtkActor> ActorType;
+
+
+long run(const args_info_clitkMeshViewer& argsInfo);
+
+// Adapted from vtkAnimationCue example...
+class CueAnimator
+{
+public:
+ CueAnimator(std::vector<ActorType>& rActors) : m_Fps(1), m_CurrentActor(0), m_rActors(rActors) {
+ m_rActors[0]->SetVisibility(1);
+ for (unsigned int i = 1; i < m_rActors.size(); i++) {
+ m_rActors[i]->SetVisibility(0);
+ }
+ }
+
+ ~CueAnimator() {
+ }
+
+ void SetFps(double fps) {
+ m_Fps = fps;
+ }
+
+ void StartCue(vtkAnimationCue::AnimationCueInfo *vtkNotUsed(info),
+ vtkRenderer *ren)
+ {
+ //std::cout << "StartCue" << std::endl;
+ }
+
+ void Tick(vtkAnimationCue::AnimationCueInfo *info,
+ vtkRenderer *ren)
+ {
+ //std::cout << "Tick AT:" << info->AnimationTime << " DT:" << info->DeltaTime << " CT:" << info->ClockTime << std::endl;
+
+ m_rActors[m_CurrentActor]->SetVisibility(0);
+
+ int step = round(m_Fps * info->AnimationTime);
+ int actor = step % m_rActors.size();
+
+ //if (actor != m_CurrentActor) std::cout << "Showing frame: " << m_CurrentActor << std::endl;
+ m_CurrentActor = actor;
+ m_rActors[m_CurrentActor]->SetVisibility(1);
+
+ ren->Render();
+ }
+
+ void EndCue(vtkAnimationCue::AnimationCueInfo *info,
+ vtkRenderer *ren)
+ {
+ //std::cout << "EndCue" << std::endl;
+ }
+
+protected:
+
+ double m_Fps;
+ clock_t m_LastTick;
+ double m_TotalTicks;
+ int m_CurrentActor;
+ std::vector<ActorType>& m_rActors;
+};
+
+class vtkAnimationCueObserver : public vtkCommand
+{
+public:
+ static vtkAnimationCueObserver *New()
+ {
+ return new vtkAnimationCueObserver;
+ }
+
+ virtual void Execute(vtkObject *vtkNotUsed(caller),
+ unsigned long event,
+ void *calldata)
+ {
+ if(this->Animator!=0 && this->Renderer!=0)
+ {
+ vtkAnimationCue::AnimationCueInfo *info=
+ static_cast<vtkAnimationCue::AnimationCueInfo *>(calldata);
+ switch(event)
+ {
+ case vtkCommand::StartAnimationCueEvent:
+ this->Animator->StartCue(info,this->Renderer);
+ break;
+ case vtkCommand::EndAnimationCueEvent:
+ this->Animator->EndCue(info,this->Renderer);
+ break;
+ case vtkCommand::AnimationCueTickEvent:
+ this->Animator->Tick(info,this->Renderer);
+ break;
+ }
+ }
+ if(this->RenWin!=0)
+ {
+ this->RenWin->Render();
+ }
+ }
+
+ vtkRenderer *Renderer;
+ vtkRenderWindow *RenWin;
+ CueAnimator *Animator;
+
+protected:
+ vtkAnimationCueObserver()
+ {
+ this->Renderer=0;
+ this->Animator=0;
+ this->RenWin=0;
+ }
+};
+
+class vtkWindowObserver : public vtkCommand
+{
+public:
+ static vtkWindowObserver *New()
+ {
+ return new vtkWindowObserver;
+ }
+
+ virtual void Execute(vtkObject *caller,
+ unsigned long event,
+ void *calldata)
+ {
+ vtkRenderWindowInteractor *isi = dynamic_cast<vtkRenderWindowInteractor *>(caller);
+ //std::cout << "Execute" << std::endl;
+ switch (event)
+ {
+ case vtkCommand::KeyPressEvent:
+ {
+ std::string key = isi->GetKeySym();
+ //std::cout << key[0] << std::endl;
+ switch (key[0])
+ {
+ case 'P':
+ case 'p':
+ if (this->m_Scene)
+ this->m_Scene->Play();
+ break;
+
+ case 'M':
+ case 'm':
+ if (this->m_Scene)
+ this->m_Scene->Stop();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ default:
+ break;
+
+ }
+
+ }
+
+ vtkAnimationScene* m_Scene;
+
+ protected:
+
+ vtkWindowObserver() : m_Scene(0) {}
+};
+
+int main(int argc, char** argv)
+{
+ GGO(clitkMeshViewer, args_info);
+
+ return run(args_info);
+}
+
+long run(const args_info_clitkMeshViewer& argsInfo)
+{
+ std::vector<ObjReaderType> objs;
+ std::vector<MapperType> mappers;
+ std::vector<ActorType> actors;
+
+ bool verbose = argsInfo.verbose_flag;
+
+ int nfiles = argsInfo.inputs_num;
+ if (nfiles == 0)
+ {
+ std::cout << "At leas one mesh (.OBJ) file must be given. See clitkMeshViewer -h." << std::endl;
+ return -1;
+ }
+
+ if (verbose)
+ std::cout << nfiles << " file(s) to be loaded..." << std::endl;
+
+ vtkSmartPointer<vtkRenderer> aRenderer = vtkRenderer::New();
+ for (int i = 0; i < nfiles; i++) {
+ std::string file = argsInfo.inputs[i];
+ if (verbose)
+ std::cout << "Reading " << file << std::endl;
+
+ vtkSmartPointer<vtkOBJReader> preader = vtkOBJReader::New();
+ preader->SetFileName(file.c_str());
+ preader->Update();
+ objs.push_back(preader);
+
+ vtkSmartPointer<vtkPolyDataMapper> skinMapper = vtkPolyDataMapper::New();
+ skinMapper->SetInputConnection(preader->GetOutputPort());
+ skinMapper->ScalarVisibilityOff();
+ mappers.push_back(skinMapper);
+
+ vtkSmartPointer<vtkActor> skin = vtkActor::New();
+ skin->SetMapper(skinMapper);
+ actors.push_back(skin);
+
+ aRenderer->AddActor(skin);
+ }
+
+ vtkSmartPointer<vtkCamera> aCamera = vtkCamera::New();
+ aCamera->SetViewUp (0, 0, -1);
+ aCamera->SetPosition (0, 1, 0);
+ aCamera->SetFocalPoint (0, 0, 0);
+ aCamera->ComputeViewPlaneNormal();
+ aCamera->Dolly(1.5);
+
+ aRenderer->SetActiveCamera(aCamera);
+ aRenderer->ResetCamera ();
+ aRenderer->SetBackground(0,0,0);
+ aRenderer->ResetCameraClippingRange ();
+
+ vtkSmartPointer<vtkRenderWindow> renWin = vtkRenderWindow::New();
+ renWin->AddRenderer(aRenderer);
+ renWin->SetSize(640, 480);
+
+ vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkRenderWindowInteractor::New();
+ iren->SetRenderWindow(renWin);
+ iren->Initialize();
+
+ vtkSmartPointer<vtkAnimationScene> scene;
+ vtkSmartPointer<vtkAnimationCue> cue1;
+ vtkSmartPointer<vtkAnimationCueObserver> anim_observer;
+ vtkSmartPointer<vtkWindowObserver> window_observer;
+ CueAnimator animator(actors);
+
+ bool animate = argsInfo.animate_flag;
+ if (animate) {
+ double fps = argsInfo.fps_arg;
+ animator.SetFps(fps);
+
+ // Create an Animation Scene
+ scene=vtkAnimationScene::New();
+ scene->SetModeToRealTime();
+
+ scene->SetLoop(1);
+ scene->SetTimeModeToRelative();
+ scene->SetStartTime(0);
+ scene->SetEndTime(actors.size()/fps);
+
+ // Create an Animation Cue.
+ cue1=vtkAnimationCue::New();
+ cue1->SetTimeModeToRelative();
+ cue1->SetStartTime(0);
+ cue1->SetEndTime(actors.size()/fps);
+ scene->AddCue(cue1);
+
+ // Create Cue anim_observer.
+ anim_observer=vtkAnimationCueObserver::New();
+ anim_observer->Renderer=aRenderer;
+ anim_observer->Animator=&animator;
+ anim_observer->RenWin=renWin;
+ cue1->AddObserver(vtkCommand::StartAnimationCueEvent,anim_observer);
+ cue1->AddObserver(vtkCommand::EndAnimationCueEvent,anim_observer);
+ cue1->AddObserver(vtkCommand::AnimationCueTickEvent,anim_observer);
+
+ window_observer = vtkWindowObserver::New();
+ window_observer->m_Scene = scene;
+ iren->AddObserver(vtkCommand::KeyPressEvent, window_observer);
+
+ }
+
+ iren->Start();
+ return 0;
+}
+
+
--- /dev/null
+#File clitkMeshViewer.ggo
+package "clitkMeshViewer"
+version "1.0"
+purpose "Visualize a set of meshes"
+usage "clitkMeshViewer FILE1 FILE2 ... [OPTIONS]"
+
+option "config" - "Config file" string no
+option "verbose" v "Verbose" flag off
+
+option "animate" - "Enable animation mode (type p/m to start/stop animation)" flag off
+option "fps" - "Set the animation's frame rate (in fps)" double default="4.0" no
vvImage::Pointer imageSelected;
if (DataTree->topLevelItem(index) == DataTree->selectedItems()[0]) {
imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetImage();
- dimension = imageSelected->GetNumberOfDimensions();
- origin.resize(dimension);
- inputSpacing.resize(dimension);
- inputSize.resize(dimension);
- sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
- for (int i = 0; i < dimension; i++) {
- origin[i] = imageSelected->GetOrigin()[i];
- inputSpacing[i] = imageSelected->GetSpacing()[i];
- inputSize[i] = imageSelected->GetSize()[i];
- sizeMM[i] = inputSize[i]*inputSpacing[i];
- NPixel *= inputSize[i];
- }
- inputSizeInBytes = GetSizeInBytes(imageSelected->GetActualMemorySize()*1000);
} else if (DataTree->selectedItems()[0]->data(1,Qt::UserRole).toString() == "vector") {
imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetVF();
- dimension = imageSelected->GetNumberOfDimensions();
- origin.resize(dimension);
- inputSpacing.resize(dimension);
- inputSize.resize(dimension);
- sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetVF()->GetScalarTypeAsITKString().c_str();
- for (int i = 0; i < dimension; i++) {
- origin[i] = imageSelected->GetOrigin()[i];
- inputSpacing[i] = imageSelected->GetSpacing()[i];
- inputSize[i] = imageSelected->GetSize()[i];
- sizeMM[i] = inputSize[i]*inputSpacing[i];
- NPixel *= inputSize[i];
- }
- inputSizeInBytes = GetSizeInBytes(imageSelected->GetActualMemorySize()*1000);
} else if (DataTree->selectedItems()[0]->data(1,Qt::UserRole).toString() == "overlay") {
imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetOverlay();
- dimension = imageSelected->GetNumberOfDimensions();
- origin.resize(dimension);
- inputSpacing.resize(dimension);
- inputSize.resize(dimension);
- sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
- for (int i = 0; i < dimension; i++) {
- origin[i] = imageSelected->GetOrigin()[i];
- inputSpacing[i] = imageSelected->GetSpacing()[i];
- inputSize[i] = imageSelected->GetSize()[i];
- sizeMM[i] = inputSize[i]*inputSpacing[i];
- NPixel *= inputSize[i];
- }
- inputSizeInBytes = GetSizeInBytes(imageSelected->GetActualMemorySize()*1000);
} else if (DataTree->selectedItems()[0]->data(1,Qt::UserRole).toString() == "fusion") {
imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetFusion();
- dimension = imageSelected->GetNumberOfDimensions();
- origin.resize(dimension);
- inputSpacing.resize(dimension);
- inputSize.resize(dimension);
- sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
- for (int i = 0; i < dimension; i++) {
- origin[i] = imageSelected->GetOrigin()[i];
- inputSpacing[i] = imageSelected->GetSpacing()[i];
- inputSize[i] = imageSelected->GetSize()[i];
- sizeMM[i] = inputSize[i]*inputSpacing[i];
- NPixel *= inputSize[i];
- }
- inputSizeInBytes = GetSizeInBytes(imageSelected->GetActualMemorySize()*1000);
+ }
+ else if (DataTree->selectedItems()[0]->data(1,Qt::UserRole).toString() == "contour") {
+ imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetImage();
+ }
+ else {
+ imageSelected = mSlicerManagers[index]->GetSlicer(0)->GetImage();
}
+ dimension = imageSelected->GetNumberOfDimensions();
+ origin.resize(dimension);
+ inputSpacing.resize(dimension);
+ inputSize.resize(dimension);
+ sizeMM.resize(dimension);
+ pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
+ for (int i = 0; i < dimension; i++) {
+ origin[i] = imageSelected->GetOrigin()[i];
+ inputSpacing[i] = imageSelected->GetSpacing()[i];
+ inputSize[i] = imageSelected->GetSize()[i];
+ sizeMM[i] = inputSize[i]*inputSpacing[i];
+ NPixel *= inputSize[i];
+ }
+ inputSizeInBytes = GetSizeInBytes(imageSelected->GetActualMemorySize()*1000);
+
QString dim = QString::number(dimension) + " (";
dim += pixelType + ")";
infoPanel->setOrigin(GetVectorDoubleAsString(origin));
infoPanel->setSpacing(GetVectorDoubleAsString(inputSpacing));
infoPanel->setNPixel(QString::number(NPixel)+" ("+inputSizeInBytes+")");
+ std::cout << "Will get transform " << std::endl;
transformation = imageSelected->GetTransform()->GetMatrix();
+ std::cout << "Got transform " << std::endl;
infoPanel->setTransformation(Get4x4MatrixDoubleAsString(transformation));
landmarksPanel->SetCurrentLandmarks(mSlicerManagers[index]->GetLandmarks(),
{
std::vector<vvMesh::Pointer> result;
#if GDCM_MAJOR_VERSION == 2
+ gdcm::Reader reader;
+ reader.SetFileName(filename.c_str());
+ reader.Read();
+
+ const gdcm::DataSet &ds = reader.GetFile().GetDataSet();
+
+ gdcm::SmartPointer<gdcm::SequenceOfItems> rois = ds.GetDataElement(gdcm::Tag(0x3006,0x39)).GetValueAsSQ();
+ gdcm::SmartPointer<gdcm::SequenceOfItems> roi_info = ds.GetDataElement(gdcm::Tag(0x3006,0x20)).GetValueAsSQ();
+ assert(rois); // TODO error message
+ assert(roi_info); // TODO error message
+ assert(rois->GetNumberOfItems() == roi_info->GetNumberOfItems());
+
+ for (unsigned ridx = 0; ridx < rois->GetNumberOfItems(); ++ridx)
+ {
+ vtkSmartPointer<vtkAppendPolyData> append=vtkSmartPointer<vtkAppendPolyData>::New();
+ const gdcm::DataSet& ds_rois = rois->GetItem( ridx + 1).GetNestedDataSet();
+ const gdcm::DataSet& ds_roi_info = roi_info->GetItem( ridx + 1).GetNestedDataSet();
+
+ gdcm::Attribute<0x3006,0x84> roinumber;
+ roinumber.SetFromDataSet(ds_rois);
+ if (std::find(selected_contours.begin(), selected_contours.end(), roinumber.GetValue()) != selected_contours.end()) //Only read selected ROIs
+ {
+ gdcm::Attribute<0x3006,0x2a> trgb;
+ trgb.SetFromDataSet(ds_rois);
+ vvMesh::Pointer current_roi=vvMesh::New();
+ current_roi->r = trgb[0] / 255;
+ current_roi->g = trgb[1] / 255;
+ current_roi->b = trgb[2] / 255;
+
+ gdcm::Attribute<0x3006,0x26> tstructure_name;
+ tstructure_name.SetFromDataSet(ds_roi_info);
+ current_roi->structure_name = tstructure_name.GetValue();
+
+ gdcm::SmartPointer<gdcm::SequenceOfItems> roi_seq = ds_rois.GetDataElement(gdcm::Tag(0x3006,0x40)).GetValueAsSQ();
+ double z0=-1; //Used to determine spacing between slices, assumed to be constant
+ for (unsigned j = 0; j < roi_seq->GetNumberOfItems(); ++j)
+ {
+ gdcm::Item & item_roi_seq = roi_seq->GetItem(j + 1); // Item starts at 1
+ const gdcm::DataSet& ds_roi_seq = item_roi_seq.GetNestedDataSet();
+ gdcm::Attribute<0x3006,0x42> tcontour_type;
+ tcontour_type.SetFromDataSet(ds_roi_seq);
+ std::string contour_type = tcontour_type.GetValue();
+ if (contour_type=="CLOSED_PLANAR ")
+ {
+ gdcm::Attribute<0x3006,0x46> tpoint_number;
+ tpoint_number.SetFromDataSet(ds_roi_seq);
+ const gdcm::DataElement & points_data = ds_roi_seq.GetDataElement(gdcm::Tag(0x3006,0x50));
+ gdcm::Attribute<0x3006,0x50> tpoints;
+ tpoints.SetFromDataElement(points_data);
+ assert(tpoints.GetNumberOfValues() == static_cast<unsigned int>(tpoint_number.GetValue()) * 3);
+ const double* points = tpoints.GetValues();
+ if (z0 == -1) //First contour
+ z0=points[2];
+ else
+ if (current_roi->GetSpacing()==-1 && points[2] != z0 )
+ current_roi->SetSpacing(points[2]-z0);
+ vtkPolyData * contour=vtkPolyData::New();
+ contour->Allocate(); //for cell structures
+ contour->SetPoints(vtkPoints::New());
+ vtkIdType ids[2];
+ for (unsigned idx = 0; idx < tpoints.GetNumberOfValues(); idx += 3)
+ {
+ contour->GetPoints()->InsertNextPoint(points[idx], points[idx+1], points[idx+2]);
+ ids[0] = idx / 3;
+ ids[1] = (ids[0] + 1) % tpoint_number.GetValue(); //0-1,1-2,...,n-1-0
+ contour->GetLines()->InsertNextCell(2, ids);
+ }
+ append->AddInput(contour);
+ }
+ else
+ if (contour_type == "POINT ")
+ ; // silently ignore POINT type since we don't need them at the moment
+ else
+ std::cerr << "Warning: contour type " << contour_type << " not handled!" << std::endl;
+ }
+ append->Update();
+ current_roi->AddMesh(append->GetOutput());
+ result.push_back(current_roi);
+ }
+ else
+ {
+ //std::cerr << "Warning: ignoring ROI #" << roi_number << std::endl;
+ }
+ }
#else
gdcm::File reader;
reader.SetFileName(filename.c_str());
{
if (mSurfaceCutActors.size() > 0)
for (std::vector<vvMeshActor*>::iterator i=mSurfaceCutActors.begin();
- i!=mSurfaceCutActors.end(); i++)
+ i!=mSurfaceCutActors.end(); i++) {
+
+ (*i)->SetSlicingOrientation(this->SliceOrientation);
(*i)->SetCutSlice((this->Slice)*this->GetImage()->GetSpacing()[this->SliceOrientation]+
this->GetImage()->GetOrigin()[this->SliceOrientation]);
+ }
}
//----------------------------------------------------------------------------