From f8238d0fcf0900bde42bb3fb4946cad628cbfd01 Mon Sep 17 00:00:00 2001 From: Kaj Williams <kewilliams@usgs.gov> Date: Wed, 22 Aug 2018 12:57:16 -0700 Subject: [PATCH] added focal length tests --- tests/FrameCameraTests.cpp | 102 ++++++++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) diff --git a/tests/FrameCameraTests.cpp b/tests/FrameCameraTests.cpp index edfb857..9023031 100644 --- a/tests/FrameCameraTests.cpp +++ b/tests/FrameCameraTests.cpp @@ -10,16 +10,39 @@ using json = nlohmann::json; +class FrameIsdTest : public ::testing::Test { + protected: + + csm::Isd isd; + + virtual void SetUp() { + std::ifstream isdFile("data/simpleFramerISD.json"); + json jsonIsd = json::parse(isdFile); + for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) { + json jsonValue = it.value(); + if (jsonValue.size() > 1) { + for (int i = 0; i < jsonValue.size(); i++) { + isd.addParam(it.key(), jsonValue[i].dump()); + } + } + else { + isd.addParam(it.key(), jsonValue.dump()); + } + } + isdFile.close(); + } +}; + class FrameSensorModel : public ::testing::Test { protected: UsgsAstroFrameSensorModel *sensorModel; - + csm::Isd isd; void SetUp() override { sensorModel = NULL; std::ifstream isdFile("data/simpleFramerISD.json"); json jsonIsd = json::parse(isdFile); - csm::Isd isd; + //csm::Isd isd; for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) { json jsonValue = it.value(); if (jsonValue.size() > 1) { @@ -101,3 +124,78 @@ TEST_F(FrameSensorModel, OffBody4) { EXPECT_NEAR(groundPt.z, -14.99325304, 1e-8); } + +// Focal Length Tests: +TEST_F(FrameIsdTest, FL500_OffBody4) { + isd.clearParams("focal_length"); + isd.addParam("focal_length","500.0"); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(15.0, 15.0); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 9.77688917, 1e-8); + EXPECT_NEAR(groundPt.y, -1.48533467, 1e-8); + EXPECT_NEAR(groundPt.z, -1.48533467, 1e-8); +} +TEST_F(FrameIsdTest, FL500_OffBody3) { + isd.clearParams("focal_length"); + isd.addParam("focal_length","500.0"); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(0.0, 0.0); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 9.77688917, 1e-8); + EXPECT_NEAR(groundPt.y, 1.48533467, 1e-8); + EXPECT_NEAR(groundPt.z, 1.48533467, 1e-8); +} +TEST_F(FrameIsdTest, FL500_Center) { + isd.clearParams("focal_length"); + isd.addParam("focal_length","500.0"); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(7.5, 7.5); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 10.0, 1e-8); + EXPECT_NEAR(groundPt.y, 0.0, 1e-8); + EXPECT_NEAR(groundPt.z, 0.0, 1e-8); +} +TEST_F(FrameIsdTest, FL500_SlightlyOffCenter) { + isd.clearParams("focal_length"); + isd.addParam("focal_length","500.0"); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(7.5, 6.5); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 9.99803960, 1e-8); + EXPECT_NEAR(groundPt.y, 0.0, 1e-8); + EXPECT_NEAR(groundPt.z, 1.98000392e-01, 1e-8); + +} \ No newline at end of file -- GitLab