[110] ゼルニケ(標準・フリンジ・環状)係数機能での分解方法_ゼルニケ多項式 (3)

OpticStudio

光ラーニングは、「光学」をテーマに様々な情報を発信する光源を目指しています。情報源はインターネットの公開情報と、筆者の多少の知識と経験です。 このページでは、OpticStudioのシーケンシャルモードのゼルニケ係数機能が、波面収差をゼルニケ多項式に分解する方法を考察します。

結論

  • 単位円内の任意の曲面をゼルニケ多項式に分解する方法として、積分によって係数を直接計算する方法と、最小二乗法で曲面にゼルニケ多項式をフィッティングする方法があります。
  • OpticStudioシーケンシャルモードには、波面収差をゼルニケ多項式に分解する機能として、ゼルニケ標準係数、ゼルニケフリンジ係数、ゼルニケ環状係数があり、これらはフィッティングによって係数を計算している可能性が高いです。
  • フィッティングでは元の波面曲面とのフィッティング誤差を最小にするように係数が決定されるため、フィッティングに使用するゼルニケ項数を増やすと、低次のゼルニケ項の係数も変化します。

このページの使い方

ゼルニケ多項式に関する技術情報はインターネット検索でたくさん入手することができます。しかし、OpticStudioに搭載されているゼルニケ面に関する機能と関連付けて理解するのは少し手間です。

これまで、ゼルニケ標準(Zernike Standard)サグ・位相面の定義式_ゼルニケ多項式 (1)ゼルニケフリンジ(Zernike Fringe)サグ・位相面の特性_ゼルニケ多項式 (2) ではゼルニケ多項式の定義式と、多項式の順番を決めるルールについて説明してきました。ここでは、ゼルニケ係数機能がどうやって波面収差をゼルニケ多項式に分解しているかを考察します。このページの内容についてヘルプファイルには記載されておらず、筆者の想像による部分が大きいことに注意してください。

波面収差をゼルニケ多項式に分解する機能

ゼルニケ多項式の優れている点の1つは、単位円内のどんな関数(曲面)でも、項数を増やしたゼルニケ多項式で表現できる完全性です[1]。これの逆方向の発想で、単位円内の任意の曲面、例えば波面収差や製造誤差が加わった光学面形状が与えられたとき、その曲面をゼルニケ多項式に分解(展開)することもできます。このページは、この分解のステップに着目しています。

図 110-1 ゼルニケ多項式は単位円内のあらゆる曲面を構築することもできるし、逆に分解することもできる。

OpticStudioのシーケンシャルモードには、波面収差をゼルニケ多項式に分解する機能が搭載されています。ゼルニケ〇〇係数という機能群(Zernike 〇〇 coefficients)で、ゼルニケ多項式として、ゼルニケ標準、ゼルニケフリンジ、ゼルニケ環状多項式が選択できます。

この機能を使用する主な目的は、波面収差をゼルニケ多項式に分解することで、設計中の光学系に含まれるコマ収差や非点収差を切り分けて把握することです。波面収差は理想的な波面からの乖離を定量的に評価するのは得意ですが、それ以上の細かい情報を引き出すことが難しいです。波面収差については、光路差図(波面収差)_シングレットレンズの設計(OpticStudio入門) (9) を参照してください。

光ラーニングでは今のところ、ゼルニケ多項式と古典的な収差の関係には触れていません。低次のゼルニケ多項式と収差の対応についてはインターネットで簡単に見つけることができます[2][3]。今後、もっと勉強して取り上げられればと思います。

図 110-2 ゼルニケ多項式と収差の関係。波面収差をゼルニケ多項式に分解することで、収差の種類と多寡を把握できる。参考[3]より。

波面収差をゼルニケ多項式で分解する方法

ここからは、単位円内の任意の曲面(波面収差)をゼルニケ多項式に分解する方法として、良く知られている方法を2つ紹介します。1つ目は、ゼルニケ多項式の直交性を活用して、ゼルニケ多項式の係数を積分計算で求める方法です。2つ目は、最小二乗法によってフィッティング誤差が最小になるようにゼルニケ多項式の係数を求める方法です。

積分方式

ゼルニケ多項式は、単位円内においての直交した関数系です。関数系とは、いくつもの関数の集合体のようなもので、今取り上げている関数系はゼルニケ多項式一式です。

関数系が直交性を持つ場合、ある関数を構築するための係数の組み合わせは、一意に決めることができます[4]。直交性を直観的に理解できるベクトルで考えると、a, bの基準ベクトルで、a-b平面にある点に移動する場合、係数の組み合わせは1つに決定できます。

図 110-3 馴染みのある直交=内積がゼロ=なす角が90度。基本ベクトルの線形結合で任意の場所を示すことができる。

ゼルニケ多項式の直交性は、このベクトルの概念を関数にも適用した話となりますが、はっきり言って関数の直交性をベクトルと同じように理解するのは難しいです(よね?)。筆者個人の感覚では、ベクトルとゼルニケ多項式の中間くらいのトピックとしてフーリエ級数があります。フーリエ級数は、関数系は直交しており[5]、正弦波を足し合わせることで任意の波形を表現できます[6]。

