曲率滤波
本文重点
图像边界往往存在噪声,在获取亚像素级边缘点后,必须对边缘点进行滤波。本文提出一种基于圆曲率的边缘点滤波方法,这种方法很简单,但是却有很好的滤波效果。
1. 曲率简单介绍
曲率是曲线的一个重要特征,它在一定程度上反映了曲线的弯曲程度,对于二维曲线,曲率定义为
${ m{k}} = frac{{frac{{{d^2}y}}{{d{x^2}}}}}{{{{left[ {1 + {{left( {frac{{dy}}{{dx}}} ight)}^2}} ight]}^{frac{3}{2}}}}} = frac{{f''}}{{{{left[ {1 + {{left( {f'} ight)}^2}} ight]}^{frac{3}{2}}}}}$ 式(1.1)
对于同一平面内的任意三个连续点(x1,y1),(x2,y2),(x3,y3),如图1所示,(x2,y2)的曲率定义为
${ m{k}} = frac{1}{r} = frac{1}{{sqrt {{{left( {x0 - x2} ight)}^2} + {{left( {y0 - y2} ight)}^2}} }}$ 式(1.2)
式中(x0,y0)为这三点组成圆的圆心,且有
${ m{x}}0 = frac{{a - b + c}}{d}$
${ m{y}}0 = frac{{e - f + g}}{{ - d}}$
a=(x1+x2)(x2-x1)(y3-y2)
b=(x2+x3)(x3-x2)(y2-y1)
c=(y1-y3)(y2-y1)(y3-y2)
d=2[(x2-x1)(y3-y2)-(x3-x2)(y2-y1)]
e=(y1+y2)(y2-y1)(x3-x2)
f=(y2+y3)(y3-y2)(x2-x1)
g=(x1-x3)(x2-x1)(x3-x2)
图一
推导方法由三个点共面,三个点到圆心距离相等求得。
即
$left| {egin{array}{*{20}{c}}{egin{array}{*{20}{c}}x&y&z&1\{x1}&{y1}&{z1}&1\{x2}&{y2}&{z2}&1end{array}}\{egin{array}{*{20}{c}}{x3}&{y3}&{z3}&1end{array}}end{array}}
ight| = 0$ (1)
R2 = (x1-x0)2+(y1-y0)2+(z1-z0)2 (2)
R2 = (x2-x0)2+(y2-y0)2+(z2-z0)2 (3)
R2 = (x3-x0)2+(y3-y0)2+(z3-z0)2 (4)
2. 滤波原理及算法
在标准圆中,其边缘点的曲率相同,都等于标准半径的倒数。而在实际中,由于边缘点不是在理想的圆周点,边缘点的曲率会在某个值附近波动,这个值可以根据半径粗定位获得,称之为圆的粗定位曲率。如果边缘点存在噪声,该点的曲率在粗定位曲率附近有较大的波动,即该点曲率与粗定位曲率之差大于某个阈值(阈值通过实际情况判断)。通过式1.1知,一个噪声点会影响其临近的两个点的曲率值,因此只有当一个点的前后两个点的粗定位曲率都大于阈值,该点本身曲率也大于阈值,则该点才是噪声点,这样计算出的亚像素边缘经过曲率过滤会更接近标准圆。
具体算法:
Step1:根据式(1.2)求得各个亚像素级边缘点的曲率。
Step2:令粗定位曲率为c(其值为粗定位圆半径的倒数),阈值为t,当前点为P(x0,y0),当前点,前一点,后一点曲率分别为Q0, Q-1,Q1。如果满足以下三个条件时,则认为点P(x0,y0)为噪声点,予以剔除。
条件1:|Q0-c|>t;
条件2:|Q-1-c|>t;
条件3:|Q1-c|>t.
【 结束 】