如何对特定角度范围进行霍夫变换

时间:2016-01-23 22:26:44

标签: opencv computer-vision

我一直在尝试在视频流中检测和跟踪车辆。最近,我决定实施一种硬编码方法,该方法可以找出车辆的阴影并检测整个车辆的轮胎位置。最后,我部分完成了我的实现。这是演示的video link

在第一步,我使用canny边缘检测器来减去视频帧的边缘。

enter image description here

然后我在opencv中使用了hough transform funciton。

enter image description here

然而,这个函数找到所有的水平和垂直线,而我只对可能是车辆阴影的水平线感兴趣。

enter image description here

我的问题是我如何使用霍夫线变换函数,它只检查特定角度范围内和特定区域内的线。是否有任何参数可以控制角度?或者我应该自己实现这个功能吗?

1 个答案:

答案 0 :(得分:1)

由于您在Canny操作之后最终得到了二进制图像,因此在应用Hough变换之前,最简单的方法是使用简单的水平Prewitt算子对图像进行卷积:

 1    1    1
 0    0    0
-1   -1   -1

它将为您提供每个像素的灰度强度的地图,沿水平边缘的像素给出最强的信号。仅使用水平算子的优点是垂直边缘不接收放大,水平边缘接收最大放大,并且水平45°内的任何边缘应该在两者之间的某处有信号。当您将检测边应用于原始图像时,可以使用生成的图像来确定Canny蒙版中要保留哪些像素:如果Prewitt信号高于某个像素的某个阈值,则假定该像素沿着'水平 - 保持足够的边缘,否则丢弃。我相信opencv有这个功能,但如果不是这样的话,那就很难实现。