double operation::colorCastDetection(IplImage pFrame)
{
IplImage labFrame = cvCreateImage(cvGetSize(pFrame),pFrame->depth,pFrame->nChannels);
cvCvtColor(pFrame,labFrame,CV_BGR2Lab);//lab:l为亮度,a为红->绿,b黄—>蓝
double da = 0;//色度a的平均值
double db = 0;//色度b的平均值
double D = 0;//图像平均色度
double Ma = 0;//色度a的方差
double Mb = 0;//色度b的方差
double M = 0;//色度的中心矩
double K = 0;//图像偏色因子
int height = labFrame->height;//图像高度
int width = labFrame->width;//图像宽度
uchar* labData = (uchar*)labFrame->imageData;
for(int i = 0;i < labFrame->height;i++)
{
for(int j = 0;j < labFrame->width;j++)
{
da += labData[i * labFrame->widthStep + j * labFrame->nChannels + 1];
db += labData[i * labFrame->widthStep + j * labFrame->nChannels + 2];
// cout<<"da "<widthStep + j * labFrame->nChannels + 1]<
// coutwidthStep + j * labFrame->nChannels + 2]<<endl;
}
}
da = da/height/width;
db = db/height/width;
D = sqrt(pow(da,2) + pow(db,2));
代码中的算法方程为什么要+1+2
为什么是用加的