文章
阿尔特龙中的坏点处理:学习坏点图并实时校正
您打开一幅扫描图像,看到一条细亮线从图像顶部一直延伸到底部。查看下一次扫描,同一条线依然存在,而且恰好在同一列。这通常是由传感器的某个坏像素引起的。在线阵相机中,每个像素在每一行中都会重复,因此一个故障像素就会变成贯穿整幅图像的一条连续线。

没有哪个传感器是完美无瑕的。几乎每个传感器都有少量死像素或热像素。问题不在于有没有,而在于如何处理。
在阿尔特龙中,这一切都由一个节点完成:BPC-Bad Pixel Correction。同一个节点既学习坏点图,又在运行时校正像素。它适用于线阵相机和面阵相机,其设置面板以 Runtime BPC 为标题打开。
其逻辑很简单。我们不在每一帧中猜测哪个像素是坏的,因为这种猜测也可能抹掉真实的图像细节。相反,我们一次性建立精确的坏点图,此后只校正这些已知像素。
- 将相机对准均匀的场景。对于热成像相机,使用做非均匀性校正时的同一均匀场景效果很好。
- 按 Start Learn。学习过程中,按钮上会显示帧数。
- 收集到足够的帧后,再按一次该按钮。坏点图随即建立,程序会询问 bpc 文件的保存位置。
- 学习完成后会自动勾选 Apply BPC,文件路径显示在 Ref file 中。
下次只需用 Load Map 加载同一文件即可。如果想重新开始,请用 Clear 清除坏点图。
Edge-aware (directional): 默认开启。它用沿边缘方向而非跨越边缘的健康相邻像素来替换坏像素。若不开启此选项,落在锐利边缘上的坏像素会被边缘两侧的平均值填充,形成一个模糊斑点。在边缘检测中,这一差别很重要。
RTS suppression (amp-gated): 在学习过程中,除了死像素和热像素外,它还会标记帧间波动过大的像素。此选项影响的是下一次学习的坏点图,而不是当前的坏点图。
没有坏点图会怎样? 如果未加载坏点图,节点会退而使用自适应中值滤波。因此即使未经校准它也能工作,但学习得到的坏点图更加准确。
Line-scan defective pixels 部分有两个数值。Neighbor count 设置检测时检查每侧多少个相邻像素,设为零则关闭此检查。Threshold % 设置一个像素与其相邻像素平均值相差多少才算作缺陷像素。
低阈值可提高灵敏度,但也可能抹平精细的真实细节;高阈值只会捕捉严重缺陷。在线阵相机上,如果加载了合适的学习坏点图,则校正以该坏点图为准。
如果您修改了 Apply BPC、Edge-aware、RTS suppression 或两项线阵设置,在按下 Set 之前,更改不会传到插件。我们经常看到有人修改了阈值,却疑惑图像为什么没有变化。
该节点在流程图中的位置很重要。坏像素是传感器的物理缺陷,因此其校正必须位于伽马、锐化等外观调整之前。如果放在它们之后,锐化滤波器会先在坏像素周围形成光晕,之后便再也无法清除。
一份关于缺陷像素的简短通用资料: 维基百科(英文).