From: Max Value Date: Wed, 8 Oct 2025 09:59:04 +0000 (+0100) Subject: """fixed""" rust LUT implementation X-Git-Url: https://git.ozva.co.uk/?a=commitdiff_plain;h=34f1ed666c720ba803fd8af299e5483561fdd0a8;p=rust_fft """fixed""" rust LUT implementation --- diff --git a/src/correct.rs b/src/correct.rs index 2fc909b..6d04d48 100644 --- a/src/correct.rs +++ b/src/correct.rs @@ -14,7 +14,7 @@ impl Correcter { let npy = NpyFile::new(file).unwrap(); let strides = npy.strides().try_into().expect("Wrong number of dimentions!"); - let scaler = npy.shape()[0] as f64 / 255.; + let scaler = (npy.shape()[0] - 1) as f64 / 255.; let data: Vec = npy.into_vec().unwrap(); @@ -26,9 +26,9 @@ impl Correcter { } pub fn correct(&self, r: u8, g:u8, b:u8) -> [u8; 3] { - let r_scale = r as f64 * self.scaler * self.strides[0] as f64; - let g_scale = g as f64 * self.scaler * self.strides[1] as f64; - let b_scale = b as f64 * self.scaler * self.strides[2] as f64; + let r_scale = r as f64 * self.scaler; + let g_scale = g as f64 * self.scaler; + let b_scale = b as f64 * self.scaler; println!("scaler {}", self.scaler); println!("strides {:?}", self.strides); @@ -59,8 +59,16 @@ impl Correcter { println!("g remainder {}", g_remainder); println!("b remainder {}", b_remainder); - let i_upper = (r_upper + g_upper + b_upper) as usize; - let i_lower = (r_lower + g_lower + b_lower) as usize; + let i_upper = ( + (r_upper * self.strides[0] as f64) + + (g_upper * self.strides[1] as f64) + + (b_upper * self.strides[2] as f64) + ) as usize; + let i_lower = ( + (r_lower * self.strides[0] as f64) + + (g_lower * self.strides[1] as f64) + + (b_lower * self.strides[2] as f64) + ) as usize; println!("i upper {}", i_upper); println!("i lower {}", i_lower); diff --git a/src/main.rs b/src/main.rs index dc73dc2..442b3fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,8 +11,6 @@ use std::sync::mpsc::Sender; use rscam::{Camera, Config}; use image::ImageReader; -use rand::Rng; - mod correct; use crate::correct::Correcter; @@ -233,28 +231,6 @@ impl SampleBuffer { #[show_image::main] fn main () -> Result<(), Box> { - - - let mut rng = rand::rng(); - - let cor = Correcter::new("./cube.npy"); - - let r = rng.gen_range(0..255) as u8; - let g = rng.gen_range(0..255) as u8; - let b = rng.gen_range(0..255) as u8; - - println!("{}", r); - println!("{}", g); - println!("{}", b); - - let c = cor.correct(r, g, b); - - println!("{:?}", c); - - std::process::exit(1); - - - // pregenerate the fft transformers let forward_transform = Radix4::::new(WINDOW_SIZE, FftDirection::Forward); let inverse_transform = Radix4::::new(WINDOW_SIZE, FftDirection::Inverse);