1 平均亮度越大,图像质量越大。
Mat yuvImg;
yuvImg.create(height, width, CV_8UC1);
const int framesize = width * height;
memcpy(yuvImg.data, buf,framesize*sizeof(unsigned char));
m= mean(yuvImg)[0];
2 标准差是指图像像素灰度值想都与均值的离散程度,如果标准差越大,表明图像中灰度级分布越分散,图像质量也越好。
meanStdDev(yuvImg, tmp_m, tmp_sd);
sd = tmp_sd.at<double>(0,0);
3 平均梯度能反应图像细节反差和纹理变换,它在一定程度上反应了图像的清晰程度。
yuvImg.create(width, height, CV_8UC1);
const int framesize = width * height;
memcpy(yuvImg.data, buf, framesize*sizeof(unsigned char));
if(1){
//sobel
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
Sobel( yuvImg, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x );
Sobel( yuvImg, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_y, abs_grad_y );
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );
}
doublemeanValue = 0.0;
meanValue = mean(grad)[0];
此文《参考数字图像处理及应用》。