车道线检测算法

1.高斯模糊算法

blur_gray = cv2.GaussianBlur(gray,(kernel_size,kernel_size),0)
Mathematically, applying a Gaussian blur to an image is the same as convolving the image with a Gaussian function.
数学上讲,对图像做高斯模糊等同于将图像与高斯函数卷积。
Since the Fourier transform of a Gaussian is another Gaussian, applying a Gaussian blur has the effect of reducing the image’s high-frequency components; a Gaussian blur is thus a low pass filter.
由于高斯分布的傅里叶变换仍然是高斯分布,使用高斯模糊就减少了图像的高频分量,因此高斯模糊是低通滤波器。

参数:
gray为灰度图;
(kernel_size,kernel_size):表示高斯矩阵的长与宽都是kernel_size,第三个参数0为高斯矩阵的标准差。

高斯模糊本质上是低通滤波器,输出图像的每个像素点是原图像上对应像素点与周围像素点的加权和,原理并不复杂,就是用高斯分布权值矩阵与原始图像矩阵做卷积运算而已。类似神经网络中卷积层的卷积。

这里(kernel_size,kernel_size)表示高斯矩阵的长与宽都是kernel_size,标准差取0时OpenCV会根据高斯矩阵的尺寸自己计算。概括地讲,高斯矩阵的尺寸越大标准差越大,处理过的图像模糊程度越大

2.Canny边缘检测算法

edges = cv2.Canny(blur_gray, low_threshold, high_threshold)

参数:
blur_gray为模糊后的灰度图;
low_threshold为阈值下界;
high_threshold阈值上界;两阈值用来判断梯度大小。

Canny算法的基本思想是找寻一幅图像中灰度强度变化最强的位置。所谓变化最强,即指梯度最大。平滑后的图像中每个像素点的梯度可以由Sobel算子(一种卷积运算)来获得(opencv中有封装好的函数,可以求图像中每个像素点的n阶导数)。

首先,利用如下的核来分别求得沿水平(x)和垂直(y)方向的梯度G_X和G_Y。

        K_{GX} = [-1 0 1; -2 0 2; -1 0 1],  K_{GY} = [-1 -2 -1; 0 0 0; 1 2 1] 

之后,便可利用公式来求得每一个像素点的梯度值,

G=Gx2+Gx2 G = G x 2 + G x 2

有时为了计算简便,也会使用G_X和G_Y的无穷大范数来代替二范数。把平滑后的图像中的每一个点用G代替后,便得到梯度图。
Canny算法中应用了一种叫双阈值的技术。即设定一个阈值上界和阈值下界(opencv中通常由人为指定的),图像中的像素点如果大于阈值上界 high_threshold则认为必然是边界(称为强边界,strong edge),小于阈值下界 low_threshold则认为必然不是边界,两者之间的则认为是候选项(称为弱边界,weak edge),需进行进一步处理。

3.霍夫变换

lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]),
                        min_line_length, max_line_gap)

参数:
edges: 必须是二值图像,推荐使用canny边缘检测的结果图像;
rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0;
theta: 线段以弧度为单位的角度精度,推荐用np.pi/180;
threshold: 累加平面的阈值参数,int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少;
np.array([]) 这个参数为占位符,对结果无影响;
min_line_length: 线段以像素为单位的最小长度,根据应用场景设置;
max_line_gap: 同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值