黃偉杰,張 希,趙柏暄,朱旺旺
(上海交通大學 機械與動力工程學院,上海 200240)
隨著社會經濟的發展和人民生活水平的提高,人們對生活質量提出更高的要求,汽車作為一種出行便捷的交通方式,保有量不斷增加.而停車設施由于成本和空間的限制,增長率受限,停車位稀缺,停車用戶花費大量時間尋找車位,導致停車時間和成本增加,還惡化了交通擁堵問題[1].如果能夠縮短駕駛員在尋找車位上花費的精力,無疑是十分友好的.通過人工智能和通訊技術結合,提高停車場的智能化管理水平,有利于縮短空閑車位尋找時間,提升停車場交通效率[2,3].現有的智能停車場車位分類系統主要包括了基于磁阻傳感器和基于圖像兩種[4].基于磁阻傳感器的方案需要部署大量的傳感器單元以覆蓋停車場,一般一個傳感器單元負責檢測一個車位,導致安裝繁瑣,成本高昂.傳統停車場管理中,地磁系統和單一的手持終端占比超過70%,智能化管理水平較低[5].基于圖像的車位檢測算法中,由于相機的視野覆蓋范圍廣,幾個相機就可以覆蓋整個的停車場.加上為了安全的考慮,大多停車場已經預裝了監控攝像機,直接使用預裝的監控相機對停車場中的車位進行檢測,充分的利用已有的設備,不會帶來成本的增加,無疑是十分方便的.
目前,國內外的很多學者都對圖像檢測的車位檢測技術展開了研究.其中,江浩斌等人[6]利用魚眼相機對周圍的車位角標識線進行識別,通過車位角位置還原出車位位置,但是車位角所占的區域較小,特征容易受到破壞.王春香等人[7]使用4 個魚眼相機實現鳥瞰視覺系統,對魚眼相機拼接成的全向鳥瞰圖使用Radon 直線檢測,檢測出的直線相交確定出車位角.方法缺少先驗的信息,直線的局部缺失都會導致算法失效.Chen 等人[8]使用快速角點檢測算法提取車位的特征角點,對圖像進行預處理后根據檢測到角點的大小使用RANSAC 算法評估角點的可信度,方法僅適用于車位角特征良好的場景.Harahap等人[9]通過對車位粉刷字符串,通過文本檢測器對字符串進行識別來確定車位,算法需要耗費大量的人力進行車位部署,移植性較差.Sairam 等人[10]使用CNN 模型,通過對車位進行像素級的分割,從而在圖像中直接將車位檢測出來,實際上大部分的車位像素特征和一般地面相近,直接使用像素特征魯棒性較差.
本文通過對停車場的車位進行檢測,實時地判斷出每個車位的狀態,提高停車場的交通效率.以停車場安裝攝像頭采集的監控視頻流數據為輸入,提取監控視頻中的圖像實時地對停車場中車位進行識別,并區分出是否為可泊車車位.首先是進行圖像的預處理,獲取規則化的圖像并且提取出圖像的邊緣;接著是提取出表征車位的車位線,對于非車位線部分進行濾除;其次是根據檢測出的車位線構建出車位編號和車位位置映射關系的車位表;然后是根據車位表裁剪出車位圖像擴充車位分類器模型數據集;最后是使用分類模型對圖像中的車位狀態進行判斷.
真實工況中,由于光照分布不均勻和光照強度變化,相機采集的數據往往會伴隨著許多的噪聲.為了提高算法的魯棒性,在車位檢測之前必須對圖像進行預處理,消除環境帶來的隨機噪聲,獲取消噪后規則化的圖像.
車位檢測與分類的使用的數據是露天車場中高清攝像機拍攝的圖像進行預處理后得到的.相機的安裝位置允許和停車場有一定的角度,但是要求能夠拍到完整的停車場,在停車場改造后或者首次采集圖像的時候要求車位線沒有受到物體的遮擋.
本文中使用的相機為TP-LINK500 網絡高清相機.表1中給出相機的相關參數.

