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

这篇具有很好参考价值的文章主要介绍了数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1了解图像变换的原理;
2理解图像变换系数的特点;
3掌握图像变换的方法及应用;
4掌握图像的频谱分析方法;
5了解图像变换在图像数据压缩、图像滤波等方面的应用。

二、主要仪器设备

安装了MATLAB软件的台式或笔记本电脑

三、实验原理

(一)变换原理

1.离散傅里叶变换

对于二维离散信号,Fourier正变换定义为:
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
二维离散傅立叶逆变换为:
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
相关函数:fft2; ifft2

2.离散余弦变换

正变换公式为:
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
逆变换公式为:
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
相关函数:dct2; idct2

3.频谱平移

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

相关函数:fftshift; ifftshift
例题:
图像的二维离散傅立叶变换
I=imread(‘coins.png’); %读入原图像文件
imshow(I); %显示原图像
fftI=fft2(I); %二维离散傅立叶变换
sfftI=fftshift(fftI); %直流分量移到频谱中心
RR=real(sfftI); % real(A)为取复数A的实部
II=imag(sfftI); %imag(A)为取复数A的虚部
A=sqrt(RR.^ 2+II.^2); %计算频谱幅值
B=abs(sfftI);
I1=ifft2(fftI); %重建原图像
figure; %创建窗口
imshow(uint8(A)); %显示原图像的频谱

(二)频谱分析原理

图像变换是能量的重新分配。频率域中低频部分对应的是图像中的平滑部分(灰度变化缓慢的区域,)高频部分对应的是图像中的边缘、细节或噪声部分。
本实验主要函数:
fft2; ifft2; dct2; idct2; abs; angle; fftshift; ifftshift; imshow ; subplot; title

四、实验步骤和内容

1. 为下面三段程序写出注释并上机运行,将实际运行结果如实记录到实验报告,并分析三段程序的不同之处,并解释第一段程序出现问题的原因。

(1)f = imread ( ‘pout.tif’);
F=fft2(f);
S=abs(F);
imshow(S);
f1=ifft2(F);
figure;imshow(f1);

(2)f1 = imread (‘pout.tif’);
f=im2double(f1);
F=fft2(f);
S=abs(F);
imshow(uint8(S));
f1=ifft2(F);
figure;imshow(f1);

(3)f1 = imread (‘pout.tif’);
f=im2double(f1);
F=fft2(f);
S=uint8(abs(F));
imshow(S);
S1=fftshift(F);
figure;imshow(uint8(abs(S1)));
f11=ifft2(F);
figure;imshow(f11);

2.选取一幅标准测试图像实现傅里叶变换。

(1)读图图像;
(2)显示原图像;
(3)进行傅里叶正变换;
(4)获取其幅度谱和相位谱;
(5)利用逆变换对图像进行重建。

3.频谱平移

选取一幅灰度图像,对其进行傅里叶变换、频谱平移、频谱逆平移、傅里叶逆变换,并在同一窗口中同时显示原图像、傅里叶变换频谱、频谱平移图像、逆平移频谱图像及傅里叶逆变换图像并按上述名称命名。将程序及效果图记录入实验报告。

4. 选取一幅标准测试图像实现离散余弦变换。

(1)读图图像;
(2)显示原图像;
(3)进行离散余弦正变换;
(4)利用逆变换对图像进行重建;
(5)对(3)中的系数进行取舍。
(6)用(5)中得到的系数矩阵对图像进行重建(逆变换),得到新图像;
(7)在同一窗口显示原图像、频谱图、直接重建图像、改变系数后的重建图像;
(8)分析两个重建的图像的图像质量变化以及产生的原因。
离散余弦变换后,将低频分量其中到了左上角,所以程序中是保留了左上角33*33的小矩阵的信息量,而其他信息都舍弃了,因此重建后的图像变得模糊了。

5.记录和整理实验报告。

五、思考题

