Add euclid-in-oklab distance option
This commit is contained in:
parent
2a862a69d6
commit
4fcf68aef2
2 changed files with 16 additions and 2 deletions
|
|
@ -94,6 +94,8 @@ enum DitherDifference {
|
|||
HyAbClamp,
|
||||
Ciede2000,
|
||||
Ciede2000Clamp,
|
||||
Oklab,
|
||||
OklabClamp,
|
||||
Manhattan,
|
||||
ManhattanClamp,
|
||||
}
|
||||
|
|
@ -187,6 +189,8 @@ impl DitherCmd {
|
|||
HyAbClamp => self.run_cd::<C, DiffClamp<DiffHyAb>>(image),
|
||||
Ciede2000 => self.run_cd::<C, DiffCiede2000>(image),
|
||||
Ciede2000Clamp => self.run_cd::<C, DiffClamp<DiffCiede2000>>(image),
|
||||
Oklab => self.run_cd::<C, DiffCiede2000>(image),
|
||||
OklabClamp => self.run_cd::<C, DiffClamp<DiffCiede2000>>(image),
|
||||
Manhattan => self.run_cd::<C, DiffManhattan>(image),
|
||||
ManhattanClamp => self.run_cd::<C, DiffClamp<DiffManhattan>>(image),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ use std::marker::PhantomData;
|
|||
|
||||
use image::RgbaImage;
|
||||
use palette::{
|
||||
Clamp, IntoColor, Lab, Srgb,
|
||||
color_difference::{Ciede2000, HyAb},
|
||||
Clamp, IntoColor, Lab, Oklab, Srgb,
|
||||
color_difference::{Ciede2000, EuclideanDistance, HyAb},
|
||||
};
|
||||
use rand::{Rng, SeedableRng, rngs::SmallRng};
|
||||
|
||||
|
|
@ -65,6 +65,16 @@ impl<C: IntoColor<Lab>> Difference<C> for DiffCiede2000 {
|
|||
}
|
||||
}
|
||||
|
||||
pub struct DiffOklab;
|
||||
|
||||
impl<C: IntoColor<Oklab>> Difference<C> for DiffOklab {
|
||||
fn diff(a: C, b: C) -> f32 {
|
||||
let a: Oklab = a.into_color();
|
||||
let b: Oklab = b.into_color();
|
||||
a.distance(b)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct DiffManhattan;
|
||||
|
||||
impl<C: AsRef<[f32; 3]>> Difference<C> for DiffManhattan {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue