陳鵬展 楊 希
(華東交通大學電氣與電子工程學院 江西 南昌 330013)
?
嵌入式圖像邊緣檢測系統設計與實現
陳鵬展 楊 希
(華東交通大學電氣與電子工程學院 江西 南昌 330013)
采用高性能嵌入式Cortex-A9處理器設計了一套圖像邊緣檢測系統。主設備系統采用ARM-Linux嵌入式操作系統,利用OpenCV捕獲視頻幀并使用改進Canny邊緣檢測算子對視頻幀分析處理并實時顯示。針對色彩與背景相似的物體、輪廓特征明顯的物體和夜間環境下的物體邊緣檢測進行測試。實驗結果表明,嵌入式平臺能夠達到和PC相同的檢測效果,相比于傳統Canny算子,改進的Canny邊緣檢測算子圖像邊緣檢測系統的檢測效果優秀和性能良好,具有很強的實時性和可靠性。
OpenCV 嵌入式操作系統 Cortex-A9 邊緣檢測 Canny
隨著嵌入式智能設備在工業、汽車、機器人等行業中廣泛的應用,而圖像作為智能設備感知外界的一種重要方式顯得尤為重要。原始的圖像信息需要進行相關處理才能被機器所識別。在實際的圖像處理中,作為圖像基本特征的圖像邊緣通常用于其他更高層次的圖像處理中。在工業上,基于視覺工件尺寸識別依賴于對物體邊緣檢測;在汽車方面,車輛車牌識別系統中也是對車牌的邊緣進行檢測再進一步完成識別。因此,高性能的邊緣檢測是完成更復雜圖像識別應用的基礎,是獲得更好識別效果的必要條件。
傳統PC機圖像處理系統,體積龐大,不具備便攜性,限制了其在移動通信、便攜設備等領域的應用。相比之下,嵌入式圖像處理平臺不僅擁有強悍的處理性能,而且在硬件上更小巧、可攜帶性強、安裝方便、功耗低、易編程等優點。同時,嵌入式系統啟動速度快、運行穩定、實時性強,能夠很好滿足快速實時的圖像處理要求。因此,本文選擇在ARM嵌入式平臺下開發一款高性能的圖像邊緣檢測系統。
1.1 嵌入式硬件平臺設計
本系統的硬件平臺由標準通用的嵌入式平臺,由Cortex-A9嵌入式中央處理(TI AM4739)、輸入輸出設備(圖像采集模塊和顯示模塊)、存儲體系(緩存、SDRAM、eMMC)和各種通信和調試接口組成。硬件平臺體系結構如圖1所示。

圖1 硬件平臺體系結構
1.2 圖像采集模塊
本設計采用CMOS圖像傳感器采集實時圖像。采集的圖像質量將直接影響圖像邊緣檢測的成功率和準確率,在本文設計的系統中,圖像采集模塊由紅外LED補光燈、CMOS圖像傳感器、廣角鏡頭、光敏電阻、控制電路等組成。模塊示意如圖2所示。系統通過光敏電阻檢測周圍環境光照強度并適時調節紅外LED補光燈從而實現夜視功能。圖像采集模塊通過USB連接到嵌入式硬件平臺,將采集的視頻流傳輸給嵌入式模塊處理。

圖2 圖像采集模塊
1.3 HDMI顯示模塊
HDMI顯示模塊主要功能是顯示紅外攝像頭采集的實時圖像和處理后邊緣圖像,用戶還可以通過液晶顯示屏觀察系統工作狀態。HDMI顯示模塊采用市場上較為成熟的解決方案。其硬件設計框圖如圖3所示。嵌入式模塊將處理后的視頻流傳輸給HDMI顯示模塊通過外接的液晶顯示設備顯示。

