主要内容

车道检测在GPU上使用houghlines函数

这个例子展示了如何生成CUDA®墨西哥人的MATLAB®函数,可以检测并输出通路标志图像的边界。示例将RGB图像作为输入,并使用ordfilt2(图像处理工具箱),脚腕(图像处理工具箱),houghpeaks(图像处理工具箱),houghlines(图像处理工具箱)函数的图像处理工具箱™生产lane-detected输出图像。

第三方的先决条件

要求

这个示例中生成CUDA墨西哥人,有以下第三方的要求。

  • CUDA启用NVIDIA GPU®和兼容的驱动程序。

可选

等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。

验证GPU环境

验证所需的编译器和库运行这个示例设置正确,使用coder.checkGpuInstall函数。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。BasicCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

lane_detection_houghlines入口点函数

lane_detection_houghlines.m入口点函数接受一个强度图像作为输入,并返回lane-detected图像。

类型lane_detection_houghlines
函数(线)= lane_detection_houghlines (inputImage) % # codegen % 2019 - 2021版权MathWorks, inc . coder.gpu.kernelfun;%将RGB图像转换为灰度图像。grayImage = im2gray (inputImage);%使用ordfilt2边缘检测。输入= grayImage(240: 1:末端);dom = 1 (2);minOrder = 1;maxOrder = 4;padopt =“0”;MinImg = ordfilt2(输入、minOrder dom, padopt); MaxImg = ordfilt2(input,maxOrder,dom,padopt); % Edge detected output. outImage = MaxImg - MinImg; BW = imbinarize(outImage); [H,T,R] = hough(BW); P = houghpeaks(H,20,'threshold',1); lines = houghlines(BW,T,R,P,'FillGap',200,'MinLength',150);

生成CUDA的墨西哥人lane_detection_houghlines函数

创建一个GPU配置对象并运行代码codegen函数。

inputImage = imread (“highway.png”);inputResizedImage = imresize (inputImage (480 640));cfg = coder.gpuConfig (墨西哥人的);codegenarg游戏{inputResizedImage}配置cfglane_detection_houghlines
代码生成成功。

运行生成的CUDA墨西哥人

运行生成的lane_detection_houghlines_mex输入图像和情节的输入和lane-detected图像。

(行)= lane_detection_houghlines_mex (inputResizedImage);%画图片。inputImageVGAsize = imresize (inputImage (480 640));outputImage = imresize (inputImage (480 640));p1 =情节(1、2、1);p2 =情节(1、2、2);imshow (inputImageVGAsize“父”,p1);imshow (outputImage“父”,p2);max_len = 0;k = 1:长度(线)如果(((k)行。θ< = 60 & & (k)。θ> 10)| |((k行)。θ< = -10 & & (k)。θ> -50)xy =[行(k) .point1;((k) .point2行)];情节(xy (: 1), xy (:, 2) + 240,“线宽”2,“颜色”,“绿色”);%的阴谋的开始和结束行。情节(xy (1, 1), xy (1、2) + 240,“x”,“线宽”2,“颜色”,“黄色”);情节(xy (2, 1), xy (2, 2) + 240,“x”,“线宽”2,“颜色”,“红色”);%确定最长的线段的端点。len =规范(线(k)。point1 - (k) .point2行);如果(len > max_len) max_len =兰;xy_long = xy;结束结束结束标题(p1,输入图像的);标题(p2,车道检测到输出图像的);

另请参阅

功能

对象

相关的话题