编程分析幅度谱和相位谱在图像信号、语音信号中的作用。

一、图像信号

(1)原图像信号如下:

代码如下:

PA0=imread('大头儿子.jpg');
PB0=imread('狗.jpg');
PC0=imread('苹果.jpg');
%灰度处理
PA=rgb2gray(PA0);PB=rgb2gray(PB0);PC=rgb2gray(PC0);
%调整为同一大小
[a,b]=size(PA);
PB=imresize(PB,[a,b]);
PC=imresize(PC,[a,b]);
%傅里叶变换
PAf=fft2(double(PA));
PBf=fft2(double(PB));
PCf=fft2(double(PC));
% 获取幅度谱与相位谱
PAf_AM=abs(PAf);PBf_AM=abs(PBf);PCf_AM=abs(PCf);
PAf_ph=angle(PAf);PBf_ph=angle(PBf);PCf_ph=angle(PCf);
%改变图片的幅度与相位,重组图像
F1=PAf_AM.*cos(PBf_ph)+PAf_AM.*sin(PBf_ph).*1j;
F2=PAf_AM.*cos(PCf_ph)+PAf_AM.*sin(PCf_ph).*1j;
F3=PBf_AM.*cos(PAf_ph)+PBf_AM.*sin(PAf_ph).*1j;
F4=PBf_AM.*cos(PCf_ph)+PBf_AM.*sin(PCf_ph).*1j;
F5=PCf_AM.*cos(PAf_ph)+PCf_AM.*sin(PAf_ph).*1j;
F6=PCf_AM.*cos(PBf_ph)+PCf_AM.*sin(PBf_ph).*1j;
%傅里叶逆变换
P1=abs(ifft2(F1));P2=abs(ifft2(F2));P3=abs(ifft2(F3));
P4=abs(ifft2(F4));P5=abs(ifft2(F5));P6=abs(ifft2(F6));
%显示图像
figure(1)
subplot(2,3,1);imshow(PA0,[]);title('A原图-大头儿子');
subplot(2,3,2);imshow(PB0,[]);title('B原图-狗');
subplot(2,3,3);imshow(PC0,[]);title('C原图-苹果');
subplot(2,3,4);imshow(PA,[]);title('A灰度图-大头儿子');
subplot(2,3,5);imshow(PB,[]);title('B灰度图-狗');
subplot(2,3,6);imshow(PC,[]);title('C灰度图-苹果');
figure(2)
subplot(2,3,1);imshow(P1,[]);title('A幅度B相位');
subplot(2,3,2);imshow(P2,[]);title('A幅度C相位');
subplot(2,3,3);imshow(P3,[]);title('B幅度A相位');
subplot(2,3,4);imshow(P4,[]);title('B幅度C相位');
subplot(2,3,5);imshow(P5,[]);title('C幅度A相位');
subplot(2,3,6);imshow(P6,[]);title('C幅度B相位');

结果如下:

(2)原图像信号如下:

代码如下:

clear all
P0=imread('郁金香.jpg');
PA=rgb2gray(P0);   %转换为灰度图
PAf=fft2(double(PA)/255);
[a,b]=size(PAf);
PAf_am=abs(PAf);
PAf_ph=angle(PAf);
PAf_am1=1000*ones(a,b);     %幅度变为1
PAf_ph1=ones(a,b);     %相位变为1
%重组图片
F1=PAf_am.*cos(PAf_ph1)+PAf_am.*sin(PAf_ph1).*1j;
F2=PAf_am1.*cos(PAf_ph)+PAf_am1.*sin(PAf_ph).*1j;
F3=PAf_am1.*cos(PAf_ph1)+PAf_am1.*sin(PAf_ph1).*1j;
P1=abs(ifft2(F1));P2=abs(ifft2(F2));P3=abs(ifft2(F3));
figure(1)
subplot(2,2,1);imshow(P0);title('原图');
subplot(2,2,2);imshow(PA);title('灰度图');
subplot(2,2,3);imshow(uint8(PAf_am),[]);title('幅度谱');
subplot(2,2,4);imshow(uint8(PAf_ph),[]);title('相位谱');
figure(2)
subplot(2,2,1);imshow(P1,[]);title('幅度不变,相位为1');
subplot(2,2,2);imshow(P2,[]);title('幅度为1,相位不变');
subplot(2,2,3);imshow(P3,[]);title('幅度为1,相位为1');

