怎样建一个免费网站,做教育机构中介网站,湘潭网站建设 排名磐石网络,做网站属于什么技术这个只需要遍历一次图像就能够完全标记了。我主要参考了WIKI和这位兄弟的博客#xff0c;这两个把原理基本上该介绍的都介绍过了#xff0c;我也不多说什么了。一步法代码相比两步法真是清晰又好看#xff0c;似乎真的比两步法要好很多。 代码如下#xff1a; clear all;
c… 这个只需要遍历一次图像就能够完全标记了。我主要参考了WIKI和这位兄弟的博客这两个把原理基本上该介绍的都介绍过了我也不多说什么了。一步法代码相比两步法真是清晰又好看似乎真的比两步法要好很多。 代码如下 clear all;
close all;
clc;imgimread(liantong.bmp);
imgnimg128;
suint8(1-imgn);%{
s[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0; %这个矩阵是维基百科中的矩阵0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0;0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0;0 0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0;0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 0;0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0;0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
%}
imshow(mat2gray(s));
[m n]size(s);
tmpzeros(m,n); %标记图像
label1;
queue_head1; %队列头
queue_tail1; %队列尾
neighbour[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1]; %和当前像素坐标相加得到八个邻域坐标for i2:m-1for j2:n-1if s(i,j)1 tmp(i,j) 0 tmp(i,j)label;q{queue_tail}[i j]; %用元组模拟队列当前坐标入列queue_tailqueue_tail1;while queue_head~queue_tailpixq{queue_head}; for k1:8 %8邻域搜索pix1pixneighbour(k,:); if pix1(1)2 pix1(1)m-1 pix1(2) 2 pix1(2)n-1if s(pix1(1),pix1(2)) 1 tmp(pix1(1),pix1(2)) 0 %如果当前像素邻域像素为1并且标记图像的这个邻域像素没有被标记那么标记tmp(pix1(1),pix1(2))label;q{queue_tail}[pix1(1) pix1(2)];queue_tailqueue_tail1;end end endqueue_headqueue_head1;endclear q; %清空队列为新的标记做准备labellabel1;queue_head1;queue_tail1; endend
end
figure,imshow(mat2gray(tmp)) 下面是效果图就效果而言和上一篇没什么区别的。 原图 效果图 这两篇算是把二值图像连通标记给搞定了。转载于:https://www.cnblogs.com/tiandsp/archive/2012/12/06/2805276.html