表1 相機參數
由于相機安裝空間的限制,獲取的停車場圖像與車位線之間往往會存在夾角.一方面,訓練車位分類模型的時候,為了提高算法的泛化能力,數據集需要包括不同條件下的停車場數據,規則化的圖像方便對原有的數據集進行增量式的擴充,提高數據集的豐富程度.另一方面,規則化后的圖像更有利于后端處理的準確性,提高算法魯棒性.
在圖像坐標系下坐標和世界坐標系下的坐標的轉換關系可以表示為:

其中,[u,v]表示像素坐標,z表示坐標點在相機坐標系下的深度,K表示相機的內參矩陣,T表示從世界坐標系變換到相機坐標系下的變換矩陣(包括旋轉和平移的部分),[xw,yw,zw]表示坐標點在世界坐標系下的坐標.
逆透視化是對停車場做平面假設,假定停車場在世界坐標系下為一個平面.將世界坐標系原點設定在地面上,以向上為z軸可以看作zw=0,則原始的圖像坐標和逆透視化后的圖像坐標與世界坐標之間的簡化對應關系分別為:

式中給出了原始圖像和逆透視化后圖像對應的變換關系,兩者的變換關系記為單應性矩陣(homegraphy)[11].框選出車場4 個角點,計算出對應的單應矩陣,對圖像進行逆透視變換,調節圖像角度,將視圖轉為正鳥瞰圖.圖1為原始視圖,圖2給出逆透視化后的效果.

圖1 原始圖像

圖2 逆透視化后結果
真實環境難免會存在光照分布不均勻和光照強度變化,這些都會影響到圖像檢測的準確性,給后續檢測帶來不可預估的后果[12].加上停車場中與車位線顏色接近的白色車輛也會對后續的檢測帶來干擾.
頂帽變換表示為原圖像與原圖像開操作的差,可以凸顯出暗背景下的亮對象,刪除大部分的非均勻背景[13],可以緩解光照不均勻和白色車輛的干擾.

其中,f表示原圖像灰度圖,f·b表示原圖像的開操作.
邊緣檢測是從圖像中提取有用結構信息的一種技術,可以去除圖像中的干擾信息,提高檢測的效率.
圖像的獲取過程中不可避免地會引入許多的噪聲,對檢測產生干擾.在邊緣檢測前進行高斯濾波,可以降低灰度的尖銳變化,抑制高斯分布的噪聲.高斯濾波表達式如下:

其中,Hij表示坐標權重值,x,y表示坐標,σ2表示的是濾波器方差.
Canny 邊緣檢測是近些年來應用最為廣泛的邊緣檢測算法之一[13].Canny 邊緣檢測的標準是盡可能低的錯誤率檢測邊緣,盡可能準確的捕捉圖像盡可能多的邊緣.
Canny 邊緣檢測[14]中梯度的計算離散為圖像中像素橫軸和縱軸方向的差分值,得到圖像中每個像素的差分值后可計算出圖像的梯度G和方向θ:

其中,Du(u,v)表示像素橫軸方向的差分值,Dv(u,v)表示像素縱軸方向的差分值.
表征車位包括車位角點和車位線.車位識別中包括基于特征角點檢測和特征直線檢測兩種方式.基于特征直線檢測的檢測算法需要在保證召回率的基礎上提高檢測的準確率.一方面需要檢測出所有的車位直線,保證召回率,另一方面,需要盡量地濾除掉非車位線的干擾直線.
高召回率、穩定的直線檢測算法是車位識別和檢測的關鍵.高召回率的直線檢測保證車位線檢測的完整性,提高車位檢測的自動化程度.目前最廣泛使用的直線檢測方法是霍夫直線檢測算法,但是霍夫直線檢測時間復雜度和空間復雜度較高,并且誤檢率較高,直接使用霍夫直線檢測的結果召回率低,往往需要大量的人工操作對原有的車位進行補充,自動化程度較低.LSD 直線檢測能夠在線性的時間內得到亞像素級別的精度檢測效果,比較完整的對圖像中的車位線進行檢測.
圖像中的直線檢測就是尋找出圖像中變化比較大的像素,LSD 直線檢測通過檢測圖像中局部直的輪廓,進行直線分割,從而檢測出直線[15].
本文對比了霍夫直線檢測和LSD 直線檢測的結果.從結果上看,LSD 直線檢測的召回率遠高于霍夫直線檢測.表2中給出了霍夫直線檢測與LSD 直線檢測的召回率.

