DWT 如何帮助图像增强?

How DWT help in Image enhancement?

我在某处读到要去除噪声,请使用 4 级小波变换。任何人都可以让我了解它的真正帮助吗??

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

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

基本思想是 "true"(无噪声)图像的 DWT 是稀疏的,即大部分 "image energy" 集中在几个孤立的 DWT bin 中,而噪声的 DWT也是噪声 - 它或多或少均匀地分布在 DWT bin 中。在嘈杂的海洋中找到一些稀疏的峰值比重建嘈杂的图像容易得多。

这里有一个简单的例子来说明原理(下面的 Mathematica 源代码)。如您所见,Lena 图像的 DWT(离散小波变换)大部分为零,噪声图像的 DWT 或多或少是纯噪声。 lena + noise 的 DWT 是两个 DWT 的总和(即 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]}
  }]