図 110-4 正弦波の足し合わせで矩形波を表現する例(参考[6]より)。ベクトル→波形(フーリエ級数)→曲面(ゼルニケ多項式)と直交の概念を拡張。

さて、波面収差のゼルニケ多項式による分解に戻します。波面収差が数式で極座標系で表現できる場合、各ゼルニケ多項式の係数は積分で算出できます。これにより、単位円内の波面収差のうち、あるゼルニケ多項式が含まれる大きさを計算できます

具体的な事例として参考[7]でも紹介されている、z(r,θ) = 2ρ3*cosθ を挙げて説明します。この曲面をエクセルで計算すると、下図のようになります。

図 110-5 ある極座標関数で表現された曲面形状。

ここで明言しておかなければならないこととして、これから使用するゼルニケ多項式は「ゼルニケ標準多項式」になります。ゼルニケ標準多項式は直交性に加えて、正規性も備えているので、特に積分方式でのゼルニケ多項式への分解がやりやすいです。ゼルニケフリンジ多項式は正規化されていないので、積分計算するときに係数を追加する必要があります。結論、ゼルニケ係数を算出する積分の式は下の通りです。

上で示した2ρ3*cosθの場合、以下の積分計算をすることで、ゼルニケ標準多項式での2番目の係数と8番目の係数が算出され、他のゼルニケ多項式に対しては直交性によって係数がゼロになります。

得られた係数を用いてゼルニケ多項式のサグを計算して足し合わせると、確かに2ρ3*cosθのサグ形状と同じになっていることが確認できました。

図 110-6 (左)関数から直接計算したサグと、(右)ゼルニケ多項式を足し合わせて計算したサグ

フィッティング方式

長々と積分方式の説明を書きましたが、光学のソフトウェアで一般的に用いられるのは、最小二乗法を用いて、与えられた波面収差にゼルニケ多項式をフィッティングする方法です。この方法は、曲面形状を離散的な点の集まりとして取得するケースで特に有用です。OpticStudioを始めとした光線追跡ベースのソフトウェアでは、瞳をサンプリングした光線によって波面収差を計算するので、まさにこのケースに当てはまります。

最小二乗法を用いる場合、計算プロセスは積分ではなく行列になります。行列計算の概要は参考[8]が分かりやすいです。入力情報は、極座標でサンプリングされた曲面形状のサグと、フィッティングに用いるゼルニケ多項式の項数、そして各多項式のサグになります。出力情報は、各多項式の係数の大きさが並んだ列ベクトルです。

図 110-7 最小二乗法を用いたゼルニケ多項式フィッティング。Fに対してユーザがZを指定すると、Aが出力される。

高次の多項式まで使用するだけフィッティングの精度は上がることが期待できますが、それだけ追跡する光線数も必要になりますし、項数が増えた分だけ行列が大きくなるので計算時間はかかります。

コミュニティで確認できたZemaxエンジニアからのコメント

Zernike Phase Surface with zero Z1 term reports non-zero Z1 in the Zernike Coefficient Report (Zemaxコミュニティ) でZemaxのAngelさんのコメントに、The thing to keep in mind is that the Zernike Fringe Standard Coefficient analysis is a fit performed on the resulting wavefront error. とあります。またヘルプファイルにもフィッティングというワードがあるので、理論的な背景も含めて、この解析機能は2つ目のフィッティングによってゼルニケ係数を求めていると考えて良さそうです。

ゼルニケ係数は項数によって結果が変わる

もう1つ、OpticStudioのゼルニケ係数がフィッティング方式であることを確認する方法は、最大項数の変化です。直交性を活用した積分方式は、その曲面内に含まれるゼルニケ多項式成分を個別に抽出するので、解析に用いるゼルニケ項数を高次まで増やしても、低次の係数に影響しません。一方で、OpticStudioのゼルニケ係数の設定オプションである項数を変化させると、低次の結果が変化します

まとめ

ここでは、単位円内の任意の曲面をゼルニケ多項式に分解するプロセスを取り上げ、OpticStudioのゼルニケ係数機能が用いるアルゴリズムを考察しました。OpticStudioに限らず、多くのソフトウェアではフィッティングによってゼルニケ多項式への分解を行っています。

今回は参考情報にかなり依存してしまいました。詳細についてはこれら良質な情報を確認していただくとして、光ラーニングではざっくりとした感覚をつかんでもらえますと幸いです。

<参考>

[1] 三橋 俊文, “総説 光学入門2 Zernike多項式再入門”, 視覚の科学 第35巻第2号

[2] Wikipedia, ゼルニケ多項式

[3] SPIE, Optipeida, Zernike Polynomials

[4] 物理のかぎしっぽ, 直交関数系

[5] 理系大学生の数学駆け込み寺, 直交関数系とは何か知りたければこれを見ろ!

[6] Wikipedia, フーリエ級数

[7] J. Schwiegerling, “Optical Specification, Fabrication, and Testing”, SPIE PRESS BOOK

[8] ゼルニケフリンジ(Zernike Fringe)サグ・位相面の特性_ゼルニケ多項式 (2) でも参照したアリゾナ大学の資料

コメント

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