
连通区域
关于改变的作文-科宝橱柜
2023年3月19日发(作者:送严士元)Matlab图像处理(⼀):⼆值化、开操作、连通区域提取、重
⼼,ROI(regionofi。。。
本博客主要记录我利⽤Matlab学习图像处理的⼀些学习笔记,欢迎交流,批评指正。
本篇是第⼀篇,主要讲解图像处理的⼀些基础知识,列出如下:
1.⼆值化
2.开操作
3.连通区域提取
4.连通区域重⼼提取
gbox提取
各操作背后的理论基础,这⾥先做简要说明:
1.⼆值化:通过选取适当的阈值,将图像上的像素点的灰度值设置为0或255【⿊(0)和⽩(255)】,使整个图像呈现出⿊⽩的效果。
图像处理,第⼀步⼀般就是进⾏⼆值化,⽽⼆值化常⽤的⽅法有两种(1)ostu⽅法,(2)Kittle算法。
⼀般先将图像灰度化,再将灰度图像⼆值化,然后进⾏其他处理。matlab可以直接⽤graythresh⽅法找到合适的阈值。之后⽤im2bw将
灰度图像转化为⼆值化图像。
2.开操作:开操作⼀般应⽤在⼆值图像分析处理的基础上,使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。
主要⽤来保留某种结构操作,remove其他不符合结构区域的前景区域像素。此操作依赖于结构元素的选取。
3.连通区域提取:在我们讨论连通区⾸先要明确域算法之前,⾸先要知道什么是连通区域。在图像中,最⼩的单位是像素,每个像素周围有
8个邻接像素。
常见的邻接关系有两种:4邻接和8邻接,4邻接的⼀共有4个点,即上下左右,如下左图所⽰,8邻接的⼀共有8个点,包括了对⾓线,如下
右图所⽰。
如果像素A与B邻接,那么我们称A与B连通,那么有如下结论:
如果A与B连通,B与C连通,那么A与C连通。
从视觉上来看,彼此连通的点形成了⼀个区域,⽽不连通的点形成了不同的区域,这样⼀个所有彼此连通的点构成的集合,我们称为⼀个连
通区域。
4.连通区域重⼼提取:只需要⽤matlab的regionprops⽅法就可很⽅便的获取各种属性。
gbox提取:同样⽤regionprops⽅法获取。
源代码如下:
%function:
%获取图像感兴趣的位置,并进⾏标记
%date:2016-9-21
%author:Zyy
%清空变量,读取图像,并显⽰其属性
clear;closeall
src=imread('');
whos
%显⽰原始图像
figure('name','myapp'),
subplot(2,2,1),imshow(src),title('src')
%⽤ostu⽅法获取⼆值化阈值,进⾏⼆值化并进⾏显⽰
level=graythresh(src);
bw=im2bw(src,level);
subplot(2,2,2),imshow(bw),title('bw')
%运⽤开操作消去噪点
se=strel('disk',2);%结构元素se
openbw=imopen(bw,se);
subplot(2,2,3),imshow(openbw),title('open')
%获取连通区域,并进⾏显⽰
L=bwlabel(openbw,4);
RGB=label2rgb(L);
subplot(2,2,4),imshow(RGB),title('rgb')
%获取区域的'basic'属性,'Area','Centroid',and'BoundingBox'
stats=regionprops(openbw,'basic');
centroids=cat(1,id);
figure('name','regionprops'),
%绘制开操作之后的⼆值化图像
imshow(openbw),title('centroids')
holdon
%绘制重⼼
plot(centroids(:,1),centroids(:,2),'b*'),
%绘制感兴趣区域ROI
fori=1:size(stats)
rectangle('Position',[stats(i).BoundingBox],'LineWidth',2,'LineStyle','--','EdgeColor','r'),
end
holdoff