1

画像 (numpy-array として保存) があり、それを変換マトリックスで変換したいと考えています。変換マトリックスは次のとおりです。

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

私は `scipy.ndimage.interpolation.

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

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

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

それは正常に動作しますが、回転させて翻訳したい場合、翻訳するだけでは、結果はかなり奇妙に見えます。そして、私は理由を知りません:S

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

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

4

1 に答える 1

3

ndimage は実際にはカラー画像を扱っていないと思います。配列の最後の (3,) 次元を 3 番目の空間次元として扱います。

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

shift上記の Travis Vaught のコメントの方法にも同じことが当てはまります。正しい構文はndimage.shift(img, (10.0, 10.0, 0.0), mode="wrap")--- もちろん、変なカラー シフトを実行したい場合を除きます。

原則として、上記のように色軸に沿って画像をシフトしないように ndimage に指示できますが、各色要素を個別に操作する方が少し高速です。

于 2012-02-14T21:31:20.050 に答える