表2 直線檢測召回率對比
LSD 直線檢測召回率極高,局部的小直線也會被檢測出來,故檢測后需要濾除掉不符合要求的直線,包括:(1)角度異常的直線;(2)長度異常的直線.由于車位線存在寬度,同一車位線在直線檢測過程中會檢測出兩條直線,需要對車位線做合并的操作,如果兩條直線的距離小于閾值,將兩條直線合并成一條直線.
檢測好的直線可以用于車位的檢測.每個車位包括4 個角點,車位檢測時在直線檢測的基礎上對車位進行編號,車位表中保存車位編號以及對應的角點像素坐標.
真實環境中僅依靠直線檢測將所有的車道線都完整的檢測出來顯然是困難的.本文將車位線的檢測建模成貝葉斯濾波問題.我們假設相連的車位會形成一個矩形區域(rectangle box),且直線檢測后的車位線有足夠的信息來描述該矩形區域.根據先驗條件將問題從僅對車位線位置進行估計轉為同時對車位線位置和整列車位形成的矩形區域進行估計.增加車位線位置和車位矩形區域之間的約束關系.

其中,x表示估計的車位線的位置,y表示估計的每一列的車位矩形區域,z表示的是觀測的數據,這里表示的相機數據,η表示觀測數據和僅使用直線檢測車位線表示矩形區域的概率比值.
通過直線檢測和直線濾除之后可以過濾掉大量的干擾直線,為了獲得效果更加良好的車位線,需要對感興趣區域(矩形區域)進行確定.我們將車位矩形位置的確定分為確定內部點和利用內部點確定矩形邊界兩步.
(1)確定內部點
過濾掉干擾直線后的直線為觀測直線.如果車位矩形區域是存在的,則觀測直線的信息應是能將車位矩形確定出來.矩形中的點包含了矩形邊上的點和矩形中的點.算法1 給出確定矩形內部點的具體算法.

算法1.搜索停車區域內部點輸入:觀測直線集合.輸出:停車位矩形區域的內部點.1.沿著橫軸平行方向畫探測直線.2.觀測直線有足夠交點的為感興趣直線,感興趣直線與探測直線交點為候選點.3.從候選點沿縱軸方向畫過濾直線.4.過濾掉和觀測直線交點過少的候選點.5.剩下和觀測直線有足夠交點的即為矩形內部點.
(2)矩形邊界確定
確定內部點后,以這些點為種子點,根據這些種子點進行Box 邊界的確定.算法2 給出找到矩形邊界的具體算法.

算法2.車位矩形區域的確定輸入:觀測直線集合,矩形內部種子點.輸出:所有停車位矩形區域的邊界.1.遍歷種子點,以種子點為初始內部點,和左右邊界的交點為初始外部點.2.將內部點和外部點不斷二分,直到找到離種子點最遠的內部點為Box 左右邊界點.3.同理找到離種子點最近的內部點作為Box 上下邊界點.4.確定好邊界點之后,按照邊界點框選出該種子點對應的Box.5.對Box 中的其余種子點框選出對應的Box,對同個框內的Box 求并,邊界內種子點不再使面積增加后確定出Box,標記Box 內種子點為遍歷過的種子點.6.對未遍歷過的種子點繼續按照以上步驟,確定所有的車位矩形區域.
框選好感興趣區域作為車位檢測的限定范圍,車位線與限定范圍需要做對齊操作,包括:(1)延伸限定范圍內直線到ROI 邊緣;(2) 去掉超過ROI 邊緣部分.經過對齊后最終確定出車位.圖3中表示的是提取感興趣區域的圖像,白色區域為提取的感興趣區域,最終的車位檢測結果如圖4所示.

圖3 提取ROI 車位區域和檢測出的直線

