車牌識(shí)別程序(帶注釋)_第1頁(yè)
車牌識(shí)別程序(帶注釋)_第2頁(yè)
車牌識(shí)別程序(帶注釋)_第3頁(yè)
車牌識(shí)別程序(帶注釋)_第4頁(yè)
車牌識(shí)別程序(帶注釋)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 function d=main(jpg)I=imread('car.jpg');figure(1),imshow(I);title('原圖');I1=rgb2gray(I); %將真彩色圖像轉(zhuǎn)換為灰度圖像figure(2),subplot(1,2,1),imshow(I1);title('灰度圖');figure(2),subplot(1,2,2),imhist(I1);title('灰度圖直方圖');I2=edge(I1,'robert',0.08,'both'); %

2、高斯濾波器,方差為0.08figure(3),imshow(I2);title('robert算子邊緣檢測(cè)')se=1;1;1;I3=imerode(I2,se); %圖像的腐蝕figure(4),imshow(I3);title('腐蝕后圖像');se=strel('rectangle',40,40); %構(gòu)造結(jié)構(gòu)元素,以長(zhǎng)方形構(gòu)造一個(gè)seI4=imclose(I3,se); %對(duì)圖像實(shí)現(xiàn)閉運(yùn)算,閉運(yùn)算也能平滑圖像的輪廓,但與開運(yùn)算相反,它一般融合窄的缺口和細(xì)長(zhǎng)的彎口,去掉小洞,填補(bǔ)輪廓上的縫隙。figure(5),imshow(I4);tit

3、le('平滑圖像的輪廓');I5=bwareaopen(I4,2000); %從二進(jìn)制圖像中移除所有少于p像素的連接的組件(對(duì)象),產(chǎn)生另一個(gè)二進(jìn)制圖像figure(6),imshow(I5);title('從對(duì)象中移除小對(duì)象');y,x,z=size(I5); %返回I5各維的尺寸,并存儲(chǔ)在變量y、x、z中myI=double(I5); %換成雙精度數(shù)值 %begin橫向掃描tic %計(jì)算tic與toc之間程序的運(yùn)行時(shí)間 Blue_y=zeros(y,1); %產(chǎn)生y*1的全0矩陣 for i=1:y for j=1:x if(myI(i,j,1)=1) %如

4、果myI(i,j,1)即myI圖像中坐標(biāo)為(i,j)的點(diǎn)為藍(lán)色 %則Blue_y的相應(yīng)行的元素white_y(i,1)值加1 Blue_y(i,1)= Blue_y(i,1)+1;%藍(lán)色像素點(diǎn)統(tǒng)計(jì) end end end temp MaxY=max(Blue_y);%temp為向量white_y的元素中的最大值,MaxY為該值的索引( 在向量中的位置) PY1=MaxY; while (Blue_y(PY1,1)>=120)&&(PY1>1) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)>=40)&&

