关数Houghlines
を使用したたでで车线検出検出
こので,イメージ车线マーカーマーカー境界をしててする出力出力出力出力出力关数关数关数关数关数关数关数关数のcuda®Mex®ををををを生成するする方法方法をををを说明说明说明说明しししますますます。。。。このこのこのこの,,,,,,,,,,,,,,,,いる关数ORDFILT2
(图像处理工具箱),伙计
(图像处理工具箱),Houghpeaks
(图像处理工具箱),およびHoughlines
(图像处理工具箱)を使用て検出后の出力を生成します。
サードパーティの条件
必须
Cuda Mexをををします。のサードパーティ要件が适用され。。。
cuda対応nvidia®GPUおよび互换の。。。
オプション
スタティックライブラリライブラリまたはまたは可能ファイルファイルファイル以外以外以外について,,この例では以下以下ののももも适用适用
nvidiaツール。
コンパイラおよびの环境。详细は,サードパーティハードウェアと前提条件なる制品の设定を参照しください。
GPU 環境の検証
この例するに必要なおよびが正しく设定れれていることをを検证検证,,,coder.checkGpuInstall
を使用し。
envcfg = coder.gpuenvconfig('主持人');envcfg.basiccodegen = 1;envcfg.quiet = 1;coder.checkgpuinstall(envcfg);
エントリポイント关数Lane_detection_houghlines
エントリポイント关数Lane_detection_houghlines。m
は,をとして受け取り,车线のイメージを返し。。
类型Lane_detection_houghlines
函数[线] = LANE_DETECTION_HOUGHLINES(INPUTIMAGE)%#codegen%版权2019-2021 The MathWorks,Inc。Coder.gpu.kernelfun;%将RGB图像转换为灰度图像。grayimage = im2gray(inputImage);使用ordfilt2的边缘检测%。输入=灰色图像(240:end,1:end);dom =一个(2);minorder = 1;maxOrder = 4;padopt ='zeros';minimg = ordfilt2(输入,微型订单,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);
关数Lane_detection_houghlines
のcuda mexのの生成
gpuコード构成を作成,关数关数代码根
を実行し。
inputImage = imread('Highway.png');InputresizedImage = Imresize(InputImage,[480 640]);cfg = coder.gpuconfig('Mex');代码根-args{inputresizedImage}-configCFGLane_detection_houghlines
代码生成成功。
Cuda Mexのののののの実行
生成されたlane_detection_houghlines_mex
をイメージ指定て実行,入力と车线后のイメージをプロットプロット。。。
[线] = 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(输出图,“父母”,p2);保持在max_len = 0;为了k = 1:长度(线)如果((lines(k).theta <= 60 && lines(k).theta> 10)||...(lines(k).theta <= -10 && lines(k).theta> -50))xy = [lines(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 = norm(线(k).point1-线(k).point2);如果(len> max_len)max_len = len;xy_long = xy;结尾结尾结尾标题(p1,'Input Image');标题(P2,车道检测到输出图像的);
参考
关数
代码根
|coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixmatrixkernel
|coder.gpu.constantmemory
|gpucoder.stencilkernel
|coder.checkGpuInstall