240 likes | 419 Vues
Analysis on Corner Detection of The Chinese Characters Based on First-Order Difference. 基于一阶差分的汉字拐点检测研究. 制作人:廖文志. 概要. 1. 研究背景 2. 算法 2.1 八邻域链码 2.2 平滑闭合边界的八邻域链码 2.3 计算平滑后八邻域链码的一阶差分 3. 仿真实验 3.1 仿射变换中的不变性 4. 结论. 1. 研究背景. 1. 汉字的拐点是汉字图像的重要拓扑特征之一,通常传递了非常重要的信息,这些信息可用于汉字的匹配与识别以及汉字的重构等;
E N D
Analysis on Corner Detection of The Chinese Characters Based on First-Order Difference 基于一阶差分的汉字拐点检测研究 制作人:廖文志
概要 • 1.研究背景 • 2.算法 2.1 八邻域链码 2.2 平滑闭合边界的八邻域链码 2.3 计算平滑后八邻域链码的一阶差分 • 3.仿真实验 3.1仿射变换中的不变性 • 4.结论
1.研究背景 • 1.汉字的拐点是汉字图像的重要拓扑特征之一,通常传递了非常重要的信息,这些信息可用于汉字的匹配与识别以及汉字的重构等; • 2.汉字拐点具有计算量小,旋转、平移、缩放不变性等特点; • 因此准确、稳定地检测出汉字的拐点具有重要的意义。
常用的拐点算法 根据算法处理的像素集的不同,拐点检测算法大致可分为两类: *一是基于边缘的拐点检测算法; *二是基于图像灰度变化的拐点检测算法,如Harris,Susan算法; 今天我们主要讨论基于边缘的拐点检测算法
*Rosenfeld与Johnston提出了k余弦算法(简称为RJ算法),即利用边界点处内角的余弦值来估算曲率。*Rosenfeld与Johnston提出了k余弦算法(简称为RJ算法),即利用边界点处内角的余弦值来估算曲率。 *Rosenfeld与Weszka改进了RJ算法(简称为RW算法),用各点处边界邻域中内角的平均余弦值来平滑曲率,这虽提高了拐点识别的准确性,但却极大地降低了算法的实时性。 对基于边缘的拐点检测算法 : • Freeman与Davis首先利用一条连接物体边界上由s段链码构成的曲线段的两个端点的移动直线段来平滑物体边界,然后根据直线段两次移动的偏转角度来近似计算边界各点的曲率(简称为FD算法),但该算法中,参数的选择对拐点检测结果的影响非常大。 • Beus和Tiu又提出了FD算法的改进算法(简称为BT算法),与RW算法类似,BT算法是通过对用FD算法计算得到的曲率进行局部平均来改善算法的稳定性。
然而上述算法都有一个共同的缺点:由于计算得到的拐点处的曲率与非拐点处的曲率差别较小,因此算法的稳定性和准确性对图像中物体的形状及尺寸变化较敏感。然而上述算法都有一个共同的缺点:由于计算得到的拐点处的曲率与非拐点处的曲率差别较小,因此算法的稳定性和准确性对图像中物体的形状及尺寸变化较敏感。 • 同时由于汉字的复杂性,即汉字有若干部件组成且每个部件的形状和尺寸不尽相同,且在高分辨率显示下,汉字的锯齿现象十分突出。
针对这些问题,本文提出了基于一阶差分的汉字拐点检测算法,该算法虽属于基于边缘的拐点检测算法,但与已有的基于链码的算法不同,它不需要计算边界点处内角的余弦值和曲率。针对这些问题,本文提出了基于一阶差分的汉字拐点检测算法,该算法虽属于基于边缘的拐点检测算法,但与已有的基于链码的算法不同,它不需要计算边界点处内角的余弦值和曲率。
二.基于一阶差分的汉字拐点检测算法 • 拐点:是由直线或曲线的交点所形成的,它们发生在边缘方向发生急剧改变的地方。拐点的定义有很多,不同的定义决定其采取的检测算法。
2.1八邻域链码 设一幅图像中物体有n个闭合边界,第i个闭合边界由Tk个像素(i=1,2,…,n)构成, (k=1,2,…,n,i=1,2,…,Tk)表示第k个闭合边界中第i个边界像素点, 和 表示第k个闭合边界中第i个边界像素处的八邻域链码值和一阶差分。由于每个边界闭合,所以 ; ; 像素 的八邻域即是将以 为中心的3600平面空间量化为八个方向,每个方向用数字0,1,…,7标识,如下图所示
图2 图2的8邻域链码
2.2平滑闭合边界的八邻域链码 • 从链码图可以看出八邻域链码反映了每个闭合边界中当前像素与下一个像素之间的方向变化,然而边界的锯齿现象比较明显,若此时直接对八邻域链码求一阶差分检测拐点,将会有很多伪拐点干扰。因此本文采用如下平滑策略来平滑初始八邻域链码,能有效地避免锯齿现象和一些伪拐点的干扰
对于图像中每一条闭合的边界: • (1)比较当前像素,当前像素的前两个像素以及当前像素的后两个像素之间的链码值: 如果 (d=1,2)相同且 则; • (2)比较当前像素,当前像素的前两个像素以及当前像素的下一个像素之间的链码值;或者比较当前像素,当前像素的后两个像素以及当前像素的前一个像素之间的链码值: 如果( (d=1,2)且≠ )或者( 且≠ )则 ; • (3)比较当前像素,当前像素的前两个像素以及当前像素的下下个像素之间的链码值;或者比较当前像素,当前像素的上上个像素以及当前像素的后两个像素之间的链码值: 如果( 且 )或者( 且 ) 则 。 ( (
图2的八邻域链码图按上述平滑策略平滑后,得到的链码如下图所示,锯齿现象明显被消除,同时也排除了一些伪拐点的干扰。图2的八邻域链码图按上述平滑策略平滑后,得到的链码如下图所示,锯齿现象明显被消除,同时也排除了一些伪拐点的干扰。
边界像素的八邻域链码表示每个闭合边界中当前像素与下一个像素之间的方向变化,即反映了边界像素方向的变化,而八邻域链码的导数则表示了边界像素方向的变化率,连续空间中第k条闭合边界的第i个边界像素点 的导数 定义为: (1) 在离散的空间中,可用八邻域链码的一阶差分来近似八邻域链码的导数表示边界像素方向的变化率,因为: (2) 2.3计算平滑后八邻域链码的一阶差分
对经过平滑后的八邻域链码做一阶差分所得结果如下图所示,图中的零系列表示该边界是一条直线;图中的非零点表示该像素可能为拐点,具体判断还要根据如下具体算法描述的第(4)步。对经过平滑后的八邻域链码做一阶差分所得结果如下图所示,图中的零系列表示该边界是一条直线;图中的非零点表示该像素可能为拐点,具体判断还要根据如下具体算法描述的第(4)步。
注意: • 阈值Threshold如果取得过小则会误检出一些伪拐点,如果取得过大则会漏检一些重要的拐点,采用式(5)的阈值取法,能使阈值随图像中每个闭合边界的长度变化而自适应地变化。如图5中第二个闭合边界有52个像素,所以 =52,从而Threshold≈3.6,因为 =2<Threshold,故像素为伪拐点,对应图2中画蓝○的像素点。根据FOD算法图2中检测出的拐点如图中标红○的像素点。 FOD算法描述如下: • (1)跟踪图像中汉字的边界轮廓,汉字中的每个闭合边界用一条八邻域链码表示边界各像素; • (2)按2.2中的平滑策略(1)、(2)和(3)对每条八邻域链码进行平滑; • (3)对经过平滑后的每条八邻域链码按式(3)计算其一阶差分; • (4)挑出每条八邻域链码中一阶差分不为零的像素,并用 表示其位置,用 表示这条链码的长度(此闭合边界的像素总数)。若一条链码中两个相邻的一阶差分不为零的像素之间的间隔大于某一阈值Threshold时,则判定该像素为拐点,即: >Threshold (4) Threshold= (5)
3 仿真实验 为了比较FOD的性能,对七个宋体汉字进行拐点检测仿真实验,下图的上面一行是对这七个汉字进行跟踪得到的汉字轮廓,图中红色“■”点是根据2中拐点的定义目测得到的真正拐点,下面一行是用本文算法测得的结果。
:FOD算法所检测出的拐点总体正确率(98.6%)是最高的,几乎能检测出所有的拐点,如表1 FOD算法那一列中所示,而且所检测出的拐点总体错误率(4.2%)以及拐点的总体漏检率(1.4%)比较低是FOD算法的又一优势。 从下图可以看出,对所给的七个汉字,各算法所检测出的拐点总体正确率从高到低排序为:FOD算法、FD算法、BT算法、RW算法、RJ算法; 所检测出的拐点总体错误率从低到高排序为:BT算法、FOD算法、FD算法、RW算法、RJ算法;各算法的总体漏检率从低到高排序为: FOD算法、FD算法、BT算法、RW算法、RJ算法。由于RJ算法、RW算法、FD算法、BT算法计算得到的拐点处的曲率与非拐点处的曲率差别较小,因此这四种算法的稳定性和准确性对图像中物体的形状及尺寸变化较敏感,如 “人”和“共”字这四种算法要么错检出一些伪拐点,要么会漏检一些重要拐点;对“国”字,由于其中“玉”字中一点边界轮廓较小而无法跟踪到其边界,从而这四种算法都无法检测出其中的拐点。
3.1 仿射变换中的不变性从不同角度、距离获取的图像中检测出不受视点因素影响的仿射不变特征,对图像的匹配与识别以及图像的重构等具有重要的意义。下面将讨论FOD算法的仿射变换不变性,如下图所示: 图(a)中正方形以其中的蓝色像素点为始点按顺时针方向进行编码得到的八邻域链码为: 0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,2, 2,2,2,2,2,2,2,2,2,2,2,2; 按式(3)可计算出其一阶差分为: 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,0,0,0,0,0,0,0,0,0,0,-2。 图(b)中的正方形是图(a)中正方形以始点为基准点缩小一半再按逆时针方向旋转450后得到的,其八邻域链码变为: 1,1,1,1,1,1,7,7,7,7,7,7,5,5,5,5,5,5,3,3,3,3,3,3; 按式(3)可计算出其一阶差分为: 0,0,0,0,0,6,0,0,0,0,0,-2,0,0,0,0,0,-2,0,0,0,0,0,-2。 (a) (b)
图像经仿射变换后,其八邻域链码也会发生相应地变化,但是链码中相邻两像素之间的链码值之差(即一阶差分)并不改变,如上图所示。一方面是因为拐点作为图像的拓扑特征不会受图像仿射变换的影响;另一方面是因为FOD算法中拐点的计算是基于八邻域链码的一阶差分,图像轮廓的八邻域链码的一阶差分表示图像轮廓方向(八邻域链码)的变化率,图像作仿射变换对图像的八邻域链码可能会产生影响,比如放大或缩小图像,其八邻域链码会变长或缩短,图像旋转后其八邻域链码也会改变,但是这些并不会影响图像轮廓方向的变化率(八邻域链码的一阶差分)。因此,本文的算法在图像仿射变换中不会影响其拐点的检测,仿射变换不变性的测试结果如下页图所示。图像经仿射变换后,其八邻域链码也会发生相应地变化,但是链码中相邻两像素之间的链码值之差(即一阶差分)并不改变,如上图所示。一方面是因为拐点作为图像的拓扑特征不会受图像仿射变换的影响;另一方面是因为FOD算法中拐点的计算是基于八邻域链码的一阶差分,图像轮廓的八邻域链码的一阶差分表示图像轮廓方向(八邻域链码)的变化率,图像作仿射变换对图像的八邻域链码可能会产生影响,比如放大或缩小图像,其八邻域链码会变长或缩短,图像旋转后其八邻域链码也会改变,但是这些并不会影响图像轮廓方向的变化率(八邻域链码的一阶差分)。因此,本文的算法在图像仿射变换中不会影响其拐点的检测,仿射变换不变性的测试结果如下页图所示。
(a)“中”缩小0.8逆时针旋转370(b)“华”缩小0.6逆时针旋转680 (c)“中”缩小0.4逆时针旋转1600 (d)“华”缩小0.25逆时针旋转1000
4. 结论 本文提出了一种基于一阶差分的汉字拐点检测算法,该算法简单有效: • 不需要计算边界点处内角的余弦值和曲率; • 对所得边界的八邻域链码进行平滑,能有效地消除汉字锯齿现象的干扰,同时过滤掉一些伪拐点; • 仅需要设置一个阈值,而且阈值能随汉字部件的边界长度自适应变化,有效避免了拐点检测易受汉字部件尺寸大小的影响。 通过对已有四种算法的对比实验表明,本文算法不仅具有较高的准确性和稳定性,而且具有仿射变换不变性。限于篇幅本文只给出了7个汉字的拐点检测实验结果,但提出的拐点检测方法同样适合于其它汉字的拐点检测,也可以在其它非汉字的拐点检测中借鉴。