小蜗牛 爬呀爬

预测未来最好的方式就是实现未来

红外非均匀性校正算法总结

红外校正算法总结

Blog: https://blog.csdn.net/AnimateX

Email: animatex.deng@gmail

zez

1 为什么要使用校正算法

在军用、安防、道路检测和工业产品检测领域,红外成像系统的使用越来越广泛,但是因为材料和工艺的原因,焦平面探测单元的响应率很难做到一致,这就会造成对着均匀辐射目标最后探测器给出的响应电压不一样,带来的直接后果就是IRFPA成像的效果。因此必须对焦平面的像元响应进行校正。

2 常见的校正算法

常见的校正算法主要分为两大类:

  1. 基于定标的非均匀性校正

  2. 基于场景的非均匀性校正

因为我们要考虑硬件实时性,因此主要考虑定标的非均匀性校正。首先我们要知道基于定标的非均匀性原理。参考图1所示。

像元响应曲线

图1 像元响应曲线

可以看出不同的像元响应并不是完全一致,因此我们我们要让所有响应的曲线斜率一致,再考虑把所有线变成同一根线。其中前者要靠增益校正系数后者要靠偏移校正系数。如图2所示。
校正

图2 增益校正和偏移校正

3 基于定标的非均匀性校正

学习完第2节,基本原理看图大致可以理解,我们再看看数学公式,后续依次说明响应公式和校正公式

V(i,j,ϕ)=Ri,jϕs+Ti,j(1)

公式(1)中,R为像元响应率(可以理解为增益量),V为像元输出电压,ϕ为像元接受的辐射量,T为偏移量。既然我们是定标处理,那么在均匀辐射下,像元的响应不一致便能测出,再根据测出的信息进行计算响应的增益校正系数和偏移校正系数。如公式(2)和公式(3)所示。我们利用同一黑体,分别进行低温和高温数据采集。对应公式(2)和公式(3)。
VL(i,j,ϕ)=Ri,j×ϕL+Ti,j(2)

VH(i,j,ϕ)=Ri,j×ϕH+Ti,j(3)

前面我们已经得到定标(高低温均匀目标)数据,利用这些数据实现均匀性校正。怎么做?
先看我们有什么,首先我们知道所有像元在同一温度下,输出不一致。要均匀怎么办?取整个帧的像素点的均值作为参考值。那么我们有参考的校正对象了。我们还有像元的响应电压。回忆之前我们学过的y=kx+b我们已知了y和x,是不是可以通过两组y和x得到k和b。参考公式(4)和公式(5)。其中A为增益校正系数,B为偏移校正系数。YHYL分别为高低温黑体作为目标时的帧响应单元均值。
YL(i,j)=Ai,j×VL+Bi,j(4)

YH(i,j)=Ai,j×VH+Bi,j(5)

上述过程即时基于定标非均匀性校正的两点校正。类似的还有多点校正以及分段校正。简单说明下多点校正和分段校正。
如图3所示,原始的响应曲线是一个凸曲线,通过无数小段(无数段两点校正)去拟合接近原曲线的方法即为分段校正。

分段

图3 分段校正

多点校正即是利用更接近实际的响应曲线的函数去拟合。比如上图3中的曲线并非直线,而分段来做又会有较大的工作量。因此引入接近的函数去逼近,常见的有二次曲线和S曲线。不过都需要前期进行大量的数据进行测试验证。

Code

function imgOut = Calibration( object, baff)
%Calibration just process one frame.
    [M, N] = size( object );

    imgOut = coeff .* (object - baff);

end
% 如果是高阶或者多点校正,参考下面说明(化简)
% Three point, Piecewise linear correction
%   V = A*(x^2) + B*x + C
%       V1 = A * (a1^2) + B * (a1) + C
%       V2 = A * (a2^2) + B * (a2) + C
%       V3 = A * (a3^2) + B * (a3) + C
%   Y = mean( V )= A * V^2 + B * V + C
%       Y1 = A * V1^2 + B * V1 + C
%       Y2 = A * V2^2 + B * V2 + C
%       Y3 = A * V3^2 + B * V3 + C
%   Use Cramer's Rule solve linear equations
%   Matrix: D D1 D2 D3
%       |D|  = (V2 - V1) * (V3 - V1) * (V3 - V2)
%       |D1| = mean(V1) * V2 + mean(V2) * V3 + mean(V3) * V1
%              - mean(V1) * V3 - mean(V2) * V1 - mean(V3) * V2
%       |D2| = [mean(V1)]^2 * mean(V2) + [mean(V2)]^2 * mean(V3)
%              + [mean(V3)]^2 * mean(V1) - [mean(V1)]^2 * mean(V3)
%              - [mean(V2)]^2 * mean(V1) - [mean(V3)]^2 * mean(V2)
%       |D3| = [mean(V1)]^2 * mean(V3) * V2 + [mean(V2)]^2 * mean(V1) * V3
%              + [mean(V3)]^2 * mean(V2) * V1 - [mean(V1)]^2 * mean(V2) * V3
%              - [mean(V2)]^2 * mean(V3) * V1 - [mean(V3)]^2 * mean(V1) * V2
%
%       A = |D1| / |D|
%       B = |D2| / |D|
%       C = |D3| / |D|
%
阅读更多
上一篇[MATLAB]平台直方图算法MATLAB实现
下一篇红外图像去坏点总结
想对作者说点什么? 我来说一句

CMOS相机校正技术

2014年09月24日 721KB 下载

没有更多推荐了,返回首页

关闭
关闭