資源描述:
《車(chē)牌識(shí)別的matlab程序--(詳細(xì)注釋,并有使用注意點(diǎn))》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、附錄車(chē)牌識(shí)別程序clear;closeall;%Step1獲取圖像裝入待處理彩色圖像并顯示原始圖像Scolor=imread('3.jpg');%imread函數(shù)讀取圖像文件%將彩色圖像轉(zhuǎn)換為黑白并顯示Sgray=rgb2gray(Scolor);%rgb2gray轉(zhuǎn)換成灰度圖figure,imshow(Scolor),title('原始彩色圖像');%figure命令同時(shí)顯示兩幅圖figure,imshow(Sgray),title('原始黑白圖像');%Step2圖像預(yù)處理對(duì)Sgray原始黑白圖像進(jìn)行開(kāi)
2、操作得到圖像背景s=strel('disk',13);%strel函數(shù)Bgray=imopen(Sgray,s);%打開(kāi)sgrays圖像figure,imshow(Bgray);title('背景圖像');%輸出背景圖像%用原始圖像與背景圖像作減法,增強(qiáng)圖像Egray=imsubtract(Sgray,Bgray);%兩幅圖相減figure,imshow(Egray);title('增強(qiáng)黑白圖像');%輸出黑白圖像%Step3取得最佳閾值,將圖像二值化fmax1=double(max(max(Egray))
3、);%egray的最大值并輸出雙精度型fmin1=double(min(min(Egray)));%egray的最小值并輸出雙精度型level=(fmax1-(fmax1-fmin1)/3)/255;%獲得最佳閾值bw22=im2bw(Egray,level);%轉(zhuǎn)換圖像為二進(jìn)制圖像bw2=double(bw22);%Step4對(duì)得到二值圖像作開(kāi)閉操作進(jìn)行濾波figure,imshow(bw2);title('圖像二值化');%得到二值圖像grd=edge(bw2,'canny')%用canny算子識(shí)別強(qiáng)度
4、圖像中的邊界figure,imshow(grd);title('圖像邊緣提取');%輸出圖像邊緣bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的閉運(yùn)算figure,imshow(bg1);title('圖像閉運(yùn)算[5,19]');%輸出閉運(yùn)算的圖像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的開(kāi)運(yùn)算figure,imshow(bg3);title('圖像開(kāi)運(yùn)算[5,19]');%輸出開(kāi)運(yùn)算的圖像bg2=imo
5、pen(bg3,strel('rectangle',[19,1]));%取矩形框的開(kāi)運(yùn)算figure,imshow(bg2);title('圖像開(kāi)運(yùn)算[19,1]');%輸出開(kāi)運(yùn)算的圖像%Step5對(duì)二值圖像進(jìn)行區(qū)域提取,并計(jì)算區(qū)域特征參數(shù)。進(jìn)行區(qū)域特征參數(shù)比較,提取車(chē)牌區(qū)域[L,num]=bwlabel(bg2,8);%標(biāo)注二進(jìn)制圖像中已連接的部分Feastats=imfeature(L,'basic');%計(jì)算圖像區(qū)域的特征尺寸Area=[Feastats.Area];%區(qū)域面積BoundingBox=
6、[Feastats.BoundingBox];%[xywidthheight]車(chē)牌框架大小RGB=label2rgb(L,'spring','k','shuffle');%標(biāo)志圖像向RGB圖像轉(zhuǎn)換figure,imshow(RGB);title('圖像彩色標(biāo)記');%輸出框架的彩色圖像lx=0;forl=1:numwidth=BoundingBox((l-1)*4+3);%框架寬度的計(jì)算hight=BoundingBox((l-1)*4+4);%框架高度的計(jì)算if(width>98&width<160&hi
7、ght>25&hight<50)%框架的寬度和高度的范圍,這塊兒不同的圖片對(duì)應(yīng)不同,可以用終端操作查看后更改?。?!lx=lx+1;Getok(lx)=l;endendfork=1:lxl=Getok(k);startcol=BoundingBox((l-1)*4+1)-2;%開(kāi)始列startrow=BoundingBox((l-1)*4+2)-2;%開(kāi)始行width=BoundingBox((l-1)*4+3)+8;%車(chē)牌寬hight=BoundingBox((l-1)*4+4)+2;%車(chē)牌高rato=wi
8、dth/hight;%計(jì)算車(chē)牌長(zhǎng)寬比ifrato>2&rato<4%這塊兒也需要根據(jù)具體情況更改一下,如3-6啊什么的break;endendsbw1=bw2(startrow:startrow+hight,startcol:startcol+width-1);%獲取車(chē)牌二值子圖subcol1=Sgray(startrow:startrow+hight,startcol:startcol+width-1);%獲取