0

私の質問は、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);
}

私のコードでは、画像には 1 つのバンドしかないと仮定しています。上記のコードをさらに改善するアイデアはありますか、それとも他の解決策はありますか?

4

0 に答える 0