3  カメラとレンズ

マシンビジョンシステムのアルゴリズムがどれほど精巧であっても、処理するのはカメラから渡される画像に過ぎない。アルゴリズムチェーンの最上流には光学が存在する:光がレンズを通りセンサーに到達した瞬間、画像の品質の上限はすでに決定されている——コントラスト不足、細部のにじみ、動きによるブレ、透視歪み、これらの欠陥はいかなる後続のアルゴリズムでも真に補修することはできない。適切なカメラとレンズを選ぶために資金と労力を費やすことは、事後的にソフトウェアで画像を「強調する」よりも通常ははるかに費用対効果が高い。

本章では3つの事柄を扱う。まずピンホール結像モデルを構築し、焦点距離、ワーキングディスタンス、視野間の選定計算を導出する。次にセンサーとレンズ側の重要な工学概念——画素、シャッター、被写界深度、テレセントリック——について議論する。最後に生産ラインで日々問われる質問に答える:「鮮明さ」を数値に変えることはできるか? 2種類の鮮明度評価関数を提示し、実験によりそれらの優劣を比較し、オートフォーカスがこの曲線上をどのように「山登り」するかを説明する。

3.1 ピンホールモデルと結像幾何学

最も単純で最も有用なカメラモデルはピンホールモデルである:すべての光線が理想的な小さな開口を通り、その後方距離 \(f\) の像平面上に倒立像を形成する。空間内の点のカメラ座標系における座標を \((X, Y, Z)\)\(Z\) は光軸に沿った距離)とすると、その像点の座標は

\[ x = f\,\frac{X}{Z}, \qquad y = f\,\frac{Y}{Z}. \]

となる。これが透視投影であり、その核心は \(Z\) による除算である:同じ大きさの物体でも、カメラから遠いほど(\(Z\) が大きいほど)像は小さくなる——「近くのものは大きく見え、遠くのものは小さく見える」という日常的な経験が1回の除算に圧縮されている。パラメータ \(f\)焦点距離と呼ばれ、結像幾何学のスケーリングのつまみである:\(f\) が長いほど、同一物体の像は大きくなり、視野は狭くなる。

実際のレンズには歪みも存在する:直線が像面上で弧状に曲がり、視野の縁に近づくほど顕著になる。チャプター 5 ではピンホールモデルに歪み項と内部パラメータ行列を追加し、精密測定に使用可能な完全なモデルを得る。本章では理想的なピンホールで選定の直感を構築する。

レンズ選定で最も頻繁に使用される量はこのモデルを通じて結びつけられる。ワーキングディスタンス(WD)をレンズから物体までの距離、視野(FOV)を画像がちょうど覆う物面の幅、センサー幅を \(h\) とすると、倍率

\[ m = \frac{h}{\mathrm{FOV}}, \qquad f = \frac{m\cdot \mathrm{WD}}{1+m}. \]

となる。第2式は薄肉レンズの公式に由来する;\(\mathrm{WD} \gg f\) の場合、より一般的な近似式 \(f \approx m\cdot\mathrm{WD}\) に縮退する。

