Trait exoquant::optimizer::Optimizer
[−]
[src]
pub trait Optimizer { fn step(&self, colors: Vec<Colorf>, histogram: &[ColorCount]) -> Vec<Colorf>; fn optimize_palette(&self, colorspace: &ColorSpace, palette: &[Color], histogram: &Histogram, num_iterations: usize) -> Vec<Color> { ... } fn is_noop(&self) -> bool { ... } }
An interface for K-Means optimizers.
Required Methods
fn step(&self, colors: Vec<Colorf>, histogram: &[ColorCount]) -> Vec<Colorf>
Do one K-Means optimization step and return colors that better represent the histogram.
This is the one function custom implementations have to provide.
Provided Methods
fn optimize_palette(&self, colorspace: &ColorSpace, palette: &[Color], histogram: &Histogram, num_iterations: usize) -> Vec<Color>
Optimize a given palette with a number of K-Means iteration.
Examples:
let palette = Quantizer::create_palette(&histogram, &colorspace, 256); let palette = optimizer::KMeans.optimize_palette(&colorspace, &palette, &histogram, 16);
fn is_noop(&self) -> bool
Returns whether this Optimizer is a No-op implementation.
This is used to shortcut some functions that take an Optimizer as a paramter if the Optimizer won't do anything anyway.
Implementors
impl Optimizer for None
impl Optimizer for KMeans
impl Optimizer for WeightedKMeans