アフィン変換

画像の拡大縮小、回転、平行移動などをまとめて3×3の行列を使って変換する事をアフィン変換と呼びます。

 

変換前の座標を(x, y)
変換後の座標を(x’,y’)

 

とすると、アフィン変換では

アフィン変換

のように実質的には2行3列の行列を使って変換します。

 

変換前の画像を以下のようにすると、

アフィン変換

各種変換は以下の通りとなります。

 

拡大縮小

X軸方向の拡大率をSx、Y軸方向の拡大率をSyとすると拡大縮小のアフィン変換は

 

アフィン変換

 

と表されます。

 

例)X軸方向に2倍

アフィン変換

アフィン変換

 

例)Y軸方向に2倍

アフィン変換

アフィン変換

 

例)X軸、Y軸方向に2倍

アフィン変換

アフィン変換

 

例)Y軸方向に-1倍

アフィン変換

アフィン変換

このように、ある軸(上記の例ではX軸)に対して反転する処理の事を鏡映と呼びます。

 

平行移動

X軸方向にTx、Y軸方向にTyだけ移動するアフィン変換は

 

アフィン変換

 

のように表されます。

 

アフィン変換

 

回転

原点を中心に反時計回りにθ°回転する時のアフィン変換は

 

アフィン変換

 

のように表されます。

 

アフィン変換

 

スキュー(せん断)

四角形の画像を平行四辺形に変形する処理をスキューまたはせん断といいます。
このアフィン変換は

 

アフィン変換

アフィン変換

 

アフィン変換

アフィン変換

 

注意点

アフィン変換では任意の3×3(2×3)の行列で表す事ができるので、任意形状に変換できそうにも思えるのですが、四角形が平行四辺形にまでは変形できるものの、台形には変形できないのでご注意願います。
この台形に変形できる処理は射影変換(ホモグラフィ)と呼びます。

 

アフィン変換

 

また、実際に画像データをアフィン変換にて変換する場合は、アフィン変換の行列の式の両辺に3×3の逆行列を掛け、変換前の座標(x, y)と変換後の座標(x’,y’)を逆にして、変換後の座標から変換前の座標を求めます。

 

アフィン変換

 

このようにして変換すると、変換前の座標は1で割り切れない座標になる場合があるので、biLinear、biCubicなどの補間処理をして、座標と座標の間の輝度値を求めます。

 

アフィン変換は今回の説明のように、画像を移動、変形させるための手法として説明されますが、もう少し汎用的に座標変換として捉えると応用範囲が広がります。

例えば、データのグラフを表示する時に、横方向、縦方向に拡大/縮小した時に、表示するデータの範囲を求める場合などに応用すると、少し便利です。

 

画像処理アルゴリズムへ戻る

 



web拍手 by FC2

関連記事

スポンサーリンク

カテゴリー: 画像処理, 画像処理アルゴリズム  タグ: , , . Bookmark the permalink.

アフィン変換 への1件のフィードバック

  1. ピンバック: 【C#】グローバル変換を使ったアフィン変換 | イメージングソリューション

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です