引言
隨著計算機科學和自動控制技術的發展,視覺系統被廣泛用于工業檢測、生物醫學、軍事偵察等領域。嵌入式視覺系統,是將圖像的采集、處理與通信功能集成于單一相機內,從而提供了具有多功能、模塊化、高可靠性、易于實現的機器視覺解決方案。同時,視覺傳感器需要通過網絡化設計完成控制信息、圖像數據的通信任務,網絡通信裝置是視覺傳感器的重要組成部分。采用DSP和CPLD作為核心芯片來控制圖像采集處理和傳輸,采集的圖像經DSP的處理后,可經以太網傳輸至微機進一步處理,或與其他視覺系統、自動化檢測裝置通信,組成分布式監測網絡。本系統的設計優點為:
·使用CMOS為圖像傳感器直接采集數字圖像,采用高速DSP和CPLD作為核心芯片來控制圖像采集和處理,簡化了電路的復雜度,提高了系統的集成度,降低了成本。 在DSP內對采集到的圖像實現快速圖像的預處理,提高了系統的智能化。
·通過以太網將圖像數據傳輸到聯網計算機,利于圖像的傳輸、保存和與其他視覺傳感器通信交換數據,組成視覺網絡。并可與PLC、機器人和其他自動化裝置通信。
系統設計
圖1為系統框圖,系統通過DSP給CPLD發出一個采集命令,由CPLD控制CMOS圖像傳感器向FIFO寫入圖像數據,同時DSP通過DMA將圖像轉移至SDRAM中并進行圖像處理,在處理結束后,將處理的結果通過以太網傳給微機或其他設備,對其I/O接口經擴展后,可與PLC等執行裝置相連,被外部執行器觸發,完成圖像的采集處理,達到控制檢測目的。
圖1 系統框圖
圖像采集過程
圖像采集過程主要通過DSP給CPLD(ALTERA的MAX II系列 EPM240)發送命令字,包括單幀采集、連續采集等控制命令。每次采集的圖像時都先復位FIFO,防止上一次采集過程出錯有數據滯留而導致本次采集的圖像出錯。CPLD采集程序的仿真波形如圖2所示,可以看出當采集單幀數據時,CPLD通過控制連續兩個VSYNC(幀同步信號)間的FIFO( CYPRESS的CYCY7C4291V)的/WE(寫使能信號)低有效來達到圖像采集的目的。OV7640每幀圖像的時間為33ms(30f/s),工作在黑白模式下,每幅圖像數據有300K(640×480),即9.3MByte/s,而DSP讀取的速度可以到66.7Mbyte/s,若采用16Bit總線寬度的FIFO,則可達到133Mbyte/s。本系統中由CPLD對圖像的行進行計數,為保證圖像數據不溢出FIFO(FIFO為128K字節),選取每80行圖像數據觸發一次DMA傳輸(DMA選擇為外觸發模式),每幅圖像分成6次傳輸(共480行數據)。
圖2 CPLD采集程序的仿真波形
圖3 帶有命令選項的圖像接受軟件
以太網的圖像傳輸
本系統的以太網設計,采用Wiznet公司全功能硬件協議棧芯片W5100。W5100內有16K的發送/接收緩存,支持TCP、UDP、ICMP、IPV4 ARP、IGMP等協議,本系統中采用TCP/IP協議,接收上位機的命令并執行相應的圖像采集和處理任務。Wiznet公司提供了完整的Socket API函數,其工作方式類似于Windows的Socket API,程序在TI公司的CCS集成開發環境下,非常方便用C語言編寫。圖3是利用VC編寫的基于異步Socket的系統軟件。在不同的命令代碼下上傳圖像。如果所示輸入命令1,可以上傳單幅不加任何圖像處理的灰度圖。
軟件流程
系統的軟件流程如圖4所示。系統初始化后配置網絡設置,建立命令Socket,Socket連接成功后處在TCP連接狀態中。當接收到命令時,通過中斷觸發使DSP從W5100讀取命令字,根據命令字做出相應的操作,添加圖像預處理程序。然后關閉命令Socket,啟動數據Socket進行數據傳輸,發送處理后的圖像數據以便上位機進行更高級的圖像處理,最終得到用戶想要的結果和數據。
圖4 軟件流程圖
圖像采集和處理程序示例
本系統可以應用于視覺系統的多個領域,通過開發標準的軟件處理模塊,如幾何邊緣提取、Blob、灰度直方圖、OCV/OCR、簡單的定位和搜索等,由用戶根據實際的測量需求選擇相應的處理模塊,由上位機編譯成相應的固件并下載到系統中,從而實現特定功能的視覺檢測。目前系統開發,只能完成特定的幾種功能,以下以圓盤的直徑檢測為例,介紹系統的處理效果。
算法的基本思想是:先對采集的圖像進行濾波,再用邊緣檢測算法檢測出圓的邊緣,最后再利用圓檢測算法算出圓的外徑和孔徑。
檢測基本過程如下:
標定
在能夠進行檢測之前,系統必須要標定。標定決定圖像與物理世界之間的映射關系。因此,把圖像中的每個點與一定的物理世界坐標以及反過來建立一一映射。使用一個無畸變的理想二維標定平面來進行標定。首先,可以使用一個標準的網格變換把物理坐標變換到目標平面;然后使用非線性映射把這些中間坐標變換到圖像平面。用于變換運算的參數可以通過對一個包含已知位置信息的已知特征標定物成像來獲取。非線性變換是通過在確定的測量點之間進行線性插補來實現。
圖像預處理
圖5為采集到的原始圖象。由于CMOS傳感器本身的噪聲或系統的擾動等其它原因,原始圖像中會含有噪聲,所以要先對原始圖像做低通濾波處理,可采用3×3模板的低通濾波器,或選擇一些其它的更為復雜的濾波器,如自適應濾波器。
邊緣檢測
采用牛頓插值法對圖像實現高精度的邊緣檢測,具體計算步驟如下:
·搜索像邊緣過渡區計算向量
根據像邊緣的位置沿著灰度值對應的行或列從亮區向暗區搜索,若相鄰的兩個點的灰度值下降幅度大于閾值(閾值應由實驗確定),即認為該點為像邊緣過渡區的起始節點,過渡區包含有3~4個節點,把其定義為一維數組,以像邊緣過渡區起始節點為首項,沿灰度值矩陣的行或列順序存放由亮到暗像邊緣的灰度值。
·使用牛頓插值函數實現像邊緣光強函數軟件解調設向量u[m]={u1,u2,。..。..un},m=0,1,。..。...n。
在基點m=0處向前5階差分為:
D1u0=u1-u0
D2u0=u2-u1+u0
D3u0=u3-3u2+u1-u0 (1)
D4u0=u4-4u3+6u2-4u1+u0
D5u0=u5-5u4+10u3-10u2+5u1-u0
設t為[0.5]內的連續變量,則五階牛頓向前插值函數為:
v(t)=u0+tD1u0+(t-1)D2u0/2+t(t-1)(t-2)D3u0/6+t(t-1)(t-2)(t-3)D4u0/24+t(t-1)(t-2)(t-3)(t-4)D5u0/120 (2)
·確定像邊緣特征點的坐標
式(2)給出了表征象邊緣位置的連續函數,對其求二階導數,即,
d2u/dt2=D2u0+(t-1)D3u0+(12t2-36t+22)D4u0/24+(20t3-120t2+210t-100)D5u0/120 (3)
其零交叉點(d2u/dt2=0)即為特征點。圖6為邊緣檢測的效果圖。
直徑的計算
通過圓檢測算法,計算出圓的外徑和內徑。限于篇幅,具體算法在此不作詳細介紹。
在實驗中,使用的f=35mm的鏡頭,采用LED環形光源從底部同軸照明,圖像分辨率為640×480,相面尺寸為3.6mm×2.7mm。系統標定在XY方向上每像素為0.0375mm。對標稱外徑為15mm,內徑為9mm的元件做了10次檢測,檢測直徑的平均外徑值為401.6像素即15.06mm,內徑為241.3像素即9.049mm。
實驗結果
圖7為我們設計的視覺傳感器樣機的系統實物圖。其由三部分組成,分別為主板、電源板和CMOS電路板。采用抓包程序Ethereal對數據傳輸速度進行了測試。我們分別對發送數據量為100kbyte,200kbyte和300kbyte進行了測試,實驗結果如表1所示,對于本系統可以達到10f/s的圖像傳輸速度。
圖7 系統實物圖
表1 傳輸數據速度實驗結果
結語
本文介紹的的視覺系統,在硬件系統,采用CMOS圖像傳感器,CPLD時序控制,以及高速DSP和以太網高速數據傳輸,構成了一個典型嵌入式視覺系統。通過以太網接口可組成分布式視覺檢測網絡。對于簡單的視覺檢測任務,系統可滿足在線檢測的要求。當然,要想最終脫離微機高速的完成復雜的圖像處理任務,單DSP還不能滿足要求。今后改進是添加FPGA實現FPGA與DSP融合的處理系統以及多DSP并行處理系統,實現高速嵌入式視覺系統。
責任編輯:gt
-
dsp
+關注
關注
552文章
7962瀏覽量
348294 -
cpld
+關注
關注
32文章
1247瀏覽量
169225 -
嵌入式
+關注
關注
5069文章
19023瀏覽量
303462
發布評論請先 登錄
相關推薦
評論