發表文章

目前顯示的是 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矩陣與影像的匹配關係還原三維

Win10+python3.6+Cuda9.0+Cudnn7.05+Tensorflow-gpu 1.8.0+Keras

圖片
python python3.6 之前使用VScode安裝 點選安裝套件圖示=>點選python==>點選安裝 Cuda9.0 前往NVIDIA的cuda下載頁面 https://developer.nvidia.com/cuda-downloads 選擇windows 挑選好你的電腦需求並下載 安裝的時候並不會有太大問題,一開始會有系統檢查,檢查完即可安裝。 選擇自訂==>只勾選<cuda> Cudnn7.0.5 前往cudnn下載頁面 https://developer.nvidia.com/cudnn 點選下載cudnn 需要登入才可下載,可以註冊帳號或是使用goole帳號都可以 勾選 I Agree To the Terms of the cuDNN Software License Agreement 點選下方  Archived cuDNN Releases  選擇其他版本 確認版本是否正確==>點選win10版本的lib 下載之後解壓縮cuDNN檔案,將資料夾底下的所有檔案複製 複製到CUDA的路徑 大概會在這裡:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 設定環境變數 這兩個是安裝完CUDA後 已經自行設定好的了 我只在變數PATH新增這兩個 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64 tensorflow-gpu 1.8.0 直接使用cmd安裝 tensorflow-gpu 1.8.0即可 Keras cmd直接安裝即可 pip install keras 顯卡driver  請根據你的顯卡版本,到NVIDIA網站下載dirver,更新到最新版,比較不會出現版本上的問題

virtual box5.2.14+ubuntu16.04.4+theano+tensorflow1.8.0+keras

圖片
pokerCNN project  ubuntu16.04.4 建置 第一步: 虛擬機 virtual box https://www.virtualbox.org/wiki/Downloads 下載當前最新版本 virtual box 5.2.14 platform packages 直接安裝即可 第二步: 虛擬機安裝ubuntu 至 Ubuntu 正體中文站 下載ubuntu 選擇好以上選項點選 開始下載 即可下載 下載好之後開啟virtual box  點選 新增  輸入此虛擬機的 名稱 和要安裝的 系統類別 自行決定 記憶體大小 (我調整為4G) 建立 虛擬硬碟 儲存方式為 VDI磁碟映像檔 動態配置 虛擬機的 硬碟大小 (建議至少30G以上) 點選 啟動 之後 選擇剛剛下載的ubuntu安裝檔 即可開始安裝 --------------------python------------------------- sudo apt update sudo apt upgrade sudo apt install python2.7 python-pip --------------------------------------------- -------------------------------------------theano-------------------------------------------- sudo apt-get install -y python-dev python-pip python-nose gcc g++ git gfortran sudo apt-get install -y libopenblas-dev liblapack-dev libatlas-base-dev sudo pip install numpy sudo pip install scipy sudo pip install theano ---------------------------- ----------------------