til

CV (computer vision)

基礎知識

デジタル画像の撮影

歪曲収差 (distortion) とは、撮影した画像が樽型または糸巻き型に歪むこと。被写体から出た光がレンズの主点を通るとき、出射角と入射角が等しくならないことから生じる。

広角レンズでは、景色の端側の光ほど出射角の狭まり方が大きいために、端が圧縮されたようになる。これを補正せず効果として用いているのが魚眼レンズである。

画角とは、被写体のアングルのことではない。デジタルカメラはレンズを通った光を素子で捉えるが、素子が大きいほど広い範囲を写真に収められる。これはプロジェクターとスクリーンを思い浮かべると分かりやすい。素子の広さを、焦点から素子の端までの角度を用いて表し、これを画角と呼ぶ。

画像処理

トーンカーブ

画素の濃淡を関数で変換することで、画像の色合いを調整できる。関数を階調変換関数といい、グラフで表したものをトーンカーブと呼ぶ。トーンカーブの形状による特徴は次の通り。

平滑化

ぼけた写真のように画像を滑らかにすること。画素に対して、周辺の画素との濃淡の平均を取って更新する。重み付き平均を用いたり、さらに重みに正規分布(ガウス分布)を用いることもある。後者をガウシアンフィルタと呼ぶ。

エッジ検出

周波数領域におけるフィルタリング

画像の描き込み度合いを定量的に測ることができれば、平滑化とエッジ鮮鋭化をパラメータの違いとして表現できる。そこで、画像を縞模様の組み合わせとして表現することで、ノイズや描き込みが多い箇所が波の密集した箇所として表現されるはずである。その考えに基づいて画像をフーリエ変換することを、空間領域の画像を周波数領域で表現し直すという。

フーリエ変換した画像には実数部と虚数部があるため、絶対値を取ることで可視化がしやすくなり、これを振幅スペクトル (amplitude spectrum)と呼ぶ。

画像をフーリエ変換することで、例えば模様の特徴を数字で語ることができ、空間周波数解析と呼ばれる。[^yama_2017] [^yama_2017]: 画像処理工学

また、低周波数成分を残して高周波数成分を除去することをローパスフィルタと呼び、画像が滑らかになる。逆に高周波数成分を残すフィルタリングをハイパスフィルタと呼び、画像のエッジを検出できる。高周波数成分を増幅させるフィルタを高域強調フィルタと呼び、エッジを強調することができる。

画像の復元と生成

幾何学的変換

画像の幾何学変換について、次の通り整理する。さらに詳しいベン図はディジタル画像処理を参照。

変換の名前 変換行列の形状 可能な操作
線形変換 2x2 拡大・縮小・回転・鏡映・せん断
アフィン変換 3x3 (3行目は[0,0,1]) 平行移動
射影変換 3x3 (3行目も任意) 台形補正

画像の座標$x,y$を列ベクトルと見なしたとき、2x2の行列と列ベクトルとの内積によって表される変換を線形変換という。拡大・縮小・回転・鏡映・せん断が含まれる。Desmosによって例示した。[^desmos_linear] [^desmos_linear]: 線形変換(拡大・縮小・鏡映・スキュー)🔐

2x2の行列と$x,y$の列ベクトルの積では、垂直・水平移動を表現できない。これは定数項が無いためである。そこで$x,y$に定数項$w$を加えるとともに、行列を3x3に拡張する。このような座標を同次座標 (homogeneous coordinates)という。同次座標系の変換、特に定数項が変化しないものをアフィン変換と呼ぶ。Desmosによって例示した。[^desmos_affine] [^desmos_affine]: アフィン変換🔐

同次座標系における制約のな変換を射影変換(projective transformation)と呼ぶ。射影変換では任意の四角形を、台形を含む別の任意の四角形に変形することができる。

RANSAC

パノラマ撮影のように、複数の画層をつなぎ合わせて1枚の画像を作ることをイメージモザイキングという。イメージモザイキングでは、画像を変形させる必要がある。そこで射影変換を利用したくなるが、同次座標から同次座標への変換を除いて8つの係数がある。これを特定するには、4組の点があれば良い。しかしながら、外れ値も多い。そこで、ランダムに4点を選び、それによって射影変換した結果、他の特徴点がどれだけ正しく変換されたかをチェックする。新たにランダムに4点を選んでこの手順を繰り返し、最も正しく特徴点を変換できた点を用いた射影変換のパラメータを選ぶ。この手法をRANSACという。

画像解析

2値画像処理

