我嘗試使用下面的代碼手動旋轉圖像。旋轉圖像的手動MATLAB
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'
,並存儲到`newImg的m1(x,y)
的值(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);
我不知道我做錯了。
這會將所有像素落在圖像幀之外的像素位於新圖像的邊緣。我認爲這看起來很有趣,我無法想象那是預期的結果。 – Junuxx
哦,你說得對。在這種情況下,我認爲他必須去egdes檢測:http://homepages.inf.ed.ac.uk/rbf/HIPR2/rotate.htm – lucasg