Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anshap1719/image-hdr
An implementation of HDR Radiance Estimation using Poisson Photon Noise Estimator for creating HDR image from a set of images
https://github.com/anshap1719/image-hdr
hdr hdr-image histogram image image-processing
Last synced: 2 months ago
JSON representation
An implementation of HDR Radiance Estimation using Poisson Photon Noise Estimator for creating HDR image from a set of images
- Host: GitHub
- URL: https://github.com/anshap1719/image-hdr
- Owner: anshap1719
- License: mit
- Created: 2022-11-23T00:45:07.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-24T13:22:07.000Z (10 months ago)
- Last Synced: 2024-04-25T18:02:35.554Z (9 months ago)
- Topics: hdr, hdr-image, histogram, image, image-processing
- Language: Rust
- Homepage:
- Size: 29.3 KB
- Stars: 17
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# image-hdr ![](https://github.com/anshap1719/image-hdr/actions/workflows/rust.yml/badge.svg)
This is a rust library which implements the HDR merging algorithm for camera images taken with different exposure
times (or with bracketing). It uses the algorithms described
in https://www.cl.cam.ac.uk/research/rainbow/projects/noise-aware-merging/2020-ppne-mle.pdf, and uses "Poisson Photon
Noise Estimator" equations to estimate final radiances at each pixel position.## Current State
The library is still in early stages of development, but aims to provide a crate that can handle all HDR merging needs.
Towards that end, the following todos are the top priority:- Tone mapping algorithm implementations.
- Improve performance.## Dependencies
- image-rs: Uses DynamicImage as the output format and storage format between calculations.
- rawloader: For supporting RAW image formats.
- rayon: For doing point calculations in parallel.
- kamadak-exif: For getting image's metadata, specifically exposure time and gain (ISO).## Usage
```
let paths = vec!["src/image1.tif", "src/image2.tif", "src/image3.tif"];
let hdr_merge = image_hdr::hdr_merge_images(paths);
let stretched = apply_histogram_stretch(&fusion);stretched
.to_rgba16()
.save(format!("src/hdr_merged.tiff"))
.unwrap();
```## Samples
### Given the following 3 exposures:
![alt "1/640s"](https://image-hdr-assets.s3.ap-south-1.amazonaws.com/DSC00001+Large.jpeg)
![alt "1/4000s"](https://image-hdr-assets.s3.ap-south-1.amazonaws.com/DSC00002+Large.jpeg)
![alt "1/80s"](https://image-hdr-assets.s3.ap-south-1.amazonaws.com/DSC00003+Large.jpeg)### Resulting unprocessed image:
![alt "Merged image"](https://image-hdr-assets.s3.ap-south-1.amazonaws.com/hdr_merged+Large.jpeg)
### After basic processing (Levels and Contrast):
![alt "Processed image"](https://image-hdr-assets.s3.ap-south-1.amazonaws.com/Processed+Large.jpeg)
## Contributing
Bug reports and pull requests welcome at https://github.com/anshap1719/image-hdr
## Citations
- Noise-Aware Merging of High Dynamic Range Image Stacks without Camera Calibration by Param Hanji, Fangcheng Zhong, and
Rafa l K. Mantiuk (https://www.cl.cam.ac.uk/~rkm38/pdfs/hanji2020_noise_aware_HDR_merging.pdf)