理想情况下, 当相机对均匀的目标成像时, 得到图像中所有像素点的灰度值理论上应该是相同的. 然而, 实际上图像中各像素的值往往会有较大差异,此时就需要对图像进行平场校正。
数字图像是成像系统输出的产物,过程中可能受到各种影响,导致在相同光照、相同材质情况下拍出图像的像素值发生变化。
既然已经发生了系统性的失真,首先进行系统性矫正。平场矫正中假设该材质在光照强度线性变化的情况下像素值也线性变化,那么对于图像每一个位置上的像素来说,仅需两个标准亮度下产生的灰度值即可对该像素进行平场校正。
通过两个步骤来进行校正:暗信号非均匀性(DSNU)校正和光响应非均匀性(PRNU)校正。要校准 DSNU,必须在黑暗中记录参考图像,而对于 PRNU,必须用均匀的照明记录参考图像。因此,平场校正中的这两个单独的步骤分别称为暗场校正和亮场校正。
我们已经获取了校正所需的暗场、亮场基准图像,我们认为暗场图像为相机没有获取任何光信号时自己产生的噪声;亮场图像为光照、反光材质均匀情况下相机拍出的数字图像。
:
> 其中所谓的除法表示的是图像矩阵逐像素相除,之后的计算均为矩阵逐像素运算
此时的 C’ 为归一化后的图像,值在 0 - 1 左右,为什么说左右呢,因为有可能小于0 (相机噪声),也有可能大于1(当前图像亮度大于亮场图像亮度),我们还需要将归一化后的图像调整回 0 - 255 的灰阶中,那就需要一个放大系数。
,差值的均值是最合适的了:
N 表示图像像素个数
的校正过程为:
有说法将平场校正描述为求解偏置和增益的过程,此处偏置即为
如果对校正图像要求较高,你会发现不同波长的光线照射下产生的图像需要相同的波长光线产生的校正基准图像校正才能使得误差最小。
平场校正后,需要对校正的图像进行评估,常用的方法是使用平均后的校正基准图作为校正使用的图像,回头去校准产生这张基准图像的单张数据。
我们期望校正后的图像所有位置的灰度均为同一个值,但事实上并不可能,那么就需要评估和这个值有多么接近。
简单的方法可以查看方差是否足够小,精度要求不高的话已经可以满足大部分需求了;
如果需要更高精度的评估,那就需要度量每个灰阶的像素点是否展示了在该二维平面上足够的均匀程度,也就是相同像素值的像素如果类似二维均匀分布产生的样本,那么就说明平场足够有效。
这个评估本质上是在度量一个数据集描述的分布与二维已知的均匀分布直接的距离,如果计算二者之间的 KL 散度你会发现落脚点会在度量数据集的熵上面,然而这看似简单的需求并不容易计算。
为了计算在已知二维平面上的均匀程度,需要将这些数据集转化为真正的分布,我的实践经验是将这些数据在二维平面上分块统计数量,形成二维平面上的统计直方图,归一化后就得到了他们的二维分布,之后就可以计算这个分布和均匀分布之间的距离了。