車牌定位方法 matlab

2021-07-16 18:45:41 字數 1431 閱讀 2000

此車牌定位法採用的是:邊緣檢測+形態**算的方法。

缺點:此方法對於車輛牌照周圍灰度變化劇烈的情況容易定位錯誤。

function

dw=location

(i)%車牌定位方法

i1=rgb2gray(i);%灰度化

i2=edge(i1,'robert');%邊緣檢測

imshow(i2);

se=[1;1;1];%列腐蝕運算元,腐蝕運算元的形狀很重要

i3=imerode(i2,se);%此腐蝕可將非車牌區域的雜訊資訊腐蝕掉

figure,imshow(i3);

se1=strel('rectangle',[25,25]);%方形閉環運算元

i4=imclose(i3,se1);%閉環運算 需要選擇大的運算元

figure,imshow(i4);

i5=bwareaopen(i4,1500);%將連通域面積小於1500畫素的區域都刪除,此方法是為了把除車牌以外的區域都刪除

figure,imshow(i5);

[y,x,z]=size(i5);

i6=double(i5);

y1=zeros(y,1);

for ii=1:y%統計每一行的畫素值為1的個數

for jj=1:x

if(i6(ii,jj,1)==1)

y1(ii,1)=y1(ii,1)+1;

endendend

[temp,maxy]=max(y1);%temp為y1的最大值,maxy為其所在的行數

figure,plot(1:y,y1);

py1=maxy;

while((y1(py1,1)>=50)&&(py1>1))%求車牌上邊界

py1=py1-1;

endpy2=maxy;

while((y1(py2,1)>=50)&&(py2%求車牌下邊界

py2=py2+1;

endx1=zeros(1,x);

for jj=1:x%統計每一列的畫素值為1的個數,只統計車牌上下邊界之間的畫素數

for ii=py1:py2

if(i6(ii,jj,1)==1)

x1(1,jj)=x1(1,jj)+1;

endendend

figure,plot(1:x,x1);

px1=1;

while((x1(1,px1)<15)&&(px1%求車牌左邊界

px1=px1+1;

endpx2=x;

while((x1(1,px2)<15)&&(px2>px1))%求車牌右邊界

px2=px2-1;

endpx1=px1-1;

px2=px2+1;

dw=i(py1:py2,px1:px2,:);%求得車牌區域

figure,imshow(dw);

車牌定位(二)

車牌提取 寫在前面的話 python中有很多腐蝕膨脹的整合庫,cv2還是最常用的。這篇文章僅是從底層原理去理解這麼做的意義,供學習理解使用。簡單介紹一下本節,主要是用python繼續對進行預處理,主要是腐蝕膨脹 還有這節就把車牌直接提取 出來啦!常用庫就 path huiimg.png im ima...

Python OpenCV 車牌定位 橫向定位

一.原理 通過對已經縱向定位的車牌進行視窗搜尋,滑動視窗,遍歷視窗內的每一行的跳變點數,若符合則加入候選區域,若最後候選區域為0,則將的高度縮減,因為在進行縱向定位時,背景的變化造成的灰度跳變數也可能大於14 若最後候選區域數大於1,將視窗寬度減少,直到候選區域只有乙個。但該方法的車牌定位時間較長。...

複雜背景車牌定位

由於車牌號碼多為垂直數字,而車身引入的干擾在水平方向,進行垂直邊緣檢測,即可去除水平方向上顏色區別較大的干擾。該演算法核心之處在於利用了車牌號碼與車身干擾正好垂直的特點,僅在垂直方向檢測邊緣,而對水平的邊緣則不予理會。垂直邊緣檢測,可用 roberts 運算元 sobel 運算元 prewitt 運...