圖3 HDMI顯示模塊
1.4 嵌入式模塊
嵌入式模塊作為本系統的核心,選用一款高性能基于Cortex-A9架構的TI AM4379嵌入式處理器。AM4379是TI公司推出的基于Cortex-A9核開發的高性能處理器,其主頻高達1 GHz,并采用64/32位內部總線結構,二級緩存512 KB,可以實現每秒2億條指令集的高速運算,同時配置有SGX530圖形加速功能。片內包含獨立的SDRAM控制器,外部增加一個512 MB DDR2內存芯片和1 GB的Nand Flash儲存器作為內核和文件系統的存儲介質。針對嵌入式系統核心芯片和外設需要兩種不同工作電壓。系統采用TI集成的電源模塊TPS65023以滿足供電要求。
通過配置編譯完成ARM-Linux操作系統軟件平臺搭建。將ARM-Linux移植到特定的硬件平臺上,大致需要分成三個步驟:
(1) 首先是準備工作,包括下載源碼、建立交叉編譯環境;
(2) 配置和編譯內核,針對硬件設計對源碼做一定的修改,制作文件系統;
(3) 燒寫Bootloader、Linux內核、文件系統。
完成嵌入式操作系統的搭建后,移植OpenCV到嵌入式操作系統,設計改進Canny算子,最后利用編寫程序實現邊緣檢測的功能。基于OpenCV的嵌入式圖像邊緣檢測系統設計流程如圖4所示。

圖4 邊緣檢系統設計流程圖
OpenCV移植到ARM-linux系統的步驟如下:
(1) 安裝相關的依賴的lib庫和交叉編譯鏈arm-none-linux-gnueabi;
(2) 編譯OpenCV庫并安裝到ARM-linux系統;
(3) 編寫改進Canny算法程序。
OpenCV的CV模塊包含基本的圖像處理函數和高級的計算機視覺算法。ML是機器學習庫,包含一些基于統計的分類和聚類工具。
為精簡系統外設提高便攜性,同時防止斷電后不能自動恢復啟動的問題,需要實現圖像邊緣檢測系統上電開機自啟,可修改系統/etc/rc.local文件,將啟動程序的shell命令加入其中即可。相比PC平臺,嵌入式系統如此的設計更好的故障恢復性能。
嵌入式模塊由用戶圖形界面、數據處理和系統控制管理三個功能模塊組成。用戶圖形界面提供方便快捷的用戶操作和管理界面,增加系統人機交互性;數據處理模塊實現對圖像采集模塊采集的實時圖像信息的傳輸和算法處理;系統控制管理完成獲取圖像實時顯示和處理后的邊緣圖像顯示。圖像邊緣檢測系統的工作流程如圖5所示。

圖5 圖像邊緣檢測流程圖
2.1 改進Canny算子設計
傳統的邊緣檢測通常使用Canny算子,Canny算法由John Canny于1986年提出,它與Marr(LoG)邊緣檢測方法類似,也屬于是先平滑后求導數的方法[1]。Canny算子具體流程如下:
(1) 用高斯濾波器平滑圖像;
(2) 一階偏導有限差分計算梯度幅值和方向;
(3) 對梯度幅值進行非極大值抑制;
(4) 用雙閾值算法檢測和連接邊緣。
由于傳統Canny算子只進行了一次高斯濾波,高斯濾波使得圖像變得平滑,但是對于紅外夜間成像的圖像降噪效果并不理想。而小波變換不僅可以能夠十分有效地去除夜間成像圖像的噪點而保留有用信號的目的,還可以得到原始信號的近似最優估計[2]。與傳統的線性濾波方式相比較,小波變換具有多辨性、多角度、低熵性等優點,因此被廣泛應用于夜間紅外圖像的濾波。
針對傳統Canny算法的這種局限性,提出了一種基于Canny邊緣算法的改進算法,即為高斯濾波與小波變換想結合的邊緣保持濾波的方法進行夜間成像的邊緣檢測。
邊緣檢測的實質就是利用特定的算法提取圖像主體與背景的交界線。圖像邊緣的定義即為圖像中灰度發生急劇變化的區域邊界[3]。
設輸入圖像信號函數為f(x,y),圖像的平滑處理通常使用二維高斯函數,二維高斯函數具有旋轉對稱性而且對服從正態分布的噪聲信號有很好的過濾效果。其函數表達式如式(1):
(1)
參數σ表征高斯濾波器寬度(決定著平滑程度),σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好。通過調節平滑程度參數σ,可在圖像特征過分模糊(過平滑)與平滑圖像中由于噪聲和細紋理所引起的過多的不希望突變量(欠平滑)之間取得折衷。原始圖像信號經過平滑處理后,針對不呈現為正態分布的無規律噪聲信號進行連續的小波變換去噪。小波函數表達式如式(2):
(2)
其中ψ(t)為一可平方可積函數,即ψ(t)∈L2(R),稱之為母小波。對母小波進行伸縮和平移變換后得到小波函數ψa,b(t)。其中a為尺度因子,反映函數的寬度。b為平移因子,檢測小波函數在t軸上的平移位置。
對于經過平滑處理的圖像信號G(x,y)的小波變換如式(3)所示。其中Ψ*(t)表示Ψ(t)的復共軛函數。
(3)
此時小波為正小波,要產生重構信號需要對其進行逆變換。逆變換函數如式(4):
(4)
將連續小波變換引入傳統Canny算子使得在邊緣提取和圖像處理過程中能更好控制噪聲信號,從而大大提高最終得到的圖像質量。
2.2 改進Canny算子實驗驗證
為了驗證改進的邊緣檢測算法在邊緣檢測過程中的去噪效果,在設計的嵌入式硬件平臺上進行實驗驗證。本文使用圖像處理領域經典圖片Lena作為樣圖,將樣圖載入申明的指針IplImage*src=cvLoadImage(″lena.png″,CV_LOAD_IMAGE_COLOR)。按照本文改進的算法流程,對原始圖像灰度化、平滑處理。加隨機噪聲或者椒鹽噪聲模擬夜間環境產生的噪點,利用小波變換二次去噪,最后設定Canny閾值進行邊緣提取。驗證效果如圖6所示,其中(a)為原圖,(b)為圖像灰度化和平滑過程效果圖,(c)為模擬加噪后效果圖,(d)高斯濾波后效果圖,(e)為二次小波變換去噪過程效果圖,(f)為閾值0.02的Canny邊緣提取效果圖。

