From 2dd473c1c66987f5e8e3fbdac2f28abfea90feec Mon Sep 17 00:00:00 2001 From: Emmanuel Christophe <emmanuel.christophe@orfeo-toolbox.org> Date: Thu, 21 May 2009 10:57:37 +0800 Subject: [PATCH] TEST: add tests for sensor models --- Testing/Code/Projections/CMakeLists.txt | 92 +++++++++++++++++++ .../Code/Projections/otbProjectionsTests1.cxx | 1 + Testing/Code/Projections/otbSensorModel.cxx | 85 +++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 Testing/Code/Projections/otbSensorModel.cxx diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt index 7f78f45c66..ce39edf824 100644 --- a/Testing/Code/Projections/CMakeLists.txt +++ b/Testing/Code/Projections/CMakeLists.txt @@ -93,6 +93,97 @@ ADD_TEST(prTvRegionProjectionResamplerCevennes ${PROJECTIONS_TESTS1} 0.00001 -0.00001 ) + +ADD_TEST(prTvSensorModelSpot5 ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelSpot5.txt + ${TEMP}/prTvSensorModelQuickbird.txt + otbSensorModel + ${LARGEINPUT}/SPOT5_SCENE01/IMAGERY.TIF + ${TEMP}/prTvSensorModelSpot5.txt +) + +ADD_TEST(prTvSensorModelQuickbird ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelQuickbird.txt + ${TEMP}/prTvSensorModelQuickbird.txt + otbSensorModel + ${LARGEINPUT}/TOULOUSE/QuickBird/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF + ${TEMP}/prTvSensorModelQuickbird.txt +) + +ADD_TEST(prTvSensorModelIkonos ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelIkonos.txt + ${TEMP}/prTvSensorModelIkonos.txt + otbSensorModel + ${LARGEINPUT}/IKONOS_BLOSSEVILLE/po_2619900_pan_0000000.tif + ${TEMP}/prTvSensorModelIkonos.txt +) + +ADD_TEST(prTvSensorModelRapidEye ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelRapidEye.txt + ${TEMP}/prTvSensorModelRapidEye.txt + otbSensorModel + ${LARGEINPUT}/RAPIDEYE/level1B/2008-12-25T005918_RE3_1B-NAC_397971_12345_band3.ntf + ${TEMP}/prTvSensorModelRapidEye.txt +) + +ADD_TEST(prTvSensorModelEnvisatAsar ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelEnvisatAsar.txt + ${TEMP}/prTvSensorModelEnvisatAsar.txt + otbSensorModel + ${LARGEINPUT}/ENVISAT_ASAR_SCENE01/ASA_APS_1PNDPA20030821_7713.N1 + ${TEMP}/prTvSensorModelEnvisatAsar.txt +) + +ADD_TEST(prTvSensorModelAlosPalsar ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelAlosPalsar.txt + ${TEMP}/prTvSensorModelAlosPalsar.txt + otbSensorModel + ${LARGEINPUT}/PALSAR/200801280007/l1data/VOL-ALPSRP037120700-H1.1__A + ${TEMP}/prTvSensorModelAlosPalsar.txt +) + +ADD_TEST(prTvSensorModelRadarSat1 ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelRadarSat1.txt + ${TEMP}/prTvSensorModelRadarSat1.txt + otbSensorModel + ${LARGEINPUT}/RADARSAT1/SCENE01/DAT_01.001 + ${TEMP}/prTvSensorModelRadarSat1.txt +) + +ADD_TEST(prTvSensorModelRadarSat2 ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelRadarSat2.txt + ${TEMP}/prTvSensorModelRadarSat2.txt + otbSensorModel + ${LARGEINPUT}/RSAT2/Fine_Quad-Pol_Dataset/PK6621_DK406_FQ9_20080405_124900_HH_VV_HV_VH_SLC_Altona/product.xml + ${TEMP}/prTvSensorModelRadarSat2.txt +) + +ADD_TEST(prTvSensorModelTerraSarX ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelTerraSarX.txt + ${TEMP}/prTvSensorModelTerraSarX.txt + otbSensorModel + ${LARGEINPUT}/TERRASARX/dims/TSX-1.SAR.L1B/TSX1_SAR__SSC/TSX1_SAR__SSC.xml + ${TEMP}/prTvSensorModelTerraSarX.txt +) + +ADD_TEST(prTvSensorModelErs ${PROJECTIONS_TESTS1} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvSensorModelErs.txt + ${TEMP}/prTvSensorModelErs.txt + otbSensorModel + ${LARGEINPUT}/SAR_ERS2_SLCI_SCENE1/DAT_01.001 + ${TEMP}/prTvSensorModelErs.txt +) + ENDIF(OTB_DATA_USE_LARGEINPUT) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -352,6 +443,7 @@ otbCreateProjectionWithOSSIM.cxx otbCreateProjectionWithOTB.cxx otbCreateInverseForwardSensorModel.cxx otbRegionProjectionResampler.cxx +otbSensorModel.cxx ) SET(Projections_SRCS2 otbOrthoRectificationFilterNew.cxx diff --git a/Testing/Code/Projections/otbProjectionsTests1.cxx b/Testing/Code/Projections/otbProjectionsTests1.cxx index 08a16fbd2f..c82c27aed3 100644 --- a/Testing/Code/Projections/otbProjectionsTests1.cxx +++ b/Testing/Code/Projections/otbProjectionsTests1.cxx @@ -35,4 +35,5 @@ void RegisterTests() REGISTER_TEST(otbCreateProjectionWithOTB); REGISTER_TEST(otbCreateInverseForwardSensorModel); REGISTER_TEST(otbRegionProjectionResampler); + REGISTER_TEST(otbSensorModel); } diff --git a/Testing/Code/Projections/otbSensorModel.cxx b/Testing/Code/Projections/otbSensorModel.cxx new file mode 100644 index 0000000000..625bb1d0ad --- /dev/null +++ b/Testing/Code/Projections/otbSensorModel.cxx @@ -0,0 +1,85 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#if defined(_MSC_VER) +#pragma warning ( disable : 4786 ) +#endif + +#include <iostream> + +#include "otbVectorImage.h" +#include "otbImageFileReader.h" +#include "otbForwardSensorModel.h" +#include "otbInverseSensorModel.h" + +int otbSensorModel( int argc, char* argv[] ) +{ + if (argc!=3) + { + std::cout << argv[0] <<" <input filename> <output filename>" + << std::endl; + + return EXIT_FAILURE; + } + + char * filename = argv[1]; + char * outFilename = argv[2]; + + std::ofstream file; + file.open(outFilename); + file << std::setprecision(15); + + + typedef otb::VectorImage<double, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(filename); + reader->UpdateOutputInformation(); + + file << "*** KEYWORD LIST ***\n"; + file << reader->GetOutput()->GetImageKeywordlist(); + + file << "\n*** TRANSFORM ***\n"; + + typedef otb::ForwardSensorModel<double> ForwardSensorModelType; + ForwardSensorModelType::Pointer forwardSensorModel = ForwardSensorModelType::New(); + forwardSensorModel->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist()); + + + itk::Point<double,2> imagePoint; + imagePoint[0]=10; + imagePoint[1]=10; + + itk::Point<double,2> geoPoint; + geoPoint = forwardSensorModel->TransformPoint(imagePoint); + + file << "Image to geo: " << imagePoint << " -> " << geoPoint << "\n"; + typedef otb::InverseSensorModel<double> InverseSensorModelType; + InverseSensorModelType::Pointer inverseSensorModel = InverseSensorModelType::New(); + inverseSensorModel->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist()); + + + itk::Point<double,2> reversedImagePoint; + reversedImagePoint = inverseSensorModel->TransformPoint(geoPoint); + + file << "Geo to image: " << geoPoint << " -> " << reversedImagePoint << "\n"; + + file.close(); + return EXIT_SUCCESS; +} + + -- GitLab