Matlab实现连通域标记算法求图像连通域
生活随笔
收集整理的這篇文章主要介紹了
Matlab实现连通域标记算法求图像连通域
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Matlab實現連通域標記算法求圖像連通域
- 連通域
- 連通域標記算法
連通域
連通區域(Connected Component)一般是指圖像中具有相同像素值且位置相鄰的前景像素點組成的圖像區域(Region,Blob)。連通區域分析(Connected Component Analysis,Connected Component Labeling)是指將圖像中的各個連通區域找出并標記。
連通區域分析是一種在CVPR和圖像分析處理的眾多應用領域中較為常用和基本的方法。例如:OCR識別中字符分割提取(車牌識別、文本識別、字幕識別等)、視覺跟蹤中的運動前景目標分割與提取(行人入侵檢測、遺留物體檢測、基于視覺的車輛檢測與跟蹤等)、醫學圖像處理(感興趣目標區域提取)、等等。也就是說,在需要將前景目標提取出來以便后續進行處理的應用場景中都能夠用到連通區域分析方法,通常連通區域分析處理的對象是一張二值化后的圖像。
連通域標記算法
選用圖像:
A=imread('d:\Temp\test.png');
[m,n]=size(A);
B=zeros(m,n);%標記矩陣
label=1; %不同連通域標記值
q=zeros(9999,2);%模擬隊列
head=1;
tail=1;
neighbour=[-1,-1;-1,0;-1,1;0,-1;0,1;1,-1;1,0;1,1]; %與某像素點相加得到該像素點的鄰域像素點for j=1:nfor i=1:mif A(i,j)~=0&&B(i,j)==0B(i,j)=label;q(tail,:)=[i,j]; %用元組模擬隊列,當前坐標入列tail=tail+1;while head~=tail %該循環由連通域中一像素點得到一整個連通域pix=q(head,:);for k=1:8pix1=pix+neighbour(k,:);if pix1(1)>=1&&pix1(1)<=m&&pix1(2)>=1&&pix1(2)<=nif A(pix1(1),pix1(2))~=0&&B(pix1(1),pix1(2))==0B(pix1(1),pix1(2))=label;q(tail,:)=[pix1(1) pix1(2)];tail=tail+1;endendendhead=head+1;endlabel=label+1;head=1;tail=1;endend
end
imshow(mat2gray(B));
代碼效果:
總結
以上是生活随笔為你收集整理的Matlab实现连通域标记算法求图像连通域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言局部搜索算法(爬山法,模拟退火法,
- 下一篇: C语言中的struct结构体对齐问题