信息摘要:
機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬于這一類。
機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬于這一類。
當然,這些物體也還是可以用類似邊緣提取+模板匹配的方法。但是,實際上下料機器人操作過程中,環境會更加復雜:光照條件不確定(光照)、物體距離相機距離不確定(尺度)、相機看物體的角度不確定(旋轉、仿射)、甚至是被其他物體遮擋(遮擋)。
Lowe提出了一個叫做SIFT(Scale-invariantfeaturetransform)的超強局部特征點:
Lowe,DavidG."Distinctiveimagefeaturesfromscale-invariantkeypoints."Internationaljournalofcomputervision60.2(2004):91-110.
具體原理可以看上面這篇被引用4萬+的論文或各種博客,簡單地說,這個方法提取的特征點只跟物體表面的某部分紋理有關,與光照變化、尺度變化、仿射變換、整個物體無關。
因此,利用SIFT特征點,可以直接在相機圖像中尋找到與數據庫中相同的特征點,這樣,就可以確定相機中的物體是什么東西(物體識別)。
對于不會變形的物體,特征點在物體坐標系下的位置是固定的。所以,我們在獲取若干點對之后,就可以直接求解出相機中物體與數據庫中物體之間的單應性矩陣。
如果我們用深度相機(如Kinect)或者雙目視覺方法,確定出每個特征點的3D位置。那么,直接求解這個PnP問題,就可以計算出物體在當前相機坐標系下的位姿。
當然,實際操作過程中還是有很多細節工作才可以讓它真正可用的,如:先利用點云分割和歐氏距離去除背景的影響、選用特征比較穩定的物體(有時候SIFT也會變化)、利用貝葉斯方法加速匹配等。
而且,除了SIFT之外,后來又出了一大堆類似的特征點,如SURF、ORB等。