陳亞梅
摘要:本文是利用USB2.0芯片CY7C68013和圖像傳感器OV9650實現圖像采集的硬件電路,在Windows 2000下編寫驅動程序實現數字圖像的采集,然后在VC++6.0開發環境下利用Intel的機器視覺庫實現數字圖像的處理與檢測。
關鍵詞:USB2.0、OV9650、數字圖像處理
為了實現工業檢測自動化,減輕由人工檢測元器件的勞動強度,可以將數字圖像處理系統應用于大批量生產過程中的檢測與辨識,如:零件裝配完整性,裝配尺寸精度,零件加工精度,位置/角度測量等。其應用如:對汽車儀表盤加工精度的檢查,膠囊生產中對膠囊壁厚和外觀缺陷的檢查,食品包裝上面對生產日期的辨識,等等。
鑒于工程需要,要對一些元器件的外徑進行測量,精度和速度要求不是很高,傳統的基于PC的機器視覺系統用視頻采集卡對視頻信號進行采集,但是由于這種方案板卡成本太高,鑒于經濟方面和開發周期的考慮,本文采用USB2.0接口的芯片CY7C68013與PC機實現了高分辨率、快速、全數字圖像的實時采集系統,然后利用實時采集到的圖像對元器件的外徑進行測量。
一、數字圖像的實時采集原理
數字圖像的實時采集原理如圖1所示。在采集速度滿足的前提下,選取圖像分辨率相對較高的圖像芯片,根據項目和研究需要,在此選擇了Omnivision technologies公司的OV9650芯片作為圖像采集芯片,CMOS 彩色圖像傳感器OV9650將CMOS光感應核與外圍支持電路集成在一起,具有可編程控制與視頻模/數混合輸出等功能,能夠消除噪聲、燈光閃爍等光電干 擾,輸出清晰、穩定的彩色圖像。OV9650的功能特點包括:單芯片1/4寸鏡頭,最大1280×1024像素分辨;標準SCCB接口;開窗功能,局部圖像輸出;輸出RGB/RawRGB/YCbCr視頻信號;自動曝光控制/自動白平衡/自動增益控制/自動亮度控制;圖像質量控制,包括顏色飽和 度、銳度、伽馬校正等。
為了取得好的圖像,鏡頭和光源系統是至關重要的,鑒于項目的需要,選用Computar工業自動化(FA)鏡頭0814-MP,焦距:8mm;工作距離:100mm-300mm;低變形率(低于1.0%),光源在日常光照下即可。
數字圖像實時采集與傳輸模塊,采用了Cypress公司的CY7C68013的USB2.0接口芯片,該芯片的主要特點是在一塊芯片上集成了USB2.0內核和引擎、一個增強型的51系列微處理器,及可編程外圍接口芯片,提供了高效率的時序解決方案,在這種有獨創性的結構下,仍然使用低價位的51系列的微處理器,其數據傳輸速度可以達到56MB/s,可以提供USB2.0的最大帶寬。因此,本系統的CPU控制和USB2.0接口芯片選擇了上述芯片。圖像傳感器芯片(OV9650)工作在24MHZ頻率下,在 CY7C68013內部程序控制下,通過CY7C68013的FIFO緩沖區以及USB電纜線傳送到PC機上。
二、圖像采集系統的實現
(一)硬件系統實現原理
硬件系統的連接原理,圖像采集處理芯片用 OV9650,時鐘頻率為24MHz,像素時鐘為24MHz;CPU控制和USB2.0接口芯片用CY7C68013,時鐘頻率為24MHz, 通過對CY7C68013內部的CPUCS寄存器進行修改,使其工作在24MHz方式下。將OV9650的像素時鐘PCLK接到CY7C68013的IFCLK上; OV9650的HREF、VSYNC分別接到CY7C68013的RDY0、RDY1上;將OV9650的VSYNC分別接到CY7C68013的INT0上。將CY7C68013的PA1、PA2接在OV9650的SCCB的接口上。因為OV9650芯片的控制接口采用SCCB協議,與I2C相似,但卻有些小的差別,所以用PA1和PA2兩個IO口來模擬SCCB BUS時序,完成對圖像芯片的初始化、顯示窗口大小、數據格式、顯示幀數等工作。
(二)固件程序設計
從程序到USB2.0芯片初始化到初始化圖像傳感器OV9650到開啟中斷判定有無中斷,如中斷及轉入中斷處理程序如無中斷再重新判定。
固件程序:
(1) USB2.0芯片的初始化程序,通過對CPUCS 寄存器進行設定,工作在頻率24MHz下,對USBCS寄存器設定,使其USB內核工作在 USB2.0方式下,同時通過對IFCONFIG寄存器設定,使其工作在通用編程接口方式下,控制端點0用來傳輸用戶命令,圖像傳感器的初始化程序,通過對圖像芯片進行初始化、顯示窗口大小、數據格式、顯示幀數等參數。
(2) 通用編程接口程序,利用GPIF Designer工具軟件設計,然后導出GPIF接口程序。
(3) USB2.0批量傳輸程序設計,本段程序主要完成USB2.0的批量傳輸功能,利用批量傳輸和中斷方法完成大批量圖像數據的實時傳輸。
(三)系統軟件的設計
1.USB2.0驅動與接口程序
利用通用驅動程序源碼,在此基礎上進行修改然后在Win2000的DDK下重新編譯,再利用VC++6.0對驅動程序的操作函數進行封裝,這樣應用程序的可以像調用其他的函數一樣去調用函數來完成USB接口的初始化、讀取整幀圖像、CMOS寄存器設置等等。
系統程序主要有以下幾個模塊組成:
(1) USB2.0初始化模塊
首先將圖像采集的硬件設備通過USB電纜連接到PC上,然后利用寫好的函數探測USB2.0設備,進而初始化各種變量,分配內存。
(2) 圖像傳感器器設置模塊
通過USB2.0設備的端點0對圖像芯片的窗口大小、數據格式、顯示幀數等進行初始化。
(3) 數字圖像采集模塊
利用USB的批量傳輸技術和終端技術實現圖像數據的實時采集,然后可以將采集到的圖像進行處理和顯示。
(4) 數字圖像顯示模塊
利用VC6.0技術實現圖像實時顯示。
(5) 圖像檢測處理模塊
通過網絡下載開放源代碼的機器視覺庫OpenCV,利用其中的圖像處理函數實現元器件的外徑測量,詳細描述參考圖像處理與檢測部分。
(6) 數據存儲模塊
通過運用各種算法對圖象數據進行處理運算, 計算出待檢測元器件的外徑參數, 最后與預置的標準尺寸相比較判斷其是否合格,然后將檢測結果計算機存儲到數據庫系統,并自動統計生成報表。
三、圖像處理與檢測
開放源代碼的計算機視覺類庫,主要包括以下部分
(1) CXCORE 定義基本的數據結構和操作函數;
(2) CV包含了幾乎所有涉及到的圖像處理函數;
(3) HighGUI包括圖像顯示、保存部分。
四、結論
通過系統調試實驗,利用USB2.0圖像采集系統可以實時地獲取圖像數據,采集速率為1~12幀/秒,基本可以滿足實時檢測需要,然后利用Intel的開放源代碼的機器視覺庫,可以對采集到的圖像進行實時地處理,然后將處理結果存入檢測數據庫。
此系統還需進一步改進,如圖像處理方面的進一步應用、提高對高速運動物體的檢測性能等等。
參考文獻
[1]《圖像處理、分析與機器視覺》興軍亮譯 清華大學出版社 2016年06月
[2]《計算機視覺特征提取與圖像處理》艾海舟譯 電子工業出版社 2014年11月
[3]《USB 2.0設備的設計與開發》 邊海龍,賈少華 人民郵電出版社2011年10月endprint