スポット数が増える?タルボット効果を可視化する

光学

はじめに

基板上に小さなレンズを並べたマイクロレンズアレイと呼ばれる素子があります。
この素子は集光スポットを一度に大量に作ることができ、センサーのピクセル端をよけることで感度工場、照度を均一するといった目的で使用されます。

以前、マイクロレンズアレイが作る多くのスポットをカメラで撮影する機会がありました。
焦点距離でスポット形成、フォーカスがずれるとボケて何も見えないだろうと思って撮影していたのですが、フォーカスをずらしても周期的にスポットを観察できたのです。
どこが焦点距離か分からず苦労しました

当時は干渉かなぁ、、くらいに思っていましたが、タルボット効果と呼ばれる現象です。
本記事ではPythonで可視化し、なぜこの現象が起こるかをフーリエ級数を基に解説します。

マイクロレンズアレイと1次元タルボット効果

マイクロレンズアレイにより、6$\mu $mのガウシアンスポットが25$\mu $m間隔で並んでいるとします。
$z=0$で集光されているとして、高さ方向にスキャンしてみます。
波長532nm、伝播計算には角スペクトル法を使います。
角スペクトル法の詳細は、以下の記事を参照ください。

計算コードです。

import numpy as np
import matplotlib.pyplot as plt

# ----------------------------
# Parameters
# ----------------------------
wavelength = 532e-9      # m
k = 2*np.pi/wavelength

pitch = 25e-6            #micro lens pitch [m]
spot_sigma = 3e-6        # spot radius [m]

# Calculation area
Lx = 0.5e-3              # 0.5 mm
Nx = 1024

x = np.linspace(-Lx/2, Lx/2, Nx)
dx = x[1]-x[0]

# ----------------------------
# Initial field
# ----------------------------
num_spots = 17

U0 = np.zeros_like(x, dtype=complex)

