图像傅里叶变换的频谱特征 三

6,平移和旋转

图像的平移并不会影响图像的频谱,同时,图像的相位会随着图像的旋转而旋转。

Part I 平移和旋转对频谱的影响

下面我用矩形的频谱图来说明图像中矩形的平移并不会对频谱有丝毫的影响。

Matlab代码:

  1. clear all
  2. close all
  3. %% Author: J27
  4. % Jesus love you!
  5. Isize = 512;
  6. Rwidth = 50;
  7. Rlength = 3*Rwidth;
  8. Irect = zeros(Isize);
  9. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  10. (floor(Isize - Rwidth)/2) + 1:floor((Isize - Rwidth)/2) + Rwidth) = 1;
  11. subplot(3,1,1)
  12. imshowpair(Irect,log(abs(fftshift(fft2(Irect)))+1),'montage')
  13. Irect = zeros(Isize);
  14. Irect(floor((Isize - Rlength)/2) + 150 + 1:floor((Isize - Rlength)/2) + 150 + Rlength,...
  15. (floor(Isize - Rwidth)/2) + 1 + 200:floor((Isize - Rwidth)/2) + Rwidth + 200) = 1;
  16. subplot(3,1,2)
  17. imshowpair(Irect,log(abs(fftshift(fft2(Irect)))+1),'montage')
  18. Irect = zeros(Isize);
  19. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  20. (floor(Isize - Rwidth)/2) + 1 - 80:floor((Isize - Rwidth)/2) + Rwidth - 80) = 1;
  21. subplot(3,1,3)
  22. imshowpair(Irect,log(abs(fftshift(fft2(Irect)))+1),'montage')

再比如下面这个例子:

再来看看频谱随着矩形的旋转而旋转相同的角度。

Matlab代码:

  1. Isize = 512;
  2. Rwidth = 50;
  3. Rlength = 3*Rwidth;
  4. Irect = zeros(Isize);
  5. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  6. (floor(Isize - Rwidth)/2) + 1:floor((Isize - Rwidth)/2) + Rwidth) = 1;
  7. Irot = imrotate(Irect, 15, 'crop', 'bilinear');
  8. subplot(3,1,1)
  9. imshowpair(Irot,log(abs(fftshift(fft2(Irot)))+1),'montage')
  10. Irect = zeros(Isize);
  11. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  12. (floor(Isize - Rwidth)/2) + 1:floor((Isize - Rwidth)/2) + Rwidth) = 1;
  13. Irot = imrotate(Irect, 45, 'crop', 'bilinear');
  14. subplot(3,1,2)
  15. imshowpair(Irot,log(abs(fftshift(fft2(Irot)))+1),'montage')
  16. Irect = zeros(Isize);
  17. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  18. (floor(Isize - Rwidth)/2) + 1:floor((Isize - Rwidth)/2) + Rwidth) = 1;
  19. Irot = imrotate(Irect, 90, 'crop', 'bilinear');
  20. subplot(3,1,3)
  21. imshowpair(Irot,log(abs(fftshift(fft2(Irot)))+1),'montage')

Part II 平移和旋转对相位的影响

先用一个简单的例子来说明图像相位的作用(所用图像为cameraman),在图像的频域分析和滤波中,相位是常常被忽略的。虽然相位分量的贡献很不直观,但是它恰恰很重要。相位是频谱中各正弦分量关于原点的位移的度量。

上面的小实验充分说明了,看似无用的,且常常被忽略的相位,在DFT的频域中起到了多么重要的作用(注意区分实部和虚部(直角坐标系)VS 频谱和相位(极坐标系)!)。

Matlab代码:

  1. close all;
  2. clear all;
  3. I = im2double(imread('cameraman.tif'));
  4. DFT = fft2(I);
  5. absF = abs(DFT);
  6. Phi = atan2(imag(DFT),real(DFT));
  7. subplot(2,3,1);
  8. imshow(I,[]);
  9. title('Image(Cameraman)');
  10. subplot(2,3,2);
  11. imshow(log(fftshift(absF) + 1),[]);
  12. title('Spectrum');
  13. subplot(2,3,3);
  14. imshow(fftshift(Phi),[]);
  15. title('Phase');
  16. F = absF.*exp(1j*Phi);
  17. Rebuild = im2uint8(real(ifft2(F)));
  18. subplot(2,3,4);
  19. imshow(Rebuild,[]);
  20. title('Rebuild with orginal specturm and phase');
  21. % rebuild with spectrum only
  22. F = absF.*exp(1j*1);
  23. Rebuild = im2uint8(real(fftshift(ifft2(F))));
  24. subplot(2,3,5);
  25. imshow(Rebuild,[]);
  26. title('Rebuild with spectrum only');
  27. % rebuild with Phase only
  28. g = 1.*exp(1j*Phi);
  29. g = im2uint8(real(ifft2(g)));
  30. subplot(2,3,6);
  31. imshow(g,[]);
  32. title('Rebuild with Phase only');