(a) 原圖 (d) 高斯濾波后效果圖

(b) 圖像灰度化和平滑過程效果圖 (e) 二次小波變換去噪過程效果圖

(c) 模擬加噪后效果圖 (f) 閾值0.02的Canny邊緣提取效果圖圖6 嵌入式平臺驗證效果
3.1 圖像獲取
當紅外夜視攝像頭作為輸入設備時,OpenCV包含的工具包中提供一種十分簡單的函數實時的讀入視頻流信息,即函數CvCaptureFromCam()參數值為設計系統索引,通常設置為0,返回CvCapture*指針。之后使用函數cvQueryFrame();來獲取視頻流圖像幀序列。
3.2 改進Canny邊緣檢測算子
(1) 圖像灰度化、平滑處理:cvCvtColor(src,dst,CV_BGR2GRAY);將原始圖像幀轉換為8位的灰度圖。接著利用高斯濾波函數對圖像原始信息進行平滑處理。使用函數CvSmooth濾波方式使用CV_GAUSSIAN即為高斯濾波。
(2) 小波變換去噪:針對夜間紅外成像的高噪點特點,使用小波變換進行去噪處理。首先使用高通低通濾波函數wavelet(_wname,lowFilter,highFilter);接著逐行進行小波行變換Mat oneRow=Mat::zeros(1,col,src.type());然后逐列進行小波列變換Mat oneCol=Mat::zeros(row,1,src.type());完成小波行、列變換后,最后進行小波逆變換Mat IWDT(const Mat &_src,const string _wname,const int _level)const產生重構信號。
(3) Canny算子邊緣提取:利用傳統的Canny算法中的邊緣提取函數,cvCanny(src,dts,lowThresh,HighThresh,3);其中參數lowThresh,HighThresh分別為低、高閾值,在本試驗中分別設置為50、100。
3.3 實時顯示
實時顯示視頻圖像,創建顯示窗口cvNamedWindow(″video″, 1);實時顯示圖像信息cvShowImage (″video″, pFrame)。
為驗證在日間和夜間邊緣檢測系統的效果,利用設計的嵌入式硬件平臺采集日間和夜間圖像兩組,分別使用傳統Canny算子和改進Canny算子進行實驗,實驗平臺如圖7所示。

