请问这么求图象的频谱对吗?
我想请问一下这么求图象的频谱对吗?I=imread('CIMG1217.JPG');
图象是一个三维图象
I=rgb2gray(I);
I=fftshift(fft2(I));
I=double(I);
F=fft2(I);
u=1:1:800; 该图象是800*197大小的 但为什么=size(I);u=1:1:M;v=1:1:N;替代这两行u=1:1:800;v=1:1:197;就没有频谱了呢?
v=1:1:197;
subplot(122);surf(u,v,F);
shading interp
谢谢大家帮我看看了 把surf(u,v,F);改成surf(v,u,F);
另外,好像你做了两次FFT 如果把surf(u,v,F);改成surf(v,u,F);
再去掉I=fftshift(fft2(I));或者F=fft2(I);其中的一个,其余的不变,得出来的是图1
而且有错误:Warning: Matrix dimensions must agree, not rendering mesh.
Warning: Matrix dimensions must agree, not rendering mesh.
Warning: Matrix dimensions must agree, not rendering mesh.
Warning: Matrix dimensions must agree, not rendering mesh.
如果不改成surf(v,u,F);再去掉I=fftshift(fft2(I));或者F=fft2(I);其中的一个,得到的是图2,但是没错误 请yangzj 帮忙再解决下好吗? I=imread('CIMG1217.jpg');
I=rgb2gray(I);
figure();
subplot(211);
imshow(I);
F=fftshift(fft2(double(I)));
F=abs(F);
=size(I);
u=1:1:M;
v=1:1:N;
subplot(212);
surf(v,u,F);
shading interp
试试 谢谢啊,我试了,可是还有个问题,这个得出来的是频谱吗?我总觉得有点不像呢? I=zeros(800,800);
a=10;
I(400-a:400+a,400-a:400+a)=255*ones(2*a+1,2*a+1);
figure();
subplot(211);
imshow(I);
F=fftshift(fft2(double(I)));
F=abs(F);
=size(I);
u=1:1:M;
v=1:1:N;
subplot(212);
imshow(F,[]);
呵呵,那你试试这个,看看对不对 真谢谢你啊,可还需要向你请教一下:@$
图好象还是有点不对,运行出来出现的应该是幅度聘谱增强图吧
如果把imshow()改成mesh()的话出现的是图6的样子, 不好意思,6的第2部分截错了,是这个样子的图, 怎么来表示这个频谱那就看你喜欢啦. 哦,明白了,谢谢啊,真的很感谢你,我可以给你加分表示感谢吗?:loveliness:
还有再请教一个问题就是,最后一个是用的是自己编写的矩阵,出来的看着很明显,
但是当我用拍的图象的RGB时候时,只能先转换成灰度在做频谱,要不就画不出来,
麻烦你再帮我确认下好吗?是不是我的截图4就是频谱了,只不过没最后一个图明显?方法已经是对的了?
谢谢啊!!!!! 原帖由 shenzhi123 于 2007-5-3 20:27 发表
哦,明白了,谢谢啊,真的很感谢你,我可以给你加分表示感谢吗?:loveliness:
还有再请教一个问题就是,最后一个是用的是自己编写的矩阵,出来的看着很明显,
但是当我用拍的图象的RGB时候时,只能先转换成灰度在做频 ...
嗯,是对的,至于要从这个频谱图看出什么问题来,就要你来分析了
[ 本帖最后由 yangzj 于 2007-5-3 20:42 编辑 ] 这样得到应该是圆孔衍射的频谱吧? 不是图象的频谱
页:
[1]