我的问题是:如何使用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);
}
在我的代码中,我假设图像只有一个波段。您是否有进一步改进上述代码的想法,或者您有其他解决方案吗?