為什麼視覺搞了這麼多年,標定還是各種問題,3D還是各種不靠譜?
標定還是各種問題
不知道題主遭遇的是什麼問題?相機標定已經是一個研究比較充分的領域,目前最常用的張氏標定法已經發明的二十年了,各種新相機模型新方法也很多。各種類型相機的標定工作都有比較成熟的開源工具,除了少數特殊需求外已經不需要自己造輪子了。
如果題主是對標定工具有疑問,或者尋求好用的標定軟體,個人所做的研究與三維視覺有點關係,可以簡單推薦一下。如果是最普通的單目相機內參標定,使用OpenCV或者ROS自帶的內參標定工具足矣(Caltech Matlab toolbox也可以,但是需要手工標圖案角點比較費時)。廣角大畸變、魚眼鏡頭內參標定推薦OcamCalib,雙目、多相機grid、相機-IMU、行掃描(rolling shutter)相機內外參標定推薦Kalibr。這都是學界和業界常用的工具,非特殊情況都沒問題。
3D還是各種不靠譜?
三維視覺就是一個很大的領域了,不知道題主說的不靠譜是哪裡不靠譜?如果題主單指單目SLAM的話,目前開源的ORB-SLAM和DSO屬於相對穩定的,對於AR這樣的應用非極端條件下也夠用,當然各個公司都會有自己閉源且針對優化的實現。
-----
一點update:計算機視覺整體就是非常難得一個學科,有非常多的子問題,無論是二維還是三維都有很多很有難度且未解決的問題。
對於二維視覺問題,因為圖像本身就是二維的,所以很多幾何問題不需要求解就可以直接得到;而對於圖像語義層面的問題,得益於深度學習近幾年高速發展,二維視覺大量問題近幾年進展非常快,在比如物體檢測、識別等問題上有很快的進展,少數子問題(比如人臉識別)已經有超越人類自己的趨勢。但是,機器也不能再所有子問題超越人類,到今天也不能認為完全解決了機器對二維圖像的理解問題。
三維視覺就是個更難得問題了:三維視覺問題的輸入仍然為二維圖像,所以求解三維結構本身就是個不簡單的問題,並不是已經解決了的問題。這方面基礎的方法是Structure from Motion和SLAM,是三維視覺裡面很重要的方向,尤其是機器人、自動駕駛等應用的需求比較高。SfM和SLAM問題在二十年間主要理論框架已經比較完善,學術界主要解決一些系統層面、非核心理論的問題,近幾年工業界已經應用比較廣泛,最常見的應用就是AR、VR以及機器人、自動駕駛等領域,但是也不能認為完全解決,沒有任何可以做的
就算是強行認為三維結構求解已經解決,路才走了一半:才剛剛解決了二維視覺中「並不存在」或很trivial的幾何問題,圖像語義方面的路才剛剛開始。
而對於三維視覺問題,二維視覺中一種非常非常強大的工具在三維中並不容易使用:CNN卷積神經網路。目前CNN作為計算機視覺中最常用(也許沒有之一)的深度學習工具,解決了大量之前很難解決的問題。但是,但是,CNN的二維結構決定了其在二維圖像處理領域的先天優勢,而目前將CNN試圖擴展到三維的情況或多或少都有困難,比如模型複雜度過高等等。在深度學習方面本人並不精通,就不班門弄斧了,大家有興趣可以關注一下肖健雄教授的工作,他在深度學習應用於三維視覺問題方面的研究是首屈一指的。
大家看到三維視覺其實才剛剛起步,很多方向其實大家還沒有頭緒,離完善更是很遠
現在三維重建技術基本成熟,已經可以商業化了
SfM和SLAM演算法理論上很難有很大突破了,主要是工程上的小修小補
從規模上看,從Build Rome in A Day, Build the World in 6 Day還有我師兄和我的工作基本上可以做到現在數據量能達到的地步了,再多的話,其實已經沒必要一次性做那麼大規模的了。從精度上來說,這麼大規模的數據,也不好評測精度。
SfM的進一步提升,我個人覺著還是要靠更穩定的feature和matching演算法,好的feature能夠讓SfM註冊成功的相機多好多。
對SfM進一步提升的SfM本身的研究,可能要關注一些特殊情況,比如說常見的Rolling Shutter,直接改變了相機模型,而且這個在實際的SfM和SLAM中也很常見,相機移動一快,就會出現。
在處理普通用戶傳的數據時,SfM也會遇到的一些問題,比如說degenerate的問題,用戶就喜歡拍degenerate的pattern,要額外處理下。雖然理論上,degenerate的問題早就解決了,但是並不很實用。
Stereo這裡再做新的提升,個人感覺也很難了。Stereo本質還是Matching的問題。之前和CNN結合貌似有不錯的結果。Dense SLAM這種偏實時的應該會更有應用前景。
對於3D視覺數據的識別、檢測、分割來說,有兩個問題。一個是數據獲取問題,標定3D數據十分困難。第二個是數據表示問題,現在常見的用於DNN的數據表示都是Voxel,但是消耗大量空間;用點雲表示的話,有PointNet的工作;我們有大量的Mesh數據,但是仍然沒找到特別好的利用Mesh多出來的拓撲和Visibility信息。
3d不是不靠譜,是成本太高了。標定是比較靠譜的了,只是操作有點麻煩。
能不能說說標定還存在什麼問題?是不是Matlab就差送您個機械臂,幫您把黑白格手打出來,然後舉著攝像頭幫您標出來了?
看來搞visual servoing出問題了 = =
推薦閱讀:
※halcon學習方法與應該注意的技巧?
※在 HSV 顏色空間中,為什麼色調(hue)對於表達顏色最重要?
※有沒有 2D 圖轉 3D 圖的軟體? 主要是想得到 2D 圖的深度圖,一定要有左右視角的才行嗎?
※為什麼說3Ds Max永遠不能可能精確了?
※ICML 2017上哪些論文值得關注?