Matlab卫星遥感图像处理道路提取(形态学)
标签:
杂谈 |
function successtiqu
%此方法适用于图像直方图呈双峰的简单情形
%线性变换
global str;
I=imread(str);
% subplot(2,2,1),
%imshow(I);
%title('原始图像');
J=rgb2gray(I);
% figure;
% imhist(J);
%
title('灰度直方图');
% axis([50,250,50,200]);
%
% axis
on;
% I1=rgb2gray(I);
% subplot(2,2,2),imshow(I1);
% title('灰度图像');
% axis([50,250,50,200]);
%
% axis
on;
% J=imadjust(I,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]
%
% % subplot(2,2,3),
% figure;
% imshow(J);
%
% title('线性变换图像[0.1 0.5]');
% axis([50,250,50,200]);
%
% grid
on;
%
% axis
on;
K=imadjust(J,[0.6 0.95],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1]
% figure;
% imshow(K);
% figure;
% imhist(K);
% title('线性变换图像[0.03 0.9]');
level = graythresh(K);
I=
im2bw(K,level);
% figure;
% imshow(I);title('线性变换后阈值分割二值图');
%
k1=medfilt2(I);
k2=medfilt2(I,[5,5]);
%
k3=medfilt2(I,[7,7]);
%
%
k4=medfilt2(I,[9,9]);
%figure;
%subplot(221),
%imshow(k1);title('3*3模板中值滤波');
%figure;
%subplot(222),
%subplot(223),
%imshow(k3);title('7*7模板中值滤波');
%figure;
%subplot(224),
% %imshow(k4);title('9*9模板中值滤波');
% figure;
% imshow(k2);title('5*5模板中值滤波');
% imwrite(k2,'5×5中值滤波二值图.bmp');
% figure;imshow(k2);title('5*5模板中值滤波');
%
% imwrite(k2,'5*5模板中值滤波二值图.bmp');
%使用结构元素的形态开运算处理图
se=strel('square',3);
H=imopen(k2,se);
% figure;
% imshow(H);title('3×3的结构元素的形态开运算处理图');
%
imwrite(H,'3×3开运算.bmp');
se=strel('square',5);
% figure;
% imshow(H1);title('5×5的结构元素的形态开运算处理图');
% imwrite(H1,'5×5开运算.bmp');
%line的结构元素的形态腐蚀处理图
se=strel('line',100,90);
A2=imerode(H,se);
% figure;
% imshow(A2);title('line的结构元素的形态腐蚀处理图');
%标记图像和掩模图像进行形态重建运算
fobr=imreconstruct(A2,H1);
% figure;
% imshow(fobr);title('形态重建运算处理图');
%形态闭运算填补网络中的空缺,同时连接断点,得到修补的道路网络
se=strel('square',5);
fc=imclose(fobr,se);
% figure;
% imshow(fc);title('形态闭运算处理图');
%对形态重建后的道路网络信息进行形态细化
ginf=bwmorph(fc,'thin',4);
%figure;
imshow(ginf);
%title('形态细化运算处理图');
%imwrite(ginf,'形态细化后最终结果.tif');
end

加载中…