Skip to content

saronic-technologies/libdebayer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3ebb13f · Oct 22, 2024

History

28 Commits
Sep 16, 2024
Sep 16, 2024
Sep 16, 2024
Oct 19, 2024
Sep 16, 2024
Sep 9, 2024
Sep 9, 2024
Sep 5, 2024
Sep 16, 2024
Sep 25, 2024
Sep 25, 2024
Sep 5, 2024
Sep 16, 2024
Sep 16, 2024
Sep 5, 2024
Sep 5, 2024

Repository files navigation

libdebayer

A CUDA accelerated debayering library with C/C++ and Rust support.

Dev Setup

nix develop

This enters a dev shell with all of the necessary build dependencies.

Library Breakdown

libdebayer

This is a simple C API that wraps the underlying CUDA kernels. The C API assumes the images are already in GPU memory. libdebayer implements 3 debayering algorithms:

libdebayercpp

This provides a higher level C++ API that performs cudaMemcpy's from host to device. An example of how to use this library is in benchmark/cpp.

libdebayer-rs

This provides a higher level Rust API with TryFrom traits to go from an OpenCV Mat to a debayered Mat. An example of how to use this library is in rust/examples/test_benchmark.rs. This test benchmark is identical to the benchmark/cpp program.

Run Rust Example

nix develop
cd rust
KODAK_FOLDER_PATH="<path-to-benchmark-kodak-files>" cargo run --example test_benchmark

Benchmark

libdebayer is benchmarked against OpenCV and NPP (Nvidia Performance Primitives). To run the benchmark for the Malvar 2004 implementation run the following: nix run .#kodak_benchmark_cpp

Benchmark Results

  • OCV-EA gets Average PSNR: 28.616 dB
  • NPP gets Average PSNR: 28.8522 dB
  • libdebayer Malvar 2004 CUDA kernel gets Average PSNR: 33.4554 dB (+4.8394 dB)
  • libdebayer Menon 2007 CUDA kernel gets Average PSNR: 37.6907 dB (+9.0747 dB)
  • Eliminates color fringing

Image Results

Example output from OpenCV-EA:

OpenCV-EA

Example output from NPP (Nvidia Performance Primitives):

NPP

Example output from our Malvar 2004 CUDA kernel:

malvar2004

Example outputs from our Menon 2007 CUDA kernel:

menon2007

menon2007-lighthouse