接下来我们再来看看图像在空间域中的移位和旋转对相位有什么影响。下图中,左边一列是图像,中间一列是频谱,右边一列是相位图。你必须意识到,通过肉眼,你很难从相位图中得到什么有用的信息。

(上图中最后一行打错了,不是“旋转改变了相位”而是“平移改变了相位”)

Matlab代码:

  1. clear all
  2. close all
  3. %% Author: J27
  4. % Jesus love you!
  5. % shifting and rotation
  6. Isize = 512;
  7. Rwidth = 50;
  8. Rlength = 3*Rwidth;
  9. Irect = zeros(Isize);
  10. Irect(floor((Isize - Rlength)/2) + 1:floor((Isize - Rlength)/2) + Rlength,...
  11. (floor(Isize - Rwidth)/2) + 1:floor((Isize - Rwidth)/2) + Rwidth) = 1;
  12. Idft = fft2(Irect);
  13. subplot(3,3,1);
  14. imshow(Irect);
  15. subplot(3,3,2);
  16. imshow(log(abs(fftshift(Idft))+1),[]);
  17. subplot(3,3,3);
  18. imshow((atan2(imag(Idft),real(Idft))),[]);
  19. Irot = imrotate(Irect, 45, 'crop', 'bilinear');
  20. Idft = fft2(Irot);
  21. subplot(3,3,4);
  22. imshow(Irot);
  23. subplot(3,3,5);
  24. imshow(log(abs(fftshift(Idft))+1),[]);
  25. subplot(3,3,6);
  26. imshow(atan2(imag(Idft),real(Idft)),[]);
  27. Irect = zeros(Isize);
  28. Irect(floor((Isize - Rlength)/2) + 150 + 1:floor((Isize - Rlength)/2) + 150 + Rlength,...
  29. (floor(Isize - Rwidth)/2) + 1 + 200:floor((Isize - Rwidth)/2) + Rwidth + 200) = 1;
  30. Idft = fft2(Irect);
  31. subplot(3,3,7);
  32. imshow(Irect);
  33. subplot(3,3,8);
  34. imshow(log(abs(fftshift(Idft))+1),[]);
  35. subplot(3,3,9);
  36. imshow(atan2(imag(Idft),real(Idft)),[]);

Matlab代码:

  1. I = im2double(imread('cameraman.tif'));
  2. Idft = fft2(I);
  3. figure;
  4. subplot(2,3,1);
  5. imshow(I,[]);
  6. subplot(2,3,2);
  7. imshow(log(abs(fftshift(Idft))+1),[]);
  8. subplot(2,3,3);
  9. imshow(atan2(imag(Idft),real(Idft)),[]);
  10. Iswap = fftshift(I);
  11. Idft = fft2(Iswap);
  12. subplot(2,3,4);
  13. imshow(Iswap,[]);
  14. subplot(2,3,5);
  15. imshow(log(abs(fftshift(Idft))+1),[]);
  16. subplot(2,3,6);
  17. imshow(atan2(imag(Idft),real(Idft)),[]);

(全文完)

谢谢收看!

