pub struct HqParams {
pub auto_strength: bool,
pub noise_floor: bool,
pub sigma_override: Option<f32>,
pub temporal_confidence: bool,
pub thsad_scale: f32,
pub sigma_scale: f32,
pub windowed_noise_estimation: bool,
}Expand description
Parameters for the quality-focused nlmeans-hq variant.
The measured noise level drives both the effective strength and the distance floor, so the weighting adapts to how noisy the source really is.
Fields§
§auto_strength: boolReads strength as a multiplier on the noise level, making the
effective FFmpeg-style strength strength * sigma_eff * 255.
Defaults to true.
noise_floor: boolSubtracts the expected noise floor from patch distances before weighting, so a match is not penalised for the noise it carries.
Defaults to true.
sigma_override: Option<f32>A fixed noise standard deviation in [0, 1] units, replacing the
automatic per-frame estimate.
None, the default, measures the noise in each pushed frame and
smooths it over time. Some applies one fixed value to every
frame instead.
The CLI takes this in 8-bit units through --hq-sigma and
divides by 255.
temporal_confidence: boolWeights each temporal neighbour by how well it block-matches the centre frame, so occlusion or a change of content collapses its contribution rather than blurring it in.
Only has an effect when temporal_radius is above 0. Defaults to
true.
thsad_scale: f32A multiplier on the per-pixel mismatch threshold, which sets how much extra SAD a block tolerates before its confidence starts to fall.
Higher values tolerate larger mismatches. Defaults to 1.0.
sigma_scale: f32A multiplier applied to each channel’s measured sigma before it folds into the running estimate.
1.0, the default, keeps the measurement as it is. This does
nothing when sigma_override is set, because the estimator never
runs in that case.
The CLI takes this as --hq-sigma-scale.
windowed_noise_estimation: boolEstimates noise fresh from each submit’s own window, instead of smoothing it with an exponential average carried forward from every earlier frame the stream has folded.
false, the default, keeps the temporal EMA every calibrated
preset assumes. true makes the automatic estimate depend only
on the frames currently in the window, so a
crate::frame::PlanarDenoiser::reseed targeting frame n and
a continuous stream that reaches frame n compute the same
sigma, regardless of how each got there. This does nothing when
sigma_override pins a fixed value, because the estimator never
runs in that case.