ステレオカメラについての記載を増やしてきたから、ステレオカメラの使い方で、重箱の隅をつつくような話をしようと思う。
うまくいくはずとうまくいくの間
- 従来の代表的なアルゴリズムでは
- 欠損点を生じる。
- 輝度の変化が少ない領域の視差が十分に出ない。
- つながっている物体が視差画像で見たときにちぎれることがある。
ステレオ計算を破綻させやすいハードウェア要因
・動きのある対象をローリングシャッターのカメラで撮影する。
・左右のカメラのゲイン設定が共通していない。
オートゲインが左右のカメラで別々に動いていると、左右のカメラでゲイン設定が違ってしまうことが起こりうる。
そうすると、輝度ベースでパターンマッチングをして視差を出しているアルゴリズムでは、視差に大きな誤差をもたらすことがある。
・偽色を発生させるRGBカメラ。
Bayer配列のカラーフィルターを用いてRGBを撮影しているカメラでは、デモザイク処理で、各画素に対してRGB画像を作っている。
そのため、輝度値や色が急激に変化している箇所で、偽色を生じる。
偽色を生じたRGB画像をグレースケール化しても、もともとグレースケールで撮影したものに及ばない。
ステレオ計測ではサブピクセルの単位で、ステレオ平行化のためのパラメータを決定したり、ステレオ計測時に視差の算出も行う。
だから、ステレオ計測を主目的にする場合には、グレースケール用のイメージセンサを使うことだ。
・広角のカメラほど、ステレオキャリブレーションが難しくなる。
・温度要因や力学的な理由で、ステレオカメラの配置が変わってしまう。
ステレオ計測を失敗させやすい被写体要因
これは、ランダムパターンを照明を投射してステレオ計測する機種での説明です。そうでない機種では、計測が困難な状況が拡大します。
以下の特徴を持つワークは、計測が困難な場合があります。
・ 透明物体
・ 鏡面物体
・ 高光沢物体
・ 黒色物体
・ 濃色物体
・ 表面形状が複雑な物体
・ 高速な移動物体
・ 1cm 以下の小型物体
・ 柵などの同じ模様が連続している被写体
ランダムパターンを照射しない状況で、計測困難になりやすい状況
・テクスチャのない平坦な部分
Q: テーブルに置かれたワイングラスを、3次元計測する必要はあるだろうか?
白ワインの入った透明なワイングラスを手に取る。それは、ヒトの視覚にとって簡単だ。
しかし、ステレオ計測するにも、tof(time of flight)で計測するにも、困難な状況だ。(注3)
撮影環境を制御できるとき
- 照明のあて方を工夫して、輝点となる反射を生じないようにする。
- 国際画像機器展などの展示会の出展業者の中には、マシンビジョンの撮影条件のノウハウを持っている業者もある。
算出可能な最小のdepthは何10 cmですか。(注1)
- ステレオカメラでも、算出可能な最小のdepthという制限がある。
- 近距離ほど視差(disparity)が大きくなる。
- ステレオマッチングの際に左画像と右画像の位置ずれ(=視差)の最大値を想定して、マッチングの位置を算出します。
- そのため、計算時の想定の範囲を超えてまで、視差を算出できなくなります。
- それに対応して、深度(depth)が算出できなくなります。
- ステレオ計算の時間を現実的な範囲に収めるため、大きすぎる視差(近距離すぎる対象物)の距離を算出できないというのは、視差計算に基づく制約です。
反射の影響は、偏光板によって低減できる。(注2)
- 通常光は、s偏光とp偏光とが混じっている。
- 透明物体との界面での光の反射率は、s偏光とp偏光で違っている。s偏光の方が反射率が大きい。
- そのため反射光の中にはs偏光の比率が高い。
- s偏光を吸収する向きに偏光板をおくと、反射光の中のs偏光成分がカットされる。
- その結果、偏光板越しの光の中では、反射光が大幅にカットされる。
- 参考URL 偏光の反射
深層学習
前に書いたように、ステレオ計測にも深層学習の影響が及んでいる。
ステレオカメラ付属のライブラリの中で、深層学習を用いたアルゴリズムを採用しているのがある。
例: Stereolabs
DEPTH TECHNOLOGY: Neural Stereo Depth Sensing
Youtube ZED SDK Neural Depth Sensing
StereoLabs ZED2
DEPTH RANGE 0.3 - 20 m (1 to 65 ft)
引用元
例:NVIDIA
NVIDIA Docs Hub NVIDIA Isaac AMR Isaac SDK Stereo Depth DNN
ステレオ計測に対する解説記事
追記:コンパクトな3Dカメラの比較の記事
表には、誤記とかあるかもしれないので、注意してください。
Intel Realsense D405, OAK-D-SR, Zed X Minの3つが比較されています。
The Evolution of Short-Range Stereo Cameras: A Comparative Analysis
比較実験記事
-
A Quick Comparison of the Orbbec and RealSense 3D Cameras
極端な違いがでてくる条件 -
モニタ上に写り込んだ反射
-
外光の影響を受ける領域
-
0.3 mの距離にある並行な白い壁
これらが2つの3Dカメラで撮影されている。
追加情報
先日、「ロボットは透明な物体やキラキラ物体の認識が苦手」としばらく前の説明をそのまま言っていた人がいたのでこちらとか張っておきます
https://x.com/kmoriyama/status/1829395342217081162
からの引用
注1
算出可能な最小の深度の値を気にしなくていいのは、次のような場合だ。
- 利用条件が固定してあり、算出可能な最小の深度よりも近くに、物体(人を含む)がないと断言できる場合。
- 超音波センサによって、物体が近くにあることを検知できる場合
- ぶつかっても、なんの問題も生じない場合
それ以外の場合には、移動するロボットならばぶつかる心配をする必要があるし、
ロボットのアームが何かぶつかる心配をしなくちゃいけない。
ステレオカメラでの至近距離をなんとかする方法
Depth-Anything を使うこと。
そうすると、左カメラの視野にはあるが、右カメラの視野に入っていない近距離の画像領域に対して、
視差を求めてくれる(ただし、スケーリングは未定)。
これを用いることで、ステレオカメラの弱点の一つを解消できる。
注2
偏光フィルタの入ったステレオカメラが市販されている。
StereoLabsはZED2iのカメラを市販している。
ZED2iの仕様書
ここに、ZED2iとして売られている4種類の仕様の違いが書かれている。
2種類の焦点距離、偏光フィルタの有無の2種類の組み合わせで、4通りである。
偏光フィルタを後付けすることはできないので、最初から偏光フィルタありを選ぼう。
注3
透明物体をどう取り扱うか
透明物体は、どの種類の3Dカメラにとっても苦手な対象物だ。
ToFは、光を透過してしまうので、屈折光の到達して戻ってきた場合の距離を返す。
透明物体の表面でのわずかな反射光は無視される。
深層学習以前のアプローチでは:
輝度ベースでの対応点の比較に基づいており、
透明物体を扱えることは、はなから期待していないロジックになっている。
深層学習以降のロジックでは:
学習済みのモデルによっては、半透明の物体などについての状況が改善してきている。
以下のX(=旧twitter)には、そのような例が記載されている。
https://x.com/KWaragai60816/status/1843848221204033733
注4
grascaleの広角のステレオカメラ
以下の3Dカメラは、grascaleの広角のステレオカメラをも持っている。
解説記事:
Xvisio DS80
DFOV 150 度
HFOV 130 度
VFOV 74 度
Mono, Global shutter, 80 mm baseline
とある。