[51] ディテクタのノイズ対策_ノンシーケンシャル光学系の最適化 (1)

OpticStudio

こんにちは。光学、光でのお困りごとがありましたか?

光ラーニングは、「光学」をテーマに様々な情報を発信する光源を目指しています。情報源はインターネットの公開情報と、筆者の多少の知識と経験です。このページでは、OpticStudioノンシーケンシャルモードで使用する、ディテクタオブジェクトのノイズ対策について説明します。

結論

  • 光線の厳密な座標を出力するシーケンシャルモードに対して、ノンシーケンシャルモードはディテクタを構成する有限サイズのピクセルに入射した光線の合計値を出力します。
  • 完全な乱数を用いて光線を生成する場合、1ピクセル当たりの入射光線本数が400本でノイズ比5%、1000本でノイズ比3.16%です。これ以上のノイズ比の低減は、実測の精度から見て重要でない場合が多いです。
  • ディテクタのノイズは不可避ですが、低減する機能がいくつかあるので、必要な精度と併せて組み合わせて使うと良いです。

このページの使い方

このページで参考にした技術記事(ナレッジベース)は、ノンシーケンシャル光学系を最適化する方法 です。この記事は、OpticStudioのノンシーケンシャルモードの最適化に関連する機能を紹介する入門記事になります。

このページでは、ナレッジベースで使われている光学用語、技術用語、前提知識について、もう一歩踏み込んだ説明を加えていきます。ナレッジベースの長さは記事によってまちまちなので、いくつかのブロックに分けて注釈を加えています。この記事は1番目です。

ディテクタオブジェクト (Detector Object)

この技術記事の最初は、最適化アルゴリズムのDLSとODのどちらを使用するのが良いか、という大事な内容が説明されています。DLSとODについては、最適化は下山?DLSとOD_Zemaxコミュニティ注目トピック (10) を参照してください。結論、ノンシーケンシャルモードの最適化であれば、まずはODがおすすめです

ディテクタのピクセル数

ノンシーケンシャルモードの大きな特徴として、「光学性能はディテクタオブジェクトから出力される離散的なデータから算出される」があります。ディテクタは有限の大きさを持ったピクセルの集合体で、一つ一つのピクセルは「光線が〇〇本、エネルギーが△△ワット入射しました。などなど」の情報をOpticStudioに報告します。OpticStudioはピクセルからの報告結果をまとめて、ディテクタ全体の数値を計算して私たちに報告します。そのため、光線ごとの詳細な情報は、ディテクタのピクセルに入った時点で覆い隠されてしまいます。(情報が失われているわけではないので、必要な操作を行えば光線の詳細な情報も取得できます。)

一方シーケンシャルモードは、一本一本の光線の詳細、「光線Aは像面のx=12.3456…, y=23.4567…, z=3.4567… の位置に、l=0.XXXX…, m=0.YYYYY…, n=0.ZZZZZ の角度で入射しました。などなど」の情報がOpticStudioに報告されます。曲率半径など光学系のパラメータが変われば、光線情報は連続的に変化します。

図 51-1 左のシーケンシャルは光線ごとの座標を見るが、右のノンシーケンシャルはピクセルの値を見る。

OpticStudioノンシーケンシャルモードでは、ディテクタのピクセル数を私たちがほぼ任意に決めることができます。ディテクタ(面)とディテクタ(極)には制約があり、オブジェクトディテクタはピクセル数を指定できません。例えば、ディテクタ(矩形)のような四角形のディテクタは、X方向とY方向とでピクセル数を変えることができるので、軸方向に応じて分解能を調整することもできます。

ディテクタを設定するとき地味に困るのが、ピクセル数です。エネルギー分布の詳細を確認するにはピクセル数を多くすればよいですが、後述するノイズによってビューアで得られる結果はザラザラになります。十分な光線本数が到達するようにしないと、逆に詳細な分布情報は得られなくなります。分布の解像度、ノイズ、計算時間のバランスをとる必要があります。

図 51-2 ディテクタに現れるザラザラ。ザラザラが強いと、実際には視認できるムラに気づきにくくなる。

ピクセル数に正解はない

結局は解析したいモデルや解析内容によっていい塩梅のピクセル数は異なってきますので、まずは光線追跡を実行して確認します。参考までに、筆者はディテクタ(矩形)を設置したとき、とりあえず50×50、もしくは51×51にします。奇数ピクセル数にする場合は、ディテクタの中心を通る1行、もしくは1列の断面が取得したいときです。

ピクセル化によるノイズ

光線本数を変えずにピクセル数を増やすと、ディテクタビューアの結果がザラザラになってしまい、そこから得られる数値が信頼できなくなります。このザラザラの原因は統計上のノイズで、原理的に避けられません。踏み込んだ内容は、照明設計で使用するディテクタ > 分解能とノイズに関するコメント (Zemax技術記事) で知ることができます。ざっくりまとめると、

  • 1ピクセルに到達する光線数をNとすると、統計ノイズは√Nで、SNRはN/√N=√N。
    • 100×100ピクセルのディテクタに光線100万本が入れば、信号は100万本/1万ピクセル=100、ノイズが√100=10、よって10/1000からノイズ比 10%
    • 光線1000万本が入れば、信号は1000万本/1万ピクセル=1000、ノイズが√1000=31.62、よって31.62/1000からノイズ比3.16%。
  • 実測されるノイズ比は最高でも2%程度なので、シミュレーションでこれ以下のSNRを目指すことの意味はほとんどない

