馬仁杰
淮北師范大學物理與電子信息學院,安徽,淮北,235000
圖像目標識別與檢測,在模式識別領域中應用廣泛,尤其在計算機視覺領域中有著重要的應用。目標識別的主要任務是在一幅圖像中確定某類目標是否存在,而目標檢測的主要任務是確定圖像中目標的位置,在光電成像觀測任務中,目標識別和檢測是其中的一個重要環節,對目標快速準確地識別和檢測不僅可以為跟蹤任務提供保障,而且也能為系統的決策提供支持。
本文基于第四屆安徽省大學生光電設計競賽,利用MATLAB設計圖像處理軟件,只需進行傻瓜式操作即可實現對CMOS相機采集的比賽圖像進行缺口識別,缺口像素數顯示在缺口位置處,其中的圖像識別與檢測算法設計方法、圖像處理軟件設計具有代表性,也可用于其他相似類型的圖像處理。
圖像目標的識別與檢測是圖像處理領域研究最多的課題之一,圖像識別的發展經歷了文字識別、數字圖像處理與識別、物體識別三個發展階段。文字識別一般指的是識別字母、數字和符號,常見應用包括拍照識別、文檔檢索。數字圖像與模擬圖像相比更易存儲、可壓縮傳輸更方便等優勢,這些巨大優勢促進了數字圖像處理技術的迅速發展,廣泛應用于軍事刑偵、機器視覺等領域。物體識別始于20世紀50年代,包括物體的定位與分類,應用于商品識別、車輛識別等。自從2012年利用卷積神經網絡搭建的AlexNet取得了巨大成功,各種目標檢測算法模型便隨之井噴式增長,圖像深度學習算法相比于傳統識別方法,可以提取更深層次的圖像特征,在海量數據的支持下,深度學習算法學習到的模型表達能力更強,也更加有效,對圖像處理的精度與速度的提升具有重要意義。
背景介紹:MATLAB中文意為矩陣實驗室,是美國MathWorks公司出品的一款以數學計算為主的高級編程軟件,由于MATLAB語言在復雜的數值分析、矩陣運算、信號處理等方面具有明顯的優勢,故在制作需要對大量數據進行各種運算和處理的軟件時,在GUI中利用MATLAB語言編寫程序是一個很好的選擇[1],具有眾多突出優點,已成為科研工作人員進行科學研究的有力工具。
MATLAB使用包含兩個部分:核心部分和各種可選的工具箱。核心部分中擁有眾多內部功能函數,工具箱主要包括功能性工具箱和學科性工具箱兩大類。本實驗利用MATLAB中GUI組件、通過算法集成、采用底層代碼,實現了圖像簡單處理、圖像變換等能夠與用戶交互、圖像處理過程可視化的功能[2],MATLAB采用的是一種腳本式的解釋性語言,基本的語言環境中由于包含了成千上萬的功能函數,極大地提高了用戶的編程效率,并且它以數組為基本計算單元,語法規則簡單,不需要任何類型聲明,運行時,只需點擊一下運行鍵,系統一次性即可完成編譯、鏈接和運行工作。
在MATLAB中,通過imread函數可以將已采集的bmp圖像讀取后放入一個三維矩陣(由三個二維矩陣組成),分別存放圖片中的RGB三個色彩,再將RGB圖像數據類型轉換為雙精度方便后續的閾值處理,figure(1)用于作圖,imshow(I)用于將矩陣代表的圖像顯示在窗口上,并用title函數為已經顯示的圖片加標題[3]。MATLAB讀取的圖像如圖1所示。

圖1 讀入的圖像
圖像在獲取的過程中,由于成像系統和目標物并非完全固定不變,其稍微位置變化就可能會引起采集的圖像中目標檢測區域的扭曲、比例失調等圖像退化現象(幾何失真/畸變),因此有必要通過校正圖像目標區域以增加缺口檢測的準確性、后續目標檢測算法的魯棒性。解決這種幾何失真問題的方法叫幾何校正,幾何校正先對圖像進行幾何變換,使像素變換到正確位置上,然后需要重新確定新像素的灰度值[4]。在本次實驗中,可根據白色單像素正方形的RGB值均為1的特點,利用斜率公式求出白色單像素正方形整體需要旋轉的角度及方向,并使用MATLAB中自帶的imrotate函數、imwarp函數,采用雙線性插值法即可使得圖像幾何校正的同時減小其失真,如圖2所示。