5、;(PY2<y) PY2=PY2+1; end IY=I(PY1:PY2,:,:);%IY為原始圖像I中截取的縱坐標(biāo)在PY1:PY2之間的部分 %end橫向掃描 %begin縱向掃描 Blue_x=zeros(1,x);%進(jìn)一步確定x方向的車牌區(qū)域 for j=1:x for i=PY1:PY2 if(myI(i,j,1)=1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while (Blue_x(1,PX1)<3)&&(PX1<x) PX1=PX1+1; end PX2=x; while (Blue_x(1

6、,PX2)<3)&&(PX2>PX1) PX2=PX2-1; end %end縱向掃描 PX1=PX1-2;%對(duì)車牌區(qū)域的校正 PX2=PX2+2; dw=I(PY1:PY2,:,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向合理區(qū)域');figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色車牌圖像')imwrite(dw,'dw.jpg'); %將圖像數(shù)據(jù)寫入到圖像文件中filename,filepa

7、th=uigetfile('dw.jpg','輸入一個(gè)定位裁剪后的車牌圖像'); %讀取jpg=strcat(filepath,filename); %將數(shù)組filepath,filename水平地連接成單個(gè)字符串,并保存于變量jpg中a=imread('dw.jpg'); %讀取圖片文件中的數(shù)據(jù)b=rgb2gray(a); %將真彩色圖像轉(zhuǎn)換為灰度圖像imwrite(b,'1.車牌灰度圖像.jpg'); %將圖像數(shù)據(jù)寫入到圖像文件中figure(8);subplot(3,2,1),imshow(b),title('1.車

8、牌灰度圖像')g_max=double(max(max(b); %換成雙精度數(shù)值g_min=double(min(min(b); %換成雙精度數(shù)值T=round(g_max-(g_max-g_min)/3); % T 為二值化的閾值m,n=size(b); %返回矩陣b的尺寸信息, 并存儲(chǔ)在m、n中。其中m中存儲(chǔ)的是行數(shù),n中存儲(chǔ)的是列數(shù)。 d=(double(b)>=T); % d:二值圖像imwrite(d,'2.車牌二值圖像.jpg'); %將圖像數(shù)據(jù)寫入到圖像文件中figure(8);subplot(3,2,2),imshow(d),title('

9、2.車牌二值圖像')figure(8),subplot(3,2,3),imshow(d),title('3.均值濾波前')% 濾波h=fspecial('average',3); %建立預(yù)定義的濾波算子,average指定算子的類型,3為相應(yīng)的參數(shù)d=im2bw(round(filter2(h,d); %轉(zhuǎn)換為二值圖像imwrite(d,'4.均值濾波后.jpg'); %將圖像數(shù)據(jù)寫入到圖像文件中figure(8),subplot(3,2,4),imshow(d),title('4.均值濾波后')% 某些圖像進(jìn)行操作% 膨

10、脹或腐蝕% se=strel('square',3); % 使用一個(gè)3X3的正方形結(jié)果元素對(duì)象對(duì)創(chuàng)建的圖像膨脹% 'line'/'diamond'/'ball'.se=eye(2); % eye(n) returns the n-by-n identity matrix 單位矩陣m,n=size(d); %返回矩陣b的尺寸信息, 并存儲(chǔ)在m、n中。其中m中存儲(chǔ)的是行數(shù),n中存儲(chǔ)的是列數(shù)if bwarea(d)/m/n>=0.365 %計(jì)算二值圖像中對(duì)象的總面積 d=imerode(d,se); %圖像的腐蝕elseif bw

11、area(d)/m/n<=0.235 %計(jì)算二值圖像中對(duì)象的總面積 d=imdilate(d,se); %實(shí)現(xiàn)膨脹操作endimwrite(d,'5.膨脹或腐蝕處理后.jpg'); %將圖像數(shù)據(jù)寫入到圖像文件中figure(8),subplot(3,2,5),imshow(d),title('5.膨脹或腐蝕處理后')% 尋找連續(xù)有文字的塊,若長(zhǎng)度大于某閾值,則認(rèn)為該塊有兩個(gè)字符組成,需要分割d=qiege(d); %切割m,n=size(d); %返回矩陣b的尺寸信息, 并存儲(chǔ)在m、n中。其中m中存儲(chǔ)的是行數(shù),n中存儲(chǔ)的是列數(shù)figure,subplot(

12、2,1,1),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;while j=n while s(j)=0 j=j+1; end k1=j; while s(j)=0 && j<=n-1 j=j+1; end k2=j-1; if k2-k1>=round(n/6.5) val,num=min(sum(d(:,k1+5:k2-5); d(:,k1+num+5)=0; % 分割 endend% 再切割d=qiege(d);% 切割出 7 個(gè)字符y1=10;y2=0.25;flag=0;word1=;while flag=0 m,n=s

13、ize(d); left=1;wide=0; while sum(d(:,wide+1)=0 wide=wide+1; end if wide<y1 % 認(rèn)為是左側(cè)干擾 d(:,1:wide)=0; d=qiege(d); else temp=qiege(imcrop(d,1 1 wide m); m,n=size(temp); all=sum(sum(temp); two_thirds=sum(sum(temp(round(m/3):2*round(m/3),:); if two_thirds/all>y2 flag=1;word1=temp; % WORD 1 end d(:,

14、1:wide)=0;d=qiege(d); endend% 分割出第二個(gè)字符word2,d=getword(d);% 分割出第三個(gè)字符word3,d=getword(d);% 分割出第四個(gè)字符word4,d=getword(d);% 分割出第五個(gè)字符word5,d=getword(d);% 分割出第六個(gè)字符word6,d=getword(d);% 分割出第七個(gè)字符word7,d=getword(d);figure(9),imshow(word1),title('1');figure(10),imshow(word2),title('2');figure(11),

15、imshow(word3),title('3');figure(12),imshow(word4),title('4');figure(13),imshow(word5),title('5');figure(14),imshow(word6),title('6');figure(15),imshow(word7),title('7');m,n=size(word1); %返回矩陣b的尺寸信息, 并存儲(chǔ)在m、n中。其中m中存儲(chǔ)的是行數(shù),n中存儲(chǔ)的是列數(shù)word1=imresize(word1,40 20);% 商用系

16、統(tǒng)程序中歸一化大小為 40*20,此處演示word2=imresize(word2,40 20); %對(duì)圖像做縮放處理,高40,寬20word3=imresize(word3,40 20);word4=imresize(word4,40 20);word5=imresize(word5,40 20);word6=imresize(word6,40 20);word7=imresize(word7,40 20);figure(16),subplot(3,7,8),imshow(word1),title('1');subplot(3,7,9),imshow(word2),title

17、('2');subplot(3,7,10),imshow(word3),title('3');subplot(3,7,11),imshow(word4),title('4');subplot(3,7,12),imshow(word5),title('5');subplot(3,7,13),imshow(word6),title('6');subplot(3,7,14),imshow(word7),title('7');imwrite(word1,'1.jpg');imwrite(wo

18、rd2,'2.jpg');imwrite(word3,'3.jpg');imwrite(word4,'4.jpg');imwrite(word5,'5.jpg');imwrite(word6,'6.jpg');imwrite(word7,'7.jpg');liccode=char('0':'9' 'A':'Z' '蘇豫陜魯'); %建立自動(dòng)識(shí)別字符代碼表,將t'0':'9' 'A&

19、#39;:'Z' '蘇豫陜魯'多個(gè)字符串組成一個(gè)字符數(shù)組,每行對(duì)應(yīng)一個(gè)字符串,字符數(shù)不足的自動(dòng)補(bǔ)空格SubBw2=zeros(40,20); %產(chǎn)生40*20的全0矩陣l=1;for I=1:7 ii=int2str(I); %轉(zhuǎn)換為串 t=imread(ii,'.jpg'); %讀取圖片文件中的數(shù)據(jù) SegBw2=imresize(t,40 20,'nearest'); %對(duì)圖像做縮放處理,高40,寬20,'nearest': 這個(gè)參數(shù),是默認(rèn)的, 即改變圖像尺寸時(shí)采用最近鄰插值算法 if l=1 %第一位漢字識(shí)

20、別 kmin=37; kmax=40; elseif l=2 %第二位 AZ 字母識(shí)別 kmin=11; kmax=36; else l>=3 %第三位以后是字母或數(shù)字識(shí)別 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat('字符模板',liccode(k2),'.jpg'); %把一個(gè)行向量轉(zhuǎn)化成字符串 SamBw2 = imread(fname); %讀取圖片文件中的數(shù)據(jù) for i=1:40 for j=1:20 SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); end en

21、d % 以上相當(dāng)于兩幅圖相減得到第三幅圖 Dmax=0; for k1=1:40 for l1=1:20 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax; end Error1=Error(kmin:kmax); MinError=min(Error1); findc=find(Error1=MinError); l=l+1;endfigure(17),subplot(3,1,2),imshow(dw),title ('車牌號(hào)碼: 陜 A B A 2 2 3');%子程序:(getword子程序)function word,result=getword(d)word=;flag=0;y1=8;y2=0.5; while flag=0 m,n=size(d); wide=0; while sum(d(:,wide+1)=0 &&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論