参考资料:
https://www.matongxue.com/madocs/712.html
https://blog.csdn.net/linzch3/article/details/71077165
第二次终于完全理解了图像处理里面的傅里叶变换,第一次看了最后也没完全弄懂,可能因为当时没有手写程序,所以只是一知半解。
本文关于理论只是粗糙的见解,详细说明可以看上面的参考链接。
关键就是以下几点:
第一傅里叶提出了傅里叶函数:
这个函数说明an 和bn 是唯一确定的,这也就确定了傅里叶变换对的存在,也就使信号处理或者图像处理中利用傅里叶变换将信号从时域转变到频域处理,最后又恢复时域中的新的信号有了支撑。
所以知道了an bn就知道了函数f,an,bn在这里是级数,对于无限周期的函数,求an,bn就是求傅里叶变换。为了方便,用欧拉公式替换 cosx,sinx。
第二就是an bn的计算公式也很明确:
欧拉公式替换后:
cn就是要求的傅里叶变换,虽然表达式里是连续的,但是用计算机计算,特别是做图像处理,可以直接按照像素离散。
一维:
二维:
第三程序实现的时候注意几个要点:
- 对于二维的图像可以先从一维开始做傅里叶变换,再到第二维。
- 为了展示变换后的幅值图像,需要对幅值取对数处理。
- 按照上面的公式计算出来的傅里叶变换图像亮度最高的在四个角的位置,可以调整程序让亮度最高的位置在中间显示。
I = imread("dft.jpg");
imshow(I);
J = rgb2gray