车道检测在GPU上使用houghlines
函数
这个例子展示了如何生成CUDA®墨西哥人的MATLAB®函数,可以检测并输出通路标志图像的边界。示例将RGB图像作为输入,并使用ordfilt2
(图像处理工具箱),脚腕
(图像处理工具箱),houghpeaks
(图像处理工具箱),houghlines
(图像处理工具箱)函数的图像处理工具箱™生产lane-detected输出图像。
第三方的先决条件
要求
这个示例中生成CUDA墨西哥人,有以下第三方的要求。
CUDA启用NVIDIA GPU®和兼容的驱动程序。
可选
等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。
英伟达工具包。
环境变量的编译器和库。有关更多信息,请参见第三方硬件和设置必备产品下载188bet金宝搏。
验证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,车道检测到输出图像的);
另请参阅
功能
codegen
|coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixMatrixKernel
|coder.gpu.constantMemory
|gpucoder.stencilKernel
|coder.checkGpuInstall