GETPSF
FFT アルゴリズムを使用して回折点広がり関数 (PSF) を計算し、そのデータをベクトル配列のいずれか (VEC1、VEC2、VEC3、または VEC4) に配置します。
構文 :
GETPSF wave, field, sampling, vector, unnormalized, phaseflag, imagedelta
説明 :
- wave は計算に使用する波長番号に対応する整数です。ゼロの値は、多色計算を示します。
- field は、1 から視野の最大番号までの範囲の整数とする必要があります。value は、使用する視野の位置を示します。
- sampling は、1 (32 x 32)、2 (64 x 64)、3 (128 x 128) ... で、最大 2048 x 2048 までとなります。
- vector 引数は、1 ~ 4 の整数値とし、データを配置するベクトル配列を指定します。
- データをピークが 1.0 になるように正規化する必要がある場合、unnormalized のフラグを 0 にします。unnormalized が 1 の場合、データは正規化されずに返されます。
- phaseflag が 0 の場合、強度のデータが返されます。phaseflag が 1 の場合、位相 (°単位) が返されます。phaseflag が 2 の場合、PSF の実数部分が返されます。phaseflag が 3 の場合、PSF の虚数部分が返されます。
- imagedelta の値は、PSF 点間の間隔 (μm 単位) です。デフォルトの間隔の場合、ゼロを使用します。位相データを計算するには、波長は単色である必要があります。有効範囲外の引数については、代わりに受け入れられる最も近い値が使用されます。
データは、次のフォーマットでベクトル配列のいずれかに返されます。
ベクトル位置 0 : ベクトル配列内の PSF データ位置の総数。通常、この数は、4*n*n (n は 32、64 などのサンプリング サイズ) です。たとえば、サンプリング密度が 2 の場合、瞳サンプリングは 64 x 64 で、配列には 128 x 128 つまり 16,384 個の値が存在します。これには、数字あたり 8 バイト、つまり合計で 131 KB が必要です。サンプリング密度が 1024 の場合、その配列だけで 8 MB 以上必要となります。PSF の計算にはさらに 64 MB 以上必要です。位置 0 は、エラー コードとしてその他の値も返します。位置 0 がゼロの場合、計算は中断されています。-1 の場合、ベクトル配列は大きすぎてすべてのデータを維持できません。配列をさらに大きくするには、SETVECSIZE を使用してください。-2 の場合、PSF データの計算に十分なシステム RAM がありません。-3 の場合、PSF の計算中に一般的なエラーが発生しています。
ベクトル位置 1 ~ 4*n*n は、PSF データ強度を保持します。最初の 2n の値は、最初の行で、左から右へ、-x から -x まで、その後の 2n の値の各ブロックは、別の行で -y から +y までとなっています。ベクトル位置 4*n*n+1 は、データ値間の間隔 (μm) を保持します。
例 :
! This macro computes the PSF ! for the currently loaded lens, polychromatic, ! at the first field, ! and a 32x32 grid density (sampling = 1), ! data will be placed in vector 1, ! normalized to 1, ! no phase data, ! default image delta. SETVECSIZE 4500 GETPSF 0, 1, 1, 1, 0, 0, 0 np = vec1(0) IF (np == 0) PRINT "PSF Computation aborted." GOTO 1 ENDIF IF (np == -1) PRINT "SETVECSIZE too small for PSF data." GOTO 1 ENDIF IF (np == -2) PRINT "Not enough system RAM for PSF data." GOTO 1 ENDIF PRINT "There are ", np, " data points, spaced ", vec1(np+1), " micrometers apart". LABEL 1
次へ :