陸旭 梁光明 陳韻迪



摘要:隨著嵌入式技術的發展,嵌入式圖像處理得到了越來越廣泛的應用。該研究主要設計出一種通用圖像處理系統,能對采集的圖像做各種處理,滿足大部分圖像處理要求。以ARM Cortex—A8處理器(S5PV210)為核心搭建硬件平臺,以嵌入式Linux系統構建軟件開發環境[1],設計基于V4L2接口的視頻圖像采集程序,然后對圖像進行保存和處理。該系統能實時、高速處理圖像數據,可用于各領域的嵌入式圖像處理。
關鍵詞:Linux硬件平臺軟件平臺V4L2圖像采集圖像處理
中圖分類號:TP394.41 文獻標識碼:A文章編號:1007-9416(2016)06-0000-00
1 引言
嵌入式圖像處理在軍事領域、自動化生產、航天航空、通信領域、電子醫療、工農業生產 、公共安全等領域得到了越來越廣泛的應用。嵌入式圖像處理技術與傳統的PC機圖像處理技術相比,其最為顯著的優點是嵌入式系統具有體積小、功耗低、成本低、性能高、速度快等。 基于ARM的嵌入式圖像處理系統的實現,體現出了其穩定性好、 易于開發維護、通用性強、成本低等特點。嵌入式系統的強大的兼容性,模塊化設計,使其開發的時間短,易于維護,嵌入式圖像處理系統的小巧性,使其配置拆裝靈活,設計出實時的,能夠高速處理圖像數據的嵌入式通用圖像處理系統是十分有研究意義的[2]。本研究設計的通用圖像處理系統能實現圖像采集、顯示、保存、關閉,并能對圖像預處理,如,圖像灰度化、二值化、腐蝕、膨脹、銳化、直方圖均衡化、平滑、邊緣檢測等。
2 系統硬件平臺的搭建
如圖1所示,本系統通過攝像頭進行圖像采集,并將采集數據送至ARM處理器進行圖像處理,配載512M的DDR2作為系統內存和512M的Nand Flash為系統存儲器以掛載嵌入式Linux操作系統和運行圖形用戶應用程序,期間通過LCD顯示屏將采集圖像及處理過程實時顯示給用戶,并可以通過觸摸屏進行人機交互,處理結果既可以保存于掉電數據不丟失的Flash存儲器中,也可以利用USB接口或SD卡接口將圖像存儲于U盤和SD卡中,以備后續查詢和操作。為了調試程序、燒寫系統以及與PC機的通信,保留了USB接口、USB轉串口和網線接口以連接到上位PC機,最后加入電源管理,組成了整個硬件開發平臺[3]。
本系統選用三星公司生產的S5PV210微處理器,運行最大頻率可達 1GHz,處理器內部為64/32位總線結構,32/32KB一級緩存,512KB二級緩存。它在圖像處理方面有獨特的優勢:S5PV210的視頻編碼支持MPEG-4/H.263/H.264等格式,解碼支持MPEG2/VC1/Xvid等格式,支持高清 HDMI TV 輸出;內嵌了圖形加速引擎(SGX540),對圖像處理提供強大的硬件加速支持。本系統選用的攝像頭是最高分辨率為640×480的彩色USB攝像頭,其傳感器為CMOS,最大幀數為30幀/S.系統選用的顯示器是最大分辨率為800×480的彩色液晶電容屏。攝像頭通過ARM外擴的USB接口與系統連接,液晶屏通過薄膜線與ARM外擴的薄膜線卡槽相連進行數據傳送[1]。
3 系統軟件平臺的設計
嵌入式軟件設計包括嵌入式操作系統和圖形用戶應用程序,在設計視頻圖像采集程序之前,應預先移植嵌入式操作系統。本研究搭建的是Linux嵌入式操作系統環境。通過使用arm-linux-gcc建立交叉編譯環境、移植Bootloader、移植Linux內核、制作根文件系統等步驟,完成ARM平臺上嵌入式Linux系統的搭建[1]。然后在PC上基于Qt編寫ARM平臺下的圖形用戶應用程序,實現的主要內容包括:人機交互界面的編寫,提供友好的人機交互平臺,方便用戶操作;圖像的采集、顯示、保存和關閉功能;編寫圖像處理算法對采集的圖像進行去噪、灰度化、二值化、銳化、邊緣檢測等處理。圖2是軟件平臺結構:
3.1 視頻圖像采集程序的設計
本視頻圖像采集程序是基于Video 4 Linux 2(V4L2)接口進行設計的。V4L2是V4L的改進版。V4L2是 Linux系統中關于視頻設備的內核驅動,其主要用來圖片、視頻、音頻等信息的采集。目前 V4L2被廣泛應用于遠程會議、可視電話、視頻監控以及其他多種嵌入式多媒體終端。在 Linux 系統下,所有的外設都被當作一種文件,即“設備文件”,USB 攝像頭也一樣。V4L2 提供了一系列的接口函數,用于TV卡、視頻捕捉卡和USB攝像頭等視頻設備的應用編程[4]。V4L2為USB攝像頭提供了基本的I/O操作函數open、read、write、close,并把這些函數定義在 file_operations 結構體中。本系統采集視頻圖像程序的流程如圖3。
通常來說,應用程序和設備有3種交換數據的方法,直接read/write、用戶指針和內存映射三種。很多設備帶有自己的數據緩沖區,或者驅動本身在內核空間中維護一片內存區域,為了讓用戶空間程序安全的訪問,內核往往要從設備內存或者內核空間內存復制數據到用戶空間,從而便多了復制內存數據這一環節,增加了系統處理時間。本設計采用內存映射的方法,用mmap函數把在內存空間中獲取的視頻幀映射到用戶空間。應用程序在調用緩存數據時,緩存符合先進先出的模式。采集圖像時,利用兩幀圖像的緩存,一幀圖像緩存存完后發送出去,將第二幀圖像覆蓋前一幀,交替使用,從而實現了視頻圖像的實時采集。
3.2 圖像預處理
圖像預處理是指對原始圖像進行修復、增強、二值化、色彩空間轉換等操作,以便于執行后續的處理。當前預處理相關的主要方法有:圖像去噪、圖像銳化和邊緣檢測等。
3.2.1 圖像灰度化
考慮到彩色的圖像的數據量較大,而灰度圖像的數據量較小但圖像的邊緣、形狀等特征依然存在,為了在不影響后續的圖像處理的要求下,減小系統的數據處理量、增加系統的
處理速度,本設計中,把ARM平臺采集的彩色的視頻圖像通過灰度化處理將其變成灰度圖像[5]。
3.2.3圖像去噪
本系統圖像噪聲的來源有三個方面 :1)光電、電磁轉換過程中引入的噪聲;2)CMOS圖像傳感器單像素模數轉換的誤差和采集圖像的不穩定性;3)由物理量的不連續性引起的自然起伏性噪聲。本系統的圖像平滑采用鄰域平均法對原始圖像中的噪聲進行消除。
鄰域平均法是一種簡單的空域平滑濾波技術 ,可以看作是平滑線性濾波器即均值濾波,設有一幅 的原始圖像 , 經過鄰域平均法處理后的圖像為 ,如公式(3)所示。
使用鄰域平均法對圖像去噪后會使圖像略微模糊,但圖像變得更加平滑。去噪后的圖像如上圖5(b)所示。
3.2.4圖像銳化
圖像銳化就是補償圖像的輪廓,直接圖像的邊緣及灰度跳變的部分,使圖像變得清晰,圖像平滑往往使圖像中的邊界、輪廓變得模糊,經過圖像銳化處理,圖像的邊緣、輪廓線以及圖像的細節會變得清晰[6]。本設計設置一個閥值 ,像素的RGB分量梯度大于 ,則像素的RGB分量加上某一個值a,若加上a后像素的RGB分量大于255,則RGB分量取為255。
3.2.5邊緣提取
圖像邊緣信息是圖像識別中提取圖像特征的一個重要屬性,通過對目標邊緣的檢測來實現將目標圖像與背景的分割。邊緣的兩側分屬于不同的區域,邊緣的像素的灰度,與周圍的像素都有一個階躍變化。邊緣檢測的方法有很多,比如 Sobel 算子,Robert 算子,Canny 算子,都能夠檢測到圖像的邊緣。一般對圖像進行邊緣檢測之前要將圖像灰度化,本設計采用Sobel算子直接對原始彩色圖像進行邊緣提取。設有一幅 的原始圖像 , 與Sobel算子進行卷積處理后的圖像為 ,公式如下。
4 結語
本研究設計了以S5PV210為核心的嵌入式圖像處理系統,首先搭建系統的硬件平臺與軟件平臺,然后在Qt上編寫基于Video 4 Linux 2(V4L2) 視頻圖像采集與處理程序,對采集到的圖像做各種處理,并對一些圖像處理算法做了改進。實現結果驗證了該系統的可靠性,該系統能實時、高速處理圖像數據。本研究設計的基于ARM的嵌入式圖像處理系統可用于各領域的圖像處理,并對研究手持式、便攜式的圖像處理具有很大的參考價值。
參考文獻
[1]邱文勝,牛麗,蘇秉華,王源圓.基于ARM的嵌入式超分辨率復原系統設計[J].深圳大學學報(理工版),2015(3):311-316.
[2]王學賓.于ARM的嵌入式圖像處理技術的研究[D].河北工業大學,2012.
[3]吳健.基于ARM的嵌入式USB圖像采集與處理系統[D].合肥工業大學,2012.
[4]張歡歡.基于嵌入式圖像處理的儀表智能識別技術研究[D].浙江理工大學,2015.
[5]謝浪平.基于ARM的視頻圖像采集與處理系統的設計與實現[D].湖南大學,2014.
[6]張濱.昆蟲翅膀圖像分類算法的設計與實現[D].北京郵電大學,2010.