《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Linux的嵌入式視覺系統設計方案
基于Linux的嵌入式視覺系統設計方案
摘要: 結合當前嵌入式產品的發展方向,提出了一種基于ARM9和Linux的嵌入式視覺系統,闡述了其硬件架構與軟件組成,通過配置和加載各種設備驅動程序,利用V4L接口函數實現圖像采集與顯示。設計的嵌入式視覺系統體積小,成本低,可移植性強,通過實驗波形和數據驗證了其具有良好的圖像采集和顯示性能。
Abstract:
Key words :

1 引言

視覺系統在現代工業生產自動化系統中應用非常廣泛,主要集中于藥品檢測分裝、印刷色彩檢測、集成電路生產、精密電子產品裝配、智能機器人識別導航等領域。隨著Internet 的普及,現代社會已進入后PC 時代,嵌入式技術越來越與人們的生活緊密結合。

嵌入式視覺系統可通過USB 總線等將圖像的獲取、圖像處理、顯示設備集成于一體,成本相對較低,體積小巧,可以方便地安裝在載體身上,故研究嵌入式的視覺系統具有一定的實際意義。

2 嵌入式視覺系統總體方案設計

嵌入式視覺系統由嵌入式硬件平臺、操作系統、圖像采集和圖像顯示四大部分組成,原理框圖如下圖1 所示。

圖1 視覺系統原理框圖

圖1 視覺系統原理框圖

S3C2410X 芯片是韓國三星電子公司推出的一款基于ARM920T 內核的16/32 位RISC 嵌入式微處理器。該芯片集成了支持 TFT 的 LCD 控制器 、3 個通道的UART 等控制器和豐富的外部接口,MPLL 產生主時鐘,能夠使處理器工作頻率最高達到203MHz,此工作頻率能夠使處理器輕松運行WinCE、Linux 等操作系統以及進行較為復雜的數據處理。該芯片可以滿足低成本、高速度、低功耗的設計需求,非常適合作為嵌入式視覺系統的硬件平臺。

Linux 操作系統同目前廣泛應用的嵌入式操作系統如pSOS、VxWorks、winCE 相比,具有可移植性好、網絡功能強、有優秀的GNU 編譯工具支持等優點,更重要的是Linux 的開放源代碼和免費的優點使得系統成本顯著降低,因此選用Linux 操作系統作為軟件開發平臺。

3 嵌入式視覺系統硬件設計

3.1 圖像采集

選購攝像頭,優先考慮Linux 內核公開支持的攝像頭芯片。由于目前Linux 操作系統使用的內核版本僅自帶了ov511 芯片的攝像頭驅動,因此,系統的圖像采集模塊由CMOS 圖像傳感器OV7620 和后端處理芯片OV511+組成。本系統在IIC 總線模式下通過設置OV7620 的功能寄存器,使OV7620 工作于連續掃描方式,RGB 原始數據16 位輸出方式。OV7620 有4 個同步信號:VSYNC(垂直同步信號)、FODD(奇數場同步信號)、HSYNC(水平同步信號)和PCLK(像素同步信號)[3].當采用連續掃描方式時,只使用VSYNC 和HSYNC、PCLK 三個同步信號。通過設定內部寄存器,控制輸出幀率在0.5 幀/s~30 幀/s 之間變化,窗口輸出設置為:640×480,經過設定后的OV7620 輸出時序如圖2 所示:

圖2 OV7620 輸出時序圖

圖2 OV7620 輸出時序圖

3.2 圖像傳輸

圖像采集幀率與數據傳輸接口的數據傳輸速率之間的匹配是圖像采集的一個重要問題。如果圖像傳感器的采集頻率大于接口的最大可傳輸數據率,會引起緩沖區內的圖像數據堵塞,造成數據混亂,出現無規律的亂碼。因此,為了保證圖像數據傳輸時的完整性和可靠性,接口數據的傳輸速率應滿足圖像傳感器的采集速率。下面是對本采集系統的傳輸匹配計算。

已知:OV7620 的最大主時鐘頻率27MHz,最大數據率13.5MB/S.以OV7620 默認輸出為例:輸出格式VGA,分辨率640×480,幀率15 幀/秒,輸出數據格式為16 位彩色數據。

