13 releases
0.2.2 | Nov 10, 2024 |
---|---|
0.2.1 | Oct 13, 2024 |
0.1.10 | Oct 6, 2024 |
0.1.8 | Jul 23, 2024 |
0.1.5 | Jun 23, 2024 |
#516 in Video
122 downloads per month
125KB
3.5K
SLoC
Histogram equalization in Rust
There is some implementation of CLAHE (contrast-limited adaptive histogram equalization), AHE (adaptive histogram equalization), and histogram equalization performed in different color spaces.
All methods may perform histogram equalization in:
- YUV (YCgCo subtype) always with 256 hist bins for performance purposes.
- HSV
- HSL
- CIE L*a*b
- CIE L*u*v
- Oklab
- Jzazbz
- Oklch
All color spaces as it is have different properties and of course results.
There is no implementation for gray images.
Example
clahe_luv_rgb(
src_bytes,
stride as u32,
&mut dst_bytes,
stride as u32,
dimensions.0,
dimensions.1,
4f32,
ClaheGridSize::new(8, 8),
128,
);
How to use with image
crate
let img = ImageReader::open("assets/asset_1.jpg")
.unwrap()
.decode()
.unwrap();
let dimensions = img.dimensions();
let channels = 3;
let stride = dimensions.0 as usize * channels;
let mut dst_bytes: Vec<u8> = vec![0; stride * dimensions.1 as usize];
let src_bytes = img.as_bytes();
hist_equal_hsv_rgb(
src_bytes,
stride as u32,
&mut dst_bytes,
stride as u32,
dimensions.0,
dimensions.1,
128,
);
image::save_buffer(
"converted_eq_hsv.jpg",
&dst_bytes,
dimensions.0,
dimensions.1,
image::ExtendedColorType::Rgb8,
)
.unwrap();
Results example
Clahe
Original
CLAHE
Ahe
Original
Ahe
This project is licensed under either of
at your option.
Dependencies
~5MB
~105K SLoC