写在前面的话: 总结一下压缩感知课程的内容,都是为了学习巩固,有什么不对的地方还希望各位大佬指正出来,不胜感激。其实课程是要求matlab,老师也给部分代码,但是最终还是用py进行实现,经过查阅大量资料,有摘过来的部分代码,也有复现的代码,我将所有实验过程完整代码上传到github。
关键点:压缩感知三要素
稀疏性观测矩阵重构算法
实验过程采取循序渐进的方式,由一维语音信号到二维图像信号,由观测矩阵再到OMP重构算法,其中还包括了RIP限制条件。
信号稀疏性分析 —— 一维(语音)信号分析
数据来源:通过录入一段音频文件,通过转换格式软件将.m4a 文件转换为.wav 文件编程语言:python实现功能:对语音信号进行时频域、小波域变换,截取变换后的部分信息进行重构。查看其压缩后的图像,并进行对比分析。
1. 音频信号时频域分析
1.1 时频域绘图
时域图,横坐标分别是信号长度与信号时间。由于自己录制的信号都是双声道(shape为 [N,2] 的数据),所以只取一个声道进行计算即可。
频域图:
plt
.figure
(figsize
=(24,10))
plt
.subplot
(121)
f
= np
.fft
.fft
(single_channel
)
fshift
= np
.abs(f
)
plt
.plot
(x
, fshift
)
plt
.subplot
(122)
fft_shift_copy
= f
.copy
()
points
= 50000
fft_shift_copy
[points
:length
-points
] = 0
fft_shift_copy_plot
= abs(fft_shift_copy
)
plt
.plot
(x
, fft_shift_copy_plot
)
1.2 进行频域的截取
通过观察图像可以截取左右对称各5w个值,得到如下对比图,左图为原频域图,右图为截取后的图像。
对其进行傅里叶反变换后得到下图,左图为原图像,右图为重构后的图像。
稀疏性:
k
= float(points
*2 / length
)
k
2. 音频信号小波域分析
2.1 应用到二阶小波变换
采用 'db2' 滤波器,原图及重构后的图像
import pywt
w
= pywt
.Wavelet
('db2')
print(db
)
maxlev
= pywt
.dwt_max_level
(length
, w
.dec_len
)
print("maximum level is: "+str(maxlev
))
threshold
=0.04
coffs
=pywt
.wavedec
(single_channel
,'db2',level
=maxlev
)
for i
in range(1,len(coffs
)):
coffs
[i
]=pywt
.threshold
(coffs
[i
],threshold
*max(coffs
[i
]))
datarec
=pywt
.waverec
(coffs
,'db2')
plt
.figure
(figsize
=(8, 4))
plt
.subplot
(211)
plt
.plot
(x
, single_channel
)
plt
.title
("Signal")
plt
.subplot
(212)
plt
.plot
(x
, datarec
)
plt
.title
("Restructed signal by using wavelet techniques")
plt
.tight_layout
()
plt
.show
()
2.2 分频处理
分成高低频进行处理,打印出高低频信息
ca
, cd
= pywt
.dwt
(single_channel
,'db2')
x_len
= np
.arange
(len(ca
))
plt
.figure
(figsize
=(12,4))
plt
.subplot
(121)
plt
.title
('HF')
plt
.plot
(x_len
, ca
)
plt
.subplot
(122)
plt
.title
('LF')
plt
.plot
(x_len
, cd
)
未处理时进行重构,得到的变换与原音频一样,将低频信息置为0,再进行重构,得到图像如下图
3. 实验分析与结论
通过时域图可以看到噪声与语音信号是不易分开的,因此我们可以借用其他域的图像进行分析,在进行压缩的时候可以去掉这些噪声信息,保留少量信息即可进行原语音信号的重构。首先是频域对其进行了分析,可以从图像直观的看出我们所需信息的存在范围,因此,我们可以取相应的部分频域点进行重构,按照图像将其部分频域点单独提取出来,进行傅里叶反变换,也能够实现原声音的复现。该方法可以有效进行声音的压缩与重构。通过小波域也可以将时域信号变成可以用少量有用信息表示的信号。
结论:在时域无法判断或进行有效分析的时候,可以通过其他域进行特征分析,如频域,小波域等变换域。如果信号在某一个正交空间具有稀疏性(即可压缩性),就能以较低的频率(远低于奈奎斯特采样频率)采样该信号,并可能以高概率精确的重建该信号(这句话要理解的话类同小波变换的正交基)。