一幀圖像的數據量: (640 × 480 × 16)/8=614400B=0.586MB.

一秒鐘的最大數據量:0.586×15=8.79MB/S.

因為圖像采集中圖像數據不是連接不斷的采集,幀與幀之間有場消隱時間,行與行之間也有行消隱時間,所以13.5MB/S> 8.79MB/S.基于這個采集速率,要實現VGA 圖像15 幀/秒的圖像采集,嵌入式主機與USB 接口速度應與圖像傳感器的采集速度相匹配,至少不能小于9MB/S 的速度,否則會出現數據在傳輸通道中堵塞,致使數據出現混亂。系統采用USB1.0 作為傳輸接口,系統采集的圖像數據為9MB/S,USB 傳輸速率大于9MB/S,故采集頻率與傳輸頻率匹配。

3.3 圖像顯示

液晶顯示器LCD 以省電和顯示大量信息等優點而成為現代儀器儀表用戶界面的主要發展方向。本視覺系統采用三菱公司的8.4'彩色TFT-LCD 作為圖像顯示模塊, 液晶屏大小為640 × 480 , 型號:AA084VC03.

系統需要兩種電源供電,分別是5V 和12V.5V電源用于核心板供電,USB 圖像采集模塊由核心板供電,12V 電源給液晶屏供電,這些電壓由單獨的電源模塊提供。整個視覺系統的硬件結構圖如下圖3 所示。

圖3 視覺系統硬件結構圖。

圖3 視覺系統硬件結構圖。

4 嵌入式視覺系統軟件設計

視覺系統軟件組成主要包括操作系統、設備驅動程序,圖像采集和圖像顯示程序。操作系統負責整個系統的管理,進程調度等,為用戶使用開發板和外部設備提供最基本的接口程序,管理著開發板上的資源。

移植Linux2.6.14 內核作為嵌入式視覺系統的操作系統。設備驅動程序包括USB 攝像頭驅動和LCD 液晶屏驅動,通過在Linux 系統中配置和加載完成。

4.1 圖像采集程序

確定USB 攝像頭被正常驅動后,下一步就是使用Video4Linux 提供的API 函數集來編寫圖像采集程序。

具體圖像數據的捕獲過程為:打開攝像頭設備文件、查詢和確認設備性能、設置圖像的寬和高、設置色深、建立內存映射、讀取圖像數據、關閉設備。在上述過程中主要考慮如何讀取圖像數據,V4L 在內核include/linux/videodev.h 文件中定義了一些重要的數據結構,進行圖像采集時,通過對這些數據結構的操作來獲得圖像數據。首先需要將顯示設備的地址映射到系統地址上來,調用函數mmap()。該函數返回地址就是存放圖像數據的地址, 每一幀圖像都偏移固定的長度, 而攝像頭取得圖像會包含若干幀,這樣通過周而復始的進行就可以將圖像數據采集下來。具體過程和涉及到的函數如下:

打開設備文件: int device = open (/dev/v4l/video0,O_RDWR);

內存映射:char* memoryMap = (char*)mmap (0,memoryBuffer.size, PROT_READ PROT_WRITE,MAP_SHARED, device, 0);

圖像數據: memoryMap + memory Buffer.offsets[bufferIndex]

4.2 圖像顯示程序

本系統采用直接將數據寫入FrameBuffer 中來顯示圖像。FrameBuffer 設備是運行在Linux 控制臺上的一個優秀的圖形接口,幾乎支持所有硬件,提供了統一的API 接口,很好地實現了硬件無關性。FrameBuffer的設備節點是/dev/fb* , 在編譯內核時選中FrameBuffer.LCD 顯示程序流程圖如圖4 所示:

圖4 圖像顯示程序流程圖

圖4 圖像顯示程序流程圖

應用程序編寫完之后,用交叉編譯環境對這個文件進行編譯,沒有錯誤后可生成cam 可執行文件。然后把cam 拷貝到根目錄下的bin 文件夾,在主機windows 系統超級終端下輸入命令:

#ln -s /dev/v4l/video0 /dev/video0

# cam 640 480 16 video0

就可以在屏幕上看到采集的圖像了。設計的嵌入式視覺系統樣機如圖5 所示。

圖5 嵌入式視覺系統樣機。

圖5 嵌入式視覺系統樣機。

