今天为大家介绍一个快速有效的噪声(高斯白噪声)估计算法。算法源于论文“Fast and Reliable Structure-Oriented Video Noise Estimation”,这里为大家做一下总结并给出自己实现的matlab源码。

算法的出发点非常简单,就是用选择均匀块进行噪声估计,防止图像本身结构带来的灰度波动被误视为噪声造成噪声水平的高估。算法的特别之处主要在于给出了一种简单高效可靠的均匀性度量方法,可以避免将具有结构信息的块纳入度量过程。这个度量方法锁起来也很简单,就是用fig1所示四个直线方向与四个折角方向的算子作用于块上获得的响应绝对值之和(图中深灰色值为1,算子中各元素和为0,算子可以为3x3,5x5等尺寸)。

算法的处理流程也非常简单,首先是选出K个最均匀的块作为候选块,然后用其中3个最均匀的块中灰度方差居中的块作为图像的代表性块(该块的PSNR可以算出),然后找出候选块中PSNR值与代表块的PSNR相差\pm 3dB以内(或方差在所设定波动范围内)的块用来估计噪声。用它们的方差和除以块数即得到噪声的方差,求平方根便得出了噪声的标准差。

下面给出我自己实现的matlab代码(其中f5x5.mat和f3x3.mat是存储8个方向算子的mat文件,论文推荐5x5算子,实践中效果的确不错。找出K个最均匀块时可以记录下来方差最大与次大值的位置,因为旧的最大值被顶掉了,新的最大值一定在原来的次大值与新加入的值之中。这样可以加快运算。这里我就不做这一步优化了。程序中对算法做了一个改进,就是考虑到图像灰度级的有限性,在进行灰度截断时会损失掉部分噪声信息,故而所有包含0或255的块都不参与运算):

function sigma=NoiseEstimation(CFAN,windowsize,K)
if ~exist('K','var')K=50;
end
if ~exist('windowsize','var')windowsize=5;end
if windowsize==5load('f5x5.mat')
elsewindowsize=3;load('f3x3.mat')
end
width=size(CFAN,2);
height=size(CFAN,1);
radius=floor(windowsize/2);minMeasValArr=10000+(1:K);
varArr=9*255^2+(1:K);
for i=radius+1:height-radiusfor j=radius+1:width-radiusblock=CFAN(i-radius:i+radius,j-radius:j+radius);if min(block(:))==0 || max(block(:))==255continue;endmeasVal1=abs(sum(sum(block.*f1)));measVal2=abs(sum(sum(block.*f2)));measVal3=abs(sum(sum(block.*f3)));measVal4=abs(sum(sum(block.*f4)));measVal5=abs(sum(sum(block.*f5)));measVal6=abs(sum(sum(block.*f6)));measVal7=abs(sum(sum(block.*f7)));measVal8=abs(sum(sum(block.*f8)));totalMeasVal=measVal1+measVal2+measVal3+measVal4+measVal5+measVal6+measVal7+measVal8;maxValofKMins=max(minMeasValArr);if totalMeasVal<maxValofKMins  % the K most homogeneous blocksindex=find(minMeasValArr==maxValofKMins);minMeasValArr(index(1))=totalMeasVal;varBlock=var(block(:));varArr(index(1))=varBlock;endend
end
min3vals=mink(minMeasValArr,3);
index1=find(minMeasValArr==min3vals(1));
index2=find(minMeasValArr==min3vals(2));
index3=find(minMeasValArr==min3vals(3));
index=[index1,index2,index3];
var1=varArr(index(1));
var2=varArr(index(2));
var3=varArr(index(3));
medianVar=median([var1,var2,var3]);
refPSNR=10*log10(255^2/(medianVar+0.0001));
sumVar=0;
num=0;
for i=1:Kpsnr=10*log10(255^2/(varArr(i)+0.0001));if abs(psnr-refPSNR)<3num=num+1;sumVar=sumVar+varArr(i);end
end
sigma=sqrt(sumVar/num);
end

————————————————
版权声明:本文为CSDN博主「光电学子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014230360/article/details/107019663/

————————————————
版权声明:本文为CSDN博主「光电学子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014230360/article/details/107019663/

