opencv中三角剖分

2021-08-03 16:17:39 字數 1138 閱讀 2974

主要介紹delaunay三角剖分

在opencv原始碼sources/samples下c++/c目錄下都有三角剖分的示例**delaunay

1. 最大化最小角,「最接近於規則化的「的三角網。

2. 唯一性(任意四點不能共圓)。

【定義】delaunay邊:假設e中的一條邊e(兩個端點為a,b),e若滿足下列條件,則稱之為delaunay邊:存在乙個圓經過a,b兩點,圓內(注意是圓內,圓上最多三點共圓)不含點集v中任何其他的點,這一特性又稱空圓特性。

【定義】delaunay三角剖分:如果點集v的乙個三角剖分t只包含delaunay邊,那麼該三角剖分稱為delaunay三角剖分。

【定義】假設t為v的任一三角剖分,則t是v的乙個delaunay三角剖分,當且僅當t中的每個三角形的外接圓的內部不包含v中任何的點。

opencv中的三角剖分應該是逐點插入法,基於bowyer-watson演算法實現的。

在opencv的原始碼sources/samples下有相應語言的示例**。

目前採用逐點插入方式生成的delaunay三角網的演算法主要基於bowyer-watson演算法,bowyer-watson演算法的主要步驟如下:

1)建立初始三角網格:針對給定的點集v,找到乙個包含該點集的矩形r,我們稱r為輔助視窗。連線r的任意一條對角線,形成兩個三角形,作為初始delaunay三角網格。

2)逐點插入:假設目前已經有乙個delaunay三角網格t,現在在它裡面再插入乙個點p,需要找到該點p所在的三角形。從p所在的三角形開始,搜尋該三角形的鄰近三角形,並進行空外接圓檢測。找到外接圓包含點p的所有的三角形並刪除這些三角形,形成乙個包含p的多邊形空腔,我們稱之為delaunay空腔。然後連線p與delaunay腔的每乙個頂點,形成新的delaunay三角網格。

3)刪除輔助視窗r:重複步驟2),當點集v中所有點都已經插入到三角形網格中後,將頂點包含輔助視窗r的三角形全部刪除。

在這些步驟中,快速定位點所在的三角形、確定點的影響並構建delaunay腔的過程是每插入乙個點都會進行的。隨著點數的增加,三角形數目增加很快,因此縮短這兩個過程的計算時間,是提高演算法效率的關鍵。

演算法執行圖示如下:

三角剖分詳解

三角剖分定義 定義 三角剖分 假設v是二維實數域上的有限點集,邊e是由點集中的點作為端點構成的封閉線段,e為e的集合。那麼該點集v的乙個三角剖分t v,e 是乙個平面圖g,該平面圖滿足條件 1.除了端點,平面圖中的邊不包含點集中的任何點。2.沒有相交邊。3.平面圖中所有的面都是三角面,且所有三角面的...

優美三角剖分

優美三角剖分 pas c cpp 題目描述 小x同學為了搞好和小c同學的關係,特意尋找了一些優美的影象作為禮物。這是一些由無窮無盡三角形組成的極為優美的圖形,小x同學很想實現這些極富美感的圖形,但是作為一名初賽都未過的偽退役選手,他水平有限,於是這個艱鉅的任務就落在你們身上了。由於好心的出題人,資料...

三角剖分詳解

三角剖分定義 定義 三角剖分 假設v是二維實數域上的有限點集,邊e是由點集中的點作為端點構成的封閉線段,e為e的集合。那麼該點集v的乙個三角剖分t v,e 是乙個平面圖g,該平面圖滿足條件 1.除了端點,平面圖中的邊不包含點集中的任何點。2.沒有相交邊。3.平面圖中所有的面都是三角面,且所有三角面的...