我在某个地方读到了去噪的地方,使用了4级小波变换。有人能让我明白这有多大帮助吗?
发布于 2015-07-03 10:47:55
其基本思想是,对于“真”(无噪声)图像,DWT是稀疏的,即大部分“图像能量”集中在几个孤立的DWT桶中,而噪声的DWT也是噪声--它在DWT中的分布或多或少是均匀的。在噪声的海洋中找到几个稀疏的峰值要比重建有噪声的图像容易得多。
这里有一个快速而肮脏的例子来演示这个原理(下面是Mathematica源代码)。可以看出,Lena图像的DWT (离散小波变换)基本上是零的,噪声图像的DWT或多或少是纯噪声。lena +噪声的DWT是两个DWTs之和(即DWT是线性变换)。选择这个DWT中最大的N值,并从这些值中重建图像,在保留边缘的同时有效地去除噪声,但它也去除了这种特定小波(CDF)不能很好地表示的结构,即纹理和对角线边缘:

Mathematica代码:
img = ImageResize[ExampleData[{"TestImage", "Lena"}], 256]
wf = CDFWavelet[];
noise = Image[
RandomVariate[NormalDistribution[], ImageDimensions[img]]*0.05 +
0.5];
noisyImg = Image[ImageData[img] + ImageData[noise] - 0.5];
Grid[
{
{Image[img, ImageSize -> 256], " DWT => ",
Image[WaveletImagePlot[DiscreteWaveletTransform[img, wf]],
ImageSize -> 256]},
{Image[noise, ImageSize -> 256], " DWT => ",
Image[WaveletImagePlot[DiscreteWaveletTransform[noise, wf]],
ImageSize -> 256]},
{Image[noisyImg, ImageSize -> 256], " DWT => ",
Image[WaveletImagePlot[DiscreteWaveletTransform[noisyImg, wf]],
ImageSize -> 256]},
{Image[noisyImg, ImageSize -> 256],
" Highest 5000 DWT coefficients => ",
Image[InverseWaveletTransform[
WaveletThreshold[
DiscreteWaveletTransform[noisyImg, wf], {"LargestCoefficients",
5000}]], ImageSize -> 256]}
}]https://stackoverflow.com/questions/31203497
复制相似问题