筆者が初期値でよく使う50×50で、周辺部はマージンとして25×25=625ピクセルに光線が分布していると仮定します。SNRが約5%のシミュレーションが実行したいなら、25万本の光線が625ピクセルに入射するようにします。すると、ピクセル当たりの信号(S)は250,000/625=400、ピクセル当たりのノイズ(N)は√400=20、ノイズ比は20/400=0.05 → 5%になります。

図 51-3 ショットノイズの計算例。乱数でランプリングした一様光線でノイズ対策なしのディテクタの場合。

この計算は、「完全な乱数で生成した光線」で「ディテクタを一様に照明」した場合を想定しているので、あくまで目安になるかと思います。エネルギーに分布があるなら、光線が少ない領域はやはりノイズが大きくなります。

ちなみに、技術記事で説明されている統計的なノイズは「ショットノイズ」です。例のごとく、光ラーニングは詳細は踏み込まないので、他のページを参照してください。例えば、Wikipedia[1]石島先生の研究室ページ[2] (光学のトピックも公開されておりおすすめ)、物理学のフィロソフィア[3] (個人様のサイト)あたりが参考になると思います。

ピクセルの補間

技術記事で紹介されているピクセルの補間は、ディテクタオブジェクトのプロパティを開き、タイプタブの右側にオプションが設置されています。この機能の説明は「光線が到達したピクセルにその光線のエネルギーをすべて割り当てるのではなく、ピクセルの中で光線が到達した位置に基づいて、そのエネルギーの一部を隣接するピクセルに配分します。」となっています。イメージは、ピクセル中心からの距離の比率に応じてエネルギーを分割します。これによって、どのくらいSNRが改善されるのでしょうかね。。。。さて、次の説明に移ります。

図 51-4 ピクセル補間の計算。光線座標とピクセルの中心距離に応じてエネルギーが分配される。

ノイズを低減する他の方法

技術記事にもあるように、ピクセル補間はノイズ対策として、ピクセル自体の大きさによる不連続性を抑制する有効な手段です。OpticStudioには、他にもノイズを低減する方法や機能があります。筆者の知っている範囲で紹介するので、ディテクタの分布がザラついて困っている場合は試してみてはいかがでしょうか。

解析光線本数を増やす or ピクセル数を減らす

直観的かつ簡単なノイズ低減方法はやはりこの2つです。解析光線本数を増やすデメリットは計算時間なので、時間が気にならない範囲で増やして問題ありません。ノイズ低減のためには、最終的にディテクタに到達する光線本数を増やすのが目的になるので、適宜機能を使い分けるのが良いでしょう。光源オブジェクトから出射するおおもとの光線数を増やす以外にも、散乱光線を増やす方法や、光線の分割で増やす方法などがあります。光線を散乱させる設定については、OpticStudioでの散乱設定_Zemaxコミュニティ注目トピック (5) を参照してください。

ディテクタのスムージング機能

ディテクタオブジェクトのパラメータ、もしくはディテクタビューアに、「スムージング」という機能があります。この機能はあるピクセルの数値を、「自分および自分を囲うピクセルの合計9ピクセルの平均値に置き換える」平均化によってノイズを低減します。スムージングは回数を増やすことができて、指定した回数分だけ同じ処理が行われます。欠点は、照明エリアのエッジがぼけることで、使いすぎに注意します。

図 51-5 スムージング機能の処理。すべてのピクセルで同じ平均化が行われる。

ディテクタオブジェクトのミラーリング機能

ディテクタ(矩形)とディテクタ(色)のパラメータのだいぶ右側には、ミラーリングオプションがあります。これは、光学系の対称性を利用します。ディテクタの結果を折りたたんで重ね合わせることで、実際に追跡した光線本数の最大4倍の光線を追跡した場合と同じノイズ状態が得られます。

図 51-6 ミラーリングの処理。ディテクタを折り返して光線情報を共有する。

ソボルサンプリング

意識せずに使っている機能が、ソボルサンプリングです。これはディテクタではなく、光線を生成する光源側からのノイズ対策です。一言でいえば、純粋な乱数で生じてしまう光線の局所的な偏りを回避する、空気を読んだ疑似乱数を使用したサンプリング方式です。Zemax技術記事でこの機能を説明しているのは、Understanding Sobol sampling (Zemax技術記事) になります。この機能については、またの機会で紹介したいと思います (ナレッジベースまとめ_ソボルサンプリングの理解 を参照してください)。

まとめ

ここでは、Zemaxのホームページからアクセスできる公開記事、 ノンシーケンシャル光学系を最適化する方法 から、「ピクセル補間」を取り上げ、ディテクタオブジェクトのノイズ対策を説明しました。筆者は、ソボルサンプリングとピクセルの補間は有効にしておいて、ノイズが気になる場合、まずピクセル数を減らせないか検討します。ダメならディテクタに到達する光線数を増やします。次がディテクタのスムージング、最終手段が(使えるなら)ミラーリングです。次は、ノンシーケンシャルモードの大事なオペランド、NSDDについて説明します。

<参考>

[1] Wikipedia, ショット雑音, https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E9%9B%91%E9%9F%B3

[2] 大阪大学, 石島研ページ, ショットノイズ, https://www.fbs.osaka-u.ac.jp/labs/ishijima/shot-noise-01.html

[3] 物理学のフィロソフィア, ショットノイズ, http://physics.thick.jp/Experimental_Physics/Section1/1-18.html

コメント

タイトルとURLをコピーしました