From 34f1ed666c720ba803fd8af299e5483561fdd0a8 Mon Sep 17 00:00:00 2001 From: Max Value Date: Wed, 8 Oct 2025 10:59:04 +0100 Subject: [PATCH] """fixed""" rust LUT implementation --- src/correct.rs | 20 ++++++++++++++------ src/main.rs | 24 ------------------------ 2 files changed, 14 insertions(+), 30 deletions(-) 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); -- 2.39.2