从零开始的车牌识别课题设计(一)
從零開始的車牌識(shí)別課題設(shè)計(jì)(一)
第一章 本課題將用到的數(shù)字圖像處理技術(shù)
文章目錄
- 從零開始的車牌識(shí)別課題設(shè)計(jì)(一)
- 前言
- 一、圖像類型轉(zhuǎn)換
- 1.圖像灰度化
- 2.圖像二值化
- 二、圖像變換與目標(biāo)分析
- 1.Radon 變換
- 2.邊緣檢測
- 三、圖像濾波和增強(qiáng)
- 1.均值濾波和中值濾波
- 2.腐蝕和膨脹
- 3.開運(yùn)算和閉運(yùn)算
- 總結(jié)
前言
車牌識(shí)別系統(tǒng)是計(jì)算機(jī)視頻圖像識(shí)別技術(shù)在車輛牌照識(shí)別中的一種應(yīng)用,主要用到的技術(shù)是數(shù)字圖像處理技術(shù),數(shù)字圖像處理是電子信息工程、通信工程等專業(yè)教學(xué)計(jì)劃中的一門專業(yè)選修課,著重講述圖像處理的基本原理和算法設(shè)計(jì)。本篇將介紹車牌識(shí)別課題中將使用的數(shù)字圖像處理方法及MATLAB實(shí)現(xiàn)。
一、圖像類型轉(zhuǎn)換
為了減小圖像處理的運(yùn)算量,一般不直接對RGB 圖像進(jìn)行處理,而是將它轉(zhuǎn)換成無彩色圖像,二值圖像和灰度圖像都屬于無彩色圖像。
1.圖像灰度化
灰度表示的圖像中,每個(gè)像素有多個(gè)亮度等級。灰度化處理消除色調(diào)和飽和度信息,同時(shí)保留亮度。
將指定的真彩色圖像 RGB 轉(zhuǎn)換為灰度強(qiáng)度圖像:
> > I = im2gray(RGB)
2.圖像二值化
二值圖像只有黑白兩種等級亮度,二值化即把所有高于全局閾值的值替換為 1 并將所有其他值設(shè)置為 0。
從灰度圖像 I 創(chuàng)建二值圖像:
> > BW = imbinarize(I)
二、圖像變換與目標(biāo)分析
1.Radon 變換
Radon 變換計(jì)算圖像矩陣在特定方向上的投影,若車牌圖像傾斜,可對其進(jìn)行不同角度的Radon 變換,其中投影積分最大的角度即是圖像中最長直線的角度,這條直線往往就是目標(biāo)車牌的長邊之一。
MATLAB代碼如下(示例) :
I=imread(pathfile); theta = 0:180; [R,~] = radon(I,theta); %R 是矩陣,其中每列是基于 theta 中某一角度的 Radon 變換2.邊緣檢測
邊緣檢測是圖像目標(biāo)識(shí)別、形狀提取等圖像分析系統(tǒng)中十分重要的基礎(chǔ),通過提取邊緣可以將目標(biāo)和背景分離開來。常用算子有Prewitt 算子、Sobel 算子和Roberts 算子。
使用sobel算子進(jìn)行邊緣檢測:
BW = edge(I,method,threshold); %返回強(qiáng)度高于 threshold 的所有邊緣。
MATLAB代碼如下(示例) :
I=imread(pathfile); I1=edge(I,'sobel',0.15,'both');%sobel算子,閾值為0.15 figure, imshow(I1);運(yùn)行結(jié)果:
三、圖像濾波和增強(qiáng)
1.均值濾波和中值濾波
均值濾波指把待濾波像素的鄰域各像素的灰度平均值作為次像素的濾波后的灰度值,其算法簡單,但需要以圖像模糊的代價(jià)來減小噪聲。
MATLAB代碼如下(示例) :
A=imread(pathfile); h = fspecial('average',hsize); %返回大小為 hsize 的平均值濾波器 h B = imfilter(A,h); %使用多維濾波器 h 對多維數(shù)組 A 進(jìn)行濾波,并在 B 中返回結(jié)果 figure, imshow(B);中值濾波是指把以待濾波像某鄰域窗口內(nèi)像素的灰度值的中間值作為該像素的新灰度值,在一定條件下可以克服線性濾波方法(如鄰域均值濾波)所帶來的圖像細(xì)節(jié)模糊,且在運(yùn)算過程中不需要獲取圖像的統(tǒng)計(jì)特性。
對圖像 I 執(zhí)行二維中位數(shù)濾波:
B = medfilt2(A) % 默認(rèn)每個(gè)輸出像素包含輸入圖像中對應(yīng)像素周圍 3×3 鄰域的中位數(shù)值 B = medfilt2(A,[m n]) %執(zhí)行中位數(shù)濾波,其中每個(gè)輸出像素包含輸入圖像中對應(yīng)像素周圍的 m×n 鄰域中的中位數(shù)值。2.腐蝕和膨脹
膨脹和腐蝕是數(shù)學(xué)形態(tài)學(xué)的基本操作。數(shù)學(xué)形態(tài)學(xué)的很多操作都是以膨脹和腐蝕為基礎(chǔ)推導(dǎo)的。
膨脹:輸出像素的值是所有輸入像素值中的最大值。在二值圖像中, 如果鄰域中有一個(gè)像素的值為1,則輸出像素的值為1。
使用結(jié)構(gòu)元素 SE 膨脹灰度、二值或壓縮二值圖像 I:
J = imdilate(I,SE)
MATLAB代碼如下(示例) :
se= strel('line',11,90); %創(chuàng)建一個(gè)平面線形結(jié)構(gòu)元素 J = imdilate(I1,se); subplot(121);imshow(I1); subplot(122);imshow(J);運(yùn)行結(jié)果:
使用膨脹運(yùn)算可以將像素加到對象的邊緣,從而使斷裂的圖像橋接起來。
腐蝕:輸出像素的值是所有輸入像素值中的最小值。在二值圖像中, 如果鄰域中有一個(gè)像素的值為0,則輸出像素的值為0。
MATLAB代碼如下(示例) :
se=[1;1;1]; %創(chuàng)建一個(gè)平面線形結(jié)構(gòu)元素 J1=imerode(I1,se); subplot(121);imshow(I1); subplot(122);imshow(J1);運(yùn)行結(jié)果:
腐蝕運(yùn)算將腐蝕對象的像素減少,是一種消除邊界點(diǎn)的過程,利用它可以消除圖像中小且不感興趣的元素。
3.開運(yùn)算和閉運(yùn)算
開運(yùn)算可以斷開粘連較少的元素和狹窄的間隙,消除小的干擾元素,一般使能夠?qū)ο蟮妮喞兊霉饣?#xff0c;可用于消除車牌中不感興趣像素的干擾。
se=[1;1;1]; %創(chuàng)建線形結(jié)構(gòu)元素 I2=imopen(J1,se); %對腐蝕后的圖像開運(yùn)算 subplot(121);imshow(J1); subplot(122);imshow(I2);運(yùn)行結(jié)果:
閉運(yùn)算同樣使輪廓線更為光滑,不同的是它彌補(bǔ)輪廓線中的斷裂,消除狹窄的間斷和長細(xì)的鴻溝,填補(bǔ)小的孔洞,可用于擴(kuò)大圖像中有用信息
MATLAB代碼如下(示例) :
se=strel('rectangle',[25,25]); %創(chuàng)建矩形結(jié)構(gòu)元素 I2=imclose(J1,se); %填充腐蝕后的圖像 subplot(121);imshow(J1); subplot(122);imshow(I2);運(yùn)行結(jié)果:
總結(jié)
以上就是今天要講的內(nèi)容,本文僅簡單介紹了數(shù)字圖像處理在本課題的基礎(chǔ)應(yīng)用及其MATLAB實(shí)現(xiàn),接下來將介紹如何使用這些知識(shí)完成本課題的第一個(gè)模塊。
總結(jié)
以上是生活随笔為你收集整理的从零开始的车牌识别课题设计(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 Adobe 系列绿色版本无法打开的
- 下一篇: 立创EDA学习笔记(4)——原理图绘制