source = imread('Rect.bmp'); %файл с квадратным изображением
N = 64; %размер изображения
u1 = 1:N;
v1 = 1:N;
[u v] = meshgrid(1:N);
M = ones(N, N);
M(u1,v1) = (-1).^(u + v);
X = (double(source(:,:,1)) + double(source(:,:,2)) + double(source(:,:,3))) / (3 * 255);
Y = fft2(X);
mov = avifile('quoter_rotation068.avi'); %avi-файл для записи видео-ролика
for w = 1:2:180
Y1 = M .* Y;
Y2 = fftshift(Y1);
Y3 = imrotate(Y2, w,'bicubic', 'crop');
Y4 = fftshift(Y3);
Y5 = M .* Y4;
X3 = abs(ifft2(Y5));
X2 = imrotate(X, w,'bicubic', 'crop');
subplot(2, 3, 1); imshow(10 * X, colormap(jet));
subplot(2, 3, 2); imshow(10 * X2, colormap(jet));
subplot(2, 3, 3); imshow(10 * real(X3), colormap(jet));
subplot(2, 3, 4); imshow(10 * log(abs(fftshift(Y))), colormap(jet));
subplot(2, 3, 5); imshow(10 * log(abs(fftshift(fft2(X2)))), colormap(jet));
subplot(2, 3, 6); imshow(10 * log(abs(fftshift(Y5))), colormap(jet));
mov = addframe(mov,getframe(fig));
end;
mov = close(mov);