Ansys Zemax | 如何使用 Zenike 系數(shù)對(duì)黑盒光學(xué)系統(tǒng)進(jìn)行建模
通常需要在設(shè)計(jì)中表示光學(xué)系統(tǒng),即使您沒有詳細(xì)的處方數(shù)據(jù),如曲率半徑、眼鏡等。本文展示了如何使用 Zernike 系數(shù)來描述系統(tǒng)的波前像差,并在無法使用 Zemax 黑匣子表面文件的情況下生成光學(xué)系統(tǒng)的簡(jiǎn)單但準(zhǔn)確的表示。如果您依賴于使用光學(xué)系統(tǒng)測(cè)量的實(shí)驗(yàn)數(shù)據(jù),但您無法獲得其處方數(shù)據(jù),則通常會(huì)出現(xiàn)這種情況。(聯(lián)系我們獲取文章附件)
?
介紹
?
有時(shí)需要表示光學(xué)子系統(tǒng),而不詳細(xì)了解其處方。對(duì)于一階計(jì)算,近軸透鏡就足夠了,但是當(dāng)也需要波前像差時(shí),可以使用Zernike相位系數(shù)來提供光學(xué)系統(tǒng)產(chǎn)生的波前的精確模型。
OpticStudio支持全面的黑盒功能,建議用于此目的。但是,如果無法提供 Zemax 黑匣子文件,則可以使用以下過程。
?
澤尼克相位數(shù)據(jù)
?
如果您想在不透露處方數(shù)據(jù)的情況下將像差數(shù)據(jù)分發(fā)給客戶,則可以由 OpticStudio 生成這些 Zernike 相位系數(shù),或者如果您正在測(cè)量沒有處方數(shù)據(jù)的鏡頭,則可以通過干涉儀生成。根據(jù)您的干涉儀軟件,您可能已經(jīng)擁有OpticStudio Zernike格式的數(shù)據(jù),網(wǎng)格相位數(shù)據(jù)或.INT文件。OpticStudio可以處理所有這些,但在本文中,我們將僅使用Zernike數(shù)據(jù)。
?
Zernike相位數(shù)據(jù)表示光學(xué)系統(tǒng)在特定場(chǎng)和特定波長(zhǎng)下性能的測(cè)量。因?yàn)橛嘘P(guān)玻璃、曲率半徑、非球面系數(shù)等的信息。不是 Zernike 數(shù)據(jù)的一部分,無法將 Zernike 數(shù)據(jù)縮放到不同的場(chǎng)或波長(zhǎng)。因此,對(duì)于要模擬性能的每個(gè)(場(chǎng)、波長(zhǎng))對(duì),您將需要一組 Zernike 相位數(shù)據(jù)。這些可以通過為每個(gè)(場(chǎng),波長(zhǎng))組合提供一個(gè)單獨(dú)的文件或(更有可能)為每個(gè)(場(chǎng),波長(zhǎng))對(duì)提供單獨(dú)的配置來輸入OpticStudio。
?
有一個(gè)重要的例外:當(dāng)被建模的系統(tǒng)是全反射系統(tǒng)時(shí),可以使用Zernike標(biāo)準(zhǔn)SAG表面來模擬給定場(chǎng)點(diǎn)的所有波長(zhǎng)下的性能。下一期將詳細(xì)介紹此特殊情況。
?
起始設(shè)計(jì)
?
本文中使用的所有示例文件都包含在一個(gè) zip 文件中,可以從本文頂部的鏈接下載該文件。我們將要看的第一個(gè)文件是“Cooke one field, one wavelength.zmx”,它基于 OpticStudio 分發(fā)的 Cooke 三元組示例文件。顧名思義,此文件基于單個(gè)(場(chǎng),波長(zhǎng))對(duì)。
?

?
它的波前看起來像這樣:
?

?
它的光斑大小是這樣的:
?

