自動化システムでは、ディープラーニングとコンピュータービジョンが広く普及し、あらゆる場所で利用されています。コンピュータービジョンの分野、特に障害物検出の分野は、過去 10 年間で急速に発展しました。 YOLO や RetinaNet などの障害物検出アルゴリズムは、画像内の障害物の位置を示す 2D 注釈ボックスを提供します。 各障害物までの距離を測定するために、エンジニアはカメラと、レーザーを使用して深度情報を返すLIDAR(光検出および測距)センサーを融合しました。センサー融合技術は、コンピューター ビジョンと LiDAR の出力を融合するために使用されます。 LiDAR を使用する際の問題は、高価であることです。エンジニアが使用する便利なトリックは、2 台のカメラを一直線に並べ、幾何学の原理を使用して各障害物までの距離を計算することです。私たちはこの新しいセットアップを疑似ライダーと呼んでいます。
疑似 LiDAR は幾何学的原理を使用して深度マップを作成し、それを物体検出と組み合わせて 3 次元距離を取得します。 ステレオビジョンを使用して距離を推定するにはどうすればよいですか? 距離を取得するには、次の 5 ステップの疑似コードを使用します。
次に、深度マップを障害物検出アルゴリズムと組み合わせて、境界ボックスのピクセルの深度を推定します。詳細はこの記事の最後をご覧ください。 さあ始めましょう! 1. 内部および外部校正すべてのカメラは調整する必要があります。キャリブレーションとは、[X、Y、Z] 座標を持つ 3D ポイント (ワールド内) を [X、Y] 座標を持つ 2D ピクセルに変換することを意味します。 カメラモデル 今日のカメラはピンホールカメラモデルを採用しています。 ピンホールを使用して少量の光をカメラに通し、鮮明な画像を生成するという考え方です。 画像の中央に障害物がなければ、すべての光線が通過し、画像はぼやけてしまいます。また、ズームと鮮明度を向上させるために焦点距離 f を決定することもできます。 カメラをキャリブレーションするには、カメラ座標を介してワールド座標をピクセル座標に変換する必要があります。
ワールド座標からカメラ座標への変換は、外部キャリブレーションと呼ばれます。外部パラメータは、R (回転行列) と T (変換行列) と呼ばれます。 カメラ座標からピクセル座標への変換は、固有キャリブレーションと呼ばれます。焦点距離、光学中心などのカメラの固有値が必要です。 固有パラメータは K と呼ばれる行列です。 較正K マトリックスはカメラのキャリブレーションを通じて見つけることができます。 通常、チェッカーボードと自動アルゴリズムを使用して実行します。 これを行うと、チェス盤上の点 (例: 0,0,0) が画像内のピクセル (例: 545, 343) に対応することをアルゴリズムに伝えます。
これを行うには、カメラでチェッカーボードの画像を撮影し、いくつかの画像といくつかのポイントを取得した後、キャリブレーション アルゴリズムが最小二乗損失を最小限に抑えてカメラのキャリブレーション マトリックスを決定します。 通常、画像の歪みを除去するにはキャリブレーションが必要です。 ピンホールカメラモデルには歪み、「GoPro 効果」が含まれます。 補正された画像を得るためには、キャリブレーションを実行する必要があります。 変形は放射状または接線方向に行うことができます。 キャリブレーションは画像の歪みを補正するのに役立ちます。
カメラのキャリブレーションによって返される行列は次のとおりです。 f は焦点距離、(u₀、v₀) は光学中心です。これらは固有のパラメータです。 すべてのコンピューター ビジョン エンジニアは、カメラのキャリブレーションを理解し、習得する必要があります。これは最も基本的かつ重要な要件です。私たちはオンラインで画像を処理することに慣れており、ハードウェアに触れることはありませんが、これは間違いです。 - カメラのキャリブレーションのために OpenCV を実行してみてください。 同じタイプの座標 カメラのキャリブレーション中に、ワールド内のポイント O をピクセル空間に変換する 2 つの式があります。 世界をカメラに変える
カメラから画像への変換
計算すると、次の式が得られます。 ワールドから画像への変換 マトリックスの次元を見ると、不一致があります。 したがって、O_worldを[XYZ]から[XYZ 1]に変更する必要があります。 この「1」を同次座標と呼びます。 2. エピポーラ幾何学 - 立体視立体視は、2 つの画像間の奥行きを見つけることに基づいています。 私たちの目は2台のカメラのようなものです。同じ画像を異なる角度から見るため、2 つのビューの違いを比較し、距離の推定値を計算できます。 以下はステレオカメラのセットアップの例です。ほとんどの自動運転車に同様の機能が搭載されています。 ステレオカメラが奥行きを推定する方法左側に 1 台、右側に 1 台の計 2 台のカメラがあるとします。 2 台のカメラは同じ Y 軸と Z 軸上に配置されています。基本的に、唯一の違いは X 値です。 それでは、以下の説明をご覧ください。
私たちの目標は、点 O (画像内の任意のピクセルを表す) の Z 値、つまり深度距離を推定することです。
2 つの青い平面は、2 台のカメラからの画像に対応します。 さて、これを鳥瞰的に考えてみましょう。 ステレオカメラ鳥瞰図の説明:
タレスの定理を適用すると、2つの方程式が得られることがわかる。 左カメラの場合:
? Z = X*f / xL となります。
右カメラ方程式:
これをまとめると、正しい視差 d = xL -- xR とターゲットの正しい XYZ 座標を見つけることができます。 3. 視差と深度マップ視差とは何ですか? 視差とは、2 つの異なるカメラ角度からの画像内の 3D ポイントの位置の差です。
? 立体視により、あらゆる物体の奥行きを推定できます。マトリックスキャリブレーションを正しく行ったと仮定します。深度マップや視差マップを計算することもできます。
なぜ「ベースラインジオメトリ」なのか? 視差を計算するには、左側の画像のすべてのピクセルを見つけて、右側の画像のすべてのピクセルと一致させる必要があります。 これをステレオ対応問題と呼びます。 この問題を解決するには――
これは、両方のカメラが同じ軸に沿って配置されているためです。 ベースライン検索の仕組みは次のとおりです。 応用: 疑似ライダーの構築さて、これを実際のシナリオに適用し、ステレオビジョンを使用して物体の奥行きをどのように推定できるかを見てみましょう。 2つの画像を見てみましょう。
各画像には外部パラメータ R と t があり、これらはキャリブレーション (ステップ 1) によって事前に決定されます。 視差各画像について、他の画像に対する視差マップを計算できます。私たちは次のことを行います:
左画像と右画像の視差マップを取得します。 違いの意味をよりよく理解できるように、Stack Overflow で素晴らしい説明を見つけました。 視差マップとは、一対のステレオ画像間の見かけのピクセル差または動きを指します。 これを体験するには、片方の目を閉じて、もう片方の目を開けながら素早く閉じてみてください。非常に近くにある物体は遠くまでジャンプするように見えますが、遠くにある物体はほとんど動きません。この動きが視差です。ステレオカメラからの一対の画像では、各ポイントでの各ピクセルの見かけの動きを測定し、測定値から強度画像を作成できます。
2 つの視差マップがあり、基本的には 2 つの画像間のピクセルの変位がわかります。 各カメラには、投影行列 P_left と P_right があります。深さを推定するには、K、R、t を推定する必要があります。
OpenCV 関数 cv2.decomposeProjectionMatrix() はこれを実行し、P から K、R、t を取得します。次に、各カメラに対して深度マップを生成します。深度マップは、他の画像と視差マップを使用して、画像内の各ピクセルがどれだけ離れているかを示します。 プロセスは次のとおりです。
この計算をピクセルごとに実行します。 障害物の深さの推定各カメラには深度マップがあります。ここで、これを YOLO などの障害物検出アルゴリズムと組み合わせるとします。 アルゴリズムは、障害物ごとに 4 つの数値 [x1; y1; x2; y2] を持つ境界ボックスを返します。 これらの数字は、ボックスの左上隅と右下隅の座標を表します。 たとえば、このアルゴリズムを左側の画像で実行し、左側の深度マップを使用できます。 これで、この境界ボックス内で最も近い点を取得できます。画像内の各点の距離がわかっているので、それがわかります。境界ボックスの最初のポイントは障害物までの距離です。 すごいですね!疑似LIDARを構築したばかりです! 立体視により、画像内にどのような障害物があるのかだけでなく、それらが自分からどのくらい離れているかも分かります。この障害物は 28.927 メートル離れています。 ステレオビジョンは、単純なジオメトリと追加のカメラを使用して、2D 障害物検出を 3D 障害物検出に変換する技術です。現在、新しい OpenCV AI キットや Raspberry および Nvidia Jetson カードへの統合など、新興のエッジ プラットフォームのほとんどはステレオ ビジョンを考慮しています。 コスト面では、LiDAR を使用する場合に比べて比較的安価でありながら、優れたパフォーマンスを提供します。ライダーの機能を代替できるため、疑似ライダーと呼びます。障害物を検出し、分類し、3D で位置を特定します。 この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。 |
<<: インテリジェントな人間と機械のインタラクションがデジタルサービスを新たなレベルに引き上げます
>>: 機械学習の新たな嵐: ML モデルを使用して住宅価格を予測する方法とは?
人工知能(AI)は、知識の学習、知識の保存、思考、計画という人間の脳の思考プロセスをシミュレートする...
Python は機械学習にとって最も鋭い武器であると言えます。また、機械学習は Python の影...
[[357616]] International Journal of Engineering an...
[51CTO.com からのオリジナル記事]現在、ますます多くの企業が機械学習や人工知能に多額の資金...
開発者、ライター、または AI 愛好家であれば、ChatGPT の開発元である OpenAI の最新...
ビッグデータの出現、クラウド コンピューティング テクノロジーの成熟度の向上、ディープラーニング ア...
最近、シビチェンがチップスを製造しているというニュースが大きな騒ぎを引き起こしました。 [[2547...
汎用人工知能(AGI)は実際に実現されているのでしょうか?最近、Google Research と ...
海外メディアの報道によると、イタリアの研究者らは最近、量子コンピュータ上で特殊なアルゴリズムを実行す...
[[407036]] [51CTO.com からのオリジナル記事]アルゴリズムの公平性は、近年、推奨...
[[403666]]ストラトキャスターとテレキャスターのギターを製造するカリフォルニア州コロナに本社...
[[436989]]コンピュータービジョン界は最近非常に活発です。まず、He Kaiming 氏らは...
人工知能は進化における最も古い謎の 1 つを解くのに役立っていますが、新たな謎ももたらしています。 ...