快速可靠的高斯白噪声估计算法相关推荐

  1. 【老生谈算法】matlab实现高斯白噪声仿真算法源码——高斯白噪声

    高斯白噪声的建模与仿真matlab实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]高斯白噪声的matlab实现.doc ...

  2. 快速傅里叶变换载波频偏估计算法 matlab,快速傅里叶变换载波频偏估计算法

    快速傅里叶变换 第11卷 第2期 电路与系统学报 Vol.11, No.2 2006 年 4 月 JOURNAL OF CIRCUITS AND SYSTEMS April, 2006 文章编号:10 ...

  3. 高斯白噪声下基于EM的多径时延估计

    本文主要来源于复现文献的部分内容,有一定的参考价值: [1] 刘波. 基于EM的突发通信参数估计技术研究[D]. 2009. 文末有代码和参考文献网盘下载地址,有问题欢迎留言交流! 1 引言 对于多径 ...

  4. 其他算法-高斯白噪声

    定义 首先,明白一阶矩是随机变量的期望,二阶矩是随机变量平方的期望,(二阶中心距是随机变量与期望差的平方的期望,即方差): 自相关系数 功率谱 横坐标为频率,纵坐标为功率: 白噪声 信号的功率谱等于常 ...

  5. python 高斯白噪声-python白噪声

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声是时间序列预测中的一个重要概念. 如果一个时间序列是白噪声,它是一 ...

  6. 姿态估计算法汇总|基于RGB、RGB-D以及点云数据

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Tom Hardy@知乎 来源丨https://zhuanlan.zhihu.com/p/305 ...

  7. 无源定位之时差估计的精确时差估计算法(ETDE)及MATLAB实现程序

    精确时差估计算法(ETDE)及MATLAB实现程序 算法原理 算法总结 性能分析 实验结果 算法原理 假设两接收站分别接收的带噪信号为 {x(kT)=s(kT)+ε1(kT)y(kT)=s(kT−D) ...

  8. 6D姿态估计算法汇总

    文章目录 标题 6D姿态估计的算法 1.GDR-Net: Geometry-Guided Direct Regression Network for Monocular 6D Object Pose ...

  9. 用于持续医疗监测的无袖带血压估计算法【翻译】

    用于持续医疗监测的无袖带血压估计算法 摘要 持续的血压监测可以提供有关个人健康状况的宝贵信息.然而,传统的BP测量使用的是不方便的袖带式仪器,这阻碍了对BP的连续监测.本文提出了一种基于脉搏到达时间( ...

最新文章

  1. 使用jq.lazyload.js,解决设置loading图片的问题
  2. matlab双重for训话,Question 2:
  3. Python实现单例模式常量类
  4. MongoDB搭建和简单操作(windows环境)
  5. 文件读取 linux_Linux 进程、线程、文件描述符的底层原理
  6. rstudio安装包_如何安装R与Rstudio
  7. 七种实现左侧固定,右侧自适应两栏布局的方法
  8. pycharm error:no module named caffe
  9. mmap 通过地址映射读写文件
  10. 计算机专业 学习路线
  11. NVIDIA Nsight Eclipse 安装
  12. SIFT特征提取原理
  13. vs窗体应用程序c语言,使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)...
  14. STM32F10x_StdPeriph_Template
  15. 计算机主板与电源固定,搬动电脑也有讲究,有网友这样一波操作,电脑主板和电源直接报废...
  16. 网页设计如何排成一列_HTML页面布局怎么设计(图文)
  17. tomcat配置启动端口和默认项目及默认404
  18. 学生宿舍管理项目开发计划书_学生宿舍管理系统项目计划书.doc
  19. 【SAP-SD】史上最全的SAP凭证类型总结
  20. C++ find函数详解

热门文章

  1. “应聘、户口、档案、合同法”经验交流
  2. 超宽带技术的定位原理(转载)
  3. Cookie、session和localStorage、以及sessionStorage之间的区别
  4. mysql版本升级导致的时区问题
  5. SpringMVC的数据校验
  6. 从人工到智能!百度AI开发者大会分论坛,探寻国球乒乓背后的AI之路
  7. Windows下自动化批量运行CMD命令
  8. 根据域名查找IP地址
  9. 名词解释——对称加密、非对称加密、摘要、数字签名、数字证书
  10. 微信小程序:实用多功能工具箱微信小程序源码