?
現(xiàn)在,澤尼克系數(shù)是描述光學(xué)系統(tǒng)產(chǎn)生的波前誤差的緊湊方法。為了產(chǎn)生“黑匣子”模型,我們必須首先生成具有相同一階特性的近軸光學(xué)系統(tǒng),然后用Zernike數(shù)據(jù)像差該近軸系統(tǒng)產(chǎn)生的波前。
?
我們需要的關(guān)鍵近軸數(shù)據(jù)是出口瞳孔位置和出口瞳孔直徑。所有波前數(shù)據(jù)都是在出射瞳孔中測(cè)量的,因此我們的黑匣子系統(tǒng)必須具有相同的瞳孔數(shù)據(jù)。對(duì)于此文件,瞳孔數(shù)據(jù)如下所示:
出口瞳孔直徑 = 10.2337 mm
出口瞳孔位置 = -50.9613 mm
?
近軸當(dāng)量?
?
打開文件“Paraxis Equivalent.zmx”。它模擬了相同的系統(tǒng),只有一個(gè)近軸透鏡表面:
?

請(qǐng)注意以下幾點(diǎn):
·它使用與原始設(shè)計(jì)相同的場(chǎng)和波長(zhǎng)。
·其入射瞳孔直徑設(shè)置為與原始系統(tǒng)的出射瞳孔直徑相同的值。在此文件中,入射瞳孔、停止曲面和出射瞳孔都位于同一位置。
·近軸透鏡的焦距和到圖像表面的厚度均設(shè)置為等于原始文件的-1*出瞳位置。-1因子是因?yàn)镋XPP是從圖像到瞳孔測(cè)量的,但表面厚度是從瞳孔到圖像的距離,因此需要改變符號(hào)。
·系統(tǒng)具有與原始系統(tǒng)相同的一階屬性。
?
該系統(tǒng)的出瞳與原始系統(tǒng)的出瞳大小完全相同,位置相同。為了在近軸透鏡輸出上添加像差,我們?cè)诮S透鏡之后使用Zernike標(biāo)準(zhǔn)相位表面。我們的目標(biāo)是獲取原始透鏡的澤尼克系數(shù),并將它們添加到近軸等效透鏡的澤尼克表面上。
?

?
在鏡頭之間復(fù)制澤尼克數(shù)據(jù)
?
返回“Cooke One Field One Wavelength.zmx”文件,然后單擊“分析…波…澤尼克標(biāo)準(zhǔn)系數(shù)”。OpticStudio計(jì)算系統(tǒng)的波前,然后擬合一系列Zernike多項(xiàng)式。
?

波前的采樣和Zernike項(xiàng)的數(shù)量都可以由用戶通過“設(shè)置”對(duì)話框定義。確定波前是否充分采樣或澤尼克項(xiàng)數(shù)量的關(guān)鍵參數(shù)是RMS擬合誤差和最大擬合誤差。此設(shè)計(jì)使用采樣和項(xiàng)數(shù)的默認(rèn)參數(shù),可提供
?