for n in range(-num_spots//2, num_spots//2+1):
    x0 = n*pitch
    U0 += np.exp(-(x-x0)**2/(2*spot_sigma**2))

# normalize
U0 /= np.max(np.abs(U0))

# ----------------------------
# Angular spectrum propagator
# ----------------------------
fx = np.fft.fftfreq(Nx, d=dx)

FX = fx

kz = np.sqrt(
    np.maximum(
        0,
        k**2 - (2*np.pi*FX)**2
    )
)

U0_f = np.fft.fft(U0)

# propagation distances
z_max = 3e-3
Nz = 400

z_list = np.linspace(0, z_max, Nz)

carpet = np.zeros((Nz, Nx))

for iz, z in enumerate(z_list):

    H = np.exp(1j * kz * z)

    Uz_f = U0_f * H
    Uz = np.fft.ifft(Uz_f)

    carpet[iz, :] = np.abs(Uz)**2

# ----------------------------
# Plot Talbot carpet
# ----------------------------

plt.figure(figsize=(8,6))

extent = [
    x[0]*1e6,
    x[-1]*1e6,
    z_list[-1]*1e3,
    z_list[0]*1e3
]

plt.imshow(
    carpet,
    extent=extent,
    aspect='auto',
    cmap='inferno'
)

plt.xlabel("x [um]")
plt.ylabel("Propagation distance z [mm]")
plt.title("Talbot Carpet")
plt.colorbar(label="Intensity")

plt.show()

縦軸の$z=0$で確かに17個のスポットが出来ています。
zをそこから離れていくと、$z=1.1,2.4mm$のあたりでは再び、最初と同じスポット形成されています。
ただし、$z=1.1mm$では座標が半分ほどずれています。
フォーカス位置からずれると、ボケるだけでないのです

スポット数が増える

また、先の図で$z=0.5,1.7 $mmのあたりを見ると、初期の2倍の数のスポットが出来ています。
つまり、レンズピッチ25$\mu m$により、12.5$\mu m$間隔でスポットが形成されているということです。

2次元のタルボット効果

先ほどは1次元にスポットが並んでいる場合でした。
格子状にスポットが$25\mu m$間隔で2次元的の格子状に並んでいるときを計算してみましょう。
$y=0$で切り出してみます。

1Dの時と同じく、$z=0,2.2mm$で同じ数のスポットが形成されています。

$z=0.5-2.0mm$の間のスポットが見えない若しくは、弱く見えるのはスポット位置がx軸方向にずれているためです。
1Dではよく分かりませんでした、z方向に$2.4mm$周期でスポットが形成されていると分かりました。

タルボット効果とタルボット距離

ここまで見てきた、周期性のあるパターンが伝播するにしたがって繰り返し元のパターンが再生される現象をタルボット効果と言います。
先に計算した模様をタルボットカーペット(Talbot carpet)と呼びます。

タルボット効果が表れる理由を数式で押さえてみます。
2.4mm周期で像が再生されていましたが、これはタルボット距離として求められます。

周期構造

タルボット効果の肝は、スポット列のような周期構造にあります。
簡単のため、1Dの周期構造を考えます。フーリエ級数で表せます。

$$
U(x) = \sum_mc_me^{i2\pi mx/p}
$$
ここで$p$は周期であり、先の例では$25\mu m$です。

z方向に伝播した際のz方向の波数は$k_z$は下記と書けます。

$$
k_z \sim k-\frac{\pi\lambda}{p^2}m^2
$$
よって
$$
U(x,z) = \sum_mc_m e^{i2\pi mx/p} e^{-i\pi\lambda zm^2/p^2}
$$

特に、
$$
z_T = \frac{2p^2}{\lambda}
$$
をタルボット距離とよび、$z$に代入すると
$$
e^{-i2\pi m^2}=1
$$
となるため、元の位相関係に戻ります。
先の例だと$z_T=2.35mm$のため、周期とタルボット距離が一致しています。

タルボット距離の半分

先の例では、z=1.1mmで座標ずれが見られましたが、これはタルボット距離の半分です。
数式で確認します。

$z=z_T/2$とすると、以下の式に代入します。
$$
U(x,z) = \sum_mc_m e^{i2\pi mx/p} e^{-i\pi\lambda zm^2/p^2}
$$

後ろの$exp$の項は以下のように変形できます。
$$
exp(-i\pi m^2)= (-1)^m = exp(i\frac{2\pi m}{2})
$$
よって
$$
U(x,z_T/2) = \sum_mc_m e^{i2\pi m(\frac{x-p/2}{p})}
$$

これは、元の周期構造を$p/2$だけずらしたものに相当します。
2D構造では、x方向とy方向の両方に$p/2$ずれるため先の例ではスポットが見えなくなっていたのです。

タルボット距離の1/4

先ほどで0.5mmでスポット数が倍になりました。
これは、タルボット距離$z_T$の1/4に相当します。

数式を全て書くと長くなるので、イメージだけ説明します。

$m$が偶数と奇数で付加される位相が異なります。
偶数次のみをみると、空間周波数が2倍となるため周期が半分になります。
一方、奇数次は元の周期を保ちます。
全体としてはこれらの和となるため、周期が半分になったように見えるのです。

$z=z_T/4$ではこの2つの成分が重なりあうことで、元の周期と異なる細かい干渉パターンが見えるのです。

考察

以前の記事で、うなりから初めてパルスを生成しモードロックレーザーと関係があることを説明しました。パルスを生成するには等間隔の周波数成分を重ね合わせることが重要でした。
タルボット効果は周期構造が重要で、フーリエ級数で考えると等間隔のXY平面の空間周波数成分を重ね合わせることでz方向に周期が現れます。
このように考えると、タルボット効果は空間版のモードロックと言えるのではないでしょうか。

まとめ

タルボット効果とタルボットカーペットを角スペクトル法を用いて実際に計算しました。
タルボット効果は伝播にしたがって、元の像が再生するという直感に反する現象です。
また、途中では位置ずれした像やより小さい周期の像が現れるなどとても興味深いものでした。

参考文献

角スペクトル法の基本であるフーリエ光学を日本語で学びたい方におすすめの一冊です。 回折やフーリエ変換、ホログラムも分かりやすく解説しており、角スペクトル法の背景となる光学理論を体系的に理解できます。

モードロックはパルスレーザーの発振方法の一つです。
今回はレーザーの発振方法には立ち入りませんでしたが、詳細に興味があるという方におすすめの教科書です。

Pythonライブラリのtorchopticsの例としてTalbot効果があります。

Talbot Effect — TorchOptics

コメント

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