Matlab|数字图像处理02|图像的傅里叶变换(平移/旋转性质)及图像的离散余弦变换

这篇具有很好参考价值的文章主要介绍了Matlab|数字图像处理02|图像的傅里叶变换(平移/旋转性质)及图像的离散余弦变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题1:x,y方向同时平移后频谱有何变化?

答:经过平移后的傅里叶变换幅值图与原图像得到的傅里叶变换幅值图基本相同,平移不改变频谱的幅值。
代码运行结果:
傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab
傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab
代码:

clc;
clear all;
I=imread('C:\Users\Ch04\4.bmp'); 
fftI=fft2(I);
sfftI=fftshift(fftI);   %求离散傅里叶频谱
%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
RRfdp1=real(sfftI);
IIfdp1=imag(sfftI); a=sqrt(RRfdp1.^2+IIfdp1.^2);
a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(4);
subplot(1,2,1),imshow(real(I)),title('同时沿X轴和Y轴平移图');
subplot(1,2,2),imshow(real(a)),title('同时沿X轴和Y轴的傅里叶谱');
问题2:编程验证一幅图旋转45度后,其傅里叶谱图也旋转了45度。

傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab
代码:

%构造原始图像
clc;clear all;
I = zeros(256,256); I(88:168,124:132) = 1;
J = fft2(I); %求原始图像的傅里叶频谱
F = abs(J);
J1 = fftshift(F);
figure;
subplot(2,2,1),imshow(I),title('原图');
subplot(2,2,2),imshow(J1,[5 50]),title('原图的傅里叶谱');
%对原始图像进行旋转
J = imrotate(I,45,'bilinear','crop');
%求旋转后图像的傅里叶频谱
J1 = fft2(J);
F = abs(J1);
J2 = fftshift(F);
%figure;
subplot(2,2,3),imshow(J),title('旋转45度后的图');
subplot(2,2,4),imshow(J2,[5 50]),title('旋转45度后的图的傅里叶谱');
问题3:第8行10的数字大小对结果的影响;

答:第8行数字10表示把变换矩阵中小于 10 的值置换为 0,该数字越大,用 idct2 重构图像时余弦反变换恢复的效果越差。
代码运行结果:
傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab

代码:

% 选取一幅图像,进行离散余弦变换,并对其进行离散余弦反变换,观察其结果。
clc;clear all;close all;
%对 cameraman.tif 文件计算二维 DCT 变换
RGB = imread('C:\Users\...\lenna_rgb.tif');
I = rgb2gray(RGB); %真彩色图像转换成灰度图像
J = dct2(I);%计算二维 DCT 变换
% figure(2); imshow(log(abs(J)),[]); %图像大部分能量集中在上左角处
J(abs(J) < 10) = 0;   %%:第810的数字大小对结果的影响;
%把变换矩阵中小于 10 的值置换为 0,然后用 idct2 重构图像
K = idct2(J)/255;
figure;
subplot(1,3,1),imshow(I),title('灰度图');
% subplot(1,3,2),imshow(abs(J),[]),title('余弦变换系数图');
subplot(1,3,2),imshow(log(abs(J)),[]),title('余弦变换系数图');
JJ=log(abs(J));
subplot(1,3,3),imshow(K),title('余弦反变换恢复图');
%
问题4:改变mask1中1的个数,研究其对重构图像的质量影响

答:mask表示一个二值掩模矩阵,用来压缩DCT的系数,原始代码表示该矩阵只保留DCT变换矩阵的最左上角的10个系数进行数据压缩,并丢弃右下角高频数据。
通过实验可知:当取左上角的1时,1的数量多少对图像质量影响较小,图片均可较好地恢复。当左上角取0时(如下图所示,左上角取3个零),只能恢复图像的极少部分边缘。
根据实验和DCT的原理可以得出:保留左上角的较少数据,就可以得到一个相对完整的图片,但如果保留除左上角数据外的其他所有数据,只能得到一些图像的边缘细节信息。

代码运行结果:
傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab
傅里叶变换 平移,matlab,图像处理,计算机视觉,图像处理,matlab
代码:文章来源地址https://www.toymoban.com/news/detail-720486.html

