1,汽车皮质包覆检测的基本思路是,先对不同位置、不同颜色、皮质的包覆进行模板采样,然后针对性做检测;
2,检测分三步:(1)首先看灰度均值的差异值,这个可以设个固定阈值;
(2)其次看梯度均值的差异值,在实际中发现同一批次的不同颜色皮料的梯度均值浮动是不相同的,亮颜色的浮动值大,暗颜色的浮动值小,因此这就导致无法针对不同颜色的皮质使用同一个阈值,想到的一个解决方法是计算梯度均值变化率,即:
Mat src1 = imread("station7_color1_material2.jpg");
Mat src2 = imread("station7_color0_material2.jpg");
Mat gray, grayT,gradient,gradientT;
double gradientMeanT,gradientMean;
double grayMeanT,grayMean;
cvtColor( src1,grayT,CV_RGB2GRAY );
Sobel( grayT,gradientT,CV_16SC1,1,0,5);
cvtColor( src2,gray,CV_RGB2GRAY );
Sobel( gray,gradient,CV_16SC1,1,0,5);
gradientMeanT = sum( abs(gradientT) ).val[0]/double(grayT.rows)/double(grayT.cols);
gradientMean = sum( abs(gradient) ).val[0]/double(gray.rows)/double(gray.cols);
double gradientDiffRatio = abs( gradientMeanT-gradientMean )/min(gradientMean,gradientMeanT);
这样,同一种皮质的梯度变化率是能够得到一个经验值的,可作为皮质种类的判断依据;
3,HSV颜色直方图比较
可以参考 http://www.cnblogs.com/slysky/archive/2011/10/13/2210745.html
其中计算发现,使用EMD的方法计算直方图匹配值,最小值是0,但是不匹配时的值很可能大于1,而且常常是大于1的。