处理后的结果为:

分析:

使用Matlab读取三张不同的图像信号,对图像信号进行傅里叶变换后分别获取三张图像的幅度谱与相位谱,分别用一张图像的幅度谱与另外两张图像的相位谱重组,重构为新的图片。图像信号交换幅度谱与相位谱后,图像显示的内容为来源于相位谱的图像的轮廓。

经过交换图像信号的相位谱与幅度谱之后,反变换之后得到的图像内容与其相位谱对应的图像一致,表明相位谱决定图像结构。而图像中的整体灰度分布的特性,如明暗、灰度的变化趋势等则在比较大的程度上取决于对应的幅度谱。因为幅度谱反应了图像整体上多个方向的频率分量的相对强度。

二、语音信号

代码如下:

clear all
[x,fs]=audioread('我的录音.wav');
%sound(x,fs);
x=double(x)/3000;
N=length(x);
%傅里叶变换
Vf=fft(x,N);
[a,b]=size(Vf);
Vf_am=abs(Vf);
Vf_ph=angle(Vf);
Vf_am1=5*ones(a,b);    %幅度变为1
Vf_ph1=ones(a,b);     %相位变为1
%重组语音信号
FN1=double(Vf_am1.*exp(1j*Vf_ph));   %幅度改变
FN2=double(Vf_am.*exp(1j*Vf_ph1));   %相位改变
FN3=double(Vf_am.*exp(-1j*Vf_ph));   %相位取共轭
FN4=double(Vf_am1.*exp(1j*Vf_ph1));   %幅度相位均改变
V1=real(ifft(FN1));V2=real(ifft(FN2)).*3000;V3=real(ifft(FN3)).*3000;V4=real(ifft(FN4)).*3000;
%播放改变后的语音信号
%sound(V1,fs);
%sound(V2,fs);
%sound(V3,fs);
%sound(V4,fs);
figure(1);
subplot(1,3,1);plot(x);xlabel('时间');ylabel('幅度');title('原信号波形');
subplot(1,3,2);plot(Vf_am);xlabel('频率');ylabel('幅度');title('原信号幅值谱');
subplot(1,3,3);plot(Vf_ph);xlabel('频率');ylabel('相位');title('原信号相位谱');
figure(2)
subplot(2,2,1);plot(V1);title('幅度为1,相位不变');
subplot(2,2,2);plot(V2);title('幅度不变,相位为1');
subplot(2,2,3);plot(V2);title('幅度不变,相位取共轭');
subplot(2,2,4);plot(V4);title('幅度相位均改变');

信号波形如下:

分析:

语音信号改变幅度谱与相位谱后,出现了下列变化:

①幅度谱值有1—5的过程中,语音信号的音量逐渐增大,清晰读逐渐增强;

②幅度谱无论为一定值,相位谱的值变为1后,听到的声音无法辨别;

③相位发转后,听到的声音无法辨别;

④幅度相位均改变后,无声音。

改变语音信号的幅度值后,语音信号的音量改变,语音信号的内容与原信号一致;改变语音信号的相位值后,语音信号的内容无法辨识,与原信号的内容差异很大。表明对于语音信号来说,幅度谱决定语音信号的音量大小,相位谱决定语音信号的内容。

