220 likes | 390 Views
基于双重弯曲度积的图像拐点检测. Corner Detection based on Product of Two Bending Degrees. 主讲:廖文志 E-Mail: mrlwz@yahoo.cn. 1. 研究意义与背景. 拐点 是图像的重要拓扑特征之一,通常传递了非常重要的信息,这些信息可用于图像的匹配与识别以及重构等 图像 拐点具有计算量小,旋转、平移、缩放不变性等特点 因此准确、稳定地检测出图像的拐点具有重要的意义 。. 拐点通常发生在图像边缘方向发生急剧改变的地方,拐点一般是指图像中物体边界曲线上的大曲率点.
E N D
基于双重弯曲度积的图像拐点检测 Corner Detection based on Product of Two Bending Degrees 主讲:廖文志E-Mail: mrlwz@yahoo.cn
1.研究意义与背景 • 拐点是图像的重要拓扑特征之一,通常传递了非常重要的信息,这些信息可用于图像的匹配与识别以及重构等 • 图像拐点具有计算量小,旋转、平移、缩放不变性等特点 因此准确、稳定地检测出图像的拐点具有重要的意义。
拐点通常发生在图像边缘方向发生急剧改变的地方,拐点一般是指图像中物体边界曲线上的大曲率点 如图1所示,曲率的计算如式(1),式中 为像素点 切向角,S是相应的弧长。 (1) 图1 曲率计算示意图
常用的拐点算法 根据算法处理的像素集的不同,拐点检测算法大致可分为两类: *一是基于边缘的拐点检测算法; *二是基于图像灰度变化的拐点检 测算法,如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.双重弯曲度积拐点检测算法 • 图像中物体的边缘曲线S经轮廓提取和跟踪后可被表述为平面上一列坐标为整数的有序点集合: (2) 式(2)中xi和yi分别为像素点Pi的横坐标和纵坐标,○为“或”运算.设C1i和C2i分别表示第i个边界像素处的第一重弯曲度和第二重弯曲度
定义: : Pi的邻域,k为邻域半径 : Pi第一重弯曲度 : 向量Pi-kPi和Pi-kPi+k的外积 : Pi到直线Pi-kPi+k的距离
从图也可以看出边缘方向变化的越剧烈,边缘曲线越弯曲,该点处的第一重弯曲度值越大,反过来,也因此可以根据第一重弯曲度值去判断像素点是否为拐点。 在三角形面积相等的情况下,三角形的高越大,边缘曲线越弯曲。 图2 弯曲度示意图
同时可以根据向量Pi-kPi和Pi-kPi+k的外积来判断图像边界曲线在像素点Pi处的凸凹性,容易证明,当外积:同时可以根据向量Pi-kPi和Pi-kPi+k的外积来判断图像边界曲线在像素点Pi处的凸凹性,容易证明,当外积: ≥0 时,图像边界曲线在像素点Pi处是凸的,反之则是凹的. 从而可以根据的C1i符号来确定检测出的拐点是凸性角( C1i ≥0)还是凹性角( C1i<0).
如图所示,邻域半径k取不同值时的第一重弯曲度图,当第一重弯曲度值C1i>T如图所示,邻域半径k取不同值时的第一重弯曲度图,当第一重弯曲度值C1i>T T=k/2时,检测出来的拐点如图(c) (a) 原图像 (b) 图像轮廓 (c) 图像拐点 (d) k=3 (e) k=5 (f) k=7
然而对于图像中物体的形状及尺寸变化相对较大情况,拐点处与非拐点处的弯曲度值差别较小,阈值的设置就相对比较复杂了。 (a) 原图像 (b) T=1.5 (c) T=1.4 (d) T=1.3 (e) k=3
当邻域半径k=3时,取T=1.5,检测出的拐点如图 (b)所示,此时漏检了一些重要的拐点。随着阈值T逐渐地减小,如图(c)和(d)所示,所检测出的拐点也逐渐地增加,当T=1.3时图像中物体的所有可能的拐点都可以被检测出来,但是如图 (d)所示,同时也检测出了一些伪拐点。这表明当图像中物体的形状及尺寸变化比较剧烈时,在拐点处与非拐点处的第一重弯曲度值差别较小,难以准确区别拐点和伪拐点。
3.双重弯曲度之积 : Pi 第二重弯曲度 : 无穷范数 第二重弯曲度图
通过判断第一重弯曲度的值几乎可以检测出图像中物体所有可能的拐点,但是由于受图像中物体的形状及尺寸变化的影响,在拐点处与非拐点处的计算得到的弯曲度值差别较小,很难设置阈值以便准确地检测出真正的拐点。为了扩大拐点处与非拐点处弯曲度的差别,更好地排除伪拐点的干扰,更准确地检测出真正的拐点,定义第一重弯曲度和第二重弯曲度的乘积Ci如下: 这样在真正的拐点处双重弯曲度之积的值将会得到明显的加强,而在非拐点处的值保持不变或变化很小,这样就扩大了拐点处与非拐点处的弯曲度的差别,使拐点检测变得更简单有效.
如下图示是双重弯曲度之积的示意图。在运用中我们取|Ci|>2k/3,k为上述中的邻域半径,就可以准确地检测出图像中物体的真正拐点。 双重弯曲度积
4.实验结果与分析 为了比较拐点检测算法的性能,本文采用文献的评价指标从准确率,对噪声的敏感性,参数的设置等几个方面对拐点检测算法进行比较。 正确拐点
(a) RJ算法检测的结果 (b) RW算法检测的结果 (c) FD算法检测的结果 (d) BT算法检测的结果 (e) CS算法检测的结果 (f) 本文算法检测的结果
4.1对汉字图像的拐点检测 由于汉字的复杂性,即汉字有若干部件组成且每个部件的形状和尺寸不尽相同,且在高分辨率显示下,汉字图像的锯齿现象十分突出,使得汉字图像的拐点检测十分麻烦。然而,汉字图像的拐点对汉字的匹配与识别以及汉字的重建等具有重要的意义,下图是本文算法对汉字图像拐点检测的实验结果,从实验结果可以看出本文算法对汉字图像的拐点检测也相当有效,几乎能准确检测出汉字图像中所有的拐点,而且错检的拐点数几乎为零个。
5.结论 通过判断第一重弯曲度的值,可以检测出图像中物体所有可能的拐点以根据第一重弯曲度值去判断像素点是否为拐点; 通过第一重弯曲度与第二重弯曲度的乘积,可以扩大拐点处与非拐点处的弯曲度值差别,使得拐点的判别更加简单有效 ; 本文算法中阈值取法非常简单方便,只要设置一个与滑动窗口的邻域半径有关的阈值即可 。