基於邊緣檢測的車牌定位

2021-08-15 15:54:40 字數 2506 閱讀 7692

剛開始接觸影象處理做的試驗專案,想法比較簡單,限制多弊端較大,對質量要求比較高,如果灰度變化太大又或者預處理後得到的二值影象的連通區域出現與車牌所處區域面積相近,效果就差了很多。影象的預處理是通過增加對比度以及形態學處理得到的。想要得到理想效果需要多次重複操作。

有很多不足之處,還請各位大神指教。

直接上效果圖

下面是matlab實現程式:

close all;clc;

i=imread('f:\matlab\matlab上機操作\圖形\2.jpg');

%影象預處理

re=license_plate_regulation(i);

i2=edge(re,'roberts');%邊緣檢測

imshow(i2);

se=[1;1;1];%腐蝕運算元

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

figure,imshow(i3);

se1=strel('rectangle',[25,25]);%建立25*25的矩形結構元素

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

figure,imshow(i4);

figure

imshow(i4,)

xlabel('(a)original image')

se=strel('disk',7);%產生結構元素,7為多次實驗後的得到的結果

a2=imopen(i4,se);%開運算先腐蝕後膨脹,去掉面積相對車牌小的區域。

figure

imshow(a2,)

xlabel(['(b)erosion with a disk of radius ',num2str(7)])

%車牌定位

[m,n]=size(a2);

z=zeros(40,50);

for i=2:m-1%得到車牌的左右邊界

for j=2:n-1

if (a2(i,j+1)a2(i,j-1))

z(j)=j;

endend

endb1=find(z);

jmax=max(b1)+5;

jmin=min(b1)-5;

z1=zeros(40,50);%得到車牌的上下邊界

for i=2:m-1

for j=2:n-1

if (a2(i+1,j)a2(i-1,j))

z1(i)=i;

endend

endc1=find(z1);

imax=max(c1)+5;

imin=min(c1)-5;

dw=re(imin:imax,jmin:jmax);%求得車牌區域

figure,imshow(dw)

車牌傾斜矯正函式(摘自《影象處理例項講解》)

function re=license_plate_regulation(i)

%讀取原始的車牌影象;

i1=rgb2gray(i);

i2=wiener2(i1,[5 5]);%對影象進行維納濾波

i3=edge(i2,'sobel','horizontal');%利用sobel運算元,檢測影象邊緣直線

[m,n]=size(i3);%計算影象大小

rou=round(sqrt(m^2+n^2));%獲取rou最大值

theta=180;%獲取theta的最大值

r=zeros(rou,theta);%產生量化初值為0的計數矩陣

for i=1:m

for j=1:n

if i3(i,j)==1

for k=1:theta

ru=round(abs(i*cos(k*3.14/180)+j*sin(k*3.14/180)));

r(ru+1,k)=r(ru+1,k)+1;

endend

endendr_max=r(1,1);

for i=1:rou

for j=1:theta

if r(i,j)>r_max

r_max=r(i,j);

c=j;

endend

endif c<=90

rot_theta=-c;%確定旋轉角度

else

rot_theta=180-c;

endi4=imrotate(i2,rot_theta,'crop');%對進行旋轉,矯正影象

set(0,'defaultfigureposition',[100,100,1200,450]);%修改圖形影象的預設設定

set(0,'defaultfigurecolor',[1 1 1])%修改圖形背景顏色的設定

re=i4;

基於法線的邊緣檢測

在邊緣高亮效果 中我提到過兩種方法,各有優缺點吧 影象空間域的邊緣檢測效果比較好,中間沒有多餘的線條.缺點是ps中計算比較慢 第二種把模型 放大 其實是變胖 的做法,可以在vs中完成,不需要額外的rendertarget,適合低端顯示卡使用,適應性好.不如果模型法線資訊不對的話,會造成畫面錯亂.實際...

演算法 基於OpenCV的Canny邊緣檢測演算法

canny邊緣檢測運算元是john f.canny於 1986 年開發出來的乙個多級邊緣檢測演算法。更為重要的是 canny 創立了邊緣檢測計算理論解釋這項技術如何工作。canny邊緣檢測演算法可以分為以下5個步驟 canny邊緣檢測的公式推導 高斯濾波 對影象進行平滑處理 計算梯度幅度和方向 採用...

基於二階微分的邊緣檢測方法

兩種laplacian模板 附件中 gauss lanlancian運算元 附件中 laplacian 運算元是二階導數邊緣運算元,考察的是3 3鄰域,上圖是兩種比較常用的模板,演算法簡述如下 遍歷影象 除去邊緣,防止越界 對每個畫素做laplancian模板卷積運算,注意是只做其中的一種模板運算,...