0

我想使用如下代码进行图像旋转,但我无法得到答案,是否有人可以在频域中进行图像旋转。(如果您知道使用 imrotate 在频域中进行旋转,您可以编写代码。)我想在Matlab中编写代码在频域中进行图像旋转。首先,我必须将笛卡尔坐标更改为极坐标,而不是采用 fft,在 fft 进行旋转之后,然后再次采用逆 fft 以获得空间域中的旋转图像。谁能帮帮我,谢谢。下面我写了一个代码,但我无法得到一个旋转的图像。谢谢。

clear;
im1 = imread('cameraman.tif');imshow(im1);  
ft=fft2(im1);
ft=fftshift(ft);
[m,n]=size(ft);
thet = pi/2;
mm = m*sqrt(2);
nn = n*sqrt(2);
for t=1:mm
   for s=1:nn
      i = uint16((t-mm/2)*cos(thet)+(s-nn/2)*sin(thet)+m/2);
      j = uint16(-(t-mm/2)*sin(thet)+(s-nn/2)*cos(thet)+n/2);
      if i>0 && j>0 && i<=m && j<=n           
         im2(t,s)=ft(i,j);
      end
   end
end
Y=fftshift(im2);
y=ifft2(Y);
figure;
imshow(y);
4

0 回答 0