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.
clahe_luv_rgb(
src_bytes,
stride as u32,
&mut dst_bytes,
stride as u32,
dimensions.0,
dimensions.1,
4f32,
ClaheGridSize::new(8, 8),
128,
);
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();
This project is licensed under either of
at your option.