圖2 校正圖
(1)圖像二值化。為方便正方形缺口檢測,需要將灰度圖通過閾值分割轉化為二值化圖,利用圖像二值化對圖像特征進行提取[5],將灰度圖變為黑白單像素圖后,不僅可以讓圖像目標區域輪廓凸顯,而且可以減少檢測中的巨大運算量。閾值的選取是否合適很大程度上決定了二值化效果的好壞,閾值法計算簡單,具有較高的運算效率,是圖像分割中廣泛采用的方法,主要分為全局閾值法和局部閾值法[6],本文采用全局閾值法,閾值就相當于黑白像素的分界線,低于閾值的像素點設置為0值,高于閾值的像素點設置為1值,且0值對應黑色,1值對應白色。閾值分割實現主要分為兩類:①通過人工選擇閾值分割圖像;②自動選擇閾值進行分割。通過多次對比測試表明,人工選擇閾值法更加適合該類圖像,并通過大量數據測試結果表明,當閾值選取為0.754時,缺口的識別檢測最有效和準確,二值化校正后如圖3所示。

圖3 二值化校正圖
(2)圖像濾波。圖像濾波的一個重要目的就是在盡量維持圖像的細節特征前提下對圖像的噪聲進行抑制,由于圖像噪聲的影響難以避免,因此幾乎任何圖像處理都離不開圖像濾波,而針對不同噪聲需要對應不同的濾波方式,濾波方式主要分為時域去噪和頻域去噪。時域去噪即通過IIR或FIR濾波,其代表方法有加權平滑法、中值濾波、二值形態學法等;頻域去噪即先通過快速傅里葉變換去除噪聲再逆快速傅里葉變換,其代表方法有經典數字濾波器、同態濾波、小波分析等。經過分析比較,本文采用中值濾波法,它不僅具有抑制干擾脈沖和點狀噪聲的作用,而且可保持較好的圖像邊緣,在MATLAB里自帶的中值濾波函數是medfilt[7],濾波前如圖4,濾波后如圖5所示。

圖4 濾波前