圖7 實驗硬件平臺
對比效果如圖8所示。對比圖8中(b)和(c),觀察可見本文改進Canny算子檢測更多邊緣細節,邊緣檢測能力明顯優于傳統Canny算子。對比圖8中(e)和(f),傳統Canny算子檢測邊緣噪點十分雜亂,而改進Canny算子檢測邊緣清晰、輪廓明顯、畫面純凈。

(b) 傳統Canny算子邊緣檢測圖 (e) 傳統Canny算子邊緣檢圖

(c) 改進Canny算子邊緣檢測圖 (f) 改進Canny算子邊緣檢測圖圖8 日間和夜間邊緣檢測效果
為驗證色彩與背景相似度很高的物體圖像邊緣檢測效果,分別使用傳統Canny算子和改進Canny算子進行采集實驗,對比效果如圖9所示。對比圖9中(b)和(c),觀察可見在游標卡尺邊緣和桌面背景交接處,傳統Canny算子的檢測的邊緣十分模糊、線條雜亂,而改進Canny算子檢測邊緣明顯清晰。
為驗證邊緣檢測系統對輪廓特征明顯的物體的檢測效果,分別使用傳統Canny算子和改進Canny算子進行采集實驗,對比效果如圖9所示。對比圖9中(e)和(f),觀察可見在缺口處,傳統Canny算子檢測效果難以區分其邊緣,而改進Canny算子檢測的邊緣清晰可見,整個圓形輪廓十分規則。
[7]提出的邊緣檢測算法評價的三個標準,即為邊緣像素數、4連同域數和8連同域數。對圖8的(a)和(d)兩圖進行計算得出數據統計如表1和表2所示。其中A、B、C分別表示邊緣像素數、4連同域數和8連同域數。C/A值越小則邊緣檢測連續性越好,C/B值越小則單像素邊緣所占比例越大,更符合單一邊緣響應準則[4]。對比傳統Canny算子和改進Canny算子數據可得,改進Canny算子的C/A和C/B值均小于傳統Canny算子檢測結果。即改進Canny算子邊緣檢測效果優于傳統Canny算子。

(a) 原圖 (d) 原圖

(b) 傳統Canny算子邊緣檢測圖 (e) 傳統Canny算子邊緣檢圖

(c) 改進Canny算子邊緣檢測圖 (f) 改進Canny算子邊緣檢測圖圖9 色彩相似和形狀明顯物體邊緣檢測效果圖

算法ABCC/AC/B傳統Canny13528653823670.1750.362改進Canny22134847726110.1180.308

表2 夜間邊緣圖像統計結果表
為驗證改進Canny邊緣檢測的成功率,在嵌入式平臺定時每隔3秒截取一次邊緣圖像,采集100張樣本,得出結果如表3所示。對比,傳統Canny邊緣檢測程序,可發現改進后的檢測成功率保持在95%以上,符合檢測要求。

表3 邊緣檢測成功率
在嵌入式平臺分別編譯和加載運行測試傳統Canny算子和改進Canny算子邊緣檢測程序。編譯速度和加載運行處理速度情況分別如表4和表5所示。一個程序在運行時使用的系統資源通常包括CPU、Memory和I/O等,表4和表5中REAL、USR、SYS分別表示CPU資源的統計包括實際使用時間、用戶態使用時間、內核態使用時間。

表4 邊緣檢測程序編譯速度表

表5 邊緣檢測程序加載運行速度表
在PC平臺和嵌入式平臺上分別測試傳統Canny算子和改進Canny算子的邊緣檢測系統資源使用情況如表6和表7。其中%CPU、%MEN、VSZ、RSS、FPS分別表示CPU占用百分比、內存占用百分比、總虛擬內存數、進程使用的總物理內存數、每秒傳輸幀數。對比傳統Canny算子和改進Canny算子系統資源使用數據可以看到,不論是PC平臺還是嵌入式平臺,改進Canny算法占用更小的系統資源,獲得更好的視頻流暢度。測試使用的PC為Core-i3、4G RAM,相比嵌入式平臺,性能更強大。測試結果可見,嵌入式平臺獲得的視頻流暢度與PC平臺基本相同。由此可見,成本更低、體積更小、便攜性更強的嵌入式作為圖像邊緣檢測系統的平臺同樣能夠達到高性能PC系統的檢測效果,而且改進后算法的嵌入式邊緣檢測系統能夠適用于更復雜、惡劣條件下的應用場景。