ペイントソフトによるバケツ塗りを考える。連続する同じ色の領域がバケツ塗りの対象となる。連結について、上下左右を判定対象とするものを4連結といい、斜めを加えたものを8連結と呼ぶ。連結成分を洗い出すことを輪郭追跡と呼ぶ。ラスタスキャンで色の境目を見つけてから、迷路の左手法のイメージで輪郭を辿る手法が知られており、結果は輪郭の始点と軌跡の組み合わせになる。

輪郭追跡により2値画像の背景と穴が分かると、ノイズ除去に活かせる。輪郭を一回り小さくすることを収縮、大きくすることを膨張と呼ぶとき、収縮→膨張、膨張→収縮のいずれも、小さな領域や穴を不可逆に消す。これをクロージング/オープニングと呼ぶ。

領域処理

パターン検出

特徴点検出

イメージモザイキングでは特徴点を検出する必要があるが、拡大縮小(スケール)・回転・明るさの変化に対して頑健であると嬉しい。このような特徴量を(スケールや回転などの変化に対して)不変特徴量という。イメージモザイキングのほか、交通道路標識のようなパターンの機械学習を用いない認識にも用いられる。

用いられる特徴点としてはコーナーがあり、その検出のための手法としてハリスのコーナー検出がある。[^opencv_feature2d] [^opencv_feature2d]: 特徴量検出と特徴量記述

ハフ変換

画像から直線や円を検出する手法としてハフ変換(Hough transform)がある。画像中にあり得る全ての直線をスキャンし、線分上に特徴点を閾値以上に含む直線を検出すればよい。

画像中の直線は、原点からの傾きと切片で表される。そこで、傾きと切片のセットをキーとする辞書を作り、画像中のピクセル毎に、そのピクセルを通るすべての直線の値をインクリメントする。これは直交座標系から傾きと切片の座標系への写像と見なすことができる。このような変換をハフ変換と言う。値が閾値以上の傾きと切片が、元の画像で検出素べき直線を表す。

直交座標系と傾きと切片の座標系への変換について、ハフ変換も参照。

パターン認識

画像処理におけるパターン認識とは、分類タスクを指す。距離計算を用いるアプローチと機械学習によるアプローチがある。

画像処理では、色や形など様々な特徴を扱う。よって単位が統一されておらず、単にユークリッド距離を用いるのは不適切である。そこで、偏差ではなくZスコアを用いたものを標準化ユークリッド距離と呼ぶ。しかし、例えばRGB値とエッジをまとめて扱う場合、画像が明るいなどでRGB値に相関があれば、色の情報を必要以上に反映する恐れがある。そこで共分散を組み込んだものがマハラノビス距離である。

k平均法はクラスタリングの手法である。クラスターの中心をセントロイド (centroid)といい、セントロイドの初期値を種子点ということがある。実践的には、多めの種子点を選んで分類し、後処理として近いクラスを併合する。

主成分分析は次元削減の手法である。多次元のベクトルに行列を掛けて次元を削減する。掛ける行列を主成分ベクトル行列、得たベクトルを主成分得点と呼ぶ。

3次元空間とシーン

移動体検出

例えば防犯カメラで動きのあった瞬間だけ映像を残すなど、動画中の移動体を検出したい場合がある。予め基となる状態が分かっている場合は、それを背景として画像の差分を取ることで検出できる。これを背景差分法と呼ぶ。何が背景か分かっていない場合でも、目的のフレームとそれぞれ複数のフレームとの差分を取得し、それらの差分の共通領域を取り出すことで移動体を検出できる。これをフレーム間差分法と呼ぶ。最後に、映像を通して写っている割合が大きいものを背景、そうでないものを移動体に分類する方法を統計的背景差分法と呼ぶ。

オプティカルフロー

フレーム間の差分の有無だけでなく、移動の方向をベクトルで示すことをオプティカルフローと呼ぶ。連続する複数のフレームで移動体を検出するのが前提となる。フレーム間で対応し合う移動体の適切な箇所を検出し、その移動のベクトルを用いる方法をブロックマッチング法と呼ぶ。

画像の符号化

画像の符号化には、次の4つの分類がある。

分類 特徴 符号化方式 代表的なファイル形式
2値画像の符号化 画素値が0,1である特殊性を利用 - ラングレス符号
- チェイン符号
 
エントロピー符号化 出現確率を利用する - ハフマン符号化
- 算術符号化
JPEG1
予測符号化 画素値の予想値を利用する - DPCM符号化  
変換符号化 他の空間に変換する - 離散コサイン変換
- 離散ウェーブレット変換
JPEG

References

ディジタル画像処理

  1. 離散コサイン変換の変換係数を量子化後にハフマン符号化している。JPEGのハフマン符号 (1) DC成分も参照。