遥感原理及图像处理--大作业|实践类--附代码!

遥感原理及图像处理–大作业|实践类–附代码!

大家好,我是【豆干花生】,这次我带来了新的文章,与你分享~
文章包含代码实现,具体处理图片,敬请期待~

文章目录

  • 遥感原理及图像处理--大作业|实践类--附代码!
    • 一.图像增强
      • 题目要求
      • 主要思想
      • 代码实现
      • 处理效果
    • 二.图像匹配
      • 题目要求
      • 主要思想
      • 代码实现
      • 处理效果
    • 三.图像变化检测
      • 题目要求
      • 主要思想
      • 代码实现
      • 处理效果
    • 四.地物专题信息提取
      • 题目要求
      • 主要思想
      • 代码实现
      • 处理效果
    • 五.分类分割
      • 题目要求
      • 主要思想
      • 代码实现
      • 处理效果

一.图像增强

题目要求

有1幅SAR图像和1幅红外图像,需要增强显示效果,可以选择其中一幅图像给出增强显示的结果。

主要思想

使用直方图均衡方法。对原始图像进行直方图均衡处理,输出增强后的图像。

直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度。

原始图像由于其灰度分布可能集中在较窄的区间,造成图像不够清晰。例如,过曝光图像的灰度级集中在高亮度范围内,而曝光不足将使图像灰度级集中在低亮度范围内。

换言之,直方图均衡化的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并,从而增大对比度,使图像清晰,达到增强的目的。

代码实现

clc;clear;
%直方图均衡

sar=imread('机载SAR原始图像.tif');
figure(1);imshow(sar);%展示原图
sar1=histeq(sar,256);%直方图均衡处理
figure(2);
imwrite(sar1,'机载SAR增强图像.tif');
imshow(sar1);%展示增强的图

red=imread('红外原始图像.tif');
figure(3);imshow(red);%展示原图
red1=histeq(red,256);%直方图均衡处理
imwrite(red1,'红外增强图像.tif');
figure(4);imshow(red1);%展示增强的图

处理效果

机载SAR原始图像:

遥感原理及图像处理--大作业|实践类--附代码!_第1张图片

机载SAR增强图像:

红外原始图像:

遥感原理及图像处理--大作业|实践类--附代码!_第2张图片

红外增强图像:

遥感原理及图像处理--大作业|实践类--附代码!_第3张图片

二.图像匹配

题目要求

有两对图像(1对彩色图像、1对全色图像),请选择其中1对图像进行同名点对的提取处理。

主要思想

采用SURF算法,获取特征点并进行匹配。先通过SURF处理、再进一步提取特征,最后根据两幅图的不同特征进行匹配,得到最终结果。

Speeded Up Robust Features(SURF,加速稳健特征),是一种稳健的局部特征点检测和描述算法。

Surf是对David Lowe在1999年提出的Sift算法的改进,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。与Sift算法一样,Surf算法的基本路程可以分为三大部分:局部特征点的提取、特征点的描述、特征点的匹配。

但Surf在执行效率上有两大制胜法宝——一个是积分图在Hessian(黑塞矩阵)上的使用,一个是降维的特征描述子的使用。Sift是一种基于尺度空间的,对图像缩放、旋转、甚至仿射变换保持不变性的图像局部特征描述算子。

代码实现

clc;clear;
%获取两张图片
quanSe=imread('全色图像1.tif');
qunaSe2=imread('全色图像2.tif');

%获取SURF算法下的特征
surf1=detectSURFFeatures(quanSe);
surf2=detectSURFFeatures(qunaSe2);

%提取特征
[fea1,validPoints1]=extractFeatures(quanSe,surf1);
[fea2,validPoints2]=extractFeatures(qunaSe2,surf2);

%找出匹配点
final=matchFeatures(fea1,fea2);
out1=validPoints1(final(:,1));
out2=validPoints2(final(:,2));

%将匹配点展示出来
figure;
gcf=showMatchedFeatures(quanSe,qunaSe2,out1,out2,'montage');
legend('out1','out2');
saveas(gcf,'全色图像匹配结果.jpg');

处理效果

遥感原理及图像处理--大作业|实践类--附代码!_第4张图片

三.图像变化检测

题目要求

有1对光学图像和1对SAR图像,请选择其中1对图像进行变化检测处理,给出处理结果。

主要思想

使用差值法,从像素级就算两幅图片的差别,在一定范围内,则记为不同,输出变化。

图像差值法,即两个时相的遥感图像相减运算。 未发生变化的地类在两个时相的遥感图像上具有相等或相近的灰度值,而地类发生变化时,对应位置的灰度值将有较大差别。差值图像上发生地类变化区域的灰度值会与背景值有较大差别,从而使变化信息从背景图像中显现出来。

代码实现

clc;clear;

%Path1='SAR时相1.tif';
%Path2='SAR时相2.tif';
Path1='光学时相1.jpg';
Path2='光学时相2.jpg';
Data1=imread(Path1);%读取图像的信息
figure(1);imshow(Data1);%画出变化前图片
Data2=imread(Path2);%读取图像的信息
figure(2);imshow(Data2);%画出变化后图片

[row,col]=size(Data1);
data1=zeros(row,col);
data2=zeros(row,col);
data=zeros(row,col);
DATA=zeros(row,col);
for i=1:1:row*col
data1(i)=Data1(i);
data2(i)=Data2(i);
data(i)=data1(i)-data2(i);%计算变化
end

