Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

insertLaneBoundary

車線境界線をイメージに挿入

説明

rgb = insertLaneBoundary(I,boundaries,sensor,xVehicle) は、車線境界区分線をトゥルーカラー イメージに挿入します。車線は、入力道路イメージ I に重ねて表示されます。このイメージは、sensor オブジェクトで指定されるセンサーから取得されます。xVehicle は、車線区分線を描画する位置の x 座標を指定します。y 座標は、boundaries の境界線モデルのパラメーターに基づいて計算されます。

rgb = insertLaneBoundary(___,Name,Value) は、前述の入力引数を使用して、1 つ以上の Name,Value 引数のペアによって指定された追加オプションで車線境界区分線を挿入します。

すべて折りたたむ

放物線状車線境界線モデルを使用して、イメージ内で車線を見つけます。識別された車線を、元のイメージと、そのイメージを鳥瞰ビューに変換したものに重ね合わせます。

車線を含む道路のイメージを読み込みます。このイメージは、車両の前方に取り付けられたカメラ センサーから取得されたものです。

I = imread('road.png');

事前に構成されたセンサー オブジェクトを使用して、イメージを鳥瞰ビュー イメージに変換します。このオブジェクトは、元のイメージを取得したセンサーをモデル化します。

bevSensor = load('birdsEyeConfig');
birdsEyeImage = transformImage(bevSensor.birdsEyeConfig,I);
imshow(birdsEyeImage)

Figure contains an axes object. The axes object contains an object of type image.

車線区分線のおおよその幅をワールド単位 (メートル) で設定します。

approxBoundaryWidth = 0.25;

車線の特徴を検出し、白黒のイメージで表示します。

birdsEyeBW = segmentLaneMarkerRidge(im2gray(birdsEyeImage), ...
    bevSensor.birdsEyeConfig,approxBoundaryWidth);
imshow(birdsEyeBW)

Figure contains an axes object. The axes object contains an object of type image.

車線の候補位置に対応するイメージ座標を取得します。関数 find は、車線の候補位置に対応するピクセル インデックスを返します。慣例により、イメージ座標の順序は、常にピクセル インデックスと逆になります。イメージ座標の詳細については、座標系を参照してください。

関数 imageToVehicle を使用して、対応する車線境界線の点を車両座標で取得します。

[imageY,imageX] = find(birdsEyeBW);
xyBoundaryPoints = imageToVehicle(bevSensor.birdsEyeConfig,[imageX,imageY]);

関数 findParabolicLaneBoundaries を使用して、イメージ内で車線境界線を見つけます。既定では、この関数は最大で 2 つの車線境界線を返します。境界線は parabolicLaneBoundary オブジェクトの配列に保存されます。

boundaries = findParabolicLaneBoundaries(xyBoundaryPoints,approxBoundaryWidth);

insertLaneBoundary を使用して、車線を元のイメージに重ね合わせます。XPoints ベクトルは、自車のセンサーの範囲内にある車線の点をメートル単位で表します。車線を別の色で指定します。既定では、車線は黄色です。

XPoints = 3:30;

figure
sensor = bevSensor.birdsEyeConfig.Sensor;
lanesI = insertLaneBoundary(I,boundaries(1),sensor,XPoints);
lanesI = insertLaneBoundary(lanesI,boundaries(2),sensor,XPoints,'Color','green');
imshow(lanesI)

Figure contains an axes object. The axes object contains an object of type image.

車線を鳥瞰ビュー イメージで表示します。

figure
BEconfig = bevSensor.birdsEyeConfig;
lanesBEI = insertLaneBoundary(birdsEyeImage,boundaries(1),BEconfig,XPoints);
lanesBEI = insertLaneBoundary(lanesBEI,boundaries(2),BEconfig,XPoints,'Color','green');
imshow(lanesBEI)

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

入力道路イメージ。トゥルーカラーまたはグレースケール イメージとして指定します。

データ型: single | double | int8 | int16 | uint8 | uint16

車線境界線モデル。parabolicLaneBoundary オブジェクトまたは cubicLaneBoundary オブジェクトの配列として指定します。車線境界線モデルには次のプロパティが含まれています。

  • Parameters — 境界線モデルの係数に対応するベクトル。ベクトルのサイズは、モデルの多項式の次数によって異なります。

    車線境界線オブジェクトパラメーター
    parabolicLaneBoundary

    [A B C]。y = Ax2 + Bx + C の形式の 2 次多項方程式の係数に対応

    cubicLaneBoundary[A B C D]。y = Ax3 + Bx2 + Cx + D の形式の 3 次多項方程式の係数に対応
  • BoundaryType — サポートされている車線境界線の列挙 LaneBoundaryType

    • Unmarked

    • Solid

    • Dashed

    • BottsDots

    • DoubleSolid

    車線境界線のタイプを LaneBoundaryType.BoundaryType として指定します。次に例を示します。

    LaneBoundaryType.BottsDots
    
  • Strength — 境界線上にある一意な x 軸の位置の数と、XExtent プロパティに基づく線上の点の合計数との比率。

  • XExtent – 境界線の点の最小および最大の x 軸の位置を表す 2 要素ベクトル。

イメージを収集するセンサー。birdsEyeView オブジェクトまたは monoCamera オブジェクトとして指定します。

車両境界線を表示する x 軸の位置。実数値ベクトルとして、車両座標で指定します。点の間隔は、該当する境界線タイプの破線や点の間隔を制御します。破線の境界線を明確に表示するには、xVehicle で少なくとも 4 個の点を指定します。4 個未満の点を指定した場合、関数は実線の境界線を描画します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name引用符で囲みます。

例: 'Color',[0 1 0]

車線境界線の色。文字ベクトル、string スカラー、または RGB 値の [R,G,B] ベクトルとして指定します。boundaries で、文字ベクトルの cell 配列、string 配列、または RGB 値の m 行 3 列の行列を使用して、各境界線に特定の色を指定できます。色は車線境界線の順序に対応します。

RGB 値はイメージ データ型の範囲内でなければなりません。

サポートされている色の値は、'blue''green''red''cyan''magenta''yellow''black'、および 'white' です。

例: 'red'

例: [1,0,0]

車線境界線の幅。正の整数 (ピクセル単位) として指定します。

出力引数

すべて折りたたむ

車線境界線が重ねられているイメージ。RGB トゥルーカラー イメージとして返されます。出力イメージ クラスは入力イメージ I と一致します。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2017a で導入