14 stable releases
new 2.3.2 | Feb 22, 2025 |
---|---|
2.2.4 | Aug 31, 2024 |
2.2.3 | Apr 21, 2024 |
1.4.3 | Nov 19, 2022 |
0.1.0 | Feb 9, 2019 |
#112 in Images
152 downloads per month
Used in 2 crates
42KB
1K
SLoC
oidn
Rust bindings to Intel’s Open Image Denoise library. Crate version numbers track the OIDN version they correspond to.
Documentation
Rust docs can be found here.
Open Image Denoise documentation can be found here.
Example
The crate provides a lightweight wrapper over the Open Image Denoise library,
along with raw C bindings exposed under oidn::sys
. Below is an example of
using the RT
filter from Open Image Denoise (the RayTracing
filter) to
denoise an image.
extern crate oidn;
fn main() {
// Load scene, render image, etc.
let input_img: Vec<f32> = // A float3 RGB image produced by your renderer
let mut filter_output = vec![0.0f32; input_img.len()];
let device = oidn::Device::new();
oidn::RayTracing::new(&device)
// Optionally add float3 normal and albedo buffers as well
.srgb(true)
.image_dimensions(input.width() as usize, input.height() as usize);
.filter(&input_img[..], &mut filter_output[..])
.expect("Filter config error!");
if let Err(e) = device.get_error() {
println!("Error denosing image: {}", e.1);
}
// Save out or display filter_output image
}
The simple example loads a JPG, denoises it, and saves the
output image to a JPG. The denoise_exr example loads an
HDR color EXR file, denoises it and saves the tonemapped result out to a JPG.
The denoise_exr
app can also take albedo and normal data through additional
EXR files.
Dependencies
~225–670KB
~16K SLoC