车牌识别技术详解六

编程入门 行业动态 更新时间:2024-10-15 18:25:02

<a href=https://www.elefans.com/category/jswz/34/1761824.html style=车牌识别技术详解六"/>

车牌识别技术详解六

一、准备样本:

正样本:样本处理和选择非常有技巧,我的标准是框住整个车牌留出边框,这样既保留了车牌原有的字符特征,字符组特征还有车牌的边框特征。其中双行车牌我只取底下面的一行。并且检测样本最好不要预处理,输入源给出什么图形就用什么图形。具体的抠图方式可以参考我其他博客车牌识别技术详解三--字符检测的正负样本得取(利用鼠标画框抠图)。



负样本:负样本选择同样非常有技巧性。尽量采集车牌使用环境下的背景图片,并且需要包含一部分车牌字符但是非正样本的取在车牌周围的负样本。




二、HAAR特征:

可视化haar特征

haarFeatureVision改动:
(1)global.h里面
extern IplImage * showHaarFeatureImg;(2)global.cpp里面
IplImage * showHaarFeatureImg;(3)SimpleClassifier.cpp里面改动
#define haarFeatureVison 1
void SimpleClassifier::ReadFromFile(ifstream& f)
{f>>thresh>>parity>>type;f>>x1>>x2>>x3>>x4>>y1>>y2>>y3>>y4;f.ignore(256,'\n');assert(parity == 0 || parity == 1);
//	assert(type>=0 && type<=4);if(haarFeatureVison){//haarFeatureVisonshowHaarFeatureImg = cvLoadImage("showHaarFeature.bmp",1);if(type == 0){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y1,x2);CvPoint C = cvPoint(y1,x3);CvPoint D = cvPoint(y3,x1);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y3,x3);cvRectangle(showHaarFeatureImg, A,cvPoint(E.x,E.y-1),CV_RGB(0,0,0), CV_FILLED);	cvRectangle(showHaarFeatureImg, B,cvPoint(F.x,F.y-1),CV_RGB(200,200,200), CV_FILLED);	cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//	cvWaitKey(0);}if(type == 5){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(0,0,0), CV_FILLED);cvRectangle(showHaarFeatureImg, A,cvPoint(F.x-1, F.y-1),CV_RGB(200,200,200), CV_FILLED);	cvRectangle(showHaarFeatureImg, C,cvPoint(H.x-1, H.y-1),CV_RGB(200,200,200), CV_FILLED);cvRectangle(showHaarFeatureImg, E,cvPoint(J.x-1, J.y-1),CV_RGB(200,200,200), CV_FILLED);	cvRectangle(showHaarFeatureImg, G,cvPoint(L.x-1, L.y-1),CV_RGB(200,200,200), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvWaitKey(0);}if(type == 6){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);CvPoint O = cvPoint(y2,x1);CvPoint P = cvPoint(y3,x1);CvPoint Q = cvPoint(y2,x4);CvPoint M = cvPoint(y3,x4);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(0,0,0), CV_FILLED);cvRectangle(showHaarFeatureImg, P,cvPoint(F.x-1, F.y-1),CV_RGB(200,200,200), CV_FILLED);		cvRectangle(showHaarFeatureImg, G,cvPoint(Q.x-1, Q.y-1),CV_RGB(200,200,200), CV_FILLED);cvRectangle(showHaarFeatureImg, A,cvPoint(H.x-1, H.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, O,cvPoint(E.x-1, E.y-1),CV_RGB(200,200,0), CV_FILLED);cvRectangle(showHaarFeatureImg, E,cvPoint(L.x-1, L.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, H,cvPoint(M.x-1, M.y-1),CV_RGB(200,200,0), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvSaveImage("haarFeatureVison1.bmp",showHaarFeatureImg);//		cvWaitKey(0);}if(type == 7){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);CvPoint O = cvPoint(y2,x1);CvPoint P = cvPoint(y3,x1);CvPoint Q = cvPoint(y2,x4);CvPoint M = cvPoint(y3,x4);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(0,0,0), CV_FILLED);cvRectangle(showHaarFeatureImg, A,cvPoint(D.x-1, D.y-1),CV_RGB(200,200,200), CV_FILLED);		cvRectangle(showHaarFeatureImg, I,cvPoint(L.x-1, L.y-1),CV_RGB(200,200,200), CV_FILLED);cvRectangle(showHaarFeatureImg, C,cvPoint(Q.x-1, Q.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, P,cvPoint(J.x-1, J.y-1),CV_RGB(200,200,0), CV_FILLED);cvRectangle(showHaarFeatureImg, O,cvPoint(E.x-1, E.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, H,cvPoint(M.x-1, M.y-1),CV_RGB(200,200,0), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvSaveImage("haarFeatureVison1.bmp",showHaarFeatureImg);//		cvWaitKey(0);}if(type == 8){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);CvPoint O = cvPoint(y2,x1);CvPoint P = cvPoint(y3,x1);CvPoint Q = cvPoint(y2,x4);CvPoint M = cvPoint(y3,x4);cvRectangle(showHaarFeatureImg, A,cvPoint(D.x-1, D.y-1),CV_RGB(0,0,0), CV_FILLED);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(200,200,200), CV_FILLED);		cvRectangle(showHaarFeatureImg, O,cvPoint(E.x-1, E.y-1),CV_RGB(100,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, C,cvPoint(H.x-1, H.y-1),CV_RGB(100,200,0), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvSaveImage("haarFeatureVison1.bmp",showHaarFeatureImg);//		cvWaitKey(0);}if(type == 9){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);CvPoint O = cvPoint(y2,x1);CvPoint P = cvPoint(y3,x1);CvPoint Q = cvPoint(y2,x4);CvPoint M = cvPoint(y3,x4);cvRectangle(showHaarFeatureImg, A,cvPoint(D.x-1, D.y-1),CV_RGB(100,200,0), CV_FILLED);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(100,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, O,cvPoint(E.x-1, E.y-1),CV_RGB(0,0,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, C,cvPoint(H.x-1, H.y-1),CV_RGB(200,200,200), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvSaveImage("haarFeatureVison1.bmp",showHaarFeatureImg);//		cvWaitKey(0);}if(type == 10){std::cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<" "<<y1<<" "<<y2<<" "<<y3<<" "<<y4<<std::endl;CvPoint A = cvPoint(y1,x1);CvPoint B = cvPoint(y4,x1);CvPoint C = cvPoint(y1,x2);CvPoint D = cvPoint(y2,x2);CvPoint E = cvPoint(y3,x2);CvPoint F = cvPoint(y4,x2);CvPoint G = cvPoint(y1,x3);CvPoint H = cvPoint(y2,x3);CvPoint I = cvPoint(y3,x3);CvPoint J = cvPoint(y4,x3);CvPoint K = cvPoint(y1,x4);CvPoint L = cvPoint(y4,x4);CvPoint O = cvPoint(y2,x1);CvPoint P = cvPoint(y3,x1);CvPoint Q = cvPoint(y2,x4);CvPoint M = cvPoint(y3,x4);cvRectangle(showHaarFeatureImg, D,cvPoint(I.x-1, I.y-1),CV_RGB(0,0,0), CV_FILLED);cvRectangle(showHaarFeatureImg, O,cvPoint(E.x-1, E.y-1),CV_RGB(200,200,200), CV_FILLED);		cvRectangle(showHaarFeatureImg, E,cvPoint(J.x-1, J.y-1),CV_RGB(200,200,200), CV_FILLED);cvRectangle(showHaarFeatureImg, H,cvPoint(M.x-1, M.y-1),CV_RGB(200,200,200), CV_FILLED);		cvRectangle(showHaarFeatureImg, C,cvPoint(H.x-1, H.y-1),CV_RGB(200,200,200), CV_FILLED);cvRectangle(showHaarFeatureImg, A,cvPoint(D.x-1, D.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, P,cvPoint(F.x-1, F.y-1),CV_RGB(200,200,0), CV_FILLED);cvRectangle(showHaarFeatureImg, I,cvPoint(L.x-1, L.y-1),CV_RGB(200,200,0), CV_FILLED);		cvRectangle(showHaarFeatureImg, G,cvPoint(Q.x-1, Q.y-1),CV_RGB(200,200,0), CV_FILLED);cvNamedWindow("haarFeatureVison",0);cvShowImage("haarFeatureVison",showHaarFeatureImg);//		cvSaveImage("haarFeatureVison1.bmp",showHaarFeatureImg);cvWaitKey(0);}}}


Type 0 feature:

Feature value is BCEF-ABDE =(B+F-C-E)-(A+E-B-D) = D+F-A-C+2(B-E)

Coordinates: x1,x2,x3 (vertical) and y1,y3(horizontal), e.g. E=(x2,y3)

 

Type1 feautre:


 Feature value is  BCEF-ABDE = (B+F-C-E)-(A+E-B-D) = D+F-A-C+2(B-E)

 Coordinates: x1,x3 (vertical) and y1,y2,y3(horizontal), e.g. E=(x3,y2)

 

Type 2 feature:


Feature value is CDGH+ABEF-2BCFG =ADEH-3BCFG = A+H-D-E+3(C+F-B-G)

Coordinate:x1,x2,x3,x4 (vertical) and y1,y3 (horizontal), e.g. C=(x3,y1)     

 

Type 3 features:


Feature value is CDGH+ABEF-2BCFG =ADEH-3BCFG = A+H-D-E +3(C+F-B-G)

Coordinate:x1,x3 (vertical) and y1,y2,y3,y4 (horizontal), e.g. C=(x1,y3)     

 

Type 4 features:


Feature value is ABDE+EFHI-BCEF-DEGH =A+E-B-D+E+I-H-F+E+G-D-H+E+C-B-F

                          = 4E –2(B+D-H-F)+A+C+G+I

Coordinate: x1,x2,x3 (vertical) andy1,y2,y3 (horizontal), e.g. F=(x2,y3).

 

Type 5 features

 

Type 6 features

 

Type 7 features


Type 8features

 

Type 9 features

 

Type10 features




更多推荐

车牌识别技术详解六

本文发布于:2024-03-05 01:05:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710902.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:车牌   详解   技术

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!