]> OzVa Git service - rust_fft/commitdiff
"""fixed""" rust LUT implementation
authorMax Value <greenwoodw50@gmail.com>
Wed, 8 Oct 2025 09:59:04 +0000 (10:59 +0100)
committerMax Value <greenwoodw50@gmail.com>
Wed, 8 Oct 2025 09:59:04 +0000 (10:59 +0100)
src/correct.rs
src/main.rs

index 2fc909babf89de0cf0ca313691a41b006e183944..6d04d48dc122a3eacb5c1ab11851ef61e6ab5f16 100644 (file)
@@ -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<u8> = 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);
index dc73dc2631b597811e19e261170aeb217f4905e6..442b3fe6f6da68f09caf0b19765a5fd280f3ebc4 100644 (file)
@@ -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<dyn std::error::Error>> {
-
-
-       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::<f32>::new(WINDOW_SIZE, FftDirection::Forward);
        let inverse_transform = Radix4::<f32>::new(WINDOW_SIZE, FftDirection::Inverse);