我在某处读取了噪声去除使用4级小波变换。任何人都可以让我明白它真的有用吗?
答案 0 :(得分:1)
基本思想是“真实”(无噪声)图像的DWT是稀疏的,即大多数“图像能量”集中在几个隔离的DWT箱中,而噪声的DWT也是噪声 - 它在DWT箱中或多或少均匀分布。并且在噪声海洋中找到一些稀疏峰值比重建噪声图像更容易 。
这是一个快速而简单的示例来展示原理(下面的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]}
}]
答案 1 :(得分:-1)
Wavelet转换可以像傅立叶变换一样通过压缩降低质量来帮助您,因此一些细节和噪声可能会消失。
我建议您尝试Gaussian blur过滤图像中的单调噪音。就我而言,它比其他方法更有效,包括小波。