如何从图像积分中找到平均值,标准偏差和梯度?给定的图像,例如,如下所示:计算图像积分
如上图所示,找到了突出部分的总和,sum = C+A-B-D
。
所以我们有sum = 22
。
我怎么能在下进行,以便找到:
- 平均
- 标准偏差
- 梯度
如何从图像积分中找到平均值,标准偏差和梯度?给定的图像,例如,如下所示:计算图像积分
如上图所示,找到了突出部分的总和,sum = C+A-B-D
。
所以我们有sum = 22
。
我怎么能在下进行,以便找到:
C+A-B-D
为您提供了灰度等级的总和由界的区域A,B,C,D,所以,为了得到平均值,您只需要将区域划分为区域:
mean = (C+A-B-D)/4
要获得开发,你必须计算平方米范围表的总和(使用cv::integral
你可以传递一个额外的参数,以获得平方的总和)。引用wikipedia时,标准差等于(平均值减去平均值的平方)的平方根。因此,假设A“ B”,C“ d”在你广场面积表中的值:
dev = sqrt((C'+A'-B'-D')/4 - (mean*mean))
因此,在计算平均值,并使用积分图像dev为非常快速使用积分图像,特别是如果你想要在随机位置和图像块的随机大小上计算这些数量。
关于渐变,它更复杂。你确定你不想使用sobel
运算符吗?
如果C + A-B-C是区域中的所有灰度级的总和,则平均值不
mean = C+A-B-D/4
但
mean = C+A-B-D/K
其中K是在该区域graylevels的数量。
此外,
dev = sqrt(C'+A'-B'-D'/4 - (mean*mean))
不是标准偏差,因为
dev = sqrt((1/N)*sum_N (x_i - u)^2)
这里的公式等同于
dev = sqrt((1/N)*sum_N ((x_i)^2) - u^2)
这些方程是不等价的。
jmch没有说的是,如果sqrt(C'+A'-B'-D'/K - (mean*mean))
不是你如何计算积分图像的标准偏差,那么你怎么做呢?
首先,让我切换到Python/numpy的代码,所以我们得到了一点符号一致性和表达式更容易检查。给定样本阵列X,说:
X = array([random() * 10.0 for i in range(0, 9)])
的X
的uncorrected sample standard deviation可以作为被定义为:
std = (sum((X - mean(X)) ** 2)/len(X)) ** 0.5 # 1
运用binomial theorem到(X - mean(X)) ** 2
我们得到:
std = (sum(X ** 2 - X * 2 * mean(X) + mean(X) ** 2)/len(X)) ** 0.5 # 2
鉴于identities的总和操作,我们可以做:
std = ((sum(X ** 2) - 2 * mean(X) * sum(X) + len(X) * mean(X) ** 2)/len(X)) ** 0.5 # 3
如果我们S = sum(X)
,S2 = sum(X ** 2)
,M = mean(X)
和N = len(X)
我们得到:
std = ((S2 - 2 * M * S + N * M ** 2)/N) ** 0.5 # 4
现在对于图像I
和两个积分图像P
和P2
从I
(其中P2
是积分图像的平方像素计算值),我们知道,给定四个边缘坐标A = (i0, j0)
,B = (i0, j1)
,C = (i1, j0)
和D = (i1, j1)
,值为S
,S2
,M
和N
可以计算作为范围I[A:D]
:
S = P[A] + P[D] - P[B] - P[C]
S2 = P2[A] + P2[D] - P2[B] - P2[C]
N = (i1 - i0) * (j1 - j0)
M = S/N
然后可以上述(4)得到的范围内I[A:D]
的标准偏差应用到方程。
编辑:它不是完全必要的,但考虑到M = S/N
我们可以将以下替换和简化式(4):
std = ((S2 - 2 * M * S + N * M ** 2)/N) ** 0.5
std = ((S2 - 2 * (S/N) * S + N * (S/N) ** 2)/N) ** 0.5
std = ((S2 - 2 * ((S ** 2)/N) + (S ** 2/N))/N) ** 0.5
std = ((S2 - ((S ** 2)/N))/N) ** 0.5
std = (S2/N - (S/N) ** 2) ** 0.5 # 5
这是相当接近方程式雷米了,其实。
我完全不明白你的问题。你能改善它吗? – ArtemStorozhuk
您想查找某个图像部分(ROI)的_mean_,_std dev_和_gradient_? – ArtemStorozhuk
我想找到所有图像的平均值,标准偏差和梯度。 – Mzk