图像的傅里叶变换的频谱特征 三(平移,旋转,相位的重要性)相关推荐

  1. 数字图像处理 --- 图像的傅里叶变换的频谱特征 二(方向性)

    图像傅里叶变换的频谱特征 二 很多人都不了解图像(二维)频谱中的每一点究竟代表了什么,有什么意义?      简而言之:二维频谱中的每一个点都是一个与之一一对应的二维正弦/余弦波. 5,方向性(dir ...

  2. 图像的傅里叶变换,二维傅里叶变换的物理意义

    从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换.它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分.在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变 ...

  3. matlab画傅立叶变换后相位谱,对一幅图像进行傅里叶变换后,包含频谱(也叫幅度谱)和相位谱两部分,请问那一部分更重要?...

    对一幅图像进行傅里叶变换后,包含频谱(也叫幅度谱)和相位谱两部分,请问那一部分更重要? 更多相关问题 [判断题] 抗盐产品切换到中分时,生产线不需要酸洗. [判断题] 机械密封中的载荷系数不是越大越好 ...

  4. 理解图像傅里叶变换的频谱图

    很多人都不了解图像(二维)频谱中的每一点究竟代表了什么,有什么意义? 一句话解释为: 二维频谱中的每一个点都是一个与之一 一对应的二维正弦/余弦波. 视觉的优势永远大于其他器官对人的作用,所以对标眼睛 ...

  5. 利用python对图像进行傅里叶变换_python实现图像傅里叶变换

    创作不易,如果对您有所帮助,请帮忙点赞,感谢! 一. 傅里叶变换简介: 在数字图像处理中,有两个经典的变换被广泛使用--傅里叶变换和霍夫变换.傅里叶变换是将时间域上的信号转变为频率域上的信号,进而进行 ...

  6. 数字图像处理实验八图像的傅里叶变换

    自选一幅灰度图像,编写MATLAB程序,完成图像的傅里叶变换并显示图像傅里叶变换谱. 1.快速图像傅里叶变换函数 Y = fft2(X) 2.将图像频谱零频分量移动到图像频谱中心 Y = fftshi ...

  7. Matlab对图像进行傅里叶变换实例

    一.实验目的 1.了解图像变换的意义和手段: 2.熟悉傅里叶变换的基本性质: 3.熟练掌握FFT的方法与应用: 4.通过实验了解二维频谱的分布特点: 5.通过本实验掌握利用MATLAB编程,实现数字图 ...

  8. 3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换

    3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换 文章目录 3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换 1 算法原理 2 代码 3 效果 1 算法原理 图像的傅里 ...

  9. OpenCV——图像的平移旋转

    1.学习图像数据格式Mat 像素就是把图形分割成很多大小相等的小正方形,其中每一个都是一个像素.我们常见的800*600的图形,800代表宽度,600代表高度. 灰度图像就是黑白灰,只有这三种颜色,其 ...

最新文章

  1. 数据库期末复习样卷,临时抱佛脚高分通过考试
  2. SaaS加速器 I 商业中心:提供商业助力 共享商业成功
  3. 简析Uber的可伸缩监控:uMonitor和Neris
  4. Could not find a version that satisfies the requirement pyspider (from versions: ) No matching distr
  5. oracle rac 节点启动,Oracle 10g RAC 节点自动重启故障处理
  6. html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
  7. 个人认为不错的句子(part3)--衍生品是大型杀伤性武器
  8. oracle把两个字段拼接在一起,请问Oracle中两个日期拼接在一起的语句应该怎么写?...
  9. FireBug调试工具笔记
  10. 电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)...
  11. openSearch支持mysql版本_OpenSearch 使用二三事-阿里云开发者社区
  12. java email怎么设置端口号_java mail 设置参数
  13. js 如何判断数组元素是否存在重复项
  14. python服务器查看文件更改记录,python 查看远程服务器上的文件
  15. MTK 刷机操作说明v2.0(单路)
  16. 打印时显示rpc服务器不可用,打印时出现RPC服务器不可用 ?
  17. 学而思编程python拓展版_学而思网校【2019-寒】少儿编程直播班-scratch Level 1上(零基础)...
  18. ElasticSearch高级功能的使用(模版查询、地理位置查询等)
  19. 无器械健身锻炼全身肌肉的方法
  20. 2021年黑龙江企业享受税收优惠政策,财政扶持高达90%

热门文章

  1. 前端|3D立体视频翻转动画
  2. 超六类(千兆)水晶头的压制方法及注意事项
  3. Linux系统使用steamplay完美运行巫师之昆特牌:王权的陨落(Thronebreaker:The Witcher Tales)
  4. “土地用途转用监管”业务理解
  5. 在阿里云IIS服务器上安装证书
  6. Python初学15——wordcloud库简介与使用
  7. 计算机有刻录功能么,Win7如何辨别光驱是否带有刻录功能 如何使用注册表禁用刻录功能...
  8. 【jetson-nano】 3.2、查看tensorrt版本
  9. 肠道菌群助你脱单,爱TA就请TA一起吃饭
  10. 书论10 王羲之《题卫夫人<笔阵图>后》