1 #include "clitkImageToImageGenericFilter.h"
2 #include "clitkImageCommon.h"
4 //--------------------------------------------------------------------
5 clitk::ImageToImageGenericFilterBase::ImageToImageGenericFilterBase(std::string n)
8 mListOfAllowedDimension.clear();
9 mListOfAllowedPixelType.clear();
10 mFailOnImageTypeError = true;
12 //--------------------------------------------------------------------
15 //--------------------------------------------------------------------
16 void clitk::ImageToImageGenericFilterBase::AddImageType(unsigned int d, std::string p) {
17 // Search for dimension (to not duplicate)
18 std::vector<unsigned int>::const_iterator it =
19 std::find (mListOfAllowedDimension.begin(),
20 mListOfAllowedDimension.end(), d);
21 if (it == mListOfAllowedDimension.end()) mListOfAllowedDimension.push_back(d);
22 // Search for PixelType (to not duplicate)
23 std::vector<std::string>::const_iterator itt =
24 std::find (mListOfAllowedPixelType.begin(),
25 mListOfAllowedPixelType.end(), p);
26 if (itt == mListOfAllowedPixelType.end()) mListOfAllowedPixelType.push_back(p);
28 //--------------------------------------------------------------------
31 //--------------------------------------------------------------------
32 void clitk::ImageToImageGenericFilterBase::SetInputFilenames(const std::vector<std::string> & filenames) {
33 mInputFilenames.resize(filenames.size());
34 std::copy(filenames.begin(), filenames.end(), mInputFilenames.begin());
36 //--------------------------------------------------------------------
39 //--------------------------------------------------------------------
40 void clitk::ImageToImageGenericFilterBase::SetInputFilename(const std::string & filename) {
41 std::vector<std::string> f;
42 f.push_back(filename);
45 //--------------------------------------------------------------------
48 //--------------------------------------------------------------------
49 void clitk::ImageToImageGenericFilterBase::AddInputFilename(const std::string & filename) {
50 mInputFilenames.push_back(filename);
52 //--------------------------------------------------------------------
55 //--------------------------------------------------------------------
56 void clitk::ImageToImageGenericFilterBase::SetOutputFilename(const std::string & filename) {
57 mOutputFilenames.clear();
58 mOutputFilenames.push_back(filename);
60 //--------------------------------------------------------------------
63 //--------------------------------------------------------------------
64 void clitk::ImageToImageGenericFilterBase::AddOutputFilename(const std::string & filename)
66 mOutputFilenames.push_back(filename);
68 //--------------------------------------------------------------------
71 //--------------------------------------------------------------------
72 void clitk::ImageToImageGenericFilterBase::SetOutputFilenames(const std::vector<std::string> & filenames)
74 std::copy(filenames.begin(), filenames.end(), mOutputFilenames.begin());
76 //--------------------------------------------------------------------
79 //--------------------------------------------------------------------
80 std::string clitk::ImageToImageGenericFilterBase::GetOutputFilename()
82 assert(mOutputFilenames.size() == 1);
83 return mOutputFilenames.front();
85 //--------------------------------------------------------------------
88 //--------------------------------------------------------------------
89 void clitk::ImageToImageGenericFilterBase::GetInputImageDimensionAndPixelType(unsigned int& dim, \
90 std::string& pixeltype,unsigned int& components)
92 if (mInputFilenames.size())
94 int comp_temp,dim_temp; //clitkCommonImage takes ints
95 ReadImageDimensionAndPixelType(mInputFilenames[0], dim_temp, pixeltype,comp_temp);
96 components=comp_temp; dim=dim_temp;
98 else if (mInputVVImages.size())
100 pixeltype=mInputVVImages[0]->GetScalarTypeAsString();
101 dim=mInputVVImages[0]->GetNumberOfDimensions();
102 components=mInputVVImages[0]->GetNumberOfScalarComponents();
105 assert(false); //No input image, shouldn't happen
108 std::cout << "Input is " << mDim << "D " << mPixelTypeName << "." << std::endl;
111 //--------------------------------------------------------------------
114 //--------------------------------------------------------------------
115 vvImage::Pointer clitk::ImageToImageGenericFilterBase::GetOutputVVImage ()
117 assert(mOutputVVImages.size());
118 return mOutputVVImages[0];
120 //--------------------------------------------------------------------
123 //--------------------------------------------------------------------
124 std::vector<vvImage::Pointer> clitk::ImageToImageGenericFilterBase::GetOutputVVImages()
126 return mOutputVVImages;
128 //--------------------------------------------------------------------
131 //--------------------------------------------------------------------
132 void clitk::ImageToImageGenericFilterBase::SetInputVVImage (vvImage::Pointer input)
134 mInputVVImages.clear();
135 mInputVVImages.push_back(input);
137 //--------------------------------------------------------------------
140 //--------------------------------------------------------------------
141 void clitk::ImageToImageGenericFilterBase::AddInputVVImage (vvImage::Pointer input)
143 mInputVVImages.push_back(input);
145 //--------------------------------------------------------------------
148 //--------------------------------------------------------------------
149 void clitk::ImageToImageGenericFilterBase::SetInputVVImages (std::vector<vvImage::Pointer> input)
151 mInputVVImages=input;
153 //--------------------------------------------------------------------
157 //--------------------------------------------------------------------
158 bool clitk::ImageToImageGenericFilterBase::CheckImageType() {
159 return (CheckDimension() && CheckPixelType());
161 //--------------------------------------------------------------------
164 //--------------------------------------------------------------------
165 bool clitk::ImageToImageGenericFilterBase::CheckDimension(unsigned int d) {
168 while ((!b) && (i<mListOfAllowedDimension.size())) {
169 b = (mListOfAllowedDimension[i] == d);
174 //--------------------------------------------------------------------
177 //--------------------------------------------------------------------
178 bool clitk::ImageToImageGenericFilterBase::CheckPixelType(std::string pt) {
181 while ((!b) && (i<mListOfAllowedPixelType.size())) {
182 b = (mListOfAllowedPixelType[i] == pt);
187 //--------------------------------------------------------------------
190 //--------------------------------------------------------------------
191 bool clitk::ImageToImageGenericFilterBase::CheckDimension() {
192 return CheckDimension(mDim);
194 //--------------------------------------------------------------------
197 //--------------------------------------------------------------------
198 bool clitk::ImageToImageGenericFilterBase::CheckPixelType() {
199 return CheckPixelType(mPixelTypeName);
201 //--------------------------------------------------------------------
204 //--------------------------------------------------------------------
205 void clitk::ImageToImageGenericFilterBase::PrintAvailableImageTypes() {
206 std::cout << "The filter <" << mFilterName << "> manages ";
207 for(unsigned int i=0; i<mListOfAllowedDimension.size(); i++) {
208 std::cout << mListOfAllowedDimension[i] << "D ";
210 std::cout << "images, with pixel types: ";
211 for(unsigned int i=0; i<mListOfAllowedPixelType.size(); i++) {
212 std::cout << mListOfAllowedPixelType[i] << " ";
214 std::cout << std::endl;
216 //--------------------------------------------------------------------
219 //--------------------------------------------------------------------
220 void clitk::ImageToImageGenericFilterBase::ImageTypeError() {
221 std::cerr << "**Error** The filter <" << mFilterName << "> is not available for "
222 << mDim << "D images with pixel="
223 << mPixelTypeName << "." << std::endl;
224 std::cerr << "**Error** Allowed image dim: \t";
225 for(unsigned int i=0; i<mListOfAllowedDimension.size(); i++) {
226 std::cerr << mListOfAllowedDimension[i] << " ";
228 std::cerr << std::endl << "**Error** Allowed pixel types: \t";
229 for(unsigned int i=0; i<mListOfAllowedPixelType.size(); i++) {
230 std::cerr << mListOfAllowedPixelType[i] << " ";
232 std::cerr << std::endl;
235 //--------------------------------------------------------------------
238 //--------------------------------------------------------------------
239 void clitk::ImageToImageGenericFilterBase::SetImageTypeError() {
240 std::cerr << "TODO ! " << std::endl;
243 //--------------------------------------------------------------------