% %对图像进行离散余弦变换,做图像压缩解压,取不同的 DCT 系数,并观察其结果。
% clc;clear all;close all;
% %对图像文件计算二维 DCT 变换
% RGB = imread('C:\Users\Ch04\lenna_rgb.tif');
% I = rgb2gray(RGB); %真彩色图像转换成灰度图像
% I = im2double(I);	%转换图像矩阵为双精度型
% T = dctmtx(8);	%产生二维 DCT 变换矩阵T,矩阵 T 及其转置 T'是 DCT 函数 P1*X*P2 的参数
% B = blkproc(I,[8 8],'P1*x*P2',T,T'); %块状操作函数,B实际上是DCT系数矩阵
% mask1= [ 1	1	1	1	0	0	0	0
% 1	1	1	0	0	0	0	0
% 1	1	0	0	0	0	0	0
% 1	0	0	0	0	0	0	0
% 0	0	0	0	0	0	0	0
% 0	0	0	0	0	0	0	0
% 0	0	0	0	0	0	0	0
% 0	0	0	0	0	0	0	0];  %二值掩模,用来压缩DCT系数
% % 定义一个二值掩模矩阵,用来压缩DCT的系数
% % 该矩阵只保留DCT变换矩阵的最左上角的10个系数
% % 数据压缩,丢弃右下角高频数据
% TB = blkproc(B,[8 8],'P1*x*P2',T',T); %重构图像
% B2 = blkproc(B,[8 8],'P1.*x',mask1);	%只保留 DCT 变换的 10 个系数,即压缩DCT系数矩阵
% I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);	%压缩DCT系数后重构图像
% figure;
% subplot(2,3,1),imshow(I),title('灰度图');
% subplot(2,3,2);imshow(B),title('DCT系数矩阵图');
% subplot(2,3,3);imshow(B2),title('压缩后的DCT系数矩阵图');
% subplot(2,3,4),imshow(TB),title('DCT系数解压图像');
% subplot(2,3,5),imshow(I2),title('压缩DCT系数mask1解压图像');



% %%%%
%对图像进行离散余弦变换,做图像压缩解压,取不同的 DCT 系数,并观察其结果。
clc;clear all;close all;
%对图像文件计算二维 DCT 变换
RGB = imread('C:\Users\ark\Desktop\newwork\DIP\Ch04\lenna_rgb.tif');
I = rgb2gray(RGB); %真彩色图像转换成灰度图像
I = im2double(I);	%转换图像矩阵为双精度型
T = dctmtx(8);	%产生二维 DCT 变换矩阵T,矩阵 T 及其转置 T'是 DCT 函数 P1*X*P2 的参数
B = blkproc(I,[8 8],'P1*x*P2',T,T'); %块状操作函数,B实际上是DCT系数矩阵
mask1= [ 0	0	1	1	1	1	1	1
0	1	1	1	1	1	1	0
1	1	1	1	1	1	0	0
1	1	1	1	1	0	0	0
1	1	1	1	0	0	0	0
1	1	1	0	0	0	0	0
1	0	0	0	0	0	0	0
0	0	0	0	0	0	0	0];  %二值掩模,用来压缩DCT系数
TB = blkproc(B,[8 8],'P1*x*P2',T',T); %重构图像
B2 = blkproc(B,[8 8],'P1.*x',mask1);	%只保留 DCT 变换的 10 个系数,即压缩DCT系数矩阵
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);	%压缩DCT系数后重构图像
figure;
subplot(2,3,1),imshow(I),title('灰度图');
subplot(2,3,2);imshow(B),title('DCT系数矩阵图');
subplot(2,3,3);imshow(B2),title('压缩后的DCT系数矩阵图');
subplot(2,3,4),imshow(TB),title('DCT系数解压图像');
subplot(2,3,5),imshow(I2),title('压缩DCT系数mask1解压图像');
%%%%%end homework

figure;
subplot(1,2,1),imshow(abs(TB-I)),title('');
subplot(1,2,2),imshow(abs(I2-I)),title('');

RGB = imread('C:\Users\ark\Desktop\newwork\DIP\Ch04\lenna_rgb.tif'); I=rgb2gray(RGB);
I = im2double(I);	%转换图像矩阵为双精度型
T = dctmtx(8);	%产生二维 DCT 变换矩阵, returns the N-by-N DCT transform matrix
%矩阵 T 及其转置 T'是 DCT 函数 P1*X*P2 的参数
B = blkproc(I,[8 8],'P1*x*P2',T,T'); %DCT变换
mask2= [ 1 1 1 1 0 0 0 0
1	1	1	0	0	0	0	0	
1	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0];	%二值掩模,用来压缩 DCT 系数
B2 = blkproc(B,[8 8],'P1.*x',mask2);	%只保留 DCT 变换的 8 个系数
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);	%重构图像figure,imshow(I);
figure;
subplot(1,3,1),imshow(I),title('灰度图');
subplot(1,3,2);imshow(B2),title('');
subplot(1,3,3),imshow(I2),title('压缩DCT 系数 mask2 解压图像');

figure;
subplot(2,3,1),imshow(I),title('灰度图');
subplot(2,3,2),imshow(T),title('DCT变换矩阵');
subplot(2,3,3),imshow(B),title('DCT变换');
subplot(2,3,4),imshow(B2),title('压缩后的DCT变换');
subplot(2,3,5),imshow(I2),title('重构图像');

%改变mask1中1的个数,研究其对重构图像的质量影响

到了这里,关于Matlab|数字图像处理02|图像的傅里叶变换(平移/旋转性质)及图像的离散余弦变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)

    数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)

    1了解图像变换的原理; 2理解图像变换系数的特点; 3掌握图像变换的方法及应用; 4掌握图像的频谱分析方法; 5了解图像变换在图像数据压缩、图像滤波等方面的应用。 安装了MATLAB软件的台式或笔记本电脑 1.离散傅里叶变换 对于二维离散信号,Fourier正变换定义为: 二维离

    2024年02月06日
    浏览(11)
  • 图像的傅里叶变换

    图像的傅里叶变换

    先向大家道歉啊   作为基础知识这内容肯定有人写过   但作为屌丝没时间搜这个出处   也没什么商用价值 就是为了自己好看  收藏不好用 麻烦选别的   真的对不起就是为自己   烦请勿扰   看不惯你了 忍着 傅里叶基础 法国数学家吉恩·巴普提斯特·约瑟夫·傅里叶被

    2023年04月27日
    浏览(13)
  • 图像处理之傅里叶变换

    图像处理之傅里叶变换

    1、傅里叶变换的定义 傅里叶变换是在以时间为自变量的“信号”与频率为自变量的“频谱”函数之间的某域研究中较复杂的问题在频域中变得简单起来,从而简化其分析过程;另一方面使信号与系统的物理本质在频域中能更好地被揭示出来。当自变量“时间”或“频率”为

    2024年02月15日
    浏览(9)
  • Python图像处理笔记——傅里叶变换

    Python图像处理笔记——傅里叶变换

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。(灰度变化得快频率就高,灰度变化得慢频率就低)。傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。 傅立叶变换的物理意义: 将图像的灰度分布函数

    2024年02月08日
    浏览(10)
  • OpenCV图像处理之傅里叶变换

    OpenCV图像处理之傅里叶变换

    傅里叶变换: 目的就是得到图像的低频和高频,然后针对低频和高频进行不同的处理。处理完之后,在通过逆变换恢复到图像,这时候对低频和高频的处理就会反映到图像上。 频率 高频:变化剧烈的灰度分量,例如边界。 低频:变化缓慢的灰度分量,例如一天蓝天(相似的

    2024年02月06日
    浏览(13)
  • 计算机视觉-图像的傅里叶变换

    计算机视觉-图像的傅里叶变换

    😊😊😊 欢迎来到本博客 😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉 作者简介 : ⭐️⭐️⭐️ 目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法。然后正在学习深度

    2023年04月08日
    浏览(8)
  • OpenCV-Python中的图像处理-傅里叶变换

    OpenCV-Python中的图像处理-傅里叶变换

    傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性。实现 DFT 的一个快速算法被称为快速傅里叶变换( FFT)。 对于一个正弦信号:x (t) = A sin (2πft), 它的频率为 f,如果把这个信号转到它的频域表示,我们会在频率

    2024年02月12日
    浏览(8)
  • Python-OpenCV中的图像处理-傅里叶变换

    Python-OpenCV中的图像处理-傅里叶变换

    傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性。实现 DFT 的一个快速算法被称为快速傅里叶变换( FFT)。 对于一个正弦信号:x (t) = A sin (2πft), 它的频率为 f,如果把这个信号转到它的频域表示,我们会在频率

    2024年02月12日
    浏览(11)
  • 实数信号的傅里叶级数研究(Matlab代码实现)

    实数信号的傅里叶级数研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 实数信

    2024年02月13日
    浏览(18)
  • 周期矩形波的傅里叶级数展开(Matlab代码实现)

    周期矩形波的傅里叶级数展开(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 当脉冲信

    2023年04月26日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包