Giter Site home page Giter Site logo

grseb9s / usgscsm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from doi-usgs/usgscsm

0.0 1.0 0.0 1.22 MB

This repository stores USGS Community Sensor Model (CSM) camera models

License: BSD 3-Clause "New" or "Revised" License

C++ 96.53% CMake 0.28% Shell 0.01% Jupyter Notebook 2.58% Batchfile 0.01% C 0.59%

usgscsm's Introduction

CSM-CameraModel

Community Sensor Model (CSM) compliant sensor models created by USGS Astrogeology Science Center.

CSM-CameraModel contains two different sensor models. The first, is a generic framing camera model written from scratch. The second is a generic line scan camera model based on code from BAE Systems Information and Electronic Systems Integration Inc.

Using CSM-CameraModel

This library is a CSM plugin library that is intended to be dynamically loaded at run time along side the CSM API library.

Once, the library is loaded, it can be accessed through the CSM Plugin interface. For an example of how to do through the CSM c++ interface see the SensorModelFactory class in SensorUtils. For an example of how to do this through the CSM Python bindings see this notebook.

From the CSM Plugin interface, a generic framing camera model (USGS_ASTRO_FRAME_SENSOR_MODEL) or generic line scan camera model (USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL) can be instantiated from suitable Image Support Data (ISD). Under the CSM standard, each plugin library can define its own ISD format. This library uses an auxiliary JSON formatted file that must be next to the image file passed to the CSM::ISD class. We provide an OpenAPI server for generating these, pfeffernusse. The swagger specification is located on swaggerhub.


Build Requirements

  • cmake 3.10 or newer
  • GNU-compatible Make
  • a c++11 compliant compiler

This repository has all of its external c++ dependencies included in it. The excellent header-only JSON library JSON for Modern C++ is included directly in the source code. The other two dependencies, the CSM API library, and gtest are included as git submodules. When you clone this library make sure you add the --recursive flag to your git clone command. Alaterntively, you can run git submodule update --init --recursive after cloning. The library can also be compiled against an installed versions of the CSM API by setting the BUILD_CSM flag to OFF during cmake configuration.

Building CSM-CameraModel

CSM-CameraModel uses a standard cmake build system. To compile the library, and tests use the following commands:

  1. mkdir build && cd build
  2. cmake .. && cmake --build .

Testing CSM-CameraModel

All of the tests for CSM-CameraModel are written in the googletests framework and are run via ctest. To run all of the tests simply run ctest in the build.

All of the tests are purposefully written to use generic data that values have been hand validated for. This data can be found under tests/data.

usgscsm's People

Contributors

jlaura avatar jessemapel avatar kberryusgs avatar astrokew78 avatar twilson271828 avatar acpaquette avatar makaylas avatar austinsanders avatar scsides avatar sgstapleton avatar ladoramkershner avatar oleg-alexandrov avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.