白線検出

センサ

はじめに

2026.08.09「微小色検出」, 2026.08.25「「微小移動の検出」及び「微小色検出」の補足」」で色検出について扱いました。私にとって色検出はほとんで行ってこなかった分野です。遅まきながらなるほどと思った次第です。一方、pbr MATを使って見かけ上立体化する方法は何度も扱ってきました。例えば2026.03.27のblog「凸凹を作る技術(pbr MAT)の補足」で、クルマの走行映像にpbr MATを使い白線を強調した映像を作っています。今回この映像に色検出を使って白線を検出してみます。実際のクルマの車線検出はここで紹介する方法ではありません。画像処理だけでなく、推定技術とAIを合わせた高度な技術が使われています。

白線検出

「凸凹を作る技術(pbr MAT)の補足」で紹介したクルマの映像を再録します。

pbr MATの処理によって白色の部分が強調されていることが分かります。pbr MATも結局は白色を高く、黒色を低く抑えるので、直観的には白線検出に向いているように思います。この時のプログラムは次でした。再録します。

今回はこのプログラムのrender TOPの後ろに色検出処理を行いました。まず映像を見ていただきましょう。

上が白線検出した映像、下がカメラ映像です。このように白線検出がある程度できます。色の違いで分離するため車線だけを検出することはできていません。しかしかなり他の色を除くことができています。
render TOPの後ろの色検出の処理プログラムは次です。

render TOP後の最初のcomposite TOPは空の部分を除くためにあります。constant TOP -> transfrom TOPで空を除いた部分を白でマスクし、render TOPとMultiplyしています。その次のhsv adjust TOP -> luma leve TOPが今回の重要な組み合わせです。hsv adjust は Hue(色相),Saturation(彩度),Value(明度)を直接操作する TOP です。元のRGBは「光の混合」なので、白線のような“明度の特徴”を抽出するには向いていません。白線は一般に、彩度が低く(S が小さい)、明度が高く(V が大きい)、色相はほぼ意味を持ちません(H はどうでもいい)。ですので彩度と明度をコントロールするhsv adjustで調整します。具体的にはHue Offset, Saturation Multiplier, Valure Multiplierを調整しました。次のluma level TOP は 輝度(Luma)を再マッピングする TOP です。簡単に言うと、黒をもっと黒く、白をもっと白く、中間を押しつぶす/持ち上げる、ことでコントラストの再設計 を行います。白と黒とをはっきりさせる、ということです。映像を白黒に分離するのに、hsv adjust TOP -> lume level TOPの組み合わせは適しています。この組み合わせはカメラで撮影した元映像も白黒に分離できますが、pbr MATで、白を持ち上げ、黒を抑圧する処理した後の映像を使うほうが、クルマと車線意外の周囲の画像を除くことができます。つまりpbr MATは白線検出の前処理の働きをしています。この後のchroma key TOPは画像の背景(黒色)を抜くためのTOPです。そしてchroma TOPとblur TOP -> level TOPとをcompsite TOPでMultiplyする構成は密度の低い場所を除くテクニックです。周囲からたまに現れる白色を除きます。先回の「「微小移動検出」及び「微小色検出」の補足」で使った構成です。今回の構成をまとめると次のようになります。

この方法である程度の白線検出ができました。更に推定技術やAIと組み合わせることは興味深いことです。

まとめ

色検出の例として、「凸凹を作る技術(pbr MAT)の補足」で作製したpbr MATを使って白線を強調した走行映像に、明度を高くしてコントラストを強くする機能と、密度の低い部分を除く機能とを組み合わせて、白線検出を行いました。白線だけが取れるようになったわけではありませんが、様々な色が入っている走行映像から、白線を含む限定した映像部分を検出することができました。個人的には”わりと分離できるものだな”、と思いました。

コメント