原载 http://blog.sina.com.cn/s/blog_729a92140101p6ob.html 在信噪比很高的实验条件下,降噪后的波形图可能看起都很“完美”,但是,实际上,失真和畸变可能已经引入了相当大的绝对误差、和信噪比下降。例如,即使在变换域不做任何处理,经某“正变换、逆变换对”的处理后,也可能造成了误差。 在低信噪比条件下,对降噪后的波形的主观评价,更可能相当不一致。看起来,更好(如,光滑,舒服感)的结果,实际上均方根误差却更大、信噪比较低;均方根误差减小时,而视觉效果反而很差,例如残余的成簇噪声可给人以变态、面目全非的印象。在陈述降噪结果时,专门找“坏的”波形例子,一般不必要,只找“好的”,则可能使人感到“吹牛”——某名人在谈到写自传时,表达了类似的意思。 单个实验的波形图,可作为初级示例,是易于被普通观众感知的直观表达,但是专业参考价值太低,不能反映成功的几率,更不能取代批量处理的统计结果。幸运的是,计算机技术的发达,使研究者可以更快地浏览和统计大量的实验数据样本,尽可能少地引入主观选择、主观判断,发现问题,解决问题,明确各方法的适用条件,步步高升。 实际上,信噪比(SNR)这个概念术语的使用中,“信号”和“噪声”的内涵也并未绝对统一。例如,直流成分的问题。 在Matlab-R2011a的小波工具箱中,用函数wnoise生成小波变换降噪的测试信号(Donoho与Johnstone),其用输入参数SQRT_SNR的平方表示SNR( % = WNOISE(FUN,N,SQRT_SNR) returns the previous vector X % rescaled such that std(x) = SQRT_SNR. The returned vector XN % contains the same test vector X corrupted by an % additive Gaussian white noise N(0,1). Then XN has a % signal-to-noise ratio of (SQRT_SNR^2))。 SQRT_SNR即是居士在博客中使用的NFSA。 在最新的Matlab的《R2014a用户指南》(“Wavelet ToolboxTM User’s Guide”)中,峰值信噪比“ Peak Signal to Noise Ratio ( PSNR )”,在5-67页,用像素的最大值的平方,表示图像信号的功率。用均方误差表示“噪声”功率,与居士用RMSE评估降噪的结果相一致。 该手册,在5-17页,谈到Cycle Spinning和普通离散小波变换降噪的经典函数wden时,使用的信噪比SNR定义式,把本该在分母上的表示序列长度的N,误放到了分子上。居士认为,其程序不可能这样计算,这属于“行文Bug”,是小问题。它不致理论障碍、和方法致命缺陷。但是,那里说的也正是wnoise的bumps信号,该信号有较大的直流成分,其SNR定义式,用序列值的模的平方和,表示信号能量,对直流的处理未明确交代,那么已不必就与过去的SQRT_SNR一致。 在以分贝( dB)为单位时,使用MSE(均方误差、误差的模平方的均值)与使用RMSE(均方根误差、MSE的平方根)是一样的,使用“幅度”和使用“幅度的平方”表示无噪信号的强度是相同的,也都有0的对数log(0)的问题。 在前面讨论小波包时,关于最佳基的选择的代价函数,提到了一个习惯:E(0)=0,即0的熵(log(0)无意义)被约定为0。这在文献中很常见。问题在于,log(1)=0,这使1的熵也为0。为避免这个麻烦,数据常需要适当地规范化。为叙述方便,不妨称这种“冲突”为,“零熵模糊”。 如果, 与上面零熵的情形类似,令SNR式中的log(0)=0,那么也不能区别于log(1)=0。不妨称这种现象为,“零分贝模糊”。使用NFSA为横轴(dB)、负RMSE为纵轴(dB),可图示降噪结果。一般说来纵轴可表示SNR的增量,但是,如果降噪处理前的NFSA(横坐标值)小于零,横、纵坐标值之和也不“显著”大于零,那么,即使纵坐标值非常大,这种结果的意义,已变得模糊。例如,直接令降噪结果信号恒为0值,可能得RMSE约等于NFSA,也就得增量为NFSA的相反数。宜避免用小于零的NFSA值。 在居士的降噪程序中设置了“无信号”警告,可能强调这一问题。然而,在大批量重复实验中,太多的警告烦人时,不得不先运行warning(‘off’)予以屏蔽。 纵坐标值为负,不管怎样,都表明“处理性能差”。计算引入的数字误差、门限处理时引入的损伤等,已起主导作用,超过了原有的白噪声的“危害”。在极高信噪比的试验中,也可能看到在程序中设置的“无噪声”警告。相应方法已不能降噪。 使用博文《结合移位(Cycle-Spinning)平均的小波包域降噪的程序》(2013-10-15)中的程序,TDen3Signals.sci,仅修改NFSA的赋值(80:20:180)和极少的图形标注字符,然后运行,可得结果如图片1.所示。用软门限方法或阈值偏大时,例如“Soft Power”,在高信噪比的实验条件下,更易出现信噪比不增加反而下降的情形。 在用Donoho阈值的处理中,不做“无噪声”和“无信号”警告。但并不允许随意而为,而且情况更复杂。在图片1.中,基于Donoho的“SURE”的结果,从一个信号到另一个信号之间,表现出了更剧烈的性能“跳变”。过去,在利用“先验基”和整顿“额外极点”的试验中,也可以察觉性能“跳变”。这些不是居士将Donoho阈值用于小波包的特有问题,而可能是Donoho处理方法固有的隐患。 Donoho阈值的计算,假设了噪声标准差是已知固定的( %THSELECT Threshold selection for de-noising. % THR = THSELECT(X,TPTR) returns threshold X-adapted value % Threshold selection rules are based on the underlying % model y = f(t) + e where e is a white noise N(0,1).)。 数据序列的长度,卷入其中,未必显示了对 SNR的考虑结果。早期的Matlab小波工具箱,就已把Donoho的离散小波变换降噪,置于重要地位,但其变换的主体,并不支持per模式(此外:它也还不能直接做居士已离开的“连续小波变换”——这绝不意味着谁更好或更差,但最新的手册,已显示了丰富的连续变换的内容)。函数wden中,用输入参数SCAL对噪声重定标,不同尺上用不同的阈值,非per模式中的变换结果的数据序列的长度随滤波器和分解深度的不同而不同,这些都更使阈值计算难被“直观地”把握。 在Matlab命令窗中,运行: clear; format shortG; format compact dwtmode('zpd'); % common, in the Help tR={'rigrsure';'sqtwolog';'heursure';'minimaxi'}; init = 2055615866; Er0 = zeros(100,4); % error lv = wmaxlev(2^8, 'sym8');% allowed maximal level for tN = 1:4, % soft-threshold-rule index for sp = 1:100, % wnoise,signal 6,snr=(sp/2)^8 = wnoise(6, 8, (sp/2)^8, init); xd = wden(xn, tR{tN},'s','one', lv, 'sym8'); Er0(sp,tN) = norm(xd-x)/norm(xn-x); end % error norm ratio, in Er0 end % almost invariable norm(xn-x) disp(date); disp(max(Er0)); % display subplot(2,1,1);loglog(((1:100)/2).^8',Er0);% plot axis tight; grid on; xlabel('snr in =wnoise(6,8, snr, init)'); ylabel('norm(xd-x)/norm(xn-x)'); % RMSE ratio title('Error Increase in xd=wden(xn, ...) ?'); legend(tR,'Location','NorthWest'); subplot(2,1,2); plot(x); axis tight; title('Last x in =wnoise(...)'); 可得图片 2.的曲线图。 这里使用了Matlab文档资料中常见的降噪函数及其主要参量设置(如随机数种子、zpd模式、计算得分解深度)。所用的信号,其时间带宽积大,是与Donoho有关的测试信号中难以处理的一个例子。大部分情况下,Er0的几条曲线,都“在 1 以上”,表明了,“噪声”不减小,反而“被放大”。尤其引人注意的是,与“rigrsure”有关的“值超过2000的短暂突起”,以及相应的阈值“heursure”在阈值“rigrsure”与阈值“sqtwolog”之间的复杂切换。 把上段程序中的dwtmode(‘zpd’)改为dwtmode(‘per’),即用最小周期化模式;分解深度改为lv=8,即做最彻底的分解。再运行,得图片3.的结果。“突起”部分,更宽;更高,达几百万。 用前面提到的信号bumps, 用R2014a最新手册中的长度参数(10)、小波名称(sym4),且强行减小一级分解(10-1=9)。再实验,得图片4.,比图片3.的结果,还更糟十万倍。 新浪赛特居士SciteJushi-2014-04-12。 图片 1. 高信噪比条件下的Tpwp降噪使信噪比下降 图片 2. 小波变换(zpd,wmaxlev)降噪的性能对信噪比条件的依赖 图片 3. 小波变换(per,max level)降噪的性能对信噪比条件的依赖 图片 4. 小波变换(per,max-1 level)降噪的性能对信噪比条件的依赖
SIGPRO 2012.pdf Nature391(1998)what can SR do.pdf 1998年M I Dykman教授在《Nature》上发表了“What can stochastic resonance do?” 这个论文对于我的感触很大。 Dykman教授认为,基于LRT-线性响应理论,输出信噪比大于输入信噪比的可能性在高斯噪声环境中是不可出现的。 然而随着时间的过去,我们从基本理论上证明了,信噪比增益,输出信噪比与输入信噪比的比值,是可以大于一的,问题的关键在于噪声的类型是什么,在一个次优的系统中,随机共振现象存在,这个可能性是能够被证明,当然这个可能成立的假设是弱信号,观测数目足够大等条件。 这个证明的关键是Fisher信息量为信噪比增益的上界。 有关文献见附件。