基於隨機遊走的三維網格分割算法(Random Walks)

  首先以一維隨機遊走(1D Random Walks)爲例來介紹下隨機遊走(Random Walks)算法,以下圖所示,從某點出發,隨機向左右移動,向左和向右的機率相同,都爲1/2,而且到達0點或N點則不能移動,那麼如何求該點到達目的地N點的機率。算法

  該問題能夠描述爲以下數學形式:app

P(0) = 0dom

P(N) = 1函數

P(x) = 1/2*P(x - 1) + 1/2*P(x + 1) for x = 1, 2, 3, … , N-1spa

  若是用矩陣形式描述,即:blog

       那麼經過求解該線性方程組就能夠獲得各個點到達目的地N點的機率,以上就是一維隨機遊走算法原理。get

       [Grady et al. 2006]提出了利用隨機遊走思想來分割二維圖像,文章將圖像考慮成一張圖(Graph),每一個像素對應圖中一個節點,根據亮度差值定義節點間的權重(至關於一維隨機遊走中向左和向右的機率),而後用戶指定前景(foreground)和背景(background)標籤(至關於一維隨機遊走中N點和0點),經過求解線性方程組就能夠獲得各個像素點屬於前景或背景的機率,若是將閾值機率設置爲0.5,那麼就能夠分割獲得指望的圖像區域。數學

       [Lai et al. 2008]將這種思想擴展到三維網格分割,文章將網格中每一個三角片對應圖中一個節點,利用相鄰三角片之間的二面角來定義節點之間的權重,具體以下:io

對於三角片fi,定義一個fi與相鄰三角片fi,k(k = 1, 2, 3)之間幾何差別的函數d(fi, fi,k):ast

d(fi, fi,k) = η·[1 – cos(dihedral(fi, fi,k))] = η/2·||Ni – Ni,k||2

其中:dihedral(fi, fi,k)表明相鄰三角片fi與fi,k之間的二面角,Ni爲三角片fi的法向,對於凹邊η設置爲1.0,對於凸邊η設置爲0.2。

  將d歸一化:

  節點之間的權重pi,k能夠根據函數d(fi, fi,k)給定:

  一樣經過求解線性方程組能夠獲得網格分割效果。

  [Zhang et al. 2010]對[Lai et al. 2008]的網格分割算法作了部分改進,文章將網格中每一個頂點對應圖中一個節點,因爲一個網格的三角片數量一般是頂點數量的2倍左右,這樣求解的方程變量數就會減小一半左右,計算速度就會獲得提升。

效果:

 

本文爲原創,轉載請註明出處:http://www.cnblogs.com/shushen

 

 

參考文獻:

[1] Grady, L., "Random Walks for Image Segmentation," in Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.28, no.11, pp.1768-1783, Nov. 2006

[2] Yu-Kun Lai, Shi-Min Hu, Ralph R. Martin, and Paul L. Rosin. 2008. Fast mesh segmentation using random walks. In Proceedings of the 2008 ACM symposium on Solid and physical modeling (SPM '08). ACM, New York, NY, USA, 183-191.

[3] Zhang, J., Wu, C., Cai, J., Zheng, J. and Tai, X.-c. (2010), Mesh Snapping: Robust Interactive Mesh Cutting Using Fast Geodesic Curvature Flow. Computer Graphics Forum, 29: 517–526.

相關文章
相關標籤/搜索