圖5 中值濾波后
(1)霍夫直線檢測。霍夫變換是一種非常重要的特征提取手段,在圖像處理中不可或缺,而直線、矩形、圓的識別又是圖形識別的基礎[8],可用其提取各種形狀邊界,常用于車道線檢測、車牌檢測等場合。霍夫變換其實就是把一條線的邊界用點來表達,二值化圖像上的一點都有可能是候選直線集合的組成,將圖像空間中的直線轉換到參數空間(極坐標系)中的點后通過執行投票方法找出最多正弦曲線數通過的一點(r,θ),此時,所得到的(r,θ)即為所求的直線極坐標參數。本文采用經典霍夫變換進行白色單像素正方形四邊直線的檢測,并采用白色方形框標記出峰值點,霍夫直線檢測中核心語句一為:
Peaks=houghpeaks(H,4,‘threshold',ceil(0.3*max(H(:))));
式中,H是指霍夫變換后的矩陣,4表示在H矩陣中設置4個峰值點,‘threshold'是指極值點若低于0.3*max(H(:)),其像素不會被考慮,如圖6所示。

圖6 直線檢測參數空間圖
霍夫直線檢測中另一核心語句為:
lines=houghlines(I,T,R,P,'FillGap',1,'MinLeng th',15);
式中,lines指結構體數組,其長度是找到的直線的條數,而每個數組元素包含四個部分。I為讀取的圖片,T和R分別是對應變換過來的極坐標(r,θ)中的角度θ和半徑值r。P是峰值,FillGap表示模式,1表示同一幅圖像中同一方向兩條直線的距離的閾值,小于閾值則視為一條直線,MinLength是一個正實數,用來確定是否保存線條。如果線條長度小于15像素,線條將會被擦除,否則就保存下來。
(2)霍夫直線標記。通過霍夫直線檢測可以找到數條滿足預定條件的線段,將已經檢測出的一些線段的兩端端點分別用藍色和紅色的圓點表示,用plot函數將每條線段兩端點連接即可得到線段,這些線段用綠色標記,又由賽題知:正方形每條邊長度為1000像素,分為7個區域,如圖7所示。

圖7 每條邊的區域分割
其中1,3,5,7大小為100像素,2,4,6大小為200像素,缺口出現在2,4,6區域中,每個區域有且只有1個缺口,每條邊3個缺口,目標物中一共12個缺口。缺口像素數的選定:從0~12共13個數字中隨機挑選12個數字作為缺口像素數,如缺口像素數為0,則圖中不會出現缺口,但仍認作有缺口,缺口像素數為0,每個數字至多只出現1次。由此可知,若霍夫直線檢測出的所有線段中某一邊只識別出了兩個缺口且該邊出現了圖像里最長線段,則該線段中點是缺口像素數0的可能性最大,因此可以直接將其標記為0,該線段標記為紅色,如圖8所示。

圖8 霍夫直線標記圖
(1)缺口大小檢測。經霍夫直線檢測后已得所有線段的端點坐標值,將同一方向相鄰端點距離求出即為該缺口大小,需要注意缺口像素數是從0~12中的13個數字中隨機挑選12個數字,每條邊最多出現3個缺口,由于評分細則中有“根據判斷圖像缺口像素數是否正確給分,答對得3分,不答得0分,答錯扣1分”,因此,寧可少檢測出一個缺口大小也不能多檢測出一個錯誤缺口大小,盡量提高分數。根據組委會圖片缺口識別檢測結果,通過橫向、縱向放大對比數十幅圖像中共計上百個缺口形態特征(根據已標記的紅色/藍色端點前后左右黑白像素點的分布情況)可以將其將其劃分為數種典型缺口特征,如圖9所示,針對這些典型缺口特征,可以充分發揮出程序模塊化的優勢:不但便于程序結構的劃分和編程設計的分工,還能增加程序可移植性和加快設計的速度[9]。根據每種典型缺口特征并對照其標準缺口大小設置相應if-end語句以將缺口檢測結果進行相應處理,如加上1像素或減去1像素等情況,即利用大量樣本通過人工提取目標特征來提高缺口檢測準確率。

圖9 典型缺口特征示例
(2)缺口大小標記。缺口檢測完畢后需要針對這些缺口進行選擇性標記,不合賽規的缺口不予標記,但檢測出來的缺口,其中線段端點到四個拐角點的距離小于80將不予顯示,此外,還需要將檢測出來的缺口大小與答案庫(0~12其中的12個數字)對照,若不在答案庫中則一定不予顯示,最后用text函數將所有符合條件的缺口標記出來,結果如圖10(a)所示,組委會官方正確標記圖如圖10(b)所示。

圖10 標記圖

GUI譯為圖形用戶界面(Graphical User Interface),又叫作圖形用戶接口,是用圖形化方式顯示的可視化計算機操作用戶界面,人機交互界面是人與控制器終端進行通話的主要通道,一個較復雜的控制系統往往需要進行人機界面的設計[10]。根據競賽要求知,圖像處理軟件界面必須包括“開始”按鈕、“打開”按鈕,打開MATLAB自帶的軟件設計工具箱后,在設計視圖中進行組件的設置布局,設計視圖如圖11所示。

圖11 設計視圖
然后在代碼視圖的回調函數中插入相應組件的功能代碼,實現功能如點擊“打開”按鈕后彈出FileOpen 對話框,選擇保存的圖片進行處理。軟件完成競賽內容后,要求彈出消息框進行提示,并保存數字圖像文件。數字圖像文件以校名+隊名命名。在生成圖像中間的時間標識的下方加入學校的校名+隊名+參賽隊員的姓名等標記,保存目錄為圖像處理軟件同級文件夾,代碼視圖如圖12所示。

圖12 代碼視圖
先進行APP運行測試;GUI設計完畢利用組委會提供的測試圖片進行測試,再打包APP應用;在程序運行成功后,將程序打包為一個可脫離MATLAB軟件的獨立可執行exe文件,既保護源代碼又便于用戶傻瓜式操作。打開設計好的軟件,點擊用戶界面“載入圖片”鍵后再點擊“缺口檢測”鍵即可實現對采集圖片的缺口檢測,如圖13所示。

圖13 圖像處理軟件界面
圖像缺口檢測軟件設計基于MATLAB平臺,針對CMOS相機所采集的RGB圖像,通過三大步驟即圖像預處理、目標識別與檢測、GUI設計實現軟件主體設計。實驗結果表明:(1)該自行設計的圖像處理軟件性能較為優越,對組委會提供的同一類型圖像缺口的識別率在90%以上,圖像缺口大小檢測正確率在70%以上,綜合評分在全省各校共計四十余支隊伍中名列第五。(2)人工提取圖像目標特征耗時費力,難以將待檢測目標和干擾噪聲準確區分,在圖像二值化確定閾值、歸類圖像典型缺口特征時,如果使用基于深度學習的目標識別算法則可以自動且準確地提取特征,解放人力,將卷積神經網絡模型運用于圖像特征識別將是筆者今后關注并學習的一大方向。