光度立體法重構表面
光度立體法:用一個表面在不同光照條件下所拍攝的影像序列來重構這個表面快的形狀
本文討論的為採用正交投影攝像機,並且選擇點(x,y,z)→(x,y)。也就是,只要找到(x,y)對應的畫素值f(x,y)即可。表面可以用(x,y,f(x,y))表示,稱作monge表面,因為法國一個軍事工程師先採用這種方法,為了紀念他而已
所以我們的目標就是:獲得表面的深度(高度、畫素值)
1、假設沒有環境光,且點光源到表面的距離遠遠大於表面的尺寸。則表面一點P處的光通量
B(p)=ρ(p)N(p)·S1 (1)
其中N表示法向量,S表示光源向量。我們所用的攝像機模型中,每一個點對應一個表面點P,所以可以使用B(x,y)來表示B(p),在假設攝像機對錶面光通量的響應是線性的,則在(x,y)處的畫素值為:
l(x,y)=kB(x,y)=kρ(x,y)N(x,y)·S1=g(x,y)·V1 (2)
其中g(x,y)描述表面,V1是有關照明與攝像機屬性的一個量。所以只要能得到較多的g(x,y)·V1,便可以重構g以及表面。
2、由多個檢視獲取表面法線與反射率
若我們已知n個光源對應的V1,可以將Vi重疊到一個矩陣V中,而且這個矩陣是已知的
對於每一個影像點,也可以將其度量值寫成一個向量形式
每個影像點有一個向量,每個向量包含了該點在不同光源條件下觀察到的所有影像亮度值。有:
i(x,y) = Vg(x,y) (3)
通過解這個方程可以得到g,影像中每一個點有一個線性系統,一般要求n>3,這樣可以得到最小二乘解。
為了對付陰影也就是表面的陰影,可以用影像向量生成一個矩陣,用次陣左乘(3),得到
T i = T V g(x,y) (4)
其中 ,因為T陣對應陰影的元素為0,所以T可以消除陰影
度量反射率:因為N是單位法向量,所以從g中可以提取出反射率,也就是|g(x,y)| = ρ(x,y)。因為反射率取值為0-1,所以任何畫素|g|大於1的都值得懷疑。
回覆法向量: 因為法向量是單位向量,他也可以從g中得到
(5)
3、由法線獲取表面形狀
由於表面表示為(x,y,f(x,y)),所以法線是(x,y)的函式:
(6)
為了恢復深度圖,需要從單位法向量度量值來確定f(x,y).
假設在某點(x,y)的法向量的度量值(a(x,y), b(x,t), c(x,y)),則
(7)
而且,理論上有,所以我們可以依據判斷是否接近0來進行檢驗。
4、通過積分求取形狀
假設偏導數通過測試,就可以在保留一個常深度偏差的條件下重構出該表面,偏導數給出沿x,y方向走一小步時候的表面高度變化,因而通過沿著某種路徑累計高度的變化值來得到表面的形狀。也就是:
(8)
其中C是從某一個固定點(x,y)的一條曲線,c是一個積分常熟,它表示在起點處的高度。
例如我們從(0,0)開始重構在(u,v)的表面,先從(0,0)沿著x=0到點(0,v)的線對y進行積分,然後沿著y=v到點(u,v)將x求和,既:
(9)
這只是一種積分的方法,其他沿著任何閉合曲線的積分,最後結果一樣。
總的來說,如圖:
相關文章
- Halcon表面缺陷檢測-光度立體法
- 光度立體法總結
- Halcon表面缺陷檢測-光度立體法檢測藥片包裝背面的缺陷
- Halcon-表面檢測-----確定光度立體法系統的光源的方向
- Halcon 光度立體法 例程學習總結
- halcon——缺陷檢測常用方法總結(光度立體)
- Halcon6:三維重建和光度立體視覺視覺
- 研究光度立體法階段性小結和最佳化(可20ms獲取4個2500*2000灰度圖的Normal Map)。ORM
- 三體人:不要重構
- OJ-1011:圓柱體表面積、JavaJava
- 面向體驗的重構優化優化
- 如何建立架構師的立體化思維?架構
- C++語法-結構體C++結構體
- 擁抱零信任理念,重構安全體系架構架構
- Leetcode 892. 三維形體的表面積 python 版本LeetCodePython
- 重構
- “ 超高層住宅”畫像:立體山城重慶2200幢排名第一
- 2020 重學 C++ 重構你的 C++ 知識體系C++
- 程式碼重構之法——方法重構分析
- 表面劃痕檢測方法
- 重學C語言_資料結構與基礎語法C語言資料結構
- C#機房重構之註冊窗體C#
- 原型重構原型
- 即構SDK新增變聲、立體聲、混響三大功能
- 重構-改善既有程式碼的設計(四)–構築測試體系
- 數字貨幣可能重構全球貨幣體系
- 重構之路:webpack打包體積優化(超詳細)Web優化
- word怎麼製作立體文字?word立體文字的具體制作方法
- 程式碼重構:類重構的 8 個小技巧
- win10無法關機一直重啟怎麼辦_win10關機立馬自動重啟解決方法Win10
- 軟體開發丨關於軟體重構的靈魂四問
- Kruskal 重構樹
- Kruskal重構樹
- Android 重構方案Android
- 瞭解重構
- 出庫重構
- Echarts立體柱狀圖Echarts
- 程式碼重構:函式重構的 7 個小技巧函式