Photometric stereo
光を動かして、
面の向きを測る。
フォトメトリックステレオ(照度差ステレオ)は、カメラも試料も止めたまま、 光の向きだけを変えて複数枚撮る方法です。明るさがどう変わったかから、 画素ごとに面の向き = 表面法線を解きます。
形を三角測量で測るステレオや構造光とは、原理そのものが違います。 このページは、その違いを読むのではなく触って確かめるためにあります。
◀ ドラッグして比べる ▶
このページでは、この 1 枚の硬貨だけを使います。同じ 1 回の撮像から どこまで取り出せるのかを、最後まで同じ被写体で追いかけるためです。
Experiment 01
光は、あとから決められる。
下にあるのは写真ではありません。FORESIGHT STEREO が実測した表面法線 n とアルベド(反射率)ρ から、 I = ρ (n · l) をブラウザ上でその場で計算して描いた画像です。 光の位置 l を動かしてみてください。
光の位置 l = (0.00, 0.00, 1.00)
中心=真上から。外周へ行くほど浅い角度から。パッドの上をドラッグしても、 画像の上を直接ドラッグしても動きます。
135°
38°
これが「照明不変」の意味です。
1 回の撮像で n と ρ を持ってしまえば、 照明はあとからいくらでも作れます。裏を返せば、 法線そのものは光の当て方に左右されないということです。
現場の照明が変わっても、外光が差し込んでも、面の向きという物理量は変わりません。 当社が中核に据えているのは、この性質です。
生成ではなく、計算です。
ここで動いているのは、実測した物理量に I = ρ (n · l) を当てただけの 算術です。もっともらしい絵を作っているのではありません。 同じ入力に同じ光を与えれば、何度やっても同じ画素値になります。
※ Lambert(拡散)反射だけを仮定した再照明です。実物の金属面に出る鏡面反射のギラつきは 含んでいません(→ 苦手なこと)。
The equation
1 画素に、1 組ずつの
連立方程式。
照明の向き l は分かっている。撮れた明るさ I も分かっている。分からないのは、その画素の 面の向き n と反射率 ρ です。
g = ρn と置くと、これは g について線形になります。 未知数は 3 つ。だから最低 3 枚。3 枚あれば画素ごとに解け、 |g| がアルベド、g / |g| が法線になります。
解いているのは画素ごとに独立した 3 元連立方程式だけです。 だから出力の解像度はカメラの画素そのままになります。 対応点を探すステレオや、パターンを投影する構造光のように、 探索窓の大きさやパターンの粗さで分解能が決まる、ということがありません。
カメラと試料は固定したまま、照明だけを 1 つずつ切り替えて N 枚撮る。 撮像位置が動かないので、N 枚は画素単位でそのまま重なる。
Experiment 02
3 枚に満たないと、
答えは決まらない。
照明の数 N を動かしてみてください。 N 枚から法線を解き直し、実測の法線とのずれを平均角度で出します。 未知数 3 つに対して式が足りているかどうかが、そのまま絵に出ます。
解き直した法線(面の向きを色で符号化。硬貨の中央部を切り出しています)
4 枚
入力に使っている画像
この N 枚は、実測の n と ρ から 同じ式で作った模擬画像です(撮影画像ではありません)。 明るさに ±5% の一様乱数を観測ノイズとして加えています。
実測の法線とのずれ —
実測の法線(答え合わせ用)
N = 1, 2 ── 式が足りない。
未知数 3 つに対して式が 1 本・2 本では、法線は一意に決まりません。 N = 1 では全画素が照明の向きを向いた一様な面になり、硬貨は消えます。 N = 2 では形は出ますが、決まらない 1 方向が抜けたまま歪みます。
N ≧ 3 ── 解けて、そのあとは強くなる。
3 枚で解けます。それ以上は、最小二乗でノイズをならすために効きます。 誤差が 3 枚以降もじわじわ下がるのは、分解能が上がっているのではなく ノイズに強くなっているからです。実機で照明を多めに置くのは、この理由と、 影に入った画素を捨てても残りで解けるようにするためです。 当社の装置では、エリアカメラ構成の TR-100 が 8 方向、 ラインスキャン構成の TR-300 が 4 方向です(→ ラインスキャンカメラとは)。
Four outputs
ρ と n が分かれる、
というのはこういうことです。
式を解いた結果は、そのまま製品の出力になります。 1 回の撮像から、4 つの見方が同時に立ち上がります。
人の目に見える、そのままの像。
基準となる通常撮像。反射も影もそのまま残る。
式の ρ = 素材の明るさ。
陰影を捨てた albedo。体験①で「アルベドを外す」と消えたのが、この情報。
n をつなぎ直した高さ。
面の向きを面全体で積分すると起伏になる。擦り傷と刻印「IRB」が立つ。
式の n そのもの。
照明不変の特徴量。体験①②が扱っていたのは、この物理量。
Strengths and limits
同じ「3D」でも、
測っているものが違う。
フォトメトリックステレオは万能な 3D 計測ではありません。 三角測量にもとづく方式とは、得意と不得意がちょうど裏返しの関係にあります。
| フォトメトリックステレオ | 三角測量(ステレオ・構造光) | |
|---|---|---|
| 直接測るもの | 面の向き(法線)と反射率 | 点の位置(距離) |
| 分解能を決めるもの | カメラの画素。1 画素ごとに独立して解く | 対応点の探索窓、投影パターンの細かさ |
| 得意 | 浅いキズ・打痕・段差など、高さの細かい変化 | 寸法・反り・全体の形など、大きな形状 |
| 不得意 | 広い面のうねり、絶対的な高さ(積分で誤差が溜まる) | 微細な凹凸、光沢面・透明体での対応点探索 |
| 撮像中の条件 | カメラ・試料は固定。照明だけを切り替えて N 枚 | 方式により 1 枚〜複数枚 |
※ 方式どうしの一般的な比較であり、個別の製品の性能を示すものではありません。 実際に何が見えるかは、対象物・表面仕上げ・撮像条件によって変わります。
苦手なことも、はっきりあります。
この方法は「明るさは面の向きだけで決まる」という前提の上に立っています。 現実の表面は、その前提をあちこちで裏切ります。
金属や光沢面では、正反射が前提から外れた強い明るさを作ります。 そのまま解くと、その画素の法線は嘘をつきます。照明を増やして外れ値として捨てるなど、 手当てが要ります。
ある照明で影に入った画素には、その式が使えません。 深い溝の中で光が反射し合う場所も、前提が崩れます。 N を増やして「使える式だけで解く」余地を作ることになります。
法線から高さを作るときは積分するので、誤差が距離とともに溜まります。 細かい凹凸には非常に強い一方、板全体の反りのような低い周波数は苦手です。 そこは三角測量系の仕事になります。
N 枚が画素単位で重なることが前提なので、 撮っている間に動くと成立しません。流れるラインの上で使うには、 この制約を装置側で外す必要があります。
当社が独自に発展させてきたのは、まさにこの制約を現場でどう外すか、という部分です。 たとえば TR-300 は、 移動しているライン上での画像 3D 化を実現した連続検査システムです。
Where it sits
この方法は、どこにあるか。
フォトメトリックステレオは方法であって、製品名ではありません。 当社の製品でこの方法を担っているのは、3 層のうち Layer 01 です。
FORESIGHT STEREO®
フォトメトリックステレオを独自に発展させた 3D 画像化技術。多方向照明から 表面法線を照明不変に取得する。従来は到達できなかった計測を、現場で成立させる。
E3 ENGINE®
良品だけを学習し、そこからの隔たりを数値化する AI 異常検知エンジン。 OK / Human_Check / NG の 3 値で返す。 詳しく見る →
TR シリーズ
センサと判定を、現場で動く 1 台にまとめたもの。卓上の観察機から、 ライン上の連続検査機、ロボット搭載機まで。
※ 単体ソフトウェアの AI SMART MASK は、この 3 層の外側にあります(「どこを見るか」を決める前処理で、良否判定はしません)。
Contact
この方法で、
あなたの対象物は見えるか。
見えるかどうかは、対象物の表面仕上げと、見たい欠陥の高さで決まります。 画面の上で確かめられるのは、ここまでです。サンプルをお預かりして実際に撮り、 4 つの出力をお返しするところからご相談ください。
