Skip to content

Commit

Permalink
fix: add square root back to distance fn
Browse files Browse the repository at this point in the history
  • Loading branch information
ozwaldorf committed Jul 31, 2023
1 parent 38fab39 commit 4040969
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/interpolation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ pub trait InterpolatedRemapper<'a>: Sync {
}

type ColorTree = KdTree<f64, u16, 3, 4, u16>;
fn squared_euclidean(a: &[f64; 3], b: &[f64; 3]) -> f64 {
fn euclidean(a: &[f64; 3], b: &[f64; 3]) -> f64 {
let dl = (a[0] - b[0]).powi(2);
let da = (a[1] - b[1]).powi(2);
let db = (a[2] - b[2]).powi(2);
dl + da + db
(dl + da + db).sqrt()
}
4 changes: 2 additions & 2 deletions src/interpolation/nearest_neighbor.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use image::Rgb;
use oklab::{srgb_to_oklab, Oklab};

use super::{squared_euclidean, ColorTree, InterpolatedRemapper};
use super::{euclidean, ColorTree, InterpolatedRemapper};
use crate::{GenerateLut, Image};

/// Simple remapper that doesn't do any interpolation. Mostly used internally by the other
Expand Down Expand Up @@ -40,7 +40,7 @@ impl<'a> InterpolatedRemapper<'a> for NearestNeighborRemapper<'a> {
let Oklab { l, a, b } = srgb_to_oklab(pixel.0.into());
let (_, nearest) = self.tree.nearest_one(
&[l as f64 * self.lum_factor, a as f64, b as f64],
&squared_euclidean,
&euclidean,
);
*pixel = Rgb(self.palette[nearest as usize]);
}
Expand Down
6 changes: 3 additions & 3 deletions src/interpolation/rbf/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::f64;

use kiddo::float::{kdtree::KdTree, neighbour::Neighbour};

use super::{squared_euclidean, ColorTree, InterpolatedRemapper};
use super::{euclidean, ColorTree, InterpolatedRemapper};
use crate::GenerateLut;

pub mod gaussian;
Expand Down Expand Up @@ -70,7 +70,7 @@ impl<'a, F: RadialBasisFn> InterpolatedRemapper<'a> for RBFRemapper<F> {
match &self.tree {
None => {
for p_color in self.palette.iter() {
let distance = squared_euclidean(&color, p_color);
let distance = euclidean(&color, p_color);
let weight = self.rbf.radial_basis(distance);

numerator[0] += p_color[0] * weight;
Expand All @@ -81,7 +81,7 @@ impl<'a, F: RadialBasisFn> InterpolatedRemapper<'a> for RBFRemapper<F> {
},
Some((nearest, tree)) => {
for Neighbour { item, distance } in
tree.nearest_n(&color, *nearest, &squared_euclidean)
tree.nearest_n(&color, *nearest, &euclidean)
{
let weight = self.rbf.radial_basis(distance);
let p_color = self.palette[item as usize];
Expand Down

0 comments on commit 4040969

Please sign in to comment.