1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://www.centreleonberard.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
20 #include "clitkStructuresExtractionFilter.h"
22 //--------------------------------------------------------------------
23 template <class TImageType>
24 clitk::StructuresExtractionFilter<TImageType>::
25 StructuresExtractionFilter():
27 clitk::FilterWithAnatomicalFeatureDatabaseManagement(),
28 itk::ImageToImageFilter<TImageType, MaskImageType>()
30 SetBackgroundValue(0);
31 SetForegroundValue(1);
33 //--------------------------------------------------------------------
36 //--------------------------------------------------------------------
37 template <class TImageType>
39 clitk::StructuresExtractionFilter<TImageType>::
40 AddRelativePositionListFilename(std::string s) {
41 mListOfRelativePositionListFilename.push_back(s);
43 //--------------------------------------------------------------------
46 //--------------------------------------------------------------------
47 template <class TImageType>
48 typename clitk::StructuresExtractionFilter<TImageType>::MaskImagePointer
49 clitk::StructuresExtractionFilter<TImageType>::
50 ApplyRelativePositionList(std::string name, MaskImageType * input, bool overlap)
52 // Create all RelativePositionList
53 for(unsigned int i=0; i<mListOfRelativePositionListFilename.size(); i++) {
54 RelPosListPointer rpl = RelPosListType::New();
55 rpl->SetDisplayUsedStructuresOnlyFlag(this->GetDisplayUsedStructuresOnlyFlag());
56 rpl->SetAFDB(GetAFDB());
57 rpl->Read(mListOfRelativePositionListFilename[i]);
58 std::string s = rpl->GetInputName();
59 mMapOfRelativePositionList[s] = rpl;
62 RelPosListPointer relpos;
63 if (mMapOfRelativePositionList.find(name) == mMapOfRelativePositionList.end()) {
64 std::cerr << "Warning: I do not find '" << name << "' in the RelativePositionList." << std::endl;
65 //DD("Not find !"); // do nothing
68 relpos = mMapOfRelativePositionList[name];
69 relpos->SetVerboseStepFlag(GetVerboseStepFlag());
70 relpos->SetCurrentStepBaseId(GetCurrentStepBaseId());
71 relpos->SetCurrentStepId(GetCurrentStepId());
72 relpos->SetCurrentStepNumber(GetCurrentStepNumber());
73 relpos->SetWriteStepFlag(GetWriteStepFlag());
74 relpos->SetInput(input);
75 if (!this->GetDisplayUsedStructuresOnlyFlag() && overlap) {
76 std::string n = name.substr(8,3);
77 MaskImagePointer ref = this->GetAFDB()->template GetImage <MaskImageType>(n+"_Ref");
78 relpos->SetReferenceImageForOverlapMeasure(ref);
81 input = relpos->GetOutput();
83 SetCurrentStepNumber(relpos->GetCurrentStepNumber());
87 //--------------------------------------------------------------------