アフィン変換 (G検定)

アフィン変換

1. 定義と概要

アフィン変換とは、回転・拡大縮小・せん断といった図形を変形させる線形変換(原点を基準に、図形を一定の規則で変形させる操作)に、平行移動を組み合わせた幾何学的な変換のことです。これらすべてを1つの変換行列(どんな幾何変換を行うかを数値の並びで表したもの)でまとめて表せる点が特徴です。画像処理でいえば、写っている物体の向き・大きさ・位置をまとめて変えるときに使われる手法にあたります。

代表的な性質は、変換後も直線は直線のまま、平行な線は平行なまま保たれることです。せん断を加えると角度自体は変わりますが、直線どうしの平行関係そのものは崩れません。

画像処理では、カメラの角度や距離の違いによって、同じ被写体でも見え方が変わってしまう場面は珍しくないものです。従来はこうしたずれに対して、回転補正や拡大縮小といった処理を個別に組み合わせて対応する必要がありました。処理の種類が増えるほど、手順も管理も複雑になるわけです。

アフィン変換を使うと、平行移動・回転・拡大縮小・せん断といった複数の幾何変換を1つの行列にまとめて一度に適用できます。この扱いやすさから、画像の向きや位置をそろえる前処理と、学習データを人工的に水増しするデータ拡張の両方で使われる、画像処理の基礎技術として位置づけられています。

2. 試験対策ポイント

まず整理したいのは、アフィン変換の骨格です。回転・拡大縮小・せん断といった線形変換に平行移動を加えた幾何変換であり、これらをまとめて1つの変換行列で表せる点が土台になります。あわせて、変換後も直線は直線のまま、平行な線は平行なまま保たれる性質は、アフィン変換を特徴づける論点になります。

回転や拡大縮小だけでは平行移動を表せず、平行移動だけでは図形の形そのものは変えられません。両方をまとめて扱える点にアフィン変換の意義があります。

平行移動・回転・拡大縮小・せん断(スキュー)の4つの基本要素は、それぞれ図形をどう動かす・変形させる操作かをセットで押さえておきたいところです。

基本要素 どのような操作か
平行移動 図形の位置をずらす
回転 図形を一定の角度だけ回す
拡大縮小 図形の大きさを変える
せん断(スキュー) 図形を斜め方向に引き伸ばすように歪ませる

この4つの組み合わせ方こそが、同じ変換行列でも表現できる変化のパターンを左右する要素です。名称と操作の対応は取り違えやすい部分でもあるため、4つをひとまとまりで整理しておきたいところです。

実装面では、OpenCV(画像処理でよく使われる代表的なプログラミングライブラリ)に、回転の変換行列を作る関数「getRotationMatrix2D」と、それを画像に適用する関数「warpAffine」が用意されています。これらを通じて、アフィン変換行列を作成し、画像に適用する処理を行えます。

用途としては、撮影角度のずれを補正する前処理としても、回転や平行移動によって学習データを水増しするデータ拡張としても使われる、二面性を理解するうえでの中心的な論点です。

3. 関連概念との比較・相違点

データ拡張との関係では、アフィン変換はデータ拡張を実現する具体的な操作の1つに位置づけられます。回転・平行移動・拡大縮小・せん断で画像を水増しする役割を担う一方、撮影角度のずれを補正する前処理としても使われる二面性を持つ点が、アフィン変換とデータ拡張という大枠の言葉との違いです。

データ拡張はもともと手段を問わない広い概念で、アフィン変換はその中の具体的な操作の1つです。大枠の考え方と、その中身にあたる具体的な操作という関係で捉えると混同しにくくなります。

画素の値を書き換える前処理との最大の違いは、変える対象が画素の「値」か「位置」かという点にあります。代表的な前処理を、この軸で並べると次のように整理できます。

