X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkRelativePositionList.txx;h=d5c8d25f6181a596fbbf6d1e609af3fa6da0dde7;hb=e64bc938065fef91ca19fb4b5f4f3bb973bc6f81;hp=e0258d5e71fb560e166c81d1a86a6608c6fe1bcb;hpb=025ee694f3e08b71b518c4cd1392b592b22f4387;p=clitk.git diff --git a/segmentation/clitkRelativePositionList.txx b/segmentation/clitkRelativePositionList.txx index e0258d5..d5c8d25 100644 --- a/segmentation/clitkRelativePositionList.txx +++ b/segmentation/clitkRelativePositionList.txx @@ -16,11 +16,28 @@ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html ======================================================================-====*/ +#include "clitkLabelImageOverlapMeasureFilter.h" //-------------------------------------------------------------------- template clitk::RelativePositionList:: -RelativePositionList() { +RelativePositionList(): + clitk::FilterBase(), + clitk::FilterWithAnatomicalFeatureDatabaseManagement(), + itk::ImageToImageFilter() +{ + ComputeOverlapFlagOff(); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +void +clitk::RelativePositionList:: +SetReferenceImageForOverlapMeasure(ImagePointer ref) { + m_reference = ref; + ComputeOverlapFlagOn(); } //-------------------------------------------------------------------- @@ -87,6 +104,8 @@ Read(std::string filename) { std::ofstream os; openFileForWriting(os, tmpfilename); os << text; + os << "input = nothing" << std::endl; + os << "output = nothing" << std::endl; os.close(); // Create a struct to store options. I use two step to allow to @@ -97,14 +116,11 @@ Read(std::string filename) { std::copy(tmpfilename.begin(), tmpfilename.end(), writable.begin()); char ** argv = new char*[1]; argv[0] = new char[1]; - cmdline_parser_clitkRelativePosition2(1, argv, &args_info, 1, 1, 0); - args_info.input_given = 1; - args_info.input_arg = new char[1]; - args_info.output_given = 1; - args_info.output_arg = new char[1]; - cmdline_parser_clitkRelativePosition_configfile(&writable[0], &args_info, 0, 0, 1); - - // Store the args + struct cmdline_parser_clitkRelativePosition_params params; + params.override = 0; + params.initialize = 1; + params.check_required = 0; + cmdline_parser_clitkRelativePosition_configfile(&writable[0], &args_info, 1, 1, 1); mArgsInfoList.push_back(args_info); // Delete the temporary file @@ -142,10 +158,20 @@ GenerateOutputInformation() { // Get input m_working_input = dynamic_cast(itk::ProcessObject::GetInput(0)); + std::string s = GetInputName(); + + // Debug + if (GetDisplayUsedStructuresOnlyFlag()) { + for(uint i=0; iSetUniqueConnectedComponentBySliceFlag(mArgsInfoList[i].uniqueCCL_flag); f->SetObjectCCLSelectionFlag(mArgsInfoList[i].uniqueObjectCCL_flag); f->IgnoreEmptySliceObjectFlagOn(); + f->SetVerboseSlicesFlag(mArgsInfoList[i].verboseSlices_flag); //f->SetObjectCCLSelectionDimension(0); //f->SetObjectCCLSelectionDirection(-1); //f->SetAutoCropFlag(false); @@ -191,7 +219,17 @@ GenerateOutputInformation() { relPosFilter->Update(); m_working_input = relPosFilter->GetOutput(); StopCurrentStep(m_working_input); - // clitk::PrintMemory(true, "End"); + + // Compute overlap with reference if needed + if (GetComputeOverlapFlag()) { + typedef clitk::LabelImageOverlapMeasureFilter FilterType; + typename FilterType::Pointer filter = FilterType::New(); + filter->SetInput(0, m_working_input); + filter->SetInput(1, m_reference); + filter->Update(); + std::cout << std::endl; + } + } } //-------------------------------------------------------------------- @@ -224,6 +262,7 @@ SetFilterOptions(typename RelPosFilterType::Pointer filter, ArgsInfoType & optio ImagePointer object = GetAFDB()->template GetImage(options.object_arg); filter->SetInputObject(object); filter->WriteStepFlagOff(); + if (options.writeStep_flag) filter->WriteStepFlagOn(); filter->SetVerboseImageSizeFlag(GetVerboseImageSizeFlag()); filter->SetFuzzyThreshold(options.threshold_arg); filter->SetInverseOrientationFlag(options.inverse_flag); // MUST BE BEFORE AddOrientationTypeString @@ -249,3 +288,5 @@ SetFilterOptions(typename RelPosFilterType::Pointer filter, ArgsInfoType & optio filter->SetAutoCropFlag(!options.noAutoCrop_flag); } //-------------------------------------------------------------------- + +