【红外技术】非均匀校正之两点校正(原理&标定方法&MATLAB代码&效果)

本文介绍了红外图像处理中的一种非均匀校正方法——两点校正,详细阐述了两点校正的原理,实验室标定过程,并提供了MATLAB代码,展示了校正效果。

创作时间:2022-05-06
非均匀校正之两点校正(原理&MATLAB代码&效果)
目录:
1.原理&标定方法
2.代码
3.效果

正文:

先看下效果(校正前后对比)

1
在这里插入图片描述
2
在这里插入图片描述
3
在这里插入图片描述
4
在这里插入图片描述
5

在这里插入图片描述

1.原理

红外焦平面的响应非均匀性,其主要由焦平面制造的工艺,材料原因造成。因此,图像处理之前,需要进行预处理,包括非均匀校正和盲元校正。
非均匀校正的一种方法就是两点校正。

在这里插入图片描述
前提条件:
1)假设各个像元的影响都是线性的
2)忽略1/f电流噪声
实验室标定
准备:
黑体,镜头(可加可不加),电源,线缆等
步骤:
1) 固定一个积分时间
2) 将黑体设置为20℃,用采集卡连续保存100张raw图
3) 将黑体设置为35℃,用采集卡连续保存100张raw图
4) 按照一定的步进,改变积分时间,重复上述步骤
将20℃-35℃的盲元检测与校正做完之后,可以再进行扩展温度范围。建议值为10℃-40℃。

2.代码


clc

%两点校正代码
%  '06-May-2022'
%1)读低温黑体原始图像数据
%2)读高温黑体原始图像数据
%3)加载一张未校正的原始图像数据
%4)计算校正参数KB
%5) 进行校正

numCols=640;
numRows=512;
%----------------------
%1)读低温黑体数据
filename="E:\2\low1.raw";
if ~exist (filename,'file')
    errordlg('文件不存在');
    return
end
% if ~isequal(filename(end-3:end),'.raw')
%     errordlg('文件格式必须是Raw');
%     return
% end
Num=numRows*numCols;
L=100;
fid=fopen(filename,'r');
fseek(fid,0,'eof');
totalpixel=ftell(fid);
L_frame=floor(totalpixel/(2*Num));
L=min(L,L_frame);
if  L<=0
    errordlg({'图像大小不够一张!!';'单张640*512的16bit图大小为640kB!'});
    return
end
A=zeros(Num,L);
for  ii=1:L
    fseek(fid,2*Num*(ii-1),'bof');
    temp=fread(fid,Num,'uint16');
    A(:,ii)=temp;
end
fclose(fid);
A=double(A);
T0_avg=mean(A,2);
T0_DN=mean(T0_avg);

h_load_t0=msgbox('T0温度下的原始图像加载完毕');
pause(0.5);
close(h_load_t0);


%2) 读高温黑体数据
filename="E:\2\high1.raw";
if ~exist (filename,'file')
    errordlg('文件不存在');
    return
end
% if ~isequal(filename(end-3:end),'.raw')
%     errordlg('文件格式必须是Raw');
%     return
% end
Num=numRows*numCols;
L=100;
fid=fopen(filename,'r');fseek(fid,0,'eof');totalpixel=ftell(fid);
L_frame=floor(totalpixel/(2*Num));L=min(L,L_frame);
if  L<=0
    errordlg({'图像大小不够一张!!';'单张640*512的16bit图大小为640kB!'});
    return
end
A=zeros(Num,L);
for  ii=1:L
    fseek(fid,2*Num*(ii-1),'bof');
    temp=fread(fid,Num,'uint16');
    A(:,ii)=temp;
end
fclose(fid);
A=double(A);
T1_avg=mean(A,2); 
T1_DN=mean(T1_avg);

h_load_t1=msgbox('T1温度下的原始图像加载完毕');
pause(0.5);
close(h_load_t1);

%3)加载一张未校正的原始图像
filename="E:\2\3333.raw";
if ~exist (filename,'file')
    errordlg('文件不存在');
    return
