积分图求局部均值,方差,标准差

opencv 专栏收录该内容
16 篇文章 0 订阅

积分图求局部均值,方差,标准差

局部

即图像在某个窗口内的值,例如求图像3×3窗口内的均值,方差和标准差

积分图

积分图最重要的作用是快速计算像素值累计,如果公式中包含累加,可以考虑使用积分图的方式。
当前像素位置的值是之前像素值的总和。即在积分图像(Integral Image)上任意位置(x, y)处的积分值表示该点左上角所有像素之和,表示如下:
在这里插入图片描述
OpenCV中积分图的计算公式,即X,Y处的值是前X,Y个像素的和。
在这里插入图片描述
其目的是让局部均值,方差,标准差变的简单快速
例如计算x,y处,x1,x2,y1,y2邻域内的像素总和,可以用积分图计算:
在这里插入图片描述
x1,x2,y1,y2都等于2,则表示,x,y处2像素(3×3)窗口内的像素值之和。

局部均值

每个像素3×3邻域的局部均值很容易利用积分图计算:

    //imageSum表示积分图
    //imageMean表示要求的均值图
    //3×3,HalfSize = 1
	for (int r=0; r<width; ++r) {
		for (int c=0; c<height; ++c) {
			imageMean(r,c) = (
				imageSum(r+HalfSize+1, c+HalfSize+1) -
				imageSum(r+HalfSize+1, c-HalfSize  ) -
				imageSum(r-HalfSize,   c+HalfSize+1) +
				imageSum(r-HalfSize,   c-HalfSize  ) ) * (1.0/(double)n);
		}
	}

为什么使用r+HalfSize+1而不是r+HalfSize因为在opencv中积分图是要比原图的长和宽都大1的。这样做是为了让(1,1)处的积分值,是(0,0)处像素值。(width,height)处的像素值是整张影像(width-1,height-1)的积分值。要表示整张图,那么积分图就要比原图的长和宽都大1。

局部方差和标准差

局部方差和标准差只相差一个平方根,这里推到标准差的使用积分图计算的公式:
标准差定义如下(采用统计学中的定义,分母为:n-1)一般情况下使用n也是可以的
在这里插入图片描述
其中。
在这里插入图片描述
为了计算图像的局部标准差,首先设定局部区域的大小为
在这里插入图片描述
则局部区域的像素点个数
在这里插入图片描述
对标准差的公式进行化简:
在这里插入图片描述
得:
在这里插入图片描述
我们可以通过积分图快速得到
在这里插入图片描述在这里插入图片描述

即最终公式:
方差:
在这里插入图片描述
标准差:
在这里插入图片描述

带入公式即可通过积分图得到局部方差。


参考
https://blog.csdn.net/jia20003/article/details/52710751
https://blog.csdn.net/u010839382/article/details/46386849

  • 2
    点赞
  • 4
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

fb_help

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值