在前兩篇文章中,咱們介紹了三角化恢復深度信息,並對三角化過程當中的偏差進行了分析和討論。spa
今天,咱們就進入咱們這個系列的正題:深度濾波器的原理及實現。blog
一提到深度濾波器,你們確定首先會以爲深不可測,聽名字就以爲高大上。其實,有了前面的預備知識,不難理解今天要講解的深度濾波器的原理。原理
咱們今天給你們介紹的是比較簡單的高斯分佈假設下的深度濾波器。im
高斯分佈是天然界中最多見的一種分佈形式,而且也符合絕大部分的天然狀況。簡單起見,咱們先假設三角化後恢復的深度值符合高斯分佈。對於像素點的深度值d,知足:數據
P(d) = N(μ,σ2)img
每當新的數據過來,咱們就要利用新的觀測數據更新原有的深度d的分佈。e2e
這裏的數據融合的方式與經典的Kalman濾波方式大同小異。思考
這裏,咱們利用觀測方程進行信息融合。解決方案
假設新計算出來的深度數據的分佈爲:co
P(dobs) = N(μobs,σobs2)
咱們將新計算出來的深度數據乘在原來的分佈上,進行信息融合的更新:
咱們知道,利用兩個高斯分佈的乘積的分佈公式,能夠獲得融合後的高斯分佈:
P(dfuse) = N(μfuse, σfuse2)
其中,
那麼問題來了,這裏的μobs,σobs2該如何才能獲得呢?
這裏的μobs實際上就是每次咱們新三角化出來的深度值,而對於σobs2,若是你還對上一篇文章有印象的話,就會記得咱們推導了一系列公式所獲得的那個 δp(不肯定度σobs),若是你忘記了,能夠回去上一篇文章再複習一下。
那麼原始的分佈μ,σ2該如何獲得呢?
這個很簡單,第一次三角化出來的μ,σ2就能夠做爲初始值,而後每次新三角化出一個三維點,就去更新深度值的分佈。
至此,咱們彷佛獲得了一個不錯的結果:既簡單又優美的公式。
實際上還會存在什麼問題呢?
(1)實際的深度值分佈是否真的符合高斯分佈?
(2)若是咱們中間過程有一次三角化的過程求錯了,而且還進行了信息融合,會有什麼後果?
(3)咱們如何避免第二個問題中所提出的狀況?
這些問題留給讀者去思考,也歡迎在下方給我留言,一塊兒探討這些問題的解決方案。
下篇文章我將會帶着你們一塊兒分析一下高博的單目稠密重建的代碼,有了前三篇文章的理論鋪墊,相信你讀起來下一篇文章中的代碼會如魚得水。
咱們下一期再見!