图像批次在线方差的高效算法

问题描述 投票:0回答:1

我有大量图像,想计算所有图像的(每个通道的)方差。 我在为此找到有效的算法/设置时遇到问题。

我阅读了 Welford 的在线算法,但它的速度很慢,因为它没有以这种形式在单个图像或一批图像中矢量化。 所以我想知道如何提高它的速度以使用矢量化或使用内置方差算法。

python mean updates variance online-algorithm
1个回答
0
投票

这是更新/合并两个批次的均值和方差所需的两个函数。这两个函数都可以与向量(3 个颜色通道)一起使用,并且可以从内置方法中获取均值和方差,例如

batch.var()
.

方程式取自:https://notmatthancock.github.io/2017/03/23/simple-batch-stat-updates.html

   
# m amount of samples (or pixels) over all previous badges
# n amount of samples in new incoming batch
# mu1 previous mean
# mu2 mean of current batch
# v1 previous variance
# v2 variance of current batch

def combine_means(mu1, mu2, m, n):
    """
    Updates old mean mu1 from m samples with mean mu2 of n samples.
    Returns the mean of the m+n samples.
    """
    return (m / (m+n)) * mu1 + (n/(m+n))*mu2

def combine_vars(v1, v2, mu1, mu2, m, n):
    """
    Updates old variance v1 from m samples with variance v2 of n samples.
    Returns the variance of the m+n samples.
    """
    return (m/(m+n)) *v1 + n/(m+n) *v2 + m*n/(m+n)**2 * (mu1 - mu2)**2
    
© www.soinside.com 2019 - 2024. All rights reserved.