zoukankan      html  css  js  c++  java
  • 三维精密测量(二) 曲率滤波

    曲率滤波

    本文重点

       图像边界往往存在噪声,在获取亚像素级边缘点后,必须对边缘点进行滤波。本文提出一种基于圆曲率的边缘点滤波方法,这种方法很简单,但是却有很好的滤波效果。

    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.

    【 结束 】

  • 相关阅读:
    LeetCode173. 二叉搜索树迭代器
    LeetCode172. 阶乘后的零
    电商系统 SKU 设计和优化2
    电商系统 SKU 设计和优化
    JQuery/JS插件 排列组合 前端实现
    开源框架 码云 推荐项目
    Java idea 打包 编码问题 解决
    Java 基础 MyBatis-Plus 组装查询条件
    Java 基础 list 排序
    Java 基础 list 查询 ids
  • 原文地址:https://www.cnblogs.com/fujj/p/9711062.html
Copyright © 2011-2022 走看看