
このQ&Aは役に立ちましたか?
3人が「このQ&Aが役に立った」と投票しています
回答(1)
1枚の2次元画像に3x3行列をかけるというのは、
ある点(x,y)の値を読んで、座標変換された別な点(x',y')に書き込むという処理を行なうことだと思います。
座標変換は行列にベクトルをかける形で次のように書かれます(崩れて見にくいですが)。
(x') (a b c)(x)
(y')=(d e f)(y)
(w ) (g h i)(1)
wを無視して実質はアフィン変換です。これをやろうとしてるのではないでしょうか。
つまり
x'=ax+by+c
y'=dx+ey+f
実際には、画像の座標は整数なのに、変換後の座標が実数になってしまうので、
逆変換で考えた上で線形補完したりします。
点(x',y')の値は逆変換した実数値座標の点(x,y)近傍の整数座標の4点に、
座標のずれに応じた重みをかけて平均化した値とするのがbilinear法と呼ばれています。
何も補完しないで一番近い点の値で代表させるのはNearest neighbor法と呼ばれています。
最初は補完なしで組んでみてはいかがでしょうか。
私はMATLABは使ったことがないので、具体的なプログラミングについては説明できませんが、
画像の中の1点の値を読む関数と、画像の中の1点に値を書き込む関数がわかれば、
あとは初等演算とループだけで組めるはずです。
投稿日時 - 2010-09-10 16:33:08
分かりやすいご説明ありがとうございます!やってみます!!
投稿日時 - 2010-09-10 17:40:20