今天为大家介绍一个快速有效的噪声(高斯白噪声)估计算法。算法源于论文“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. 【原】IOS文件操作
  2. fusioncompute中cpu可以设置的qos参数有哪些?_kubernetes 中 Qos 的设计与实现
  3. Xamarin XAML语言教程使用使用Progress属性设置当前进度
  4. linuex查看繁忙_如何用九条命令在一分钟内检查Linux服务器性能?
  5. python通过pip安装包,提示 pip 不是内部或外部命令
  6. 【放置奇兵】天六水晶和心三水晶(宝石、心灵水晶)
  7. flutter安装教程(win7)
  8. 深度学习模型创建dataset
  9. php整数和浮点数比较,php 浮点数怎么进行比较?
  10. Win10下安装GrADS
  11. java色号_RGB颜色与16进制颜色的换算方法
  12. 如何在51单片机实现日程提醒(生日闹钟)
  13. 靠着这份“葵花宝典”,让我收到了6个大厂的offer(华为+字节+腾讯+京东+网易+滴滴)
  14. @Responsebody utf8 Chinese gibberish
  15. 掌握python字符串容器_Python字符串容器,python
  16. SpringBoot通过dubbo-spring-boot-starter整合Dubbo出现的问题
  17. mysql班级学生 一对多怎样设计表_MySQL的多表设计
  18. php会员到期怎么判断,织梦用php判断检测会员是否登录并返回会员相关信息
  19. 编译原理课堂笔记(1)编译概述
  20. 谈对Spring框架的大策大悟

热门文章

  1. 智慧农业:科技赋能农村发展
  2. 微信支付问题:WeChatNotifyActivity} did not call finish() prior to onResume() completing
  3. 多智能体系统MASs,编队控制,自适应理论,基于干扰观测器的控制DOBC,Matlab数值仿真实验
  4. [计算机组成原理]数据校验的基本原理
  5. js获取当前日期时间以及获取过去一年和半年时间以及其它操作
  6. 阿里云镜像站下载问题
  7. 催更:1006~1015题
  8. 搜狐智能媒体研发中心暑期面试
  9. Android SDK开发心得总结
  10. vue 实现当前时间到结束时间倒计时