發表文章

目前顯示的是 8月, 2018的文章

Bundle Adjustment 光束平差法

圖片
Bundle Adjustment(BA) 光束平差法 Bundle Adjustment是什麼:         又稱為光束平差法在三維重建裡常使用的優化技術,當我們透過SFM成功計算出點的三維空間座標,但是隨著影加入的影像越來越多,累積的誤差也將無法忽視,影響最終的重建效果,因此需要BA優化。         假設有一個3D空間的點,他被不同位置的攝影機拍攝,那麼BA就是能夠從這些不同視角訊息中提取出.D點的座標以及各個相機的相對位置和光學訊息。對任意三維點P,由從每個攝影機的光心射出來並且經過圖像P對應的像素後產生的光線,都將會交於P點,對於所有三維點,會形成相當多的光束(bundle)。因為實際上會有許多noise存在,每條光線幾乎不可能匯聚於一個點,因此在重建的過程中,需要不斷進行調整(adjustment),使得同一個3維點P的光束能匯聚於點P。 Bundle Adjustment的目標: 最小化重投影誤差 (圖源:http://www.cnblogs.com/Jessica-jie/p/7739775.html) 重投影即為第二次投影: -第一次投影就是相機拍照時,三維空間的點投影到照片上 -我們透過這些影像進行SFM,特徵提取、三角定位等方式建構三維空間點的位置 -最後利用我們計算得到的三維點的座標,和我們計算出的相機參數,進行第二次投影,也就是重投影。 重投影誤差: 指的是真實的三維空間點在圖像平面上投影(也就是圖像上的像素點)和重投影(我們計算的虛擬像素點)的差值。因為真實的值和計算得到的值不可能是完全相符的,因此需要將這些誤差最小化。 reference: 簡介 https://blog.csdn.net/yaoweijiao/article/details/53056439 https://blog.csdn.net/Kevin_cc98/article/details/69815661 重投影誤差 http://www.cnblogs.com/Jessica-jie/p/7739775.html 待整理資料 https://blog.csdn.net/Kevin_cc98/article/d

[Unity] Editor Windows 物件編輯器

選擇prefab母物件 會自動讀取子物件 在Asset新增Editor資料夾,把editor windows的程式碼放到此資料夾 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class Fenetre : EditorWindow {     Vector2 scrollPosition = Vector2.zero;     private float scale_X = 1;     private float scale_Y = 1;     private float scale_Z = 1;     private float rotation_X = 0;     private float rotation_Y = 0;     private float rotation_Z = 0;     private float position_X = 0;     private float position_Y = 0;     private float position_Z = 0;     private float[] ScaleArray_X = new float[100];     private float[] ScaleArray_Y = new float[100];     private float[] ScaleArray_Z = new float[100];     private float[] PositionArray_X = new float[100];     private float[] PositionArray_Y = new float[100];     private float[] PositionArray_Z = new float[100];     private float[] RotationArray_X = new float[100];     private float[] RotationArray_Y = new floa

Structure From Motion

圖片
Structure from motion 簡介 1.SFM介紹 2.SFM整體流程 3.特徵點提取 4.特徵點匹配 5.初始像對  6.3D重建 7.bundle adjustment 8.SFM 工具介紹 1.SFM介紹 SFM為透過相機的移動來確定目標的空間和幾何關係,是一種3D重建常見的方法,與Kinect這種有3D攝影機最大的不同: 只需要普通的RGB相機即可,成本較低 較不受環境約束(地形、陽光) 但SFM背後需要複雜的理論和計算,再精確度和速度上都還有待提升。 2.SFM整體流程 (圖源: https://blog.csdn.net/qq_20791919/article/details/74936438 ) (圖源:https://blog.csdn.net/Mahabharata_/article/details/70799695) 3.特徵點提取 為了要進行影像的匹配,需要在影像中選擇具有代表性的區域,例如:影像中的角點、邊緣等,容易識別的區塊,尤其是角點的辨識度最高 常使用的特徵提取方法,且open有提供函式庫     -SIFT     -SURF 4.特徵點匹配 -兩個影像之間進行SIFT特徵點進行匹配     -KDTree對最近的特徵點進行匹配 -建立匹配系統後,生成track列表(同名點)     -如果一個track包含同個影像多次,表示此匹配關係有誤,          因為同個影像的多個特徵點都匹配到同個點     -如果track少應該剔除,通常track為2,視為資訊太少,3D          重建容易產生錯誤 5.初始像對  -計算內點     -採用RANSC 計算單應矩陣     -滿足單應矩陣的匹配點稱為內點     -內點佔的比例越高,低視差現象越明顯 -選擇初始像對     -匹配特徵點要足夠多     -選擇內點數量少,但又不少於100個的影像       (防止兩個影像的視角過於接近) 6. 3D重建 -取得相機參數     -外參         -計算本征矩陣,進一步求出R、T矩陣     -內參         -焦距,光心位置 -利用以上的R、T矩陣與影像的匹配關係還原三維