end
% if ~isequal(filename(end-3:end),'.raw')
%     errordlg('文件格式必须是Raw');
%     return
% end
Num=numRows*numCols;
L=1;
fid=fopen(filename,'r');
fseek(fid,0,'eof');
totalpixel=ftell(fid);
L_frame=floor(totalpixel/(2*Num));
L=min(L,L_frame);
disp(L);
if  L<=0
    errordlg({'图像大小不够一张!!';'单张640*512的16bit图大小为640kB!'});
    return
end
A=zeros(Num,L);
for  ii=1:L
    fseek(fid,2*Num*(ii-1),'bof');
    temp=fread(fid,Num,'uint16');
    A(:,ii)=temp;
end
fclose(fid);
T=double(A);

%4)计算校正参数KB
% 注:这里是不扣除盲元计算的KB,实际使用中可以考虑去除盲元,会更加精准

K=(T0_DN-T1_DN)./(T0_avg-T1_avg);
K=max(K,0);
B=(T1_DN.*T0_avg-T0_DN.*T1_avg)./(T0_avg-T1_avg);

% 5)进行校正&结果对比
T_NUC=K.*T+B;

imgT=reshape(T,[numCols,numRows]);
imgT=imgT';

imgT_NUC=reshape(T_NUC,[numCols,numRows]);
imgT_NUC=imgT_NUC';

imtool( uint16([imgT,imgT_NUC]) );%结果对比



3.效果

写在前面了,这里略。


THE END~

### 非均匀性矫正与多点矫正技术原理及实现方法 非均匀性矫正是图像处理中的一种重要技术,主要用于校正由于成像系统(如相机镜头)或光照不均匀导致的图像亮度、颜色或几何失真的不一致性。这种不均匀性可能来源于传感器响应差异、镜头畸变、光源分布不均等因素。非均匀性矫正通常通过建立一个空间相关的校正函数来对图像进行逐像素调整,使得整个图像在视觉和数值上趋于一致。 一种常见的非均匀性矫正方法是基于参考图像的校正。例如,在理想条件下拍摄一幅均匀照明下的白板图像,作为参考图像。然后将实际拍摄的图像与该参考图像进行逐像素比对,计算每个像素点的增益或偏移量,并将其应用于所有图像以消除不均匀性影响。数学表达式如下: ```python corrected_image = raw_image / reference_image * average_value ``` 其中 `average_value` 是参考图像的平均像素值,用于保持图像整体亮度不变[^2]。 多点矫正是非均匀性矫正的一种扩展形式,它通过在图像中选取多个控制点,根据这些控制点的实际位置与期望位置之间的偏差,拟合出一个全局或局部的映射函数,从而对整幅图像进行校正。这种方法常用于文档图像的弯曲矫正、透视变换等场景。多点矫正可以采用仿射变换、透视变换或更复杂的样条插值方法实现。 例如,在透视变换中,使用四个角点作为控制点,构建如下变换矩阵: $$ \begin{bmatrix} x&#39; \\ y&#39; \\ w&#39; \end{bmatrix} = \begin{bmatrix} a &amp; b &amp; c \\ d &amp; e &amp; f \\ g &amp; h &amp; 1 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} $$ 其中 $(x, y)$ 是原始图像中的坐标,$(x&#39;, y&#39;)$ 是变换后的坐标,$w&#39;$ 是齐次坐标的归一化因子。通过求解上述矩阵参数,可以实现对图像的精确校正。 在深度学习中,也可以使用卷积神经网络(CNN)预测偏移场(offset field),即每个像素应移动的方向和大小,从而实现端到端的图像校正。这种方法特别适用于复杂形变,如手写文本的弯曲矫正、表格线的拉直等。偏移场模型通常采用堆叠U-Net结构,结合合成数据增强技术训练得到,具有良好的泛化能力[^2]。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maverick_111

红外图像核心算法,高质量解析

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值