MATLAB вращает изображение в частотной области

Я хочу повернуть изображение в частотной области. Однако в изображении есть что-то вроде алиасинга. В чем проблема и как ее решить? Предположим, что у меня есть только результат БПФ изображения и я знаю угол поворота в области изображения.

Мой код и примеры изображений приведены ниже:

close all
f=imread('cameraman.tif');
theta=pi/3;
T=[cos(theta) sin(theta) 0;
  -sin(theta) cos(theta) 0
      0          0       1];

t2 = maketform('affine',T);
g2 = imtransform(f,t2);
figure,imshow(f),title('Original image') % original image
figure,imshow(g2),title('Rotate image')  % rotated image

f_shift = fftshift(f);
f_fft   = fftshift(fftn(f_shift));
g2 = imtransform(f_fft,t2);   % rotation frequency domain
figure,imshow(abs(g2),[]),imcontrast % rotation in frequency domain
image_rotate = ifftshift(ifftn(g2));
figure,imshow(abs(image_rotate),[])  % result in image domain

введите здесь описание изображения


person toygan kılıç    schedule 28.03.2016    source источник
comment
@rayryeng Я думаю, что это не дубликат вопроса, который вы показываете. В моем вопросе мы предполагаем, что у нас есть только результат БПФ изображения. В моей реальной проблеме я не вижу самого изображения.   -  person toygan kılıç    schedule 28.03.2016
comment
@rayryeng OP запрашивает произвольный поворот, а не только ± 90¸ ± 180. Я думаю, что ответ НИКАК, но мне было бы любопытно узнать, может ли кто-нибудь найти решение этой проблемы.   -  person gboffi    schedule 28.03.2016
comment
Почему вы думаете, что это невозможно?   -  person toygan kılıç    schedule 28.03.2016
comment
Потому что, транспонируя/смещая/дополняя коэффициенты DCT, вы можете получить только поворот на 90 и т. д., и я не могу придумать свертки в пространственной области, равнозначные повороту изображения. Но, как я уже сказал, я был бы рад ошибиться.   -  person gboffi    schedule 28.03.2016
comment
stackoverflow.com/questions/23876034/ это ссылка может задача, которую я хочу. Однако он использует свойство сдвига преобразования Фурье. Интересно, можно ли выполнить эту задачу с помощью вращения.   -  person toygan kılıç    schedule 28.03.2016
comment
@toygankılıç Это не так. гболфи правильно. Я не видел, чтобы кто-нибудь пытался повернуть изображение в частотной области... почему бы вам просто не повернуть его в пространственной области? Я выбрал это как дубликат, чтобы вы могли начать с этого.   -  person rayryeng    schedule 28.03.2016
comment
@rayryeng Потому что у меня есть информация о вращении, переводе. В дополнение к этому у меня есть данные, взятые с МРТ, и они в частотной области. Вы говорите, что это невозможно?   -  person toygan kılıç    schedule 28.03.2016
comment
Лично я никогда не видел вращения в частотной области. Эквивалент пространственной области выполняется довольно быстро и легко. Почему бы вам не преобразовать обратно в частотную область и не повернуть? Если кто-то может показать мне ошибку моего пути, я был бы рад увидеть, как это делается.   -  person rayryeng    schedule 29.03.2016
comment
Причина выполнения этой задачи в частотной области заключается в том, что анализ я буду проводить в частотной области. Все данные должны быть зарегистрированы в частотной области. Я думаю, что мог бы сделать это, используя свойство сдвига преобразования Фурье, как я дал ссылку.   -  person toygan kılıç    schedule 29.03.2016
comment
@rayryeng stackoverflow.com/questions/25827916/ Как вы решили эту ссылку. Вместо использования x0 и y0 я буду использовать коэффициенты матрицы вращения.   -  person toygan kılıç    schedule 29.03.2016
comment
Это неправильный подход к тому, о чем вы спрашиваете. Это просто смещение изображения с помощью известных правил. Изменение для решения параметров матрицы вращения даст вам неправильные результаты.   -  person rayryeng    schedule 29.03.2016
comment
Почему этот подход не работает?   -  person toygan kılıç    schedule 29.03.2016
comment
Он только сдвигает изображение по горизонтали или вертикали. Он не поворачивает изображение.   -  person rayryeng    schedule 29.03.2016