熊曉博,黃穎妍,饒 兵
(武漢理工大學機電工程學院,湖北 武漢430070)
現代社會交通越來越便利便捷,各種貨車、卡車以及各種運輸車的使用逐漸增多,但由于體型過大,存在很大視野盲區,因而交通事故也頻頻發生。為了解決這個問題,可通過將多個相機合理布置安裝到重型卡車上,構成復眼系統,最后將各個相機圖像拼接成全景圖供駕駛室監控,以有效解決視野盲區問題。查閱資料后發現,現有復眼系統研究對比如表1所示。

表1 現有復眼系統研究對比表格
針對此,國內外已經有相關復眼系統的研究,但是大多僅能實現圖像拼接,不能給出自動適應不同卡車車型的不同相機位置布置方案。基于以上背景,設計了一種復眼數學模型與全景拼接結合的方式,此種方式可以根據車型給出子眼的最優布置方案,使得復眼系統適用性更廣。其具有以下優勢:將復眼相機系統與大型車輛結合,從而解決了長期困擾人們的車輛盲區問題;該裝置同時實現收集和儲存垃圾,提高了系統適應性;通過布置模型給出最優解,減少相機數量,降低了成本。
這款系統的設計解決了不同車型卡車視野盲區的問題,適用于各種重型卡車。
該系統主要由布置模塊、采集模塊、拼接模塊、顯示模塊四個模塊組成,系統結構框如圖1所示,具體步驟如下:①利用Python與Matlab構建傳統成像模型、復眼視野覆蓋模型,對壞境數據采集模塊觀測計算進行矯正,以實現對卡車周圍環境的無死角覆蓋。通過構建幾何光學模型與相機數量、剩余盲區面積等比較指標,計算出相機最優布置方案。②為獲得清晰、無畸變的圖像功能,為高清攝像頭構建完整的硬件采集模塊。③用opencv軟件對兩張有重疊區域的圖像進行“縫合”,從而獲得無縫隙、無死角、無多余、無迭代的360°全景。對現有拼接技術進行研究,解決現有技術不能有效去除錯誤匹配點對等問題。④利用OpenGL ES專門用來生成全景圖的軟件對來自拼接模塊的圖像信息數據進行計算處理。通過不斷調試相應模塊數據參數,輸出拼接效果,最后分析研究其合成圖像準確性,優化算法,達到預定指標后即將信號導入顯示器,得到圖像。⑤用此復眼系統解決重型卡車的視野盲區問題,減少甚至消除駕駛視野死角,從而在真正意義上提高卡車的安全性和降低事故發生率。
該卡車多子眼自動布置方法基于遺傳算法與Matlab軟件、Excel軟件,其包括單相機視場四棱錐模型、盲區投影模型、遺傳算法優化布局模型、最優方案篩選模塊及求解代碼。
所述單相機視場四棱錐模型以四棱錐代替相機形成的視場。所述盲區投影模型包括正視圖投影、側視圖投影、俯視圖投影。由于直接求盲區體積計算過于復雜,因此在該模型下,用三視圖的盲區投影面積之和代替盲區體積,作為衡量盲區大小的參數。

圖1 系統結構框圖
所述遺傳算法優化布局模型包括目標函數、編碼、選擇、交叉、變異、解碼環節,以盲區大小為目標函數(個體),包括相機個數、視場角等在內的變量為染色體,依次進行種群初始化、染色體編碼、適應度分配、選擇、交叉重組、變異、解碼,這樣累代循環,最終得出最優布局方案。該模型的種群初始化、基因編碼、選擇、交叉、變異等均可依托Matlab遺傳算法工具包GADS中的函數進行求解,因此求解的關鍵在于對目標函數的求解。由于該模型以卡車復眼系統車身正視圖和側視圖盲區投影面積之和為目標函數,因此求解的關鍵在于盲區投影面積的求解。
所述最優方案篩選模塊利用Excel進行數據統計,經觀察篩選得出最具經濟性的最優布局方案。
相關模型如圖2所示。

