请教matlab中如何对图像做Fourier变换
在matlab中对图像进行傅里叶变换,%img为原始图像
(一)看到别人是这么做的
img1=double(img)/255;
img_mean=mean2(img1);
centered_img=img1-img_mean;
img_fft1=fft2(centered_img);
img_fft1=fftshift(img_fft1);
不明白问什么对图像作归一化,用减去图像中值后才作傅里叶变换???
(二)
自己想应该这么做
img2=double(img);
img_fft2=fft2(img2);
img_fft2=fftshift(img_fft2);
img_=ifft2(img_fft2);%反变换
但是有两个问题:
1 img_是反变换后的图像,应该和img2相等才对呀
可是结果并不一样下面分别是 原始图像、反变换后取得4*4块
156 158 154 154
156 158 154 154
157 155 153 153
155 152 153 152 --------------img2
156 -158 154 -154
-156 158 -154 154
157 -155 153 -153
-155 152 -153 152 --------------反变换后的img_
这是为什么呢??
2 (一)和(二)作出的结果不一样,附图是对lena做变换后的
imshow(abs(img_fft1),[]);
imshow(abs(img_fft2),[]);
(一)的结果对吗,(二)呢,为什么? 1. 归一化主要是为了数据处理方便提出来的,它使得数据处理更加便捷快速,同时保证数据中数值小的不被吞食!
减去图像中值也是类似的作用,可以不做该处理!
2. 反变换后需要去模才是你要的结果
3. 两者都对,主要是(二)没有做归一化处理,所以效果上差了很多 谢谢happy!
关于归一化,我还有一个问题请教:
数据做fft后的最高频率是0.5,这个也是做了归一化吧
那么为什么是0.5,而不是1呢? 好好。看的不是很明白,不过很舒服。因为问问题问的清楚,答问题答的明白 原帖由 xfdxz 于 2006-10-25 08:28 发表
谢谢happy!
关于归一化,我还有一个问题请教:
数据做fft后的最高频率是0.5,这个也是做了归一化吧
那么为什么是0.5,而不是1呢?
没明白你这个问题,能否在说明一下? 这两天不在学校。很感谢happy !!
关于图像做FFT后频率最高是0.5的问题 已经有了初步的理解
图像中的频率是指像素点灰度的变换快慢
那么图像的最高频率当然不是0.5
而作FFT后频率最大0.5是指对两个相邻的像素变换的最大值 因为对于三个相邻像素而言最多只能变化一个周期
所以两个相邻像素的变换最大值只能是0.5
问题没有问清楚~~现在说得好像还有点乱
页:
[1]