interpolate3d_fft プログラム仕様
3次元周期データのFFTを用いた補間処理を提供します。
このモジュールは、フーリエ変換とゼロパディングを利用して、3次元空間に周期的に配置された離散データを高解像度化するための関数を含みます。 主に科学技術計算や画像処理の分野で、データの補間やアップサンプリングに利用されます。
- jsap_crystal.interpolate3d_fft.interpolate_3d_periodic_data_fft(data, interp_factor=(2, 2, 2))[ソース]
3次元の等間隔周期データをFFT(高速フーリエ変換)で補間します。
この関数は、与えられた3次元データをフーリエ変換(FFT)により周波数領域に変換します。 周波数領域において、元のデータが占める領域以外の部分をゼロで埋める(ゼロパディング)ことで、 より高周波数成分がゼロであると仮定し、実空間での高解像度補間を実現します。 ゼロパディングされた周波数領域データに逆フーリエ変換(IFFT)を適用することで、 指定された補間倍率でサンプリングされた高解像度のデータが得られます。 補間は周期境界条件を仮定して行われます。 fftshift と ifftshift を使用して、FFTのDC成分が配列の中心にくるように処理することで、 ゼロパディングが適切に行われます。
- パラメータ:
data -- np.ndarray 補間したい3次元の周期データ。形状は (Nx, Ny, Nz) である必要があります。 要素のデータ型は実数または複素数に対応します。
interp_factor -- tuple 各次元 (x, y, z) の補間倍率を示す3つの整数 (interp_x, interp_y, interp_z) のタプル。 各要素は1以上の整数である必要があります。1 を指定した場合、その次元は補間されません。
- 戻り値:
np.ndarray 補間された3次元データ。元のデータ型が実数であれば実数データが返されます。 この実装では最終的に np.real を適用しているため、実数部のみが返されます。 形状は (Nx * interp_x, Ny * interp_y, Nz * interp_z) となります。
- 例外:
ValueError -- 入力データが3次元のNumPy配列でない場合、または interp_factor が適切な形式でない場合に発生します。