图像去噪重要文献整理(一)NL-means / single image SR

图像去噪重要文献整理(一)

根据之前的ppt,整理一下图像去噪相关的重要文献和方法,包括传统方法和深度学习方法。


这里写图片描述
这里写图片描述

由于空域和变换域滤波是比较基本的图像处理方法,所以在此不进行讨论。我们从传统方法的第二个,也就是基于图像的自相似性的方法开始进行整理:

A non-local algorithm for image denoising (2005)

Antoni Buades et .al.


这里写图片描述

这个是NL - means的文章,首先,作者对图像去噪算法做了一个概括,说他们的出发点都是这个basic remark : denoising is achieved by averaging. 而这个average具体的操作可以有不同,可以是locally的,可以是anisotropic filtering,可以是neighborhood filtering,或者是对variation的计算,就是Total Variation minimization,还有在频域的empirical Wiener filtering,以及小波阈值的方法。

总结完之后,作者提到,对于传统的方法,往往在去噪的同时损伤了有效信号的fine details,所以它给出了一个叫做【算法噪声】 的评判指标,实际上就是把去噪后的结果与真实答案进行比对。以前可能比较强调PSNR,没有注意到是不是可以保护细节。另外,这个评价指标实际上也是为了说明NL-means的优于别人的特性。

NL-means的基本的公式和解释如下:实际上就是找像素点附近的小patch相似的点给它赋予较大的权重,进行平均。


这里写图片描述

下面计算了一些常规去噪方法的method noise,主要有Gaussian filtering,anisotropic filtering,TV minimization,neighborhood filtering,这里的neighborhood同时还包括值域的neighborhood,也就是用和某个像素点的邻域中值很接近的像素点来计算,比如SUSAN filter和双边filter。(We call neighborhood filter any filter which restores a pixel by taking an average of the values of neighboring pixels with a similar grey level value.)

NL-means就是利用了图像的自相似性,理论上对每个点都进行加权,权重就是patch相似度,也就是2范数的一个减函数,基本公式如下:


这里写图片描述
这里写图片描述

然后这是一些栗子,可以看出可以很好的找到相似的pixel。


这里写图片描述

在实现过程中,由于速度慢,所以并不是对所有的都加权,需要设定一个search window,作者实验用的是21×21,而patch用的是7×7,而且,为了适应更大的噪声,h可以增大。7×7足够大到可以对于噪声鲁棒,也足够小可以提取fine structure,因此最后method noise对比很感人。


这里写图片描述

Super-Resolution from a Single Image (2009, ICCV)

Daniel Glasner et. al.

这个不是图像去噪,而是超分辨率,之所以浏览一下是因为这个的基本思想也是基于自然图像中的patch recurrence,而且它的测试用例也都是这样的图像。这个recurrence指的是 across scales的。


这里写图片描述

example-based SR 指的是通过学习database中的高低分辨率的对应关系然后应用于low resolution去提高分辨率。但是这样的SR方法可能无法保证提供的就是真实的高分辨率的细节。

In the classical SR, this high-frequency information is assumed to be split across multiple low-resolution images, implic-
itly found there in aliased form. In example-based SR, this missing high-resolution information is assumed to be available in the high-resolution database patches, and learned from the low-res/high-res pairs of examples in the database.

Our approach is based on an observation (justified statistically in the paper) that patches in a single natural image tend to redundantly recur many times inside the image, both within the same scale, as well as across different scales.

作者提到了NL-MEANS也是基于patch repetition的想法做的去噪,这种自相似性是解决反问题的一个正则化的先验知识。并且提到了一些其他的SR方法也利用了这一点。

本文中的Single Image SR 是一个unified framework,就是classic和example-based的结合。


这里写图片描述

对于不同scale得到的similar patch,直接copy。效果展示用了一个尺度间重复很严重的图,所以效果很明显。


这里写图片描述

在这个unified 框架中,example-based SR起到的作用比较大,对分辨率提升性能贡献较大,但是classical的作用是可以防止出现假的细节preventing the Example-Based SR component from hallucinating erroneous high-res details。

由于这个不是去噪的文献,所以只做一下了解。

2018年03月17日15:56:02

人的一生有两件事情不可避免:一是死亡;二是税收。 —— 政治家 本杰明 富兰克林

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,下面是一个简单的NL-means去噪MATLAB算法: ```matlab function [denoisedImg] = nlMeansDenoising(noisyImg, patchSize, windowSize, h) % Input: % noisyImg - 带有噪声的图像 % patchSize - 每个块的大小 % windowSize - 用于搜索相似块的窗口大小 % h - 控制去噪强度的参数 % Output: % denoisedImg - 去噪后的图像 % 转换为灰度图像 if size(noisyImg, 3) == 3 noisyImg = rgb2gray(noisyImg); end % 复制一份噪声图像作为去噪后的图像的初始值 denoisedImg = double(noisyImg); % 计算图像中每个像素周围的块 halfPatchSize = floor(patchSize/2); halfWindowSize = floor(windowSize/2); [rows, cols] = size(noisyImg); paddedImg = padarray(noisyImg, [halfWindowSize halfWindowSize], 'symmetric'); for i = 1+halfWindowSize:rows+halfWindowSize for j = 1+halfWindowSize:cols+halfWindowSize % 获取以(i,j)为中心的块 i1 = i - halfPatchSize; i2 = i + halfPatchSize; j1 = j - halfPatchSize; j2 = j + halfPatchSize; patch = paddedImg(i1:i2, j1:j2); % 在以(i,j)为中心的窗口内搜索相似块 w1 = i - halfWindowSize; w2 = i + halfWindowSize; h1 = j - halfWindowSize; h2 = j + halfWindowSize; searchWindow = paddedImg(w1:w2, h1:h2); [searchRows, searchCols] = size(searchWindow); minMSE = Inf; for m = 1:searchRows-halfPatchSize*2 for n = 1:searchCols-halfPatchSize*2 % 获取搜索窗口中的相似块 m1 = m + halfWindowSize; m2 = m + halfWindowSize + patchSize - 1; n1 = n + halfWindowSize; n2 = n + halfWindowSize + patchSize - 1; similarPatch = searchWindow(m1:m2, n1:n2); % 计算均方误差 mse = sum(sum((patch-similarPatch).^2))/(patchSize^2); % 记录最小的均方误差和相似块的位置 if mse < minMSE minMSE = mse; minM = m; minN = n; end end end % 计算权重并进行去噪 weightSum = 0; weightedPatchSum = 0; for m = minM:minM+patchSize-1 for n = minN:minN+patchSize-1 % 获取搜索窗口中的相似块 m1 = m + halfWindowSize; m2 = m + halfWindowSize + patchSize - 1; n1 = n + halfWindowSize; n2 = n + halfWindowSize + patchSize - 1; similarPatch = searchWindow(m1:m2, n1:n2); % 计算相似块与目标块的权重 weight = exp(-minMSE/(h^2)); weightedPatchSum = weightedPatchSum + weight*similarPatch; weightSum = weightSum + weight; end end denoisedImg(i-halfWindowSize, j-halfWindowSize) = weightedPatchSum/weightSum; end end % 转换图像类型为uint8 denoisedImg = uint8(denoisedImg); end ``` 其中,`noisyImg`为带有噪声的输入图像,`patchSize`为每个块的大小,`windowSize`为用于搜索相似块的窗口大小,`h`为控制去噪强度的参数。函数返回去噪后的图像`denoisedImg`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值