我在2d有散亂的點雲。我的問題是我想獲得邊界點來獲得點雲的輪廓。2d點雲的輪廓
我知道這個'marching square',但是這個算法通常用於2d中的像素。 任何人都有想法如何從二維點雲或「行軍方」算法的細節獲得輪廓?另外,凸包在我的情況下不起作用。
在此先感謝。
我在2d有散亂的點雲。我的問題是我想獲得邊界點來獲得點雲的輪廓。2d點雲的輪廓
我知道這個'marching square',但是這個算法通常用於2d中的像素。 任何人都有想法如何從二維點雲或「行軍方」算法的細節獲得輪廓?另外,凸包在我的情況下不起作用。
在此先感謝。
我建議使用Delaunay triangulation作爲基礎算法,然後刪除所有太大的三角形(從而將雲分成組),然後刪除多於一個三角形使用的所有邊。
我認爲2D「Alpha形狀」算法會爲您提供正確的選擇。
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Alpha_shapes_2/Chapter_main.html
阿爾法形狀可以被認爲是爲「凸殼」算法,其允許生成更一般的形狀的概括。
通過使用alpha形狀,您將可以通過更改alpha參數值來控制要生成的形狀捕獲的細節水平。
你可以在這裏嘗試的Java小程序:http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/belair/alpha.html
有更好的瞭解有關執行此算法做。
我認爲步行廣場的方法仍然是你最好的選擇。 (如果我錯了,請糾正我)。您可以將2d點映射到「像素」值,更新該像素周圍點的密度。因此,如果許多點接近某個像素,則密度比頂部或附近只有一個點的密度要高。從那裏你將繼續與行軍廣場。 – Bart 2011-06-14 15:08:12
thanks.can你請解釋你的意思是什麼我的2D點映射到'像素'? – stephie 2011-06-15 07:51:23
我正在考慮類似於3D中的元球(或者你可能會看看SPH流體模擬的表面重構方法)。這個鏈接主要包含我暗示的內容:http://www.geisswerks.com/ryan/BLOBS/blobs.html現在當然你會忽略3D和光線投射。這樣的事會適合你嗎?另一個有趣的鏈接可能是這樣的:http://http.developer.nvidia.com/GPUGems3/gpugems3_ch07.html – Bart 2011-06-16 01:18:43