1 #include "clitkImageToImageGenericFilter.h"
2 #include "clitkImageCommon.h"
4 //--------------------------------------------------------------------
5 clitk::ImageToImageGenericFilterBase::ImageToImageGenericFilterBase(std::string n)
8 mListOfAllowedDimensions.clear();
9 mListOfAllowedPixelTypes.clear();
10 mFailOnImageTypeError = true;
12 //--------------------------------------------------------------------
15 //--------------------------------------------------------------------
16 void clitk::ImageToImageGenericFilterBase::AddImageType(unsigned int d, std::string p) {
18 mListOfAllowedDimensions.insert(d);
19 mListOfAllowedPixelTypes.insert(p);
21 //--------------------------------------------------------------------
24 //--------------------------------------------------------------------
25 void clitk::ImageToImageGenericFilterBase::SetInputFilenames(const std::vector<std::string> & filenames) {
26 mInputFilenames=filenames;
28 //--------------------------------------------------------------------
31 //--------------------------------------------------------------------
32 void clitk::ImageToImageGenericFilterBase::SetInputFilename(const std::string & filename) {
33 std::vector<std::string> f;
34 f.push_back(filename);
37 //--------------------------------------------------------------------
40 //--------------------------------------------------------------------
41 void clitk::ImageToImageGenericFilterBase::AddInputFilename(const std::string & filename) {
42 mInputFilenames.push_back(filename);
44 //--------------------------------------------------------------------
47 //--------------------------------------------------------------------
48 void clitk::ImageToImageGenericFilterBase::SetOutputFilename(const std::string & filename) {
49 mOutputFilenames.clear();
50 mOutputFilenames.push_back(filename);
52 //--------------------------------------------------------------------
55 //--------------------------------------------------------------------
56 void clitk::ImageToImageGenericFilterBase::AddOutputFilename(const std::string & filename)
58 mOutputFilenames.push_back(filename);
60 //--------------------------------------------------------------------
63 //--------------------------------------------------------------------
64 void clitk::ImageToImageGenericFilterBase::SetOutputFilenames(const std::vector<std::string> & filenames)
66 mOutputFilenames.clear();
67 std::copy(filenames.begin(),filenames.end(),mOutputFilenames.begin());
69 //--------------------------------------------------------------------
72 //--------------------------------------------------------------------
73 std::string clitk::ImageToImageGenericFilterBase::GetOutputFilename()
75 assert(mOutputFilenames.size() == 1);
76 return mOutputFilenames.front();
78 //--------------------------------------------------------------------
81 //--------------------------------------------------------------------
82 void clitk::ImageToImageGenericFilterBase::GetInputImageDimensionAndPixelType(unsigned int& dim, \
83 std::string& pixeltype,unsigned int& components)
85 if (mInputFilenames.size())
87 int comp_temp,dim_temp; //clitkCommonImage takes ints
88 ReadImageDimensionAndPixelType(mInputFilenames[0], dim_temp, pixeltype,comp_temp);
89 components=comp_temp; dim=dim_temp;
91 else if (mInputVVImages.size())
93 pixeltype=mInputVVImages[0]->GetScalarTypeAsString();
94 dim=mInputVVImages[0]->GetNumberOfDimensions();
95 components=mInputVVImages[0]->GetNumberOfScalarComponents();
98 assert(false); //No input image, shouldn't happen
101 std::cout << "Input is " << mDim << "D " << mPixelTypeName << "." << std::endl;
104 //--------------------------------------------------------------------
107 //--------------------------------------------------------------------
108 vvImage::Pointer clitk::ImageToImageGenericFilterBase::GetOutputVVImage ()
110 assert(mOutputVVImages.size());
111 return mOutputVVImages[0];
113 //--------------------------------------------------------------------
116 //--------------------------------------------------------------------
117 std::vector<vvImage::Pointer> clitk::ImageToImageGenericFilterBase::GetOutputVVImages()
119 return mOutputVVImages;
121 //--------------------------------------------------------------------
124 //--------------------------------------------------------------------
125 void clitk::ImageToImageGenericFilterBase::SetInputVVImage (vvImage::Pointer input)
127 mInputVVImages.clear();
128 mInputVVImages.push_back(input);
130 //--------------------------------------------------------------------
133 //--------------------------------------------------------------------
134 void clitk::ImageToImageGenericFilterBase::AddInputVVImage (vvImage::Pointer input)
136 mInputVVImages.push_back(input);
138 //--------------------------------------------------------------------
141 //--------------------------------------------------------------------
142 void clitk::ImageToImageGenericFilterBase::SetInputVVImages (std::vector<vvImage::Pointer> input)
144 mInputVVImages=input;
146 //--------------------------------------------------------------------
150 //--------------------------------------------------------------------
151 bool clitk::ImageToImageGenericFilterBase::CheckImageType() {
152 return (CheckDimension() && CheckPixelType());
154 //--------------------------------------------------------------------
157 //--------------------------------------------------------------------
158 bool clitk::ImageToImageGenericFilterBase::CheckDimension(unsigned int d) {
159 return (mListOfAllowedDimensions.find(d) != mListOfAllowedDimensions.end());
161 //--------------------------------------------------------------------
164 //--------------------------------------------------------------------
165 bool clitk::ImageToImageGenericFilterBase::CheckPixelType(std::string pt) {
166 return (mListOfAllowedPixelTypes.find(pt) != mListOfAllowedPixelTypes.end());
168 //--------------------------------------------------------------------
171 //--------------------------------------------------------------------
172 bool clitk::ImageToImageGenericFilterBase::CheckDimension() {
173 return CheckDimension(mDim);
175 //--------------------------------------------------------------------
178 //--------------------------------------------------------------------
179 bool clitk::ImageToImageGenericFilterBase::CheckPixelType() {
180 return CheckPixelType(mPixelTypeName);
182 //--------------------------------------------------------------------
185 //--------------------------------------------------------------------
186 void clitk::ImageToImageGenericFilterBase::PrintAvailableImageTypes() {
187 std::cout << GetAvailableImageTypes();
189 //--------------------------------------------------------------------
192 //--------------------------------------------------------------------
193 std::string clitk::ImageToImageGenericFilterBase::GetAvailableImageTypes() {
194 std::ostringstream oss;
195 oss << "The filter <" << mFilterName << "> manages ";
196 for(std::set<unsigned int>::const_iterator i=mListOfAllowedDimensions.begin();
197 i!=mListOfAllowedDimensions.end(); i++) {
200 oss << "images, with pixel types: ";
201 for(std::set<std::string>::const_iterator i=mListOfAllowedPixelTypes.begin();
202 i!=mListOfAllowedPixelTypes.end(); i++) {
208 //--------------------------------------------------------------------
212 //--------------------------------------------------------------------
213 void clitk::ImageToImageGenericFilterBase::ImageTypeError() {
214 std::cerr << "**Error** The filter <" << mFilterName << "> is not available for "
215 << mDim << "D images with pixel="
216 << mPixelTypeName << "." << std::endl;
217 std::cerr << "**Error** Allowed image dim: \t";
218 for(std::set<unsigned int>::const_iterator i=mListOfAllowedDimensions.begin();
219 i!=mListOfAllowedDimensions.end(); i++) {
220 std::cerr << *i << "D ";
222 std::cerr << std::endl << "**Error** Allowed pixel types: \t";
223 for(std::set<std::string>::const_iterator i=mListOfAllowedPixelTypes.begin();
224 i!=mListOfAllowedPixelTypes.end(); i++) {
225 std::cerr << *i << " ";
227 std::cerr << std::endl;
230 //--------------------------------------------------------------------
233 //--------------------------------------------------------------------
234 void clitk::ImageToImageGenericFilterBase::SetImageTypeError() {
235 std::cerr << "TODO ! " << std::endl;
238 //--------------------------------------------------------------------