第 3 章 リファレンス 51
3.2 WaveField クラス
3.2.23 サンプリング点数を拡大縮小するメンバー関数
以下のメンバー関数は1ピクセルの多重化や反復により,オブジェクトのサンプリング点数を2のm 乗倍にする.例えば,デフォルト引数mxy=1の場合にはいずれの関数もサンプリング点数を2(= 21)倍 にし,mxy=2の場合には4(= 22)倍に変化させる.
WaveField& Replicate(int mxy = 1) WaveField& Replicate(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 1番目の形式では関数実行前のオブジェクトサンプル値のパターンをx方向にもy方向にも2 のmxy乗回繰り返すことにより,オブジェクトを拡大する(図 3.6).2番目の形式ではx方向に2 のmx乗回,y方向には2のmy乗回繰り返すことにより,オブジェクトを拡大する.
Note
• オブジェクトのサンプリング間隔は変化しない.
図3.6 Replicate()の効果
110 第3章 リファレンス
WaveField& EnlargeZeroFill(int mxy = 1) WaveField& EnlargeZeroFill(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 1番目の形式では関数実行前のオブジェクトサンプル値のパターンをx方向にもy方向にも2 のmxy乗倍に拡大する.このとき,新たに付け加えられたサンプル点を0で埋める(図3.7).2番 目の形式ではx方向に2のmx乗倍,y方向には2のmy乗倍に拡大する.
Note
• オブジェクトのサンプリング間隔は変化しない.
図3.7 EnlargeZeroFill()の効果
図3.8 Embed()の効果
WaveField& Embed(int mxy = 1) WaveField& Embed(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 1番目の形式では関数実行前のオブジェクトサンプル値のパターンをx方向にもy方向にも2 のmxy乗倍に拡大する.このとき,元のサンプル点の周辺に均等に0値を埋め込む(図3.8).2番
目の形式ではx方向に2のmx乗倍,y方向には2のmy乗倍に拡大する.
Note
• オブジェクトのサンプリング間隔は変化しない.
WaveField& Extract(int mxy = 1) WaveField& Extract(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 1番目の形式では関数実行前のオブジェクトサンプル値のパターンをx方向にもy方向にも2 のmxy乗分の1に縮小する(図 3.9).2番目の形式ではx方向に2のmx乗分の1,y方向には2 のmy乗分の1に縮小する.
Note
• オブジェクトのサンプリング間隔は変化しない.
図3.9 Extract()の効果
WaveField& ReduceByAverage(int mxy = 1) WaveField& ReduceByAverage(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 平均化処理による縮小.1番目の形式では関数実行前のオブジェクトのサンプリング点数をx 方向にもy方向にも2のmxy乗分の1に縮小する(図3.9).2番目の形式ではx方向に2のmx乗 分の1,y方向には2のmy乗分の1に縮小する.
Note
• オブジェクトの物理サイズが変化しないようにサンプリング点数のみを縮小するため,オブジェク トのサンプリング間隔はmxy倍,またはmx倍とmy倍に拡大する.
WaveField& ExtractWindow(const WaveField& source, Complex backg = Complex(0.0, 0.0))
戻り値 対象オブジェクトへの参照
説 明 sourceオブジェクトのウィンドウ領域を切り出し,その部分のみを対象オブジェクトにコ
112 第3章 リファレンス ピーする.対象オブジェクトのピクセルはあらかじめbackgで塗りつぶされている.
Note
• sourceのウィンドウ領域全体が格納できる最小の2の累乗サイズのオブジェクトとして対象オブ
ジェクトを再生成して,対象オブジェクトの中央部にウィンドウ領域のサンプルデータをコピー する.
• 対象オブジェクトのウィンドウ領域はコピーした範囲に設定される.
• sourceオブジェクトのパラメータからサンプリング点数 Nx×Ny 以外のパラメータが対象オブ ジェクトのパラメータにコピーされる.
WaveField& Subdivide(int mxy = 1) WaveField& Subdivide(int mx, int my) WaveField& Pixelation(int mxy = 1) WaveField& Pixelation(int mx, int my) 戻り値 対象オブジェクトへの参照
説 明 1番目の形式ではサンプリング数がx方向にもy方向にも2のmxy乗倍になるようにピクセ ルを再分割する.この関数では,オブジェクト全体の物理的大きさは変化せず,サンプリング数が 増加した割合でサンプリング間隔が減少する(図 3.10).2番目の形式ではサンプリング数がx方 向に2のmx乗倍,y方向には2のmy乗倍になるようにピクセルを再分割する.
Note
• 1番目の形式ではサンプリング間隔はx方向にもy方向にも2のmxy乗分の1になる.2番目の 形式ではサンプリング間隔がx方向に2のmx乗分の1,y方向には2のmy乗分の1になる.
図3.10 Subdivide() & Pixelation()の効果