图像处理之区域标记
2017-11-10 20:28
211 查看
对应matlab函数:bwlabel,L = bwlabel(BW,n),其中BW为二值图像,而n有两种取值:4和8,分别对应4连通和8连通,默认是8连通;
1.使用栈来实现区域标记代码:
2.使用递归的方式来实现:
1.使用栈来实现区域标记代码:
close all;clear all;clc; I=imread('cameraman.tif'); s=im2bw(I); L8=bwlabel(s,8); [m n]=size(s); tmp=zeros(m,n); label=0; %遍历时标记的标签数量 for i=1:m for j=1:n cur=s(i,j); if cur==1&&tmp(i,j)==0 %只有还未遍历过的值为1的才可以进入 label=label+1; tmp(i,j)=label; k=1; stack(k,1)=i;stack(k,2)=j; %类似于栈的作用,遍历一个区块的,栈的每一个元素为两个,栈的长度未定 while(isempty(stack)==0) %只有全部遍历完才退出栈,同时这些遍历过的元素不会再遍历 i1=stack(k,1);j1=stack(k,2); stack(k,:)=[]; k=k-1; %k表示在栈中的位置,此处为弹出元素 if i1-1>0&&s(i1-1,j1)==1&&tmp(i1-1,j1)==0 %原图像当前像素上方元素 tmp(i1-1,j1)=label; k=k+1; stack(k,1)=i1-1;stack(k,2)=j1; end if i1+1<=m&&s(i1+1,j1)==1&&tmp(i1+1,j1)==0%原图像当前像素下方元素 tmp(i1+1,j1)=label; k=k+1; %此处为在栈中加入元素 stack(k,1)=i1+1;stack(k,2)=j1; end if j1-1>0&&s(i1,j1-1)==1&&tmp(i1,j1-1)==0%原图像当前像素左面元素 tmp(i1,j1-1)=label; k=k+1; stack(k,1)=i1;stack(k,2)=j1-1; end if j1+1<=n&&s(i1,j1+1)==1&&tmp(i1,j1+1)==0%原图像当前像素右面元素 tmp(i1,j1+1)=label; k=k+1; stack(k,1)=i1;stack(k,2)=j1+1; end %左上元素 if i1-1>0&&j1-1>0&&s(i1-1,j1-1)==1&&tmp(i1-1,j1-1)==0 tmp(i1-1,j1-1)=label; k=k+1; stack(k,1)=i1-1;stack(k,2)=j1-1; end %右上元素 if i1-1>0&&j1+1<=n&&s(i1-1,j1+1)==1&&tmp(i1-1,j1+1)==0 tmp(i1-1,j1+1)=label; k=k+1; stack(k,1)=i1-1;stack(k,2)=j1+1; end %左下元素 if i1+1<=m&&j1-1>0&&s(i1+1,j1-1)==1&&tmp(i1+1,j1-1)==0 tmp(i1+1,j1-1)=label; k=k+1; stack(k,1)=i1+1;stack(k,2)=j1-1; end %右下元素 if i1+1<=m&&j1+1<=n&&s(i1+1,j1+1)==1&&tmp(i1+1,j1+1)==0 tmp(i1+1,j1+1)=label; k=k+1; stack(k,1)=i1+1;stack(k,2)=j1+1; end end end end end
2.使用递归的方式来实现:
相关文章推荐
- 图像处理中矩形标记图像中某一块区域matlab中rectangle函数介绍
- 【python】数字图像处理:高级形态学处理 阈值分割+闭运算+连通区域标记+删除小区块+分色显示
- Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
- 【图像处理】二值图像连通区域标记中等价对的合并
- OpneCV 二值图像区域处理
- 数字图像处理—图像分割—并行区域—连通区域标记(像素标记)(4-连通情况)
- 【图像处理】二值图像连通域标记-基于行程的标记方法-计算目标中心位置方法1
- 利用区域标记实现图像分离
- 图像处理之计算连通区域的角度方向
- OpenCV设置感兴趣区域ROI,对图像进行局部处理
- 一种二值图像连通区域标记的新方法
- 图像识别与处理之Opencv——选取图像局部区域
- OpenCV图像处理-区域分割-形态学操作应用
- 【图像处理】利用种子填充法对二值图像进行连通域标记-计算目标中心位置方法2
- 图像处理之ROI区域裁剪
- 图像处理之计算连通区域的角度方向
- 二值图像连通区域标记:Seed Filling(种子填充法)
- halcon截取图像中被标记的区域
- C#数字图像处理时注意图像的未用区域
- OpenCV:二值图像连通区域分析与标记算法实现