DWT如何帮助图像增强?

时间:2015-07-03 09:38:23

标签: image-processing wavelet

我在某处读取了噪声去除使用4级小波变换。任何人都可以让我明白它真的有用吗?

2 个答案:

答案 0 :(得分:1)

基本思想是“真实”(无噪声)图像的DWT是稀疏的,即大多数“图像能量”集中在几个隔离的DWT箱中,而噪声的DWT也是噪声 - 它在DWT箱中或多或少均匀分布。并且在噪声海洋中找到一些稀疏峰值比重建噪声图像更容易

这是一个快速而简单的示例来展示原理(下面的Mathematica源代码)。如您所见,Lena图像的DWT(离散小波变换)大部分为零,噪声图像的DWT或多或少是纯噪声。 lena + noise的DWT是两个DWT的总和(即DWT是线性变换)。在这个DWT中挑选最大的N值并从中重建图像可以有效地消除噪声,同时保留边缘,但它也会去除这个特定小波(CDF)无法很好表示的结构,即纹理和对角线边缘: enter image description here

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]}
  }]

答案 1 :(得分:-1)

Wavelet转换可以像傅立叶变换一样通过压缩降低质量来帮助您,因此一些细节和噪声可能会消失。

我建议您尝试Gaussian blur过滤图像中的单调噪音。就我而言,它比其他方法更有效,包括小波。