diff --git a/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx b/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx index 88329ba83c6e8e26ccfd51b0a4f5856ffb521967..180b1ac8158058deb1137292abd5c51e13bbf7e0 100755 --- a/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx +++ b/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx @@ -45,59 +45,37 @@ int otbCreateInverseForwardSensorModel( int argc, char* argv[] ) { - try - { - ossimInit::instance()->initialize(argc, argv); + ossimInit::instance()->initialize(argc, argv); - if(argc!=2) - { - std::cout << argv[0] <<" <input filename>" << std::endl; - return EXIT_FAILURE; - } + if(argc!=2) + { + std::cout << argv[0] <<" <input filename>" << std::endl; + return EXIT_FAILURE; + } - typedef otb::Image<unsigned int, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - typedef otb::InverseSensorModel<double> InverseModelType; - typedef otb::ForwardSensorModel<double> ForwardModelType; - - //Allocate pointer - InverseModelType::Pointer inverse_model= InverseModelType::New(); - ForwardModelType::Pointer forward_model= ForwardModelType::New(); - ReaderType::Pointer reader=ReaderType::New(); + typedef otb::Image<unsigned int, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::InverseSensorModel<double> InverseModelType; + typedef otb::ForwardSensorModel<double> ForwardModelType; + + //Allocate pointer + InverseModelType::Pointer inverse_model= InverseModelType::New(); + ForwardModelType::Pointer forward_model= ForwardModelType::New(); + ReaderType::Pointer reader=ReaderType::New(); - // Set parameters ... - reader->SetFileName(argv[1]); - - // Read meta data (ossimKeywordlist) - reader->GenerateOutputInformation(); - ImageType::Pointer inputImage = reader->GetOutput(); - - //Leve une exception si le model n'est pas créé - otbGenericMsgDebugMacro(<< "Inverse model creation..." ); - inverse_model->SetImageGeometry(inputImage->GetImageKeywordlist()); - otbGenericMsgDebugMacro(<< "Foreward model creation..." ); - forward_model->SetImageGeometry(inputImage->GetImageKeywordlist()); - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } - return EXIT_SUCCESS; + // Set parameters ... + reader->SetFileName(argv[1]); + // Read meta data (ossimKeywordlist) + reader->GenerateOutputInformation(); + ImageType::Pointer inputImage = reader->GetOutput(); + //Leve une exception si le model n'est pas créé + otbGenericMsgDebugMacro(<< "Inverse model creation..." ); + inverse_model->SetImageGeometry(inputImage->GetImageKeywordlist()); + otbGenericMsgDebugMacro(<< "Foreward model creation..." ); + forward_model->SetImageGeometry(inputImage->GetImageKeywordlist()); -}//Fin main() - + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx b/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx index 159321c57dd9226d6d6da77f3097a24f812cfce1..2b1bb4c9c2a2ce82a3c60d1571d81c56ebdd943d 100755 --- a/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx +++ b/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx @@ -57,64 +57,45 @@ int otbCreateProjectionWithOSSIM( int argc, char* argv[] ) { - try - { + ossimInit::instance()->initialize(argc, argv); - ossimInit::instance()->initialize(argc, argv); + if(argc!=2) + { + std::cout << argv[0] <<" <input filename> " << std::endl; - if(argc!=2) - { - std::cout << argv[0] <<" <input filename> " << std::endl; - - return EXIT_FAILURE; - } + return EXIT_FAILURE; + } - otbGenericMsgDebugMacro(<< "Creating handler..." ); - ossimImageHandler *handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(argv[1])); - if(!handler) - { - itkGenericExceptionMacro(<<"Unable to open input image "<<argv[1]); - } + otbGenericMsgDebugMacro(<< "Creating handler..." ); + ossimImageHandler *handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(argv[1])); + if(!handler) + { + itkGenericExceptionMacro(<<"Unable to open input image "<<argv[1]); + } - ossimKeywordlist geom; - otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." ); - handler->getImageGeometry(geom); - ossimGpt ossimGPoint(0,0); - ossimDpt ossimDPoint; - otbGenericMsgDebugMacro(<< "Creating projection..." ); - ossimProjection * model = NULL; - model = ossimProjectionFactoryRegistry::instance()->createProjection(geom); - if( model == NULL) - { - itkGenericExceptionMacro(<<"Invalid Model * == NULL !"); - } - - otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." ); - ossimRefPtr<ossimProjection> ptrmodel = model; - if( ptrmodel.valid() == false ) - { - itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !"); - } - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + ossimKeywordlist geom; + otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." ); + handler->getImageGeometry(geom); + ossimGpt ossimGPoint(0,0); + ossimDpt ossimDPoint; + otbGenericMsgDebugMacro(<< "Creating projection..." ); + ossimProjection * model = NULL; + model = ossimProjectionFactoryRegistry::instance()->createProjection(geom); + if( model == NULL) + { + itkGenericExceptionMacro(<<"Invalid Model * == NULL !"); + } + + otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." ); + ossimRefPtr<ossimProjection> ptrmodel = model; + if( ptrmodel.valid() == false ) + { + itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !"); + } + + return EXIT_SUCCESS; - }//Fin main() +} diff --git a/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx b/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx index c7bbace709a1b259b9abf187db8034032e990a44..23364b0080377ba2d9a81a067ee96b349a64e023 100755 --- a/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx +++ b/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx @@ -57,80 +57,61 @@ int otbCreateProjectionWithOTB( int argc, char* argv[] ) { - try - { + ossimInit::instance()->initialize(argc, argv); - ossimInit::instance()->initialize(argc, argv); + if(argc!=2) + { + std::cout << argv[0] <<" <input filename> " << std::endl; - if(argc!=2) - { - std::cout << argv[0] <<" <input filename> " << std::endl; - - return EXIT_FAILURE; - } + return EXIT_FAILURE; + } - typedef otb::Image<unsigned int, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - ReaderType::Pointer reader=ReaderType::New(); - reader->SetFileName(argv[1]); - - //Read meta data (ossimKeywordlist) - reader->GenerateOutputInformation(); - - otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." ); - otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist(); - - ossimKeywordlist geom; - otb_image_keywordlist.convertToOSSIMKeywordlist(geom); - - otbGenericMsgDebugMacro(<< "ossim Keywordlist:"<<geom ); - -/* - typedef otb::InverseSensorModel<double> ModelType; - ModelType::Pointer model= ModelType::New(); - otbGenericMsgDebugMacro(<< "Model set geometry " ); - model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau. - if(!model) - { - otbGenericMsgDebugMacro(<< "Unable to create a model"); - return 1; - } -*/ - ossimGpt ossimGPoint(0,0); - ossimDpt ossimDPoint; - ossimProjection * model = NULL; - otbGenericMsgDebugMacro(<< "Creating projection..." ); - model = ossimProjectionFactoryRegistry::instance()->createProjection(geom); - if( model == NULL) - { - itkGenericExceptionMacro(<<"Invalid Model * == NULL !"); - } - - otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." ); - ossimRefPtr<ossimProjection> ptrmodel = model; - if( ptrmodel.valid() == false ) - { - itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !"); - } - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + typedef otb::Image<unsigned int, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + ReaderType::Pointer reader=ReaderType::New(); + reader->SetFileName(argv[1]); + + //Read meta data (ossimKeywordlist) + reader->GenerateOutputInformation(); + + otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." ); + otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist(); + + ossimKeywordlist geom; + otb_image_keywordlist.convertToOSSIMKeywordlist(geom); + + otbGenericMsgDebugMacro(<< "ossim Keywordlist:"<<geom ); + + /* + typedef otb::InverseSensorModel<double> ModelType; + ModelType::Pointer model= ModelType::New(); + otbGenericMsgDebugMacro(<< "Model set geometry " ); + model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau. + if(!model) + { + otbGenericMsgDebugMacro(<< "Unable to create a model"); + return 1; + } + */ + ossimGpt ossimGPoint(0,0); + ossimDpt ossimDPoint; + ossimProjection * model = NULL; + otbGenericMsgDebugMacro(<< "Creating projection..." ); + model = ossimProjectionFactoryRegistry::instance()->createProjection(geom); + if( model == NULL) + { + itkGenericExceptionMacro(<<"Invalid Model * == NULL !"); + } + + otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." ); + ossimRefPtr<ossimProjection> ptrmodel = model; + if( ptrmodel.valid() == false ) + { + itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !"); + } + + return EXIT_SUCCESS; - }//Fin main() +} diff --git a/Testing/Code/Projections/otbMapProjectionsNew.cxx b/Testing/Code/Projections/otbMapProjectionsNew.cxx index 1425d7f37af40167e17df18aaddb34dbd4c11294..afe9f9e67f7f218efab47b22f46a64d30ff4c377 100755 --- a/Testing/Code/Projections/otbMapProjectionsNew.cxx +++ b/Testing/Code/Projections/otbMapProjectionsNew.cxx @@ -26,85 +26,67 @@ #include "otbMapProjections.h" int otbMapProjectionsNew( int argc, char* argv[] ) -{ - try - { - otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New(); - otb::AlbersForwardProjection::Pointer lAlbersProjection2 = otb::AlbersForwardProjection::New(); - otb::AzimEquDistInverseProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistInverseProjection::New(); - otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection2 = otb::AzimEquDistForwardProjection::New(); -//Comment for OTB 2.2.0 because OSSIM error code -> generate Exception Fault on VS 7.1 only on Debug mode. -// otb::BngInverseProjection::Pointer lBngProjection = otb::BngInverseProjection::New(); -// otb::BngForwardProjection::Pointer lBngProjection2 = otb::BngForwardProjection::New(); - otb::BonneInverseProjection::Pointer lBonneProjection = otb::BonneInverseProjection::New(); - otb::BonneForwardProjection::Pointer lBonneProjection2 = otb::BonneForwardProjection::New(); - otb::CadrgInverseProjection::Pointer lCadrgProjection = otb::CadrgInverseProjection::New(); - otb::CadrgForwardProjection::Pointer lCadrgProjection2 = otb::CadrgForwardProjection::New(); - otb::CassiniInverseProjection::Pointer lCassiniProjection = otb::CassiniInverseProjection::New(); - otb::CassiniForwardProjection::Pointer lCassiniProjection2 = otb::CassiniForwardProjection::New(); - otb::CylEquAreaInverseProjection::Pointer lCylEquAreaProjection = otb::CylEquAreaInverseProjection::New(); - otb::CylEquAreaForwardProjection::Pointer lCylEquAreaProjection2 = otb::CylEquAreaForwardProjection::New(); - otb::Eckert4InverseProjection::Pointer lEckert4Projection = otb::Eckert4InverseProjection::New(); - otb::Eckert4ForwardProjection::Pointer lEckert4Projection2 = otb::Eckert4ForwardProjection::New(); - otb::Eckert6InverseProjection::Pointer lEckert6Projection = otb::Eckert6InverseProjection::New(); - otb::Eckert6ForwardProjection::Pointer lEckert6Projection2 = otb::Eckert6ForwardProjection::New(); - otb::GnomonicInverseProjection::Pointer lGnomonicProjection = otb::GnomonicInverseProjection::New(); - otb::GnomonicForwardProjection::Pointer lGnomonicProjection2 = otb::GnomonicForwardProjection::New(); - otb::LambertConformalConicInverseProjection::Pointer lLambertConformalConicProjection = otb::LambertConformalConicInverseProjection::New(); - otb::LambertConformalConicForwardProjection::Pointer lLambertConformalConicProjection2 = otb::LambertConformalConicForwardProjection::New(); - otb::LlxyInverseProjection::Pointer lLlxyProjection = otb::LlxyInverseProjection::New(); - otb::LlxyForwardProjection::Pointer lLlxyProjection2 = otb::LlxyForwardProjection::New(); - otb::EquDistCylInverseProjection::Pointer lEquDistCylProjection = otb::EquDistCylInverseProjection::New(); - otb::EquDistCylForwardProjection::Pointer lEquDistCylProjection2 = otb::EquDistCylForwardProjection::New(); - otb::MercatorInverseProjection::Pointer lMercatorProjection = otb::MercatorInverseProjection::New(); - otb::MercatorForwardProjection::Pointer lMercatorProjection2 = otb::MercatorForwardProjection::New(); - otb::MillerInverseProjection::Pointer lMillerProjection = otb::MillerInverseProjection::New(); - otb::MillerForwardProjection::Pointer lMillerProjection2 = otb::MillerForwardProjection::New(); - otb::MollweidInverseProjection::Pointer lMollweidProjection = otb::MollweidInverseProjection::New(); - otb::MollweidForwardProjection::Pointer lMollweidProjection2 = otb::MollweidForwardProjection::New(); - otb::NewZealandMapGridInverseProjection::Pointer lNewZealandMapGridProjection = otb::NewZealandMapGridInverseProjection::New(); - otb::NewZealandMapGridForwardProjection::Pointer lNewZealandMapGridProjection2 = otb::NewZealandMapGridForwardProjection::New(); - otb::ObliqueMercatorInverseProjection::Pointer lObliqueMercatorProjection = otb::ObliqueMercatorInverseProjection::New(); - otb::ObliqueMercatorForwardProjection::Pointer lObliqueMercatorProjection2 = otb::ObliqueMercatorForwardProjection::New(); - otb::OrthoGraphicInverseProjection::Pointer lOrthoGraphicProjection = otb::OrthoGraphicInverseProjection::New(); - otb::OrthoGraphicForwardProjection::Pointer lOrthoGraphicProjection2 = otb::OrthoGraphicForwardProjection::New(); - otb::PolarStereoInverseProjection::Pointer lPolarStereoProjection = otb::PolarStereoInverseProjection::New(); - otb::PolarStereoForwardProjection::Pointer lPolarStereoProjection2 = otb::PolarStereoForwardProjection::New(); - otb::PolyconicInverseProjection::Pointer lPolyconicProjection = otb::PolyconicInverseProjection::New(); - otb::PolyconicForwardProjection::Pointer lPolyconicProjection2 = otb::PolyconicForwardProjection::New(); - otb::SinusoidalInverseProjection::Pointer lSinusoidalProjection = otb::SinusoidalInverseProjection::New(); - otb::SinusoidalForwardProjection::Pointer lSinusoidalProjection2 = otb::SinusoidalForwardProjection::New(); - otb::SpaceObliqueMercatorInverseProjection::Pointer lSpaceObliqueMercatorProjection = otb::SpaceObliqueMercatorInverseProjection::New(); - otb::SpaceObliqueMercatorForwardProjection::Pointer lSpaceObliqueMercatorProjection2 = otb::SpaceObliqueMercatorForwardProjection::New(); - otb::StereographicInverseProjection::Pointer lStereographicProjection = otb::StereographicInverseProjection::New(); - otb::StereographicForwardProjection::Pointer lStereographicProjection2 = otb::StereographicForwardProjection::New(); - otb::TransCylEquAreaInverseProjection::Pointer lTransCylEquAreaProjection = otb::TransCylEquAreaInverseProjection::New(); - otb::TransCylEquAreaForwardProjection::Pointer lTransCylEquAreaProjection2 = otb::TransCylEquAreaForwardProjection::New(); - otb::TransMercatorInverseProjection::Pointer lTransMercatorProjection = otb::TransMercatorInverseProjection::New(); - otb::TransMercatorForwardProjection::Pointer lTransMercatorProjection2 = otb::TransMercatorForwardProjection::New(); - otb::UpsInverseProjection::Pointer lUpsProjection = otb::UpsInverseProjection::New(); - otb::UpsForwardProjection::Pointer lUpsProjection2 = otb::UpsForwardProjection::New(); - otb::UtmInverseProjection::Pointer lUtmProjection = otb::UtmInverseProjection::New(); - otb::UtmForwardProjection::Pointer lUtmProjection2 = otb::UtmForwardProjection::New(); - otb::VanDerGrintenInverseProjection::Pointer lVanDerGrintenProjection = otb::VanDerGrintenInverseProjection::New(); - otb::VanDerGrintenForwardProjection::Pointer lVanDerGrintenProjection2 = otb::VanDerGrintenForwardProjection::New(); - - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } - // Software Guide : EndCodeSnippet - -//#endif +{ + otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New(); + otb::AlbersForwardProjection::Pointer lAlbersProjection2 = otb::AlbersForwardProjection::New(); + otb::AzimEquDistInverseProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistInverseProjection::New(); + otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection2 = otb::AzimEquDistForwardProjection::New(); + //Comment for OTB 2.2.0 because OSSIM error code -> generate Exception Fault on VS 7.1 only on Debug mode. + // otb::BngInverseProjection::Pointer lBngProjection = otb::BngInverseProjection::New(); + // otb::BngForwardProjection::Pointer lBngProjection2 = otb::BngForwardProjection::New(); + otb::BonneInverseProjection::Pointer lBonneProjection = otb::BonneInverseProjection::New(); + otb::BonneForwardProjection::Pointer lBonneProjection2 = otb::BonneForwardProjection::New(); + otb::CadrgInverseProjection::Pointer lCadrgProjection = otb::CadrgInverseProjection::New(); + otb::CadrgForwardProjection::Pointer lCadrgProjection2 = otb::CadrgForwardProjection::New(); + otb::CassiniInverseProjection::Pointer lCassiniProjection = otb::CassiniInverseProjection::New(); + otb::CassiniForwardProjection::Pointer lCassiniProjection2 = otb::CassiniForwardProjection::New(); + otb::CylEquAreaInverseProjection::Pointer lCylEquAreaProjection = otb::CylEquAreaInverseProjection::New(); + otb::CylEquAreaForwardProjection::Pointer lCylEquAreaProjection2 = otb::CylEquAreaForwardProjection::New(); + otb::Eckert4InverseProjection::Pointer lEckert4Projection = otb::Eckert4InverseProjection::New(); + otb::Eckert4ForwardProjection::Pointer lEckert4Projection2 = otb::Eckert4ForwardProjection::New(); + otb::Eckert6InverseProjection::Pointer lEckert6Projection = otb::Eckert6InverseProjection::New(); + otb::Eckert6ForwardProjection::Pointer lEckert6Projection2 = otb::Eckert6ForwardProjection::New(); + otb::GnomonicInverseProjection::Pointer lGnomonicProjection = otb::GnomonicInverseProjection::New(); + otb::GnomonicForwardProjection::Pointer lGnomonicProjection2 = otb::GnomonicForwardProjection::New(); + otb::LambertConformalConicInverseProjection::Pointer lLambertConformalConicProjection = otb::LambertConformalConicInverseProjection::New(); + otb::LambertConformalConicForwardProjection::Pointer lLambertConformalConicProjection2 = otb::LambertConformalConicForwardProjection::New(); + otb::LlxyInverseProjection::Pointer lLlxyProjection = otb::LlxyInverseProjection::New(); + otb::LlxyForwardProjection::Pointer lLlxyProjection2 = otb::LlxyForwardProjection::New(); + otb::EquDistCylInverseProjection::Pointer lEquDistCylProjection = otb::EquDistCylInverseProjection::New(); + otb::EquDistCylForwardProjection::Pointer lEquDistCylProjection2 = otb::EquDistCylForwardProjection::New(); + otb::MercatorInverseProjection::Pointer lMercatorProjection = otb::MercatorInverseProjection::New(); + otb::MercatorForwardProjection::Pointer lMercatorProjection2 = otb::MercatorForwardProjection::New(); + otb::MillerInverseProjection::Pointer lMillerProjection = otb::MillerInverseProjection::New(); + otb::MillerForwardProjection::Pointer lMillerProjection2 = otb::MillerForwardProjection::New(); + otb::MollweidInverseProjection::Pointer lMollweidProjection = otb::MollweidInverseProjection::New(); + otb::MollweidForwardProjection::Pointer lMollweidProjection2 = otb::MollweidForwardProjection::New(); + otb::NewZealandMapGridInverseProjection::Pointer lNewZealandMapGridProjection = otb::NewZealandMapGridInverseProjection::New(); + otb::NewZealandMapGridForwardProjection::Pointer lNewZealandMapGridProjection2 = otb::NewZealandMapGridForwardProjection::New(); + otb::ObliqueMercatorInverseProjection::Pointer lObliqueMercatorProjection = otb::ObliqueMercatorInverseProjection::New(); + otb::ObliqueMercatorForwardProjection::Pointer lObliqueMercatorProjection2 = otb::ObliqueMercatorForwardProjection::New(); + otb::OrthoGraphicInverseProjection::Pointer lOrthoGraphicProjection = otb::OrthoGraphicInverseProjection::New(); + otb::OrthoGraphicForwardProjection::Pointer lOrthoGraphicProjection2 = otb::OrthoGraphicForwardProjection::New(); + otb::PolarStereoInverseProjection::Pointer lPolarStereoProjection = otb::PolarStereoInverseProjection::New(); + otb::PolarStereoForwardProjection::Pointer lPolarStereoProjection2 = otb::PolarStereoForwardProjection::New(); + otb::PolyconicInverseProjection::Pointer lPolyconicProjection = otb::PolyconicInverseProjection::New(); + otb::PolyconicForwardProjection::Pointer lPolyconicProjection2 = otb::PolyconicForwardProjection::New(); + otb::SinusoidalInverseProjection::Pointer lSinusoidalProjection = otb::SinusoidalInverseProjection::New(); + otb::SinusoidalForwardProjection::Pointer lSinusoidalProjection2 = otb::SinusoidalForwardProjection::New(); + otb::SpaceObliqueMercatorInverseProjection::Pointer lSpaceObliqueMercatorProjection = otb::SpaceObliqueMercatorInverseProjection::New(); + otb::SpaceObliqueMercatorForwardProjection::Pointer lSpaceObliqueMercatorProjection2 = otb::SpaceObliqueMercatorForwardProjection::New(); + otb::StereographicInverseProjection::Pointer lStereographicProjection = otb::StereographicInverseProjection::New(); + otb::StereographicForwardProjection::Pointer lStereographicProjection2 = otb::StereographicForwardProjection::New(); + otb::TransCylEquAreaInverseProjection::Pointer lTransCylEquAreaProjection = otb::TransCylEquAreaInverseProjection::New(); + otb::TransCylEquAreaForwardProjection::Pointer lTransCylEquAreaProjection2 = otb::TransCylEquAreaForwardProjection::New(); + otb::TransMercatorInverseProjection::Pointer lTransMercatorProjection = otb::TransMercatorInverseProjection::New(); + otb::TransMercatorForwardProjection::Pointer lTransMercatorProjection2 = otb::TransMercatorForwardProjection::New(); + otb::UpsInverseProjection::Pointer lUpsProjection = otb::UpsInverseProjection::New(); + otb::UpsForwardProjection::Pointer lUpsProjection2 = otb::UpsForwardProjection::New(); + otb::UtmInverseProjection::Pointer lUtmProjection = otb::UtmInverseProjection::New(); + otb::UtmForwardProjection::Pointer lUtmProjection2 = otb::UtmForwardProjection::New(); + otb::VanDerGrintenInverseProjection::Pointer lVanDerGrintenProjection = otb::VanDerGrintenInverseProjection::New(); + otb::VanDerGrintenForwardProjection::Pointer lVanDerGrintenProjection2 = otb::VanDerGrintenForwardProjection::New(); + return EXIT_SUCCESS; } diff --git a/Testing/Code/Projections/otbOrthoRectificationFilter.cxx b/Testing/Code/Projections/otbOrthoRectificationFilter.cxx index 21dde57a19a022e2de03c8f055950564be0829ba..8daa9c36fff476627e2a657981d8ead81aac8454 100644 --- a/Testing/Code/Projections/otbOrthoRectificationFilter.cxx +++ b/Testing/Code/Projections/otbOrthoRectificationFilter.cxx @@ -41,83 +41,66 @@ int otbOrthoRectificationFilter( int argc, char* argv[] ) { ossimInit::instance()->initialize(argc, argv); - try - { - if(argc!=11) + if(argc!=11) { std::cout << argv[0] <<" <input filename> <output filename> <origin easting> <origin northing> <x size> <y size> <x spacing> <y spacing> <UTM zone <UTM hemisphere>" - << std::endl; + << std::endl; return EXIT_FAILURE; } - typedef otb::Image<double, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - typedef otb::StreamingImageFileWriter<ImageType> WriterType; - typedef otb::UtmInverseProjection UtmMapProjectionType ; - typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; + typedef otb::Image<double, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::StreamingImageFileWriter<ImageType> WriterType; + typedef otb::UtmInverseProjection UtmMapProjectionType ; + typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; - //Allocate pointer - ReaderType::Pointer reader = ReaderType::New(); - WriterType::Pointer writer = WriterType::New(); + //Allocate pointer + ReaderType::Pointer reader = ReaderType::New(); + WriterType::Pointer writer = WriterType::New(); - OrthoRectifFilterType::Pointer orthoRectifFilter = OrthoRectifFilterType::New(); - UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); + OrthoRectifFilterType::Pointer orthoRectifFilter = OrthoRectifFilterType::New(); + UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); - // Set parameters ... - reader->SetFileName(argv[1]); - writer->SetFileName(argv[2]); + // Set parameters ... + reader->SetFileName(argv[1]); + writer->SetFileName(argv[2]); - reader->GenerateOutputInformation(); - std::cout<<reader->GetOutput()<<std::endl; + reader->GenerateOutputInformation(); + std::cout<<reader->GetOutput()<<std::endl; - orthoRectifFilter->SetInput(reader->GetOutput()); + orthoRectifFilter->SetInput(reader->GetOutput()); - ImageType::IndexType start; - start[0]=0; - start[1]=0; - orthoRectifFilter->SetOutputStartIndex(start); + ImageType::IndexType start; + start[0]=0; + start[1]=0; + orthoRectifFilter->SetOutputStartIndex(start); - ImageType::SizeType size; - size[0]=atoi(argv[5]); // X size - size[1]=atoi(argv[6]); //Y size - orthoRectifFilter->SetSize(size); + ImageType::SizeType size; + size[0]=atoi(argv[5]); // X size + size[1]=atoi(argv[6]); //Y size + orthoRectifFilter->SetSize(size); - ImageType::SpacingType spacing; - spacing[0]=atof(argv[7]); - spacing[1]=atof(argv[8]); - orthoRectifFilter->SetOutputSpacing(spacing); + ImageType::SpacingType spacing; + spacing[0]=atof(argv[7]); + spacing[1]=atof(argv[8]); + orthoRectifFilter->SetOutputSpacing(spacing); - ImageType::PointType origin; - origin[0]=strtod(argv[3], NULL); //Origin easting - origin[1]=strtod(argv[4], NULL); //Origin northing - orthoRectifFilter->SetOutputOrigin(origin); + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //Origin easting + origin[1]=strtod(argv[4], NULL); //Origin northing + orthoRectifFilter->SetOutputOrigin(origin); - utmMapProjection->SetZone(atoi(argv[9])); - utmMapProjection->SetHemisphere(argv[10][0]); - orthoRectifFilter->SetMapProjection(utmMapProjection); + utmMapProjection->SetZone(atoi(argv[9])); + utmMapProjection->SetHemisphere(argv[10][0]); + orthoRectifFilter->SetMapProjection(utmMapProjection); - writer->SetInput(orthoRectifFilter->GetOutput()); + writer->SetInput(orthoRectifFilter->GetOutput()); - writer->SetTilingStreamDivisions(); - writer->Update(); - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + writer->SetTilingStreamDivisions(); + + writer->Update(); + return EXIT_SUCCESS; -}//Fin main() +} diff --git a/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx b/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx index 41d0e1078a3ca5e2acd82061e80bbb37932a0eef..27c0c893ae298f31c83e6b4423b98dfb36d847dc 100755 --- a/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx +++ b/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx @@ -24,13 +24,13 @@ int otbOrthoRectificationFilterNew( int argc, char* argv[] ) { - typedef otb::Image<double, 2> ImageType; - typedef otb::UtmInverseProjection UtmMapProjectionType ; - typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; - - OrthoRectifFilterType::Pointer orthoRectifFilter=OrthoRectifFilterType::New(); - - return EXIT_SUCCESS; - - }//Fin main() + typedef otb::Image<double, 2> ImageType; + typedef otb::UtmInverseProjection UtmMapProjectionType ; + typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; + + OrthoRectifFilterType::Pointer orthoRectifFilter=OrthoRectifFilterType::New(); + + return EXIT_SUCCESS; + +} diff --git a/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx b/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx index 009ee703ec38220857cbe458f27100114098985f..b4426774ccd93cf6795b5f23cb389d61440c9956 100644 --- a/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx +++ b/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx @@ -50,12 +50,9 @@ int otbOrthoRectificationFilterWithDEM( int argc, char* argv[] ) { - try - { + ossimInit::instance()->initialize(argc, argv); - ossimInit::instance()->initialize(argc, argv); - - if(argc!=12) + if(argc!=12) { std::cout << argv[0] <<" <input filename> <output filename> <origin easting> <origin northing> <x size> <y size>"; std::cout << "<x_spacing> <y_spacing> <UTM zone> <UTM hemisphere> <DEM directory>" << std::endl; @@ -64,77 +61,61 @@ int otbOrthoRectificationFilterWithDEM( int argc, char* argv[] ) } - typedef otb::Image<double, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - typedef otb::StreamingImageFileWriter<ImageType> WriterType; + typedef otb::Image<double, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::StreamingImageFileWriter<ImageType> WriterType; - typedef otb::UtmInverseProjection UtmMapProjectionType ; - typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; + typedef otb::UtmInverseProjection UtmMapProjectionType ; + typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; - //Allocate pointer - ReaderType::Pointer reader=ReaderType::New(); - WriterType::Pointer writer=WriterType::New(); + //Allocate pointer + ReaderType::Pointer reader=ReaderType::New(); + WriterType::Pointer writer=WriterType::New(); - OrthoRectifFilterType::Pointer orthoRectifFilter=OrthoRectifFilterType::New(); - UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); + OrthoRectifFilterType::Pointer orthoRectifFilter=OrthoRectifFilterType::New(); + UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); - // Set parameters ... - reader->SetFileName(argv[1]); - writer->SetFileName(argv[2]); + // Set parameters ... + reader->SetFileName(argv[1]); + writer->SetFileName(argv[2]); - orthoRectifFilter->SetInput(reader->GetOutput()); + orthoRectifFilter->SetInput(reader->GetOutput()); - ImageType::IndexType start; - start[0]=0; - start[1]=0; - orthoRectifFilter->SetOutputStartIndex(start); + ImageType::IndexType start; + start[0]=0; + start[1]=0; + orthoRectifFilter->SetOutputStartIndex(start); - ImageType::SizeType size; - size[0]=atoi(argv[5]); //X size. - size[1]=atoi(argv[6]); //Y size - orthoRectifFilter->SetSize(size); + ImageType::SizeType size; + size[0]=atoi(argv[5]); //X size. + size[1]=atoi(argv[6]); //Y size + orthoRectifFilter->SetSize(size); - ImageType::SpacingType spacing; - spacing[0]=atof(argv[7]); - spacing[1]=atof(argv[8]); - orthoRectifFilter->SetOutputSpacing(spacing); + ImageType::SpacingType spacing; + spacing[0]=atof(argv[7]); + spacing[1]=atof(argv[8]); + orthoRectifFilter->SetOutputSpacing(spacing); - ImageType::PointType origin; - origin[0]=strtod(argv[3], NULL); //origin easting - origin[1]=strtod(argv[4], NULL); //origin northing - orthoRectifFilter->SetOutputOrigin(origin); + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //origin easting + origin[1]=strtod(argv[4], NULL); //origin northing + orthoRectifFilter->SetOutputOrigin(origin); - utmMapProjection->SetZone(atoi(argv[9])); - utmMapProjection->SetHemisphere(argv[10][0]); - orthoRectifFilter->SetMapProjection(utmMapProjection); + utmMapProjection->SetZone(atoi(argv[9])); + utmMapProjection->SetHemisphere(argv[10][0]); + orthoRectifFilter->SetMapProjection(utmMapProjection); - std::string srtmDirectory(argv[11]); - orthoRectifFilter->SetDEMDirectory(srtmDirectory); + std::string srtmDirectory(argv[11]); + orthoRectifFilter->SetDEMDirectory(srtmDirectory); - writer->SetInput(orthoRectifFilter->GetOutput()); + writer->SetInput(orthoRectifFilter->GetOutput()); - writer->SetTilingStreamDivisions(); - - otbGenericMsgDebugMacro(<< "Update writer ..." ); - writer->Update(); - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + writer->SetTilingStreamDivisions(); + + otbGenericMsgDebugMacro(<< "Update writer ..." ); + writer->Update(); + + return EXIT_SUCCESS; } //End main() diff --git a/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx b/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx index 2238c5129615dcb270d7b1361ae7d05df0abe7ef..ae7f68e499ab384a584b717181a0362dbc720c4d 100644 --- a/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx +++ b/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx @@ -41,84 +41,67 @@ int otbOrthoRectificationMonoThreadFilter( int argc, char* argv[] ) { ossimInit::instance()->initialize(argc, argv); - try - { - if(argc!=11) + if(argc!=11) { std::cout << argv[0] <<" <input filename> <output filename> <origin easting> <origin northing> <x size> <y size> <x spacing> <y spacing> <UTM zone <UTM hemisphere>" - << std::endl; + << std::endl; return EXIT_FAILURE; } - typedef otb::Image<double, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - typedef otb::StreamingImageFileWriter<ImageType> WriterType; - typedef otb::UtmInverseProjection UtmMapProjectionType ; - typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; + typedef otb::Image<double, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::StreamingImageFileWriter<ImageType> WriterType; + typedef otb::UtmInverseProjection UtmMapProjectionType ; + typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ; - //Allocate pointer - ReaderType::Pointer reader = ReaderType::New(); - WriterType::Pointer writer = WriterType::New(); + //Allocate pointer + ReaderType::Pointer reader = ReaderType::New(); + WriterType::Pointer writer = WriterType::New(); - OrthoRectifFilterType::Pointer orthoRectifFilter = OrthoRectifFilterType::New(); - UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); + OrthoRectifFilterType::Pointer orthoRectifFilter = OrthoRectifFilterType::New(); + UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New(); - // Set parameters ... - reader->SetFileName(argv[1]); - writer->SetFileName(argv[2]); + // Set parameters ... + reader->SetFileName(argv[1]); + writer->SetFileName(argv[2]); - reader->GenerateOutputInformation(); - std::cout<<reader->GetOutput()<<std::endl; + reader->GenerateOutputInformation(); + std::cout<<reader->GetOutput()<<std::endl; - orthoRectifFilter->SetInput(reader->GetOutput()); + orthoRectifFilter->SetInput(reader->GetOutput()); - ImageType::IndexType start; - start[0]=0; - start[1]=0; - orthoRectifFilter->SetOutputStartIndex(start); + ImageType::IndexType start; + start[0]=0; + start[1]=0; + orthoRectifFilter->SetOutputStartIndex(start); - ImageType::SizeType size; - size[0]=atoi(argv[5]); // X size - size[1]=atoi(argv[6]); //Y size - orthoRectifFilter->SetSize(size); + ImageType::SizeType size; + size[0]=atoi(argv[5]); // X size + size[1]=atoi(argv[6]); //Y size + orthoRectifFilter->SetSize(size); - ImageType::SpacingType spacing; - spacing[0]=atof(argv[7]); - spacing[1]=atof(argv[8]); - orthoRectifFilter->SetOutputSpacing(spacing); + ImageType::SpacingType spacing; + spacing[0]=atof(argv[7]); + spacing[1]=atof(argv[8]); + orthoRectifFilter->SetOutputSpacing(spacing); - ImageType::PointType origin; - origin[0]=strtod(argv[3], NULL); //Origin easting - origin[1]=strtod(argv[4], NULL); //Origin northing - orthoRectifFilter->SetOutputOrigin(origin); + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //Origin easting + origin[1]=strtod(argv[4], NULL); //Origin northing + orthoRectifFilter->SetOutputOrigin(origin); - utmMapProjection->SetZone(atoi(argv[9])); - utmMapProjection->SetHemisphere(argv[10][0]); - orthoRectifFilter->SetMapProjection(utmMapProjection); + utmMapProjection->SetZone(atoi(argv[9])); + utmMapProjection->SetHemisphere(argv[10][0]); + orthoRectifFilter->SetMapProjection(utmMapProjection); - writer->SetInput(orthoRectifFilter->GetOutput()); + writer->SetInput(orthoRectifFilter->GetOutput()); - writer->SetTilingStreamDivisions(); - writer->SetNumberOfThreads(1); - writer->Update(); - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + writer->SetTilingStreamDivisions(); + writer->SetNumberOfThreads(1); + writer->Update(); + + return EXIT_SUCCESS; }//Fin main() diff --git a/Testing/Code/Projections/otbProjectionBaseNew.cxx b/Testing/Code/Projections/otbProjectionBaseNew.cxx index 75c6d7f50d8b3d470f513f5e8fcf0b41e05ef60f..08fbdafd727593c6cd790ebf8148fe7c2227e656 100755 --- a/Testing/Code/Projections/otbProjectionBaseNew.cxx +++ b/Testing/Code/Projections/otbProjectionBaseNew.cxx @@ -28,28 +28,12 @@ int otbProjectionBaseNew( int argc, char* argv[] ) { - try - { - - otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New(); - otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistForwardProjection::New(); - typedef otb::MapToMapProjection<otb::AlbersInverseProjection,otb::AzimEquDistForwardProjection> MapToMapProjectionType; - MapToMapProjectionType::Pointer lMapToMapProjection = MapToMapProjectionType::New(); + otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New(); + otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistForwardProjection::New(); + typedef otb::MapToMapProjection<otb::AlbersInverseProjection,otb::AzimEquDistForwardProjection> MapToMapProjectionType; + MapToMapProjectionType::Pointer lMapToMapProjection = MapToMapProjectionType::New(); - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject thrown !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - - catch( ... ) - { - std::cout << "Unknown exception thrown !" << std::endl; - return EXIT_FAILURE; - } - + return EXIT_SUCCESS; } diff --git a/Testing/Code/Projections/otbRegionProjection.cxx b/Testing/Code/Projections/otbRegionProjection.cxx index 37f46473878a3c9bb5e50739e59993dc9052be84..08af9e9bb8b053b10c87229d47694795a464affb 100755 --- a/Testing/Code/Projections/otbRegionProjection.cxx +++ b/Testing/Code/Projections/otbRegionProjection.cxx @@ -57,372 +57,353 @@ int otbRegionProjection( int argc, char* argv[] ) { - try - { + ossimInit::instance()->initialize(argc, argv); - ossimInit::instance()->initialize(argc, argv); - - if(argc!=10) - { + if(argc!=10) + { std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" << "<xSpacing> <ySpacing>" << std::endl; return EXIT_FAILURE; - } + } -typedef itk::Point <double, 2> PointType; -PointType outputpoint; - -/*************************************************/ -/* Cr�ation de l'image de sortie outputimage */ -/*************************************************/ -typedef otb::Image<unsigned char, 2> CharImageType; -typedef otb::Image<unsigned int, 2> ImageType; -typedef otb::Image<unsigned int, 2> InputImageType; -ImageType::Pointer outputimage = ImageType::New(); - -ImageType::PixelType pixelvalue; - -ImageType::IndexType start; -start[0]=0; -start[1]=0; - -ImageType::SizeType size; -size[0]=atoi(argv[5]); //Taille en X. -size[1]=atoi(argv[6]); //Taille en Y. - -ImageType::SpacingType spacing; -spacing[0]=atof(argv[8]); -spacing[1]=atof(argv[9]); - -ImageType::PointType origin; -origin[0]=strtod(argv[3], NULL); //longitude de l'origine. -origin[1]=strtod(argv[4], NULL); //latitude de l'origine. - -ImageType::RegionType region; - -region.SetSize(size); -region.SetIndex(start); - -outputimage->SetOrigin(origin); -outputimage->SetRegions(region); -outputimage->SetSpacing(spacing); -outputimage->Allocate(); //Notre image de sortie est cr��e. -otbGenericMsgDebugMacro(<< "Output image created!! " ); - -/********************************************************/ -/* Cr�ation d'un reader */ -/********************************************************/ -typedef otb::ImageFileReader<ImageType> ReaderType; -ReaderType::Pointer reader=ReaderType::New(); -//ReaderType::Pointer reader1=ReaderType::New(); -reader->SetFileName(argv[1]); - -//Read meta data (ossimKeywordlist) -reader->GenerateOutputInformation(); - -otbGenericMsgDebugMacro(<< "Original input imagine spacing: "<<reader->GetOutput()->GetSpacing() ); - -/******************************/ -/* Cr�ation de mon handler */ -/******************************/ + typedef itk::Point <double, 2> PointType; + PointType outputpoint; + + /*************************************************/ + /* Cr�ation de l'image de sortie outputimage */ + /*************************************************/ + typedef otb::Image<unsigned char, 2> CharImageType; + typedef otb::Image<unsigned int, 2> ImageType; + typedef otb::Image<unsigned int, 2> InputImageType; + ImageType::Pointer outputimage = ImageType::New(); + + ImageType::PixelType pixelvalue; + + ImageType::IndexType start; + start[0]=0; + start[1]=0; + + ImageType::SizeType size; + size[0]=atoi(argv[5]); //Taille en X. + size[1]=atoi(argv[6]); //Taille en Y. + + ImageType::SpacingType spacing; + spacing[0]=atof(argv[8]); + spacing[1]=atof(argv[9]); + + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //longitude de l'origine. + origin[1]=strtod(argv[4], NULL); //latitude de l'origine. + + ImageType::RegionType region; + + region.SetSize(size); + region.SetIndex(start); + + outputimage->SetOrigin(origin); + outputimage->SetRegions(region); + outputimage->SetSpacing(spacing); + outputimage->Allocate(); //Notre image de sortie est cr��e. + otbGenericMsgDebugMacro(<< "Output image created!! " ); + + /********************************************************/ + /* Cr�ation d'un reader */ + /********************************************************/ + typedef otb::ImageFileReader<ImageType> ReaderType; + ReaderType::Pointer reader=ReaderType::New(); + //ReaderType::Pointer reader1=ReaderType::New(); + reader->SetFileName(argv[1]); + + //Read meta data (ossimKeywordlist) + reader->GenerateOutputInformation(); + + otbGenericMsgDebugMacro(<< "Original input imagine spacing: "<<reader->GetOutput()->GetSpacing() ); + + /******************************/ + /* Cr�ation de mon handler */ + /******************************/ -/* - typedef otb::ImageGeometryHandler HandlerType; - HandlerType::Pointer handler= HandlerType::New(); - otbGenericMsgDebugMacro(<< "Handler created " ); - handler->SetFileName(argv[1]); - geom_kwl=handler->GetGeometryKeywordlist();*/ -otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist(); - -ossimKeywordlist geom_kwl; -otb_image_keywordlist.convertToOSSIMKeywordlist(geom_kwl); - -otbGenericMsgDebugMacro(<< "ossimKeywordlist: "<<geom_kwl ); - -/********************************************************/ -/* Cr�ation de notre mod�le en fonction de l'image */ -/********************************************************/ - - typedef otb::InverseSensorModel<double> ModelType; - ModelType::Pointer model= ModelType::New(); - otbGenericMsgDebugMacro(<< "Model set geometry " ); - model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau. - if(!model) - { - otbGenericMsgDebugMacro(<< "Unable to create a model"); - return 1; - } - otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); + /* + typedef otb::ImageGeometryHandler HandlerType; + HandlerType::Pointer handler= HandlerType::New(); + otbGenericMsgDebugMacro(<< "Handler created " ); + handler->SetFileName(argv[1]); + geom_kwl=handler->GetGeometryKeywordlist();*/ + otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist(); + + ossimKeywordlist geom_kwl; + otb_image_keywordlist.convertToOSSIMKeywordlist(geom_kwl); + + otbGenericMsgDebugMacro(<< "ossimKeywordlist: "<<geom_kwl ); + + /********************************************************/ + /* Cr�ation de notre mod�le en fonction de l'image */ + /********************************************************/ + + typedef otb::InverseSensorModel<double> ModelType; + ModelType::Pointer model= ModelType::New(); + otbGenericMsgDebugMacro(<< "Model set geometry " ); + model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau. + if(!model) + { + otbGenericMsgDebugMacro(<< "Unable to create a model"); + return 1; + } + otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); - ModelType::OutputPointType inputpoint; + ModelType::OutputPointType inputpoint; - otbGenericMsgDebugMacro(<< "Miary Sensor Model :" << model); + otbGenericMsgDebugMacro(<< "Miary Sensor Model :" << model); -//reader1->SetFileName(argv[2]); -//ImageType::Pointer image = reader1->GetOutput(); -//reader->Update(); -ImageType::Pointer inputimage= reader->GetOutput(); -ImageType::IndexType currentindex; -ImageType::IndexType currentindexbis; -ImageType::IndexType pixelindex; -ImageType::IndexType pixelindexbis; -otbGenericMsgDebugMacro(<< "Reader created " ); - -//Stocker les caract�ristiques de notre image capteur: -// ImageType::SizeType inputimagesize; -// inputimagesize=inputimage->GetLargestPossibleRegion().GetSize(); -// //inputimagesize=inputimage->GetSize(); -// otbGenericMsgDebugMacro(<< "Dimension de notre image capteur:"<< std::endl -// << "("<< inputimagesize[0]<< ","<< inputimagesize[1]<< ")"<<std::endl; - - -/********************************************************/ -/* Cr�ation de notre extractor */ -/********************************************************/ - -typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; -ExtractType::Pointer extract=ExtractType::New(); -otbGenericMsgDebugMacro(<< "Region Extractor created " ); - -/********************************************************/ -/* Cr�ation de notre interpolator */ -/********************************************************/ - -typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; -InterpolatorType::Pointer interpolator=InterpolatorType::New(); -//InterpolatorType::OutputType value; -otbGenericMsgDebugMacro(<< "Interpolator created " ); - -/********************************************************/ -/* Cr�ation de notre writer */ -/********************************************************/ -//typedef otb::ImageFileWriter<CharImageType> CharWriterType; -typedef otb::ImageFileWriter<ImageType> CharWriterType; -typedef otb::ImageFileWriter<ImageType> WriterType; -WriterType::Pointer extractorwriter=WriterType::New(); -CharWriterType::Pointer writer=CharWriterType::New(); -extractorwriter->SetFileName("image_temp.jpeg"); -extractorwriter->SetInput(extract->GetOutput()); -otbGenericMsgDebugMacro(<< "extractorwriter created" ); - -/********************************************************/ -/* Cr�ation de notre rescaler */ -/********************************************************/ - -typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; -RescalerType::Pointer rescaler=RescalerType::New(); -//rescaler->SetOutputMinimum(50); -//rescaler->SetOutputMaximum(500); -rescaler->SetOutputMinimum(10); -rescaler->SetOutputMaximum(255); -otbGenericMsgDebugMacro(<< "rescaler created" ); - - -/*************************************************/ -/* Cr�ation de RegionIteratorwithIndex */ -/*************************************************/ - -typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; -//IteratorType outputIt(outputimage, region); //D�finition de notre it�rateur. -//otbGenericMsgDebugMacro(<< "Iterator created " ); - -//Donner une valeur par d�faut numberofstreamdivision ou le faire fixer par l'utilisateur. -unsigned int NumberOfStreamDivisions; -if (atoi(argv[7])==0) -{NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage -else{NumberOfStreamDivisions=atoi(argv[7]);} -//otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions ); - -//Boucle pour parcourir chaque r�gion -unsigned int count=0; -unsigned int It, j, k; -int max_x, max_y, min_x, min_y; -ImageType::IndexType iterationRegionStart; -ImageType::SizeType iteratorRegionSize; -ImageType::RegionType iteratorRegion; - -for(count=0;count<NumberOfStreamDivisions;count++) -{//d�but boucle principale -/**Cr�ation de la r�gion pour chaque portion**/ -iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. -if (count==NumberOfStreamDivisions-1) -{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); -iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); -} -else -{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. -iterationRegionStart[1]=count*iteratorRegionSize[1]; -} -iterationRegionStart[0]=0;//D�but de chaque ligne==>0 -// otbGenericMsgDebugMacro(<<iteratorRegionSize[1]); -// otbGenericMsgDebugMacro(<<iterationRegionStart[0]); -iteratorRegion.SetSize(iteratorRegionSize); -iteratorRegion.SetIndex(iterationRegionStart); - -/**Cr�ation d'un tableau de pixelindex**/ -unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; -int *pixelIndexArray=new int[pixelIndexArrayDimension]; -int *currentIndexArray=new int[pixelIndexArrayDimension]; - -/**Cr�ation de l'it�rateur pour chaque portion:**/ -IteratorType outputIt(outputimage, iteratorRegion); - -std::cout << "Origin : " << outputimage->GetOrigin() << std::endl; -std::cout << "Spacing : " << outputimage->GetSpacing() << std::endl; - -/*PointType ulc; -ulc[0]=inputimage->GetOrigin()[0]; -ulc[1]=inputimage->GetOrigin()[1]+(inputimage->GetSpacing()[1]*inputimage->GetLargestPossibleRegion().GetSize()[1]); -model->SetUpperLeftCorner(ulc);*/ - - - -/**On applique l'it�ration sur chaque portion**/ -It=0; -for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) -{//D�but boucle -//On get l'index courant -currentindex=outputIt.GetIndex(); -//On le transforme en Point physique -outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); - otbGenericMsgDebugMacro(<< "Pour l'Index Ncurrent:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl - << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<<outputpoint[1]<< ")"); - -//On calcule les coordonn�es pixeliques sur l'image capteur -inputpoint = model->TransformPoint(outputpoint); - otbGenericMsgDebugMacro(<< "Les coordonnees en pixel sur l'image capteur correspondant a ce point sont:" << std::endl - << inputpoint[0] << ","<< inputpoint[1] ); -inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); - otbGenericMsgDebugMacro(<< "L'index correspondant a ce point est:" << std::endl - << pixelindex[0] << ","<< pixelindex[1] ); - -/**On stocke les pixel index dans un tableau pixelindexarray**/ - pixelIndexArray[It]=pixelindex[0]; - pixelIndexArray[It+1]=pixelindex[1]; -//otbMsgDevMacro(<< "La valeur stock�e" << std::endl -// << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl; - -/**On stocke les pixel index dans un tableau currentindexarray**/ - currentIndexArray[It]=currentindex[0]; - currentIndexArray[It+1]=currentindex[1]; -otbMsgDevMacro(<< "La valeur stockee" << std::endl - << pixelIndexArray[It] << "," << pixelIndexArray[It+1] ); - It=It+2; -}//Fin boucle: on a stock� tous les index qui nous interesse -//otbGenericMsgDebugMacro( << "It= " << It ); - -/**Calcul des max et min pour pouvoir extraire la bonne r�gion:**/ -max_x=pixelIndexArray[0]; -min_x=pixelIndexArray[0]; -max_y=pixelIndexArray[1]; -min_y=pixelIndexArray[1]; + //reader1->SetFileName(argv[2]); + //ImageType::Pointer image = reader1->GetOutput(); + //reader->Update(); + ImageType::Pointer inputimage= reader->GetOutput(); + ImageType::IndexType currentindex; + ImageType::IndexType currentindexbis; + ImageType::IndexType pixelindex; + ImageType::IndexType pixelindexbis; + otbGenericMsgDebugMacro(<< "Reader created " ); + + //Stocker les caract�ristiques de notre image capteur: + // ImageType::SizeType inputimagesize; + // inputimagesize=inputimage->GetLargestPossibleRegion().GetSize(); + // //inputimagesize=inputimage->GetSize(); + // otbGenericMsgDebugMacro(<< "Dimension de notre image capteur:"<< std::endl + // << "("<< inputimagesize[0]<< ","<< inputimagesize[1]<< ")"<<std::endl; + + + /********************************************************/ + /* Cr�ation de notre extractor */ + /********************************************************/ + + typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; + ExtractType::Pointer extract=ExtractType::New(); + otbGenericMsgDebugMacro(<< "Region Extractor created " ); + + /********************************************************/ + /* Cr�ation de notre interpolator */ + /********************************************************/ + + typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; + InterpolatorType::Pointer interpolator=InterpolatorType::New(); + //InterpolatorType::OutputType value; + otbGenericMsgDebugMacro(<< "Interpolator created " ); + + /********************************************************/ + /* Cr�ation de notre writer */ + /********************************************************/ + //typedef otb::ImageFileWriter<CharImageType> CharWriterType; + typedef otb::ImageFileWriter<ImageType> CharWriterType; + typedef otb::ImageFileWriter<ImageType> WriterType; + WriterType::Pointer extractorwriter=WriterType::New(); + CharWriterType::Pointer writer=CharWriterType::New(); + extractorwriter->SetFileName("image_temp.jpeg"); + extractorwriter->SetInput(extract->GetOutput()); + otbGenericMsgDebugMacro(<< "extractorwriter created" ); + + /********************************************************/ + /* Cr�ation de notre rescaler */ + /********************************************************/ + + typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; + RescalerType::Pointer rescaler=RescalerType::New(); + //rescaler->SetOutputMinimum(50); + //rescaler->SetOutputMaximum(500); + rescaler->SetOutputMinimum(10); + rescaler->SetOutputMaximum(255); + otbGenericMsgDebugMacro(<< "rescaler created" ); + + + /*************************************************/ + /* Cr�ation de RegionIteratorwithIndex */ + /*************************************************/ + + typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; + //IteratorType outputIt(outputimage, region); //D�finition de notre it�rateur. + //otbGenericMsgDebugMacro(<< "Iterator created " ); + + //Donner une valeur par d�faut numberofstreamdivision ou le faire fixer par l'utilisateur. + unsigned int NumberOfStreamDivisions; + if (atoi(argv[7])==0) + {NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage + else{NumberOfStreamDivisions=atoi(argv[7]);} + //otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions ); + + //Boucle pour parcourir chaque r�gion + unsigned int count=0; + unsigned int It, j, k; + int max_x, max_y, min_x, min_y; + ImageType::IndexType iterationRegionStart; + ImageType::SizeType iteratorRegionSize; + ImageType::RegionType iteratorRegion; + + for(count=0;count<NumberOfStreamDivisions;count++) + {//d�but boucle principale + /**Cr�ation de la r�gion pour chaque portion**/ + iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. + if (count==NumberOfStreamDivisions-1) + {iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); + iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); + } + else + {iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. + iterationRegionStart[1]=count*iteratorRegionSize[1]; + } + iterationRegionStart[0]=0;//D�but de chaque ligne==>0 + // otbGenericMsgDebugMacro(<<iteratorRegionSize[1]); + // otbGenericMsgDebugMacro(<<iterationRegionStart[0]); + iteratorRegion.SetSize(iteratorRegionSize); + iteratorRegion.SetIndex(iterationRegionStart); + + /**Cr�ation d'un tableau de pixelindex**/ + unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; + int *pixelIndexArray=new int[pixelIndexArrayDimension]; + int *currentIndexArray=new int[pixelIndexArrayDimension]; + + /**Cr�ation de l'it�rateur pour chaque portion:**/ + IteratorType outputIt(outputimage, iteratorRegion); + + std::cout << "Origin : " << outputimage->GetOrigin() << std::endl; + std::cout << "Spacing : " << outputimage->GetSpacing() << std::endl; + + /*PointType ulc; + ulc[0]=inputimage->GetOrigin()[0]; + ulc[1]=inputimage->GetOrigin()[1]+(inputimage->GetSpacing()[1]*inputimage->GetLargestPossibleRegion().GetSize()[1]); + model->SetUpperLeftCorner(ulc);*/ + + + + /**On applique l'it�ration sur chaque portion**/ + It=0; + for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) + {//D�but boucle + //On get l'index courant + currentindex=outputIt.GetIndex(); + //On le transforme en Point physique + outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); + otbGenericMsgDebugMacro(<< "Pour l'Index Ncurrent:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl + << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<<outputpoint[1]<< ")"); + + //On calcule les coordonn�es pixeliques sur l'image capteur + inputpoint = model->TransformPoint(outputpoint); + otbGenericMsgDebugMacro(<< "Les coordonnees en pixel sur l'image capteur correspondant a ce point sont:" << std::endl + << inputpoint[0] << ","<< inputpoint[1] ); + inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); + otbGenericMsgDebugMacro(<< "L'index correspondant a ce point est:" << std::endl + << pixelindex[0] << ","<< pixelindex[1] ); + + /**On stocke les pixel index dans un tableau pixelindexarray**/ + pixelIndexArray[It]=pixelindex[0]; + pixelIndexArray[It+1]=pixelindex[1]; + //otbMsgDevMacro(<< "La valeur stock�e" << std::endl + // << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl; + + /**On stocke les pixel index dans un tableau currentindexarray**/ + currentIndexArray[It]=currentindex[0]; + currentIndexArray[It+1]=currentindex[1]; + otbMsgDevMacro(<< "La valeur stockee" << std::endl + << pixelIndexArray[It] << "," << pixelIndexArray[It+1] ); + It=It+2; + }//Fin boucle: on a stock� tous les index qui nous interesse + //otbGenericMsgDebugMacro( << "It= " << It ); + + /**Calcul des max et min pour pouvoir extraire la bonne r�gion:**/ + max_x=pixelIndexArray[0]; + min_x=pixelIndexArray[0]; + max_y=pixelIndexArray[1]; + min_y=pixelIndexArray[1]; - otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl - << "max_y=" << max_y<< std::endl - << "min_x=" << min_x<< std::endl - << "min_y=" << min_y); + otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl + << "max_y=" << max_y<< std::endl + << "min_x=" << min_x<< std::endl + << "min_y=" << min_y); - for (j=0;j<It;j++) + for (j=0;j<It;j++) { - if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} - if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} }//Fin while - otbGenericMsgDebugMacro(<< "Mise a jour des max ...\nmax_x=" << max_x<< std::endl - << "max_y=" << max_y<< std::endl - << "min_x=" << min_x<< std::endl - << "min_y=" << min_y); + otbGenericMsgDebugMacro(<< "Mise a jour des max ...\nmax_x=" << max_x<< std::endl + << "max_y=" << max_y<< std::endl + << "min_x=" << min_x<< std::endl + << "min_y=" << min_y); -/**Cr�er un extractor pour chaque portion:**/ -InputImageType::RegionType extractregion; + /**Cr�er un extractor pour chaque portion:**/ + InputImageType::RegionType extractregion; -InputImageType::IndexType extractstart; + InputImageType::IndexType extractstart; -if (min_x<10 && min_y<10) + if (min_x<10 && min_y<10) { - extractstart[0]=0; - extractstart[1]=0; + extractstart[0]=0; + extractstart[1]=0; } -else + else { - extractstart[0]=min_x-10; - extractstart[1]=min_y-10; + extractstart[0]=min_x-10; + extractstart[1]=min_y-10; } -InputImageType::SizeType extractsize; - -extractsize[0]=(max_x-min_x)+20; //Taille en X. -extractsize[1]=(max_y-min_y)+20; //Taille en Y. -extractregion.SetSize(extractsize); -extractregion.SetIndex(extractstart); -//extractregion=inputimage->GetRequestedRegion(); -extract->SetExtractionRegion(extractregion); -extract->SetInput(reader->GetOutput()); -extractorwriter->Update(); - -/**Interpolation:**/ -interpolator->SetInputImage(reader->GetOutput()); -//interpolator->SetDefaultPixelValue(0); -for ( k=0; k<It/2; k++) -{ -pixelindexbis[0]= pixelIndexArray[2*k]; -pixelindexbis[1]= pixelIndexArray[2*k+1]; -currentindexbis[0]= currentIndexArray[2*k]; -currentindexbis[1]= currentIndexArray[2*k+1]; -//Test si notre index est dans la r�gion extraite: -if (interpolator->IsInsideBuffer(pixelindexbis)) -{pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));} -else {pixelvalue=0;} -otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl - << float(pixelvalue) ); -outputimage->SetPixel(currentindexbis,pixelvalue); - } - delete pixelIndexArray; -otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" ); -delete currentIndexArray; -otbGenericMsgDebugMacro(<< "currentIndexArray deleted" ); -}//Fin boucle principale - - - -writer->SetFileName(argv[2]); -otbGenericMsgDebugMacro(<< "FilenameSet" ); -//rescaler->SetInput(outputimage); -CharImageType::Pointer charoutputimage=CharImageType::New(); -//charoutputimage=rescaler->GetOutput(); -//writer->SetInput(charoutputimage); - -std::cout << "Image before Writer" << outputimage->GetOrigin() << std::endl; -writer->SetInput(outputimage); -writer->Update(); -otbGenericMsgDebugMacro(<< "Outputimage created" ); - - - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + InputImageType::SizeType extractsize; + + extractsize[0]=(max_x-min_x)+20; //Taille en X. + extractsize[1]=(max_y-min_y)+20; //Taille en Y. + extractregion.SetSize(extractsize); + extractregion.SetIndex(extractstart); + //extractregion=inputimage->GetRequestedRegion(); + extract->SetExtractionRegion(extractregion); + extract->SetInput(reader->GetOutput()); + extractorwriter->Update(); + + /**Interpolation:**/ + interpolator->SetInputImage(reader->GetOutput()); + //interpolator->SetDefaultPixelValue(0); + for ( k=0; k<It/2; k++) + { + pixelindexbis[0]= pixelIndexArray[2*k]; + pixelindexbis[1]= pixelIndexArray[2*k+1]; + currentindexbis[0]= currentIndexArray[2*k]; + currentindexbis[1]= currentIndexArray[2*k+1]; + //Test si notre index est dans la r�gion extraite: + if (interpolator->IsInsideBuffer(pixelindexbis)) + {pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));} + else {pixelvalue=0;} + otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl + << float(pixelvalue) ); + outputimage->SetPixel(currentindexbis,pixelvalue); + } + delete pixelIndexArray; + otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" ); + delete currentIndexArray; + otbGenericMsgDebugMacro(<< "currentIndexArray deleted" ); + }//Fin boucle principale + + + + writer->SetFileName(argv[2]); + otbGenericMsgDebugMacro(<< "FilenameSet" ); + //rescaler->SetInput(outputimage); + CharImageType::Pointer charoutputimage=CharImageType::New(); + //charoutputimage=rescaler->GetOutput(); + //writer->SetInput(charoutputimage); + + std::cout << "Image before Writer" << outputimage->GetOrigin() << std::endl; + writer->SetInput(outputimage); + writer->Update(); + otbGenericMsgDebugMacro(<< "Outputimage created" ); + + + + return EXIT_SUCCESS; - }//Fin main() +}//Fin main() diff --git a/Testing/Code/Projections/otbRegionProjectionResampler.cxx b/Testing/Code/Projections/otbRegionProjectionResampler.cxx index c8d2e8d299cdf22aed1ce668a61dad6d95f98eec..b8a7d603b973426996dd6d77d564a7c8120257fc 100755 --- a/Testing/Code/Projections/otbRegionProjectionResampler.cxx +++ b/Testing/Code/Projections/otbRegionProjectionResampler.cxx @@ -57,106 +57,88 @@ int otbRegionProjectionResampler( int argc, char* argv[] ) { - try - { - ossimInit::instance()->initialize(argc, argv); + 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; + 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; - 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::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(); + 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); + // 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(); + // Read meta data (ossimKeywordlist) + reader->GenerateOutputInformation(); + ImageType::ConstPointer inputImage = reader->GetOutput(); - model->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist()); + 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. + 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); + region.SetSize(size); + region.SetIndex(start); - spacing[0]=atof(argv[8]); - spacing[1]=atof(argv[9]); + 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. + origin[0]=strtod(argv[3], NULL); // origin longitude. + origin[1]=strtod(argv[4], NULL); // origin latitude. - otbGenericMsgDebugMacro(<< "Origin " << origin ); + otbGenericMsgDebugMacro(<< "Origin " << origin ); - resampler->SetOutputSpacing( spacing ); - resampler->SetOutputOrigin( origin ); - resampler->SetSize( region.GetSize() ); - resampler->SetOutputStartIndex( start ); + 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 ); + //Connect pipeline + resampler->SetInput( reader->GetOutput() ); + resampler->SetTransform( model ); + resampler->SetInterpolator( interpolator ); - otbGenericMsgDebugMacro(<< "Sensor Model :" << model); + 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; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + writer->SetInput(resampler->GetOutput()); + writer->SetTilingStreamDivisions(10); + otbGenericMsgDebugMacro(<< "Update writer ..." ); + writer->Update(); + + return EXIT_SUCCESS; - }//Fin main() +}//Fin main() diff --git a/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx b/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx index 545a3b4a707d7aa0529e47e6e2bc3118ed897e60..3c716897cb5c7d0d8d1fc6cdcdea0af4dae50a45 100755 --- a/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx +++ b/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx @@ -30,348 +30,323 @@ int otbSensorImageDEMToCarto( int argc, char* argv[] ) { - try - { - - - if(argc!=11) - { + if(argc!=11) + { std::cout << argv[0] <<" <input filename> <output filename> <X origine> <Y origine> <taille_x> <taille_y> <NumberOfstreamDivisions> <srtm directory> " << "<xSpacing> <ySpacing>" << std::endl; return EXIT_FAILURE; - } -typedef itk::Point <double, 2> PointType; -PointType outputpoint; - -/*************************************************/ -/* Création des diverses images */ -/* (outputimage,DEMimage,charoutputimage) */ -/*************************************************/ -typedef otb::Image<unsigned char, 2> CharImageType; -typedef otb::Image<unsigned int, 2> ImageType; -typedef otb::Image<unsigned int, 2> InputImageType; -ImageType::Pointer outputimage = ImageType::New(); -CharImageType::Pointer charoutputimage=CharImageType::New(); - -ImageType::PixelType pixelvalue; -ImageType::IndexType start; -start[0]=0; -start[1]=0; - -ImageType::SizeType size; -size[0]=atoi(argv[5]); //Taille en X. -size[1]=atoi(argv[6]); //Taille en Y. - -ImageType::SpacingType spacing; -spacing[0]=atof(argv[9]); -spacing[1]=atof(argv[10]); - -ImageType::PointType origin; -origin[0]=strtod(argv[3], NULL); //longitude de l'origine. -origin[1]=strtod(argv[4], NULL); //latitude de l'origine. - -ImageType::RegionType region; - -region.SetSize(size); -region.SetIndex(start); - -outputimage-> SetOrigin(origin); -outputimage-> SetRegions(region); -outputimage->SetSpacing(spacing); -outputimage-> Allocate(); //Notre image de sortie est allouée. -otbGenericMsgDebugMacro(<< "Output image created!! "); - -/******************************/ -/* Création de mon handler */ -/******************************/ + } + typedef itk::Point <double, 2> PointType; + PointType outputpoint; + + /*************************************************/ + /* Création des diverses images */ + /* (outputimage,DEMimage,charoutputimage) */ + /*************************************************/ + typedef otb::Image<unsigned char, 2> CharImageType; + typedef otb::Image<unsigned int, 2> ImageType; + typedef otb::Image<unsigned int, 2> InputImageType; + ImageType::Pointer outputimage = ImageType::New(); + CharImageType::Pointer charoutputimage=CharImageType::New(); + + ImageType::PixelType pixelvalue; + ImageType::IndexType start; + start[0]=0; + start[1]=0; + + ImageType::SizeType size; + size[0]=atoi(argv[5]); //Taille en X. + size[1]=atoi(argv[6]); //Taille en Y. + + ImageType::SpacingType spacing; + spacing[0]=atof(argv[9]); + spacing[1]=atof(argv[10]); + + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //longitude de l'origine. + origin[1]=strtod(argv[4], NULL); //latitude de l'origine. + + ImageType::RegionType region; + + region.SetSize(size); + region.SetIndex(start); + + outputimage-> SetOrigin(origin); + outputimage-> SetRegions(region); + outputimage->SetSpacing(spacing); + outputimage-> Allocate(); //Notre image de sortie est allouée. + otbGenericMsgDebugMacro(<< "Output image created!! "); + + /******************************/ + /* Création de mon handler */ + /******************************/ -ossimKeywordlist geom_kwl; - typedef otb::ImageGeometryHandler HandlerType; - HandlerType::Pointer handler= HandlerType::New(); - otbGenericMsgDebugMacro(<< "Handler created " ); - handler->SetFileName(argv[1]); - geom_kwl=handler->GetGeometryKeywordlist(); - -/********************************************************/ -/* Création de notre modèle en fonction de l'image */ -/********************************************************/ - - typedef otb::InverseSensorModel<double> ModelType; - ModelType::Pointer model= ModelType::New(); - otbGenericMsgDebugMacro(<< "Model set geometry " ); - model->SetImageGeometry(geom_kwl); //Notre modèle est créé à ce niveau. - if(!model) - { - otbGenericMsgDebugMacro(<< "Unable to create a model"); - return 1; - } - otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); + ossimKeywordlist geom_kwl; + typedef otb::ImageGeometryHandler HandlerType; + HandlerType::Pointer handler= HandlerType::New(); + otbGenericMsgDebugMacro(<< "Handler created " ); + handler->SetFileName(argv[1]); + geom_kwl=handler->GetGeometryKeywordlist(); + + /********************************************************/ + /* Création de notre modèle en fonction de l'image */ + /********************************************************/ + + typedef otb::InverseSensorModel<double> ModelType; + ModelType::Pointer model= ModelType::New(); + otbGenericMsgDebugMacro(<< "Model set geometry " ); + model->SetImageGeometry(geom_kwl); //Notre modèle est créé à ce niveau. + if(!model) + { + otbGenericMsgDebugMacro(<< "Unable to create a model"); + return 1; + } + otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); - ModelType::OutputPointType inputpoint; - - -/********************************************************/ -/* Création d'un reader */ -/********************************************************/ - -typedef otb::ImageFileReader<ImageType> ReaderType; -ReaderType::Pointer reader=ReaderType::New(); -reader->SetFileName(argv[1]); -ImageType::Pointer inputimage= reader->GetOutput(); -ImageType::IndexType currentindex; -ImageType::IndexType currentindexbis; -// ImageType::IndexType pixelindex; -ImageType::IndexType pixelindexbis; -otbGenericMsgDebugMacro(<< "Reader created " ); - -/********************************************************/ -/* Création de notre extractor */ -/********************************************************/ - -typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; -ExtractType::Pointer extract=ExtractType::New(); -otbGenericMsgDebugMacro(<< "Region Extractor created " ); - -/********************************************************/ -/* Création de notre interpolator */ -/********************************************************/ - -typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; -InterpolatorType::Pointer interpolator=InterpolatorType::New(); -otbGenericMsgDebugMacro(<< "Interpolator created " ); - -/********************************************************/ -/* Création de nos writer */ -/********************************************************/ - -typedef otb::ImageFileWriter<ImageType> WriterType; -typedef otb::ImageFileWriter<CharImageType> CharWriterType; - -WriterType::Pointer extractorwriter=WriterType::New(); -CharWriterType::Pointer writer=CharWriterType::New(); - -extractorwriter->SetFileName("image_temp1.jpeg"); -extractorwriter->SetInput(extract->GetOutput()); -otbGenericMsgDebugMacro(<< "extractorwriter created" ); - -/********************************************************/ -/* Création de notre rescaler */ -/********************************************************/ - -typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; -RescalerType::Pointer rescaler=RescalerType::New(); -rescaler->SetOutputMinimum(0); -rescaler->SetOutputMaximum(255); -otbGenericMsgDebugMacro(<< "rescaler created" ); - -/********************************************************/ -/* Création de notre projection */ -/********************************************************/ -typedef otb::UtmInverseProjection utmProjection; -typedef utmProjection::OutputPointType OutputPoint; -typedef utmProjection::InputPointType InputPoint; -InputPoint geoPoint; -utmProjection::Pointer utmprojection= utmProjection::New(); -utmprojection->SetZone(31); -utmprojection->SetHemisphere('N'); - -/*************************************************/ -/* Création de RegionIteratorwithIndex */ -/*************************************************/ - -typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; -otbGenericMsgDebugMacro(<< "Iterator created " ); - -//Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur. -unsigned int NumberOfStreamDivisions; -if (atoi(argv[7])==0) -{NumberOfStreamDivisions=10;}//ou pourrait le calculer en fonction de la taille de outputimage -else{NumberOfStreamDivisions=atoi(argv[7]);} -otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions ); - -//Boucle pour parcourir chaque région -unsigned int count=0; -unsigned int It, j, k, It1; -int max_x, max_y, min_x, min_y; -ImageType::IndexType iterationRegionStart; -ImageType::SizeType iteratorRegionSize; -ImageType::RegionType iteratorRegion; - -model->SetDEMDirectory(argv[8]); - -for(count=0;count<NumberOfStreamDivisions;count++) -{//début boucle principale -/**Création de la région pour chaque portion**/ -iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. -if (count==NumberOfStreamDivisions-1) -{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); -iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); -} -else -{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. -iterationRegionStart[1]=count*iteratorRegionSize[1]; -} -iterationRegionStart[0]=0;//Début de chaque ligne==>0 -iteratorRegion.SetSize(iteratorRegionSize); -iteratorRegion.SetIndex(iterationRegionStart); - -/**Création d'un tableau de pixelindex**/ -unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; -int *pixelIndexArray=new int[pixelIndexArrayDimension]; -int *currentIndexArray=new int[pixelIndexArrayDimension]; - -/**Création de l'itérateur pour chaque portion:**/ -IteratorType outputIt(outputimage, iteratorRegion); - -/**On applique l'itération sur chaque portion**/ -It=0; -It1=0; -for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) -{//Début boucle -//On get l'index courant -currentindex=outputIt.GetIndex(); -//On le transforme en Point physique -outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); - otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl - << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<< outputpoint[1]<< ")"); - -//On applique la projection: -geoPoint= utmprojection->TransformPoint(outputpoint); -otbMsgDevMacro(<< "Le point géographique correspondant est: ("<< geoPoint[0]<< ","<< geoPoint[1]<< ")"); - -//On calcule les coordonnées pixeliques sur l'image capteur -inputpoint = model->TransformPoint(geoPoint); -otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl - << inputpoint[0] << ","<< inputpoint[1] ); -//inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); -// otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl -// << pixelindex[0] << ","<< pixelindex[1] ); - -/**On stocke les pixel index dans un tableau pixelindexarray**/ -// pixelIndexArray[It]=pixelindex[0]; -// pixelIndexArray[It+1]=pixelindex[1]; -pixelIndexArray[It]=static_cast<int>(inputpoint[0]); -pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]); - - otbMsgDevMacro(<< "La valeur stockée" << std::endl - << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl); - -/**On stocke les pixel index dans un tableau currentindexarray**/ - currentIndexArray[It]=currentindex[0]; - currentIndexArray[It+1]=currentindex[1]; - otbMsgDevMacro(<< "La valeur stockée" << std::endl - << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl); + ModelType::OutputPointType inputpoint; + + + /********************************************************/ + /* Création d'un reader */ + /********************************************************/ + + typedef otb::ImageFileReader<ImageType> ReaderType; + ReaderType::Pointer reader=ReaderType::New(); + reader->SetFileName(argv[1]); + ImageType::Pointer inputimage= reader->GetOutput(); + ImageType::IndexType currentindex; + ImageType::IndexType currentindexbis; + // ImageType::IndexType pixelindex; + ImageType::IndexType pixelindexbis; + otbGenericMsgDebugMacro(<< "Reader created " ); + + /********************************************************/ + /* Création de notre extractor */ + /********************************************************/ + + typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; + ExtractType::Pointer extract=ExtractType::New(); + otbGenericMsgDebugMacro(<< "Region Extractor created " ); + + /********************************************************/ + /* Création de notre interpolator */ + /********************************************************/ + + typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; + InterpolatorType::Pointer interpolator=InterpolatorType::New(); + otbGenericMsgDebugMacro(<< "Interpolator created " ); + + /********************************************************/ + /* Création de nos writer */ + /********************************************************/ + + typedef otb::ImageFileWriter<ImageType> WriterType; + typedef otb::ImageFileWriter<CharImageType> CharWriterType; + + WriterType::Pointer extractorwriter=WriterType::New(); + CharWriterType::Pointer writer=CharWriterType::New(); + + extractorwriter->SetFileName("image_temp1.jpeg"); + extractorwriter->SetInput(extract->GetOutput()); + otbGenericMsgDebugMacro(<< "extractorwriter created" ); + + /********************************************************/ + /* Création de notre rescaler */ + /********************************************************/ + + typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; + RescalerType::Pointer rescaler=RescalerType::New(); + rescaler->SetOutputMinimum(0); + rescaler->SetOutputMaximum(255); + otbGenericMsgDebugMacro(<< "rescaler created" ); + + /********************************************************/ + /* Création de notre projection */ + /********************************************************/ + typedef otb::UtmInverseProjection utmProjection; + typedef utmProjection::OutputPointType OutputPoint; + typedef utmProjection::InputPointType InputPoint; + InputPoint geoPoint; + utmProjection::Pointer utmprojection= utmProjection::New(); + utmprojection->SetZone(31); + utmprojection->SetHemisphere('N'); + + /*************************************************/ + /* Création de RegionIteratorwithIndex */ + /*************************************************/ + + typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; + otbGenericMsgDebugMacro(<< "Iterator created " ); + + //Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur. + unsigned int NumberOfStreamDivisions; + if (atoi(argv[7])==0) + {NumberOfStreamDivisions=10;}//ou pourrait le calculer en fonction de la taille de outputimage + else{NumberOfStreamDivisions=atoi(argv[7]);} + otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions ); + + //Boucle pour parcourir chaque région + unsigned int count=0; + unsigned int It, j, k, It1; + int max_x, max_y, min_x, min_y; + ImageType::IndexType iterationRegionStart; + ImageType::SizeType iteratorRegionSize; + ImageType::RegionType iteratorRegion; + + model->SetDEMDirectory(argv[8]); + + for(count=0;count<NumberOfStreamDivisions;count++) + {//début boucle principale + /**Création de la région pour chaque portion**/ + iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. + if (count==NumberOfStreamDivisions-1) + {iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); + iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); + } + else + {iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. + iterationRegionStart[1]=count*iteratorRegionSize[1]; + } + iterationRegionStart[0]=0;//Début de chaque ligne==>0 + iteratorRegion.SetSize(iteratorRegionSize); + iteratorRegion.SetIndex(iterationRegionStart); + + /**Création d'un tableau de pixelindex**/ + unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; + int *pixelIndexArray=new int[pixelIndexArrayDimension]; + int *currentIndexArray=new int[pixelIndexArrayDimension]; + + /**Création de l'itérateur pour chaque portion:**/ + IteratorType outputIt(outputimage, iteratorRegion); + + /**On applique l'itération sur chaque portion**/ + It=0; + It1=0; + for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) + {//Début boucle + //On get l'index courant + currentindex=outputIt.GetIndex(); + //On le transforme en Point physique + outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); + otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl + << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<< outputpoint[1]<< ")"); + + //On applique la projection: + geoPoint= utmprojection->TransformPoint(outputpoint); + otbMsgDevMacro(<< "Le point géographique correspondant est: ("<< geoPoint[0]<< ","<< geoPoint[1]<< ")"); + + //On calcule les coordonnées pixeliques sur l'image capteur + inputpoint = model->TransformPoint(geoPoint); + otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl + << inputpoint[0] << ","<< inputpoint[1] ); + //inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); + // otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl + // << pixelindex[0] << ","<< pixelindex[1] ); + + /**On stocke les pixel index dans un tableau pixelindexarray**/ + // pixelIndexArray[It]=pixelindex[0]; + // pixelIndexArray[It+1]=pixelindex[1]; + pixelIndexArray[It]=static_cast<int>(inputpoint[0]); + pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]); + + otbMsgDevMacro(<< "La valeur stockée" << std::endl + << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl); + + /**On stocke les pixel index dans un tableau currentindexarray**/ + currentIndexArray[It]=currentindex[0]; + currentIndexArray[It+1]=currentindex[1]; + otbMsgDevMacro(<< "La valeur stockée" << std::endl + << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl); - It=It+2; - It1=It1+1; -}//Fin boucle: on a stocké tous les index qui nous interesse - -/**Calcul des max et min pour pouvoir extraire la bonne région:**/ -max_x=pixelIndexArray[0]; -min_x=pixelIndexArray[0]; -max_y=pixelIndexArray[1]; -min_y=pixelIndexArray[1]; + It=It+2; + It1=It1+1; + }//Fin boucle: on a stocké tous les index qui nous interesse + + /**Calcul des max et min pour pouvoir extraire la bonne région:**/ + max_x=pixelIndexArray[0]; + min_x=pixelIndexArray[0]; + max_y=pixelIndexArray[1]; + min_y=pixelIndexArray[1]; - for (j=0;j<It;j++) + for (j=0;j<It;j++) { - if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} - if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} }//Fin while - otbMsgDevMacro(<< "max_x=" << max_x<< std::endl - << "max_y=" << max_y<< std::endl - << "min_x=" << min_x<< std::endl - << "min_y=" << min_y); + otbMsgDevMacro(<< "max_x=" << max_x<< std::endl + << "max_y=" << max_y<< std::endl + << "min_x=" << min_x<< std::endl + << "min_y=" << min_y); -/**Créer un extractor pour chaque portion:**/ -InputImageType::RegionType extractregion; + /**Créer un extractor pour chaque portion:**/ + InputImageType::RegionType extractregion; -InputImageType::IndexType extractstart; + InputImageType::IndexType extractstart; -if (min_x<10 && min_y<10) + if (min_x<10 && min_y<10) { - extractstart[0]=0; - extractstart[1]=0; + extractstart[0]=0; + extractstart[1]=0; } -else + else { - extractstart[0]=min_x-10; - extractstart[1]=min_y-10; + extractstart[0]=min_x-10; + extractstart[1]=min_y-10; } -InputImageType::SizeType extractsize; + InputImageType::SizeType extractsize; -extractsize[0]=(max_x-min_x)+20; //Taille en X. -extractsize[1]=(max_y-min_y)+20; //Taille en Y. -extractregion.SetSize(extractsize); -extractregion.SetIndex(extractstart); -extract->SetExtractionRegion(extractregion); -extract->SetInput(reader->GetOutput()); -extractorwriter->Update(); + extractsize[0]=(max_x-min_x)+20; //Taille en X. + extractsize[1]=(max_y-min_y)+20; //Taille en Y. + extractregion.SetSize(extractsize); + extractregion.SetIndex(extractstart); + extract->SetExtractionRegion(extractregion); + extract->SetInput(reader->GetOutput()); + extractorwriter->Update(); -/**Interpolation:**/ -interpolator->SetInputImage(reader->GetOutput()); -for ( k=0; k<It/2; k++) + /**Interpolation:**/ + interpolator->SetInputImage(reader->GetOutput()); + for ( k=0; k<It/2; k++) { - pixelindexbis[0]= pixelIndexArray[2*k]; - pixelindexbis[1]= pixelIndexArray[2*k+1]; - currentindexbis[0]= currentIndexArray[2*k]; - currentindexbis[1]= currentIndexArray[2*k+1]; - -//Test si notre index est dans la région extraite: - if (interpolator->IsInsideBuffer(pixelindexbis) ) - { - pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis)); - } - else {pixelvalue=0;} + pixelindexbis[0]= pixelIndexArray[2*k]; + pixelindexbis[1]= pixelIndexArray[2*k+1]; + currentindexbis[0]= currentIndexArray[2*k]; + currentindexbis[1]= currentIndexArray[2*k+1]; + + //Test si notre index est dans la région extraite: + if (interpolator->IsInsideBuffer(pixelindexbis) ) + { + pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis)); + } + else {pixelvalue=0;} -otbMsgDevMacro(<< "La valeur du pixel est:"<< float(pixelvalue) ); + otbMsgDevMacro(<< "La valeur du pixel est:"<< float(pixelvalue) ); -outputimage->SetPixel(currentindexbis,pixelvalue); + outputimage->SetPixel(currentindexbis,pixelvalue); } -delete pixelIndexArray; -otbMsgDevMacro(<< "pixelIndexArray deleted" ); -delete currentIndexArray; -otbMsgDevMacro(<< "currentIndexArray deleted" ); -}//Fin boucle principale - -//Création de l'image de sortie -writer->SetFileName(argv[2]); -otbGenericMsgDebugMacro(<< "FilenameSet" ); -rescaler->SetInput(outputimage); -charoutputimage=rescaler->GetOutput(); -writer->SetInput(charoutputimage); -writer->Update(); -otbGenericMsgDebugMacro(<< "Outputimage created" ); - - - - - - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + delete pixelIndexArray; + otbMsgDevMacro(<< "pixelIndexArray deleted" ); + delete currentIndexArray; + otbMsgDevMacro(<< "currentIndexArray deleted" ); + }//Fin boucle principale + + //Création de l'image de sortie + writer->SetFileName(argv[2]); + otbGenericMsgDebugMacro(<< "FilenameSet" ); + rescaler->SetInput(outputimage); + charoutputimage=rescaler->GetOutput(); + writer->SetInput(charoutputimage); + writer->Update(); + otbGenericMsgDebugMacro(<< "Outputimage created" ); + + return EXIT_SUCCESS; diff --git a/Testing/Code/Projections/otbSensorImageToCarto.cxx b/Testing/Code/Projections/otbSensorImageToCarto.cxx index a5bbf8aa43f8f2b364125db224971d5ee33186b3..ded60f31c289c2b5873a4c32785e6f800f83fd1e 100755 --- a/Testing/Code/Projections/otbSensorImageToCarto.cxx +++ b/Testing/Code/Projections/otbSensorImageToCarto.cxx @@ -53,374 +53,355 @@ int otbSensorImageToCarto( int argc, char* argv[] ) { - try - { + ossimInit::instance()->initialize(argc, argv); - ossimInit::instance()->initialize(argc, argv); - - if(argc!=10) - { + if(argc!=10) + { std::cout << argv[0] <<" <input filename> <output filename> <X origine> <Y origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" << "<xSPacing> <ySpacing>" << std::endl; return EXIT_FAILURE; - } -typedef itk::Point <double, 2> PointType; -PointType outputpoint; - -/*************************************************/ -/* Création de l'image de sortie outputimage */ -/*************************************************/ -typedef otb::Image<unsigned char, 2> CharImageType; -typedef otb::Image<unsigned int, 2> ImageType; -typedef otb::Image<unsigned int, 2> InputImageType; -ImageType::Pointer outputimage = ImageType::New(); - -ImageType::PixelType pixelvalue; - -ImageType::IndexType start; -start[0]=0; -start[1]=0; - -ImageType::SizeType size; -size[0]=atoi(argv[5]); //Taille en X. -size[1]=atoi(argv[6]); //Taille en Y. - -ImageType::SpacingType spacing; -spacing[0]=atof(argv[8]); -spacing[1]=atof(argv[9]); - -ImageType::PointType origin; -origin[0]=strtod(argv[3], NULL); //longitude de l'origine. -origin[1]=strtod(argv[4], NULL); //latitude de l'origine. - -ImageType::RegionType region; - -region.SetSize(size); -region.SetIndex(start); - -outputimage-> SetOrigin(origin); -outputimage-> SetRegions(region); -outputimage->SetSpacing(spacing); -outputimage-> Allocate(); //Notre image de sortie est créée. -otbGenericMsgDebugMacro(<< "Output image created!! " ); - -/******************************/ -/* Création de mon handler */ -/******************************/ + } + typedef itk::Point <double, 2> PointType; + PointType outputpoint; + + /*************************************************/ + /* Création de l'image de sortie outputimage */ + /*************************************************/ + typedef otb::Image<unsigned char, 2> CharImageType; + typedef otb::Image<unsigned int, 2> ImageType; + typedef otb::Image<unsigned int, 2> InputImageType; + ImageType::Pointer outputimage = ImageType::New(); + + ImageType::PixelType pixelvalue; + + ImageType::IndexType start; + start[0]=0; + start[1]=0; + + ImageType::SizeType size; + size[0]=atoi(argv[5]); //Taille en X. + size[1]=atoi(argv[6]); //Taille en Y. + + ImageType::SpacingType spacing; + spacing[0]=atof(argv[8]); + spacing[1]=atof(argv[9]); + + ImageType::PointType origin; + origin[0]=strtod(argv[3], NULL); //longitude de l'origine. + origin[1]=strtod(argv[4], NULL); //latitude de l'origine. + + ImageType::RegionType region; + + region.SetSize(size); + region.SetIndex(start); + + outputimage-> SetOrigin(origin); + outputimage-> SetRegions(region); + outputimage->SetSpacing(spacing); + outputimage-> Allocate(); //Notre image de sortie est créée. + otbGenericMsgDebugMacro(<< "Output image created!! " ); + + /******************************/ + /* Création de mon handler */ + /******************************/ -ossimKeywordlist geom_kwl; - typedef otb::ImageGeometryHandler HandlerType; - HandlerType::Pointer handler= HandlerType::New(); - otbGenericMsgDebugMacro(<< "Handler created " ); - handler->SetFileName(argv[1]); - geom_kwl=handler->GetGeometryKeywordlist(); -std::cout << geom_kwl << std::endl; + ossimKeywordlist geom_kwl; + typedef otb::ImageGeometryHandler HandlerType; + HandlerType::Pointer handler= HandlerType::New(); + otbGenericMsgDebugMacro(<< "Handler created " ); + handler->SetFileName(argv[1]); + geom_kwl=handler->GetGeometryKeywordlist(); + std::cout << geom_kwl << std::endl; -/********************************************************/ -/* Création de notre modèle en fonction de l'image */ -/********************************************************/ -typedef otb::ImageFileReader<ImageType> ReaderType; -ReaderType::Pointer reader=ReaderType::New(); -//ReaderType::Pointer reader1=ReaderType::New(); -reader->SetFileName(argv[1]); -reader->GenerateOutputInformation(); + /********************************************************/ + /* Création de notre modèle en fonction de l'image */ + /********************************************************/ + typedef otb::ImageFileReader<ImageType> ReaderType; + ReaderType::Pointer reader=ReaderType::New(); + //ReaderType::Pointer reader1=ReaderType::New(); + reader->SetFileName(argv[1]); + reader->GenerateOutputInformation(); - otb::ImageKeywordlist otb_tmp_image; -/* itk::ExposeMetaData< otb::ImageKeywordlist >(image_medianFilter->GetOutput()->GetMetaDataDictionary(), - otb::MetaDataKey::m_OSSIMKeywordlistKey, - otb_tmp_image);*/ + otb::ImageKeywordlist otb_tmp_image; + /* itk::ExposeMetaData< otb::ImageKeywordlist >(image_medianFilter->GetOutput()->GetMetaDataDictionary(), + otb::MetaDataKey::m_OSSIMKeywordlistKey, + otb_tmp_image);*/ - otb_tmp_image = reader->GetOutput()->GetImageKeywordlist(); + otb_tmp_image = reader->GetOutput()->GetImageKeywordlist(); - ossimKeywordlist ossim_kwl_image; - otb_tmp_image.convertToOSSIMKeywordlist(ossim_kwl_image); -std::cout << " ossim_kwl_image: "<<ossim_kwl_image<<std::endl; + ossimKeywordlist ossim_kwl_image; + otb_tmp_image.convertToOSSIMKeywordlist(ossim_kwl_image); + std::cout << " ossim_kwl_image: "<<ossim_kwl_image<<std::endl; -ossimRefPtr<ossimProjection> toto = ossimProjectionFactoryRegistry::instance()->createProjection(ossim_kwl_image); -if( toto.valid() == false) -{ -// itkGenericExceptionMacro(<<"Invalid Model pointer !"); - otbGenericMsgDebugMacro(<<"Invalid Model pointer !"); -} + ossimRefPtr<ossimProjection> toto = ossimProjectionFactoryRegistry::instance()->createProjection(ossim_kwl_image); + if( toto.valid() == false) + { + // itkGenericExceptionMacro(<<"Invalid Model pointer !"); + otbGenericMsgDebugMacro(<<"Invalid Model pointer !"); + } - typedef otb::InverseSensorModel<double> ModelType; - ModelType::Pointer model= ModelType::New(); - otbGenericMsgDebugMacro(<< "Model set geometry " ); - model->SetImageGeometry(ossim_kwl_image); //Notre modèle est créé à ce niveau. - if(!model) - { - otbGenericMsgDebugMacro(<< "Unable to create a model"); - return 1; - } - otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); + typedef otb::InverseSensorModel<double> ModelType; + ModelType::Pointer model= ModelType::New(); + otbGenericMsgDebugMacro(<< "Model set geometry " ); + model->SetImageGeometry(ossim_kwl_image); //Notre modèle est créé à ce niveau. + if(!model) + { + otbGenericMsgDebugMacro(<< "Unable to create a model"); + return 1; + } + otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); - ModelType::OutputPointType inputpoint; + ModelType::OutputPointType inputpoint; -/********************************************************/ -/* Création d'un reader */ -/********************************************************/ - -//reader1->SetFileName(argv[2]); -//ImageType::Pointer image = reader1->GetOutput(); -//reader->Update(); -ImageType::Pointer inputimage= reader->GetOutput(); -ImageType::IndexType currentindex; -ImageType::IndexType currentindexbis; -//ImageType::IndexType pixelindex; -ImageType::IndexType pixelindexbis; -otbGenericMsgDebugMacro(<< "Reader created " ); - -//Stocker les caractéristiques de notre image capteur: -// ImageType::SizeType inputimagesize; -// inputimagesize=inputimage->GetLargestPossibleRegion().GetSize(); -// //inputimagesize=inputimage->GetSize(); -// std::cout << "Dimension de notre image capteur:"<< endl -// << "("<< inputimagesize[0]<< ","<< inputimagesize[1]<< ")"<<std::endl; - - -/********************************************************/ -/* Création de notre extractor */ -/********************************************************/ - -typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; -ExtractType::Pointer extract=ExtractType::New(); -otbGenericMsgDebugMacro(<< "Region Extractor created " ); - -/********************************************************/ -/* Création de notre interpolator */ -/********************************************************/ - -typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; -InterpolatorType::Pointer interpolator=InterpolatorType::New(); -otbGenericMsgDebugMacro(<< "Interpolator created " ); - -/********************************************************/ -/* Création de notre writer */ -/********************************************************/ - -typedef otb::ImageFileWriter<ImageType> WriterType; -typedef otb::ImageFileWriter<CharImageType> CharWriterType; -WriterType::Pointer extractorwriter=WriterType::New(); -CharWriterType::Pointer writer=CharWriterType::New(); -extractorwriter->SetFileName("image_temp.jpeg"); -extractorwriter->SetInput(extract->GetOutput()); -otbGenericMsgDebugMacro(<< "extractorwriter created" ); - -/********************************************************/ -/* Création de notre rescaler */ -/********************************************************/ - -typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; -RescalerType::Pointer rescaler=RescalerType::New(); -rescaler->SetOutputMinimum(0); -rescaler->SetOutputMaximum(255); -otbGenericMsgDebugMacro(<< "rescaler created" ); - -/********************************************************/ -/* Création de notre projection */ -/********************************************************/ -typedef otb::UtmInverseProjection utmProjection; -typedef utmProjection::OutputPointType OutputPoint; -typedef utmProjection::InputPointType InputPoint; -InputPoint geoPoint; -utmProjection::Pointer utmprojection= utmProjection::New(); -utmprojection->SetZone(31); -utmprojection->SetHemisphere('N'); - -/*************************************************/ -/* Création de RegionIteratorwithIndex */ -/*************************************************/ - -typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; -//IteratorType outputIt(outputimage, region); //Définition de notre itérateur. -//std::cout << "Iterator created " << std::endl; - -//Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur. -unsigned int NumberOfStreamDivisions; -if (atoi(argv[7])==0) -{NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage -else{NumberOfStreamDivisions=atoi(argv[7]);} -//std::cout << "NumberOfStreamDivisions =" << NumberOfStreamDivisions << std::endl; - -//Boucle pour parcourir chaque région -unsigned int count=0; -unsigned int It, j, k; -int max_x, max_y, min_x, min_y; -ImageType::IndexType iterationRegionStart; -ImageType::SizeType iteratorRegionSize; -ImageType::RegionType iteratorRegion; - -for(count=0;count<NumberOfStreamDivisions;count++) -{//début boucle principale -/**Création de la région pour chaque portion**/ -iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. -if (count==NumberOfStreamDivisions-1) -{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); -iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); -} -else -{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. -iterationRegionStart[1]=count*iteratorRegionSize[1]; -} -iterationRegionStart[0]=0;//Début de chaque ligne==>0 -// std::cout <<iteratorRegionSize[1]<< std::endl; -// std::cout <<iterationRegionStart[0]<< std::endl; -iteratorRegion.SetSize(iteratorRegionSize); -iteratorRegion.SetIndex(iterationRegionStart); - -/**Création d'un tableau de pixelindex**/ -unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; -int *pixelIndexArray=new int[pixelIndexArrayDimension]; -int *currentIndexArray=new int[pixelIndexArrayDimension]; - -/**Création de l'itérateur pour chaque portion:**/ -IteratorType outputIt(outputimage, iteratorRegion); - -/**On applique l'itération sur chaque portion**/ -It=0; -for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) -{//Début boucle -//On get l'index courant -currentindex=outputIt.GetIndex(); -//On le transforme en Point physique -outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); - otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl - << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<< outputpoint[1]<< ")"); - -//On applique la projection: -geoPoint= utmprojection->TransformPoint(outputpoint); -otbMsgDevMacro(<< "Le point géographique correspondant est: ("<< geoPoint[0]<< ","<< geoPoint[1]<< ")"); -//On calcule les coordonnées pixeliques sur l'image capteur -inputpoint = model->TransformPoint(geoPoint); - otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl - << inputpoint[0] << ","<< inputpoint[1] ); -//inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); -// otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl -// << pixelindex[0] << ","<< pixelindex[1] ); - -/**On stocke les pixel index dans un tableau pixelindexarray**/ -// pixelIndexArray[It]=pixelindex[0]; -// pixelIndexArray[It+1]=pixelindex[1]; -pixelIndexArray[It]=static_cast<int>(inputpoint[0]); -pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]); - - -//std::cout << "La valeur stockée" << endl -// << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl; - -/**On stocke les pixel index dans un tableau currentindexarray**/ - currentIndexArray[It]=currentindex[0]; - currentIndexArray[It+1]=currentindex[1]; -otbMsgDevMacro(<< "La valeur stockée" << std::endl - << pixelIndexArray[It] << "," << pixelIndexArray[It+1]); - It=It+2; -}//Fin boucle: on a stocké tous les index qui nous interesse -//std::cout << "It= " << It << std::endl; - -/**Calcul des max et min pour pouvoir extraire la bonne région:**/ -max_x=pixelIndexArray[0]; -min_x=pixelIndexArray[0]; -max_y=pixelIndexArray[1]; -min_y=pixelIndexArray[1]; + /********************************************************/ + /* Création d'un reader */ + /********************************************************/ + + //reader1->SetFileName(argv[2]); + //ImageType::Pointer image = reader1->GetOutput(); + //reader->Update(); + ImageType::Pointer inputimage= reader->GetOutput(); + ImageType::IndexType currentindex; + ImageType::IndexType currentindexbis; + //ImageType::IndexType pixelindex; + ImageType::IndexType pixelindexbis; + otbGenericMsgDebugMacro(<< "Reader created " ); + + //Stocker les caractéristiques de notre image capteur: + // ImageType::SizeType inputimagesize; + // inputimagesize=inputimage->GetLargestPossibleRegion().GetSize(); + // //inputimagesize=inputimage->GetSize(); + // std::cout << "Dimension de notre image capteur:"<< endl + // << "("<< inputimagesize[0]<< ","<< inputimagesize[1]<< ")"<<std::endl; + + + /********************************************************/ + /* Création de notre extractor */ + /********************************************************/ + + typedef itk::ExtractImageFilter<InputImageType,ImageType> ExtractType; + ExtractType::Pointer extract=ExtractType::New(); + otbGenericMsgDebugMacro(<< "Region Extractor created " ); + + /********************************************************/ + /* Création de notre interpolator */ + /********************************************************/ + + typedef itk::LinearInterpolateImageFunction<ImageType, double> InterpolatorType; + InterpolatorType::Pointer interpolator=InterpolatorType::New(); + otbGenericMsgDebugMacro(<< "Interpolator created " ); + + /********************************************************/ + /* Création de notre writer */ + /********************************************************/ + + typedef otb::ImageFileWriter<ImageType> WriterType; + typedef otb::ImageFileWriter<CharImageType> CharWriterType; + WriterType::Pointer extractorwriter=WriterType::New(); + CharWriterType::Pointer writer=CharWriterType::New(); + extractorwriter->SetFileName("image_temp.jpeg"); + extractorwriter->SetInput(extract->GetOutput()); + otbGenericMsgDebugMacro(<< "extractorwriter created" ); + + /********************************************************/ + /* Création de notre rescaler */ + /********************************************************/ + + typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType> RescalerType; + RescalerType::Pointer rescaler=RescalerType::New(); + rescaler->SetOutputMinimum(0); + rescaler->SetOutputMaximum(255); + otbGenericMsgDebugMacro(<< "rescaler created" ); + + /********************************************************/ + /* Création de notre projection */ + /********************************************************/ + typedef otb::UtmInverseProjection utmProjection; + typedef utmProjection::OutputPointType OutputPoint; + typedef utmProjection::InputPointType InputPoint; + InputPoint geoPoint; + utmProjection::Pointer utmprojection= utmProjection::New(); + utmprojection->SetZone(31); + utmprojection->SetHemisphere('N'); + + /*************************************************/ + /* Création de RegionIteratorwithIndex */ + /*************************************************/ + + typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType; + //IteratorType outputIt(outputimage, region); //Définition de notre itérateur. + //std::cout << "Iterator created " << std::endl; + + //Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur. + unsigned int NumberOfStreamDivisions; + if (atoi(argv[7])==0) + {NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage + else{NumberOfStreamDivisions=atoi(argv[7]);} + //std::cout << "NumberOfStreamDivisions =" << NumberOfStreamDivisions << std::endl; + + //Boucle pour parcourir chaque région + unsigned int count=0; + unsigned int It, j, k; + int max_x, max_y, min_x, min_y; + ImageType::IndexType iterationRegionStart; + ImageType::SizeType iteratorRegionSize; + ImageType::RegionType iteratorRegion; + + for(count=0;count<NumberOfStreamDivisions;count++) + {//début boucle principale + /**Création de la région pour chaque portion**/ + iteratorRegionSize[0]=atoi(argv[5]); //Taille en X. + if (count==NumberOfStreamDivisions-1) + {iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count); + iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); + } + else + {iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5); //Taille en Y. + iterationRegionStart[1]=count*iteratorRegionSize[1]; + } + iterationRegionStart[0]=0;//Début de chaque ligne==>0 + // std::cout <<iteratorRegionSize[1]<< std::endl; + // std::cout <<iterationRegionStart[0]<< std::endl; + iteratorRegion.SetSize(iteratorRegionSize); + iteratorRegion.SetIndex(iterationRegionStart); + + /**Création d'un tableau de pixelindex**/ + unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2; + int *pixelIndexArray=new int[pixelIndexArrayDimension]; + int *currentIndexArray=new int[pixelIndexArrayDimension]; + + /**Création de l'itérateur pour chaque portion:**/ + IteratorType outputIt(outputimage, iteratorRegion); + + /**On applique l'itération sur chaque portion**/ + It=0; + for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt) + {//Début boucle + //On get l'index courant + currentindex=outputIt.GetIndex(); + //On le transforme en Point physique + outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint); + otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<< std::endl + << "Le point physique correspondant est: ("<< outputpoint[0]<< ","<< outputpoint[1]<< ")"); + + //On applique la projection: + geoPoint= utmprojection->TransformPoint(outputpoint); + otbMsgDevMacro(<< "Le point géographique correspondant est: ("<< geoPoint[0]<< ","<< geoPoint[1]<< ")"); + //On calcule les coordonnées pixeliques sur l'image capteur + inputpoint = model->TransformPoint(geoPoint); + otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl + << inputpoint[0] << ","<< inputpoint[1] ); + //inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex); + // otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl + // << pixelindex[0] << ","<< pixelindex[1] ); + + /**On stocke les pixel index dans un tableau pixelindexarray**/ + // pixelIndexArray[It]=pixelindex[0]; + // pixelIndexArray[It+1]=pixelindex[1]; + pixelIndexArray[It]=static_cast<int>(inputpoint[0]); + pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]); + + + //std::cout << "La valeur stockée" << endl + // << pixelIndexArray[It] << "," << pixelIndexArray[It+1] <<std::endl; + + /**On stocke les pixel index dans un tableau currentindexarray**/ + currentIndexArray[It]=currentindex[0]; + currentIndexArray[It+1]=currentindex[1]; + otbMsgDevMacro(<< "La valeur stockée" << std::endl + << pixelIndexArray[It] << "," << pixelIndexArray[It+1]); + It=It+2; + }//Fin boucle: on a stocké tous les index qui nous interesse + //std::cout << "It= " << It << std::endl; + + /**Calcul des max et min pour pouvoir extraire la bonne région:**/ + max_x=pixelIndexArray[0]; + min_x=pixelIndexArray[0]; + max_y=pixelIndexArray[1]; + min_y=pixelIndexArray[1]; - for (j=0;j<It;j++) + for (j=0;j<It;j++) { - if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} - if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} - if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];} + if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];} + if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];} }//Fin while - otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl - << "max_y=" << max_y<< std::endl - << "min_x=" << min_x<< std::endl - << "min_y=" << min_y); + otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl + << "max_y=" << max_y<< std::endl + << "min_x=" << min_x<< std::endl + << "min_y=" << min_y); -/**Créer un extractor pour chaque portion:**/ -InputImageType::RegionType extractregion; + /**Créer un extractor pour chaque portion:**/ + InputImageType::RegionType extractregion; -InputImageType::IndexType extractstart; + InputImageType::IndexType extractstart; -if (min_x<10 && min_y<10) + if (min_x<10 && min_y<10) { - extractstart[0]=0; - extractstart[1]=0; + extractstart[0]=0; + extractstart[1]=0; } -else + else { - extractstart[0]=min_x-10; - extractstart[1]=min_y-10; + extractstart[0]=min_x-10; + extractstart[1]=min_y-10; } -InputImageType::SizeType extractsize; - -extractsize[0]=(max_x-min_x)+20; //Taille en X. -extractsize[1]=(max_y-min_y)+20; //Taille en Y. -extractregion.SetSize(extractsize); -extractregion.SetIndex(extractstart); -//extractregion=inputimage->GetRequestedRegion(); -extract->SetExtractionRegion(extractregion); -extract->SetInput(reader->GetOutput()); -extractorwriter->Update(); - -/**Interpolation:**/ -interpolator->SetInputImage(reader->GetOutput()); -//interpolator->SetDefaultPixelValue(0); -for ( k=0; k<It/2; k++) -{ -pixelindexbis[0]= pixelIndexArray[2*k]; -pixelindexbis[1]= pixelIndexArray[2*k+1]; -currentindexbis[0]= currentIndexArray[2*k]; -currentindexbis[1]= currentIndexArray[2*k+1]; -//Test si notre index est dans la région extraite: -if (interpolator->IsInsideBuffer(pixelindexbis)) -{pixelvalue=int(interpolator->EvaluateAtIndex(pixelindexbis));} -else {pixelvalue=0;} -otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl - << float(pixelvalue) ); -outputimage->SetPixel(currentindexbis,pixelvalue); - } - delete pixelIndexArray; -otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" ); -delete currentIndexArray; -otbGenericMsgDebugMacro(<< "currentIndexArray deleted" ); -}//Fin boucle principale -writer->SetFileName(argv[2]); -otbGenericMsgDebugMacro(<< "FilenameSet" ); -rescaler->SetInput(outputimage); -CharImageType::Pointer charoutputimage=CharImageType::New(); -charoutputimage=rescaler->GetOutput(); -writer->SetInput(charoutputimage); -writer->Update(); -otbGenericMsgDebugMacro(<< "Outputimage created" ); - - - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject levee !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - catch( std::bad_alloc & err ) - { - std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; - return EXIT_FAILURE; - } - catch( ... ) - { - std::cout << "Exception levee inconnue !" << std::endl; - return EXIT_FAILURE; - } + InputImageType::SizeType extractsize; + + extractsize[0]=(max_x-min_x)+20; //Taille en X. + extractsize[1]=(max_y-min_y)+20; //Taille en Y. + extractregion.SetSize(extractsize); + extractregion.SetIndex(extractstart); + //extractregion=inputimage->GetRequestedRegion(); + extract->SetExtractionRegion(extractregion); + extract->SetInput(reader->GetOutput()); + extractorwriter->Update(); + + /**Interpolation:**/ + interpolator->SetInputImage(reader->GetOutput()); + //interpolator->SetDefaultPixelValue(0); + for ( k=0; k<It/2; k++) + { + pixelindexbis[0]= pixelIndexArray[2*k]; + pixelindexbis[1]= pixelIndexArray[2*k+1]; + currentindexbis[0]= currentIndexArray[2*k]; + currentindexbis[1]= currentIndexArray[2*k+1]; + //Test si notre index est dans la région extraite: + if (interpolator->IsInsideBuffer(pixelindexbis)) + {pixelvalue=int(interpolator->EvaluateAtIndex(pixelindexbis));} + else {pixelvalue=0;} + otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl + << float(pixelvalue) ); + outputimage->SetPixel(currentindexbis,pixelvalue); + } + delete pixelIndexArray; + otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" ); + delete currentIndexArray; + otbGenericMsgDebugMacro(<< "currentIndexArray deleted" ); + }//Fin boucle principale + writer->SetFileName(argv[2]); + otbGenericMsgDebugMacro(<< "FilenameSet" ); + rescaler->SetInput(outputimage); + CharImageType::Pointer charoutputimage=CharImageType::New(); + charoutputimage=rescaler->GetOutput(); + writer->SetInput(charoutputimage); + writer->Update(); + otbGenericMsgDebugMacro(<< "Outputimage created" ); + + + return EXIT_SUCCESS; - }//Fin main() +}//Fin main() diff --git a/Testing/Code/Projections/otbSensorModelsNew.cxx b/Testing/Code/Projections/otbSensorModelsNew.cxx index bfa0099bfabac1e5b3dbcf1ced10ab0b8c7a27ec..200835e46d205e875d63aed05cb993dec6bbef0b 100755 --- a/Testing/Code/Projections/otbSensorModelsNew.cxx +++ b/Testing/Code/Projections/otbSensorModelsNew.cxx @@ -29,29 +29,15 @@ int otbSensorModelsNew( int argc, char* argv[] ) { - try - { - typedef otb::SensorModelBase<double> SensorModelBaseType; - SensorModelBaseType::Pointer lSensorModelBase = SensorModelBaseType::New(); - - typedef otb::InverseSensorModel<double> InverseSensorModelType; - InverseSensorModelType::Pointer lInverseSensorModel = InverseSensorModelType::New(); - - typedef otb::ForwardSensorModel<double> ForwardSensorModelType; - ForwardSensorModelType::Pointer lForwardSensorModel = ForwardSensorModelType::New(); - } - catch( itk::ExceptionObject & err ) - { - std::cout << "Exception itk::ExceptionObject thrown !" << std::endl; - std::cout << err << std::endl; - return EXIT_FAILURE; - } - - catch( ... ) - { - std::cout << "Unknown exception thrown !" << std::endl; - return EXIT_FAILURE; - } + typedef otb::SensorModelBase<double> SensorModelBaseType; + SensorModelBaseType::Pointer lSensorModelBase = SensorModelBaseType::New(); + + typedef otb::InverseSensorModel<double> InverseSensorModelType; + InverseSensorModelType::Pointer lInverseSensorModel = InverseSensorModelType::New(); + + typedef otb::ForwardSensorModel<double> ForwardSensorModelType; + ForwardSensorModelType::Pointer lForwardSensorModel = ForwardSensorModelType::New(); + return EXIT_SUCCESS; }