機器人視覺演算法
⑴ 機器人視覺系統中圖像分割技術傳統方法概論1
姓名:寇世文
學號:21011110234
【嵌牛導讀】:隨著人工智慧技術的不斷發展,智能機器人領域也得到了空前的發展。尤其是深度神經網路廣泛應用於視覺系統中後,取得了許多很明顯的成效。對於自主移動機器人來說,視覺系統有著十分重要的作用,而圖像分割技術更是在這個系統中擔任著十分重要的角色。傳統的圖像分割技術基本上已經能夠將圖像的前景和後景分隔開來,但是近年來隨著深度學習演算法的發展,人們開始將其應用到圖像分割中,提出了很多分割網路,也達到了很好的分割效果。在實現圖像分割的基礎上,人們還使得分割具有了語義類別和標簽,就是現在的語義分割。本文在介紹了語義分割的基礎上又引出了新的任務分割場景,實例分割和全景分割。並且介紹了最近研究的熱點三維點雲的語義分割問題,闡述了其實現的必要性。
【嵌牛鼻子】智能機器人,圖像分割、語義分割、計算機視覺
【嵌牛提問】圖像分割技術的傳統常見方法
【嵌牛正文】
一、引言
計算機視覺,即computer vision,就是通過計算機來模擬人的視覺工作原理,來獲取和完成一系列圖像信息處理的機器。計算機視覺屬於機器學習在視覺領域的應用,是一個多學科交叉的研究領域,其涉及數學、物理、生物、計算機工程等多個學科。
計算機視覺的主要應用有無人駕駛、人臉識別、無人安防、車輛車牌識別、智能傳圖、3D重構、VR/AR、智能拍照、醫學圖像處理、無人機、工業檢測等。人駕駛又稱自動駕駛,是目前人工智慧領域一個比較重要的研究方向,讓汽車可以進行自主駕駛,或者輔助駕駛員駕駛,提升駕駛操作的安全性。人臉識別技術目前已經研究得相對比較成熟,並在很多地方得到了應用,且人臉識別准確率目前已經高於人眼的識別准確率。安防一直是我國比較重視的問題,也是人們特別重視的問題,在很多重要地點都安排有巡警巡查,在居民小區以及公司一般也都有保安巡查來確保安全。車輛車牌識別目前已經是一種非誠成熟的技術了,高速路上的違章檢測,車流分析,安全帶識別,智能紅綠燈,還有停車場的車輛身份識別等都用到了車輛車牌識別。3D重構之前在工業領域應用比較多,可以用於對三維物體進行建模,方便測量出物體的各種參數,或者對物體進行簡單復制。計算機視覺還有很多應用,隨著技術的發展,應用領域也會越來越多。在工業領域的應用,在機器人技術方面的應用等。
對於傳統的圖像分割過程,通常可以分為5個步驟,即特徵感知、圖像預處理、特徵提取、特徵篩選和推理預測與識別。通過研究發現,在視覺的早期的發展過程中,人們對於圖像中的特徵並沒有表現出足夠的關注。且傳統的分割過程是把特徵提取和分類分開來做的,等到需要輸出結果的時候再結合到一起,可想而知其實現的困難程度。
在深度學習演算法出來之後,卷積神經網路被廣泛應用於計算機視覺技術中,也因此衍生出了很多的研究方向。深度學習主要是以特徵為基礎來進行比對,如在人臉識別方面,使用卷積神經網路分別對兩張人臉進行不同位置的特徵提取,然後再進行相互比對,最後得到比對結果。目前的計算機視覺的主要研究方向有圖像分類、目標檢測、圖像分割、目標跟蹤、圖像濾波與降噪、圖像增強、風格化、三維重建、圖像檢索、GAN等。本文主要是針對圖像分割這一領域,進行簡要的概述。
圖像分割技術是計算機視覺領域的個重要的研究方向,是圖像語義理解的重要一環。圖像分割是指將圖像分成若干具有相似性質的區域的過程,從數學角度來看,圖像分割是將圖像劃分成互不相交的區域的過程。近些年來隨著深度學習技術的逐步深入,圖像分割技術有了突飛猛進的發展,該技術相關的場景物體分割、人體前背景分割、人臉人體Parsing、三維重建等技術已經在無人駕駛、增強現實、安防監控等行業都得到廣泛的應用。
二、發展現狀
近來已經有很多學者將圖像分割技術應用到移動機器人的控制中,能夠做到在機器人運動的同時定位、構建地圖並分割出不同的前景和後景,使視覺系統掃描到的圖像具有語義信息。並有學者也致力於分割得更為准確和精細,不僅能夠做到區分不同類的物體,也能夠實現對同類的不同物體的分類,甚至可以做到在此基礎上加上對背景的分割。由於我們生活的世界是三維空間,還有學者將圖像場景還原到三維中,然後使用相關方法對整個三維場景進行分割。作為計算機視覺的研究中的一個較為經典的難題,圖像分割這一領域也越來越被人們所關注。
首先是傳統的圖像分割方法。在傳統分割方面,人們使用數字圖像處理、拓撲學、數學等方面的知識來進行圖像分割。雖然現在的算力逐漸增加且深度學習不斷發展,一些傳統的分割方法所取得的效果不如深度學習,但是其分割的思想仍有很多值得我們去學習的。
第一種方法是基於閾值的圖像分割方法。這種方法的核心思想是想根據圖像的灰度特徵來給出一個或多個灰度閾值,將此閾值作為一個標准值與圖像中的每個像素逐一進行比較。很容易想到,通過這個逐一比較過程能夠得到兩類結果,一類是灰度值大於閾值的像素點集,另一類是灰度值小於閾值的像素點集,從而很自然地將圖像進行了分割。所以,不難發現,此方法的最關鍵的一步就是按照一定的准則函數來得到最佳灰度閾值,這樣才能夠得到合適的分類結果。值得一提的是,如果圖像中需要分割的目標和背景分別占據了不同的灰度值甚至是不同的等級,那使用這種方法會得到很好的效果。並且,假如對於一張圖像的處理,我們只需要設定一個閾值時,可以將其稱為單閾值分割。但是圖像中如果不止一個目標,即有多個目標需要進行提取的時候,單一閾值分割就無法做到將它們都分割開來,此時應選取多個閾值對其進行處理,這個分割的過程為多閾值分割。總的來說,閾值分割法有著其獨特的特點,其計算簡單、效率較高。但是,由於這種方法只考慮的是單個像素的灰度值及其特徵,而完全忽略了空間特徵,這也就導致了其對雜訊比較敏感且魯棒性不高。
第二種方法是基於區域的圖像分割方法。這種方法具有兩種基本形式:一種是區域生長,這種分割方法是從單個像素出發,逐漸將相似的區域進行合並,最終得到需要的區域。另一種方法是直接從圖像的全局出發,一點一點逐步切割至所需要的區域。區域生長指的是,給定一組種子像素,其分別代表了不同的生長區域,然後讓這些種子像素逐漸合並鄰域里符合條件的像素點。如果有新的像素點添加進來,同樣把它們作為種子像素來處理。
區域分裂合並的分割過程可以說是區域生長的逆過程,這種方法是從圖像的全局出發通過不斷分裂得到各個子區域,然後提取目標的過程。此外,在此過程中,還需要合並前景區域。
在區域分割方法中還有一種分水嶺演算法。受啟發於分水嶺的構成,這種分割方法將圖像看作是測地學上的拓撲地貌,這樣圖像中每一個像素點對應的海拔高度可以用該點的灰度值來表示。分水嶺的形成過程實際上可以通過模擬浸入過程來實現。具體做法是,在每個局部極小值的表面都刺穿一個小孔,然後把模型慢慢浸入水中,隨著水慢慢浸入其中,分水嶺就隨之形成了。
第三種方法是基於邊緣檢測的分割方法。邊緣檢測的思想就是試圖通過檢測不同物體的邊緣來將圖像分割開來,這種方法是人們最先想到的也是研究最多的方法之一。如果我們將圖片從空間域變換到頻率域中去,其中物體的邊緣部分就對應著高頻部分,很容易就能夠找到邊緣信息,因此也使得分割問題變得容易。邊緣檢測的方法能夠實現快而且准確的定位,但是其不能保證邊緣的連續性和封閉性,且當一幅圖像的細節信息過多時,其就會在邊緣處產生大量的細碎邊緣,在形成完整的分割區域時就會有缺陷。
第四種圖像分割方法結合了特定的工具。這里所說的特定工具是各種圖像處理工具以及演算法等,隨著圖像分割研究工作的深入,很多學者開始將一些圖像處理的工具和一些演算法應用到此工作中,並取得了不錯的結果。小波變換在數字圖像處理中發揮著很重要的作用,它能夠將時域和頻域統一起來研究信號。尤其是在圖像邊緣檢測方面,小波變換能夠檢測二元函數的局部突變能力。其次是基於遺傳演算法的圖像分割,遺傳演算法主要借鑒了生物界自然選擇和自然遺傳機制的隨機化搜索方法。其模擬了由基因序列控制的生物群體的進化過程,其擅長於全局搜索,但是局部搜多能力不足。將遺傳演算法應用到圖像處理中也是當前研究的一個熱點問題,在此選擇這種方法的主要原因是遺傳演算法具有快速的隨機搜索能力,而且其搜索能力與問題的領域沒有任何關系。
除此之外,還有基於主動輪廓模型的分割方法,這種方法具有統一的開放式的描述形式,為圖像分割技術的研究和創新提供了理想的框架。此方法也是對邊緣信息進行檢測的一種方法,主要是在給定圖像中利用曲線演化來檢測目標。
⑵ 什麼是工業機器人的視覺系統
工業機器人的視覺引導系統應用包含了以下的幾個方面:自動的堆垛和自動卸跺;傳送帶的追蹤;組件的裝配;機器人的應用及其檢測;機器人上下料;機器人的引導點膠等。
通過工業機器人視覺引導系統這幾種方面,把相機安裝在機器人的手臂上,隨時跟隨機器人的移動,相機可以通過一次拍攝定位出視野范圍內的所有的產品,通過數據傳輸,引導機器人抓取,並擺放在設定好的位置上。
機器視覺系統,在生產線上,人來做此類測量和判斷會因疲勞、個人之間的差異等產生誤差和錯誤,但是機器卻會不知疲倦地、穩定地進行下去。一般來說,機器視覺系統包括了照明系統、鏡頭、攝像系統和圖像處理系統。
對於每一個應用,我們都需要考慮系統的運行速度和圖像的處理速度、使用彩色還是黑白攝像機、檢測目標的尺寸還是檢測目標有無缺陷、視場需要多大、解析度需要多高、對比度需要多大等。從功能上來看,典型的機器視覺系統可以分為:圖像採集部分、圖像處理部分和運動控制部分。
(2)機器人視覺演算法擴展閱讀
機器視覺系統工作過程
一個完整的機器視覺系統的主要工作過程如下:
1、工件定位檢測器探測到物體已經運動至接近攝像系統的視野中心,向圖像採集部分發送觸發脈沖。
2、圖像採集部分按照事先設定的程序和延時,分別向攝像機和照明系統發出啟動脈沖。
3、攝像機停止目前的掃描,重新開始新的一幀掃描,或者攝像機在啟動脈沖來到之前處於等待狀態,啟動脈沖到來後啟動一幀掃描。
4、攝像機開始新的一幀掃描之前打開曝光機構,曝光時間可以事先設定。
5、另一個啟動脈沖打開燈光照明,燈光的開啟時間應該與攝像機的曝光時間匹配。
6、攝像機曝光後,正式開始一幀圖像的掃描和輸出。
7、圖像採集部分接收模擬視頻信號通過A/D將其數字化,或者是直接接收攝像機數字化後的數字視頻數據。
8、圖像採集部分將數字圖像存放在處理器或計算機的內存中。
9、處理器對圖像進行處理、分析、識別,獲得測量結果或邏輯控制值。
10、處理結果控制流水線的動作、進行定位、糾正運動的誤差等。
⑶ 眾為興的SCARA機器人視覺項目中,是如何做到飛拍了解的朋友介紹下唄~
我司現在用的就是眾為興的SCARA機器人,整體使用確實還挺好的。當機器人運動到拍照點區域,其內部演算法會利用高速IO信號觸發相機,進行動態無停頓拍照,同時對實際拍照位置進行高速鎖存。再利用相機回傳的位置數據和機器人高速鎖存位置,即可實現位置糾偏。如果樓主你需要購買這種設備的話,選擇他們就對了咯!
⑷ 請問,機器人視覺抓取關鍵技術有哪些,各有哪些實現方法,有何優缺點
首先,我們要了解,機器人領域的視覺(Machine Vision)跟計算機領域(Computer Vision)的視覺有一些不同:機器視覺的目的是給機器人提供操作物體的信息。所以,機器視覺的研究大概有這幾塊:
物體識別(Object Recognition):在圖像中檢測到物體類型等,這跟 CV 的研究有很大一部分交叉;
位姿估計(Pose Estimation):計算出物體在攝像機坐標系下的位置和姿態,對於機器人而言,需要抓取東西,不僅要知道這是什麼,也需要知道它具體在哪裡;
相機標定(Camera Calibration):因為上面做的只是計算了物體在相機坐標系下的坐標,我們還需要確定相機跟機器人的相對位置和姿態,這樣才可以將物體位姿轉換到機器人位姿。
當然,我這里主要是在物體抓取領域的機器視覺;SLAM 等其他領域的就先不講了。
由於視覺是機器人感知的一塊很重要內容,所以研究也非常多了,我就我了解的一些,按照由簡入繁的順序介紹吧:
0. 相機標定
這其實屬於比較成熟的領域。由於我們所有物體識別都只是計算物體在相機坐標系下的位姿,但是,機器人操作物體需要知道物體在機器人坐標系下的位姿。所以,我們先需要對相機的位姿進行標定。內參標定就不說了,參照張正友的論文,或者各種標定工具箱;外參標定的話,根據相機安裝位置,有兩種方式:
Eye to Hand:相機與機器人極坐標系固連,不隨機械臂運動而運動
Eye in Hand:相機固連在機械臂上,隨機械臂運動而運動 兩種方式的求解思路都類似,首先是眼在手外(Eye to Hand)
只需在機械臂末端固定一個棋盤格,在相機視野內運動幾個姿態。由於相機可以計算出棋盤格相對於相機坐標系的位姿 、機器人運動學正解可以計算出機器人底座到末端抓手之間的位姿變化 、而末端爪手與棋盤格的位姿相對固定不變。這樣,我們就可以得到一個坐標系環
而對於眼在手上(Eye in Hand)的情況,也類似,在地上隨便放一個棋盤格(與機器人基座固連),然後讓機械臂帶著相機走幾個位姿,然後也可以形成一個 的坐標環
平面物體檢測
這是目前工業流水線上最常見的場景。目前來看,這一領域對視覺的要求是:快速、精確、穩定。所以,一般是採用最簡單的邊緣提取+邊緣匹配/形狀匹配的方法;而且,為了提高穩定性、一般會通過主要打光源、採用反差大的背景等手段,減少系統變數。
目前,很多智能相機(如 cognex)都直接內嵌了這些功能;而且,物體一般都是放置在一個平面上,相機只需計算物體的 三自由度位姿即可。另外,這種應用場景一般都是用於處理一種特定工件,相當於只有位姿估計,而沒有物體識別。 當然,工業上追求穩定性無可厚非,但是隨著生產自動化的要求越來越高,以及服務類機器人的興起。對更復雜物體的完整位姿 估計也就成了機器視覺的研究熱點。
2. 有紋理的物體
機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬於這一類。當然,這些物體也還是可以用類似邊緣提取+模板匹配的方法。但是,實際機器人操作過程中,環境會更加復雜:光照條件不確定(光照)、物體距離相機距離不確定(尺度)、相機看物體的角度不確定(旋轉、仿射)、甚至是被其他物體遮擋(遮擋)。
幸好有一位叫做 Lowe 的大神,提出了一個叫做 SIFT (Scale-invariant feature transform)的超強局部特徵點:Lowe, David G. "Distinctive image features from scale-invariant keypoints."International journal of computer vision 60.2 (2004): 91-110.具體原理可以看上面這篇被引用 4萬+ 的論文或各種博客,簡單地說,這個方法提取的特徵點只跟物體表面的某部分紋理有關,與光照變化、尺度變化、仿射變換、整個物體無關。因此,利用 SIFT 特徵點,可以直接在相機圖像中尋找到與資料庫中相同的特徵點,這樣,就可以確定相機中的物體是什麼東西(物體識別)。
對於不會變形的物體,特徵點在物體坐標系下的位置是固定的。所以,我們在獲取若干點對之後,就可以直接求解出相機中物體與資料庫中物體之間的單應性矩陣。如果我們用深度相機(如Kinect)或者雙目視覺方法,確定出每個特徵點的 3D 位置。那麼,直接求解這個 PnP 問題,就可以計算出物體在當前相機坐標系下的位姿。
↑ 這里就放一個實驗室之前畢業師兄的成果當然,實際操作過程中還是有很多細節工作才可以讓它真正可用的,如:先利用點雲分割和歐氏距離去除背景的影響、選用特徵比較穩定的物體(有時候 SIFT 也會變化)、利用貝葉斯方法加速匹配等。而且,除了 SIFT 之外,後來又出了一大堆類似的特徵點,如 SURF、ORB 等。
3. 無紋理的物體
好了,有問題的物體容易解決,那麼生活中或者工業里還有很多物體是沒有紋理的:
我們最容易想到的就是:是否有一種特徵點,可以描述物體形狀,同時具有跟 SIFT 相似的不變性?不幸的是,據我了解,目前沒有這種特徵點。所以,之前一大類方法還是採用基於模板匹配的辦法,但是,對匹配的特徵進行了專門選擇(不只是邊緣等簡單特徵)。
這里,我介紹一個我們實驗室之前使用和重現過的演算法 LineMod:Hinterstoisser, Stefan, et al. "Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011.
簡單而言,這篇論文同時利用了彩色圖像的圖像梯度和深度圖像的表面法向作為特徵,與資料庫中的模板進行匹配。由於資料庫中的模板是從一個物體的多個視角拍攝後生成的,所以這樣匹配得到的物體位姿只能算是初步估計,並不精確。但是,只要有了這個初步估計的物體位姿,我們就可以直接採用 ICP 演算法(Iterative closest point)匹配物體模型與 3D 點雲,從而得到物體在相機坐標系下的精確位姿。
當然,這個演算法在具體實施過程中還是有很多細節的:如何建立模板、顏色梯度的表示等。另外,這種方法無法應對物體被遮擋的情況。(當然,通過降低匹配閾值,可以應對部分遮擋,但是會造成誤識別)。針對部分遮擋的情況,我們實驗室的張博士去年對 LineMod 進行了改進,但由於論文尚未發表,所以就先不過多涉及了。
4. 深度學習
由於深度學習在計算機視覺領域得到了非常好的效果,我們做機器人的自然也會嘗試把 DL 用到機器人的物體識別中。
首先,對於物體識別,這個就可以照搬 DL 的研究成果了,各種 CNN 拿過來用就好了。有沒有將深度學習融入機器人領域的嘗試?有哪些難點? - 知乎 這個回答中,我提到 2016 年的『亞馬遜抓取大賽』中,很多隊伍都採用了 DL 作為物體識別演算法。 然而, 在這個比賽中,雖然很多人採用 DL 進行物體識別,但在物體位姿估計方面都還是使用比較簡單、或者傳統的演算法。似乎並未廣泛採用 DL。 如@周博磊所說,一般是採用 semantic segmentation network 在彩色圖像上進行物體分割,之後,將分割出的部分點雲與物體 3D 模型進行 ICP 匹配。
當然,直接用神經網路做位姿估計的工作也是有的,如這篇:Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
它的方法大概是這樣:對於一個物體,取很多小塊 RGB-D 數據(只關心一個patch,用局部特徵可以應對遮擋);每小塊有一個坐標(相對於物體坐標系);然後,首先用一個自編碼器對數據進行降維;之後,用將降維後的特徵用於訓練Hough Forest。
5. 與任務/運動規劃結合
這部分也是比較有意思的研究內容,由於機器視覺的目的是給機器人操作物體提供信息,所以,並不限於相機中的物體識別與定位,往往需要跟機器人的其他模塊相結合。
我們讓機器人從冰箱中拿一瓶『雪碧』,但是這個 『雪碧』 被『美年達』擋住了。我們人類的做法是這樣的:先把 『美年達』 移開,再去取 『雪碧』 。所以,對於機器人來說,它需要先通過視覺確定雪碧在『美年達』後面,同時,還需要確定『美年達』這個東西是可以移開的,而不是冰箱門之類固定不可拿開的物體。 當然,將視覺跟機器人結合後,會引出其他很多好玩的新東西。由於不是我自己的研究方向,所以也就不再班門弄斧了。
機器人家上有關於這個很詳細的圖文講解,你可以看下,希望對你有用
⑸ 機器人視覺是什麼
機器人視覺是機器視覺領域下的一個分支。機器人視覺的輸入是圖像,輸出是機器人執行動作。機器人視覺的主要應用范圍跟機器人分類有關,對於工業機器人而言,機器人視覺賦予機械臂智能化定位的能力,相機拍照,圖像特徵提取,手眼標定轉換,像素坐標轉化為了機器人坐標,機器人控制運動。可應用於定位抓取,碼垛等多種工業場景。
移動機器人,機器人視覺
⑹ 在工業上,有些產品外觀很大或者很重,人工檢測比較困難,現在有機器視覺可以檢測,具體是怎麼使用的呢
機器視覺系統非常靈活,您可以使用它們來檢測大量不同類型,不同大小和不同形狀的對象。無論是在拾取和放置應用中檢測電路板,為機器維護應用檢測零件還是為碼垛應用檢測盒子,您都可以使用機器視覺技術。可以教機器人視覺演算法識別幾乎所有在相機視圖中顯示為清晰,清晰圖像的物體
機器視覺系統的演示幾乎只使用帶有規則且清晰定義的輪廓的小物件。大而笨拙的物體的問題在於將它們教給視覺系統可能具有挑戰性。大物體可能無法完全容納在相機視圖中,或者可能占據了太多視圖。盡管只需要檢測對象的一部分以進行有用的檢測,但是如果每次都在相機中出現對象的不同部分,則機器人視覺將無法識別它是同一對象。
可以實施解決方案來分別處理所有這些因素,例如更改照明,添加新背景,實施避免物體重疊的系統,其中某些情況可能是您所需要的。
您可以對機器人編程進行一個簡單的更改,這個技巧涉及使用對象的2D CAD模型而不是對象本身來訓練視覺演算法。無需像通常的示教方法那樣為物體拍照,只需將CAD文件載入到機器人的示教器中即可。 在檢測階段,演算法將使用此CAD模型來檢測圖像中對象的實例。
使用CAD模型教學的5個理由
1、由於CAD模型不會受到燈光變形,反射或其他因素的影響,因此它在教學過程中對燈光變化更為強大。
2、該系統只能將CAD模型的一部分與檢測圖像進行匹配,從而使其能夠找到不太適合相機視圖的大物體。
3、它可以處理正在進行表面處理的零件,這種情況可能會導致機器人視覺問題。
4、它每次都能為您提供完美的模型,因此您無需浪費時間重新培訓視覺系統。
5、快速簡便。您只需要將CAD模型導出為2D文件並將其載入到機器人的示教器中即可。
⑺ 機器視覺的簡介
機器視覺是一項綜合技術,包括圖像處理、機械工程技術、控制、電光源照明、光學成像、感測器、模擬與數字視頻技術、計算機軟硬體技術(圖像增強和分析演算法、圖像卡、 I/O卡等)。一個典型的機器視覺應用系統包括圖像捕捉、光源系統、圖像數字化模塊、數字圖像處理模塊、智能判斷決策模塊和機械控制執行模塊。
⑻ 機器視覺是一種演算法嗎
機器視覺是人工智慧正在快速發展的一個分支。簡單說來,機器視覺就是用機器代替人眼來做測量和判斷。機器視覺系統是通過機器視覺產品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特徵,進而根據判別的結果來控制現場的設備動作。
說白了,不是一種演算法,是一種技術或者說一個工具
--------眾合航迅科技有限公司 鄧振輝為您解答
⑼ 機器視覺新手應該如何學習
機器視覺新手的學習方法:
1、機器視覺涵蓋的方向非常廣泛,學習機器視覺之前應該明白自己以後想從事的方向,然後針對不同崗位對崗位職責的要求進行學習補充。
2、了解機器視覺的基本概念,因為從大范圍大環境下去了解會非常利於對其他零散知識的整合,也更容易接納。
3、確定好自己在機器視覺領域的從業方向後,可以分為硬體或軟體方向等確認學習目標。
4、知道自己學習的方向後需要了解如何使用操作。
機器視覺是人工智慧正在快速發展的一個分支。簡單說來,機器視覺
器視覺系統就是利用機器代替人眼來作各種測量和判斷。它是計算機學科的一個重要分支,它綜合了光學、機械、電子、計算機軟硬體等方面的技術,涉及到計算機、圖像處理、模式識別、人工智慧、信號處理、光機電一體化等多個領域。圖像處理和模式識別等技術的快速發展,也大大地推動了機器視覺的發展一個完整的機器視覺系統的主要工作過程如下:1、工件定位檢測器探測到物體已經運動至接近攝像系統的視野中心,向圖像採集部分發送觸發脈沖。2、圖像採集部分按照事先設定的程序和延時,分別向攝像機和照明系統發出啟動脈沖。3、攝像機停止目前的掃描,重新開始新的一幀掃描,或者攝像機在啟動脈沖來到之前處於等待狀態,啟動脈沖到來後啟動一幀掃描。4、攝像機開始新的一幀掃描之前打開曝光機構,曝光時間可以事先設定。5、另一個啟動脈沖打開燈光照明,燈光的開啟時間應該與攝像機的曝光時間匹配。6、攝像機曝光後,正式開始一幀圖像的掃描和輸出。7、圖像採集部分接收模擬視頻信號通過A/D將其數字化,或者是直接接收攝像機數字化後的數字視頻數據。8、圖像採集部分將數字圖像存放在處理器或計算機的內存中。9、處理器對圖像進行處理、分析、識別,獲得測量結果或邏輯控制值。10、處理結果控制流水線的動作、進行定位、糾正運動的誤差等。 從上述的工作流程可以看出,機器視覺是一種比較復雜的系統。因為大多數系統監控對象都是運動物體,系統與運動物體的匹配和協調動作尤為重要,所以給系統各部分的動作時間和處理速度帶來了嚴格的要求。在某些應用領域,例如機器人、飛行物體導制等,對整個系統或者系統的一部分的重量、體積和功耗都會有嚴格的要求。(良) 清楚了以上機器視覺的原理和過程之後,我建議: 1)人類和動物視覺系統的原理 2)攝像機技術與原理 3)圖像識別和處理技術 4)計算機技術5)人工智慧
⑽ 從感測器到演算法原理,機器人視覺避障原來是這樣的
避障是指移動機器人在行走過程中,通過感測器感知到在其規劃路線上存在靜態或動態障礙物時,按照 一定的演算法實時更新路徑,繞過障礙物,最後達到目標點。
避障常用哪些感測器?
不管是要進行導航規劃還是避障,感知周邊環境信息是第一步。就避障來說,移動機器人需要通過感測器 實時獲取自身周圍障礙物信息,包括尺寸、形狀和位置等信息。避障使用的感測器多種多樣,各有不同的原理和特點,目前常見的主要有視覺感測器、激光感測器、紅外感測器、超聲波感測器等。下面我簡單介紹一下這幾種感測器的基本工作原理。
超聲波
超聲波感測器的基本原理是測量超聲波的飛行時間,通過d=vt/2測量距離,其中d是距離,v是聲速,t是 飛行時間。由於超聲波在空氣中的速度與溫濕度有關,在比較精確的測量中,需把溫濕度的變化和其它因素考慮進去。
上面這個圖就是超聲波感測器信號的一個示意。通過壓電或靜電變送器產生一個頻率在幾十kHz的超聲波脈沖組成波包,系統檢測高於某閾值的反向聲波,檢測到後使用測量到的飛行時間計算距離。超聲波感測器一般作用距離較短,普通的有效探測距離都在幾米,但是會有一個幾十毫米左右的最小探測盲區。由於超聲感測器的成本低、實現方法簡單、技術成熟,是移動機器人中常用的感測器。超聲波感測器也有一些缺點,首先看下面這個圖。
因為聲音是錐形傳播的,所以我們實際測到的距離並不是 一個點,而是某個錐形角度范圍內最近物體的距離。
另外,超聲波的測量周期較長,比如3米左右的物體,聲波傳輸這么遠的距離需要約20ms的時間。再者,不同材料對聲波的反射或者吸引是不相同的,還有多個超聲感測器之間有可能會互相干擾,這都是實際應用的過程中需要考慮的。
紅外
一般的紅外測距都是採用三角測距的原理。紅外發射器按照一定角度發射紅外光束,遇到物體之後,光會反向回來,檢測到反射光之後,通過結構上的幾何三角關系,就可以計算出物體距離D。
當D的距離足夠近的時候,上圖中L值會相當大,如果超過CCD的探測范圍,這時,雖然物體很近,但是感測器反而看不到了。當物體距離D很大時,L值就會很小,測量量精度會變差。因此,常見的紅外感測器 測量距離都比較近,小於超聲波,同時遠距離測量也有最小距離的限制。另外,對於透明的或者近似黑體的物體,紅外感測器是無法檢測距離的。但相對於超聲來說,紅外感測器具有更高的帶寬。
激光
常見的激光雷達是基於飛行時間的(ToF,time of flight),通過測量激光的飛行時間來進行測距d=ct/2,類似於前面提到的超聲測距公式,其中d是距離,c是光速,t是從發射到接收的時間間隔。激光雷達包括發射器和接收器 ,發射器用激光照射目標,接收器接收反向回的光波。機械式的激光雷達包括一個帶有鏡子的機械機構,鏡子的旋轉使得光束可以覆蓋 一個平面,這樣我們就可以測量到一個平面上的距離信息。
對飛行時間的測量也有不同的方法,比如使用脈沖激光,然後類似前面講的超聲方案,直接測量佔用的時間,但因為光速遠高於聲速,需要非常高精度的時間測量元件,所以非常昂貴;另一種發射調頻後的連續激光波,通過測量接收到的反射波之間的差頻來測量時間。
圖一
圖二
比較簡單的方案是測量反射光的相移,感測器以已知的頻率發射一定幅度的調制光,並測量發射和反向信號之間的相移,如上圖一。調制信號的波長為lamda=c/f,其中c是光速,f是調制頻率,測量到發射和反射光束之間的相移差theta之後,距離可由lamda*theta/4pi計算得到,如上圖二。
激光雷達的測量距離可以達到幾十米甚至上百米,角度解析度高,通常可以達到零點幾度,測距的精度也高。但測量距離的置信度會反比於接收信號幅度的平方,因此,黑體或者遠距離的物體距離測量不會像光亮的、近距離的物體那麼好的估計。並且,對於透明材料,比如玻璃,激光雷達就無能為力了。還有,由於結構的復雜、器件成本高,激光雷達的成本也很高。
一些低端的激光雷達會採用三角測距的方案進行測距。但這時它們的量程會受到限制,一般幾米以內,並且精度相對低一些,但用於室內低速環境的SLAM或者在室外環境只用於避障的話,效果還是不錯的。
視覺
常用的計算機視覺方案也有很多種, 比如雙目視覺,基於TOF的深度相機,基於結構光的深度相機等。深度相機可以同時獲得RGB圖和深度圖,不管是基於TOF還是結構光,在室外強光環境下效果都並不太理想,因為它們都是需要主動發光的。
像基於結構光的深度相機,發射出的光會生成相對隨機但又固定的斑點圖樣,這些光斑打在物體上後,因為與攝像頭距離不同,被攝像頭捕捉到的位置也不相同,之後先計算拍到的圖的斑點與標定的標准圖案在不同位置的偏移,利用攝像頭位置、感測器大小等參數就可以計算出物體與攝像頭的距離。而我們目前的E巡機器人主要是工作在室外環境,主動光源會受到太陽光等條件的很大影響,所以雙目視覺這種被動視覺方案更適合,因此我們採用的視覺方案是基於雙目視覺的。
雙目視覺的測距本質上也是三角測距法,由於兩個攝像頭的位置不同,就像我們人的兩隻眼睛一樣,看到的物體不一樣。兩個攝像頭看到的同一個點P,在成像的時候會有不同的像素位置,此時通過三角測距就可以測出這個點的距離。與結構光方法不同的是,結構光計算的點是主動發出的、已知確定的,而雙目演算法計算的點一般是利用演算法抓取到的圖像特徵,如SIFT或SURF特徵等,這樣通過特徵計算出來的是稀疏圖。
要做良好的避障,稀疏圖還是不太夠的,我們需要獲得的是稠密的點雲圖,整個場景的深度信息。稠密匹配的演算法大致可以分為兩類,局部演算法和全局演算法。局部演算法使用像素局部的信息來計算其深度,而全局演算法採用圖像中的所有信息進行計算。一般來說,局部演算法的速度更快,但全局演算法的精度更高。
這兩類各有很多種不同方式的具體演算法實現。能過它們的輸出我們可以估算出整個場景中的深度信息,這個深度信息可以幫助我們尋找地圖場景中的可行走區域以及障礙物。整個的輸出類似於激光雷達輸出的3D點雲圖,但是相比來講得到信息會更豐富,視覺同激光相比優點是價格低很多,缺點也比較明顯,測量精度要差 一些,對計算能力的要求也高很多。當然,這個精度差是相對的,在實用的過程中是完全足夠的,並且我們目前的演算法在我們的平台NVIDIA TK1和TX1上是可以做到實時運行。
KITTI採集的圖
實際輸出的深度圖,不同的顏色代表不同的距離
在實際應用的過程中,我們從攝像頭讀取到的是連續的視頻幀流,我們還可以通過這些幀來估計場景中 目標物體的運動,給它們建立運動模型,估計和預測它們的運動方向、運動速度,這對我們實際行走、避障規劃是很有用的。
以上幾種是最常見的幾種感測器 ,各有其優點和缺點,在真正實際應用的過程中,一般是綜合配置使用多種不同的感測器 ,以最大化保證在各種不同的應用和環境條件下,機器人都能正確感知到障礙物信息。我們公司的E巡機器人的避障方案就是以雙目視覺為主,再輔助以多種其他感測器,保證機器人周邊360度空間立體范圍內的障礙物都能被有效偵測到,保證機器人行走的安全性。
避障常用演算法原理
在講避障演算法之前,我們假定機器人已經有了一個導航規劃演算法對自己的運動進行規劃,並按照規劃的路徑行走。避障演算法的任務就是在機器人執行正常行走任務的時候,由於感測器的輸入感知到了障礙物的存在,實時地更新目標軌跡,繞過障礙物。
Bug演算法知乎用戶無方表示
Bug演算法應該是最簡單的一種避障演算法了,它的基本思想是在發現障礙後,圍著檢測到的障礙物輪廓行走,從而繞開它。Bug演算法目前有很多變種, 比如Bug1演算法,機器人首先完全地圍繞物體,然後從距目標最短距離的點離開。Bug1演算法的效率很低,但可以保證機器人達到目標。
Bug1演算法示例
改進後的Bug2演算法中,機器人開始時會跟蹤物體的輪廓,但不會完全圍繞物體一圈,當機器人可以直接移動至目標時,就可以直接從障礙分離,這樣可以達到比較短的機器人行走總路徑。
Bug2演算法示例
除此之外,Bug演算法還有很多其他的變種, 比如正切Bug演算法等等。在許多簡單的場景中,Bug演算法是實現起來比較容易和方便的,但是它們並沒有考慮到機器人的動力學等限制,因此在更復雜的實際環境中就不是那麼可靠好用了。
勢場法(PFM)
實際上,勢場法不僅僅可以用來避障,還可以用來進行路徑的規劃。勢場法把機器人處理在勢場下的 一個點,隨著勢場而移動,目標表現為低谷值,即對機器人的吸引力,而障礙物扮演的勢場中的一個高峰,即斥力,所有這些力迭加於機器人身上,平滑地引導機器人走向目標,同時避免碰撞已知的障礙物。當機器人移動過程中檢測新的障礙物,則需要更新勢場並重新規劃。
上面這個圖是勢場比較典型的示例圖,最上的圖a左上角是出發點,右下角是目標點,中間三個方塊是障礙物。中間的圖b就是等勢點陣圖,圖中的每條連續的線就代表了一個等勢位的一條線,然後虛線表示的在整個勢場裡面所規劃出來的一條路徑,我們的機器人是沿著勢場所指向的那個方向一直行走,可以看見它會繞過這個比較高的障礙物。
最下面的圖,即我們整個目標的吸引力還有我們所有障礙物產生的斥力最終形成的一個勢場效果圖,可以看到機器人從左上角的出發點出發,一路沿著勢場下降的方向達到最終的目標點,而每個障礙物勢場表現出在很高的平台,所以,它規劃出來的路徑是不會從這個障礙物上面走的。
一種擴展的方法在基本的勢場上附加了了另外兩個勢場:轉運勢場和任務勢場。它們額外考慮了由於機器人本身運動方向、運動速度等狀態和障礙物之間的相互影響。
轉動勢場考慮了障礙與機器人的相對方位,當機器人朝著障礙物行走時,增加斥力, 而當平行於物體行走時,因為很明顯並不會撞到障礙物,則減小斥力。任務勢場則排除了那些根據當前機器人速度不會對近期勢能造成影響的障礙,因此允許規劃出 一條更為平滑的軌跡。
另外還有諧波勢場法等其他改進方法。勢場法在理論上有諸多局限性, 比如局部最小點問題,或者震盪性的問題,但實際應用過程中效果還是不錯的,實現起來也比較容易。
向量場直方圖(VFH)
它執行過程中針對移動機器人當前周邊環境創建了一個基於極坐標表示的局部地圖,這個局部使用柵格圖的表示方法,會被最近的一些感測器數據所更新。VFH演算法產生的極坐標直方圖如圖所示:
圖中x軸是以機器人為中心感知到的障礙物的角度,y軸表示在該方向存在障礙物的概率大小p。實際應用的過程中會根據這個直方圖首先辨識出允許機器人通過的足夠大的所有空隙,然後對所有這些空隙計算其代價函數,最終選擇具有最低代價函數的通路通過。
代價函數受三個因素影響:目標方向、機器人當前方向、之前選擇的方向,最終生成的代價是這三個因素的加權值,通過調節不同的權重可以調整機器人的選擇偏好。VFH演算法也有其他的擴展和改進,比如在VFH+演算法中,就考慮了機器人運動學的限制。由於實際底層運動結構的不同,機器的實際運動能力是受限的,比如汽車結構,就不能隨心所欲地原地轉向等。VFH+演算法會考慮障礙物對機器人實際運動能力下軌跡的阻擋效應,屏蔽掉那些雖然沒有被障礙物占據但由於其阻擋實際無法達到的運動軌跡。我們的E巡機器人採用的是兩輪差動驅動的運動形式,運動非常靈活,實際應用較少受到這些因素的影響。
具體可以看 一下這個圖示:
類似這樣傳統的避障方法還有很多,除此之外,還有許多其他的智能避障技術,比如神經網路、模糊邏輯等。
神經網路方法對機器人從初始位置到目標位置的整個行走路徑進行訓練建模,應用的時候,神經網路的輸 入為之前機器人的位姿和速度以及感測器的輸 入,輸出期望的下一目標或運動方向。
模糊邏輯方法核心是模糊控制器,需要將專家的知識或操作人員的經驗寫成多條模糊邏輯語句,以此控制機器人的避障過程。比如這樣的模糊邏輯:第一條,若右前方較遠處檢測到障礙物,則稍向左轉;第 二條,若右前方較近處檢測到障礙物,則減速並向左轉更多角度等等。