5 視覺系統性能測試

S3C2410 控制板的I/O 口資源有限,因此,對圖像采集的控制信號線采用普通I/O 口,而不是用中斷I/O 口與其攝像頭模塊相連,因此只能用軟件實時檢測I/O 的電平狀態,決定何時采集開始,何時讀數據,何時結束。為了采集到圖像數據并能分辨出來,必須能夠跟蹤控制信號的變化狀態。

由于I/O 口的電平的變化頻率遠低于攝像頭控制信號的變化頻率,如果不對攝像頭模塊進行降頻處理,這將導致I/O 口無法跟蹤控制信號變化,即將無法判斷幀、行、點何時開始與結束等狀態信息。當攝像頭的最高頻率(點象素頻率最高)降到1MHZ 左右,系統就能跟蹤并完整的采集到圖像信息,進一步處理之后完好的顯示出來。圖6 是示波器對幀、行、點信號及Y0 信號的波形圖。

圖6 信號波形圖。

圖6 信號波形圖。

從上圖可以看出,系統的控制信號非常完整和穩定,沒有出現毛刺、變形等情況,給檢測讀取帶來了好處。Y0 的波形圖有些段是低電平,出現的位置不一樣,是因為攝像頭移動時,環境光發生了變化,引起整個Y 數據變化。

表1 采集到的實驗數據(示波器采用x10 檔)。

表1 采集到的實驗數據(示波器采用x10 檔)。

把示波器調整到x10 檔,在不同情況下,多次采集YSYN 信號、HREF 信號、PCLK 信號的峰-峰值、平均值、周期、頻率等數據,從Y0~Y7 中選擇Y0信號進行觀察。從數據中可以看出各信號的峰-峰值變化幅度不大,尤其是信號的頻率比較穩定。Y0 數據信號很規整,那么其他數據信號如Y1~Y7 也是如此。

多次實驗數據如下表1 所示。

測試硬件性能穩定之后,在Linux 系統下把圖像采集、圖像顯示和保存圖像命令寫成一個腳本,放在文件系統etc/init.d 目錄下。重新把文件系統下載到開發板里,當開機啟動后,系統會自動執行圖像采集、顯示和保存。

6 結論

本文主要基于S3C2410 開發板和Linux 操作系統設計了嵌入式視覺系統。該視覺系統不僅可以較好地實現圖像采集和顯示,還可實現圖像存儲、網絡獲取圖像等功能,并且可以在該基礎上研究圖像處理等算法。與基于PC 組合的視覺系統相比,結構簡單,體積和重量減小,功耗低,可移植性強、功能擴展方便,成本顯著降低,所以對這種嵌入式視覺系統研究具有相當重要的實用價值。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 99精品视频在线观看 | 精品亚洲一区二区三区 | 国产成 人 综合 亚洲绿色 | 老年人一级毛片 | 黄色片在线视频 | 99riav国产在线观看 | 五月开心六月伊人色婷婷 | 日本工里番h本无遮拦全彩 日本高清中文字幕在线观穿线视频 | 亚洲国产aaa毛片无费看 | 人人看人人做人人爱精品 | 亚洲成人日韩 | 日日摸夜夜爽夜夜爽出水 | 中国免费毛片 | 免费看特黄特黄欧美大片 | www.亚洲一区 | 视频二区肥岳精品推荐 | 日韩麻豆国产精品欧美 | 久色视频在线 | 中文字幕日韩专区精品系列 | 制服丝袜中文字幕在线 | 337p日本大胆欧洲色噜噜高清 | 日韩在线伦理片免费观看 | www永久免费视频 | 日韩视频免费在线 | a网站在线观看 | 国产人成精品免费视频 | 好黄好猛好爽好痛的视频 | 波多野结衣一区二区在线 | 亚洲欧美v国产一区二区 | 99热在线免费播放 | 最近中文字幕免费国语 | 日韩一区二区三区在线视频 | 最近日本韩国高清免费观看 | 久热这里只精品热在线观看 | 一本三道a无线码一区v小说 | 涩涩成人免费视频 | 日韩欧美一区二区三区在线观看 | 19国产精品麻豆免费观看 | 大香伊人中文字幕精品 | 亚洲日本中文字幕一本 | 欧美精品第1页www劲爆 |