我一直在尝试在视频流中检测和跟踪车辆。最近,我决定实施一种硬编码方法,该方法可以找出车辆的阴影并检测整个车辆的轮胎位置。最后,我部分完成了我的实现。这是演示的video link。
在第一步,我使用canny边缘检测器来减去视频帧的边缘。
然后我在opencv中使用了hough transform funciton。
然而,这个函数找到所有的水平和垂直线,而我只对可能是车辆阴影的水平线感兴趣。
我的问题是我如何使用霍夫线变换函数,它只检查特定角度范围内和特定区域内的线。是否有任何参数可以控制角度?或者我应该自己实现这个功能吗?
答案 0 :(得分:1)
由于您在Canny操作之后最终得到了二进制图像,因此在应用Hough变换之前,最简单的方法是使用简单的水平Prewitt算子对图像进行卷积:
1 1 1
0 0 0
-1 -1 -1
它将为您提供每个像素的灰度强度的地图,沿水平边缘的像素给出最强的信号。仅使用水平算子的优点是垂直边缘不接收放大,水平边缘接收最大放大,并且水平45°内的任何边缘应该在两者之间的某处有信号。当您将检测边应用于原始图像时,可以使用生成的图像来确定Canny蒙版中要保留哪些像素:如果Prewitt信号高于某个像素的某个阈值,则假定该像素沿着'水平 - 保持足够的边缘,否则丢弃。我相信opencv有这个功能,但如果不是这样的话,那就很难实现。