第 3 章 リファレンス 51
3.2 WaveField クラス
3.2.20 誤差・効率などを計測するためのメンバー関数
面波を設定する.第2の形式では,方向ベクトルがdirで初期位相がphsの平面波を設定する.
Note
• この関数を適用する以前の光波は消失し,振幅が1の平面波で置き換わる.
• 第2の形式における方向ベクトルdirは,その方向のみが計算に用いられ,長さは無視される.
• 本関数の平面波はグローバル原点での初期位相がphsでグローバル空間中に「固定された」平面波 であり,対象オブジェクトがグローバル原点以外の位置に移動している場合も位相関係が狂うこと なく計算される.しかし,対象オブジェクトが傾いている場合は正しい計算結果が得られない.
104 第3章 リファレンス
double GetAbsoluteMax(void) const double GetAmplitudeMax(void) const 戻り値 サンプル値の絶対値(振幅)の最大値.
説 明 ウィンドウ領域内のサンプル値の絶対値(振幅)の最大値を求める.
double GetAmplitudeMaxWhole(void) const 戻り値 サンプル値の絶対値(振幅)の最大値.
説 明 ウィンドウ領域に関係なく,全てのサンプル値の絶対値(振幅)の最大値を求める.
double GetAmplitudeVariance(void) const 戻り値 サンプル値の絶対値(振幅)の最大値.
説 明 ウィンドウ領域内のサンプル値の絶対値(振幅)の分散値を求める.
ComplexDouble GetScaleFactor(const WaveField& signal) const 戻り値 スケールファクター
説 明 signalオブジェクトに対する対象オブジェクトのスケールファクターを計算する.スケール
ファクターとは,対象関数f(x, y)とシグナル関数fsig(x, y)に対して,総和
∑
(m,n)∈W
|f(xm, yn)−αfsig(xm, yn)|2
を最小にするような複素数αであり,
α=
∑
(m,n)∈W
f(xm, yn)fsig∗ (xm, yn)
∑
(m,n)∈W
|fsig(xm, yn)|2
で定義される.ここで,W はウィンドウ領域である.従って,計算は対象オブジェクトとsignal オブジェクトのウィンドウ領域に対して行われる.両者のウィンドウサイズが異なる場合には,両 者のウィンドウ領域の左下角を一致させ,signalオブジェクトのウィンドウサイズで計算が行わ れる(図 3.4参照).
double GetSnr(const WaveField& signal, const ComplexDouble& scaleFactor) const
戻り値 S/N比
説 明 signalオブジェクトに対するS/N比を,スケールファクターscaleFactorを用いて計算す る.計算は対象オブジェクトとsignalオブジェクトのウィンドウ領域に対して行われる.両者
のウィンドウサイズが異なる場合には,両者のウィンドウ領域の左下角を一致させ,signalオブ ジェクトのウィンドウサイズで計算が行われる(図 3.4).
Note
• スケールファクターの計算にはGetScaleFactor()メンバー関数を用いる.
図3.4 GetSnr()のウィンドウ領域
double GetEnergyRatioInWindow(void) const 戻り値 エネルギーの比率(最大1.0)
説 明 オブジェクトの全体のエネルギーに対するウィンドウ領域内エネルギーの比率を計算して 戻す.
WaveField& CreateRealHistogram(int level = 512) const
戻り値 1次元WaveFieldオブジェクト
説 明 オブジェクトの実部サンプル値のヒストグラムをlevel段階で計算し,それを格納した1次
元WaveFieldオブジェクトを生成して戻す.この関数は,2値振幅変調型ホログラム作成におけ
る閾値の決定を支援するための関数である.
Note
• ヒストグラムを生成する元になったオブジェクトはそのまま変化せず,1次元WaveFieldオブジェ クトが新規に作成される.
• 生成した1次元WaveFieldオブジェクトのPxにはlevel値の逆数が設定される.
Example
W a v e F i e l d wf (512 , 5 1 2 ) ; // ヒ ス ト グ ラ ム 作 成 の 対 象 と な る オ ブ ジ ェ ク ト
wf . S e t S p h e r i c a l W a v e (0 , 0 , 10 e - 3 ) ; // 点 光 源 の 球 面 波 を セ ッ ト
W a v e F i e l d h i s t ; // ヒ ス ト グ ラ ム を 格 納 す る オ ブ ジ ェ ク ト
106 第3章 リファレンス
h i s t = wf . C r e a t e R e a l H i s t o g r a m (); // ヒ ス ト グ ラ ム の 作 成
f l o a t max = h i s t . R e a l (0 ,0); // 以 下 , ヒ ス ト グ ラ ム の 最 大 値 を 求 め る ル ー プ
int i ;
for ( i = 0; i < h i s t . Nx (); i ++) if ( max > h i s t . R e a l ( i , 0))
max = h i s t . R e a l ( i , 0);
double GetOverlapFactor(const WaveField& sig) const 戻り値 強度分布のオーバーラップ係数
説 明 オブジェクトとsigオブジェクトの全体を比較して,光強度分布の重なりの程度を示すオー バーラップ係数を計算する.この係数が1のときは,光強度分布は完全に同一である.