检测车道线——2.选择兴趣区域 Region Masking

  通过简单的颜色选择,我们设法消除了图像中除了车道线以外的几乎所有内容。但是,在这一点上,自动提取确切的线条仍然非常棘手,因为我们仍然在周边检测到了一些不是线条线的其他物体。

  在这种情况下,我将假定拍摄图像的前置摄像头安装在汽车的固定位置,这样车道线总是会出现在图像的同一区域。 所以在提取行车线的时候,只关注这个梯形区域内的图像,可以避免其他区域的信息造成干扰。这个梯形区域如果选取地太大,则会引入更多无关信息(比如护栏,树木等),如果梯形区域选取太小,则可能看不见行车线,所以这里需要权衡。接下来,我将通过添加一个标准来考虑这一点,仅在我们期望找到车道线的区域考虑用于颜色选择的像素。

  看看下面的代码。 变量left_bottom,right_bottom和apex代表了我想保留用于颜色选择的三角形区域的顶点,同时掩盖了其他所有内容。 在这里,我使用三角形面具来说明最简单的情况,但稍后您将使用四边形,原则上可以使用任何多边形。numpy.polyfit(x,y,n)是用于多项式求过已知点的表达式,其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。

 1 import matplotlib.pyplot as plt
 2 import matplotlib.image as mpimg
 3 import numpy as np
 4
 5 # Read in the image and print some stats
 6 image = mpimg.imread(‘E:/spyder/a/a/test.jpg‘)
 7 print(‘This image is: ‘, type(image),
 8          ‘with dimensions:‘, image.shape)
 9
10 # Pull out the x and y sizes and make a copy of the image
11 ysize = image.shape[0]
12 xsize = image.shape[1]
13 region_select = np.copy(image)
14
15 # Define a triangle region of interest
16 # Keep in mind the origin (x=0, y=0) is in the upper left in image processing
17 # Note: if you run this code, you‘ll find these are not sensible values!!
18 # But you‘ll get a chance to play with them soon in a quiz
19 left_bottom = [0, 539]
20 right_bottom = [900, 300]
21 apex = [400, 0]
22
23 # Fit lines (y=Ax+B) to identify the  3 sided region of interest
24 # np.polyfit() returns the coefficients [A, B] of the fit
25 fit_left = np.polyfit((left_bottom[0], apex[0]), (left_bottom[1], apex[1]), 1)
26 fit_right = np.polyfit((right_bottom[0], apex[0]), (right_bottom[1], apex[1]), 1)
27 fit_bottom = np.polyfit((left_bottom[0], right_bottom[0]), (left_bottom[1], right_bottom[1]), 1)
28
29 # Find the region inside the lines
30 XX, YY = np.meshgrid(np.arange(0, xsize), np.arange(0, ysize))
31 region_thresholds = (YY > (XX*fit_left[0] + fit_left[1])) & 32                     (YY > (XX*fit_right[0] + fit_right[1])) & 33                     (YY < (XX*fit_bottom[0] + fit_bottom[1]))
34
35 # Color pixels red which are inside the region of interest
36 region_select[region_thresholds] = [255, 0, 0]
37
38 # Display the image
39 plt.imshow(region_select)

若19~21的代码改为如下:19 left_bottom = [0, 540]
20 right_bottom = [900, 540]
21 apex = [400, 300]则为:

原文地址:https://www.cnblogs.com/minyshi/p/8573482.html

时间: 2024-11-06 03:29:16

检测车道线——2.选择兴趣区域 Region Masking的相关文章

OpenCV中感兴趣区域的选取与检测(一)

