任意の点を中心に画像を回転するように依頼されました。彼らが提供したフレームワークは matlab にあったため、MakeTransformMat
回転角度と回転したいポイントを受け取る関数を埋める必要がありました。
この回転を行うクラスで見たように、最初にポイントを原点に移動し、次に回転し、最後に元に戻します。
フレームワークは、変換マトリックスを返すように要求します。翻訳-回転-翻訳行列の乗算としてその行列を作成するのは正しいですか? そうでなければ、私は何を忘れていますか?
function TransformMat = MakeTransformMat(theta,center_y,center_x)
%Translate image to origin
trans2orig = [1 0 -center_x;
0 1 -center_y;
0 0 1];
%Rotate image theta degrees
rotation = [cos(theta) -sin(theta) 0;
sin(theta) cos(theta) 0;
0 0 1];
%Translate back to point
trans2pos = [1 0 center_x;
0 1 center_y;
0 0 1];
TransformMat = trans2orig * rotation * trans2pos;
end