Q
アフィン変換で移動する値を0とすると画像サイズが変更されます。元画像と変換後の画像サイズが一致しません。どうしてでしょうか?
A
オペレータaffine_trans_imageの補完方法(Interpolation)の設定には以下の3つの種類があります。
'none'
補間なしの場合、グレイ値は、最も近いピクセルのグレイ値から決定されます(この場合品質は低いが高速です)
'constant'
定数の場合、隣接するピクセル間に対して等しい重みの補間が用いられます(これは中間の品質で中間の速度です)
'weighted'
重み付けされた場合、隣接するピクセル間で、ガウス補間が使用されます(品質は最高ですが、処理に最も多くの時間を必要とします)。
'bilinear'
双線形補間。グレイ値は、双線形補間を使って、4 つ の最近傍ピクセルから決定されます。
詳細はヘルプを参照してください。このオペレータのうち’none’ではサイズが変更されません。その他の’constant’,’weighted’ではサイズが変更になります。アフィン変換後のグレイ値の決定は
(floor(x),floor(y)), (floor(x)-1,floor(y)), (floor(x),floor(y)-1), (floor(x)-1,floor(y)-1).
の4つの値から決定されます。もし4つの値が存在しない場合、つまり画像の端部分でのことを考えると、唯一'none'の設定だけが一番近い値が採用されるのでグレイ値の計算が可能です。'constant'と'weighted'の2つは上記の4つの値から計算される為、画像の端などで上記4つのグレイ値が存在しない部分では、計算ができないためにアフィン変換後の値が存在しなくなります。
注意:
画像のサイズには2つの意味があります。画像のピクセル数自体(画像の大きさ)は変化しません。domainで生成した有効な画像サイズ(画像ピクセル)が変更されます。有効でないピクセルとはピクセルが空の状態です
関連オペレーター
hom_mat2d_identity
hom_mat2d_translate
affine_trans_image
ファイル
サンプルプログラムはtranslate.zipをダウンロードしてください。
translate.dev
アフィン変換で画像サイズ変更を確認するサンプルプログラム
translate.txt
アフィン変換で画像サイズ変更を確認するサンプルプログラム(テキスト形式)