pub struct MergeMertens {
pub contrast_weight: f32,
pub saturation_weight: f32,
pub exposure_weight: f32,
}Expand description
HDR Merging using Mertens exposure fusion algorithm.
Fuses multiple differently-exposed images into a single image with expanded dynamic range using perceptually-motivated weight maps.
The algorithm computes three weight maps per image:
- Contrast: absolute value of the Laplacian (edge strength)
- Saturation: standard deviation of the color channels per pixel
- Exposure: how close the luminance is to 0.5 (optimal exposure)
These are multiplied together and normalized across all images to produce the final fused result.
Fields§
§contrast_weight: f32§saturation_weight: f32§exposure_weight: f32Implementations§
Source§impl MergeMertens
impl MergeMertens
pub fn new() -> Self
Sourcepub fn with_contrast_weight(self, w: f32) -> Self
pub fn with_contrast_weight(self, w: f32) -> Self
Sets the contrast weight (default 1.0).
Sourcepub fn with_saturation_weight(self, w: f32) -> Self
pub fn with_saturation_weight(self, w: f32) -> Self
Sets the saturation weight (default 1.0).
Sourcepub fn with_exposure_weight(self, w: f32) -> Self
pub fn with_exposure_weight(self, w: f32) -> Self
Sets the exposure weight (default 1.0).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MergeMertens
impl RefUnwindSafe for MergeMertens
impl Send for MergeMertens
impl Sync for MergeMertens
impl Unpin for MergeMertens
impl UnsafeUnpin for MergeMertens
impl UnwindSafe for MergeMertens
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().