From 629877a44ad7abe7f8d0c1a7f59f44f089b1245b Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@orfeo-toolbox.org> Date: Fri, 4 Feb 2011 10:47:27 +0100 Subject: [PATCH] ENH: Output should be in milli-reflectance --- Radiometry/otbOpticalCalibration.cxx | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Radiometry/otbOpticalCalibration.cxx b/Radiometry/otbOpticalCalibration.cxx index fbc2351467..508b45d675 100644 --- a/Radiometry/otbOpticalCalibration.cxx +++ b/Radiometry/otbOpticalCalibration.cxx @@ -30,7 +30,7 @@ #include "otbStreamingImageFileWriter.h" #include "otbStandardWriterWatcher.h" #include "otbPipelineMemoryPrintCalculator.h" - +#include "otbMultiplyByScalarImageFilter.h" namespace otb { @@ -38,7 +38,7 @@ namespace otb int OpticalCalibration::Describe(ApplicationDescriptor* descriptor) { descriptor->SetName("OpticalCalibration"); - descriptor->SetDescription("Perform optical calibration TOA/TOC"); + descriptor->SetDescription("Perform optical calibration TOA/TOC. Output image is in milli-reflectance."); descriptor->AddInputImage(); descriptor->AddOutputImage(); descriptor->AddOptionNParams("Level", @@ -51,14 +51,16 @@ int OpticalCalibration::Describe(ApplicationDescriptor* descriptor) int OpticalCalibration::Execute(otb::ApplicationOptionsResult* parseResult) { typedef otb::VectorImage<unsigned short int, 2> ImageType; + typedef otb::VectorImage<float,2> FloatImageType; typedef otb::ImageFileReader<ImageType> ReaderType; typedef otb::StreamingImageFileWriter<ImageType> WriterType; - typedef ImageToLuminanceImageFilter<ImageType, ImageType> ImageToLuminanceImageFilterType; - typedef LuminanceToReflectanceImageFilter<ImageType, - ImageType> LuminanceToReflectanceImageFilterType; - typedef ReflectanceToSurfaceReflectanceImageFilter<ImageType, - ImageType> ReflectanceToSurfaceReflectanceImageFilterType; + typedef ImageToLuminanceImageFilter<ImageType, FloatImageType> ImageToLuminanceImageFilterType; + typedef LuminanceToReflectanceImageFilter<FloatImageType, + FloatImageType> LuminanceToReflectanceImageFilterType; + typedef otb::MultiplyByScalarImageFilter<FloatImageType,ImageType> ScaleFilterType; + typedef ReflectanceToSurfaceReflectanceImageFilter<FloatImageType, + FloatImageType> ReflectanceToSurfaceReflectanceImageFilterType; typedef otb::PipelineMemoryPrintCalculator MemoryCalculatorType; // calibration process @@ -77,10 +79,14 @@ int OpticalCalibration::Execute(otb::ApplicationOptionsResult* parseResult) luminanceToReflectanceFilter->SetInput(imageToLuminanceFilter->GetOutput()); reflectanceToSurfaceReflectanceFilter->SetInput(luminanceToReflectanceFilter->GetOutput()); + ScaleFilterType::Pointer scaleFilter = ScaleFilterType::New(); + scaleFilter->SetInput(luminanceToReflectanceFilter->GetOutput()); + scaleFilter->SetCoef(1000.); + //Instantiate the writer WriterType::Pointer writer = WriterType::New(); writer->SetFileName(parseResult->GetOutputImage()); - writer->SetInput(luminanceToReflectanceFilter->GetOutput()); + writer->SetInput(scaleFilter->GetOutput()); writer->SetWriteGeomFile(true); //Instantiate the pipeline memory print estimator -- GitLab