Appearance
MDで数式を扱う練習
WARNING
教養課程レベルの行列/微積分学しか知らないので、測度論みたいな厳密な話はあんまりしない。
INFO
Fourier変換の大体の話はInternation Tables for Crystallography Vol.B 1.3に書いてある。
フーリエ変換 (Fourier Transform)
Fourier Transform
3Blue1BrownのBut what is the Fourier Transform? A visual introduction.が幾何的イメージでフーリエ変換を表現していてとてもよい。複素平面上の大きさ1の円周上に変換したい関数を巻き付けている。
julia
using Plots, FFTW
sin2pi(x) = sinpi(2x)
cos2pi(x) = cospi(2x)
xs = [exp(-x^2) * (sin2pi(7x) + 0.7sin2pi(16x) + 1.5cos2pi(32x)) for x in range(-2, 2, 512)]
## 4/512 = 0.0078125 is the pixel size
## 1/(2*0.0078125) = 64 is the Nyquist frequency
xs_fft_pw = xs |> rfft .|> abs2
## Plot both the original and the power spectrum in two subplots
plot(
plot(xs, title="Signal", legend=false, xticks=(0:64:512, -2:0.5:2)),
plot(xs_fft_pw, title="Power spectrum", legend=false, xticks=(0:32:256, 0:8:64)),
layout=(2, 1), size=(600, 300)
)
julia
# ...Continue from the previous code
fourier_curve(k) = xs .* cis.(-2pi * k .* range(-2, 2, length=N)) ## フーリエ変換の積分の中
data(k) = fourier_curve(k) |> x -> (real(x), imag(x))
point(k) = fourier_curve(k) / N*4 |> sum |> x -> (real(x), imag(x)) ## ただ足すとデカくなりすぎるから適当に割ってる
pl1 = plot(data(15), title="k = 15", aspect_ratio=:equal, legend=false, size=(600, 600))
scatter!(point(15))
pl2 = plot(data(16), label="",title="k = 16", aspect_ratio=:equal, legend=false, size=(600, 600))
scatter!(point(16), label="")
plot(pl1, pl2, layout=(2, 1), size=(600, 600))
フーリエ変換で実空間の関数を逆空間に変換した図。複素数はそのままだとプロットし辛いのでよくパワースペクトラム(絶対値の二乗)をプロットする(CTFの図とか)。位相の情報が失われていることに注意! フーリエ変換の積分の中身をそのままプロットした図。オレンジの点が係数になってる(大きさはみやすさのために適当)。k=15ではほぼ0だけど、k=16になると下の方にズレて値を持つようになる。これは位相の情報も残ってる。
これらが幾何的にわかりやすい説明。正規直交基底で係数を抜き出すイメージもあるけど、省略。
フーリエ変換されるものは実数値関数である必要はなく、
畳み込みの定理 (Convolution Theorem)
Convolution Theorem
証明
(積分の順序って交換してええんかな)
フーリエ変換でいちばん大事な性質。実空間での積は逆空間の畳み込みになり、逆空間での積は実空間の畳み込みになる。この性質はめちゃくちゃ多用する。
さっきの図は実空間でexp(-x^2)
を掛けていたけど、exp(-64x^2)
に変えたもの。パワースペクトラムがより滲んでいるのがわかる。
イメージとしては、
サンプリング定理 (Nyquist–Shannon sampling theorem)
Nyquist–Shannon sampling theorem
関数
補題(くし関数)
実空間で
解説
前述の畳み込みの定理と、くし関数の性質を使う。
定理の
このとき、逆空間上では
前提の
具体例でいうと、音声を44.1kHzでサンプリングしておけば、人間の聴覚範囲(20kHz)までの音声を復元できる。単粒子解析では目標分解能
デジタルカメラのセンサーの前に、よく光学ローパスフィルター(OLPF)が入っている。これは、センサーのナイキスト周波数を超える周波数の光をカットするためのもので、モアレを防ぐために必要。でも最近の高画素化で現実的に問題となる高周波信号はないとか、後処理でローパスをかけたりできるからOLPFがない機種もある。そういう光学素子は厚みに依存して軸外の光学特性が悪くなりそうだし納得はできる。Sigmaの高画素機fp LはOLPFがない。
電子顕微鏡の場合、ピクセルサイズを決定したらそれ以上の高周波信号はノイズになるので、対物絞りでローパスフィルターをかける場合がある。しかし、CCPEMのメーリス曰く、対物絞りの金属板のコンディションによりいらん収差を生むことがあるので、入れないほうがいいかも。(電子回折以外で使ったことない)最近だとFalcon4とかが超解像度モードを搭載していて、8KモードでPhysical Nyquistを超えた分解能が出る場合もあるから、対物絞りは使わないが吉。
光学顕微鏡の構造化照明法は、サンプルに照明する光のパターンを高周波の波にすることで(実空間での積)、逆空間の高分解能な情報を得る手法。あんまり詳しくは知らないけどこの原理を使って超解像を実現している。電顕でもレーザー位相板の技術を使ってこれ出来ないかなーとか妄想してる。
スーパーヘテロダイン受信機の原理もこれと同じだと思うけど、詳しくは知らない。
長くなったので次回に続く。