优化图像处理中均值和方差计算

一、均值和方差的普通优化

图像处理中,有时候会需要计算图像某区域的均值和方差。在我之前的博客中《图像比较之模板匹配》,对计算方差有做简化计算的介绍。详细介绍可以参考我之前的博文。在此,我简单的介绍下计算方差的简化方法:

按照上述方式计算均值和方差,很多应用场景下都比较合适。但是有两个缺陷:

  1. 如果均值远大于标准差,意味着方差计算中相减的两个数非常接近,将引入过度舍入的问题;
  2. 对于新增加一个统计变量重新计算其均值和方差的时候,需要对所有统计变量再重新计算,做了大量的重复工作,效率不高;

经过如下方法简化计算之后,如果新增一个变量计算全体统计变量均值和方差的时候,并不需要重新再对所有变量进行统计计算。只需要保存三个变量即可:当前统计变量数量;当前统计变量和;当前统计变量和平方和:

其BASIC语言实现方式为:

二、利用直方图信息优化均值和方差的计算

图像处理中,也常常会涉及到直方图。假若我们已知了某幅图像的直方图信息,那么我们还有更加简便有效的方式计算图像的均值和方差。我们知道图像直方图中每个bin中所代表的值是具有相同灰度值像素的数量,相当于把图像像素进行了分组统计。这就方便在计算均值和方差也可进行分组计算累加。因此,我们可以依据直方图的信息按照如下公式进行均值和方差的计算:

其BASIC语言实现为:

三、在OpenCV的简单应用

int main()
{int dims = 1;int sizes[] = {256};int type = CV_HIST_ARRAY;float range[] = {0,255};float *ranges[] = {range};CvHistogram *hist = NULL;IplImage *src_img;CvScalar Avg,Std;int i,count;double Avg_Hist = 0,Std_Hist = 0;src_img = cvLoadImage("8Bit_lena.bmp",-1);if(src_img  == NULL){printf("wrong input pic\n");return -1;}hist = cvCreateHist(dims,sizes,type,ranges,1);cvCalcHist(&src_img,hist,0,NULL);count = src_img->width*src_img->height;for(i = 0;i < 256;i++)Avg_Hist += i*cvQueryHistValue_1D(hist,i);Avg_Hist = Avg_Hist/count;printf("Avg from hist:%f\n",Avg_Hist);for(i = 0;i < 256;i++)Std_Hist += pow((i-Avg_Hist),2)*cvQueryHistValue_1D(hist,i);Std_Hist = sqrt(Std_Hist/(count));printf("Std from hist:%f\n",Std_Hist);cvAvgSdv(src_img,&Avg,&Std,0);puts("\n");printf("平均值 \n");printf("Avg in channel1:%f\n",Avg.val[0]);printf("Avg in channel2:%f\n",Avg.val[1]);printf("Avg in channel3:%f\n",Avg.val[2]);printf("Avg in channel4:%f\n",Avg.val[3]);printf("方差\n");printf("Std in channel1:%f\n",Std.val[0]);printf("Std in channel2:%f\n",Std.val[1]);printf("Std in channel3:%f\n",Std.val[2]);printf("Std in channel4:%f\n",Std.val[3]);printf("\ndiff Avg and Std from hist and function:%f %f\n",fabs(Avg.val[0]-Avg_Hist),fabs(Std.val[0]-Std_Hist));cvNamedWindow("Show original image",0);cvShowImage("Show original image",src_img);cvWaitKey(0);cvDestroyWindow("Show original image");printf("done\n");cvReleaseImage(&src_img);return 0;
}

测试图像数据:

测试结果和Opencv函数计算结果一致:

