2 数学予備
産業界のビジョンエンジニアリングの日常は、一見するとパラメータの調整、光源の設定、処理フローの記述のように見えますが、その根底には常に同じ数学的な役者たちが立っています。ワークを「まっすぐに直す」のは行列の乗算に依存し、一連のエッジ点から基準線を作るのは最小二乗法に依存し、あるグレースケール値が異常かどうかを判断するのは確率分布に依存し、位置決め精度を整数画素からサブ画素へと向上させるのは補間に依存しています。大学のカリキュラムでは、これらの内容は線形代数、確率・統計、数値解析の3つの科目に分散していますが、本章では実際に生産現場で繰り返し登場するごく一部を集め、「後のどの章で必要になるか」という基準で取捨選択します。網羅性は求めず、すべての公式が明確な行き先を持つことだけを目指します。以下の表は、本章の学習マップです。
| 本章の節 | 内容 | 対応する後続章 |
|---|---|---|
| セクション 2.1 | ベクトル、変換行列、同次座標、固有ベクトル | チャプター 10、チャプター 5、チャプター 14 |
| セクション 2.2 | 正規方程式、重み付き最小二乗法、数値安定性 | チャプター 14、チャプター 5 |
| セクション 2.3 | 期待値と分散、ガウス分布、ヒストグラム、中心極限定理 | チャプター 6、チャプター 7、チャプター 26 |
| セクション 2.4 | 双一次補間、3点放物線補間 | チャプター 10、チャプター 20、チャプター 14 |
事前に説明しておきます。本章は理論章であり、独立した付随の実験プロジェクトはありません。ここで導き出されるすべての結論は、後続の各章の実際の実験で繰り返し裏付けられます。例えば、チャプター 6 では \(\sigma=18\) のガウスノイズ実験を用いて「平均化が独立した誤差を打ち消す」ことを証明し、チャプター 14 では 0.723 px と 0.257 px のインライア RMSE の比較を用いて、二乗ペナルティが外れ値に対してどれほど敏感であるかを示します。読者は本章を「証明付きのメモ」として扱い、後続の章で公式の出所が不明確になったときはいつでも戻ってこれるようにしてください。
2.1 ベクトル、行列、幾何変換
本書全体を通じて、太字の小文字はベクトル(vector)を表し、常に列ベクトルです。画像平面上の連続座標点は \(\mathbf{x} = (x, y)^\top\) と記述され、記号の約束と一致しています。離散画像 \(f[n,m]\) において、\(n\) は行(下方向)、\(m\) は列(右方向)です。行列(matrix)は大文字で表されます。\(2\times 2\) 行列 \(A\) を点に作用させる(\(\mathbf{x}' = A\mathbf{x}\))ことは、線形変換を意味します。回転、スケーリング、せん断は、すべて特定の \(A\) に対応します。
産業ビジョンで最もよく使われる3つの2D変換は、厳しいものから緩いものへと順序付けられたファミリーを形成します。剛体変換(rigid transformation)は回転と平行移動のみで構成されます。
\[ \mathbf{x}' = R\,\mathbf{x} + \mathbf{t}, \qquad R = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}, \]
自由度は3(回転角 \(\theta\) と平行移動 \(\mathbf{t}\) の2つの成分)で、すべての長さと角度を保ちます。これはまさに「載台上でワークが位置を変え、角度を回転したが、ワーク自体は変わっていない」という状況の数学的な表現であり、位置補正の標準モデルです。相似変換(similarity transformation)は、剛体変換に加えて全体のスケール係数 \(s\) を許容します(つまり \(\mathbf{x}' = sR\,\mathbf{x} + \mathbf{t}\)、自由度4)。長さはもはや不変ではありませんが、角度と形状は保たれます。これは、作業距離が変化し、画像が大きくなったり小さくなったりする状況に適しています。アフィン変換(affine transformation)は、さらに任意の正則な \(2\times 2\) 行列に平行移動を加えたもの(自由度6)へと拡張され、2つの軸それぞれに対して独立したスケーリングとせん断を許容します。直線は直線のままであり、平行線は平行のままですが、角度はもはや保たれません。チャプター 10 では、このファミリーを画像のリサンプリングと位置補正に活用します。
上記の3つの式がすべて「行列の乗算に平行移動を加える」形で書かれていることに注意してください。線形変換は原点を原点に写さなければならないため、平行移動を \(2\times 2\) 行列の中に折りたたむことはできません。同次座標(homogeneous coordinates)は、単純な次元拡張によってこれを解決します。すべての点に 1 を追加し、\(\tilde{\mathbf{x}} = (x, y, 1)^\top\) と書くと、アフィン変換全体が1回の \(3\times 3\) 行列の乗算になります。
\[ \begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a_{11} & a_{12} & t_x \\ a_{21} & a_{22} & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}. \]
同次座標のエンジニアリング的な価値は連鎖(chaining)にあります。画像座標 → 歪み補正 → 位置補正 → 物理座標という流れにおいて、各ステップは \(3\times 3\) 行列であり、チェーン全体を事前に1つの行列として乗算できます。そのため、実行時には各点に対して乗算を1回行うだけで済みます。最後の行が \((0,0,1)\) に制限されない場合、透視変換(ホモグラフィ、homography)が得られます。チャプター 5 で平面キャリブレーションターゲットの成像を説明する際に、これなしでは済ませられません。
最後に、チャプター 14 の直線フィッティングの閉形式解で主役を務める固有ベクトル(eigenvector)の幾何学的直感について説明します。点の集合 \(\{\mathbf{p}_i\}_{i=1}^{N}\) に対して、重心を \(\bar{\mathbf{p}} = \frac{1}{N}\sum_i \mathbf{p}_i\) とし、散布行列(scatter matrix)を次のように定義します。
\[ S = \sum_{i=1}^{N} (\mathbf{p}_i - \bar{\mathbf{p}})(\mathbf{p}_i - \bar{\mathbf{p}})^\top, \]
これは \(2\times 2\) の対称行列です。その2つの固有ベクトルは互いに直交し、対応する固有値(eigenvalue)が大きい方向が、点集合が最も広く散らばっている方向を指します。あるエッジに沿って分布する一連のエッジ点を入力すると、主固有ベクトルがそのエッジの向きを直接与えます。これは偶然ではありません。各点への垂直距離の二乗和を最小化する最適な直線は、重心を通り、その方向が \(S\) の主固有ベクトルになることが証明できます。重心を1回計算し、\(2\times 2\) の固有値問題を1つ解くだけで、直線フィッティングの閉形式解が得られます。これが、チャプター 14 における「解が閉形式である」という言葉のすべての内容です。
2.2 最小二乗とロバスト性
最小二乗(least squares)は測定クラスのアルゴリズムのエンジンであり、最も簡単なケースを完全に一回導出しておく価値がある。\(N\) 個の点 \((x_i, y_i)\) が与えられ、直線 \(y = kx + b\) をフィッティングしたいとする。「よくフィットする」を鉛直残差の二乗和の最小化として定義すると:
\[ E(k, b) = \sum_{i=1}^{N} (k x_i + b - y_i)^2 . \]
\(E\) は \(k, b\) の滑らかな凸関数であり、極小値では偏微分がゼロになる:
\[ \frac{\partial E}{\partial k} = 2\sum_i x_i (k x_i + b - y_i) = 0, \qquad \frac{\partial E}{\partial b} = 2\sum_i (k x_i + b - y_i) = 0 . \]
\((k,b)\) に関する連立一次方程式に整理すると、すなわち正規方程式(normal equations)となる:
\[ \begin{pmatrix} \sum_i x_i^2 & \sum_i x_i \\ \sum_i x_i & N \end{pmatrix} \begin{pmatrix} k \\ b \end{pmatrix} = \begin{pmatrix} \sum_i x_i y_i \\ \sum_i y_i \end{pmatrix}. \]
2行2列で、1回解けば \(k, b\) が得られる。第2行から覚えておくべき性質も得られる:\(b = \bar{y} - k\bar{x}\)、すなわち最小二乗直線は必ず点群の重心を通る。一般のケースも完全に同型である:モデルを \(A\boldsymbol{\theta} \approx \mathbf{y}\) と書き(\(A\) の各行は1つの観測、\(\boldsymbol{\theta}\) は推定すべきパラメータ)、正規方程式は \(A^\top A\,\boldsymbol{\theta} = A^\top \mathbf{y}\) となる。円フィッティングであれ、キャリブレーションターゲットのホモグラフィ推定であれ、ハンド・アイ関係の求解であれ、最終的にはほとんどがこの形式に行き着く。
条件数(condition number)は、入力の摂動に対する解の増幅倍率を表し、\(A^\top A\) の条件数は \(A\) の条件数の2乗である。画素座標(容易に千を超える)で直接フィッティングすると、\(\sum x_i^2\) と \(N\) は6桁異なり、行列はほぼ悪条件となり、浮動小数点誤差が急激に増幅される。円フィッティングは \(x^2+y^2\) 項を含むため、状況はさらに悪化する。エンジニアリングの原則:まず重心を引いてデータを中心化する(必要に応じてスケールで割って正規化する)、小さな座標で求解し、最後に結果を元に戻す変換を行う——数行のコードで有効数字を数桁取り戻せる。
2つのよくある拡張。1つ目は重み付き最小二乗(weighted least squares)である:各観測の信頼度が異なる場合、各項に重み \(w_i \ge 0\) を与え、\(\sum_i w_i r_i^2\) を最小化する。正規方程式は対応して \(A^\top W A\,\boldsymbol{\theta} = A^\top W \mathbf{y}\) となる(\(W\) は対角重み行列)——導出は上記と全く同じであり、各和式の中に \(w_i\) が1つ余分に乗るだけである。2つ目は、「鉛直残差」を点から直線への垂直距離に置き換えることである:このとき最適解はもはや正規方程式では与えられず、まさに前節の閉形式となる——重心を通り、散布行列の主固有ベクトル方向を向く。いずれの座標軸にも偏らず、これが幾何フィッティングの正しいやり方である。
最小二乗の弱点も同じ二乗の中に隠れている:残差 12 px の1つの外れ値は、目的関数への寄与が残差 0.5 px の正常点の約 600 倍になり、フィッティング結果はごく少数の外れ値に乗っ取られかねない——チャプター 14 の比較実験はこれを際立つ数字で示している(インライア RMSE 0.723 px 対 0.257 px)。特効薬は、二乗ペナルティを大残差に寛容なペナルティ(Huber 重み付け (Huber 1964)、重み付き最小二乗で反復求解)やランダムサンプルコンセンサス RANSAC (Fischler と Bolles 1981) に置き換えることである。どちらも実験と併せて該当章で詳しく扱う。本章では原因だけを記憶すればよい:二乗は大残差の発言力を増幅する。
2.3 確率と統計の基礎
ノイズは画素ごとに予測することはできないが、統計的に特徴付けることはできる。1回のグレースケール観測を確率変数(random variable)\(X\) とみなす。最も重要な2つの要約量は、期待値(expectation)\(\mu = \mathrm{E}[X]\)(複数回観測の平均的な趨勢)と分散(variance)\(\sigma^2 = \mathrm{E}[(X-\mu)^2]\)(期待値の周りのばらつき)である。分散の平方根 \(\sigma\) は標準偏差と呼ばれ、グレースケール値と同じ次元を持ち、実務上はそのまま「ノイズ振幅」として使われる。期待値の線形性と、独立観測の分散の加法性から、生産現場で毎日使われる法則がただちに導かれる:\(N\) 個の独立同分布観測の平均をとると、平均値の分散は1回の観測の \(1/N\) になる、すなわち標準偏差は \(\sigma/\sqrt{N}\) に縮小する——マルチフレーム平均、チャプター 6 の近傍平滑化、チャプター 14 の探索線上の投影平均は、すべてこの \(\sqrt{N}\) 法則の化身である。
マシンビジョンにおいて最も重要な分布はガウス分布(Gaussian distribution)\(\mathcal{N}(\mu, \sigma^2)\) であり、確率密度関数は
\[ p(x) = \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right). \]
その値は高度に集中している:\(\mu \pm \sigma\)、\(\mu \pm 2\sigma\)、\(\mu \pm 3\sigma\) の範囲に入る確率はそれぞれ約 68.3%、95.4%、99.7% である——最後のものが有名な 3σ 法則である。これにより閾値設定に直接的な言葉が与えられる:良品領域のグレースケール値が \(\mathcal{N}(\mu, \sigma^2)\) に従うとし、「\(\mu \pm 3\sigma\) を超える」を異常と判定すれば、画素あたりの誤報率はわずか約 0.3% である。ただしスケール効果に注意が必要である:500万画素の画像では、0.3% は単なる運で1万画素以上が境界を越えることを意味する。そのため欠陥検出の実務では \(4\sigma\)~\(6\sigma\) に緩めるか、3σ の後に連結面積による絞り込みを追加することが多い——チャプター 26 でこの計算に戻る。
\(\sigma\) の推定自体も外れ値対策が必要である:標本標準偏差は二乗項を含み、少数の悪い点で膨らんでしまう。ロバストな代替は中央絶対偏差(median absolute deviation,MAD)である:\(\hat{\sigma} = 1.4826 \times \operatorname{median}_i\big(|x_i - \operatorname{median}(x)|\big)\)。係数 1.4826 はガウスデータ上で標準偏差と一致させるためのものである。中央値は自然に少数の極端値を無視するため、MAD は生産ラインの閾値統計における常備品となっている。
実際の画像の分布はどこから来るのか?数えればよい:各グレースケール値をとる画素数を集計するとヒストグラム(histogram)が得られる。総画素数で割れば、グレースケール分布の経験的推定値になる——期待値も分散もヒストグラムから直接計算できる。明るい背景に暗いワークの画像は双峰ヒストグラムを示し、2つのピーク間の谷は自然な分割閾値となる。チャプター 7 の大津の方法は、まさにヒストグラムを確率分布として扱い、クラス間分散を最大化する閾値を探す——本節の期待値と分散がそのすべての原料である。
最後に、2章にわたって残されていた疑問に答えよう:なぜセンサーノイズにガウスモデルを使うのか?答えは中心極限定理(central limit theorem)である:相互に独立で個々に微小なランダム摂動の総和は、個々の摂動がどのような分布であろうと、ガウス分布に収束する。画素読み出しの摂動はまさにこの状況である——暗電流の熱揺らぎ、読み出し回路ノイズ、ゲイン増幅の電子ノイズが幾重にも重なり、各項は小さく独立しているため、総合効果は近似的にガウスとなる。チャプター 6 が \(\sigma=18\) のガウスノイズですべての比較実験を行っている根拠はここにある。同時に、これは該当章の反例も説明する——ごま塩ノイズは不良画素や伝送エラーのような単一の、振幅の大きいイベントに由来し、「大量の微小で独立な摂動」という前提を満たさないため、ガウスではなく、ガウシアン向けの手法で対処すべきではないのである。
2.4 補間
画像は整数格点上にしか値を持たないが、アルゴリズムは常に非整数位置の値を要求する。画像を回転させると、対象画素をソース画像に逆マッピングした位置はほとんど決して格点上に乗らない(チャプター 10)。任意方向の探索線に沿ってグレースケールプロファイルを取れば、サンプル点も格点と格点の間に落ちる(チャプター 20)。補間(interpolation)は「格点の間には何があるか」に答える役割を担う。
最も低コストなのは最近傍補間(nearest-neighbor interpolation)である。最も近い格点の値を取る。新しいグレースケール値を生成せず、最も高速であるが、位置的には最大 0.5 画素の丸めに等しく、幾何変換後のエッジはギザギザになるため、測定場面ではほとんど使われない。標準的な答えは双一次補間(bilinear interpolation)である。サンプル点が第 \(n\)、\(n+1\) 行と第 \(m\)、\(m+1\) 列で囲まれる単位正方形内にあり、行・列方向の小数オフセットをそれぞれ \(\beta, \alpha \in [0,1)\) とすると、
\[ f(n+\beta,\, m+\alpha) = (1-\alpha)(1-\beta)\, f[n,m] + \alpha(1-\beta)\, f[n,m+1] + (1-\alpha)\beta\, f[n+1,m] + \alpha\beta\, f[n+1,m+1]. \]
4 つの重みは、サンプル点が単位正方形を分割する 4 つの対角面積にちょうど一致する。ある格点に近いほど、その格点の発言権が大きくなる。4 つの重みの和は常に 1 であり、平坦な領域を補間しても平坦なままである。双一次補間の出力は連続で計算量も小さく、産業用の幾何変換におけるデフォルトの選択肢である。より高次の双三次(bicubic)補間は \(4\times 4\) 近傍を使ってより滑らかな結果と引き換えにするが、チャプター 10 で実測比較を行う。
もう一種類の補間はリサンプリングのためではなく、極値の精密な位置を見つけるためである。これはサブ画素定位の数学的核心である。1 次元プロファイルの離散極値は整数画素の精度しか持たない。極値を局所座標 \(u=0\)、関数値を \(g_0\)、左右の隣接点 \(u=\mp 1\) の値を \(g_{-1}, g_{+1}\) とする。真の連続極値点は \(u=0\) にあるとは限らないが、3 点があれば放物線 \(g(u) = au^2 + bu + c\) を一意に定め、その頂点で真の極値を近似できる。3 つのサンプル点を代入すると、
\[ g(0) = c = g_0, \qquad g(\pm 1) = a \pm b + c = g_{\pm 1}, \]
2 式を足し引きすれば直ちに
\[ a = \frac{g_{+1} + g_{-1} - 2g_0}{2}, \qquad b = \frac{g_{+1} - g_{-1}}{2}. \]
放物線の頂点は導関数がゼロになる位置、すなわち \(u^\ast = -\,b/(2a)\) にある。\(a, b\) を代入すると、
\[ \delta = u^\ast = \frac{g_{-1} - g_{+1}}{2\,(g_{-1} - 2g_0 + g_{+1})}. \]
これがまさに チャプター 14 のエッジ定位プロセス第 4 ステップのサブ画素公式である。2 つの検証により信頼を深めることができる。第一に、\(g_{-1} = g_{+1}\)(左右対称)ならば \(\delta = 0\) となり、極値は整数画素上にあり、直感と一致する。第二に、\(g_0\) が厳密な離散最大値である限り、分母 \(g_{-1} - 2g_0 + g_{+1} < 0\) が常に成り立ち、\(|\delta| \le 1/2\) となる。頂点が隣接画素の中点を越えて逃げることはなく、公式は数値的に安全である。3 回のサンプリングと 1 回の除法で、定位精度を 1 画素スケールから 0.1 画素スケールに向上させることができる。これが「サブ画素はほぼ無料」の全コストである。
産業事例:測定を正しくする3つの小さなこと
ある精密構造部品メーカーのビジョンエンジニアが、事後振り返り会議で3つの「小さな数学」の教訓を総括した。第一に、初期の真円度検査プログラムは全画面の画素座標で直接円を当てはめていた。座標値は数千に達し、\(x^2+y^2\) 項を含む正規方程式の条件数は巨大になり、同一ワークを連続 10 回測定すると円の中心が 0.3 px もドリフトした。当てはめ前に重心を引き、解いた後に戻すだけで、ドリフトは即座に 0.02 px に低下した。第二に、エッジ点のクリーニングに「平均 ±3σ による外れ値除去」を使った際、σ は外れ値を含めた状態で計算されていた。外れ値がまず σ を膨らませ、その後、緩んだ閾値を集団で通過してしまった。MAD によるロバストな σ 推定に切り替えるか、除去後に反復的に再推定するようにして初めて、閾値が本当に機能するようになった。第三に、ある線幅測定工程の繰り返し精度が常に 0.1 px ほど目標を外れていた。照明と振動を調査したが成果はなく、最終的にプロファイルのサンプリングに最近傍補間が使われていたことが判明した。双一次補間に切り替えたところ、繰り返し精度は直ちに仕様を満たした。3 つの事例はいずれも高度なアルゴリズムを含まず、すべて本章の数ページの内容である。
2.5 まとめ
- 同次座標は「行列の乗算と平行移動」を1回の \(3\times 3\) 乗算に統一する。連鎖した変換列は事前乗算して1つの行列にできる。剛体(自由度 3)、相似(4)、アフィン(6)は、それぞれ長さ、形状、平行性を保つ、厳しいものから緩いものへの 2D 変換ファミリを構成する。
- 正規方程式は「目的関数の偏微分をゼロと置く」ことから導かれる。一般形は \(A^\top A\,\boldsymbol{\theta} = A^\top \mathbf{y}\) であり、重み付き版は各和に \(w_i\) を乗ずるだけでよい。垂直距離による直線当てはめの閉形式解は「重心を通り、方向は散布行列の主固有ベクトルを取る」である。
- 数値的安定性は測定精度の一部である。\(A^\top A\) は条件数を2乗するため、座標が大きい場合は必ず事前に中心化してから当てはめる。二乗ペナルティは外れ値の発言権を増幅し、ロバスト当てはめ(Huber、RANSAC)が チャプター 14 で引き継ぐ。
- ガウス分布と 3σ 法則は閾値設定の語彙である。中心極限定理により、センサーノイズがガウス分布に近い理由が説明される。ヒストグラムは分布の経験的推定であり、平均化によりノイズは \(\sigma/\sqrt{N}\) で収束する。平滑化、投影、マルチフレーム平均化はすべてこの同一の法則を共有する。
- 双一次補間は4つの隣接点を対角面積で重み付けする。3 点放物線補間は頂点オフセット \(\delta = (g_{-1}-g_{+1})/(2(g_{-1}-2g_0+g_{+1}))\) を与え、常に \(|\delta|\le 1/2\) である。本書のすべてのサブ画素公式の源流である。
確率、統計、ガウスモデルの系統的な論述は (Bishop 2006) に譲る。最小二乗法の正規方程式、条件数、数値的安定性は数値線形代数の古典的内容であり、権威ある参考書として (Golub と Van Loan 2013) を挙げる。ビジョンの文脈における幾何変換、線形代数、最適化のクイックリファレンスとしては (Szeliski 2022) の付録を参照されたい。本章の内容は Steger らの著書 (Steger, Ulrich, と Wiedemann 2018) でより完全に、かつ産業測定に近い形で展開されている。特に幾何変換と最小二乗当てはめおよびその不確かさ解析の部分は、発展的な読書物として適している。