次のコードを使用して画像を手動で回転させようとしています。
clc;
m1 = imread('owl','pgm'); % a simple gray scale image of order 260 X 200
newImg = zeros(500,500);
newImg = int16(newImg);
rotationMatrix45 = [cos((pi/4)) -sin((pi/4)); sin((pi/4)) cos((pi/4))];
for x = 1:size(m1,1)
for y = 1:size(m1,2)
point =[x;y] ;
product = rotationMatrix45 * point;
product = int16(product);
newx =product(1,1);
newy=product(2,1);
newImg(newx,newy) = m1(x,y);
end
end
imshow(newImg);
単純に、画像のすべてのピクセルを反復処理しm1
、m1(x、y)に回転行列を掛けて、を取得x',y'
し、inの値を `newImg(x'、y')'に格納しますが、m1(x,y)
次のエラーが発生します。
??? Attempted to access newImg(0,1); index must be a positive integer or logical.
Error in ==> at 18
newImg(newx,newy) = m1(x,y);
何が間違っているのかわかりません。