最近几天APEC放假,正好看了一片有关image processing的文章。文章的主要内容是给出了一种去噪声的方法,没有用到现在很火的所谓大数据的东西。基本方法可以说是用到了稀疏表示和部分的字典学习的思想。
名字叫 An Analysis and implementation of the BM3D Image Denoising Method, 发表在了2012年的期刊 Image Processing On Line(IPOL)上。文章的第二个优点是给出了开源的代码,在IPOL的官网上,还有本文的一个demo。
本文的算法主要分为两步,两个步骤的算法内容基本一样,但是对最后输出的贡献不同。大体的思想是,第一步主要是对图像做一个基本的预测,第二步在第一步的基础之上对加入图像的细节,对图像进行滤波和去噪,减少块效应和振铃效应。同时,两个步骤中所用到的数学工具也不同,变换有DCT变换和正交B样条小波变换(文中用bior表示)。此外,第二步中使用的去噪算法还用到了维纳过滤,而第一步的滤波器仅使用了一个阈值作为截断。
可以看到两个步骤的基本思路相同,但是各个子模块的选择不同,首先是group过程,这个过程是将相似的图像块聚类的过程,两步是用输入进行一个由二维到三维的影射。然后将三维的图像进行YUV或者OPP的变换,再通过滤波器,最后将滤波器的输出做反变换。不同的是,在两个步骤中的变换核的选择以及滤波器的选择不同。
在论文的网站上可以下到他们开放的源码。是在Linux下运行的,需要安装两个库,一个是用于图像读取的库libpng,直接在命令行里
sudo apt-get install libpng-dev
即可
另一个是用于计算离散傅里叶变换的fftw库。在使用的时候需要注意的是,fftw库在安装的时候是默认安装的整数变换,装好了之后在/usr/local/lib里是fftw3.a文件,但是在代码中要使用的默认浮点运算的离散傅里叶变换。在装好了之后是fftw3f.a文件。http://www.fftw.org/下载。安装分三步
1.解压tar zxvf fftw3.3.4.tar.gz
2.cd到解压文件夹中 ./configure --enable-float 其余默认即可
3.make 然后make install
在运行时请根据readme.txt文件选择参数和输入图像。正在调整参数测试中,剩下以后再补吧