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

次へ :