pub struct AdaptiveThreshold;Expand description
自适应阈值计算器
Implementations§
Source§impl AdaptiveThreshold
impl AdaptiveThreshold
Sourcepub fn calculate(view: &ArrayView2<'_, u8>, sigma: f32) -> (f32, f32)
pub fn calculate(view: &ArrayView2<'_, u8>, sigma: f32) -> (f32, f32)
基于图像直方图统计计算 Canny 高低阈值。
§分支策略
§极暗场景(中位数 <= 10)
大部分像素为背景黑色,中位数法失效,改用高百分位数法(p70/p85)。
§高亮背景场景(中位数 > 150)
典型真实照片:背景为白纸/浅色桌面,中位数反映背景亮度而非边缘强度。 进一步细分为极度高亮(动态范围 < 30 或高亮区集中度 < 10)和正常高亮两个子分支。
§正常场景(10 < 中位数 <= 150)
标准中位数法:low = (1-sigma)*median,high = (1+sigma)*median, 同时对 high 施加 200.0 的硬上限,防止边界情况产生过高阈值。
sigma 推荐值为 0.33。
Sourcepub fn fast_median(view: &ArrayView2<'_, u8>) -> u8
pub fn fast_median(view: &ArrayView2<'_, u8>) -> u8
辅助方法:快速计算近似中值(用于低功耗场景)。
以步长 4 采样,牺牲精度换取速度,适用于实时预览帧。
Auto Trait Implementations§
impl Freeze for AdaptiveThreshold
impl RefUnwindSafe for AdaptiveThreshold
impl Send for AdaptiveThreshold
impl Sync for AdaptiveThreshold
impl Unpin for AdaptiveThreshold
impl UnsafeUnpin for AdaptiveThreshold
impl UnwindSafe for AdaptiveThreshold
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
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 more