2012-02-12 7 views
1

私は画像を持っています(numpy配列として保存されています)、私はそれを変換行列で変換したいと思います。Python affine_transformは翻訳されませんか?

[[ 0.99729046 -0.07356456 22.57990962] 
[ 0.07356456 0.99729046 -12.99879896] 
[ 0.   0.   1.  ]] 

私はscipy.ndimage.interpolation `経由でこれをやってみたかった: はtransformationatrixがあると言うことができます。

image = affine_transform(image, matrix, mode="reflect")

私はちょうどそれを回転させる場合:

[[ 0.99729046 -0.07356456 0.] 
[ 0.07356456 0.99729046 0.] 
[ 0.   0.   1.]] 

それが正常に動作しますが、私はそれを回転させて、それを翻訳し、それを翻訳のしたい場合、その結果は非常に奇妙なlookes。そして私はなぜ知らない:S

元の画像: http://img408.imageshack.us/img408/9373/eiffel.jpg

変換画像: http://img861.imageshack.us/img861/8971/blatm.jpg

+0

これは私のバグのようです。シンプルな 'ndimage.shift(img、10.0、mode =" wrap ")'と同じ変わった色の問題があります。 –

答えて

3

を私はndimageが実際にカラー画像を処理しないと思います。これは、配列の最後の(3、)次元を第3の空間次元として扱います。

与えられた行列は、実際には回転行列であり、ではなく、アフィン行列です。ドキュメントはこれについて明確ではないようです。シフトベクトルをoffsetパラメータで渡すことになっています。シフトベクトルはまた、第3の要素として「カラーシフト」を含む。

上記のTravis Vaughtのコメントのshiftの方法にも同じことが当てはまります。正しい構文はndimage.shift(img, (10.0, 10.0, 0.0), mode="wrap")です。面白い色の移動をしない限り、もちろんです。

原則として、上記のようにイメージをカラー軸に沿ってシフトしないようにndimageに指示できますが、各カラー要素で個別に操作するのは少し速くする必要があります。

関連する問題