如何使用opencv快速计算图像的标准偏差

时间:2013-10-16 09:18:13

标签: c++ opencv

我的问题是:如何使用opencv快速计算图像的标准派生?我的解决方案如下:

double std(const cv::Mat &img)
{
    double squareSum=0;
    double sum=0;
    int elementSum;
    elementSum = img.rows*img.cols;
    for(int row = 0; row<img.rows; row++)
    {
        const unsigned char *p = img.ptr(row);
        for(int col=0; col<img.cols; col++)
        {
            sum += *p;
            squareSum += (*p)*(*p);
            p++;
        }
    }

    double mean = sum/elementSum;
    return(squareSum/elementSum- mean*mean);
}

在我的代码中,我假设图像只有一个波段。您是否有进一步改进上述代码的想法,或者您有其他解决方案吗?

0 个答案:

没有答案