83 int main(
int argc,
char *argv[])
87 std::cerr <<
"Missing Parameters " << std::endl;
88 std::cerr <<
"Usage: " << argv[0];
89 std::cerr <<
" inputMultiSpectralImage inputMultiSpectralInterpolatedImage "
90 <<
"inputPanchromatiqueImage outputImage outputImagePrinted "
91 <<
"msPrinted msiPrinted panchroPrinted lambda"
105 typedef double InternalPixelType;
106 const unsigned int Dimension = 2;
111 typedef double OutputPixelType;
120 ReaderVectorType::Pointer multiSpectReader = ReaderVectorType::New();
121 ReaderVectorType::Pointer multiSpectInterpReader = ReaderVectorType::New();
122 ReaderType::Pointer panchroReader = ReaderType::New();
123 WriterType::Pointer writer = WriterType::New();
125 multiSpectReader->SetFileName(argv[1]);
126 multiSpectInterpReader->SetFileName(argv[2]);
127 panchroReader->SetFileName(argv[3]);
128 writer->SetFileName(argv[4]);
142 BayesianFusionFilterType;
153 BayesianFusionFilterType::Pointer bayesianFilter =
154 BayesianFusionFilterType::New();
165 bayesianFilter->SetMultiSpect(multiSpectReader->GetOutput());
166 bayesianFilter->SetMultiSpectInterp(multiSpectInterpReader->GetOutput());
167 bayesianFilter->SetPanchro(panchroReader->GetOutput());
169 writer->SetInput(bayesianFilter->GetOutput());
181 bayesianFilter->SetLambda(atof(argv[9]));
199 std::cerr <<
"Exception caught !" << std::endl;
200 std::cerr << excep << std::endl;
205 typedef unsigned char OutputPixelType2;
209 OutputVectorImageType>
212 OutputVectorImageType>
213 VectorRescalerBayesianType;
216 PanchroOutputImageType;
218 MultiSpecImageType> CasterType;
221 ChannelExtractorType;
226 multiSpectInterpReader->GenerateOutputInformation();
228 CasterType::Pointer cast = CasterType::New();
229 cast->SetInput(panchroReader->GetOutput());
231 OutputVectorImageType::PixelType minimum, maximum;
232 minimum.SetSize(multiSpectReader->GetOutput()->GetNumberOfComponentsPerPixel());
233 maximum.SetSize(multiSpectReader->GetOutput()->GetNumberOfComponentsPerPixel());
237 VectorRescalerType::Pointer vrms = VectorRescalerType::New();
238 VectorRescalerType::Pointer vrmsi = VectorRescalerType::New();
239 VectorRescalerBayesianType::Pointer vrb = VectorRescalerBayesianType::New();
241 vrms->SetInput(multiSpectReader->GetOutput());
242 vrms->SetOutputMinimum(minimum);
243 vrms->SetOutputMaximum(maximum);
244 vrms->SetClampThreshold(0.01);
246 vrmsi->SetInput(multiSpectInterpReader->GetOutput());
247 vrmsi->SetOutputMinimum(minimum);
248 vrmsi->SetOutputMaximum(maximum);
249 vrmsi->SetClampThreshold(0.01);
251 vrb->SetInput(bayesianFilter->GetOutput());
252 vrb->SetOutputMinimum(minimum);
253 vrb->SetOutputMaximum(maximum);
254 vrb->SetClampThreshold(0.01);
256 VectorRescalerType::Pointer rp = VectorRescalerType::New();
257 rp->SetInput(cast->GetOutput());
262 rp->SetOutputMinimum(minimum);
263 rp->SetOutputMaximum(maximum);
264 rp->SetClampThreshold(0.01);
266 ChannelExtractorType::Pointer selecterms = ChannelExtractorType::New();
267 ChannelExtractorType::Pointer selectermsi = ChannelExtractorType::New();
268 ChannelExtractorType::Pointer selecterf = ChannelExtractorType::New();
270 selecterms->SetInput(vrms->GetOutput());
272 selecterms->SetChannel(2);
273 selecterms->SetChannel(3);
274 selecterms->SetChannel(4);
276 selectermsi->SetInput(vrmsi->GetOutput());
278 selectermsi->SetChannel(2);
279 selectermsi->SetChannel(3);
280 selectermsi->SetChannel(4);
282 selecterf->SetInput(vrb->GetOutput());
284 selecterf->SetChannel(2);
285 selecterf->SetChannel(3);
286 selecterf->SetChannel(4);
288 VectorWriterType::Pointer vectWriterms = VectorWriterType::New();
289 VectorWriterType::Pointer vectWritermsi = VectorWriterType::New();
290 VectorWriterType::Pointer vectWriterf = VectorWriterType::New();
291 VectorWriterType::Pointer vectWriterp = VectorWriterType::New();
293 vectWriterf->SetFileName(argv[5]);
294 vectWriterf->SetInput(selecterf->GetOutput());
295 vectWriterms->SetFileName(argv[6]);
296 vectWriterms->SetInput(selecterms->GetOutput());
297 vectWritermsi->SetFileName(argv[7]);
298 vectWritermsi->SetInput(selectermsi->GetOutput());
299 vectWriterp->SetFileName(argv[8]);
300 vectWriterp->SetInput(rp->GetOutput());
304 vectWriterms->Update();
305 vectWritermsi->Update();
306 vectWriterf->Update();
307 vectWriterp->Update();
311 std::cerr <<
"Exception caught !" << std::endl;
312 std::cerr << excep << std::endl;
316 std::cout <<
"Unknown exception !" << std::endl;