48 int main(
int argc,
char * argv[])
52 std::cerr <<
"Usage: " << argv[0];
53 std::cerr <<
"inputFileName outputFileName outputPrettyFilename1 outputPrettyFilename2 outputPrettyFilename3 EstimatenumberOfEndmembers" << std::endl;
57 const char * infname = argv[1];
58 const char * outfname = argv[2];
59 const unsigned int estimateNumberOfEndmembers = atoi(argv[6]);
60 const unsigned int Dimension = 2;
62 typedef double PixelType;
94 ReaderType::Pointer reader = ReaderType::New();
95 reader->SetFileName(infname);
98 reader->UpdateOutputInformation();
110 RescalerType::Pointer rescaler = RescalerType::New();
111 rescaler->SetInput(reader->GetOutput());
113 ImageType::PixelType minPixel, maxPixel;
114 minPixel.SetSize(reader->GetOutput()->GetNumberOfComponentsPerPixel());
115 maxPixel.SetSize(reader->GetOutput()->GetNumberOfComponentsPerPixel());
119 rescaler->SetOutputMinimum(minPixel);
120 rescaler->SetOutputMaximum(maxPixel);
134 VCAFilterType::Pointer vca = VCAFilterType::New();
136 vca->SetNumberOfEndmembers(estimateNumberOfEndmembers);
137 vca->SetInput(rescaler->GetOutput());
148 VectorImageToMatrixImageFilterType::Pointer
149 endMember2Matrix = VectorImageToMatrixImageFilterType::New();
150 endMember2Matrix->SetInput(vca->GetOutput());
151 endMember2Matrix->Update();
164 UCLSUnmixingFilterType::Pointer
165 unmixer = UCLSUnmixingFilterType::New();
166 unmixer->SetInput(rescaler->GetOutput());
167 unmixer->SetMatrix(endMember2Matrix->GetMatrix());
170 unmixer->SetNumberOfThreads(1);
180 WriterType::Pointer writer = WriterType::New();
181 writer->SetInput(unmixer->GetOutput());
182 writer->SetFileName(outfname);
208 OutputImageType> PrettyRescalerType;
211 for (
unsigned int cpt = 0; cpt < 3; ++cpt)
213 ExtractROIFilterType::Pointer extractROIFilter = ExtractROIFilterType::New();
214 PrettyRescalerType::Pointer prettyRescaler = PrettyRescalerType::New();
215 WriterType2::Pointer writer2 = WriterType2::New();
217 extractROIFilter->SetInput(unmixer->GetOutput());
218 extractROIFilter->SetChannel(cpt + 1);
220 prettyRescaler->SetInput(extractROIFilter->GetOutput());
221 prettyRescaler->SetOutputMinimum(0);
222 prettyRescaler->SetOutputMaximum(255);
224 writer2->SetInput(prettyRescaler->GetOutput());
225 writer2->SetFileName(argv[cpt + 3]);