购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 实例:基于霍夫变换的车道检测

本节首先介绍一些关于霍夫变换的基本概念,然后利用OpenCV提供的霍夫变换来寻找车道。

3.2.1 霍夫变换

最初霍夫变换只是一种检测图像中线条的技术,现在已被广泛采用来检测2D和3D曲线。其算法的执行步骤如下:

(1)拐角或边缘检测。例如,使用Canny、Sobel和自适应阈值,所生成的二进制/灰度图像将具有用0(无边缘)和1(或更高值)表示的边缘。这是输入图像。

(2) ρ 范围和 θ 范围的创建。 ρ 的范围为[-max_dist,max_dist],其中max_dist表示输入图像的对角线长度; θ 的范围为-90 o ~90 o

(3)计算相对于 ρ θ 累加值。它是一个2D数组,其行数为 ρ 值,列数为 θ 值。

(4)在累加器中“投票”。对于每个边缘点和每个 θ 值,找到最近的 ρ 值,并在累加器中递增该索引。每个元素都表明有多少个点/像素,为潜在的候选线贡献了“票”。

(5)峰值发现。累加器中的局部最大值,用于指示输入图像中最突出的线条的参数。通过应用阈值或相对阈值(等于或大于全局最大值的某个固定的百分比),容易找到峰值。

下面这段代码表示利用霍夫变换来检测直线。

代码3-1 利用霍夫变换检测直线

下面这段代码表示如何调用上面定义的hough_line检测直线。

代码3-2 调用hough_line检测直线

3.2.2 OpenCV车道检测

下面给出的例子,主要是利用OpenCV提供的cv2.HoughLinesP函数来进行直线检测。

代码3-3 OpenCV提供的cv2.HoughLinesP函数

代码3-4 调用cv2.HoughLinesP函数 eXFHukDJq8w7MqscEAwtldnyIuoFcnMTgTGpUkUh9dWE7IH6SmuXP83SBdXHZ2X3

点击中间区域
呼出菜单
上一章
目录
下一章
×