一文理清信噪比及其应用,包含:公式与相关链接

  • 定义
  • 公式
  • python 写matlab中的加性高斯白噪声AWGN
  • 思考为什么大家都在研究高斯白噪声?
  • 心电研究常用噪声数据库
  • python合成指定信噪比 (NSTDB)
  • 去噪
  • 评估方法
  • 心电信号去噪的论文推荐

定义

信噪比的计量单位是dB,其计算方法是10lg(Ps/Pn),其中Ps和Pn分别代表信号和噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。在音频放大器中,我们希望的是该放大器除了放大信号外,不应该添加任何其它额外的东西。因此,信噪比应该越高越好
狭义来讲是指放大器的输出信号的功率与同时输出的噪声功率的比,常常用分贝数表示,设备的信噪比越高表明它产生的噪声越少。一般来说,信噪比越大,说明混在其中的有价值的信号含量越高,声音回放的音质量越高,否则相反。信噪比一般不应该低于70dB,高保真音箱的信噪比应达到110dB以上。

节选自:信噪比定义–百度百科

公式

python 信噪比函数 信噪比的算法_深度学习

这里的公式显示了,如何制作指定信噪比的噪声。

python 信噪比函数 信噪比的算法_matlab_02


这里的公式显示了,电压比率与功率比例之间的关系。

python 写matlab中的加性高斯白噪声AWGN

#####################################
# 制作含有指定SNR的高斯白噪声信号
#####################################
SNR = 10 
def wgn(x, snr):
    snr = 10**(snr/10.0)
    xpower = np.sum(x**2)/len(x)
    npower = xpower / snr
    return np.random.randn(len(x)) * np.sqrt(npower)
#定义10db信噪比的噪声
noise = wgn(signal, SNR)     #噪声长度跟信号长度一致

思考为什么大家都在研究高斯白噪声?

为何深度学习去噪研究采用高斯白噪声?——>知乎大佬回答 其实可以直接总结为:高斯噪音可能算是最好的对真实噪音的模拟

心电研究常用噪声数据库

做心电研究常用的噪声数据库——>MIT-BIH Noise Stress Test Database

这个数据库的噪声包含三种:

python 信噪比函数 信噪比的算法_信噪比_03

这个数据库的噪声是怎样加入的呢?(其实不用管,但是如果你好奇,那就研究这篇官方文档——>Namenst - noise stress test for ECG analysis programs

经常见到wfdb中,通过nst添加噪声,怎样添加的呢?这里有源码指路——>>nst: Noise stress test
Copyright © 1983-2009 George B. Moody

python合成指定信噪比 (NSTDB)

#####################################
# 制作含有指定SNR的NSTDB信号
#####################################
def gen_noise(signal,SNR):
    """
    :param signal: 原始信号
    :param SNR: 添加噪声的信噪比
    :return: 生成的噪声
    """
    noise = Noise_signals[20000:22000, 0] #取第一通道,前2000点。
    noise=noise-np.mean(noise)  #减去噪声均值  
    signal_power=(1/signal.shape[0])*np.sum(np.power(signal,2))
    noise_variance=signal_power/np.power(10,(SNR/10))
    print('噪声系数是:' + str(np.sqrt(noise_variance)/np.std(noise)))
    noise=(np.sqrt(noise_variance)/np.std(noise))*noise
    return noise

python 信噪比函数 信噪比的算法_计算机视觉_04


效果如上图所示

去噪

一般自定义一些去噪方法,再将两种去噪前后的信号对比,以评估去噪方法的有效性。
这里推荐python-scipy 生成巴特沃斯带通滤波器

以及小波变换 python MITBIH数据库 基线漂移去噪

评估方法

一般选用的参数有
COS_SIM,MSE,PRD,MAD…
公开资料很多,这里不再赘述

心电信号去噪的论文推荐

有数据了之后做点什么研究?
推荐参考这篇文章:——>DeepFilter: An ECG baseline wander removal filter using deep learning techniques

加入高斯白噪声之后的图例:

python 信噪比函数 信噪比的算法_python 信噪比函数_05