【机器学习】改善LBP特征提高SVM的可分性的经验总结(二)
生活随笔
收集整理的這篇文章主要介紹了
【机器学习】改善LBP特征提高SVM的可分性的经验总结(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、直方圖均衡后,效果變差
equalizeHist(testImg, testImg); //直方圖均衡 imshow("直方圖均衡后", testImg);結論:由于直方圖均衡會明顯改變原來的明暗分布,反而降低可分性,檢測效果顯著變差。效果如下:
?
?2、把SVM.predict輸出為1的框,求平均灰度,小于設定閾值的不保留
//設計12×30的滑窗遍歷300×720的測試樣本:計算每個滑窗內的LBP特征,給SVM預測,把輸出為1的框畫出來。 int m, n; Mat slideWinImg(30, 12, CV_8UC1, Scalar(0)); Mat dstImg(30, 12, CV_8UC1, Scalar(0)); //LBP圖,可不輸出 Mat lideWinImgFeatureMat; Mat sigleFeatureMat = Mat::zeros(1, descriptorDim, CV_32FC1); //此時的descriptorDim已經更新為2320+362 vector<int> descriptor;for(n=0; n<=testImgNorm.rows-30; n+=30) //720/24=30 {for(m=0; m<=testImgNorm.cols-12; m+=4) //300/10=30{slideWinImg = testImgNorm(Rect(m, n, 12, 30));if (slideWinImg.channels()>1) cvtColor(slideWinImg, slideWinImg, CV_BGR2GRAY);//hog->compute(trainImg, descriptor, Size(4, 4));//getUniformPatternLBPFeature(slideWinImg, dstImg, descriptor, 1, 8); //getOriginLBPFeature(slideWinImg, dstImg, descriptor);Mat extendLBPFeature;calExtendLBPFeature(slideWinImg, Size(3, 3), extendLBPFeature);//使用訓練的SVM模型預測測試樣本int predictResult = SVM.predict(extendLBPFeature);//cout<<"SVM訓練模型預測結果:"<<predictResult<<endl;//剔除平均灰度值較低的檢出框int garySum = 0;int threGary = 40*12*30; //70*12*30,實驗值,保守些,以免踢掉好的檢出框if (predictResult==1){for (int mm=0; mm<12; mm++){for (int nn=0; nn<30; nn++){garySum += testImg.at<uchar>(n+nn, m+mm);}}if (garySum < threGary) predictResult = 0; }if (predictResult==1){rectangle(copyImg,Point(m,n),Point(m+12,n+30),Scalar(0,255,0),1,1,0);}}//cout<<endl; //imshow("copyImg",copyImg); //waitKey(0); }①、結論:可以剔除黑車邊緣與背景交界處的誤檢框。效果如下:
?
?
?②、總結:夜晚或白天陰影路段,車道線灰度值小,背景更黑,對比度小;使用歸一化+高斯濾波+pixelDiff,基本能檢到車道線。但使用averageGray后,很多是車道線的檢測框但平均灰度值低,反而被剔除掉了。效果如下:
??
?
總結
以上是生活随笔為你收集整理的【机器学习】改善LBP特征提高SVM的可分性的经验总结(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】改善LBP特征提高SVM的可
- 下一篇: tensorflow分布式训练之同步更新