for i=1:row*col%判断是否变化
    if abs(data(i))<60 %注意这是进行判断有效值范围,如果有效范围是-1到1,则改成max(bz)>-1即可
        DATA(i)=0;
    elseif abs(data(i))>=60
        DATA(i)=1;   
    end
end
figure(3);
imagesc(DATA);    %图片预览
%saveas(gcf,'SAR时相变化检测.jpg');
saveas(gcf,'光学时相变化检测.jpg');
b1=reshape(data1,row*col,1);
b2=reshape(data2,row*col,1);

处理效果

光学时相1:

光学时相2:

遥感原理及图像处理--大作业|实践类--附代码!_第5张图片

光学时相变化检测:

遥感原理及图像处理--大作业|实践类--附代码!_第6张图片

SAR时相1:

SAR时相2:

SAR时相变化检测:

遥感原理及图像处理--大作业|实践类--附代码!_第7张图片

四.地物专题信息提取

题目要求

有两幅全色图像,选择一幅图像中提取水体部分。

主要思想

先进行直方图均衡,图像增强,计算相关数据,在计算rgb数据,最后计算出二值图来得到对应信息,最后联通后把过于小的区域删除,得到的就是我们想要的地物专题信息。

代码实现

clc;clear;

light=imread('高分光学全色图像-提取水体.jpg');
light1=histeq(light,256);%先进行直方图均衡,图像增强
[row,col]=size(light);%计算大小
light2=double(1.7*light);%处理数据
light3=double(5*light1);

for i=1:row
    for j=1:col
        if light2(i,j)>190
            light2(i,j)=255;
        end
        if light3(i,j)>80
            light3(i,j)=255;
        end
    end
end

for i=2:row-1
    for j=2:col-1
        if light2(i,j)+light2(i,j-1)+light2(i,j+1)+light2(i-1,j)+light2(i+1,j)>1020
            light2(i,j)=255;
        end
        if((light3(i,j)+light3(i+1,j)+light3(i-1,j)+light3(i,j+1)+light3(i,j-1)+light3(i+1,j+1)+light3(i+1,j-1)+light3(i-1,j+1)+light3(i-1,j-1))>1275)
            light2(i,j)=255;
        end
    end
end

r=double(light);%计算rgb数据
g=zeros(row,col);
b=zeros(row,col);
rgbimg=cat(3,r,g,b);
mini=min(min(light));
flag=zeros(1,256);

for i=1:row
    for j=1:col
        if light(i,j)==0
            light(i,j)=light(i,j)+1;
        end
        flag(1,light(i,j))=flag(1,light(i,j))+1;
    end
end

jjj=im2uint8(light2/255);%计算出二值图
num=graythresh(jjj);%确定二值化的阈值
final = 1-im2bw(jjj,num);%处理为二值化数据
index = bwlabel(final);%标记连通域
final_img = regionprops(index,  'area', 'boundingbox');  %将对应位置联通
location = [final_img.Area];  
back = cat(1,  final_img.BoundingBox); 
for i=1:length(location)
    if(location(1,i)<2000)
        back(i,:)=0;
    end
end

found = bwareaopen(index,2000,8) ;%删除图像中面积过于小的部分
figure;
imshow(found); 
%存储结果
imwrite(found,'光学水体提取结果.jpg');

处理效果

高分光学全色图像-提取水体:

遥感原理及图像处理--大作业|实践类--附代码!_第8张图片

光学水体提取结果:

遥感原理及图像处理--大作业|实践类--附代码!_第9张图片

五.分类分割

题目要求

1幅样例彩色图像,完成图像的分割处理。也可以利用监督分类的方法对这副图像进行分类(要求分成居民地、道路、农田、其它等四类)。

主要思想

使用K -均值聚类分割的方法。调用imsegkmeans函数进行聚类,然后使用labeloverlay函数将新图和旧图进行融合,得到分割图像。

K-均值聚类算法计算质心并进行迭代,直到找到最佳质心为止。 它假定群集的数目是已知的。 它也称为平面聚类算法。 通过算法从数据中识别出的聚类数量以K均值中的“ K”表示。

在该算法中,将数据点分配给群集,以使数据点和质心之间的平方距离之和最小。 应当理解,簇内的较少变化将导致相同簇内的更多相似数据点。

K均值遵循期望最大化方法来解决此问题。 期望步骤用于将数据点分配给最接近的群集,而最大化步骤用于计算每个群集的质心。

代码实现

clc;clear;
old = imread('高分彩色分类f分割图像用例.jpg');
new = imsegkmeans(old,4);%使用k均值的聚类方法,进行分割
final = labeloverlay(old,new);%将分割结果与原始图像融合。 显示融合图像。
figure;imshow(final);
imwrite(found,'分割结果.jpg');

处理效果

高分彩色分割图像用例:

遥感原理及图像处理--大作业|实践类--附代码!_第10张图片

分割结果:

遥感原理及图像处理--大作业|实践类--附代码!_第11张图片

码字不易,都看到这里了不如点个赞哦~
我是【豆干花生】,你的点赞+收藏+关注,就是我坚持下去的最大动力~

在这里插入图片描述

亲爱的朋友,这里是我新成立的公众号,欢迎关注!
公众号内容包括但不限于人工智能、图像处理、信号处理等等~

之后还将推出更多优秀博文,敬请期待! 关注起来,让我们一起成长!
在这里插入图片描述

你可能感兴趣的:(遥感图像处理,算法,聚类,计算机视觉,机器学习)