数字图像处理:基于MATLAB的车牌识别项目
學過了數字圖像處理,就進行一個綜合性強的小項目來鞏固一下知識吧。前陣子編寫調試了一套基于MATLAB的車牌識別的項目的代碼。今天又重新改進了一下代碼,識別的效果好一點了,也精簡了一些代碼。這里沒有使用神經網絡等,只是用了最基礎的數字圖像處理算法,最后通過模板匹配,得到結果。
源碼下載鏈接:
下載鏈接(注意:有兩套,第二套是后來改進的,都能運行的)
運行結果:
這里讀取了車牌圖片目錄中的第一幅圖片,并顯示出來了原圖像;隨后計算出車牌的區域,進行圖像切割,單獨把車牌提取出來;最后,從圖像中切割出每個字符,并與事先準備好的模板進行匹配,找到與其誤差最小的模板就認為是對應的字符。
這里是另外一個識別車牌號的結果。
程序思路:
第一步:從原圖像中切割出車牌,去除無用信息
1、讀取原圖像。
2、將原始彩色圖像轉換成灰度圖像,并顯示直方圖(如果分布十分不均勻,使用直方圖均衡化處理)。
3、使用roberts算子進行邊緣檢測(MATLAB中調用edge函數)。
4、圖像腐蝕(去除不需要的邊緣信息,盡可能只保留車牌上字符的輪廓)。
5、圖像膨脹(平滑圖像輪廓,圖中沒能完全濾出車牌之外的所有邊緣信息,剩下了一部分,其實就是車牌上的那個奧迪標志,后面還要想辦法把它給去掉)。
6、從圖像中移除小塊對象(調用bwareaopen()函數,從圖像中刪除所有少于2200像素8鄰接的區域,最后只剩下車牌區域了)。
7、根據最后圖像中“白色”的那部分界定車牌所處的區域,并重新在原圖像中進行切割,得到車牌的圖像。
第二步:從前面得到的車牌圖像中切割出每個字符
1、先將車牌圖像轉換為灰度圖像并繪制直方圖。
2、為增強對比度,對灰度圖像再做直方圖均衡化。
3、將圖像二值化。
4、中值濾波,濾除一些無用信息。
5、調用編寫的my_imsplit.m和getword.m腳本,計算每個字符的位置,并逐一進行切割,得到只儲存單一字符的圖像。
6、與準備好的字符模板比對,計算出與其誤差最小的某個字符模板,識別為對應的字符。
最后的識別結果:
總結
以上是生活随笔為你收集整理的数字图像处理:基于MATLAB的车牌识别项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pygame:编写一个小游戏
- 下一篇: OpenCV学习记录(一):使用haar