【图像处理】霍夫变换

  图像处理分析过程中,检测特定的形状是重要的一步。霍夫变换(Hough)通过转换坐标系,将特定形状的检测映射到参数空间中,从而根据参数空间中的值来确定特定形状的相关信息。
  Hough变换的比较简单的应用例子有检测直线和检测圆。

检测直线

  设空间中有若干点,我们要判断这些点是否能构成一条直线,即为直线检测。平面中直线的通用公式为 xcos(θ)+ysin(θ)=ρ 。常用的 y=wx+b 公式,因为不能兼容 y=b 的情况,所以不能使用。对于某个点,其坐标是 (xi,yi) ,过该点的直线有无数条,这些直线统一表示为 xicos(θ)+yisin(θ)=ρ ,其中 xi,yi 是常量。反过来看,代表这些直线的公式,可以看做 θ 为自变量, ρ 为因变量, xi,yi 为常量参数的直线公式。这样,在x-y空间过 (xi,yi) 的无数条直线,可以在 θρ 空间中用一条线代表。见下图:
  【图像处理】霍夫变换_第1张图片
  【图像处理】霍夫变换_第2张图片
  上图是x-y空间,下图是 θρ 空间。其中红、绿、蓝三条线可以汇聚成一个点,说明这三条线对应的点,其在 θρ 空间中的直线参数是一样的。反过来就是说,穿过这三个点的无数直线中,有“三”条直线,其 θ,ρ 值相同,这“三“条直线是一根直线,即这三个点可以共线。
  

检测圆

  设空间有若干点,我们要判断这些点是否能构成一个圆的轮廓,即为圆检测。圆的表达式为 (xx)2+(yy)2=R ,参数有 x,y,R 。这说明,圆对应的映射空间是三维的,即 xyR 空间。 x,y 都表示空间,因此我们可以暂时将R设为常量,构建 xy 空间,令x’为自变量,y’为因变量,作图如下:
  【图像处理】霍夫变换_第3张图片
  【图像处理】霍夫变换_第4张图片
  上图是x-y空间,下图是x’-y’空间。图中绘制了一个圆和一个矩形,其中圆的轮廓并不是完全规则的。经过Hough变换后,圆上的点的变换曲线基本汇聚在一起,而矩形上的点则不能汇聚,这样就检测到圆。由于我们获取的图像并不一定是规则图形,其在参数空间中不一定能汇聚到一个点,而是在一个区域中汇聚起来,为了容许这类误差,我们可以用窗来检测参数空间中的曲线汇聚区域,而不是找曲线汇聚点,以此来检测不完全规则的特定形状。
  如果我们不知道R的值,那么我们就需要给定R取值的离散区间 [R1,R2...Rn] ,取该区间中的值,重复做n次Hough变换检测。这样的话工作量会非常大,为了提升效率,往往会借助图像中的其他特征。
  另外,我们可以看出,由于不知道圆的尺度,我们不得不重复做多次检测。在实际的形状检测工作中,我们并不知道需要检测的复杂形状,经过了何种平移、缩放、旋转甚至是扭曲,因此需要引入不变性特征,或者针对所有可能的平移、缩放、旋转变换情况,统统做一遍检测。物体检测跟踪需要相当多的计算量。据了解,人脑为了进行视觉模式识别,至少消耗了一半的神经资源,所以人可以闭目养神,却不能捂耳朵、捏住鼻子养神:)

你可能感兴趣的:(模式识别与机器学习,图像处理)