表6 PC式平臺邊緣檢測系統資源使用表

表7 嵌入式平臺邊緣檢測系統資源使用表
本文設計的基于OpenCV的嵌入式邊緣檢測系統,針對色彩與背景相似物體邊緣檢測和輪廓特征明顯的物體邊緣檢測。使用改進的Canny邊緣檢測算子,圖像邊緣檢測的效果明顯優于傳統的Canny算子,特別是在光線條件十分惡劣的夜間也能夠獲得良好的檢測效果。本嵌入式圖像邊緣檢測系統運行在高性能的Cortex-A9處理器平臺上運行流暢、穩定,邊緣檢測的成功率高。相比與傳統PC而言,嵌入式平臺能夠很好地滿足邊緣檢測系統性能要求的同時,具有更好的便攜性、功耗低、成本低的優點,能夠適用于更廣泛的工作場合。
參考文獻
[1] 哈夫變換和Canny邊緣檢測算法[EB/OL]. (2010-06-06). http://blog.sina.com.cn/s/blog_7a0700590101574t.html.
[2] 張郝.基于小波變換的圖像去噪方法研究[D]北京:北京交通大學,2008.
[3] 黃鳳.邊緣檢測算子在武夷巖茶圖像處理中的比較[J].廊坊師范學院學報(自然科學版),2013,13(4):34-37.
[4] 許宏科,秦嚴嚴,陳會茹.一種基于改進Canny的邊緣檢測算法[J].紅外技術,2014,36(3):210-214.
[5] 徐歡,李振壁,姜媛媛,等.基于OpenCV的輸送帶跑偏自動檢測算法研究[J].工礦自動化,2014,40(9):48-52.
[6] 孔珊珊,降愛蓮.基于第二代模糊集閾值選擇的圖像Canny邊緣檢測[J].計算機應用與軟件,2013,30(12):160-162,307.
[7] 林卉,趙長勝,舒寧.基于Canny算子的邊緣檢測及評價[J].黑龍江工程學院學報,2003,17(2):4-6.
[8] 段軍,劉春祥.改進Canny算子在細胞圖像邊緣檢測中的應用[J].計算機應用與軟件,2014,31(5):237-239.
[9] 王蓉,高立群,柴玉華,田磊.綜合Canny法與小波變換的邊緣檢測方法[J].東北大學學報,2005,26(12):1131-1133.
[10] Heath M, Sarkar S, Sanocki T, et al. Comparison of Edge Detectors: A Methodology and Initial Study[J]. Computer Vision & Image Understanding, 1996, 69(1):38-54.
[11] Canny J.A Computational Approach to Edge Detection[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1986(6): 679-698.
[12] Li S, Kwok J T, Wang Y. Using the discrete wavelet frame transform to merge Landsat TM and SPOT panchromatic images[J]. Information Fusion, 2002, 3(1):17-23.
DESIGN AND REALIZATION OF EMBEDDED IMAGE EDGE DETECTION SYSTEM
Chen Pengzhan Yang Xi
(SchoolofElectricalandElectronicEngineering,EastChinaJiaotongUniversity,Nanchang330013,Jiangxi,China)
A high-performance embedded Cortex-A9 processor is used to design a set of image edge detection system. The main equipment system adopts ARM-Linux embedded operating system, uses OpenCV to capture the video frames and uses the improved Canny edge detection operator to analyze the video frames and display them in real time. For objects with similar color and background, objects with obvious outline features, and object edge detection under nighttime environment are tested. Experimental results show that the embedded platform can achieve the same detection effect as the PC. Compared with the traditional Canny operator, the improved Canny edge detection operator edge detection system has good detection performance and good performance, with strong real-time and reliability.
OpenCV Embedded operating system Cortex-A9 Edge detection Canny
2016-05-25。國家自然科學基金項目(61164011);江西省研究生創新專項資金項目(YC2016-S259)。陳鵬展,副教授,主研領域:智能化自動化裝置及汽車電子控制。楊希,碩士生。
TP391.41
A
10.3969/j.issn.1000-386x.2017.07.033