皮質顏色檢測的幾個問題(VS2010/OpenCV)

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的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章