数字图像红外图像处理matlab实现.docx
《数字图像红外图像处理matlab实现.docx》由会员分享,可在线阅读,更多相关《数字图像红外图像处理matlab实现.docx(12页珍藏版)》请在冰豆网上搜索。
数字图像红外图像处理matlab实现
1数字图像,红外图像处理,高温定标点校正程序
%读取高温定标点二进制数据,将数据信息存储到pic2矩阵里
clc;clear;
a1=fopen('handdat_34.dat','rb','b');%打开二进制数据信息
pic1=fread(a1,[200200]);%将二进制数据信息读出到200*200的多维数组里面
a2=fopen('hidat_62.dat','rb','b');
pic2=fread(a2,[200200]);
a3=fopen('low31dat_62.dat','rb','b');
pic3=fread(a3,[200200]);
b=mean2(pic2);%求pic2的平均值将结果返回给b
A=b*ones(200);
K=A./pic2;%计算校正因子200*200矩阵数组K
pic2_K_hi=K.*pic2;%高稳定点校正高温图片
pic3_K_hi=K.*pic3;%高稳定点校正低温图片
pic1_K_hand_hi=K.*pic1;%高稳定点校正目标成像图片
figure
(1);
subplot(131),imshow(uint8(pic2_K_hi),[]),title('高温定点校正高温图片');;
subplot(132),imshow(uint8(pic3_K_hi),[]),title('高温定点校正低温图片');
subplot(133),imshow(uint8(pic1_K_hand_hi),[]),title('高温定点校正目标成像图片');
figure
(2);
subplot(131),mesh(1:
200,1:
200,roundn(pic2_K_hi,-3)),title('高温定点校正高温三维图');
subplot(132),mesh(1:
200,1:
200,pic3_K_hi),title('高温定点校正低温三维图');
subplot(133),mesh(1:
200,1:
200,pic1_K_hand_hi),title('高温定点校正目标成像三维图');
colormapgray;%选为灰度
2字图像,红外图像处理,低温定标点校正程序
%读取低温定标点二进制数据,将数据信息存储到pic3矩阵里
clear;clc;
a1=fopen('handdat_34.dat','rb','b');%打开二进制数据信息
pic1=fread(a1,[200200]);%将二进制数据信息读出到200*200的多维数组里面
a2=fopen('hidat_62.dat','rb','b');
pic2=fread(a2,[200200]);
a3=fopen('low31dat_62.dat','rb','b');
pic3=fread(a3,[200200]);
b=mean2(pic3);%求pic2的平均值将结果返回给b
A=b*ones(200);
K=A./pic3;%计算校正因子200*200矩阵数组K
pic2_K_low=K.*pic2;%低温定标点校正高温图片
pic3_K_low=K.*pic3;%低温定标点校正低温图片
pic1_K_hand_low=K.*pic1;%低温定标点校正目标成像图片
figure
(1);
subplot(131),imshow(pic2_K_low,[]);title('低温定标点校正高温图片');
subplot(132),imshow(uint8(pic3_K_low),[]);title('低温定点校正低温图片');
subplot(133),imshow(pic1_K_hand_low,[]);title('低温定点校正目标成像图片');
figure
(2);
subplot(131),mesh(1:
200,1:
200,pic2_K_low),title('低温定标点校正高温图片');
subplot(132),mesh(1:
200,1:
200,roundn(pic3_K_low,-3)),title('低温定点校正低温图片');
subplot(133),mesh(1:
200,1:
200,pic1_K_hand_low),title('低温定点校正目标成像图片');
colormapgray;%选为灰度
3Matlab程序实现,图像处理,红外图像处理,两点校正高温或低温图片--红外图像校正
%两点校正程序文件
clear;clc;
a1=fopen('handdat_34.dat','rb','b');%打开二进制数据信息
pic1=fread(a1,[200200]);%将二进制数据信息读出到200*200的多维数组里面
a2=fopen('hidat_62.dat','rb','b');
pic2=fread(a2,[200200]);
a3=fopen('low31dat_62.dat','rb','b');
pic3=fread(a3,[200200]);
%求解阵列焦平面高温定标点相应均值A1
A1=mean(pic2(:
));%求pic2的平均值将结果返回给b
%A1=b1*ones(200);
%K1=A1./pic2;%高温定点校正因子200*200矩阵数组K
%求解阵列焦平面低温定标点相应均值A2
A2=mean(pic3(:
));%求pic2的平均值将结果返回给b
%A2=b2*ones(200);
%K2=A2./pic3;%计算校正因子200*200矩阵数组K
Gij=(A1-A2)./(pic2-pic3);%求增益校正系数Gij
Oij=(A1.*pic3-A2.*pic2)./(pic2-pic3);%求偏置校正系数Oij
%两点校正高温图片
Yij_hi=Gij.*pic2-Oij;
%两点校正低温图片
Yij_low=Gij.*pic3-Oij;
%两点校正目标成像图片
Yij_handdat=Gij.*pic1-Oij;
figure
(1);
subplot(131),imshow(Yij_hi,[]),title('两点校正高温图片');
subplot(132),imshow(Yij_low,[]),title('两点校正低温图片');
subplot(133),imshow(uint8(Yij_handdat),[]),title('两点校正目标成像图片');
figure
(2);
subplot(131),mesh(1:
200,1:
200,roundn(Yij_hi,-3)),title('两点校正高温图片三维图');
subplot(132),mesh(1:
200,1:
200,roundn(Yij_low,-3)),title('两点校正低温图片三维图');
subplot(133),mesh(1:
200,1:
200,Yij_handdat),title('两点校正目标成像图片三维图');
colormapgray;%选为灰度
%colormapgray;%选为灰度
Yij_handdat=uint8(Yij_handdat);
save('Yij_handdat','Yij_handdat')
4直方图均衡化,图像处理,matlab实现
%直方图均衡化增强图像
clc;clear;
loadYij_handdat;
I=Yij_handdat;
J=histeq(I,256);%对I进行直方图均衡化
[M,N]=size(I);
figure
(1);
subplot(131),imshow(I),title('两点校正后的图像');
subplot(132),imshow(J),title('直方图均衡化后的图像');
subplot(133),mesh(1:
M,1:
N,double(J)),title('直方图均衡化后三维图');
figure
(2);
subplot(121),imhist(I,90),title('两点校正后的直方图');
subplot(122),imhist(J),title('均衡化后的直方图');
5红外图像,分段线性变换,matlab实现
%分段线性变换
clc;clear;
%X1=imread('liang_dian_jiaozheng.png');
loadYij_handdat.mat;
X1=Yij_handdat;
%X1=rgb2gray(X1);
f0=0;g0=0;%对图像灰度进行分段的点
f1=123;g1=70;
f2=240;g2=150;
f3=256;g3=220;
figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3])
axistight,xlabel('f'),ylabel('g')
title('intensitytransformation')%绘制变换曲线
r1=(g1-g0)/(f1-f0);
b1=g0-r1*f0
r2=(g2-g1)/(f2-f1);
b2=g1-r2*f1;
r3=(g3-g2)/(f3-f2);
b3=g2-r3*f2;
[m,n]=size(X1);
X2=double(X1);
fori=1:
m
forj=1:
n
f=X2(i,j);
g(i,j)=0;
if(f>=f1)&(f<=f2)
g(i,j)=r1*f+b2;
elseif(f>=f2)&(f<=f3)
g(i,j)=r3*f+b3;
end
end
end
figure;
subplot(131),imshow(X1),title('两点校正后的图像');
subplot(132),imshow(g,[]),title('分段线性变换后的图像');
subplot(133),mesh(roundn(g,-3)),title('分段线性变换后图像三维图');
6.选择分段线性变换进行灰度处理——自选算法
将图像灰度区间分成两段乃至多段,然后分别作灰度变换处理以达到更加鲜明的对比效果,同时不失图像原有的信息,
分段线性变换的函数表达式为:
在公式(4-1)中,(t1,f(t1))和(t2,f(t2))是图4.1中两个转折点坐标。
其中min代表原始图像中最小的灰度级07.一点温度定标校正算法
一点温度定标算法是最早的一种非均匀校正算法,假设这些图像都是在一
个温度范围变化不大的环境中,即成像系统所在的环境温度变化不大。
一点校
正算法只是对各探测器单元响应特性的不一致性进行了校正,它只适用于各探
测单元的增益系数非常接近或者辐射照度变化甚小的场合,而当目标场景的辐
射照度离定标点较大时,校正效果就显著变差。
选取特定黑体辐射照度为定标点,对所有的N个探测单元灰度值求平均:
,则在这个辐射照度下各探测单元输出增益可以这样计算得:
,其中,K(i,j)为红外图像非均匀性校正的校正因子。
则以后的红外图像可以利用
进行校正,其中y(i,j)为校正后图像中坐标为(i,j)探测单元的实际输出,x(i,j)为原始图像中坐标为(i,j)探测单元的灰度值。
2.4.2二点温度定标校正算法
假设各阵列元的响应特性在所关心的温度范围内是线性的,在时间上是稳
定的,并假定l/f噪声的影响较小,则非均匀性引入的噪声为固定模式的乘性和加性噪声。
在此条件下焦平面阵列元在均匀辐射背景条件下的输出为:
Ø
其中:
Ø表示辐射通量,Uij和Vij是坐标为阵列元的增益(响应率)和偏置
量(暗电流),虽然对每一个阵元的响应都不是直线的,但在一定的范围内可
以近似的认为,和实际方便对问题的处理,对每一个阵列元,lUij和Vij的值可以
认为都是固定的,并且不随时间变化。
因此采用二点定标校正即可实现红外焦
平面阵列图像的非均匀性校正,即:
Gij和Oij分别是二点定标校正算法的增益校正系数和偏置校正系数,Yjj为校
正后的输出,Xjj(Ø)是辐射通量为Ø的各个阵列元的灰度输出值。
二点定标校正
算法是利用焦平面各阵列元在温度不同的两个黑体(高温TH和低温TL)均匀辐
射下的响应输出,求得Gij和Oij,从而实现非均匀性校正。
二点定标校正算法的具体实现:
将所有阵列元在高温TH和低温TL均匀黑
体辐射的响应分别标准化为VH和VL,即:
其中VH和VL可以选取在高温TH和低温TL均匀辐射下焦平面响应输出的均值。
Xij(ØH)和Xij(ØL)分别为在高温TH和低温TL均匀辐射背景下像元(ij)的响应(灰度值)输出。
增益校正系数和偏置校正系数即可通过下式计算
将各阵列元的增益校正系数Gij偏置校正系数Oij预先存储起来,在探测
过程中以此校正系数对探测器的响应值按式(2_4.5)即:
对各像元的输出依次进行校正。