最近看了**《point set registration: coherent point drift》,來記錄一下對這個演算法的理解。
cpd演算法使用的數學模型為高斯混合模型(gmm),關於高斯混合模型的理解可以參考下面這篇部落格
**首先定義了一系列變數:
其中點集x和點集y是兩個需要配準的點雲,t為變換矩陣。其中點集y解釋為gmm模型的型心,點集x為由gmm模型生成的資料點,這就可以理解為,現在我已將點集y當成乙個正確標準的點集,點集x呢,則是有許多散落在標準點集周圍的點構成的點雲,因為點集y中的每個點都代表了乙個高斯分布,則點集y就是由這m個高斯分布混合而成,而點集x就是這個高斯混合分布生成的點集。
上文中提到的高斯模型用下式表示:
其中,從上面這個p(x)式子的第二項可以知道,點集x中乙個點存在的概率:就是求它與每個高斯模型形心(即y中的每個點)的距離和,只不過這裡的"距離和"用"概率和"進行表示。
可以想像,假如點集x和點集y完全相同,並且點集x和點集y之間的正確變換矩陣t我們已經找到,這樣,在我們利用變換矩陣t將點集y變換後,兩點集應當完全重合,則總有乙個點y中所有點的距離和,我們現在只算了重合的那個y點,其他y點對這個距離和貢獻有多少呢?可以說基本為0,這是由y=exp(-x)這個函式的影象決定的,畢竟exp(-3)就等於0.05了,而在大規模點雲中,哪兩個點之間間距不得2公尺以上(式中還有個平方),所以,可以認為點集y中其他點對
那麼當點集x和點集y不一樣呢,比如點集x有些部分和點集y完全相同,有些則不同(但差別也不算大),那麼在不同的部分,和
我們將所有
e這個式子其實就是上面p(x)取對數,前面多的n項累加和相當於把每個
以上就是我關於這個演算法的理解,歡迎各位大佬批評指正!!!
CPD輪播廣告庫的簡單演算法
在廣告的領域中,有一種廣告形式,採用的是cpd的售賣模式,為了對流量進行拆分,方會對廣告位進行輪播拆分。比如乙個廣告位,被拆成了10輪播,那麼在廣告主來預訂廣告位的時候,這個時候就可以告訴廣告主,我這邊有10個cpd的輪播可以售賣。然後廣告主a買走了其中的乙個輪播,接下來另外乙個廣告主過來,只剩下9...
關於KMP演算法的理解
上次因為haipz組織的比賽中有道題必須用到kmp演算法,因此賽後便了解了下它,在仔細拜讀了孤 影神牛的文章之後有種茅塞頓開的感覺,再次orz。附上鏈結 對於整個kmp演算法,最精髓的部分便是關於next陣列的生成。一開始ruijia liu的書上貼上的 感覺完全不能理解,但是看神犇的分析覺得似乎明...
演算法01 關於演算法的概念理解
演算法效率衡量 需要考慮機器的配置和執行環境 相同機器對比測試 因此單純依靠執行的時間來比較演算法的優劣並不一定是客觀準確的。時間複雜度實際上就是乙個函式,該函式計算的是執行基本操作的次數。乙個演算法語句總的執行次數是關於問題規模 n 的某個函式,記為分 f n n 稱為問題的規模。語句總的執行次數...