前処理 変える対象 何をする処理か
グレースケール化 画素の値 カラー画像を明るさだけの白黒画像に変換する
平滑化 画素の値 周囲の画素の値でならしてノイズを減らす
ヒストグラム平坦化 画素の値 明るさの偏りをならしてコントラストを高める
アフィン変換 画素の位置 幾何学的に移動・変形させる

輝度や色、明るさの分布といった画素の値を変える手法に対し、アフィン変換は画素の位置を幾何学的に移動・変形させる前処理にあたります。同じ「前処理」の括りに入っていても、何を変えているかで役割はまったく異なる点が特徴です。

「Cutout」「Random Erasing」「Mixup」「CutMix」といったデータ拡張手法との最大の違いも、同じ軸で説明できます。これらは画像の一部を隠したり混ぜたりして画素の値を書き換える手法であるのに対し、アフィン変換は画素の位置を移すデータ拡張手法にあたる点が違います。位置を変えるか値を変えるかが、似た名前の手法どうしを取り違えないための軸です。

4. ビジネス・実務での活用シナリオ

製造業の外観検査では、カメラの設置角度や搬送位置のばらつきによって傾いて撮影された製品画像を、アフィン変換で正面向きにそろえてから検査モデルに入力する運用が見られます。向きをそろえたうえで判定させることで、欠陥検出の精度を安定させる効果が期待できます。撮影条件が現場ごとにばらつきやすい外観検査では、こうした前処理の有無が判定結果を左右する要因です。

医療画像の分野では、撮影のたびに向きや大きさが微妙に異なるMRI・X線画像を、回転・平行移動でレジストレーション(位置合わせ。撮影条件の違う複数の画像の向きや大きさをそろえる処理)する場面があります。向きや大きさをそろえることで、経過観察や複数画像を比較する際の精度が高まります。同じ患部を時期の異なる画像で並べて確認する場面では、位置合わせの正確さが読影を支える土台です。

AI開発全般では、少数の学習画像に回転・平行移動・拡大縮小・せん断を加えたバリエーションを人工的に増やすデータ拡張として、アフィン変換が使われます。限られたデータからでも、過学習(モデルが学習データだけに過剰に適合してしまい、新しいデータではうまく機能しなくなること)を抑えたモデルを構築する土台になります。画像を新たに収集し直すコストをかけずにバリエーションを増やせる点も、実務で選ばれる理由の1つです。

5. 要点まとめ

  • アフィン変換は、平行移動・回転・拡大縮小・せん断の4つの幾何変換を1つの行列でまとめて表す手法です。
  • 変換後も直線は直線のまま、平行な線は平行なまま保たれる性質が特徴で、OpenCVの「getRotationMatrix2D」「warpAffine」などで実装されます。
  • 画像の向きや位置をそろえる前処理としても、回転や平行移動で学習データを水増しするデータ拡張としても使われる、用途の二面性を持ちます。

6. 確認問題

問1アフィン変換は、平行移動・回転・拡大縮小・せん断といった幾何学的な変換を1つの行列でまとめて表すことができる。

解答・解説をみる

○ 正しい

アフィン変換は、線形変換(回転・拡大縮小・せん断)に平行移動を組み合わせ、これらを1つの変換行列で表せる点が定義の骨格です。変換後も直線や平行関係が保たれるという性質は、この定義と対になる特徴にあたります。

問2アフィン変換を行うと、変換前に平行だった2本の直線は、変換後には平行ではなくなる。

解答・解説をみる

× 誤り

正しくは、アフィン変換の前後で直線は直線のまま、平行な線は平行なまま保たれます。せん断を加えると角度自体は変わりますが、平行関係そのものは崩れません。

問3アフィン変換は、撮影角度のずれを補正する前処理としてだけでなく、画像を回転・平行移動させて学習データを水増しするデータ拡張としても使われる。

解答・解説をみる

○ 正しい

アフィン変換は、前処理とデータ拡張の両方で使われる用途の二面性を持つ手法です。撮影条件のばらつきを補正する場面と、学習データを人工的に増やす場面の両方で登場します。