這意味著,當(dāng)我們從從澤尼克系數(shù)重建的波前中減去真實(shí)的波前時(shí),誤差是百萬分之一波的數(shù)量級(jí)。這已經(jīng)足夠接近了!但是,一般來說,您可能需要調(diào)整波前采樣和最大 Zernike 項(xiàng)才能達(dá)到可接受的擬合。
?
我們現(xiàn)在需要將澤尼克系數(shù)數(shù)據(jù)從這個(gè)設(shè)計(jì)轉(zhuǎn)移到近軸等效設(shè)計(jì)中。這可以通過打印出 Zernike 數(shù)據(jù)并重新鍵入來完成,但這很乏味。對(duì)于宏來說,這是一個(gè)很好的工作。
?
以下宏(也包含在文章附件中),稱為Zernike Readout.zpl,從此鏡頭獲取Zernike數(shù)據(jù),并將其以Tools…在額外數(shù)據(jù)編輯器上導(dǎo)入數(shù)據(jù)可以讀取。它經(jīng)歷的步驟如下:
?
首先,它定義了它需要的所有變量(L1-19)。
?
! This macro writes out the Zernike standard coefficients
! of a lens file in a format that can be directly imported
! into the Extra data Parameters of a Zernike Standard Phase surface
! First define the variables we need
! Enter whatever values are appropriate
! Use INPUT statements if you prefer
max_order = 37 # can be up to 231
sampling = 2 #sampling is 1 for 32×32, 2 for 64×64 etc
field = 1
wavelength = 1
zerntype = 1 # Get standard, not fringe or Annular coefficients
epsilon = 0 # only used for Annular Zernike coefficients
reference = 0 # reference to the chief ray
vector = 1 # use the built-in VEC1 array to store the data
output$ = “zernike.dat”
path$ = $PATHNAME() # save the data in the same location as the file we are using
file$ = path$ + “\” + output$
PRINT “Writing data to “, file$
?
(請(qǐng)注意,采樣和最大 Zernike 項(xiàng)應(yīng)設(shè)置為您用于上述 Zernike 分析的值。然后,宏獲取出口瞳孔直徑和 Zernike 數(shù)據(jù) (L21-27):
?
! Then get the Exit Pupil Diameter. Use VEC1 to store the data
GETSYSTEMDATA 1
EXPD = VEC1(13) # see the manual for the data structure
normalization_radius = EXPD/2
! Then get the Zernike coefficients up to the maximum required order
GETZERNIKE max_order, wavelength, field, sampling, vector, zerntype, epsilon, reference
?
請(qǐng)注意,澤尼克曲面的歸一化半徑是出口瞳孔直徑的一半。然后,宏將數(shù)據(jù)打印到 .DAT 文件的正確格式,以便 Zernike 標(biāo)準(zhǔn)相表面讀取它 (L29-43):
?
! Then write them out to file in the format needed for the Import Tool
OUTPUT file$
FORMAT 1 INT
PRINT max_order
FORMAT 9.8
PRINT normalization_radius
FOR order = 1, max_order, 1
z_term = order + 8 # offset to the correct location in the data structure, see manual!
PRINT VEC1(z_term)
NEXT order
OUTPUT SCREEN
! End
PRINT “Program End”
END
?
Zernike 數(shù)據(jù)輸入到“Zernike 標(biāo)準(zhǔn)相”曲面的“參數(shù)”列中,如下所示:
?

將此宏放入 {Zemax}/宏文件夾中,單擊編程…ZPL宏…刷新列表,以便宏顯示在菜單列表中,然后運(yùn)行它。它將在與原始OpticStudio文件相同的文件夾中創(chuàng)建一個(gè)名為“zernike.dat”的文件。如果在記事本中打開此文件,您將看到:
?

?
此文件包含澤尼克標(biāo)準(zhǔn)相表面所需的所有數(shù)據(jù)。第一個(gè)數(shù)字是 Zernike 項(xiàng)的數(shù)量,然后是歸一化半徑,然后是每個(gè) Zernike 項(xiàng)。額外數(shù)據(jù)編輯器的導(dǎo)入工具可以直接讀取此文件。
?
返回到近軸等效透鏡文件。在 Surface 2 屬性的“導(dǎo)入”選項(xiàng)卡中瀏覽并打開 zernike.dat 文件:
?

按“導(dǎo)入”按鈕,成功導(dǎo)入數(shù)據(jù)后將出現(xiàn)Zemax消息框:
?

?
波前錯(cuò)誤現(xiàn)在顯示:
?

?
和點(diǎn)圖顯示
?

?
此文件生成與原始文件相同的光線追蹤結(jié)果!在隨附的zip中,文件“Zernike Equivalent.zmx”顯示了完成的系統(tǒng)。此外,文件“Direct Comparison.zmx”將同一文件的原始版本和Zernike版本顯示為兩種不同的配置。這允許在文件的兩個(gè)版本之間輕松進(jìn)行比較。
?
