新機器視覺 發表於 2020-11-27 09:46:03
1.前言無論2D相機還是3D相機,提到相機不可避免地涉及到機器視覺。 機器視覺與計算機視覺並沒有一個明顯的定義去劃分。但在實際應用中,應用於工業檢測的時候更多地被稱為機器視覺而非計算機視覺。這時候,機器視覺更多地偏向或者專指以圖像傳感器為採集軟體,輔助以光源,PLC甚至機器人等外部設備,以實現特定的檢測或定位等特定目的。如果你從事的是機器視覺行業則避免不了PCL,機器人,編碼器,光柵尺,光源,鏡頭等這些圖像之外的硬體設備打交道。
另外還有一些領域,圖像識別,物體檢測和跟蹤,自動文檔分析,面部檢測和識別,計算攝影,增強現實,3D重建以及醫學圖像處理等也會被稱為機器視覺。 這篇文章所講述的內容更多地以工業檢測領域的機器視覺的角度出發。2.2D視覺回顧在以往的機器視覺領域通常是指2D的視覺系統即通過攝像頭拍到一個平面的照片然後通過圖像分析或比對來識別物體,從而應用缺陷、瑕疵,位置、OCR,條形碼等。 以2D視覺檢測為例,一個典型的基於2D相機的機器視覺檢測系統通常如下組成:
機器視覺系統組成 其中,屬於視覺部分的部件主要有:相機,鏡頭,光源,採集卡。 在機器視覺領域,每一個部件都是一門學問,例如對光源的選擇上,常見的光源形狀有環光,條光、面光等;從顏色上劃分,則可以分為單色光源和RGB光源。從打光方式上刻有正面打光、側面打光、背面打光等方式。 不同的樣件和不同的目的決定了哪一種光源和打光方式合適,如何選擇合適的打光方案既依賴於經驗,例如對於金屬件,可能藍光最好,如果要檢測邊緣,則紅色背光效果最佳,也依賴於實際效果的對比,對於一個具體的視覺檢測項目,最佳的打光效果要靠實際進行打光的效果來進行判斷和確定。
但即便2D視覺是一門如此高深的學問,它在應用上也有很大的局限。這種局限很大一部分來源於,真實世界的物體在經過鏡頭的透視投影后,相機能夠捕捉到的只有2D的平面信息。對於一些涉及到3D信息的處理,它是無能為力的,因此3D相機和3D視覺的出現和發展便是大勢所趨。3.3D相機與2D相機的區別3D相機與2D相機的最大區別在於,3D相機可以獲取真實世界尺度下的3D信息,而2D相機只能獲取像素尺度下的2D平面圖像信息,以下面的兩幅圖為例:
上面的左圖是圖像處理人員都知道的Lena,這種圖片是2D相機獲取的一張RGB圖像。而右圖是一張由深度相機獲取的深度圖。儘管看起來黑乎乎的一片,但我們依然可以看出圖像的形狀。 可能有的小夥伴看到這裡,心中的疑惑更大了。這不還是一張2D圖嗎。的確,這還是一張2D圖像,但這種圖像上存儲的不是由光照決定的灰度信息,而是由距離決定的深度信息。 眾所周知,世界坐標系下可以由(X,Y,Z)三個軸來表示,空間中的任何一個點都可以由(x,y,x)來表示。實際上作為一個合格的3D相機,它傳輸給你的必然是X,Y,Z方向的真實信息,例如,有的3D相機會得到X,Y,Z圖。其中,Z圖便是我們所謂的深度圖,而其它兩張圖分別存儲著X,Y方向的真實信息。 如果只有一張深度圖,那麼其它兩個軸方向的信息也必然可以由某個公式給出。這便是被稱為3D相機的原因。我們以一款工業3D相機Gocator為例:
Gocatro生成的深度圖
3D相機Gocator的X,Y,Z數據的獲取 Gocator的深度圖可以直接獲取,而X,Y方向的信息與行和列按一定的公式進行生成。值得注意的是,這個公式一般由生產該3D相機的廠商決定,並不通用。我們再以民用級別的深度相機kinect為例,它的X,Y方向的信息可以按以下公式來獲取
其中,d為深度圖存儲的信息,(u,v)為像素坐標,()為相機內參,相機內存均可標定得知。在實際使用中,廠商會提供標定好的參數或者現成的API。
Kinect的API參數,用於生成X,Y,Z圖 通過3D相機得到的數據,我們可以還原出被測量物體的三維信息,進而用於後一步的處理。
4.3D相機的應用 隨著科技的發展和檢測需求的提高,3D視覺越來越在機器視覺行業佔有重要的地位,與傳統的2D相機相比,3D相機能獲取三維信息,可以實現2D視覺無法實現或者不好實現的功能,例如檢測產品的高度、平面度、體積等和三維建模等。
輪胎劃痕很紋理檢測
體積檢測
路面系統檢測
缺陷檢測
責任編輯:xj
原文標題:3D相機及其工業應用
文章出處:【微信公眾號:新機器視覺】歡迎添加關注!文章轉載請註明出處。
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