在此稍微说一下小波阈值去噪。手写程序,不调用函数。目的是用来解决各个学校的大作业问题。不用来解决任何实际问题。
首先要了解一下小波变换从老根上讲就是做卷积。一个信号,或者一个图片,与小波的高通部分做卷积,得出的系数是高频系数,与小波的低通部分做卷积得出低频系数。
以一张图片小波阈值去噪为例,讲一下整个编程过程。
第一是准备阶段:一张图片是三种数据:高度、宽度和色彩度。编程以经典的二维小波变换为例,所以要去掉图片的色彩度(命令自己搜,这里建议用Matlab,Matlab软件天下第一,垃圾C++,垃圾python)。对图片加入噪声,可以选择高斯噪声或者椒盐噪声,以高斯噪声为例,选好合适的噪声方差和均值。到此准备阶段结束。
第二是小波分解过程:读取加入噪声后的图片后,数据即是高度*宽度个数据点。对此矩阵数据要做二维离散小波分解,二维小波变换和一维小波变换的区别从原理上来说就是一和二的关系。首先对数据做行分解,写入循环,有多少行就做多少次小波分解。对于每一行的数据来说,做小波分解就是一维的,而一维小波分解就是咱们要写的程序中的基石。选择小波,以Haar小波为例,也叫db1,用函数调用此小波,将咱们的数据(就是之前的行数据)先与高通做卷积得出高频系数,这里建议卷积过程别手写,计算太慢了,计算函数直接调用即可。然后使用下采样得出高频系数cD,再与低通做卷积加下采样得出低频系数cA。这里说明一下由于是下采样,所以得到的每个系数矩阵是原矩阵的一半大小。最后将低频系数cA和高频系数cD组成系数矩阵。这是一次小波分解,如果需要二次小波分解,则是按照小波分