1.傅里叶变换有哪些重要的性质?
可以将低频和高频信号区分开来,将图像的灰度分布函数变换为图像的频率分布函数。
2.离散余弦变换与傅里叶变化相比有哪些优势?
离散余弦变换首先低频信号都是集中在左上角,并且相对于傅里叶变换是不用进行频谱搬移的
3.观察图像变换后的频谱矩阵系数,总结变换后系数分布特点。
都是双精度,并且落在(-1,1)的区间

六、实验代码

%% 1.1
f = imread ('pout.tif'); 
f = im2double(f)  %没有对图像进行归一化(为什么进行归一化?)
F=fft2(f);       
S=abs(F);      
imshow(uint8(S)); %没有对复数模值进行[0,255]进行映射          
f1=ifft2(F);
figure;imshow(f1);

%% 1.2 
f1 = imread ('pout.tif'); 
f=im2double(f1); %将图像转换为双精度(归一化)
F=fft2(f); % 进行傅里叶变化
S=abs(F);  % 对复数取模值
imshow(uint8(S));  % 将数据映射到[0,255](频谱图)并显示
f1=ifft2(F); % 对傅里叶进行逆变换
figure;imshow(f1);  % 显示

%% 1.3 
clc,clear
close all
f1 = imread ('pout.tif'); 
f=im2double(f1); 
F=fft2(f);
S=uint8(abs(F));           
imshow(S);
S1=fftshift(F); %频谱平移,将直流分量移到频谱中心
figure;imshow(uint8(abs(S1)));
f11=ifft2(F);
figure;imshow(f11);

%% 2
clc,clear
close all
f = imread ('pout.tif');
f_y = im2double(f);
f_n = fft2(f);   % 未im2double的傅里叶变换
f_y = fft2(f_y); % 经过im2double的傅里叶变换

RR_y = real(f_y); %实部
II_y = imag(f_y); %虚部
RR_n = real(f_n);
II_n = imag(f_n);

A_y = sqrt(RR_y.^2+II_y.^2); % 求取距离(频谱)
B_y = angle(f_y);            % 求取相位
C_y = abs(f_y);              % 求取距离

A_n = sqrt(RR_n.^2+II_n.^2);
B_n = angle(f_n);
C_n = abs(f_n);

S_y = fftshift(f_y);         %频谱平移
S_n = fftshift(f_n);


figure
subplot(2,3,1);imshow(f);xlabel('原图像')
subplot(2,3,2);imshow(A_y);xlabel('幅度谱');title('经过im2double处理')
subplot(2,3,3);imshow(B_y);xlabel('相位谱')
subplot(2,3,4);imshow(uint8(A_y));xlabel('频谱图')
subplot(2,3,5);imshow(uint8(abs(S_y)));xlabel('频谱平移图')
subplot(2,3,6);imshow(ifft2(f_y));xlabel('图像进行重建')


% figure
I_y = ifftshift(S_y);
I_n = ifftshift(S_n);
figure
subplot(1,2,1);imshow(uint8(abs(I_y)));xlabel('y_逆平移')
subplot(1,2,2);imshow(uint8(abs(I_n)));xlabel('n_逆平移')
%% 3
f1 = imread ('pout.tif'); 
f=im2double(f1); % 0-1变小;
F=fft2(f1);
F1 = fft2(f)
S=uint8(abs(F));           
S1=fftshift(F); %频谱平移,将直流分量移到频谱中心
S2=ifftshift(S1);
f11=ifft2(F);
figure
subplot(2,3,1);imshow(f1);xlabel('原图像')
subplot(2,3,2);imshow(S);xlabel('傅里叶变换频谱')
subplot(2,3,3);imshow(uint8(abs(S1)));xlabel('频谱平移图像')
subplot(2,3,4);imshow(uint8(abs(S2)));xlabel('逆平移频谱图像')
subplot(2,3,5);imshow(uint8(f11));xlabel('傅里叶逆变换图像')

%% 4
f = imread ('pout.tif');
f1 = im2double(f);
f_dct = dct2(f1);
f_idct = idct2(f_dct);
Z = zeros(291,240);
Z(1:33,1:33) = 1;
f_dct_d = Z.*f_dct;
f_idct_d = idct2(f_dct_d);
figure
subplot(2,2,1);imshow(f);xlabel('原图像')
subplot(2,2,2);imshow(abs(f_dct));xlabel('频谱图')
subplot(2,2,3);imshow(f_idct);xlabel('直接重建图像')
subplot(2,2,4);imshow(f_idct_d);xlabel('改变系数后重建图像') 