MATLAB信号处理——分解信号,双谱重构相关推荐

  1. 图像傅里叶变换的幅度谱、相位谱以及双谱重构原图像

    简单的求取下灰度图像的幅度谱和相位谱并进行双谱重构: 直接上代码: clear all Picture = imread('E:\others\Picture\Library.jpg');Pictur ...

  2. MATLAB信号处理之信号的采样

    所谓模拟信号的数字信号处理方法就是将待处理模拟信号经过采样.量化.编码形成数字信号,并利用数字信号处理方法对采样得到的数字信号进行处理. 下面我们来看一下对模拟信号采样的具体代码 f=200; %信号 ...

  3. MATLAB信号处理之信号的积分和微分

    1.微分 syms t f2; %定义符号变量? f2=t*(2*heaviside(t)-heaviside(t-1))+heaviside(t-1);%生成一个原始信号,其中heaviside(t ...

  4. 【MATLAB】数字图像处理--图像的频域处理-相位谱重构

    效果 %% clc clear alldir = 'image/56.jpg';img = imread(dir); imggray = rgb2gray(img);%灰度处理 imgf = fft2 ...

  5. 【MATLAB图像处理】傅里叶变换--幅度谱、相位谱、逆变换

    fft2()  傅里叶正变换 fftshift()  频谱搬移-直流量(f=0)搬移至频谱中心 I=imread('exp2.tif'); %读入原图像 I1=I(:,:,1:3); %四通道转为三通 ...

  6. 使用MATLAB实现对信号的EMD分解

    文章目录 0 前言 1 经验模式分解EMD 2 希尔伯特变换HT 3 希尔伯特-黄变换HHT 4 基于EMD的语音信号处理 5 MATLAB实现对信号的EMD分解 5.1 对构造的信号进行EMD 5. ...

  7. 数字信号处理综合实验——Matlab实现DTMF信号的产生与提取

    数字信号处理综合实验: 一.实验内容及要求 实验内容: 综合运用课程所学相关知识,根据实际信号的频谱特性,确定数字滤波器设计技术指标,设计相应的数字滤波器,实现DTMF信号的提取. 设计要求: (1) ...

  8. 使用Matlab绘制语音信号的语谱图

    本文绘制语音信号的语谱图主要使用了spectrogram函数,spectrogram是一个MATLAB函数,使用短时傅里叶变换得到信号的频谱图.当使用时无输出参数,会自动绘制频谱图:有输出参数,则会返 ...

  9. MATLAB信号处理——信号与系统的分析基础(3)

    1-4信号的基本运算 前面说过,序列是一种函数,函数我们就可以对它进行运算,而且很多运算法则都是一些基础的函数也有的. 1)序列相加与相乘 相加:在对应的点处把对应的序列值相加即可           ...

最新文章

  1. 独家 | 利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)
  2. Repository模式(转载)
  3. Git undo 操作
  4. java怎么注销cookie_java web中cookie的永久创建与撤销
  5. Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决
  6. 【数据结构与算法】判断两个无环单链表是否相交的算法
  7. 随手记android面试题,synchorinzed的一个面试题
  8. java处理xls_Java处理Excel文件
  9. [linux] redhat 7 ssh 安装配置免密登录
  10. 【七】zuul路由网关
  11. GCD and LCM HDU 4497 数论
  12. RS编码-Python工具包使用
  13. 媒体无效或 0 磁道损坏 - 磁盘无法使用。 格式化失败。
  14. python str函数数字转换成字符串,Pandas将数字转换为字符串意外结果
  15. HTML学生个人网站作业设计:动漫网站设计——哆啦A梦(5页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  16. 数据结构线性表(C++ )
  17. linux怎么用命令上传本地文件,Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件...
  18. 短线交易秘诀---大小价格区间,开盘价,价格爆炸点
  19. 如何看计算机加密方式,电脑常见的几种加密的方法
  20. 应用程序无法正常启动(oxc000007b)

热门文章

  1. 全球与中国家庭健康中心市场深度研究分析报告
  2. 摄氏温度和热力学温度转换
  3. 有效更改Chrome浏览器缓存位置到虚拟硬盘
  4. unity第三人称控制器2020.,在导入的时候没有选择重新启动,导致无法控制角色移动
  5. 【原创】关闭/开启 T470P 的触屏功能
  6. C4D团队渲染联机渲染,异地电脑一起渲染,使用RS,OC等渲染器。
  7. 圣斗士星矢游戏抽奖计算机怎么计算,圣斗士星矢手游抽奖技巧解析 教你抽橙卡...
  8. js实现图片预览功能
  9. 【caffe】caffe之反卷积层
  10. jQuery中的promise