コンピュータビジョンでは、深度センサーやステレオカメラを使用せずに物体までの距離を測定する方法があります。この論文では、この方法を使用して、オーバーヘッドクレーントロリーの位置と速度を決定します。
カートにはエンコーダーが装備されているため、三角形の類似性に基づいて、この方法がどの程度正確に機能するかを示すことができます。この記事では、1台のカメラで距離を測定する方法と、実際のタスクでどのように使用できるかを示します。
このトピックは、2年前に書いた私のマスターの論文に捧げられています。
装置
この調査は、マグニトゴルスク市のOOO PO Privod-Avtomatikaの工業研究所で、実際のオーバーヘッドクレーンの操作をシミュレートするガーダークレーンを取り付けて実施されました。
実験中、クレーンの動きのビデオが、エンコーダーから読み取りを行うための同時手順とともに記録されました。速度グラフは、SchneiderElectricのSoMoveソフトウェアで取得されました。
ビデオは、1920x1080の解像度でCanon EOS1200Dカメラで記録されました。
カートを検出するために、長方形と円が描かれたグラフィックラベルが使用されます。解決策は完全には成功していません。実験の前に、ラベルをよりよく理解する必要がありました。しかし、輪郭分析(面積とアスペクト比の制限)の助けを借りて、私はまだ目的の長方形を検出することができました。また、対象物の検出が容易で、物理的なサイズを正確に測定できる場合は、グラフィックラベルは必要ありません。
作業アルゴリズム
距離の計算方法は、レンズの開口部に収束する三角形の類似性に基づいています。
ルーラーを使用して紙のマークの面積を測定し、opencvライブラリを使用してフレームのマークの面積を測定してみましょう。焦点の長さがわかれば、物体までの距離を計算できます。
実験
デジタルカメラは、オーバーヘッドクレーントロリーの反対側に設置されています。視角がクレーンの全領域をカバーするのに十分な距離で。
設置図。上からの眺め。
2つのテストビデオが記録されました。x軸に沿った動き(後方、カメラから離れ、y軸に沿った動き)が最初に左に、次に右に移動しました。位置と時間の値はnumpy配列に書き込まれ、
Matlabにエクスポートされ、そこで移動グラフS(t)がプロットされます。
データを微分すると、速度V(t)のグラフが得られます。
x_veloc = np.diff(x_position) / np.diff(time_mas)
モーショングラフには、不正確なエッジ検出と不均一な照明に関連する微妙なノイズがあるため、微分操作によってこのノイズが大幅に増加します。
Matlabの1次フィルターを使用してノイズを平滑化し、エンコーダーの読み取り値をデジタルカメラの読み取り値と比較してみましょう。
グラフは、1台のカメラで距離測定がどれだけ正確に得られるかを示しています。
ノイズレベルを低減し、より滑らかなグラフィックを取得するために、バイザーとローカル照明を備えたタグの2番目のバージョンが開発されました。
理論的には、これによりノイズを低減し、測定精度を向上させることができるはずです。残念ながら、新しいバージョンのタグはまだ試すことができません。
輪郭分析に基づくオブジェクト追跡について詳しく知りたい方のために、デジタル写真データから機械システムの2D座標と速度を決定するための追跡方法の精度を推定 する良い記事があります。
記事では、物体までの距離を測定する最も簡単な方法について説明し、どのような測定精度が得られるかを示しました。ご清聴ありがとうございました。