pub struct Nl4dOptions {
pub motion: MotionSearch,
pub sigma: Option<f32>,
pub sigma_scale: f32,
pub thsad_scale: f32,
pub refine: u32,
pub spatial_radius: u32,
pub lambda_ht: Option<f32>,
pub lambda_ht_scale: f32,
pub c_min: f32,
pub mismatch_scale: f32,
pub confidence_variance: bool,
pub windowed_noise_estimation: bool,
}Expand description
Settings for Algorithm::Nl4d.
nl4d runs the HQ front end only for its machinery, the frame ring, the motion field, and the noise estimate. Nothing weights or averages patches the NLM way, so the NLM knobs are absent here and the fields below are the whole surface.
The temporal radius comes from DenoiserOptions::mode, which has to
be Temporal { .. }. Motion tracking is always on, because the
grouping kernel reads the motion field and confidence scores it
produces.
lambda_ht has a per-plane default. None resolves through
nl4d_default_lambda_ht once the plane being denoised is known.
lambda_ht_scale then multiplies whichever value that resolves to.
Every other default comes from [Nl4dParams::default].
Fields§
§motion: MotionSearchHow motion between frames is tracked.
sigma: 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.
sigma_scale: f32A multiplier applied to the measured noise level before anything reads it. Defaults to 1.0.
This does nothing when sigma pins the noise level, because the
estimator never runs in that case.
thsad_scale: f32A multiplier on the per-block mismatch threshold, which sets how much extra SAD a block tolerates before its confidence starts to fall. Defaults to 1.0.
Higher values tolerate larger mismatches.
refine: u32Half-width of the refine window searched around each neighbour
frame’s motion-predicted position, in 1..=4. Defaults to 2.
spatial_radius: u32Half-width of the spatial candidate window searched in the centre
frame, in 1..=16. Defaults to 9.
lambda_ht: Option<f32>Hard-threshold multiplier on the propagated coefficient sigma. Higher removes more noise and more fine detail.
None resolves through nl4d_default_lambda_ht, which returns
a different value for luma than for chroma.
lambda_ht_scale: f32A multiplier applied to the resolved lambda_ht. Defaults to
1.0.
It scales an explicit lambda_ht and the calibrated per-plane
default alike, so one value moves both planes together. Has to
be finite and in [0.1, 10.0].
c_min: f32The confidence floor below which a whole neighbour block is
skipped rather than scored, in [0, 1). Defaults to 0.05. Only
affects how much compute a submit spends, never which candidates
are admitted once they are scored.
mismatch_scale: f32A multiplier on the mismatch variance a poorly matched temporal member carries into the hard threshold. Defaults to 1.0.
The variance grows with the square of this. The mechanism
saturates well before the top of its accepted range, see
[crate::nl4d::Nl4dParams::mismatch_scale].
confidence_variance: boolWhether a temporal member’s mismatch variance reaches the
hard-threshold shrinkage at all. Defaults to true. See
[crate::nl4d::Nl4dParams::confidence_variance].
windowed_noise_estimation: boolEstimates noise fresh from each frame’s own window instead of
smoothing it across the whole stream’s history. Defaults to
false, matching every calibrated preset.
av-denoise-vs turns this on unconditionally, because a
VapourSynth filter has to return the same pixels for a frame no
matter what order frames were requested in, and history-dependent
estimation breaks that guarantee under random access. See
HqParams::windowed_noise_estimation.
Trait Implementations§
Source§impl Clone for Nl4dOptions
impl Clone for Nl4dOptions
Source§fn clone(&self) -> Nl4dOptions
fn clone(&self) -> Nl4dOptions
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more