1. 程式人生 > >colmap程式碼解讀

colmap程式碼解讀

clomap是作者在ECCV2016年發表的基於兩個概率的深度值和法線估計的論文(開源),下面就開原始碼Patch_match_cuda.cu檔案做簡單的介紹

 

  1. 產生隨機法向量和隨機深度值
  2. 擾動法向量(產生隨機三個方位角度)和擾動深度值
  3. 根據畫素座標計算三維空間座標
  4. 傳播深度(Since depth θl and normal nl define a local planar surface in 3D, we propagate the depth θlprp -1 of the intersection of the ray of the current pixel xl with the local surface of the previous pixel (θl-1; nl-1))
  5. 計算入射角(當前參考影象的法向量和原始影象的光線的夾角)和夾角(當前參考影象光線和原始影象光線夾角)
  6. 原始影象和參考影象的單應矩陣

  

Step1 工作空間的初始化

讀入模型
建立緩衝區
影象下采樣(根據精度來設定取樣後的大小)
法線圖和深度圖的路徑確定
深度圖範圍確定
5.1遍歷模型中的三維點,找出這些點所對的影象ID,依次將這些點投影到對應影象的相機座標系求出對應的深度值

5.2每張影象對應深度範圍 ,升序排序深度值

最小值 = 深度值[size*0.01]

最大值 = 深度值[size*0.99]

最小值 = 最小值*(1-0.25)

最大值 = 最大值*(1+0.25)

Step2待處理的問題problem

獲取model,獲取patchmatch配置,像對個數和影象名字
構造參考影象和原始影象個數結構體
遍歷參考影象,計算重疊度(參考影象和左右原始影象的重疊度,稀疏點的角度出發)計算每幅影象夾角(用影象的投影中心和三維點構成的夾角,然後取出所有順序夾角的75%位置作為最後的夾角)
通過影象的夾角和重疊度,夾角大於閾值的情況下,重疊度按照降序排列獲取重疊度最高的20張影像作為參考影像的原始影像
Step3 獲取cuda個數(API呼叫)

Step4 初始化執行緒池

Step5 向執行緒池仍任務處理

  1. problem存放原始影象序列和參考影象(緩衝區)深度圖,法線圖
  2. patchMatchOption對應配置資訊
  3. 構造 patchMatchCuda

假設 像對 pairCount= 5

3.1按照計算能力設定最好的顯示卡

 

3.2 初始化參考影象

參考影象分配視訊記憶體、參考影象和分配視訊記憶體、參考影象平方和分配視訊記憶體

轉換行陣列,對參考影象進行濾波

濾波結果:

得到雙邊濾波後的影象,原始影象,雙邊濾波後的畫素平方

 

3.3初始化原始影象序列

 

1、顏色影象

2、深度影象

 

3.4初始化轉換矩陣

 

四個方向的內參矩陣,投影中心,相對轉換矩陣和平移向量,投影矩陣和逆投影矩陣

 

3.5初始化工作空間

隨機狀態,深度圖,根據每張影象最小值最大值範圍隨機初始化深度圖W*H,初始化法線圖W*H*3,概率圖W*H* pairCount,前一次概率圖(0.5) W*H* pairCount 初始化代價圖W*H* pairCount

開始執行patchmatch
4.1、計算初始化cost

輸入:代價圖、深度圖、法線圖、參考圖的區域性平方和,參考圖區域性雙邊權重和、空域權重、顏色權重

輸出:代價圖、深度圖、法線圖

細節:求出單應矩陣,對單應矩陣的顏色值求出NCC,NCC 的值給原始影象row col id

4.2、開始迭代

從上到下開始掃描

4.2.1、定義聯合概率函式,計算概率圖(反向資訊)和初始化前向資訊(0.5)

4.2.3 、估算出剩下行計算選擇概率

讀取反向資訊計算概率,並且修正概率

用代價圖計算和前向資訊計算alpha, betal  =概率圖

選擇概率用alpha betal   權重球的

計算入射角,夾角,影象塊面積比例對應的概率

取樣概率(ID) = f(選擇概率)*f(s1(入射角))*f(s2(夾角))*f(s3(比例))

歸一化取樣概率並計算累計分佈概率

找出產生隨機值大於累計分佈概率的ID值,累計對應的cost,對剩下的深度值計算對應的cost,找出所有cost最小值對應的深度值和法線,用新的cost來更新選擇概率圖和前向資訊

每張影像,根據深度值求出入射角和夾角,根據這些角度和概率值約束來判斷這張影像是不是穩定點,判斷這些點的個數是否滿足要求來選擇當前深度值和法向量


--------------------- 
作者:h247932449 
來源:CSDN 
原文:https://blog.csdn.net/h247932449/article/details/82770200 
版權宣告:本文為博主原創文章,轉載請附上博文連結!