💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
摘要——噪声水平是许多图像处理应用。例如,性能图像去噪算法可能会因以下原因而严重退化噪声水平估计较差。大多数现有的去噪算法简单地假设噪声水平是已知的,这在很大程度上可以防止他们从实际使用。此外,即使给定真实噪声水平,这些去噪算法仍然无法达到最佳性能,特别是对于具有丰富纹理的场景。在这个在论文中,我们提出了一种基于补丁的噪声水平估计算法并建议调整噪声水平参数根据场景的复杂性。我们的方法包括选择低秩补丁而不选择高频补丁的过程从单一噪声图像中提取组件。选择是基于关于斑块的梯度及其统计。那么使用主成分分析从所选的补丁中估计噪声水平成分分析。因为真实的噪声水平并不总是为非盲去噪算法提供最佳性能,我们进一步调整了非盲去噪的噪声水平参数。实验证明,该方法的准确性和稳定性都得到了提高优于现有技术噪声水平估计算法适用于各种场景和噪声水平。
关键词——噪声水平估计、低秩块、图像梯度、PCA、盲去噪、高斯噪声。
噪声水平是许多图像的重要参数处理诸如去噪、分割等应用。例如,图像的性能由于噪声质量差,去噪算法可能会严重退化噪声水平的估计。大多数现有算法都解决了以下问题通过简单地假设已知真实的噪声水平,可以解决这个问题。但在现实世界中,只有嘈杂的输入图像并且用户必须预先提供噪声水平。到目前为止准确估计噪声水平仍然是一个挑战对于各种输入图像,特别是对于那些具有丰富纹理。因此,一种鲁棒的噪声水平估计算法需求量很大。最常见的噪声模型是加性白噪声高斯噪声(AWGN)。噪声水平估计的目标是估计未知的标准偏差σn,仅给定单个观察到的有噪声的图像。许多算法[1]–[6]已经已为该主题提出。一般来说,它们是可分类的基于滤波器的方法、基于补丁的方法和统计方法。在基于滤波器的方法[1]、[3]、[4]中,首先使用高通滤波器对噪声图像进行滤波,以抑制图像结构。那么噪声方差为根据噪声图像和原始图像之间的差异计算过滤后的图像。基于滤波器的方法的主要困难假设两幅图像的差异是噪音,但这种假设并不总是正确的,特别是对于具有复杂结构或精细细节的图像。在基于补丁的方法[2]、[5]、[7]中,图像被分解成许多补丁。我们可以考虑一幅图像补丁作为图像中的矩形窗口,大小为N×N。在分解的斑块中,标准偏差最小的斑块具有最小的强度变化。强度均匀斑块的变化主要是由噪声引起的。Shin等人[5]提出了一种基于补丁的方法,其中强度标准偏差接近于分解后的斑块之间的最小标准偏差为挑选出来的。然后,根据所选的补丁。该算法简单有效,但往往对于小噪声水平的情况,高估噪声水平,并且在噪声水平较大的情况下,被低估了。原因在于补丁选择结果因输入而异图像和噪声水平。最近,Zoran和Weiss[8]提出了一种统计对DCT滤波图像进行分析的方法,并建议峰度值的变化是由所呈现的噪声引起的。他们提出了一种利用这种效应来估计噪声的模型在噪声污染的自然图像中。在比较了之前几项研究的结果表明他们的方法优于现有技术。图像去噪的研究有着悠久的历史从20世纪70年代开始,但它的性能仍然不够完美。根据噪声级σn是否已知,它们可以分为盲去噪和非盲去噪。For非盲去噪,噪声水平σn被视为已知参数。对于盲去噪,噪声水平σn是未知的并且通常与去噪过程一起估计。因此,去噪算法的一个重要问题是噪声水平参数设置。大多数现有的算法都是非盲去噪,通过手动解决这个问题提供了真实的噪声平。然而,即使有真正的噪音水平,非盲去噪的性能仍然没有总是最好的。
📚2 运行结果
部分代码:
% NoiseLevel estimates noise level of input single noisy image.
%
% [nlevel th num] = NoiseLevel(img,patchsize,decim,conf,itr)
%
%Output parameters
% nlevel: estimated noise levels.
% th: threshold to extract weak texture patches at the last iteration.
% num: number of extracted weak texture patches at the last iteration.
%
% The dimension output parameters is same to channels of the input image.
%
%
%Input parameters
% img: input single image
% patchsize (optional): patch size (default: 7)
% decim (optional): decimation factor. If you put large number, the calculation will be accelerated. (default: 0)
% conf (optional): confidence interval to determin the threshold for the weak texture. In this algorithm, this value is usually set the value very close to one. (default: 0.99)
% itr (optional): number of iteration. (default: 3)
%
%Example:
% img = double(imread('img.png'));
% nlevel = NoiseLevel(img);
function [nlevel th num] = NoiseLevel(img,patchsize,decim,conf,itr)
if( ~exist('itr', 'var') )
itr = 3;
end
if( ~exist('conf', 'var') )
conf = 1-1E-6;
end
if( ~exist('decim', 'var') )
decim = 0;
end
if( ~exist('patchsize', 'var') )
patchsize = 7;
end
kh = [-1/2,0,1/2];
imgh = imfilter(img,kh,'replicate');
imgh = imgh(:,2:size(imgh,2)-1,:);
imgh = imgh .* imgh;
kv = kh';
imgv = imfilter(img,kv,'replicate');
imgv = imgv(2:size(imgv,1)-1,:,:);
imgv = imgv .* imgv;
Dh = my_convmtx2(kh,patchsize,patchsize);
Dv = my_convmtx2(kv,patchsize,patchsize);
DD = Dh'*Dh+Dv'*Dv;
r = rank(DD);
Dtr = trace(DD);
tau0 = gaminv(conf,double(r)/2, 2.0 * Dtr / double(r));
%{
eg = eig(DD);
tau0 = gaminv(conf,double(r)/2, 2.0 * eg(patchsize*patchsize));
%}
for cha=1:size(img,3)
X = im2col(img(:,:,cha),[patchsize patchsize]);
Xh = im2col(imgh(:,:,cha),[patchsize patchsize-2]);
Xv = im2col(imgv(:,:,cha),[patchsize-2 patchsize]);
Xtr = sum(vertcat(Xh,Xv));
if( decim > 0 )
XtrX = vertcat(Xtr,X);
XtrX = sortrows(XtrX')';
p = floor(size(XtrX,2)/(decim+1));
p = [1:p] * (decim+1);
Xtr = XtrX(1,p);
X = XtrX(2:size(XtrX,1),p);
end
%%%%% noise level estimation %%%%%
tau = Inf;
if( size(X,2) < size(X,1) )
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈4 Matlab代码、文章下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取