MATLAB在遥感图像处理中的应用

MATLAB在遥感图像处理中的应用

**目的:**使用MATLAB软件经过不一样波长的不一样材料特定波长的对比度,实现给定遥感图像的直方图匹配。利用多光谱彩色复合遥感影像加强方法对基于HIS色彩变换和小波变换的遥感影像进行加强、交易处理等。提高了遥感影像的色彩质量、空间分辨率、能够更直观准确地反映数据信息,提升办公效率。
在这里插入图片描述在这里插入图片描述web

(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)均衡化后的直方图');

在这里插入图片描述
直方图匹配加强:bash

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(‘指望图像直方图’)  ;

在这里插入图片描述
利用多光谱色彩复合遥感图像加强的代码以下:svg

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融合后图像');

在这里插入图片描述
结论:经过直方图匹配处理,加强处理和遥感图像融合处理,图像视觉效果是固定的,改进的空间分辨率,改进的目标特征,更正的分类准确性和改进的信息完善。根据物体光谱的不一样颜色(植被红,湿地绿,建筑物褐,沙漠橙),能够更加直观,准确地获取遥感影像的信息。空间分辨率能够直接调整以肯定信息类别。光谱分辨率能够捕捉材料特征波长的微小差别,辐射分辨率能够得到光谱信号强度的灵敏度和辨别能力。遥感图像上像素的亮度对应于地面目标的反射或辐射电磁能量的大小。经过校订,能够改善遥感系统的光谱反射率和辐射率。经过遥感影像融合来复合时空冗余或互补多源数据,优化图像信息。优化