zoukankan      html  css  js  c++  java
  • Hough变换的基本思考

    一,概念:

    Hough变换用于在图像中检测特定性状,如线,圆,矩形等,广泛用于图像识别领域。

    二,原理:

    1,Hough变换直线检测:

    一条直接的方程可表示为:y = a*x + b ,当a,b固定时直线固定,在图像中可任意取两个不同的x,计算得到相应y则可绘制出这条直线。

    而直线检测,则是上述过程的逆过程:已知一系列的点,求取a,b参数的过程。

    b = –x*a+y

    这里表示对于任意的点(x0,y0),在参数空间Space(a,b)中有一条对应的直线: b = –x0 * a + y0 ,所以对于原图像中的直线上的点,在参数空间中有相应数目的直线,且这些直线必相交于(a,b),得到这个相交点,则原直线方程可求出。

    NOTE:

    对于a=0,即直线为水平的情况,上述方法不适用,因为所有的点(x,y)在参数空间中对应的直线均为b=y,无交点。

    所以发展出另外一种算法,不用Space(a,b),而是Space(theta,rho),即直线方程表示为:rho = x * cos(theta) + y * sin(theta) 。求theta,rho的方法参照上面的方法。

    2,Hough变换圆检测:

    一个圆表示为:(x+a)^2 + (y+b)^2 = R^2 , 即将图像空间的点映射到参数空间Space(a,b,R),然后计算出参数空间中的交点,即得到a,b,R,圆检测得到。

    NOTE : 上述方法前提条件是理想情况下的一条线/圆检测,在实际工程中多条直线,多个圆的的情况,需要一个阈值将参数空间的大部分点去除,剩下的就是检测结果。

    三,思考:

    类似于Hough变换这样的算法的核心是,在某个角度空间看似无解或者很困难的任务,转换到一个恰当的空间中或许会非常简单。

    难点是,这样的一个转换过程也许会很难想到。

  • 相关阅读:
    切片/修改
    代码块,-- 循环结构--字符串的格式化--字符串相关函数功能
    format 填充符号 与 格式化
    字符串的格式化format
    python字符串相关函数 *title *upper *lower *swapcase *len *count *find *index *starts with *endswith *isalpha *isdecimal *split *center *strip *replace
    双层循环经典小项目题
    while 小项目练习
    for循环 | range 对象
    关键字的使用 pass break continue
    python字符串的切片
  • 原文地址:https://www.cnblogs.com/xylc/p/3461458.html
Copyright © 2011-2022 走看看