要約
この記事では、最も正確な散乱モデルを得るために、OpticStudioのABgモデルの係数を部分的なBRDF測定からフィッティングする方法について説明します。この問題の2つの側面である、係数のフィッティングとTIS問題の管理について検討します。
著者: Benoit Moulin
ケーススタディの概要
Zemax OpticStudioでは、光学系の散乱をシミュレーションするために様々なモデルを使用しています(参照OpticStudioではどのような散乱モデルが利用可能か?)。最も正確なモデルは明らかにBSDFモデルです。完全なBSDFモデルは、full motorizedゴニオメータベンチを使用して記録データから設定することができ、サンプルの実際の挙動を正確にモデル化できます。
これらのデータを提供することが困難な場合があります。たとえば、測定が複雑でコストがかかる、データが部分的または不正確であるなどです。そのため、このような場合は、より単シンプルなモデルを使用する方が簡単です。
ABgモードの説明
ABgモデルについては、ヘルプファイルの [セットアップ (Setup)]タブ ... [エディタ (Editors)]グループ([セットアップ (Setup)] タブ)... [ノンシーケンシャルコンポーネントエディタ (Non-sequential Component Editor)] ... [ノンシーケンシャル概要 (Non-sequential Overview)] ... [散乱 (Scattering)([ノンシーケンシャル概要 (Non-sequential Overview)])... [使用可能な散乱モデル (Available Scatter Models)] を参照してください。
\(\text{BSDF}(x) = \frac{A}{B+\left | x \right |^g}\)
ここで、xはサンプル面に投影された反射光線と散乱光線の間のベクトルで、A、B、gはモデルのパラメータです。
上の図では、光線は面の法線に対してある角度で面上に入射しています。反射光線(単純化のために反射のみで表示されています。)と散乱光線の両方をトレースします。
- βoは表面への反射光線ベクトルの投影(単位ベクトルではない)
- βは表面への散乱線ベクトルの投影(単位ベクトルではない)
- X = β0 -β
- θsは散乱線と表面法線の角度です。
- θrは反射光線と表面法線の角度です。
ABgモデルは、xが増加するときのBSDF値の非常に単純な進化を与えます。 多くの応用例では、散乱角が反射線から遠くなると散乱が一般的に低下するため、このモデルで実際の散乱サンプルをモデル化するのに十分です。
gはx >> 0のlog-log空間における直線の傾きです(上記参照)。
Aはこの線の原点です。
A/Bは鏡面反射部、またはx ~ 0の平坦な線の値です。
\(\log(\text{BSDF}(x)) = \log(A) - \log(B+\left |x \right |^g)\)
When x >> B, \(\log(\text{BSDF}(x)) \sim \log(A) - g\cdot \log(\left |x \right |)\)
ABg係数のフィッティング
この応用例では、BSDFデータは、4入射角(0 °、20 °、40 °、60 ° )および単一の方位角(入射角20 °、方位角30 ° )のサンプルのBRDFデータのみを使用して部分的に構成されています。入射0 °の反射データは不明で、出現角度70 °を超えるデータはありません(emergence angleθ rは、反射光線と表面法線の間の角度です)。
log-log空間にデータをプロットすると、きれいな線形進化が見られます。 したがって、ABgモデルはこれらのデータにフィッティングする良いモデルであるはずです
この値をScilab/Matlabスクリプトにフィッティングして、A、B、g係数を取得します。
Xは角度から計算されます:(ここでは単一のphi角に対して)
function x=xABg(th0, th, phi) //th0 = incidence, th = emergence, phi = azimuth
for m=1:length(th0)
for n=1:length(th)
x(m,n)=sqrt((sin(th(n))*cos(phi)-sin(th0(m)))^2+(sin(th(n))*sin(phi))^2);
end
end
endfunction
各入射角については、A、B、gはBRDFデータの線形回帰をフィッティングします。このスクリプトは多項式にフィッティングするpolyfit関数を使用します。ここでは、一次多項式はy=ax+bを使用します。
function [A, B, g]=ABg_fit(x, brdf)
%%sort arrays values to get arrays with x growing
[x,k]=gsort(x,'g','i');
for i=1:length(k)
brdf2(i)=brdf(k(i));
end
j=1;
%%suppress 0 values from brdf
for i=1:length(brdf2)
if brdf2(i)<>0 then
brdf3(j)=brdf2(i);
x2(j)=x(i);
j=j+1;
end
end
%%linear fit in log-log space excluding weak x values (here only the first value)
p=polyfit(log10(x2(2:$)),log10(brdf3(2:$)),1);
%%calculus of coefficients
g=-p(1);
A=10^p(2);
B=A/brdf3(1);
endfunction
注:入射角0°の未知の鏡面反射の特殊な場合は、手動で他の角度からA/B比を推定することで解決できます。
TISおよびOpticStudioシミュレーションメカニズム
TISは「全積分散乱」です。これは、入射エネルギーの一部であり、全ての散乱角を考慮して散乱されます。
$$\text{TIS}(\theta_i,\phi_i)=\iint \text{BSDF}(\theta_i,\phi_i, \theta,\phi)\cos\theta\sin\theta \,d\theta \,d\phi$$
ほとんどの散乱モデルでは、OpticStudioは散乱BSDFデータを正規化して、一般的にモデルのユーザー入力である「Fraction to scatter」パラメータに等しいTISを取得します。以下はランバーシアン散乱パラメータの場合です:
ABgモデルでは、「Fraction to scatter」パラメータは使用できません。OpticStudioは、すべての非散乱エネルギー(1-TIS)の重みで自動的に鏡面光線を追加します。
BSDF測定のデータをフィッティングする場合、TISは反射を含むすべての透過率/反射率エネルギーの一部である可能性が高くなります。BSDFデータでは、非散乱エネルギーはサンプルに吸収されたものとみなされます。
TIS < 1でフィッティングされたABg係数を使用すると、ソフトウェアによってシミュレートされた散乱パターンの鏡面部分を過大評価ことができます。
表面反射率、透過率、吸光度を定義するコーティングツールを使用して、サンプルの吸収をモデル化できます。たとえば、コーティング「SAMPLE_ABSORB」はキーワード「TABLE」で定義されます。これは、入射エネルギーの20%を反映し、0%を透過するサンプルを定義するもので、入射エネルギーの80%を吸収します。
TABLE SAMPLE_ABSORB
ANGL 0
WAVE 1 0.2 0.2 0 0 0 0 0 0
OpticStudio光線追跡手順では、光線はまず表面と相互作用し、次にコーティングパラメータによって重み付けされたエネルギーを使用して反射光線と透過光線を生成します。そして、その光線は散乱され、散乱モデルパラメータによって重み付けされた複数の光線を生成します。
コーティング手順が散乱手順から分離されているため、OpticStudioは散乱手順でエネルギーを吸収できません。したがって、コーティングを行っても、鏡面反射は過大評価され、散乱は過小評価されます。これは、コーティング手順でエネルギーが失われるため、エネルギーの散乱が少なくなるためです。
正確なモデル化を実現するためのTISの適応
データから正確なモデルを得るためには、TIS値を考慮してフィッティングプロセスを適応させ、TIS = 1、または可能な限り1に近い値を得るためにデータを補正する必要があります。OpticStudioのフィッティングプロセスは、2つの光線追跡手順が適切な散乱モデルにつながるように、OpticStudioの手法を遵守する必要があります。
まず、前述の方法でデータをフィッティングさせると、A、B、gパラメータの最初のセットを得られます。これらのパラメータから、最初のTIS値を計算できます。
function tis=TIS(A, B, g, th0, dth, dphi)
%A,B,g are parameters, th0 incidence angle, dth and dphi the numerical integration depth.
%initiate angle arrays
th=0:dth:%pi/2;
phi=0:dphi:2*%pi;
%calculus of x and product cos(theta)*sin(theta) for each angle
for m=1:length(th)
for n=1:length(phi)
x_tis(m,n)=sqrt((sin(th(m))*cos(phi(n))-sin(th0))^2+(sin(th(m))*sin(phi(n)))^2);
cossin(m,n)=cos(th(m))*sin(th(m));
end
end
%integration of the resulting arrays
tis=sum(A./(B+x_tis.^g).*cossin)*dth*dphi;
endfunction
このTIS値は保存されます。これは、コーティングテーブルデータの反射率値になります。次に、入力データをTIS値で除算します。これにより、BRDFデータ値が大きくなり、吸収を伴わないBRDF値と見なすことができます。
最後に、新しいBRDFデータをフィッティングして、A、B、g係数の新しいセットを見つけます。これらの係数の新しいTIS2値は1であるか、実際には1に近い値でなければなりません。
このようにして、OpticStudioの入力データを吸光度と散乱の別々のデータに取り込むことができます。散乱面のパラメータはABg、ライブラリタブのABg散乱カタログ(Scatter Catalog)エディタに追加され、TABLEテーブルコーティングはコーティングカタログ(Coating Catalog)で定義されます。
TIS計算の精度は積分の深さに大きく依存します。OpticStudioに値を入力すると、ソフトウェアの計算とスクリプトから生成された値の間に小さなギャップを見つけることができます。TISが1を超える場合(例:1.00002)、OpticStudioはその値を受け付けません。 1.00002), OpticStudio does not accept the value. Aの値を少し調整してTISを1より僅かに小さくすることもできます。
実験データとシミュレーションデータ
モデルを確認するために、OpticStudioを使用してBRDF測定をモデル化します。ノンシーケンシャルモードでは、断続的なコリメートされた線源がサンプル表面に向かって光線を生成します。サンプルの周囲に設置された検出器は、サンプルからの散乱放射を測定します。検出器の許容角度は、181ピクセルで-90 °から90 °で、ラディアンスモードで使用すると1 °の輝度分解能が得られます。
光源の入射率を修正するには、マルチコンフィグレーションエディタを使用します。
メリット関数は、BRDF係数を自動的に計算するように構築されています。NSDDオペランドは、実線角度あたりの最大流束を取得します(pix= -1(最大値)、data= 2(流束/実線角度))。
BRDF は \(sr^{-1}\) 単位の放射照度/放射照度として定義されます。 .
光源のパワーは1Wです。
検出器の表面はサンプル表面に等しくなります。
したがって、BRDF値を得るためには、NSDD値を出現角のコサインで割る必要があります。これは、検出器から見たサンプルの見かけ面積の変化を考慮します。
フィッティングの結果は実線で表示され、測定は交差点です。このモデルは、反射光線から遠く離れた場所を除いて、正確に測定されたデータにフィッティングしています。これは部分的には光線追跡の精度に起因しており、より多くの光線が追跡されるほど、鏡面光線から遠く離れた散乱のシミュレーションはより正確です。
これは、シミュレーションの5倍と25倍の光線を持つ同じグラフです。
測定データとシミュレーションデータの間には、モデルそのものに起因するギャップが残っています。
ABgモデルには3つのパラメータのみがあります。測定されたBRDFに正確にフィッティングすることはできません。多くの場合、散乱の正確なモデルを得る必要はありません。実際の散乱の十分な桁に近い散乱シミュレーションで十分です。ここで見つけたモデルは、「1桁の大きさ」よりもはるかに正確です。
興味深いことに、30°方位角プロット(紫)がABg係数にフィッティングしていないことがわかります。それでも、これらのデータは正確にフィッティングしています。これがABgモデルの強みです。BRDFはXファクターにのみ依存しますが、これは多くの散乱パターンに対して正確です。
ABgモデルを使用する前に、ABg係数のフィッティングセクションの冒頭で説明したように、BRDF測定値がLog-Logスペースで正しく直線的にフィッティングできることを確認してください。場合によっては、データはさまざまな斜面を持つ線形挙動の一部を示しています。複数の散乱パターンを重ね合わせることができる「ABgファイル」のおかげで、ABgモデルを使用できます。ABgファイルの詳細については、複数のABgプロファイルを使用してオブジェクトの表面散乱プロパティを定義する方法を参照してください。
結論
ABg散乱モデルは、散乱効果をシミュレートするためのシンプルで強力なツールです。この記事では、モデルのパラメータを部分的なBRDFデータセットにフィッティングさせる方法を説明しました。次に、OpticStudioでモデルのTISの側面を調べます。これは、吸収、反射、散乱を正しくシミュレートするために注意して対処する必要があります。最後に、実際のBRDFデータのフィッティング結果と、OpticStudioでのBRDF測定のシミュレーションの概要を確認します。
参考文献
About BRDF measurements: Potin & al. Ap. Optics 2018, SHADOWS: a spectro-gonio radiometer for bidirectional reflectance studies of dark meteorites and terrestrial analogs: design, calibrations, and performances on challenging surfaces
About ABg scattering model: Approximated Scatter Models for Stray Light Analysis, Richard N. Pfisterer
コメント
記事コメントは受け付けていません。