优化图像处理中均值和方差计算相关推荐

  1. MATLAB中均值、方差、标准差、协方差、相关性的计算

    公式 1.均值 2.方差 3.标准差\均方差 4.协方差 5.相关性 6.加权均值 7.加权方差 8.加权标准差 MATLAB代码 样本定义 %% x=[1 2 3 3 2 1]' y = [1 2 ...

  2. 概率论中均值、方差、标准差介绍及C++/OpenCV/Eigen的三种实现

    概率论是用于表示不确定性声明(statement)的数学框架.它不仅提供了量化不确定性的方法,也提供了用于导出新的不确定性声明的公理.在人工智能领域,概率论主要有两种用途.首先,概率法则告诉我们AI系 ...

  3. MATLAB中均值、方差、均方差的计算方法

    1. 均值 数学定义:  Matlab函数:mean >>X=[1,2,3] >>mean(X)=2 如果X是一个矩阵,则其均值是一个向量组.mean(X,1)为列向量的均值, ...

  4. 统计学中均值、方差、标准差、协方差、欧式距离、马氏距离等概念透彻理解

    最近需要对这些概念做个系统的梳理,所以写篇博客记录一下. 均值 均值是描述一个数据平均值的概念 公式为: 假设一组数:[2,2,3,5,5,7,8],其均值为4.57. 标准差 标准差是 观察值和均值 ...

  5. matlab u怎么求均方差,MATLAB中均值、方差、均方差的计算方法

    一. 均值html 数学定义: 函数 Matlab函数:meanpost >>X=[1,2,3]flex >>mean(X)=2htm 若是X是一个矩阵,则其均值是一个向量组. ...

  6. Hive Sql中均值、方差、标准差、皮尔逊相关系数、偏度、峰度统计字段

    SELECT mean(age) AS '均值', variance(age) AS '方差', stddev(age) AS '标准差', corr(age,yearsmarried) AS '两个 ...

  7. numpy中的cov(方差计算)简单介绍

    协方差矩阵的计算公式可以参考这一篇博文 协方差矩阵 官方文档介绍 简单使用介绍 有下面一个例子,计算数组[1,2,3]和[1,1,1]的协方差矩阵 import numpy as npX = np.a ...

  8. 多个随机变量运算后的均值与方差计算

    和的平均值 多个随机变数,其和的平均值的计算方法: 对于随机变数X1,X2,...,Xn对于随机变数X_1,X_2,...,X_n对于随机变数X1​,X2​,...,Xn​ E(X1+X2+...+X ...

  9. 面试中的投资组合方差计算

最新文章

  1. 如何优雅的转换 Bean 对象!
  2. 霹雳小组4显示不了服务器,霹雳小组4-指令码
  3. CISCO7200路由器MultiChannel配置介绍
  4. JAVA shell grep
  5. [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识
  6. ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群
  7. Kruskal(P)和Prim(K)算法
  8. C#设计模式之9-装饰者模式
  9. nginx开启支持websocket连接
  10. (剑指Offer)面试题11:数值的整数次方
  11. 购买二手房时 众多购房者忽视办理土地证过户
  12. Unreal 凹多边形三角化
  13. http的响应码200,404,302,500表示的含义分别是?
  14. diy服务器个人主机_小型企业及个人用户入门级服务器DIY
  15. 桌面远程控制计算机名字和,Win7系统远程控制其他计算机桌面教程
  16. 抱抱脸(hugging face)教程-中文翻译-任务总结
  17. 虚幻引擎与现代C++:转移语义和右值引用
  18. empress和queen区别_王后和皇后有什么区别?
  19. cassandra 概述
  20. 网络安全—2.1—设备原理与操作

热门文章

  1. C++ rapidjson 基础入门
  2. html中transtion属性,htmltransition属性
  3. AliP8大牛鼎力推荐Java岗开发进阶实战文档:Spring全家桶+Docker+Redis
  4. 概念系列1:标准差标准误
  5. 无线安全Android小工具
  6. 北邮毕业十二年---摘自一个人
  7. 【入门】游戏运营不完全手册
  8. sha256 C语言实现
  9. Android集成百度语音识别到HelloWorld需要注意什么?(保姆级教学)
  10. 客户价值分析(聚类)--【Excel+SPSS】和python实现