圖2 模型示意圖
TF接口用于插入內存卡STM32控制主板的核心,使用內部SDⅠO外設驅動內存卡;使用內部的UART與上位機通信;使用SPⅠ運輸子相機的圖像數據,EXTⅠ(外部中斷)用于處理特定的中斷輸入(如相機的HREF(幀同步信號)),GPⅠO用于模擬ⅠⅠC總線和對相機進行特定控制;DMA在SPⅠ與內存間,內存與SDⅠO間并行地搬運數據。
下面將對CH340和STM32中的外設進行詳細介紹。
CH340:CH34是一個常用的USB與串口的轉化芯片,用于將UART轉為USB,用于與上位機通信,設計簡單,使用方便,需要提供一個12 MHz的晶振和幾個抗干擾的電容就可以正常工作(因為不用使用RS232接口,所以不用蓄能電容來升壓),一般情況下使用說明書提供的推薦電路就可正常工作,在設計時只要注意連線是與STM32中UART特定的輸入與輸出管腳相連。
STM32中的外設如下。
GPⅠO:STM32的GPⅠO主要用于輸入與輸出,根據不同的需求STM32位其設計和不同的輸入輸出方式,如上拉、下拉、浮空和模擬(主要用于內部的ADC)輸入,推挽和開漏的通用與復用輸出(通用輸出通過內部的輸出數據緩存其設置,而復用輸出為STM32特定內設的輸入輸出接口)。
UART:STM32的UART可提供強大的功能,但是在本設計中主要用于串口的通信,根據串口的通信協議可知,串口設置有波特率、檢驗方式、數據位和停止位;在武漢理工大學自主創新研究基金資助項目計劃任務書11部UART對數據的傳輸有特定的標志位,通過將其標志位中斷,可以實現數據的接收。
SPⅠ:SPⅠ是一種全雙工的串行接口,支持同一個總線上連接多個設備,采用主從式的數據傳輸方式。STM32中SPⅠ的使用較為簡單,首先根據SPⅠ協議對其的工作模式、波特率、觸發方式、數據幀格式進行對應設置。
SDⅠO:SDⅠO是一種與SD卡進行通信的硬件接口,其主要對SD協議提供較好的支持,根據SDⅠO協議,與SD卡的通信主要分為命令與數據,其中命令包含(13中基本的命令和ACMD命令),SD接受到命令后將會對命令進行應答(136 bit的長應答和48 bit的短應答)。
DMA:DMA(Direct Memory Access)是一種無需消耗CPU資源,能將數據從一個地址復制到另一個地址的元件,使大規模的數據傳輸與CPU計算相并行。STM32中的DMA不但支持內存間的傳輸,還支持外設到內存間的傳輸。其支持多個通道,使用時主要將其與SPⅠ1、SPⅠ2和SPⅠ3相連,回傳照片數據,同時與SDⅠO相連,將數據寫入SD卡中。
本項目采用opencv中專門用來生成全景圖的組件進行信息采集,使得圖像之間相互重疊的部分對準,即圖像整合,然后再縫合成一個新的更大畫面的視圖。
圖像拼接是基于圖像的虛擬現實系統中建立高度真實感場景的一種基本方法,是全景圖生成技術中最關鍵的一步。基于面積的圖像拼接方法和基于特征的圖像拼接方法,在基于面積的圖像拼接算法的基礎上提出一個基于模板匹配的全景圖拼接算法,并對此算法進行了研究和討論。最后在Visual Studio 2017中使用OpenCV 3.4編程對此算法進行了驗證。
全景拼接是對兩張有重疊區域的圖像進行“縫合”,從而獲得一張全景圖的技術,是利用計算機視覺和圖像處理技術構建全景圖。其原理是通過在輸入的圖片中檢測關鍵點和提取局部不變特征,匹配出輸入圖像之間的特征,利用RANSAC算法得到單應矩陣,從而應用扭曲變換以獲得輸入圖像的拼接全景圖。
技術路線如圖3所示。

圖3 技術路線圖
利用OpenGL ES或GoogleCardboard(Google VR)這些專門用來生成全景圖的軟件,對來自拼接模塊的圖像信息數據進行計算處理。通過不斷調試相應模塊數據參數,輸出拼接效果,最后分析研究其合成圖像準確性,優化算法,達到預定指標后即將信號導入顯示器,得到圖像。
團隊已經設計并搭建了全景采集的復眼照相系統,并已獲得專利,因此具有良好的學術氛圍與研究基礎。
團隊已經取得多項軟件著作權,包括復眼時鐘同步系統、復眼采集數據傳輸系統、基于STM32與FreeRTOS的復眼相機主板控制程序,為本項目的研究打下堅實的研究基礎。
重型卡車復眼系統利用環繞在車身周圍的多個子眼拍攝的照片,合成全景圖,以供司機觀察車子周圍的情況。可以完全消除視覺盲區的影響,有效減少交通事故的發生。長期以來,重型卡車等大型車輛發生的事故造成了大量的人員傷亡及財產損失,大部分原因都是這些大型車輛的視覺盲區較大,有時即使是靠近車身的行人與車輛都看不見。復眼系統便捷地解決了這個問題,車身前后左右都在視線之中,為司機及其他人提供了安全保障。圖像拼接和顯示方面,已有相應的準確可靠的算法,其理論基礎是可靠的。本項目也可應用于無人駕駛系統,賦予其可靠的視覺。
本設計主要對不同車型的重型卡車盲區進行監控,比如灑水車、消防車、公路清潔車、油罐車、攪拌車,還有自卸車和貨車以及一些不多見的越野車。經過實際校核,該系統可實現較為優化的復眼布置,同時其改變以往單純依靠經驗布置相機的方式,在使用最少數量子眼的情況下實現最大的視野覆蓋,實現了布置的自動化,其圖像拼接部分實現了視野全覆蓋,同時材料和加工無特殊要求,具有很大的應用推廣價值。