3. 坏点分类:静态坏点、动态坏点、Cluster坏点与Hot Pixel

坏点这东西,说白了就是传感器上的「瑕疵像素」。我做了这么多年ISP,见过各种各样的坏点,有的好修,有的特别棘手。今天咱们就把它们分门别类,讲清楚。

为什么要分类?因为不同类型的坏点,检测和修复策略完全不同。你想想看,一个固定不动的死点和一颗随机闪烁的热噪点,处理逻辑能一样吗?

3.1 静态坏点(Static Defect)

静态坏点,也叫死点。它的特点是——永远固定在一个值上,不随光照变化。

  • 全黑场景:它不黑,要么很亮(亮点),要么很暗(暗点)
  • 正常场景:它不跟随周围像素变化,突兀地杵在那儿
  • 成因:制造缺陷、物理损伤、长期老化

关键指标:静态坏点的响应值通常偏离正常值超过 80% 以上,且多帧之间几乎不变。

我在项目中遇到过一批模组,出厂时全检没问题,用了三个月后陆续出现静态坏点。后来发现是封装应力导致的微裂纹。嗯,这种问题很难在产线端完全拦截。

3.2 动态坏点(Dynamic Defect)

动态坏点就「调皮」多了。它有时候正常,有时候不正常。你拍十张照片,可能只有两三张能看到它。

特性 静态坏点 动态坏点
帧间稳定性 几乎不变 随机变化
检测难度 低(单帧即可) 高(需多帧统计)
典型表现 固定亮点/暗点 闪烁、忽明忽暗
修复策略 直接替换 需结合时域滤波

动态坏点的检测,我个人习惯用多帧中值法。连续拍 N 帧,对每个像素取中值,如果某帧偏离中值超过阈值,就标记为动态坏点。

小技巧:动态坏点检测的帧数建议取 5-7 帧。太少不够稳定,太多会引入运动模糊干扰。

3.3 Cluster坏点(坏点簇)

Cluster坏点,就是坏点扎堆出现。这不是单个像素的问题,而是一小片区域都坏了。

为什么会这样?我遇到过几种情况:

  • 灰尘颗粒:落在传感器表面,遮挡一片区域
  • 划伤:微透镜阵列被划伤,影响多个像素
  • Bayer阵列缺陷:CFA(彩色滤光片阵列)局部脱落或错位
  • 电路短路:相邻像素的读出电路互相干扰

注意:Cluster坏点不能用简单的邻域插值修复。因为周围像素本身也是坏的,插值出来的值还是错的。必须用更大范围的参考像素,或者结合另一通道的信息。

我曾经处理过一个案子,手机摄像头拍出来的照片左上角总有一块紫色斑块。排查了三天,最后发现是镜头模组组装时掉进去的一粒金属屑,在传感器表面造成了约 15x15 像素的Cluster坏点。这种物理损伤,算法只能尽量掩盖,无法根治。

3.4 Hot Pixel(热像素)

Hot Pixel,热像素,这个名字很形象——它跟温度直接相关。

传感器工作时会发热,温度升高后,某些像素的暗电流会异常增大,导致输出值偏高。温度降下来,它又恢复正常了。

Hot Pixel 的几个特征:

  1. 温度敏感:曝光时间越长、环境温度越高,越明显
  2. 可逆性:冷却后恢复正常,不是永久损坏
  3. 分布规律:通常集中在传感器边缘(散热较差的位置)
  4. 亮度相关:暗场下最明显,亮场下被信号淹没

实测数据:在 60°C 环境下,Hot Pixel 数量可能是 25°C 时的 5-10 倍。所以手机拍夜景发烫时,噪点突然变多,不全是算法问题,Hot Pixel 贡献很大。

处理 Hot Pixel,我建议用暗场校准法。在完全遮光条件下拍一张暗帧,记录每个像素的暗电流值,然后在正常拍摄时减去这个底噪。但要注意,暗帧需要定期更新,因为传感器老化后暗电流会变化。

3.5 四种坏点的关系与对比

为了让你看得更清楚,我画了一张结构图,把这四种坏点的关系梳理了一下:

坏点分类体系 图像传感器坏点 按时间稳定性 按空间分布 按温度相关性 静态坏点 动态坏点 Cluster坏点 Hot Pixel 各类型核心特征 • 静态坏点:帧间稳定,偏离正常值 >80%,单帧可检测 • 动态坏点:帧间随机变化,需多帧统计,检测难度高 • Cluster坏点:空间聚集,邻域插值失效,需大范围修复 • Hot Pixel:温度敏感,暗场明显,可逆,需暗帧校准 • 实际场景中,四种坏点可能同时存在,需综合处理

3.6 实际项目中的处理优先级

在实际项目中,我不会对所有坏点一视同仁。处理优先级是这样的:

  1. Cluster坏点 > 静态坏点 > 动态坏点 > Hot Pixel
  2. Cluster坏点影响面积大,视觉上最明显,必须优先处理
  3. 静态坏点虽然单个影响小,但数量多了也难看
  4. 动态坏点和Hot Pixel,很多时候靠多帧降噪就能掩盖

我的经验:在产线端,我会把静态坏点和Cluster坏点作为硬性指标,超过阈值直接判退。动态坏点和Hot Pixel则作为软性指标,允许一定数量,靠算法后处理修复。