大家好,我是【豆干花生】,这次我带来了新的文章,与你分享~
文章包含代码实现,具体处理图片,敬请期待~
有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原始图像:
机载SAR增强图像:
红外原始图像:
红外增强图像:
有两对图像(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');
有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:
光学时相变化检测:
SAR时相1:
SAR时相2:
SAR时相变化检测:
有两幅全色图像,选择一幅图像中提取水体部分。
先进行直方图均衡,图像增强,计算相关数据,在计算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');
高分光学全色图像-提取水体:
光学水体提取结果:
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');
高分彩色分割图像用例:
分割结果:
码字不易,都看到这里了不如点个赞哦~
我是【豆干花生】,你的点赞+收藏+关注,就是我坚持下去的最大动力~
亲爱的朋友,这里是我新成立的公众号,欢迎关注!
公众号内容包括但不限于人工智能、图像处理、信号处理等等~之后还将推出更多优秀博文,敬请期待! 关注起来,让我们一起成长!