具体的な例を計算してみよう。ある検査ステーションでは 1/1.8″ センサーを使用し、画素サイズ 2.4 μm、解像度 3072×2048 である。これよりセンサー幅 \(h = 3072 \times 2.4\ \mu\text{m} \approx 7.4\) mm となる。機構上の制約によりワーキングディスタンスは 300 mm に固定され、幅 50 mm の視野をカバーする必要がある。このとき \(m = 7.4/50 \approx 0.148\) であり、代入すると \(f \approx 0.148 \times 300 / 1.148 \approx 38.7\) mm となる。市販の単焦点レンズに 38.7 mm という仕様は存在しないため、最も近い値である 35 mm に切り下げる:実際の倍率は \(m' = f/(\mathrm{WD}-f) = 35/265 \approx 0.132\) となり、実際の視野は約 \(7.4/0.132 \approx 56\) mm となる。これは要求値よりわずかに広く、取り付けと位置合わせの余裕が確保されている。逆に 50 mm を選択すると視野は約 37 mm に縮小し、要求を満たさない。最後に空間分解能を確認する:56 mm を 3072 画素で割ると 1 画素あたり約 18 μm となる。この値が十分かどうかは次節の法則に依存する。

3.2 センサーと画素

画素はセンサー上の受光素子であり、本質的に光生成された電子を蓄積する「井戸」である。1つの井戸が最大で蓄積できる電子数を飽和電荷量(フルウェル容量)と呼ぶ;飽和電荷量と読み出しノイズの比がダイナミックレンジを決定する——1枚の画像内で同時に識別可能な最も明るい部分と最も暗い部分の幅である。チャプター 1 ではビット深度について議論した:8 ビットと 12 ビットのどちらの量子化が有意であるかは、最終的にはセンサーのダイナミックレンジがそれだけのグレースケール段階をサポートできるかどうかにかかっている——そうでなければ、余分なビットはノイズをより細かく量子化するだけに過ぎない。

ここから見過ごされがちな一対のトレードオフが導かれる:同じサイズのセンサーでは、解像度が高いほど画素は小さくなる。画素が小さくなると、飽和電荷量は受光面積に比例して減少し、S/N比とダイナミックレンジが同時に低下する。また、それらを満たすためにより明るい照明またはより長い露光時間が必要になる。「解像度は高いほど良い」はカメラ選定で最も一般的な誤解である——解像度は要求から算出すべきであり、予算の上限まで最大限に高めるべきではない。

要求はどのように算出するか?経験則:最小の欠陥または最小の特徴は少なくとも 2 画素を覆う必要がある——これはまさに チャプター 1 のサンプリング定理の工学版である(実際には余裕を持たせるために 3~4 画素とされることが多い)。前節の例では 1 画素あたり 18 μm であり、信頼して検出可能な最小の欠陥は約 36~70 μm であることを意味する。もしプロセス上 20 μm の欠陥を検出する必要がある場合は、視野を縮小するか、より高解像度のソリューションを採用しなければならない。

発注を出す前に明確にしておかなければならない別の問題はシャッター方式である。グローバルシャッターはすべての画素の露光を同じ瞬間に開始および終了させ、真の「ある瞬間」の画像を得る;ローリングシャッターは行ごとに順次露光するため、1フレームの上部と下部では1回の読み出し周期分の時間差が生じる。静止したワークを撮影する場合は両者に差はないが、ワークまたはカメラが動いている場合、ローリングシャッターは矩形を平行四辺形に、円を卵形に変形させる——これは行ごとの時間差によって引き起こされる幾何学的歪みであり、事後的にキャリブレーションで除去することはできない。結論は明確である:動いているワーク(コンベア上のフライバイ撮像、移動ステージ上のスナップショット)にはグローバルシャッターが必要である。 ローリングシャッターセンサーは安価でノイズが低いことが多く、静止撮影の用途にのみ適している。

3.3 被写界深度とテレセントリックレンズ

ピンホールモデルではどこでも像が鮮明であるが、実際のレンズには1つの合焦平面しか存在しない。物体がその平面からずれると、1つの物点は像面上で小さなボケスポットに広がる;スポットの直径が許容錯乱円 \(c\)(工学的には通常 1~2 画素)を超えない限り、人間もアルゴリズムもそれを「鮮明」と判断する。鮮明さが維持される前後の範囲を被写界深度(DOF)と呼び、近似的に

\[ \mathrm{DOF} \;\approx\; \frac{2\,c\,N\,(m+1)}{m^{2}}, \]

と表される。ここで \(N\) はF値である。この式を定性的に読む:絞りを絞る(\(N\) を大きくする)と被写界深度は大きくなる——代償として光量は \(N^2\) に比例して減少し、絞り過ぎると回折により画面全体が軟化する。倍率 \(m\) は分母の2乗にあるため、高倍率での結像では被写界深度は極めて急速に狭くなり、顕微鏡観察では紙のように薄い鮮明な層しか得られない。被写界深度が不足している場合は、まず絞りを絞り照明を追加することを考慮し、次に倍率を下げ、最後の手段として機械的にワークを平坦化する。

通常のレンズには、合焦とは無関係な固有の問題も存在する:透視誤差である。\(x = fX/Z\) より、倍率は \(Z\) に伴って変化し、\(\Delta m / m \approx \Delta Z\,/\,Z\) となる。前節の例に戻る:ワーキングディスタンス 300 mm、ワーク表面の起伏または治具の繰り返し位置決め誤差が ±1 mm の場合、倍率は ±0.33% 変化し、50 mm の被測定寸法上で ±0.17 mm の読み取りドリフトが生じる——これは数マイクロメートルの公差を持つ寸法測定にとって壊滅的である。しかもこれは合焦の問題ではなく、絞りを絞っても解決しない。

テレセントリックレンズはまさにこのために存在する:開口絞りを像側焦平面に配置することで、物側の主光線をすべて光軸に平行にする。そのためテレセントリック範囲内では、倍率は物距離によって変化しない——ワークが揺れても、厚くても、傾いても、像の大きさは一切変わらず、透視誤差は光学構造自体によって消去される。代償は体積、重量、価格である。テレセントリックレンズが必須となるのはいつか?高精度寸法測定(公差がマイクロメートルレベルの場合)、厚みまたは段差のある被測定物(通常のレンズは上下面を異なる倍率で結像する)、および \(Z\) 方向の位置を厳密に制御できない場合である。

テレセントリックレンズの厳しい制約:主光線が光軸に平行であるため、レンズ前群の口径は被測定物以上でなければならない——50 mm のワークを測定するには口径が 50 mm を超えるテレセントリックレンズが必要である。これがテレセントリックレンズが大きく高価である根本的な理由であり、通常は測定ステーションにのみ使用され、大視野の位置決めには使用されない理由でもある。

3.4 鮮明度の定量的評価

実験室では「画像が鮮明かどうか」は目で判断されるが、生産ラインでは数値で判断しなければならない:オートフォーカスには探索可能な目的関数が必要であり、装置の調整と検収にはプロセス文書に記載可能な指標が必要であり、新旧のレンズや異なるバッチのレンズを比較するには統一された物差しが必要である。この目的で画像を1つのスカラーに写像する関数を鮮明度評価関数と呼ぶ。優れた評価関数は合焦位置で唯一のピークを取り、ボケ量の増加に伴って単調減少する。

最も直接的な発想は観察に由来する:画像がボケると、本質的に高周波の細部が失われ、エッジが緩やかになる。勾配エネルギー法(Tenengrad の思想)はエッジの「急峻さ」を直接測定する:

\[ S_{\mathrm{grad}} = \frac{1}{NM}\sum_{n,m} \Big( G_x[n,m]^{2} + G_y[n,m]^{2} \Big), \]

ここで \(G_x\)\(G_y\) は水平方向および垂直方向の勾配(例えば Sobel オペレータの応答)である。画像が鮮明なほど勾配の大きさは大きくなり、スコアは高くなる。別の種類はグレースケール分散法であり、画像全体のグレースケール値が平均値からどれだけ離れているかを測定する:

\[ S_{\mathrm{var}} = \frac{1}{NM}\sum_{n,m} \big( g[n,m] - \bar g \big)^{2}, \qquad \bar g = \frac{1}{NM}\sum_{n,m} g[n,m]. \]

ボケは一種の平均化であり、グレースケール値を平均値に向けて押し縮めるため、分散はそれに伴って低下する——計算は最も速いが、測定しているのは細部ではなく大域コントラストである。両者の優劣は実験が語る。

480×360 のテストシーンを合成する(図 3.1):上段には周期がそれぞれ 2、4、6、8 px の4組の縞模様があり、簡易的な解像度チャートに相当する;中段には 4 px の市松模様とテキスト状のテクスチャを模したランダムスペックルブロックがある;下段にはステップエッジを提供する暗い矩形と斜めの白黒対角エッジがある;さらに幅 1 px の明るい線2本が画面全体を横切っている。最も微細な 1 px の構造から最も粗大な明暗の大きなブロックまで、あらゆる空間スケールが揃っている。

図 3.1: 合成テストシーン(480×360)。上段:周期 2/4/6/8 px の4組の縞模様;中段:4 px の市松模様とテキスト状スペックルブロック;下段:ステップエッジの暗い矩形と斜め対角エッジ;横方向および縦方向に幅 1 px の明るい細線が画面全体を横切る。

次にガウシアンブラーで段階的なボケをシミュレートする(実際のボケスポットは近似的に均一な錯乱円盤であり、ガウシアンはその平滑な一次近似である——フィルタ自体については チャプター 6 を参照)。\(\sigma\) は 0、0.8、1.6、2.4、3.2、4.8、6.4 の7段階とし、カーネルサイズは \(K \approx 6\sigma\) に近い奇数を選択する。図 3.2 はそのうちの2段階を示している:\(\sigma=2.4\) では周期 2 px および 4 px の細かい縞模様のグループは完全に均一な灰色のブロックに融け込んでおり——これらの細部は永久に失われている——太い縞模様、矩形、対角エッジは残存している;\(\sigma=6.4\) ではすべての縞模様と市松模様が消し去られ、大きな明暗の領域だけが残っている。

(a) 中程度のボケ(\(\sigma=2.4\)
(b) 重度のボケ(\(\sigma=6.4\)
図 3.2: ガウシアンブラーでシミュレートした2段階のボケ。(a) \(\sigma=2.4\):周期 2/4 px の細かい縞模様のグループは灰色のブロックに融け込み、太い縞模様と大きな構造は残存;(b) \(\sigma=6.4\):すべての細部が失われ、大きな明暗の領域のみが残る。

各ボケ段階について2つのスコアをそれぞれ計算し、\(\sigma=0\) で 1 になるように正規化した結果を 表 3.1図 3.3 に示す。

表 3.1: ボケ量に対する2つの鮮明度評価関数の正規化スコア(\(\sigma=0\) での生スコア:勾配法 66.4361、分散法 33.2610)
ボケ \(\sigma\) 勾配法(正規化) 分散法(正規化)
0.0 1.0000 1.0000
0.8 0.7330 0.6693
1.6 0.3441 0.5125
2.4 0.1850 0.4716
3.2 0.1356 0.4552
4.8 0.1145 0.4302
6.4 0.1053 0.4068
図 3.3: 2つの鮮明度評価関数のボケ応答曲線(横軸:ボケ \(\sigma\)、縦軸:正規化スコア;黒:勾配法、灰色:分散法)。両曲線とも厳密に単調減少するが、勾配法は 0.105 まで低下するのに対し、分散法は約 0.41 でプラトーに達する。

両曲線とも厳密に単調減少しており——オートフォーカスの目的関数としてはどちらも「使用可能」であるが、品質の差は劇的である。勾配法の識別力は分散法よりはるかに優れている\(\sigma=1.6\) から 6.4 まで、勾配スコアは 0.344 から 0.105 まで一貫して低下する(3倍以上の幅)のに対し、分散スコアは 0.513 から 0.407 まで緩やかに低下するだけで、早期にプラトーに達する。その理由は2つの式の本質に立ち返る:ボケが消去するのは高周波の細部であるのに対し、暗い矩形、対角エッジなどの大きな明暗構造はどの程度のボケでも大域コントラストを維持する。分散法はコントラストだけを見るため、画像が色のブロックだけになるまでボケてもまだ4割のスコアを与える;勾配法はエッジの急峻さを監視し、細部の喪失に対してはるかに敏感に反応する。識別力の低い評価関数は、合焦曲線のピーク領域が平坦で遠ボケ領域がほぼ平坦であることを意味し、探索アルゴリズムは方向を判断することも収束を判定することも困難になる。

単調な評価曲線が得られれば、オートフォーカスはその曲線上での山登りである:合焦モータまたは \(Z\) 軸を移動させ、各位置で画像を取得してスコアを計算し、スコアが上昇する方向に進み続け、ピークを超えたところで停止する。実用的な探索戦略は粗から細への2段階である:まず大きなステップで全ストロークを走査し、ピークを区間内に括り出す(同時に遠ボケ領域のプラトー上のノイズによるアーティファクトを回避する);次にその区間内を小さなステップで精密走査し、ピーク付近の数個のサンプル点に放物線をフィッティングして、最適な合焦位置をステップ未満の精度まで補間する。評価関数の識別力が優れているほど、粗走査段階での方向判断は信頼できるものになり、精密走査区間もより狭く設定できる。

工学的な詳細:本実験で使用したSDKのガウシアンフィルタは内部の浮動小数点総和の順序が固定されていないため、再実行時にスコアの有効数字3桁目がわずかに変動する(\(\sigma=0\) ではフィルタが適用されないためスコアは桁ごとに一致する)が、単調性と識別力に関する結論は安定して不変である。評価系の指標については、工学的な判断は傾向とオーダーに基づくべきであり、最下位の数字にこだわるべきではない。

3.5 SciVision 実装

鮮明度評価は SciVision SDK では SCIMV::SciSvFocus クラスによって提供され、コアインターフェースは GetFocusScore である:

SCIMV::SciSvFocus focus;
SciROI roi;
SciPoint tl(0, 0), br(W - 1, H - 1);   // GenRect1 は非const参照を受け取るため、名前付き変数が必要
roi.GenRect1(tl, br);

double score;
long rc = focus.GetFocusScore(frame, roi, SCI_GRADIENT, &score);
if (rc) { /* 非0はエラーコードであり、必ずチェックする必要がある */ }

4つのパラメータは順に:srcImage は評価対象の画像;ROI は評価領域を制限し、正対矩形、回転矩形、未定義の3種類をサポートする。未定義の場合は画像全体を処理することを意味する——生産ラインでは通常、背景がスコアに影響を与えないように被検特徴の周りにROIを設定する;method は評価アルゴリズムを選択する(下表参照);score は結果を出力する。スコアは相対量であり、同じシーン、同じROI、同じ方法で得られたスコア間でのみ比較が有意である。

表 3.2: GetFocusScore の method パラメータ
列挙値 方法 マニュアル記載の特性
SCI_VARIANCE(0) 分散法 ノイズに敏感、最も処理時間が短い
SCI_EVA_IMPROVE 点鮮明度法 ノイズと細部の欠落に比較的敏感、最も処理時間が長い
SCI_IMAGE_DIFFERENCE 差分法 ノイズと細部の欠落に比較的敏感、処理時間は長め
SCI_GRADIENT(3) 勾配法 ノイズと細部の欠落の影響を受けにくい、処理時間は長め

本章の実験では SCI_GRADIENTSCI_VARIANCE の2つの設定を使用しており、セクション 3.4 の2つの式に対応している。SDKはまた、スコア列から最高点を見つけるための ScoreStatistics と、スコア曲線に最適なフィッティングを行うための CurveFitting を提供しており、オートフォーカスの「粗走査—精密走査—ピークフィッティング」手順の既製の構成要素となっている。本章のすべての画像とスコア表を生成する完全なプロジェクトは code/cameras_and_lenses/ にあり、読者はシーン構造とボケパラメータを変更して結果を再現することができる。

産業事例:生産ラインでのレンズ組立検収

あるモジュールメーカーの検査装置を第2生産ラインに複製した後、誤検出率が顕著に上昇した。調査の結果、組立技術者が目視で合焦を行っていたことが判明した:「だいたい鮮明に見える」は異なる人や異なるディスプレイ間では再現不可能である。是正策は、鮮明度スコアを組立プロセスに記載することであった:各ユニットの組立が完了した後、統一された標準ターゲットを撮影し、GetFocusScore(勾配法)でスコアを算出し、基準ユニットのスコアの95%以上に達したもののみを出荷する。2つの落とし穴が記録に値する。1つ目は、鮮明度スコアは撮影内容に非常に敏感である——別のターゲットシートに交換するとスコアの比較可能性が完全に失われるため、検収には同一モデルで同一姿勢の標準ターゲットを使用しなければならない。2つ目は、スコアの最下位桁には浮動小数点の変動が存在するが、閾値に5%の余裕を持たせることで完全に吸収される——検収基準は元々小数点以下3桁に依存すべきではなかったのである。この手順を定着させた後、新ラインの組立は一度で合格し、合焦ドリフトのある老朽化したユニットも定期的な再検査により自動的に検出されるようになった。

3.6 まとめ

  • 画像品質の上限は光学側で決定され、後続のアルゴリズムは失われたものを回復できない;選定計算はピンホールモデルから始まり——\(m = h/\mathrm{FOV}\)\(f = m\cdot\mathrm{WD}/(1+m)\)——次に各画素がカバーする物面のサイズを確認する。
  • 解像度は要求から算出し、予算で購入してはならない:最小の特徴は少なくとも 2 画素(余裕を持たせる場合は 3~4 画素)を覆う必要がある;同じサイズのセンサーでは、画素が小さいほど飽和電荷量とダイナミックレンジは悪くなる。動いているワークにはグローバルシャッターが必要である。
  • 被写界深度 \(\propto cN(m+1)/m^2\):絞りを絞って被写界深度を確保する;高倍率では被写界深度は急激に狭くなる。通常のレンズの倍率は物距離に伴って変化する(\(\Delta m/m \approx \Delta Z/Z\))ため、高精度寸法測定にはテレセントリックレンズが必要であり、その口径は被測定物以上でなければならない。
  • 鮮明度は定量化できるし、すべきである:勾配エネルギー法は高周波の細部を測定し、大域コントラストだけを見るグレースケール分散法よりはるかに識別力に優れる(本章の実験では尾部の差が 0.105 対 0.407);オートフォーカスは合焦曲線上での粗から細への山登り探索である。
  • 評価スコアは相対量である:同じシーン、同じROI、同じ方法でのみ比較可能;検収基準として使用する場合は、標準ターゲットを固定し、浮動小数点の変動に対する閾値の余裕を持たせる。

カメラ、レンズ、照明の体系的な選定、およびテレセントリック結像のより完全な光学的解析については、Steger らの著書 (Steger, Ulrich, と Wiedemann 2018) を参照されたい;ピンホールモデル、薄肉レンズ結像、透視投影の幾何学的導出については、Szeliski の教科書 (Szeliski 2022) を参照されたい。本章では勾配エネルギー法とグレースケール分散法の2つの鮮明度評価関数のみを比較したが、より大きなオペレータ集合の中から選定する場合は、Pertuz ら (Pertuz, Puig, と Garcia 2013) が30種類以上の合焦評価オペレータのノイズ、ウィンドウサイズ、画像内容に対するロバスト性を統一されたフレームワーク内で系統的に評価しており、オートフォーカスまたは合焦からの形状復元(shape-from-focus)のために評価関数を選択する際の実用的な参考となる。