七、实验图像

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

八、对于傅里叶变换的相关解释

可以看我之前写的文章,有对于傅里叶和离散余弦的变换的说明

数字图像处理——图像变换(二维离散傅里叶正逆变换fft2/fft2、离散余弦正逆变换dct2/idct2、频谱正逆平移fftshift/ifftshift、幅度谱与相位谱)文章来源地址https://www.toymoban.com/news/detail-463385.html

到了这里,关于数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 数字图像处理Malab/C++(三)傅里叶变换及频谱图、频域滤波

    1、选择任意灰度图像。计算和显示原始图像的频谱振幅和任意因子缩放的同一图像的频谱振幅。 2、选择任意灰度图像。计算和显示原始图像的频谱振幅和任意角度旋转的同一图像的频谱振幅。 3、 使用标准Lena灰度图片,添加高斯噪声imnoise(I,‘gaussian’, 0.05) 。请用合适的频

    2024年02月06日
    浏览(36)
  • 数字图像处理实验四--图像变换

    (图像变换) 实验内容: 对图像lena、cameraman和face进行傅里叶变换,观察图像能量在频谱图中的分布情况。 利用Matlab生成下列图像,并对其进行旋转30度、90度和120度,然后对他们分别进行傅里叶变换。 对图像lena、cameraman和face用DCT变换进行图像压缩,舍掉的变换系数分别小

    2024年04月14日
    浏览(52)
  • 数字信号与图像处理实验三:图像处理基础与图像变换

    ​ 通过本实验加深对数字图像的理解,熟悉MATLAB中的有关函数;应用DCT对图像进行变换;熟悉图像常见的统计指标,实现图像几何变换的基本方法。 ​ 选择两幅图像,读入图像并显示,同时使用Matlab计算图像的大小,灰度平均值、协方差矩阵、灰度标准差和相关系数。 DC

    2024年02月04日
    浏览(46)
  • 数字图像处理 matlab图像的几何运算 实验三 旋转 缩放 裁剪 镜像变换 平移

    原图: 读取原图(这里我的图片名字是atm.png): 我们先说原理,图像旋转的本质是向量的旋转。 矩阵乘法的实质是进行线性变换,因此对一个向量进行旋转操作也可以通过矩阵和向量相乘的方式进行。 因为图像都是通过二维矩阵存放的(单通道),所以对图像进行旋转时

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

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

    2024年02月15日
    浏览(30)
  • 图像处理之图像的离散余弦变换

    一、前言 离散余弦变换(Discrete Cosine Transform, DCT)是 以一组不同频率和幅值的余弦函数和来近似一幅图像,实际上是傅立叶变换的实数部分 。离散余弦变换有一个重要的性质,即 对于一幅图像,其大部分可视化信息都集中在少数的变换系数上 。因此,离散余弦变换经常用于图

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

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

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

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

    2024年02月06日
    浏览(49)
  • 【MATLAB图像处理】傅里叶变换--幅度谱、相位谱、逆变换

    fft2()  傅里叶正变换 fftshift()  频谱搬移-直流量(f=0)搬移至频谱中心 幅度谱只包含亮度信息(f),逆变换后由于没有位置信息(x,y)导致无法重构图像;相位谱只包含位置信息(x,y),逆变换后由于没有亮度信息(f)导致重构图像只有轮廓没有亮度。而同时利用幅度谱

    2024年02月11日
    浏览(30)
  • Python图像处理【10】基于离散余弦变换的图像压缩

    由于图像中相邻像素间的相关性引起的空间冗余、图像序列中不同帧之间存在相关性引起的时间冗余,因此我们需要对图像数据进行压缩。数据压缩的目的就是通过去除这些数据冗余来减少数据表示所占用的存储空间。随着大数据时代的到来,图像数据在质量提高的同时,其

    2024年02月04日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包