圖4 車位檢測結果
表征車位的方式有車位線和角點兩種方式.兩種表征方式對車位描述的信息都是完整的,可以進行轉換.角點表征車位的方式給后續的圖像切片和車位位置的記錄帶來方便,所以本文采用角點表征的車位識別方式.
車位的角點包括:(1)橫向車位線與縱向車位線之間的交點;(2) 橫向直線和ROI 矩形區域邊緣的交點;(3)縱向直線和ROI 矩形區域邊緣的交點.對車位角點根據像素坐標進行排序,每個感興趣矩形區域中包括三排的車位角點,每兩排車位角點組成一排的車位像素角點坐標.按照車位編號和車位角點的映射關系,構建車位表.算法3 給出車位表構建的具體算法.

算法3.車位表構建輸入:停車位矩形區域,車位角點.輸出:每個車位對應的角點和編號.1.根據矩形區域將車位角點拆分成多個的車位角點集合.2.對矩形區域中的點根據縱向坐標拆分多個點列.3.在每個點集中,對于每一點列中的點,得到同個點列后面最近的一個點以及相鄰點列的兩個點,組成車位.
車位按照被占用空間的大小分為3 類:車位空間足以泊車,車位空間不足以泊車,車位泊有他車,如表3.車位表中記錄著每個車位的像素角點坐標,一方面,可以裁剪出每個車位的圖像進行歸一化后作為訓練的樣本;另一方面,車位表記錄車位的位置,使用分類模型對車位進行實時的狀態識別.

表3 車位標簽
為了提高模型的泛化性和魯棒性,訓練集中要包括不同光照條件,不同停車場下樣本.根據停車場中車位表中記錄車位的位置,對圖像進行裁剪,切片出來的圖像作為訓練的樣本.裁剪出來的車位圖像基于車位被占用空間的大小總共分為3 類,第1 類是泊車區域空閑或者泊車區域被鄰近車位占用區域過較小,有足夠的空間用于泊車;第2 類為車位被鄰近車位泊車占用區域過大,剩余車位空間不足以泊車;第3 類為車位上泊有車輛,無法泊車.3 種類型的圖像紋理差距較大,能夠更加準確的描述車位的類型.
根據光線強度的不同,本文將訓練集分為了3 類,一類是僅有白天的數據;一類是僅有夜晚的數據;最后一類是白天夜晚的混合數據.車位的圖像因為停車場環境的不同和相機角度的變化都會有所區別,在對數據集進行擴充的時候需要將新的樣本進行規則化后加入數據集中.
停車場分類的目的主要是為了區分出能夠泊車的停車位和不能夠泊車的車位,因此,第1 類和第2 類的車位合并成一種不可泊車車位類型,第3 類車位為單獨一類可以泊車類型.
支持向量機(support vector machine,SVM)是建立在統計學理論和結構風險最小原理基礎上的,能夠很好地解決小樣本、非線性、高維度和局部最小點等實際問題[16].SVM 學習的基本想法是求解出能夠正確劃分數據集并且幾何間隔最大的最優分離超平面.對于線性可分的數據集來說,幾何間隔最大的分離超平面是唯一的.此外,SVM 模型利用空間的核函數取代高維特征空間,方便的解決樣本維數過高帶來的非線性問題.本文中的數據量較少,和傳統神經網絡算法相比,使用SVM 模型進行二分類時可以達到理論上的最優解.
如前文所示,車位分類根據車位被占用空間的大小總共分為3 個類別.所以,本文訓練了3 個支持向量機分類器分別實現兩種類別樣本的分類,SVM1 實現空間不足以泊車車位和車位上泊有車位樣本的分類,SVM2 實現空間不足以泊車和空間足夠泊車樣本的分類,SVM3 實現車位泊有他車和有足夠泊車空間車位的分類,最終通過對3 個SVM 分類器的分類結果進行投票,確定圖像的最終類別.特別的,當3 個分類器將測試樣本歸類到3 個不同的類別的時,則判定該樣本為無效樣本,將其剔除出樣本集后,重新訓練分類模型.本文對比4 種分類器的效果.為進一步的擴充數據,提高模型的泛化性,在模型訓練中對圖像進行鏡像和非對稱操作.對于每個數據,模型使用70%作為訓練數據,以及使用30%作為驗證數據,訓練100 次.表4中分別列出了白天數據、夜晚數據以及白天夜晚混和數據3 種數據集下的每種模型檢測的平均準確率(%).

