私はAPIによってscipy.ndimage.interpolation.affine_transform
に惑わされています。そして、私が唯一の人ではないと判断したのはthis issueです。私は実際には画像を回転させるよりももっと興味深いことをしたいと思っていますが、ローテーションはまず初心者のために行います。affine_transform
(そして、はい、私はscipy.ndimage.interpolation.rotate
をよく知っていますが、どのように運転するかを考えてaffine_transform
が私に興味を持っています)。私は、OpenGLのようなシステムではこの種のものをしたい場合はscipy.ndimage.interpolation.affine_transformを使用してイメージを中心に回転させるにはどうすればよいですか?
が、私は(p-c)R+c
を形質転換された中央c
についての2x2の回転行列R
を適用する変換を計算し、そのためのポイントp
の思考の観点から考えます= pR+c-cR
であり、変換の変換成分として使用される用語を与える。上記の問題によれば、しかし、scipyのダウンロードのaffine_transform
ない「オフセット最初」私たちは、実際に計算する必要があるオフセットがs
、このような再配置のビットとR'
がR
の逆であるs=(c-cR)R'
を与える(p-c)R+c=(p+s)R
。
私はipythonのノートブックにこれを差し込む場合(pylabモードは、多分次のコードは、いくつかの追加輸入を必要とします):
img=scipy.misc.lena()
#imshow(img,cmap=cm.gray);show()
centre=0.5*array(img.shape)
a=15.0*pi/180.0
rot=array([[cos(a),sin(a)],[-sin(a),cos(a)]])
offset=(centre-centre.dot(rot)).dot(linalg.inv(rot))
rotimg=scipy.ndimage.interpolation.affine_transform(
img,rot,order=2,offset=offset,cval=0.0,output=float32
)
imshow(rotimg,cmap=cm.gray);show()
は、私は残念ながら周りに回転されていない
を取得センター。
私はここで欠けているトリックは何ですか?
汚れたテスト私はあなたのオフセットの負の値を取ることが中心について回転しているようだと気付いた。 – treddy
ああ!はい、優秀、ここで確認しました。 scipyのシステムのモデルは '(p-s)R'でなければなりません。それを答えに入れ、私はそれを受け入れるだろう。 – timday