平面提取论文
文章目錄
- 單張圖片輸入
- 幾何方法
- √(2015)Recognising Planes in a Single Image
- ×(2012)Detecting planes and estimating their orientation from a single image
- √(2009)Accurate 3D ground plane estimation from a single image
- √(2009)Geometric reasoning for single image structure recovery
- √(2007)Automatic single-image 3d reconstructions of indoor Manhattan world scenes
- (2001)Ground Plane Segmentation for Mobile Robot Visual Navigation
- 神經網絡
- √(2019)Single-Image Piece-wise Planar 3D Reconstruction via Associative Embedding
- √(2019)Learning to Reconstruct 3D Manhattan Wireframes from a Single Image
- √(2018)PlaneRCNN: 3D Plane Detection and Reconstruction from a Single Image
- √(2018)Recovering 3D Planes from a Single Image via Convolutional Neural Networks
- √(2018)PlaneNet: Piece-wise Planar Reconstruction from a Single RGB Image
- 多張圖片輸入
- √(2010)Multiple Plane Detection in Image Pairs using J-Linkage
- (2010)Piecewise Planar and Non-Planar Stereo for Urban Scene Reconstruction
- √(2009)Manhattan-world Stereo
- (2009)Piecewise planar stereo for image-based rendering
- 點云輸入
- (2016)Analysis of Efficiency and Accuracy of Plane Fitting Methods
- (2012)Indoor Mapping Using Planes Extracted Rome Noisy RGB-D Sensors
- (2011)The 3D Hugh Transform for Plane Detection in Point Clouds: A Review and a new Accumulator Design
- √(2011)Real-Time Plane Segmentation using RGB-D Cameras
- (2010)Plane Detection in Point Cloud Data
- √(2010)Robust Piecewise-Planar 3D Reconstruction and Completion from Large-Scale Unstructured Point Data
- (2008)Fast Plane Detection and Polygonalization in noisy 3D Range Images
- 相關領域
- SLAM
- √(2017)Keyframe-based Dense Planar SLAM
- (2014)Dense Planar SLAM
- (2013)Point-Plane SLAM for Hand Held 3D Sensors
- 矩形檢測
- (2008)Detection and matching of rectilinear structures
- (2003)Extraction, matching, and pose recovery based on dominant rectangular structures
- 場景理解
- (2014)Unfolding an indoor origami world
- 恢復場景三維結構
- (2016)Efficient 3D room shape recovery from a single panorama
- (2008)Fast Automatic Single-View 3-d Reconstruction of Urban Scenes
- 表面布局恢復
- (2007)Recovering surface layout from an image
這篇博客是我在準備寫關于平面提取綜述的時候記筆記用的,里面有我讀每一篇相關論文時記錄的一些信息,比如現實應用、優缺點、大體和詳細方法等。
所有的筆記都是我邊讀邊寫的,沒有系統的框架,只求自己看懂,然后給大家一個參考,若有哪兒理解有偏差歡迎評論區討論:)
前面帶√的表示我已經讀過了。然后讀過了沒有筆記的,是因為是以前讀的,筆記記在其他地方,有空了想補的話補上
最后,我現在本科大四,水平實在有限,有些翻譯直接搬的谷歌翻譯。
單張圖片輸入
幾何方法
√(2015)Recognising Planes in a Single Image
- 優點:無需任何場景約束,平面數量也沒有限制,準確度還行(對點的分類達到83.6%的準確度,方向誤差的中位數達到15°,檢測出的平面占圖像面積75%)。
缺點:無法提取小平面(因為先判斷圖像區域再判斷整張圖片);平面邊緣效果不好(因為來自點的德勞內三角化) - 大致方法:分為兩部分——plane recognition algorithm + graph-based detection stage
輸入:平面的某個區域(半徑50像素),而不是整張圖片
輸出:該區域是不是平面(為平面的概率),是的話給出平面法向量。
流程:1)使用DoG(其實就是SIFI)提取特征點,然后以點為圓心選取一個patch;2)每個patch提取邊緣和顏色信息,建立梯度方向直方圖和RGB直方圖;3)第一輪降維:詞袋,用K-Means分別聚類梯度方向和顏色直方圖得到“詞”,從而建立兩個“詞典”;4)第二輪降維:主題,使用Latent topic model;5)由于詞袋丟失了空間信息,使用空間直方圖(spatiograms)來還原位置信息;6)RVM + sigmoid函數判斷某個圖片區域是平面/非平面,是平面的話,使用多變量回歸RVM得到區域方向。注意,此時區域的概率和方向就是區域中每個特征點的概率和方向
輸入:一張照片的100個區域,以及它們經上一部分算法后的結果,即概率+方向。注意:圖片區域選取的方法未知,但是會有重疊
輸出:平面實例+它們的方向
流程:1)由于區域之間會有重疊,圖片中的一個點可能會屬于多個平面,因此該點會有多個處于平面的概率和方向,只保留概率最高的結果。這樣圖片中的每個點只有一個概率和方向;2)使用德勞內三角化把所有點連接成網格,再根據所有點的概率使用MRF,將平面/非平面區域劃分開;3)對所有點的方向使用均值漂移聚類獲得幾個主要方向,再根據這些主要方向使用MRF,將不同的平面實例分割開;4)其實到第三步就夠了,但是為了證實提取出來的是平面區域和為了提升方向估計效果,又將每個平面實例區域輸入上個“Plane Recognition”部分再次計算(然而實驗表明沒卵用)
備用方案:因為對于馬路之類缺少紋理的地方,使用SIFT不能很好地提取特征點。論文提出,可以使用網格來代替SIFT特征點,即每10個像素(或者5、20、40個像素)取一個點以代替DoG point,patch的大小就是20個像素(或者10、40、80個像素。然后用所有點的上下左右連起來的網格代替德勞內三角化,其他不變。
- 相關知識點
- 寬基線(wide baseline):寬基線一詞用于匹配時,泛指兩幅圖像有明顯不同的情況下的匹配。
- 紋理壓縮(Texture compression):是一種專為在三維計算機圖形渲染系統中存儲紋理而使用的圖像壓縮技術。與普通圖像壓縮算法的不同之處在于,紋理壓縮算法為紋素的隨機存取做了優化
- 相關工作(翻譯)
已知一個平面中的兩對甚至更多的平行線,他們對應的滅點可以確定唯一的平面方向【17】。因此,在圖片中提取這樣的特征就可以提取平面。一種方法是尋找窗戶、門之類的矩形結構【22】【27】,從而找到一個平面中的相互正交的平行直線,這可以恢復相機姿勢和匹配寬基線(wide baselint)。但是這種方法只有在曼哈頓世界假設的環境中,檢測到可靠的線條才有效,因此應用有限。
在形狀紋理方法中,圖片紋理的變化與表面形狀有關,可以通過紋理恢復方向或曲率。以【10】的工作為例,使用投影后肉眼可見的紋理壓縮來確定平面的傾斜(slant and tilt)。需要注意的是,這類方法通常不會解決檢測問題,而是假定圖像包含單個平面。
【1】使用了上述的幾何方法和機器學習,利用對一個場景的主要垂直結構、地平線位置的估計,再加上一個線段分類器來識別地平線。這種方法也可以給出一個城市的大致3D重建,但遠不能提供精確的平面方向估計。
機器學習方法。近來,更多的工作關注到可以學習外觀與結構之間關系的技術。最好的例子就是【35】,利用“特定的結構往往出現在特定距離”的先驗來估計總體深度。【32】更進一步,使用標注了絕對深度的圖片來訓練,然后估計整張照片的深度圖。他們可以使用小平面建立場景的簡單3D模型,并且它們的結果與ground truth比較,表現出不錯。然而,它們的結果并不能準確地表現更高一級的結構——超像素片段都被當做局部平面了,且論文并未提及小平面方向的精度。相反,它們的目標是生成場景的視覺上合理的效果圖,而且由人類評估。這與本文展示的工作相反,我們就是要找到圖片中的大型平面,并分配給他們一個準確的方向。【19】的方法與我們的最像,多種紋理、顏色特征,加上明確的滅點,將平面片段分成粗糙的幾何類別,代表“支撐表面”(水平)、“垂直表面”(左、右、正面)。這種粗糙的分類用于生成一般的場景布局,創建簡單的“pop-up”式3D模型,或作為物體識別的先驗。他們將圖片分類成多個幾何類別的方法彌合了語義理解和3D重建之間的差距。然而,由于方向是粗略量化的,這意味著重建的3D模型缺乏特殊性,無法區分出相似方向的平面。此外,他們要求的“相機與地面大致對齊”、“將滅點作為線索”,導致他們無法充分利用一般信息。跟我們的方法的主要不同點在于,他們并未像我們那樣提供準確的平面估計,而是將結果量化為少量離散的幾何類別。
×(2012)Detecting planes and estimating their orientation from a single image
此文跟15年的論文Recognising Planes in a Single Image作者一模一樣,干的事情好像也差不多(只粗略看了一下圖片),就沒有進一步看了
√(2009)Accurate 3D ground plane estimation from a single image
- 優點:提取效果不錯。估計的深度與真實值平均誤差0.幾米,且不受紋理變化影響;
缺點:只能提取水平地面,不能提取其他平面 - 大致方法:1)將圖片轉為YCbCr色彩空間,然后使用9個Laws mask filter、2個local averaging fliter、6個Nevatia-Babu texture gradient filter從紋理能量、紋理梯度、霧霾信息中提取特征向量。特征向量包含兩部分——絕對特征向量(表示一個像素的深度信息)和相對特征向量(表示兩個像素之間的深度關系);2)使用一種基于MRF的監督學習來估計深度圖,并使用主成分分析(PCA)來估計MRF的平滑參數以面丟失障礙物信息。訓練的時候則使用了最大后驗概率(MAP)實現迭代梯度下降算法。3)從圖片中提取超像素,然后轉成圖(graph);4)從底部中間的超像素開始(因為這兒最可能是地面),根據前面估計出的深度圖,利用廣度優先搜索(BFS)找出方向相似的超像素,和已有的融合。不斷重復,直到分割出水平地面;5)利用相機內參/外參可以得出水平地面的絕對深度ddd,即
d=D?h?(h1?h2)h1?(h2?h)d = \frac{D*h*(h_1 - h_2 )}{h_1*(h_2 - h)}d=h1??(h2??h)D?h?(h1??h2?)?
其中PPP是相機光學中心,hhh是相機高度,fff是相機焦距,III是成像平面,h1h_1h1?和h2h_2h2?是地面在成像平面上的投影的下/上邊界,DDD為圖片中最下面一行對應的地面與成像平面的距離(來自相機外參)
√(2009)Geometric reasoning for single image structure recovery
- 優點:特定場景下效果不錯(平面分割+深度估計的精度看著都挺好)——像素分類正確率為81%;可以推測被遮擋的地板與墻面的邊界
缺點:場景約束太強(基本就是一個復雜盒子模型),不區分平面/非平面 - 約束:
- 大致方法:1)用【16】的Matlab工具箱(Canny邊緣檢測)提取線段,然后用RANCA提取滅點(要求相機內參,沒有的話用三對線段確定滅點),進而得到曼哈頓世界假設中的三個主要方向;2)每兩條平行線(一個在地平線上,一個在下)向其兩端延長到圖片的邊界,作為天花板和墻面的交線、地板和墻面的交線,形成一面墻;然后找新的可以跟這面墻交叉出拐角的平行線,與上圖左右比較,確定拐角類型,從而生成一個平面假設;不斷重復,找出所有的假設,見下圖左;3)將指向同一個方向的所有線段歸成一類,對于圖中每一個像素點,找出將其包圍的兩種線條(不可能三種線段包圍一個像素點,只能兩種),改像素點的方向垂直這兩條線,然后將方向相同、相近的像素聚類得到深度圖,見下圖右;4)將每一個平面假設跟深度圖相對應的區域匹配,然后保留每個區域中匹配度最高(像素點最多)的平面假設。
Reading | 一張圖建一個屋
滅點檢測算法綜述
Canny邊緣檢測算法
√(2007)Automatic single-image 3d reconstructions of indoor Manhattan world scenes
- 優點:效果不錯(平面的召回率80.6%,精確度89.1%)
缺點:不區分平面/非平面 - 大致流程:約束——室內+曼哈頓世界假設
1)使用Canny算子、Sobel算子、相位一致性提取邊緣,然后利用強度梯度的方向確定滅點。還要用線段提取算法提取線段,并給每個線段分配一個滅點(即方向);2)使用基于圖的分割算法【9】從顏色、紋理提取超像素;3)由于很多平面(比如墻)與地板相連,所以使用動態貝葉斯網絡(DBN)專門提取水平地面掩膜;4)將圖片劃分為320*240的網格,然后使用MRF根據格點的特征將其分類,生成粗糙的平面分割+深度估計;5)使用拉普拉斯概率分布來優化結果,得到最終的3維結構。
(2001)Ground Plane Segmentation for Mobile Robot Visual Navigation
神經網絡
√(2019)Single-Image Piece-wise Planar 3D Reconstruction via Associative Embedding
- 相關知識點:
- 外觀(appearance):紋理+顏色
- 二次規劃(Quadratic programming):求解一種特殊的數學優化問題的過程——具體地說,是一個(線性約束)二次優化問題,即優化(最小化或最大化)多個變量的二次函數,并服從于這些變量的線性約束。二次規劃是一種特殊的非線性規劃。
- RPN(Region Proposal Network):本質是基于滑窗的無類別obejct檢測器
- Associative Embedding:一種表示關節檢測和分組任務的輸出的新方法,其基本思想是為每次檢測引入一個實數,用作識別對象所屬組的“標簽”,換句話說,標簽將每個檢測與同一組中的其他檢測相關聯。
- 相關工作(翻譯)
基于幾何的方法【6,2,24,20】通過二維圖片中的幾何線索來恢復3D信息。比如,【6】第一個從圖片中提取出線段、滅點和超像素,然后用MRF模型給超像素打上標簽,標簽是預先定好的平面分類(比如曼哈頓世界假設下的三個主要平面)。同樣,【2】假設環境由一個平地和多個垂直的墻組成,然后用條件隨機場(conditional random field, CRF)給檢測出來的基元打標簽。【20】從一張圖片中檢測出線段和滅點,然后從最能匹配上幾盒基元集合的假設集中,找到建筑模型。但是所有這些方法都依賴于強烈的場景假設,因此在現實中應用有限。
基于外觀的方法,通過圖片的外觀推斷幾何原語。早期工作【15,10,12】使用一種自下而上的方法,他們先預測局部的圖像小塊(patch)的方向,然后將方向相似的小塊聚合形成平面區域。【15】定義了一系列離散的表面布局標簽,比如“支撐”、“垂直”、“天空”等,并且使用大量手工制作的局部圖片特征(比如顏色,紋理,位置和透視(perspective))訓練一個模型,來給一張圖片中的超像素打標簽。【12】的方法學著給預分割出的區域預測連續的3D方向,并將平面檢測轉變成使用MRF模型的優化問題。【10】第一個檢測凸邊/凹邊、遮擋邊界、超像素及其方向。然后將聚類問題表示為曼哈頓世界假設下的二進制二次規劃(binary quadratic program)。本文的方法也屬于這一類。與現有方法不同的是,本文將平面檢測轉變成實例分割問題,其中我們使用了一種相似度量標準來直接分割圖片中的平面實例,然后為每個平面實例估計平面參數。
近來,幾個基于CNN的方法可直接預測全局的3D平面結構。【23】提出一種深層神經網絡可以學著去給圖片中的每個像素推斷平面參數和對應的平面ID(即分割眼膜)。【31】將問題轉變為深度預測問題,并提出了一種不需要ground truth 3D平面的訓練方案。然而這些方法都只能預測固定數量的平面,可能導致復雜環境中的糟糕表現。同時,【22】使用一種基于提議(proposal-based)的實例分割結構,也就是Mask R-CNN。相反,我們使用的一種無需提議的實例分割方法來解決這個問題。
2019 CVPR 論文之Single-Image Piece-Wise Planar 3D Reconstruction via Associative Embedding的翻譯
SPPR閱讀筆記:單張圖片的3D平面重建
√(2019)Learning to Reconstruct 3D Manhattan Wireframes from a Single Image
- 應用: AR、CAD之類的高質量視覺任務
- 相關工作:
- SfM、視覺SLAM中,生成的點云不完整、有噪聲、不易存儲和分享的問題,可用plane-fitting[12]、mesh-refinement[13],但是仍然不能用于手持相機、手機的高質量3D建模的需求
- 文獻[2]: 人類不是用點云,而是用線、輪廓、平面、平滑表面來感知3D場景
- 使用深度學習尋找圖片中的幾何結構: 平面【30, 19】、表面【10】、2D線框(wireframe)【13】、房間布局(room layout)【35】、mesh fitting的關鍵點【31, 29】
- SfM、視覺SLAM使用SIFT、ORB、line segments[11, 5, 24]來提取角形特征
- 之前的一些論文試著在諸如SUNCG的3D人造數據集的幫助下,理解室內場景【25,32】。
- 大致方法:
- 輸入——單張RGB圖片(人造城市場景);先驗——曼哈頓世界假設;
- 數據集: 由于只有2D的線框數據集,沒有深度信息或者兩種連接點,需要自建數據集——大量的人造城市場景(來源SceneCity數據集),具有準確的深度信息和從網格邊緣提取的線框 + 少量的真實圖片(來源MegaDepth V1 dataset[18]),精度稍微弱點
- 使用two-stack hourglass神經網絡[23]預測全局線(Global lines, 兩個平面的物理交線,包括平面的紋理線條)和兩種連接點(c-junction: 直觀可見的線面的交點,t-junction: 被遮擋的兩條線的交點)以及它們的深度、滅點
- 使用矢量化(vectorization)將線和連接點變成圖像空間的2.5D熱圖(image-space 2.5D heatmap)
- 在AD和3D設計等場景中,絕對深度信息是3D線框的6個自由度的操作所必須的。而神經網絡預測的深度只是相對深度,還需要相機內參來確定絕對深度。但是對于MegaDepth之類的數據集,不提供相機內參。可以通過符合曼哈頓世界假設場景的3個相互正交的滅點來估計相機內參[21]
- 利用滅點改進神經網絡估計出的深度。因為論文發現對滅點的估計比深度的估計更可靠,而這個可能是因為滅點的幾何線索更多
- 最終生成3D的線框模型。
PS: 窗戶之類的規則紋理上的線條會用于神經網絡預測線框,但不會出現在最終結果里
- 未來工作:
- 更好的數據集: 高質量的圖片和3d模型
- 擴展線框表示: 識別更復雜的幾何結構(曲線、任意表面),并且無需曼哈頓世界假設
√(2018)PlaneRCNN: 3D Plane Detection and Reconstruction from a Single Image
- 輸入: 單張彩色圖片
- 網絡: pre-trained Mask-RCNN + 一種新奇的損失函數Warping Loss + 一種新的基準(benchmark) – 在ground truth中擁有更精細(finegrained)平面分割
- 輸出: piecewise planar surfaces = plane parameters + segmentation masks
單獨的平面 = 平面參數 + 分割掩膜 - 優點: 在平面檢測、分割、重建的指標上比現有最先進的方法表現還好;魯棒的平面提取(plane extraction);能檢測小的平面;不用預先知道場景中最大平面數量;較好的跨區域泛化性
- 相關工作(翻譯)
3D平面檢測及重建,大多數傳統的處理方法【10, 12, 37, 38, 52】需要多個視圖或深度信息作為輸入。他們用平面擬合3D點來生成平面候選區域,然后通過一個全局推斷來為每個像素點分配候選區域。【7】提出了一個基于學習的方法用來恢復平面區域,但該方法仍然需要深度信息的輸入。
最近,PlaneNet【27】通過從單張室內RGB圖像得到的端到端(end-to-end)學習框架,重新看待了分段平面深度圖重建問題。PlaneRecover【49】 后來提供了一種針對室外場景的非監督學習方法。PlaneRecover 和 PlaneNet 都將任務描述成一個有固定平面數量的像素分割問題(也就是PlaneNet 中10個平面和 PlaneRecover中5個平面),這嚴重限制了不同場景類型重建和泛化能力的表現。我們利用常用于物體識別的檢測網絡解決了這些限制。
基于檢測的框架現已成功應用于許多3D理解得任務,比如,以邊框(bounding box)【5,9,32】、線框(wireframe)【22,47,57】、or基于模板的形狀組成(shape composition)【2,21,31,48】,來預測物體形狀。然而,這些方法的粗略表示沒有能力來精確地建模復雜、混亂的室內場景。
除了檢測以外,分割掩膜的聯合細化(joint refinement),對于一些需要精確平面參數和邊界的應用來說,也很關鍵。在最近的語義分割技術中,全連接條件隨機場(CRF)被證明對于局部的分割邊界是有效的【4,20】。CRFasRNN 【55】在端到端的訓練中促進了它的可辨別性。CRF 使用的只是低級信息,全局的上下文信息通過 RNNs【1,23,36】、更通用的圖形模型【30、24】、or新型的神經架構設計【53,54,51】進一步發掘。這些分割細化技術不能感知實例,僅僅是在每個像素上進行的推斷,并不能區別多個實例屬于同一個語義的種類。
實例感知(instance-aware)的聯合分割細化帶來了更多的挑戰。傳統的方法【39,40,41,43,50】將場景當作圖形來建模,然后使用圖模型推理技術來聯合優化所有的實例任務。使用一系列試探法,這些方法通常不魯棒。為此,我們提出了一個能在檢測網絡之上、聯合優化任意數量的分割掩碼的分割細化網絡。 - 方法框架: 三部分
- 實驗結果:
評價指標:平面召回量 = IOU閾值(0.5)+非固定深度誤差閾值(0m-1m, 增量為0.05m)。這個準確性是在真實樣本和檢測出樣本的重疊區域下計算測量的PlaneNet
評價指標:聯合估計的深度圖和真實樣本的平面分割——對于每個ground-truth的平面分割,利用Warping loss模型估計出的深度將其還原成3D的點,通過SVD 擬合3D平面,通過歸一化平面系數將法向量變成單位向量,最后計算參數差異的均值和面積加權均值作為評估指標;除了這個平面參數標準以外,我們也使用文獻8中的深度圖評估標準。
評價指標:variation of information (VOI)、Rand index (RI)、segmentation covering (SC)、average precision (AP,用 IOU 閾值為0.5和三個不同的深度誤差閾值[0.4m, 0.6m, 0.9m]來計算)——除了VOI之外,數值越大代表效果越好
結果:每一個組件都增加了性能表現
目的:推斷出被遮擋的平面并且重建分層的深度圖模型
方法:添加一個掩膜預測模塊
以下為具體方法
A. Plane detection network
- 直接用Mask R-CNN可以意外地很好地直接檢測出 plane / non-plane,并且對平面數量沒有限制
- 用Mask R-CNN進行平面實例分割
- 估計三維平面參數:normal + offset information(法線+偏移信息)。CNNs可以成功地估計深度圖和表面法線。但plane offset是個挑戰(即使用了CoordConv),方法分為三個步驟:
- Plane normal estimation(Local image analysis): 在ROL pooling后直接連接一個參數回歸模型,就可以得到合理的結果。但是對邊界框回歸借用二維anchor box可以進一步提高精度,具體分三小步: 1)選取一個anchor normal;2)回歸殘差三維向量;3)將和歸一化為一個單位長度的向量。對1萬張訓練集圖片的plane normal進行k-means聚類(成7類),聚類中心為Anchor normals。將原始Mask R-CNN的object category prediction替換成anchor ID prediction,再加一個獨立的全鏈接層來輸出每個anchor normal的三維殘差向量(residual vector)。
- Depthmap estimation(Global image analysis): 在Mask R-CNN的FPN后面加了個decoder,就可以得到depthmap。 再雙線性上采樣跟輸入大小一致,640*640
- Plane offset estimation: 對于一個平面法線nnn,其plane offset ddd滿足如下公式
d=∑imi(nT(ziK?1xi))∑imid = \frac{\sum _i m_i(n^T(z_iK^{-1}x_i))}{\sum _i m_i}d=∑i?mi?∑i?mi?(nT(zi?K?1xi?))?
KKK是內參矩陣,xix_ixi?是第i個像素坐標(齊次),ziz_izi?是預測的深度值,mim_imi?是標志位,如果像素屬于這個平面則為1。所有像素都參加計算。
B. Segmentation refinement network
- 上個部分獨立進行分割掩膜,這個部分則聯合優化所有掩膜。挑戰: 平面數量不定問題
- 其他人的一種方法: 假設平面的最大數量,聯結所有掩膜,對缺失的部分填充0。缺點: 有上限,容易丟失小的平面。
- 本文使用ConvAccu,基于non-local module。輸入為平面掩膜、原始圖像、其他所有平面掩膜的并集、重建的深度圖(平面+非平面)、特定平面的三維坐標圖。
ConvAccu用卷積層處理image window中的每個平面分割掩膜;在傳入下一層前,計算和聯結同一層面的所有其他平面的平均特征;最后將精細的平面掩膜聯結,使用交叉熵損失跟真實樣本進行比較。
使用ConvAccu構造了U-Net結構。
C. Warping loss module
- 加強了重建好的三維平面跟nearby view(當前幀的前20幀)的一致性。
- 先對每一幀建立depthmap: 1)在相機坐標系中,從plane equation(?)計算平面區域的深度值;2)用Plane detection network 中為剩下像素(非平面區域)預測的像素深度值。再用相機內參矩陣將depthmap轉化為3D坐標圖。
- 計算Warping loss: 3D坐標圖中,當前幀和nearby frame的3D坐標圖分別用McM_cMc?和MnM_nMn?表示。對于MnM_nMn?中的每個3D點pnp_npn?,用相機姿態信息就可以投射到當前幀,再用bilinear interpolation(雙線性插值?)從McM_cMc?中讀出pcp_cpc?。再根據相機位姿將pcp_cpc?轉換到nearby frame的坐標系中,計算pctp_c^tpct?、ptp_tpt?的三維距離。
Warpingloss=所有這樣的三維距離像素數量Warping \; loss = \frac{所有這樣的三維距離}{像素數量}Warpingloss=像素數量所有這樣的三維距離?
D. Benchmark Construction
- 增加圖片中的平面數量的三個修改:
- 減小單個平面區域(占整張圖的比重)的閾值,從而保留小平面
- 不把一些共平面標記為一個平面(PlaneNet是當成一個平面的)
- 通過(生成的)ground-truth 3D plane跟傳感器獲得的原始深度圖進行比較,從而找出image跟投影得到的ground-truth plane不重合的情況。也就是說,刪除平面區域中平均深度差異(?)>0.1m的圖片
《PlaneRCNN-單幅圖像的三維平面檢測與重建》論文中英文對照解讀
【泡泡圖靈智庫】PlaneRCNN:單張影像的三維平面檢測與重建(avXiv)
√(2018)Recovering 3D Planes from a Single Image via Convolutional Neural Networks
- 相關工作:
基于幾何的方法明確分析了2D圖片中的幾何線索來恢復三維信息。比如,在針孔模型中,3D空間中平行的線條投射到圖片中就會變成圖片里平面上趨于一點的線條。相交處可能在無窮遠,這稱為滅點(vanishing point)【13】。通過檢測一個平面的兩對平行線的滅點,就可以確定該平面唯一的3D方向【6】【27】【3】。另一個重要的幾何基元就是連接點(junction),由2條甚至更多的不同方向的線條交匯而成。有幾篇論文使用連接點來生成看似可信的3D平面假設or者移除了不可能的那些平面【21】【34】。另一種不同的方法是檢測圖片中的矩形結構,其通常由一個平面的兩對相互垂直的線條構成【26】。然而所有的這些方法都依賴于使用強烈的常規結構,比如曼哈頓世界假設中的平行or垂直線條,因此在現實中應用有限。
為了克服這種限制,基于外觀的方法專注于從圖片中的幾何基元推斷出外觀。比如,【16】提出一個多樣的特征集合(比如顏色,紋理,位置和形狀),然后用它們訓練一個模型,把圖片中的每個超像素分類成離散的類別,比如“支撐”、“垂直”(左/中/右)。【11】使用一種基于學習的方法來為每個像素點預測連續的3D方向。還有,【9】為了單張圖片的理解,自動學習有意義的3D基元。本文方法也屬于這一類。但不同于現有的方法,即聚類局部幾何基元的自下而上的方法,我們的方法訓練一個網絡來直接預測3D平面結構。最近,【22】也提出了一個深層神經網絡,用于單張圖片的分段平面重建。但這種訓練要求ground truth 3D平面,并且沒有利用數據集中的語義標簽。
機器學習&幾何。有大量論文使用機器學習來推斷場景的像素級別的幾何基元,而且主要是深度估計【30】【7】和表面法向估計【8】【18】。但幾乎沒有方法使用監督數據來檢測中高水平的3D結構。有一個例外,且跟我們的問題相關,就是研究室內房間布局(layout)的估計。然而在這些工作中,幾何結構就是包含了幾個人造垂直平面(比如地板、天花板、墻)的簡單“盒子”模型。相反,我們的工作是為了檢測任意情況下的3D平面。
√(2018)PlaneNet: Piece-wise Planar Reconstruction from a Single RGB Image
- 相關工作:
多視圖(Multi-view)的片段平面重建分段。平面深度圖的重建,曾經是多視圖三維重建的熱門研究話題【12,31,13,40】。這個任務就是推斷出一系列的平面參數,并給每個像素點分配一個平面ID。現有的方法第一步都是建立精確的3D點,然后使用平面擬合方法(plane-fitting)生成平面假設,然后解決一個全局推斷問題,就可以重建出分段平面的深度圖。我們的方法直接從一張彩色圖片中,推斷平面參數和平面分割。 - 應用: 1) AR: 放東西在桌子上[17], 更換地板紋理;2) 機器人: 識別地板從而進行路徑規劃,識別桌面來放東西
- 缺點: 平面數量有上限;在低亮度、兩個物體顏色相近、雜亂的地方,分割效果不好;
- 大致方法:
- 數據集: ScanNet。平面 = 語義標簽 + RASAC提取。兩個平面間距離大于5厘米,且一個平面包括其所在區域90%的點;不同于一標簽的平面角度小于20度,且大平面和小平面平均距離誤差小于5厘米,則融合兩個平面;剔除面積小于圖片1%的平面,剔除所有平面占總圖片面積<50%的圖片
- 神經網絡: DRNs(Dialted Residual Networks) = 101-layer ResNet + Dilated convolution
三個分支: 平面參數、非平面深度圖、分割掩膜 - 實驗對比:
- 平面分割精度:
NYU-Toolbox[30]:是一個平面提取算法,來自NYU官方工具箱,使用RANSAC提取平面假設,然后通過馬爾可夫隨機場MRF來優化平面分割。
MWS[12] (manhatten-world stereo):除了在提取平面的時候使用曼哈頓世界假設并且利用vanishing line優化結果,其他和NYU-Toolbox類似。
PPS[31] (Piecewise Planar Stereo):放寬了Manhattan World假設,使用消失線來生成更好的平面提取 - 深度精度: Eigen-VGG[7]、SURGE[35]、FCRN[20]
深度學習之PlaneNet
《PlaneNet-單幅RGB圖像的分段平面重建》論文中英文對照解讀
多張圖片輸入
√(2010)Multiple Plane Detection in Image Pairs using J-Linkage
- 應用:stable landmarks for vision-based urban navigation
- 優點:72%的識別率;不需要先驗(平面數量);沒有false positives,即只會檢測不到平面,不會把非平面區域當成平面;
- 步驟:SIFT matches →\rightarrow→ generate multiple local homography hypotheses using J-Linkage →\rightarrow→ globally merge →\rightarrow→ spatially analyze →\rightarrow→ robustly fit →\rightarrow→ check for stability
- 缺點: 測試使用的圖片全部為室外的,對室內的效果未知,且圖片全為灰度,沒有利用彩色信息;受限于SIFT——對于缺少紋理(比如屋頂、窗戶)、太小、視角變化太大的平面對,方法的第一步就失效了,即SIFT檢測不到、檢測到太少特征點;
以下為具體方法
A. Feature correspondence extraction
- 步驟:
- 一對灰度圖片(2張),分別用SIFT提取特征(點+描述子)I1I_1I1?、I2I_2I2?
- I1I_1I1?中的每一個特征ppp,使用nearest-neighbor search找到ta在I2I_2I2?最近、第二近的qqq、q′q'q′
- 若滿足歐氏距離∣p?q∣∣p?q′∣\frac{|p-q|}{|p-q'|}∣p?q′∣∣p?q∣?小于設定的閾值,就確立correspondencec=(p,q)c = (p, q)c=(p,q)
- 用x1cx^c_1x1c?、x2cx^c_2x2c?分別獨立地表示特征在兩張圖中的位置
B. Initial hypotheses using J-linkage
- 步驟
- 隨機選擇k個minimum sample sets (MSS):每個MSS包括四個correspondence,代表一個homography。其中第一個correspondence人工繪制(為了增加選擇到一個由inlier組成的MSS的可能性)
- H1,...,HkH_1, ... , H_kH1?,...,Hk?代表每個MSS指定的homography;每個correspondence ccc,計算得ta的preference set PcP_cPc?,代表擬合ccc足夠好的模型的子集
Pc={Hj:errHj(c)<?,1≤j≤k}P_c = \{H_j : err_{H_j}(c) < \epsilon, 1 \leq j \leq k\}Pc?={Hj?:errHj??(c)<?,1≤j≤k}
其中,errHj(c)=∣H(x1c)?x2c∣err_{H_j}(c)=|H(x^c_1)-x^c_2|errHj??(c)=∣H(x1c?)?x2c?∣,表示ccc用HHH變換后的reprojection error(二次投影誤差);?\epsilon?為閾值,取1.5個像素。
多個ccc的preference set則為ta們的PcP_cPc?的交集。 - 用J-Linage進行聚類:
dJ(X,Y)=∣X∪Y∣∣X∩Y∣X∪Y∣d_J(X, Y)=\frac{|X\cup Y||X\cap Y|}{X\cup Y|}dJ?(X,Y)=X∪Y∣∣X∪Y∣∣X∩Y∣?
其中,X,YX,YX,Y表示一不同的PcP_cPc?;
dJd_JdJ?最小的一對PcP_cPc?將被融合。不斷融合,直到所有dJ=1d_J=1dJ?=1,即所有PcP_cPc?都沒有相交。 - 然后剔除少于6個ccc的PcP_cPc?(因為很多outlier是在小的PcP_cPc?中),剩下的每一個PcP_cPc?代表一個平面假設
C. Global merging
- 原因: 上一步的平面假設都只包含附近的點,即一個真正的平面,可能被分成多個平面假設
- 步驟:
- 用dFd_FdF?測量對所有ccc的union擬合最好的一個模型的平均誤差
dF(X,Y)=∑c∈X∪YerrH^(c)∣X∪Y∣d_F(X, Y) = \frac{\sum _{c \in {X \cup Y}} err_{\hat H}(c)}{|X \cup Y|}dF?(X,Y)=∣X∪Y∣∑c∈X∪Y?errH^?(c)?
其中,H^\hat HH^是X∪YX\cup YX∪Y的透視變換的最小二乘解; - 當最小的dF>?(?=1.5像素,跟之前的一樣)d_F > \epsilon (\epsilon = 1.5像素,跟之前的一樣)dF?>?(?=1.5像素,跟之前的一樣),就不再將X、YX、YX、Y融合
- PS: SIFT中的錯誤匹配(比如窗戶)可能導致部分平面假設不能融合
D. Spatial analysis
- 原因: 之前的所有步驟只考慮了特征描述子,單應性空間的信息,還未利用特征位置(feature location)的信息,導致平面假設里有rogue correspondence
- 步驟:
- 在圖片對的其中一張圖片里,對于每一個平面假設計算其所有特征位置的Delaunay三角剖分,然后刪掉長度比平均值大一個標準差的邊長
- 若出現了分離的子圖,則每個子圖都作為一個單獨的平面假設,并且要舍棄少于6個ccc的子圖
E. Robust fitting and stability checks
- 目的: 提高準確度,并進一步剔除outlier
- 步驟:
- 對于每個model(平面假設)CCC,再次利用最小二乘計算題最好的單應H^\hat HH^(變換矩陣),刪掉CCC中errH^(c)>?ierr_{\hat H}(c) > \epsilon _ierrH^?(c)>?i?的ccc,其中?i\epsilon _i?i?是變化的閾值,開始的時候比較大,然后慢慢減小到1.5像素(跟之前的一樣)——就是先把errerrerr大的刪掉,再刪小的
- 使用與平面假設的邊框大小成比例的、符合正態分布的噪聲來輕微擾動兩張圖中的特征位置,計算最好的模型(平面假設),并將邊框的角投影到這個新模型中
原因: 對于一個擁有良好分布特征并且穩定的模型,輕微擾動導致平面假設的邊框位移的標準差應與擾動保持在同一個數量級 - 如果擾動后邊框偏移的標準差過大,則否決掉這個模型
- 剩下的模型就是最終輸出的平面
(2010)Piecewise Planar and Non-Planar Stereo for Urban Scene Reconstruction
√(2009)Manhattan-world Stereo
- 相關知識點:
- 照片一致性(photo consistency): 將投影到中的每個可見圖像中,并且將它們投影附近的圖像紋理的相似度計算為photo consistency
- 多視角立體視覺(Multiple View Stereo,MVS): 能夠在多個視角(從外向里)觀察和獲取景物的圖像,并以此完成匹配和深度估計
- 馬爾可夫隨機場:也叫概率無向圖模型,具有馬爾可夫性質的隨機場。 隨機場:當給每一個位置(site)按照某種分布隨機賦予相空間(phase space)的一個值之后,其全體就叫做隨機場
- 圖割(graph cut):
- SfM(structure from motion): 一種三維重建的方法,用于從motion中實現3D重建。也就是從時間系列的2D圖像中推算3D信息。
- 應用: 建筑(architectural)場景的三維重建——全局尺度上的多城市建模(比如谷歌地圖)
建筑場景的特點: 包含大量具有嚴密結構的東西,比如缺乏紋理或者被繪畫過的墻,尖銳的棱角,軸對齊幾何 - 優點: 1) 輸出結果干凈、簡單(clean and simple);2) 在缺乏文理的地方表現良好;3) 適用于室內、室外場景
- 大致流程: 輸入: 一系列(a set of)校正過的圖片
- 使用魯棒的PMVS算法重建有紋理的區域,獲得一系列定向的3D點(位置+法線),保留紋理區域內可信度高的點
- 使用均值漂移算法,從點的法線中提取三個主要的平面方向,即x, y, z坐標軸;從點的位置生成平面假設(和坐標軸平行)
- (主要步驟)使用馬爾可夫隨機場和圖割(graph cut)恢復稠密的深度圖
PS: 使用SfM恢復數據集的相機參數 - 未來工作: 1) 本文的主要目的為計算圖片集合的深度圖,未來工作可以著重于將它們融合成一個大尺度場景的模型;2) 探索用于建模更廣泛的建筑場景的先驗
(2009)Piecewise planar stereo for image-based rendering
點云輸入
(2016)Analysis of Efficiency and Accuracy of Plane Fitting Methods
(2012)Indoor Mapping Using Planes Extracted Rome Noisy RGB-D Sensors
(2011)The 3D Hugh Transform for Plane Detection in Point Clouds: A Review and a new Accumulator Design
3D Hough變換點云平面檢測算法
√(2011)Real-Time Plane Segmentation using RGB-D Cameras
- 優點:①實時;②可以可靠地檢測障礙物,檢測可抓取的物體以及支撐它們的平面,以及對所獲取的3D數據中的所有平面進行分割和分類
- 相關知識點:
- 計算點云的法向量、曲率:點云中的一點ppp,其周圍kkk個最近的點 or 所有距離它小于rrr的點,可以計算這些點協方差矩陣的最小特征值和其對應的特征向量,然后估算ppp點處的法向量,而最小特征值與所有特征值之和間的比例可以用來估算該點的曲率。k,rk, rk,r不能太大(不然把拐角都抹平了),不能太小(不然噪聲影響太大)。常用的方法是計算所有點距離估算出的平面的距離,反過來權衡這些點的協方差矩陣(計算量太大了);另一種方法是,計算旁邊區域或者不同尺度下的法向量,從而為每個點選擇最可能成為平面的法向量
- 積分圖( integral images):雖然也可以理解為一張圖,但該圖上任意一點(x,y)的值是指從灰度圖像的左上角與當前點所圍成的舉行區域內所有像素點灰度值之和。
- 反射矩陣(reflection matrix):反射矩陣將Q點變換為其關于平面n·p+d=0的對稱點Q’’
- 正規空間(normal space)
- 大致方法: 輸入:RGB-D
- 點云中的每一個點,分別連接其和下、右方向的點得到兩個切向量
- 使用積分圖( integral images),對領域內的所有切向量計算平均向量,從而進行平滑處理減少噪聲的干擾
- 兩個切向量叉乘獲得該點的法向量
- 在normal space(貌似為下圖右上角那個)中,對points聚類并融合后得planes
- 將法線的方向相似的小平面聚合成一簇(不同但平行的平面,圖a)。使用相應的平均、歸一化法線可以計算平面與原點的距離(圖b),同時針對距離越遠噪聲越大的情況,使用對數直方圖(logarithmic histogram)進行計算,一簇中落在同一bin(即距離相近)的點聚合成最終的平面(圖c)
- 未來工作:更可靠、快速的方法來完成更復雜的任務(如點云的自主配準或利用獲取的表面信息識別檢測到的物體)
(2010)Plane Detection in Point Cloud Data
√(2010)Robust Piecewise-Planar 3D Reconstruction and Completion from Large-Scale Unstructured Point Data
-
應用:AR、導航、城市規劃、環境影響評估的物理模擬
-
輸入:無組織、高噪聲、大量outliers的大規模點云(百萬個點)
輸出:輕量、封閉、無自相交的多邊形網格 -
相關知識:
- K-最近鄰算法(KNN):選擇未知樣本的一定范圍內確定個數的K個樣本,若該K個樣本大多數屬于某一類型,則未知樣本判定為該類型。
- 主成分分析(PCA):通過正交變換將n維特征映射到k維上(k<n),這k維是重新構造出來的全新維度特征,而不是簡單的從n維特征去除n-k維特征,這k維就是主成分。
- 區域生長算法(region growing approach):將具有相似性的像素集合起來構成區域。首先對每個需要分割的區域找出一個種子像素作為生長的起點,然后將種子像素周圍鄰域中與種子有相同 or 相似的像素(事先確定的生長or相似準則來確定)合并到種子像素所在的區域中。而新的像素繼續作為種子向四周生長,直到再沒有滿足條件的像素可以包括進來,一個區域就生長而成了。
- Alpha Shapes:從離散的空間點集(point sets)中抽象出其直觀形狀的一種方法,簡言之,從一堆無序的點中獲取大致的輪廓。
-
方法原則
- 一階近似
- 幾何基元(primitive)的程度:平面(人造環境一定是分段平面的,曲面可以用平面逼近)
- 分析規模:平面距離、角度有域值
- 拓撲保證:本方法基于可將3D空間分解成空白or占用區域的標簽,保證生成的表面封閉
- 可見一致性:通過獲取過程提供的可見性信息來最大化表面的一致性
- 利用先驗補齊被遮擋的地方:幽靈基元形式的先驗。由假設的平面基元組成,這些平面基元可確保檢測到的基元的預期連續性,并在城市和建筑場景中增強垂直結構和正交相交的普遍性。
-
大致方法: PS:論文重點在輸出模型的簡潔性和理想化,而不是精確度。
- 輸入點云中任意兩個點,若其都為對方的滿足KNN算法的鄰居,則它們為鄰居
- 每個輸入點周圍一定距離的球域內,使用PCA估計該點的有向切平面(oriented tangent planes)
- 使用區域生長算法檢測出平面基元,種子的選取參考文中提及的局部復雜度。在計算完基元之后,將構成它的所有點講不再考慮(因此,此時每一個點都恰好分配給一個基元)。最后,舍棄太小的平面基元。
- 由于之前舍棄掉小的基元和采集點云時遇到的遮擋可能導致最終生成的模型不封閉,需要生成一些幽靈基元(ghost primitive)來補齊:使用二維的Alpha Shapes算法得出構成平面基元點的投影的邊界,迭代合并后舍棄重復邊界,保留真實邊界,最終,包含邊界的垂直平面、和前者正交且通過同一邊界的平面,這兩種平面即為幽靈平面基元
- 構建細胞復合體(cell complex),然后標記細胞復合體——太多了,看不下去了:(
- 使用Delaunay三角剖分,將很多小平面合成大平面,輸出最終結果。
-
未來工作:①結合垂直度,水平度和正交性,以提高3D模型的視覺可接受性;②探索從地面或傾斜航空影像(oblique aerial imagery)對整個城市進行核心外3D重建的流方法(streaming approach)的可行性。
(2008)Fast Plane Detection and Polygonalization in noisy 3D Range Images
相關領域
SLAM
√(2017)Keyframe-based Dense Planar SLAM
- 相關知識:Kintinuous——適合做大場景的三維重建
- 本文方法縮寫KDP-SLAM,特點:以平面為landmark
- 優點:只用CPU可以實時大規模重建,重建模型簡潔(cheaper)
缺點:不能重建非平面區域,只能應用于高度平面化的環境 - 關于平面提取的大致方法: 輸入:傳感器采集的RGB-D
- 預處理:提取平面前,為了減小噪聲,將深度圖中RGB梯度小的地方進行深度平滑處理,從而更好提取小的平面(因為顏色變化不明顯區域很大可能為平面)
- 把深度圖劃分為10×10像素大小的網格,每個網格選幾個點計算法向量。若一定量的法向量平行;則利用這些點和法向量合成平面
- 使用文中涉及的快速里程計(fast odometry),可得到每幀的相機姿態估計。融合多幀后,使用文獻[11]中的聚類算法進行平面分割,得到的結果更加精確(比如,可以將墻上的白板與墻分割開,即使它們深度距離只差1cm)
- 未來工作:①加入IMU數據;②加入除平面外其他的結構,比如樓梯、柱子等,增加系統魯棒性;③recover dense 3D for complex structure locally anchored to planes ,以便可以在整體上對其進行優化
(2014)Dense Planar SLAM
(2013)Point-Plane SLAM for Hand Held 3D Sensors
矩形檢測
(2008)Detection and matching of rectilinear structures
(2003)Extraction, matching, and pose recovery based on dominant rectangular structures
場景理解
(2014)Unfolding an indoor origami world
單幅圖像場景理解,論文解讀
恢復場景三維結構
(2016)Efficient 3D room shape recovery from a single panorama
圖像算法 |單一全景圖中高效的恢復三維結構
(2008)Fast Automatic Single-View 3-d Reconstruction of Urban Scenes
表面布局恢復
(2007)Recovering surface layout from an image
總結
- 上一篇: 两个平面的位置关系和判定方程组解_201
- 下一篇: 平面几何基本知识——学习笔记(2)