表4 不同分類器對比
從最后訓練出來的結果來看,最近鄰分類器(NearestCentroid)在3 種數據集中的訓練結果均較差,所以在車位分類中不選用該分類器.使用隨機梯度分類器(SGDClassifier)和使用線性核(linear)的SVM 模型在純白天的數據和純夜晚的數據中檢測效果良好,但是在混合數據中檢測效果較差,說明這種方法對光照比較敏感,不同光線下的檢測效果會有差距,魯棒性較差.多層感知器(MLPClassifier)和使用高斯核(rbf)的SVM 模型,兩者都具有較高的準確率,但是綜合對比的結果上來看,在不同工況下,使用高斯核函數的SVM 模型檢測結果方差小,檢測更加的穩定.所以最后選擇了帶高斯核的SVM 模型進行車位的分類,訓練好的模型稱為停車場車位檢測模型PSCM (the parking spot classification model).
訓練好的PSCM 車位檢測模型可以用于車場圖像中車位的實時分類,輸入為攝像頭實時采集的監控視頻流數據圖像和建立好的車位表,輸出為每個車位對應的類型.算法4 中給出車位分類的具體算法.

算法4.車位分類算法輸入:監控圖像,車位表,分類模型.輸出:空車位位置,數量.1.根據車位表對圖像進行切片,切片圖像作為待分類車位圖.2.對每個車位圖進行分類.根據時序信息進行狀態跳轉.3.對車位狀態結果進行統計,記錄車場中空間足以泊車的車位位置和數量.4.進行可視化.
3種類型中,車位空間足以泊車的類型是在提高停車場交通效率中最關注的實時信息.在對車位進行分類的同時,實時地記錄下空閑車位的數量和位置.圖5、圖6表示了從視頻中取出并經過逆透視變化后的原始圖像以及車位檢測和分類算法最終輸出的結果.

圖5 逆透視變化后的圖像

圖6 車位分類結果
從視頻流數據中逐幀取出停車場圖像進行車位分類,每一幀都是離散的圖像數據,檢測出來的結果具有跳變性.本文采用有限狀態機的方式來表示車位狀態的跳轉.在車位分類中,定義召回率準確檢測出來的可泊車車位占實際所有的可泊車車位的比例,準確率表示準確檢測出來的可泊車車位占所有檢測出來的可泊車車位的比例.在車位檢測問題中,召回率較低表示的是將檢測的泊車區域較少,影響停車場車位的利用率,而在車位分類中準確率較低表示的是將不能泊車的車位檢測成了足以泊車車位,準確率低對于后續的泊車安全性產生影響.所以,在車位的分類問題中,召回率和準確率的權重不一致,準確性對安全直接產生影響,應當給更高的權重.采用有限狀態機的方式進行車位狀態變化的判斷.從不足以泊車狀態變成足以泊車狀態需要采用計數機制,在連續超過多幀的足以泊車狀態才判定該車位變化為足以泊車狀態.
本文針對室外的停車場,設計了一種高召回率的車位檢測算法以及一種高準確率的車位分類算法.本系統的優點是使用的傳感器簡單,可以利用原有停車場中的相機,成本低,對安裝的要求相對較低,部署方便.在進行車位線檢測時,先驗使用檢測率極高的LSD 直線檢測,實現高召回率的車位線檢測.將車位形成矩形區域的假設和車位線檢測綁定進行優化,實現車位線檢測更高的召回率.使用投票機制的SVM 模型,實驗驗證出分類模型具有極高的分類準確性.系統顯著的提高停車場車位使用的效率,緩解停車場停車難的問題,可移植性強.未來將進一步提高系統使用的場景,擴充系統來滿足不同場景的使用.