MATLAB在遥感图像处理中的应用
**目的:**使用MATLAB软件通过不同波长的不同材料特定波长的对比度,实现给定遥感图像的直方图匹配。利用多光谱彩色复合遥感影像增强方法对基于HIS色彩变换和小波变换的遥感影像进行增强、交易处理等。提升了遥感影像的色彩质量、空间分辨率、可以更直观准确地反映数据信息,提高办公效率。
在这里插入图片描述
(1)功能栏:在此栏有很多操作设置,可以新建m文件(m文件便于填写大量代码)编译,可以保存代码。如果只是一个函数调用,建议用(command window)。
(2)搜索栏:正如图片所见,右上角那里有个“?”按钮,点击那里即可进入文档的主页,又或者在旁边的搜索栏输入自己想要查找的函数,也可以直接在command window窗口输入help。
**(3)文件路径:**这里很重要的时,你要操作的图片一定要放在此路径内,不然会出现找不到图片的错误。因为读取图片是从当前的文件路径读取的,所以图片必须放在这里。当然,你可以修改当前路径,转到你放图片的路径上,还有一种方法就是你可以在imread()这里填上图片的路径。
**(4)命令窗口:**这是我们经常要用到的窗口,MATLAB 之所以强大也是在此,逐行编译。也就是你写50行代码,第50行出错,它也会编译到49行。
**(5)workspace:**这个窗口存放着图片的数组信息。我们都知道,我们看到的是图片,而电脑看到的是一堆数字,也就是矩阵。其实一切形式都可以化为矩阵的形式,矩阵是以数组形式的方式。即使一个数字也可看作1*1矩阵,当你读取图片时,图片的像素就在此保存,点击可查看。
利用MATLAB对遥感图像进行直方图匹配处理的的代码如下:
>> clear all;
f=imread('moon.tif');%加载初始图像
subplot(2,2,1),imshow(f);%初始图像
title('(A)原始图像');
subplot(2,2,2),imhist(f);%初始图像的直方图
title('(B)原始图像的直方图');
g=histeq(f,256);%对原始图像进行直方图均衡化
subplot(2,2,3),imshow(g);
title('(C)直方图均衡化后的图像');
subplot(2,2,4),imhist(g);
title('(D)均衡化后的直方图');
直方图匹配增强:
function p=manualhist
repeats=true;
quitnow='x';
p=twomodegauss(0.15,0.05,0.75,0.05,1,0.07,0.002);
while repeats
s=input('Enter m1,sig1,m2,sig2,A1,A2,k,OR x to quit:','s');
if s==quitnow
break
end
v=str2num(s);
if numel(v)~=7;
disp('Incorrect number of inputs')
continue;
end
p=twomodegauss(v(1),v(2),v(3),v(4),v(5),v(6),v(7));
figure,plot(p);
xlim([0 255]);
break
end
它不仅保留了原始直方图的一般形状,而且还在图像的黑暗区域中平滑过渡。
function p=twomodegauss(m1,sig1,m2,sig2,A1,A2,k)
c1=A1*(1/((2*pi)^0.5)*sig1);
k1=2*(sig1^2);
c2=A2*(1/((2*pi)^0.5)*sig2);
k2=2*(sig2^2);
z=linspace(0,1,256);
p=k+c1*exp(-((z-m1).^2)./k1)+c2*exp(-((z-m2).^2)./k2);
p=p./sum(p(:));
end
子函数unction p=twomodegauss(m1,sig1,m2,sig2,A1,A2,k)计算一个已经归一化到单位区域的双峰高斯函数,以便可以把它当成一个指定的直方图。程序的输出p由该函数产生的256个等间隔点组成,它是我们需要的指定直方图。利用gg=histeq(f,p)可以得到指定直方图的图像。代码如下:
clear all;
p=manualhist;%获取一个指定的函数
f=imread('F:\Program Files (x86)\toolbox\images\imdata\moon.tif');
gg=histeq(f,p);%使结果图像的直方图与获取函数图像一致
figure,
subplot(1,2,1),imshow(f);
subplot(1,2,2);
imhist(gg)
title(‘期望图像直方图’) ;
利用多光谱色彩复合遥感图像增强的代码如下:
clear all;
truecolor =multibandread('paris.lan',[512,512,7],'uint8=>uint8',...
128,'bil','ieee-le',{'Band','Direct',[3 2 1]});%从多光谱图像中构建真彩色复合图像
figure;%真彩色复合图像的对比度非常低,其真彩色不均衡
imshow(truecolor);
title('Truecolor Composite(Un-enhanced)')
text(size(truecolor,2),size(truecolor,1)+15,...
'Image courtesy of Space Image,LLC','FontSize',7,'HorizontalAlignment','right');
Figure%使用直方图探测未增强的真彩色复合图像
imhist(truecolor(:,:,1))
title('Histogram of the Red Band (Band 3)');
r =truecolor(:,:,1);%使用相关性探测未增强的真彩色复合图像
g =truecolor(:,:,2);
b =truecolor(:,:,3);
figure
plot3(r(:),g(:),b(:),'.')
grid('on')
xlabel('Red(Band 3)')
ylabel('Green (Band 2)')
zlabel('Blue (Band 1)')
title('Scatterplot of the Visible Bands');
set(gcf,'color','w');
stretched_truecolor =imadjust(truecolor,stretchlim(truecolor));%对真彩色复合图像进行对比度扩展增强处理
figure%在对比度扩展图像增强后检测直方图变化
imshow(stretched_truecolor)
title('Truecolor Composite after Contrast Stretch')
figure%对真彩色图像进行去相关增强处理
imhist(stretched_truecolor(:,:,1))
title('Histogram of Red Band (Band 3) after Contrast Stretch');
decorrstretched_truecolor =decorrstretch(truecolor,'Tol',0.01);
figure%取相关扩展图像处理后检测相关性变化
imshow(decorrstretched_truecolor)
title('Truecolor Composite after Decorrelation Stretch')%构建和增强一个CIR复合图像文件
r =decorrstretched_truecolor(:,:,1);
g =decorrstretched_truecolor(:,:,2);
b =decorrstretched_truecolor(:,:,3);
figure
plot3(r(:),g(:),b(:),'.')
xlabel('Red(Band 3)')
ylabel('Green (Band 2)')
zlabel('Blue (Band 1)')
title('Scatterplot of the Visible Bands after Decorrelation Stretch')
set(gcf,'color','w');
CIR =multibandread('paris.lan',[512,512,7],'uint8=>uint8',...
128,'bil','ieee-le',{'Band','Direct',[4 3 2]});%进行去相关图像增强处理
stretched_CIR =decorrstretch(CIR,'Tol',0.01);
figure
imshow(stretched_CIR)
title('CIR after Decorrelation Stretch')
基于HIS彩色变换对图像进行融合处理
clc
clear
f1=imread('F:\360data\重要数据\我的文档\MATLAB\high.jpg')%读取高分辨率图像
subplot(2,2,1),imshow(f1);
title('高分辨率影像')
[M,N]=size(f1);%利用插值将多光谱图像放大到与高分辨率图像一样大小
f2=imread('F:\360data\重要数据\我的文档\MATLAB\low.jpg');
f2=imresize(f2,[M,N],'bilinear');
subplot(2,2,2),imshow(f2);
title('多光谱影像')
f1=double(f1);%将RGB空间转换为HIS
f2_hsi=rgb2hsv(f2);
f2_h=f2(:,:,1);
f2_s=f2(:,:,2);
f2_i=f2(:,:,3);
[c1 s1]=wavedec2(f1,1,'sym4');%进行小波分解
f1=im2double(f1);
[c2_h s2_h]=wavedec2(f2_h,1,'sym4');
[c2_s s2_s]=wavedec2(f2_s,1,'sym4');
[c2_i s2_i]=wavedec2(f2_i,1,'sym4');
c_h=0.5*(c2_h+c1);%对系数进行融合
c_s=0.5*(c2_s+c1);
c_i=c1;
f_h=uint8(waverec2(c_h,s1,'sym4'));
f_h=histeq(f_h);
f_s=uint8(waverec2(c_i,s1,'sym4'));
f_s=histeq(f_s);
f_i=uint8(waverec2(c_i,s1,'sym4'));
f_i=histeq(f_i);
g=cat(3,f_h,f_s,f_i);%显示融合后图像
subplot(2,2,3),imshow(g);
title('HIS融合后图像');
结论:通过直方图匹配处理,增强处理和遥感图像融合处理,图像视觉效果是固定的,改进的空间分辨率,改进的目标特征,更正的分类准确性和改进的信息完善。根据物体光谱的不同颜色(植被红,湿地绿,建筑物褐,沙漠橙),可以更加直观,准确地获取遥感影像的信息。空间分辨率可以直接调整以确定信息类别。光谱分辨率可以捕捉材料特征波长的微小差异,辐射分辨率可以获得光谱信号强度的灵敏度和辨别能力。遥感图像上像素的亮度对应于地面目标的反射或辐射电磁能量的大小。通过校正,可以改善遥感系统的光谱反射率和辐射率。通过遥感影像融合来复合时空冗余或互补多源数据,优化图像信息。