Upgrade to Pro — share decks privately, control downloads, hide ads and more …

論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Materials」

論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Materials」

非DNNでのスマホカメラを用いたBRDFパラメータ取得技術の論文紹介です。
「Two-Shot SVBRDF Capture for Stationary Materials」
Miika Aittala at al. Aalto University (Finland), SIGGRAPH 2015
http://reality.cs.ucl.ac.uk/projects/two-shot-svbrdf/two-shot-svbrdf-lowres.pdf

Teppei Kurita

November 27, 2019
Tweet

More Decks by Teppei Kurita

Other Decks in Technology

Transcript

  1. 論文概要 • 「Two-Shot SVBRDF Capture for Stationary Materials」 • Miika

    Aittala at al. Aalto University (Finland), SIGGRAPH 2015 • http://reality.cs.ucl.ac.uk/projects/two-shot-svbrdf/two-shot-svbrdf-lowres.pdf • 内容 • スマホカメラからを使い2枚の画像を取得することで、画像のSVBRDFのパラメータ(および表面法線)を取得する • 肝となるアイデア:「テクスチャの相似性が高い=BRDFおよび法線の相似性も高い」 • DNN等は用いず、モデルベースの非線形最適化で解く フラッシュ画像とノンフラッシュ画像が必要
  2. アルゴリズムの概要 • グリッド上に画像を分割して、その中の1つのブロック(マスタータイル)のSVBRDFのパラメータを求める • 1ブロック求まったあとは、勾配ベースの最適化によりすべてのタイルにパラメータを伝搬させる(今回は扱わない) • 局所領域のテクスチャが類似していたら、BRDFモデルのパラメータも類似しているという仮定 • 像高が違うとハーフベクトルが変わるので、BRDFモデルの独立した式が複数個立てられる →

    パラメータFittingして解く i j Master Tile 説明のため ピックアップ 正面から光が当たっている 左上から光が当たっている 前提:光源とカメラが近い(=同じベクトルとみなせる) あるパラメータのBRDFモデルが画像内に複数存在 (=サンプルが多く集まるのでフィッティングしてパラメータが求まる) ハーフベクトル (=観測ベクトル・光源ベクトル)
  3. 処理系全体 フラッシュ画像 通常画像 各タイルの画素を マスタータイルと同 じ構造に並び替 える SVBRDFをフィッ ティングすることで 正則化、パラメー

    タを導出 高周波を修復 再度 SVBRDFを フィッティング • マスタータイルを選択 • マスタータイルと同じ構造のテクスチャを 他のタイルから取得(BRIEFでマッチング) • 各参照タイルの輝度でリライティングする • BTF(カメラは固定)を取得する • BTFからSVBRDFに圧縮する • BTFの画像群からBRDFモデルを フィッティングする • BRDFにフィッティングしたことで失わ れた高周波を復活させる • 各BTF画像の元のFlash画像から 高周波を伝搬させる • 再度BTFを SVBRDFに圧縮し 最終的なパラメータを 取得する • 法線 • 拡散アルベド • 鏡面アルベド • 表面粗さ • 異方性 入力画像 法線 拡散アルベド 表面粗さ 鏡面アルベド リライティング画像 結果画像例
  4. 処理系全体 フラッシュ画像 通常画像 各タイルの画素を マスタータイルと同 じ構造に並び替 える SVBRDFをフィッ ティングすることで 正則化、パラメー

    タを導出 高周波を修復 再度 SVBRDFを フィッティング • マスタータイルを選択 • マスタータイルと同じ構造のテクスチャを 他のタイルから取得(BRIEFでマッチング) • 各参照タイルの輝度でリライティングする • BTF(カメラは固定)を取得する • BTFからSVBRDFに圧縮する • BTFの画像群からBRDFモデルを フィッティングする • BRDFにフィッティングしたことで失わ れた高周波を復活させる • 各BTF画像の元のFlash画像から 高周波を伝搬させる • 再度BTFを SVBRDFに圧縮し 最終的なパラメータを 取得する • 法線 • 拡散アルベド • 鏡面アルベド • 表面粗さ • 異方性 入力画像 法線 拡散アルベド 表面粗さ 鏡面アルベド リライティング画像 結果画像例 ここの処理を解説する
  5. 最適化式(DATA TERM) data term cost term cost termは3種類のPrior項 data term

    cost term data term レンダリング部 ハーフベクトルh(i,j)において パラメータXでレンダリングした結果 (s,t)はブロック内の画素位置 観測データ生成部 誤差を最小化したいハーフベクトルh(i,j)においての観測データ(目標データ) 自己相似性を用いたMatchingで各ブロックの画素をTransportして生成する (s,t)はブロック内の画素位置 問題:SVBRDFのパラメータXを求める パラメータXを求めるマスタータイルのブロックサイズを h x wとしたとき 1.画素毎のSurface Normal (x・y方向):h x w x 2 2.画素毎のDiffuse Albedo (カラー):h x w x 3 3.画素毎のSpecular Luminance:h x w x 1 4.画素毎のSpecular Anisotropy:h x w x 3 5.全体のSpecular Color:2 6.全体のシェーディングの程度:1 7.全体のSpecular Pointiness(Roughness):1 求めるパラメータXについての詳細 合計パラメータ数:h x w x 9 + 4 例えばブロックサイズが192 x 192だと 192 x 192 x 9 + 4 = 331780個のパラメータを最適化する問題となる ハーフベクトル(i,j)・画素位置(s,t)毎にHuber Loss 1 2 3 4 5 6 7 h x w x 9 4
  6. DATA TERM レンダリング部 Brady[2014]のBRDFモデルを基本形とした拡張 E=[0 0 1]T z x P

    = [xp,yp,1]T p = (xp,yp) 1 0 xp h 最適化するパラメータX レンダリング画素のハーフベクトルh(i,j)によって変化する変数 ※E=[0 0 1]T この問題設定(対象が平面かつカメラと正対、更に光源とカメラが同軸と近似可能)では、 観測ベクトルおよび光源ベクトルとハーフベクトルは等しいため、このような定式化が可能 つまり、ハーフベクトルとパラメータが決まればレンダリング可能(光源・観測を分けて考える必要がないため) Camera Object ケラレ項 光量逆二乗減衰 入射角依存 (Cos項) BradyのBRDFモデルを異方性化 j i s t
  7. DATA TERM 観測データ生成部 マスタータイルMの構造を異なるハーフベクトル他タイルのilluminationでrelightingして生成する → ノンフラッシュ画像でのBRIEF特徴量でのマッチング M T2 M T2

    フラッシュ ノンフラッシュ Matching マスタータイルの一致座標に ソースタイルの画素値をtransport マスタータイルの全ての画素に対し最も一致する 各ソースタイルの画素値を計算する transport transport
  8. DATA TERM 観測データ生成部 実際にはGradientも同時にtransportして、Gradient誤差も最小になるように最小二乗問題を共役勾配法で最適化している、下はイメージ × 元画像 F X方向Gradient Gx T

    巨大な疎な連立方程式 → 共役勾配法で最適化 X(求めたい行列) 単位行列 I × 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 h 1 -1 1 -1 1 -1 1 -1 ≈ X方向Gradient Operator Dx Y方向Gradient Operator Dy AX = TFG 行列式 A Y方向Gradient Gy FG
  9. DATA TERM 観測データ生成部 AX = TFG 1 1 1 1

    1 -1 1 -1 1 -1 1 h 1 -1 1 -1 1 -1 A= h x w X= 3 h x w h x w x 3 求めたい行列 × 行列式 TFG= = 3 h x w x 3 TF TGx TGy T F × T Gx × T Gy ×
  10. 最適化実行の例 (MATLAB) AX = TFG X = pcg(A’*A, A’*TFG) 共役勾配法solver

    複素共役転置 ※ 実際はもう少しオプションがある
  11. 最適化式(COST TERM) data term cost term cost termは3種類のPrior項 data term

    cost term 問題:SVBRDFのパラメータXを求める 拡散反射の値は小さくなるように 鏡面反射輝度は小さくなるように かつ、外れ値を避けるように 法線は正対に近くなるように 鏡面反射異方性は小さくなるように かつ、外れ値を避けるように 広い鏡面反射ローブのBRDFに収束しやすくなる パラメータXを求めるマスタータイルのブロックサイズを h x wとしたとき 1.画素毎のSurface Normal (x・y方向):h x w x 2 2.画素毎のDiffuse Albedo (カラー):h x w x 3 3.画素毎のSpecular Luminance:h x w x 1 4.画素毎のSpecular Anisotropy:h x w x 3 5.全体のSpecular Color:2 6.全体のシェーディングの程度:1 7.全体のSpecular Pointiness(Roughness):1 求めるパラメータXについての詳細 合計パラメータ数:h x w x 9 + 4 例えばブロックサイズが192 x 192だと 192 x 192 x 9 + 4 = 331780個のパラメータを最適化する問題となる 1 2 3 4 5 6 7 h x w x 9 4 prior term Rp
  12. 最適化式(COST TERM) data term cost term cost termは3種類のPrior項 data term

    cost term 問題:SVBRDFのパラメータXを求める パラメータXを求めるマスタータイルのブロックサイズを h x wとしたとき 1.画素毎のSurface Normal (x・y方向):h x w x 2 2.画素毎のDiffuse Albedo (カラー):h x w x 3 3.画素毎のSpecular Luminance:h x w x 1 4.画素毎のSpecular Anisotropy:h x w x 3 5.全体のSpecular Color:2 6.全体のシェーディングの程度:1 7.全体のSpecular Pointiness(Roughness):1 求めるパラメータXについての詳細 合計パラメータ数:h x w x 9 + 4 例えばブロックサイズが192 x 192だと 192 x 192 x 9 + 4 = 331780個のパラメータを最適化する問題となる 1 2 3 4 5 6 7 h x w x 9 4 各画素毎パラメータのX方向勾配 各画素毎パラメータのY方向勾配 パラメータの空間勾配を最小化する(滑らかにする) Huber Loss smooth term Rs
  13. 最適化式(COST TERM) data term cost term cost termは3種類のPrior項 data term

    cost term cost term Ri 問題:SVBRDFのパラメータXを求める 法線のX方向に対するY方向勾配 法線のY方向に対するX方向勾配 法線のCurl量 法線のCurl量を最小化する パラメータXを求めるマスタータイルのブロックサイズを h x wとしたとき 1.画素毎のSurface Normal (x・y方向):h x w x 2 2.画素毎のDiffuse Albedo (カラー):h x w x 3 3.画素毎のSpecular Luminance:h x w x 1 4.画素毎のSpecular Anisotropy:h x w x 3 5.全体のSpecular Color:2 6.全体のシェーディングの程度:1 7.全体のSpecular Pointiness(Roughness):1 求めるパラメータXについての詳細 合計パラメータ数:h x w x 9 + 4 例えばブロックサイズが192 x 192だと 192 x 192 x 9 + 4 = 331780個のパラメータを最適化する問題となる 1 2 3 4 5 6 7 h x w x 9 4 normal curl term Ri
  14. 最適化式(全体) data term cost term cost termは3種類のPrior項 問題:SVBRDFのパラメータXを求める h x

    w x 3 x N h x w x 9 data term prior smooth normal curl h x w h x w x 2 x 9 h x w個の画素での 観測データとレンダリング結果の差 カラーかつハーフベクトルN個分 h x w個の画素での 画素毎パラメータ9個の Priorとの差 h x w個の画素での 画素毎パラメータ9個の X・Y方向の勾配 h x w個の画素での 法線のCurl 式の個数 Y = … … … … … … h x w x 3 x N h x w x 9 h x w x 2 x 9 h x w パラメータXに対する結果として 巨大な連立した非線形の 関数が定義される → レーベンバーグ・マルカート法で解く h x w x (3N + 28)
  15. 最適化実行の例 (MATLAB) fun = @(Y) f(X,Y); X = lsqnonlin(fun, x0)

    パラメータ行列X (h x w x 9 + 4) を入力したら最小化したい行列Y (h x w x (3N + 28)) を返す無名関数(実際はf(X,Y)を定義する) パラメータXの初期値(h x w x 9 + 4) 非線形最小二乗Solver ※ 実際はレーベンバーグ・マルカート法で動作させるにはオプションが必要 (あと本当は各関数での偏微分結果(ヤコビアン)を出力する関数も必要)
  16. 最適化結果の例 非線形最小二乗 SVBRDF Fitting data term 観測データ生成部の結果 SVBRDFパラメータ最適化結果 j i

    座標:ハーフベクトル 変化:画素位置 t s 座標:画素位置 変化:ハーフベクトル 求まったパラメータX
  17. 所感 • DNNを用いた手法が流行る前のモデルベースの解き方 • この年のこの論文以降、学会でのBRDFパラメータ算出はDNN一色 • 「BRDFとテクスチャの相似性は高い」という1つの仮定だけで困難な問題を解いており、非常にスマート • ただその過程が成り立たない物体も多い •

    計算時間は1枚につき数時間 • やはりデータ項生成のためのマッチングと非線形最適化のLMに非常に時間がかかる • コモンデバイスで計算できる、が用途は限られる • 2枚画像の位置合わせ、キャリブレーションも前処理で必要 • Nvidiaのサイトでオンラインで実行できるサービスが2019年まで公開されていたが、最近無くなった • ソースコード • https://mediatech.aalto.fi/publications/graphics/TwoShotSVBRDF/code_and_data.html