论文部分内容阅读
摘要:提取图形的形状特征是当前图像处理领域的重要研究内容,而图形的边缘轮廓又能很好地反映形状的信息,因此本文阐述了如何利用matlab较好的提取图形的轮廓,以及将简单轮廓图形填充起来作为形状图形进行研究的算法及代码实现。
关键词:图形;轮廓;膨胀;填充
中图分类号:TP317文献标识码:A 文章编号:1009-3044(2008)09-11722-02
Extraction and Filling of the Outline of Black-and-White Binary Graphics Based on Matlab
JING Ai-bin,LIU Qing,MENG Xiang-zeng
(Shandong Normal University, Jinnan 250014,China)
Abstract: Extracing the characteristic of shape from graphics is an important research field,while the outline can well reflect the information of the shape, so this article elaborates the algorithm and the codes about how to use the matlab to extract outlines of graphics, and to filll the existing outline graphics so as to research them as shape graphics.
Key words: graphics; outline; expansion; filling
1 图形及轮廓的界定
在图像的视觉特征研究领域,形状特征因更接近人的视觉特点,一直是人们的研究重点。而形状的边缘又能很好的反映形状的信息,所以有必要提取图形的边缘轮廓以对以后的深入分析打下基础。
实验之前我们首先阐明两个概念,即图形和轮廓。我们这里所说的图形,指的是有明显的形状和线条特征,但没有太复杂的颜色或纹理特征的简单图像。为了便于研究,本文中所采用的图形为黑白二值图形。
另外,因为我们需要研究的对象是形状而非内部细节,所以本文所涉及的轮廓,指图形的外轮廓,不包括图形内部的孔洞所围成的内部边界,例如,对于示例图1,我们所期望得到的轮廓是如图3所示的外轮廓,而非图2所示图形的整个内外边界轮廓。
首先,从左至右逐行扫描图形,如果像素值为0,则是背景,不做任何改变,继续往后扫描,直到遇到像素值为1的点,如果这个点的下一个点像素值为0,表示扫描到了最左边的轮廓点,这时设置一个标记,从这个点往后所有像素值为0的点全部置1,直到再次遇到像素值为1的点为止,此过程将这两个边界点之间的区域填充起来。
然后接着扫描后面的点,当再次遇到像素值为1的点事时,重复以上步骤。这样一行行的扫描填充,整幅轮廓图就被填充起来了。
其代码如下:
F2=imread(’hat.bmp’);
[K,L]=size(F2);
for i=1:K
flag=1;
j=1;
while j if F2(i,j)==1
j=j 1;
flag=F2(i,j);%设置标志
while flag==0
关键词:图形;轮廓;膨胀;填充
中图分类号:TP317文献标识码:A 文章编号:1009-3044(2008)09-11722-02
Extraction and Filling of the Outline of Black-and-White Binary Graphics Based on Matlab
JING Ai-bin,LIU Qing,MENG Xiang-zeng
(Shandong Normal University, Jinnan 250014,China)
Abstract: Extracing the characteristic of shape from graphics is an important research field,while the outline can well reflect the information of the shape, so this article elaborates the algorithm and the codes about how to use the matlab to extract outlines of graphics, and to filll the existing outline graphics so as to research them as shape graphics.
Key words: graphics; outline; expansion; filling
1 图形及轮廓的界定
在图像的视觉特征研究领域,形状特征因更接近人的视觉特点,一直是人们的研究重点。而形状的边缘又能很好的反映形状的信息,所以有必要提取图形的边缘轮廓以对以后的深入分析打下基础。
实验之前我们首先阐明两个概念,即图形和轮廓。我们这里所说的图形,指的是有明显的形状和线条特征,但没有太复杂的颜色或纹理特征的简单图像。为了便于研究,本文中所采用的图形为黑白二值图形。
另外,因为我们需要研究的对象是形状而非内部细节,所以本文所涉及的轮廓,指图形的外轮廓,不包括图形内部的孔洞所围成的内部边界,例如,对于示例图1,我们所期望得到的轮廓是如图3所示的外轮廓,而非图2所示图形的整个内外边界轮廓。
首先,从左至右逐行扫描图形,如果像素值为0,则是背景,不做任何改变,继续往后扫描,直到遇到像素值为1的点,如果这个点的下一个点像素值为0,表示扫描到了最左边的轮廓点,这时设置一个标记,从这个点往后所有像素值为0的点全部置1,直到再次遇到像素值为1的点为止,此过程将这两个边界点之间的区域填充起来。
然后接着扫描后面的点,当再次遇到像素值为1的点事时,重复以上步骤。这样一行行的扫描填充,整幅轮廓图就被填充起来了。
其代码如下:
F2=imread(’hat.bmp’);
[K,L]=size(F2);
for i=1:K
flag=1;
j=1;
while j
j=j 1;
flag=F2(i,j);%设置标志
while flag==0