1.感兴趣区域的选取 感兴趣区域(Region of Interest, ROI)的选取,一般有两种情形:1)已知ROI在图像中的位置:2)ROI在图像中的位置未知. 1)第一种情形 很简单,根据ROI的坐标直接从原图抠出,不过前提是要知道其坐标,直接上例子吧. int getROI(Mat image, Rect rect) { Mat img=image.clone(); Mat roi; int cols=img.cols, rows=img.rows; //ROI越界,返回 if(col

OpenCV Cut Image via ROI 根据兴趣区域剪裁图片

我们在使用OpenCV时,有时候需要对现有图片剪裁,比如只需要一个小窗口中的内容,那么我们可以通过OpenCV的兴趣区域 Region of Interest (ROI) 来很轻易的实现,操作也很简单,首先建立一个新的IplImage图片,大小为你需要剪裁出来的大小,然后建立一个该大小的CvRect变量,用来设定原图片的ROI的范围,然后此时拷贝原图片到新图片,就得到我们需要的内容了,最后别忘了把原图片的ROI还原,参见代码如下: IplImage *img = cvLoadImage("ima

数字图像处理:基于霍夫变换的车道线检测

1 数字图像处理:基于霍夫变换的车道线检测 https://zhuanlan.zhihu.com/p/60190848 2 环境 2-1  安装  Anaconda3 环境 2-2  在Anaconda3 环境种安装开发IDE  spyder 刚开始找不到spyder,但是我安装完vs code之后就出现了选择安装spyder的图标 2-3 安装opencv和contrib扩展库 2-4安装matplotlib库 https://blog.csdn.net/weixin_42116878/art

Udacity无人驾驶工程师试看课——车道线检测观后感

第一周的内容就是完成一个项目 Finding Lane Line,是免费试看的,网页版的,最多三四个小时就能看完. 讲的就是整个pipeline,一分钟视频版可以在这里看完:https://www.youtube.com/watch?v=xknesDIgOcA 或者看这个博客https://medium.com/udacity/udacity-self-driving-car-nanodegree-project-1-finding-lane-lines-719ac1adbed9 我也简单描述一

语义分割之车道线检测(tensorflow版)

      由于项目需要,参考了多篇相关车道线检测论文与源码,设计了一套Tensorflow版车道线检测功能. 二.基本结构:       该模型主要由以下部分组成: 1.数据源:包括所有原始数据,分组后的数据: 2.数据预处理:包括数据的准备,数据的导入,数据的提取,数据的分组(训练与测试): 3.配置文件:包括各种参数与超参数,如:训练周期,训练步长,批量数据,学习率,卷积核大小,全连接大小,训练模型存放路径(checkpoint),摘要存放路径(summary)等: 4.基础网络:包括基本

车道线检测资源

数据集 CULane Dataset https://xingangpan.github.io/projects/CULane.html BDD100K https://bdd-data.berkeley.edu/ 代码 Spatial CNN for Traffic Lane Detection https://github.com/XingangPan/SCNN 汇总 GitHub:车道线检测最全资料集锦 http://bbs.cvmart.net/articles/158/github-c

语义分割之车道线检测Lanenet(tensorflow版)

Lanenet 一个端到端的网络,包含Lanenet+HNet两个网络模型,其中,Lanenet完成对车道线的实例分割,HNet是一个小网络结构,负责预测变换矩阵H,使用转换矩阵H对同属一条车道线的所有像素点进行重新建模 将语义分割和对像素进行向量表示结合起来的多任务模型,最近利用聚类完成对车道线的实例分割. 将实例分割任务拆解成语义分割和聚类,分割分支负责对输入图像进行语义分割(对像素进行二分类,判断像素属于车道线还是背景),嵌入分支对像素进行嵌入式表示,可将分割后得的车道线分离成不同的车道实

图像分割 - LaneNet + H-Net 车道线检测

本文是对论文的解读与思考 论文:  Towards End-to-End Lane Detection: an Instance Segmentation Approach introduction 该论文提出了一种 端到端 的 实例分割方法,用于车道线检测: 论文包含 LaneNet + H-Net 两个模型网络,其中 LaneNet 是一种将 语义分割 和 像素矢量化 结合起来的多任务模型,语义分割用来分割车道线与背景,像素矢量化 用于把属于同一条车道线的像素 聚类 在一起, H-Net 是

车道线识别之 tusimple 数据集介绍

Tusimple 是一家做自动驾驶的公司,他也公布了一些其在自动驾驶领域积累的数据,其中有一些是和车道线检测相关的.2018年6 月份,其举办了一次以摄像头图像数据做车道检测的比赛,公开了一部分数据及其标注.数据下载数据是:https://github.com/TuSimple/tusimple-benchmark/issues/3 在其doc中可以发现数据个数的一些说明 标注json 文件中每一行包括三个字段 raw_file : 每一个数据段的第20帧图像的的 path 路径 lanes 和