Skip to content
Snippets Groups Projects
Commit 528b27f3 authored by Cyrille Valladeau's avatar Cyrille Valladeau
Browse files

Suppression d'un "Romain Sensor Model"...

parent 6a50d396
No related branches found
No related tags found
No related merge requests found
......@@ -23,8 +23,8 @@
*
* PURPOSE:
*
* Application pour projeter une r�gion d'une image en coordonn�es g�ographiques
* en utilisant un Interpolator+regionextractor et un Iterator.
* Appliaction to project a geographic coordinated image region
* using an Interpolator, a Regionextractor and an Iteratorregion.
*
*/
......@@ -59,120 +59,87 @@ int otbRegionProjectionResampler( int argc, char* argv[] )
{
try
{
ossimInit::instance()->initialize(argc, argv);
if(argc!=10)
ossimInit::instance()->initialize(argc, argv);
if(argc!=10)
{
std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>"
<< std::endl;
std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" << std::endl;
return EXIT_FAILURE;
return EXIT_FAILURE;
}
typedef otb::Image<unsigned char, 2> CharImageType;
typedef otb::Image<double, 2> ImageType;
typedef otb::ImageFileReader<ImageType> ReaderType;
// typedef otb::ImageFileWriter<ImageType> WriterType;
typedef otb::StreamingImageFileWriter<ImageType> WriterType;
typedef otb::InverseSensorModel<double> ModelType;
typedef itk::LinearInterpolateImageFunction<
ImageType, double > InterpolatorType;
typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>
RescalerType;
// typedef itk::ResampleImageFilter< ImageType, ImageType >
// ResamplerType;
typedef otb::StreamingResampleImageFilter< ImageType, ImageType >
ResamplerType;
typedef itk::TranslationTransform<double,2> TransformType;
typedef otb::CompositeTransform<ModelType,TransformType> CompositeType;
ImageType::IndexType start;
ImageType::SizeType size;
ImageType::SpacingType spacing;
ImageType::PointType origin;
ImageType::RegionType region;
//Allocate pointer
ModelType::Pointer model= ModelType::New();
ReaderType::Pointer reader=ReaderType::New();
WriterType::Pointer writer=WriterType::New();
InterpolatorType::Pointer interpolator=InterpolatorType::New();
RescalerType::Pointer rescaler=RescalerType::New();
ResamplerType::Pointer resampler = ResamplerType::New();
// TransformType::Pointer translationTransform = TransformType::New();
// CompositeType::Pointer compositeTransform = CompositeType::New();
// Set parameters ...
reader->SetFileName(argv[1]);
writer->SetFileName(argv[2]);
rescaler->SetOutputMinimum(0);
rescaler->SetOutputMaximum(255);
// Read meta data (ossimKeywordlist)
reader->GenerateOutputInformation();
ImageType::ConstPointer inputImage = reader->GetOutput();
// otb::ImageKeywordlist ImageKeyworlist = reader->GetOutput()->GetImageKeywordlist();
model->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
/* compositeTransform->SetFirstTransform(model);
itk::Vector<double,2> offset;
offset[0]=atof(argv[10]);
offset[1]=atof(argv[11]);
translationTransform->SetOffset(offset);
compositeTransform->SetSecondTransform(translationTransform);*/
start[0]=0;
start[1]=0;
size[0]=atoi(argv[5]); //Taille en X.
size[1]=atoi(argv[6]); //Taille en Y.
region.SetSize(size);
region.SetIndex(start);
spacing[0]=atof(argv[8]);
spacing[1]=atof(argv[9]);
origin[0]=strtod(argv[3], NULL); //longitude de l'origine.
origin[1]=strtod(argv[4], NULL); //latitude de l'origine.
/*
spacing = inputImage->GetSpacing();
origin = inputImage->GetOrigin();
// region = inputImage->GetBufferedRegion();
*/
std::cout << "Origin " << origin << std::endl;
resampler->SetOutputSpacing( spacing );
resampler->SetOutputOrigin( origin );
resampler->SetSize( region.GetSize() );
resampler->SetOutputStartIndex( start /*reader->GetOutput()->GetBufferedRegion().GetIndex() */ );
//Connect pipeline
resampler->SetInput( reader->GetOutput() );
resampler->SetTransform( model );
resampler->SetInterpolator( interpolator );
otbGenericMsgDebugMacro(<< "Romain Sensor Model :" << model);
// otbGenericMsgDebugMacro(<< "Resampler initialized !! " );
// resampler->Update();
// rescaler->SetInput( resampler->GetOutput() );
writer->SetInput(resampler->GetOutput());
// writer->SetNumberOfStreamDivisions(1000);
// writer->SetTilingStreamDivisions(atoi(argv[7]));
writer->SetTilingStreamDivisions(10);
otbGenericMsgDebugMacro(<< "Update writer ..." );
writer->Update();
typedef otb::Image<unsigned char, 2> CharImageType;
typedef otb::Image<double, 2> ImageType;
typedef otb::ImageFileReader<ImageType> ReaderType;
typedef otb::StreamingImageFileWriter<ImageType> WriterType;
typedef otb::InverseSensorModel<double> ModelType;
typedef itk::LinearInterpolateImageFunction< ImageType, double > InterpolatorType;
typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType;
typedef otb::StreamingResampleImageFilter< ImageType, ImageType > ResamplerType;
typedef itk::TranslationTransform<double,2> TransformType;
typedef otb::CompositeTransform<ModelType,TransformType> CompositeType;
ImageType::IndexType start;
ImageType::SizeType size;
ImageType::SpacingType spacing;
ImageType::PointType origin;
ImageType::RegionType region;
//Allocate pointer
ModelType::Pointer model = ModelType::New();
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
InterpolatorType::Pointer interpolator = InterpolatorType::New();
RescalerType::Pointer rescaler = RescalerType::New();
ResamplerType::Pointer resampler = ResamplerType::New();
// Set parameters ...
reader->SetFileName(argv[1]);
writer->SetFileName(argv[2]);
rescaler->SetOutputMinimum(0);
rescaler->SetOutputMaximum(255);
// Read meta data (ossimKeywordlist)
reader->GenerateOutputInformation();
ImageType::ConstPointer inputImage = reader->GetOutput();
model->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
start[0]=0;
start[1]=0;
size[0]=atoi(argv[5]); // X size.
size[1]=atoi(argv[6]); // Y size.
region.SetSize(size);
region.SetIndex(start);
spacing[0]=atof(argv[8]);
spacing[1]=atof(argv[9]);
origin[0]=strtod(argv[3], NULL); // origin longitude.
origin[1]=strtod(argv[4], NULL); // origin latitude.
otbGenericMsgDebugMacro(<< "Origin " << origin );
resampler->SetOutputSpacing( spacing );
resampler->SetOutputOrigin( origin );
resampler->SetSize( region.GetSize() );
resampler->SetOutputStartIndex( start );
//Connect pipeline
resampler->SetInput( reader->GetOutput() );
resampler->SetTransform( model );
resampler->SetInterpolator( interpolator );
otbGenericMsgDebugMacro(<< "Sensor Model :" << model);
writer->SetInput(resampler->GetOutput());
writer->SetTilingStreamDivisions(10);
otbGenericMsgDebugMacro(<< "Update writer ..." );
writer->Update();
}
catch( itk::ExceptionObject & err )
{
std::cout << "Exception itk::ExceptionObject levee !" << std::endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment