matlab中读入灰度图象,然后进行傅立叶变换,傅立叶变换之后是一个矩阵,这个矩阵想把它用极坐标表示出来,请问如何在matlab中操作?读入图象1和2,2是1旋转之后的图象,分别对它们做傅立叶变换,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 15:03:10
matlab中读入灰度图象,然后进行傅立叶变换,傅立叶变换之后是一个矩阵,这个矩阵想把它用极坐标表示出来,请问如何在matlab中操作?读入图象1和2,2是1旋转之后的图象,分别对它们做傅立叶变换,
matlab中读入灰度图象,然后进行傅立叶变换,傅立叶变换之后是一个矩阵,这个矩阵想把它用极坐标表示出来,请问如何在matlab中操作?
读入图象1和2,2是1旋转之后的图象,分别对它们做傅立叶变换,然后把它们转换到极坐标下,利用"直角坐标中的旋转等于极坐标下的平移"性质,求出旋转角.
主要意思是这样的,下面是我写的程序,
I=imread('11.jpg');
O=rgb2gray(I);
B=imrotate(O,80,'bicubic'); %%可选的值为nearest(最近邻插值)、bilinear(双线性插值)、%%bicubic(双三次插值).
[m,n]=size(O);
B=imresize(B,[m,n],'bicubic');
f1=fft2(double(O)); %%傅立叶变换
f2=fft2(double(B));
%转换为极坐标
[th1,r1]=cart2pol(real(f1),imag(f1));
[th2,r2]=cart2pol(real(f2),imag(f2));
subplot(1,2,1),p1=polar(th1,r1);
subplot(1,2,2),p2=polar(th2,r2);
p=p1.*conj(p2);
q=p./abs(p)
f_ifft=ifft2(q); %%傅立叶反变换求出冲击函数
figure,polar(q);
figure,polar(f_ifft);
matlab中读入灰度图象,然后进行傅立叶变换,傅立叶变换之后是一个矩阵,这个矩阵想把它用极坐标表示出来,请问如何在matlab中操作?读入图象1和2,2是1旋转之后的图象,分别对它们做傅立叶变换,
傅立叶变换以后得出的矩阵是复矩阵,虚部只是说明了相位.所以建议你只显示它的实部就够了.
x=imread('greyleveal.bmp');
figure;
imshow(x);
X=abs(fftshift(fft2(x)));
figure;
imshow(X);
temp1=min(min(X))
X=X-temp1;
X=X./(max(max(X))/256);
figure;
imshow(X);
如果想知道相位,就把上面的abs换成angle
---------------------------
I=imread('11.jpg');
O=rgb2gray(I);
f1=abs(fftshift(fft2(O)));
temp1=min(min(f1));
f1=f1-temp1;
f1=f1./(max(max(f1))/256);
figure;
imshow(f1);
输出这个图像已经够了.
作了fft变换,得出的是复矩阵.
[1+2i 3+4i
5+6i 7+8i]
可以把"单独一个点"显示在极坐标上.或者同时所有点显示在一个极坐标上(那样只能是混乱的点,谁是谁你根本不知道).我觉得这样一点意义都没有.
复矩阵其实只提供了两个信息:一是幅直,二是相位.我给的程序已经可以显示幅值了.一般做到这个程度就够了.如果你要显示相位,就把abs改称angle.