1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use crate::image::Image;
use crate::error::ImgProcResult;
pub fn scale_channels(input: &Image<f64>, current_min: f64, scaled_min: f64, current_max: f64, scaled_max: f64) -> ImgProcResult<Image<f64>> {
Ok(input.map_channels(|channel| {
(channel - current_min) / (current_max - current_min) * (scaled_max - scaled_min) + scaled_min
}))
}
pub fn f64_to_u8_scale(input: &Image<f64>, scale: u32) -> Image<u8> {
input.map_channels(|channel| (channel / scale as f64 * 255.0).round() as u8)
}
pub fn u8_to_f64_scale(input: &Image<u8>, scale: u32) -> Image<f64> {
input.map_channels(|channel| ((channel as f64 / 255.0) * scale as f64))
}