Matlab中对imread载入的图像矩阵求取均值时,步骤相对opencv较麻烦一些。
例如:研究图像显著性检测算法FT中,需要计算图像LAB空间均值,以下是matlab和opencv的实现方式。
matlab:
img=imread("图像");
cform = makecform('srgb2lab', 'AdaptedWhitePoint', whitepoint('d65'));//转化到LAB空间
lab = applycform(img,cform);
//分别计算均值
l = double(lab(:,:,1)); lm = mean(mean(l));
a = double(lab(:,:,2)); am = mean(mean(a));
b = double(lab(:,:,3)); bm = mean(mean(b));
opencv:
Mat src=imread("图像.jpg");
src.converTo(img3f,CV_32F,1.0/255);
GaussianBlur(img3f, tImg, Size(3, 3), 0);
cvtColor(tImg, tImg, CV_BGR2Lab);
Scalar colorM = mean(tImg);
则colorM [0],colorM[1],colorM[2]就分别是l、a、b的均值。