All Projects → USGS-Astrogeology → usgscsm

USGS-Astrogeology / usgscsm

Licence: BSD-3-Clause license
This repository stores USGS Community Sensor Model (CSM) camera models

Programming Languages

C++
36643 projects - #6 most used programming language
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to usgscsm

planetMagFields
Routines to plot magnetic fields of planets in our solar system
Stars: ✭ 27 (+92.86%)
Mutual labels:  planetary-data, planetary
826-x-ip-camera
For the examination of an mipc connected camera
Stars: ✭ 49 (+250%)
Mutual labels:  camera
TakePhoto
🔥Kongzue的APP拍照&相册选择工具
Stars: ✭ 41 (+192.86%)
Mutual labels:  camera
CamRaptor
CamRaptor is a tool that exploits several vulnerabilities in popular DVR cameras to obtain network camera credentials.
Stars: ✭ 106 (+657.14%)
Mutual labels:  camera
Vision CoreML-App
This app predicts the age of a person from the picture input using camera or photos gallery. The app uses Core ML framework of iOS for the predictions. The Vision library of CoreML is used here. The trained model fed to the system is AgeNet.
Stars: ✭ 15 (+7.14%)
Mutual labels:  camera
Lassi-Android
All in 1 picker library for android.
Stars: ✭ 108 (+671.43%)
Mutual labels:  camera
three-orbitcontrols
is the three.js OrbitControls from official repo examples
Stars: ✭ 80 (+471.43%)
Mutual labels:  camera
linux nvidia jetson
Allied Vision CSI-2 camera driver for NVIDIA Jetson Systems. Currently supporting Nano, TX2, AGX Xavier, and Xavier NX. Support for TX2 NX coming soon.
Stars: ✭ 68 (+385.71%)
Mutual labels:  camera
RxCamera2
Rx Java 2 wrapper for Camera2 google API
Stars: ✭ 27 (+92.86%)
Mutual labels:  camera
gnerf
[ ICCV 2021 Oral ] Our method can estimate camera poses and neural radiance fields jointly when the cameras are initialized at random poses in complex scenarios (outside-in scenes, even with less texture or intense noise )
Stars: ✭ 152 (+985.71%)
Mutual labels:  camera
python-amcrest
A Python 2.7/3.x module for Amcrest and Dahua Cameras using the SDK HTTP API.
Stars: ✭ 159 (+1035.71%)
Mutual labels:  camera
scrapsort
A convnet classifier and hardware device to automatically sort recycling materials.
Stars: ✭ 29 (+107.14%)
Mutual labels:  camera
eufy security
Home Assistant integration to manage Eufy Security devices as cameras, home base stations, doorbells, motion and contact sensors.
Stars: ✭ 242 (+1628.57%)
Mutual labels:  camera
rawtoaces
RAW to ACES Utility
Stars: ✭ 108 (+671.43%)
Mutual labels:  camera
jeelizPupillometry
Real-time pupillometry in the web browser using a 4K webcam video feed processed by this WebGL/Javascript library. 2 demo experiments are included.
Stars: ✭ 78 (+457.14%)
Mutual labels:  camera
ng-webcam
ngWebcam is an AngularJS directive for capturing images from your computer's camera, and delivering then to you as data uri.
Stars: ✭ 14 (+0%)
Mutual labels:  camera
XGImagePickerController
iOS相册图片/视频选择器
Stars: ✭ 32 (+128.57%)
Mutual labels:  camera
syntalos
Flow-based synchronized parallel DAQ from diverse sources and flexible control for neuroscience experiments
Stars: ✭ 13 (-7.14%)
Mutual labels:  camera
vision-camera-image-labeler
VisionCamera Frame Processor Plugin to label images using MLKit Vision
Stars: ✭ 62 (+342.86%)
Mutual labels:  camera
ProPicker
ProPicker is a file picker (image, video, file) library for Android. It helps you to pick any file and return the result in a convenient way
Stars: ✭ 25 (+78.57%)
Mutual labels:  camera

USGSCSM

USGSCSM

This library provides Community Sensor Model (CSM)-compliant sensor models created by the USGS Astrogeology Science Center.

USGSCSM contains three 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. The third is a generic synthetic-aperture radar (SAR) sensor model.

Using USGSCSM

This library is a CSM plugin library that is intended to be dynamically loaded at run-time alongside 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), line scan camera model (USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL), or a SAR model (USGS_ASTRO_SAR_SENSOR_MODEL) can be instantiated from a suitable Image Support Data (ISD) file.

Camera model format and model state

Under the CSM standard, each plugin library can define its own ISD camera model 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. You can also use ALE directly with metakernels to generate the auxiliary JSON file.

The camera model read from an ISD file is converted at load time to an internal representation which makes camera operations more efficient. This optimized model state can be saved to disk as a JSON-formatted file, be used interchangeably with the original ISD model, and also shared among various photogrammetric packages.

The camera model state can be modified by an application of a rotation and translation, which is necessary in order to refine a camera's position and orientation in photogrammetry, while these operations are not easy to express in the original ISD format.

This library provides functionality for saving the model state file, as discussed in the next section.

Camera model processsing

USGSCSM ships with a program named usgscsm_cam_test, which is able to load a CSM camera model, whether in the original ISD format or its model state representation, export the model state, and perform basic camera operations, as described in its documentation.

Enabling logging

Logging of the internal operations in the sensor models can be enabled by setting the USGSCSM_LOG_FILE environment variable to the file the log should be written to. To have the logging information printed to the standard output or standard error, set this to stdout or stderr. Note that these logs can become several GB in size.


Build requirements

  • cmake 3.15 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 three dependencies, The Abstraction Library for Ephemerides, the CSM API library, and googletest are included as git submodules. When you clone this library make sure you add the --recursive flag to your git clone command. Alternatively, you can run git submodule update --init --recursive after cloning.

You can also install the build requirements using Conda with the provided environment.yml file. The following commands will create a new environment to build against. Note that googletest cannot be installed via anaconda and must be available within the source code. You can remove the googletest dependency by disabling the tests.

conda env create -n usgscsm -f environment.yml

Building USGSCSM

USGSCSM 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 .

If you are using external dependencies via Conda or system level installations add the -DUSGSCSM_EXTERNAL_DEPS=ON flag to the cmake command.

You can also disable the tests and the googletest dependency by adding the -DUSGSCSM_BUILD_TESTS=OFF flag to the cmake command.

Testing USGSCSM

All of the tests for USGSCSM are written in the googletest 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. This data can be found under tests/data.

Code style

This software package uses a modified form of the Google C++ Style Guide.

Here are some exceptions:

  1. Non-const pass-by-reference is allowed.
  2. No copyright notice is necessary
  3. Static/global string constants are allowed to be std::strings, rather than C-style strings

To attempt to automatically format any new code to this style, run: clang-format -style=Google -i file.cpp For more information see: ClangFormat

To check for compliance, run: cpplint file.cpp and ignore errors in the list of exclusions above. For more information, see: cpplint.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].