位相フィルタ自動設計ソフトウェア LAMBDA -言語仕様

[キーワードの種類]  [点像分布設計ファイルのフォーマット]  [全キーワード解説]  [ファイルタイプ]



LAMBDAの点像分布記述言語で利用するキーワードは,以下の種類に分類されます.
設計パラーメータ フィルタサイズや,物体距離,最大反復回数などを指定します.
フィルタタイプ 利用する設計アルゴリズム,回折の型などを指定します.
点像分布図形 点,四角形,ビットマップファイルなどの点像分布を与えます.



フォーマットは,以下の構成をしています.(記号<>は,実際には書きません)
<デフォルト設計パラメータ>
<フィルタタイプ> <フィルタの名前>[
<このフィルタだけの(ローカル)設計パラメータ>]
{
<点像分布図形>
}
<デフォルト設計パラメータ>,<このフィルタだけの設計パラメータ>, <点像分布図形>の箇所には,複数のキーワードを記述できます.また,キーワードは記号セミコロン;で終わります.
<デフォルト設計パラメータ>に記述した設計パラメータは,以下の全てのフィルタ設計に適用されます.<このフィルタだけの設計パラメータ>
例)
loop_max(100);
candidate_number(2);
dim2 monochromatic fraunhofer spot_array[
phase_type(analog_level);
data_size(256);
p_grid_center_x(128);
p_grid_center_y(128);
p_grid_pitch_x(8);
p_grid_pitch_y(8);]
{

p_box_fill(-10, -10, 10, 10, 1.0);
}

Topへ


左の欄に○がついていないキーワードは,現バージョンではまだサポートされていません.今後,順次対応予定です.

※ 座標,サイズは,「p_」で始まるものはピクセルを単位とする離散座標,それ以外のものはm単位の実数です.


設計パラメータ

設計条件
loop_max(<整数>) 設計時の最大反復回数を指定します.ORA法およびGSアルゴリズムで,アナログフィルタを設計する場合に有効です.
candidate_number(<整数>) 設計の初期値依存性の影響を低減するために,ここで指定した回数だけ,異なる初期値から設計を行います.
光学条件
wavelength(<実数>) 単一波長フィルタを設計する場合の,波長をm単位で指定します.
focal_length(<実数>) Fraunhofer型フィルタに用いるレンズの焦点距離を指定します.

filter_position_from_lens ORAを用いてデフォーカスフィルタを設計する場合 (ORA defocus)に,フィルタをレンズからどれだけ手前に配置するかを指定します.
フィルタパターン関連
ピクセルサイズ 必ず指定して下さい.
filter_pixel_size(<実数>) フィルタのピクセルサイズを,縦・横同じ値に指定します.
  filter_pixel_size_x(<実数>) フィルタのピクセルの横方向のサイズを指定します.
  filter_pixel_size_x(<実数>) フィルタのピクセルの縦方向のサイズを指定します.
フィルタサイズ(ピクセル数)
p_filter_size(<整数>) フィルタ全体の縦・横方向のサイズを,ピクセル単位で同じ値に指定します.
  p_filter_size_x(<整数>) フィルタ全体の横方向のサイズを,ピクセル数で指定します.
  p_filter_size_y(<整数>) フィルタ全体の縦方向のサイズを,ピクセル数で指定します.
フィルタサイズ(実寸)
filter_size(<実数>) フィルタ全体の縦・横方向のサイズの両方を,同じ値に設定します.
  filter_size_x(<実数>) フィルタ全体の横方向のサイズを,m単位の実サイズで同じ値に指定します.
  filter_size_y(<実数>) フィルタ全体の縦方向のサイズを,m単位の実サイズで同じ値に指定します.
出力パターン
ピクセルサイズ
output_pixel_size(<実数>) 出力像のピクセルサイズを,m単位で,縦・横同じ値に指定します.GSアルゴリズムにおいてのみ有効です.
  output_pixel_size_x(<実数>) 出力像のピクセルの横方向のサイズを,m単位で指定します.GSアルゴリズムにおいてのみ有効です.
  output_pixel_size_y(<実数>) 出力像のピクセルの縦方向のサイズを,m単位で指定します.GSアルゴリズムにおいてのみ有効です.
出力パターンサイズ(ピクセル数)
p_output_size()  
  p_output_size_x()  
  p_output_size_y()  
出力パターンサイズ(実寸) ピクセル系描画プリミティブ (p_で始まる描画プリミティブ) を利用する場合には,このパラメータとグリッドを設定する必要があります.
output_size(<実数>) 出力像の最大サイズを,m単位で,縦・横方向同じ値に指定します.
  output_size_x(<実数>) 出力像の横方向の最大サイズを,m単位で指定します.
  output_size_y(<実数>) 出力像の縦方向の最大サイズを,m単位で指定します.
位相
phase_max(<実数>) 最大位相量を,πを単位として与えます.例えば,2πの場合には,2を与えます.
備考: 波長多重フィルタ (multiwavelength) の場合のみ有効.単一波長では,自動的に2になります.
phase_level(<整数>) 位相レベルを指定します.
備考: phase_typeにmulti_levelを指定した場合に有効になります.binary_levelの場合には自動的に2になります.
また,phase_levelに0を指定すると,phase_typeは自動的にanalog_levelになります.
phase_division_number(<整数>) ORAにおいて,位相の最小変化量を指定します.最小変化量は,最大位相量を,ここで指定した値で割った値になります.
量子化
start_quantization(<整数>) 量子化を開始する反復回数を指定します.
quantization_repeat_number(<整数>) LAMBDAでは,10段階のプロセスから成る量子化を行います.各段階における反復回数を指定します.
出力像の誤差
err_tolerance_times(<整数>) アナログレベルのフィルタを設計する場合,理想的な点像分布に対する設計フィルタの出力像の誤差が,増加,または変わらない場合が,ここで指定した数以上生じたところで,設計を終了します.
err_improvement_ratio(<実数>) アナログレベルのフィルタを設計する場合,理想的な点像分布に対する設計フィルタの出力像の誤差が,1回前の反復時の誤差に対して,ここで指定した割合よりも減少が少なかった場合,出力パターンの品質は改善されなかったとみなします.
出力ファイルの制御
write_only_best_filter(<スイッチ>) スイッチにはyesまたはnoを指定します.yesを指定した場合,最良のフィルタとその出力像のみがファイルに保存されます.noを指定すると,candidate_numberで指定した数のフィルタと出力像が保存されます.
グリッド
ピクセル単位 output_pixel_sizeをあらかじめ指定しておく必要があります.
p_grid_center_x(<整数>)  
p_grid_center_y(<整数>)  
p_grid_pitch(<整数>)  
p_grid_pitch_x(<整数>)  
p_grid_pitch_y(<整数>)  
実寸
  grid_center_x(<実数>)  
  grid_center_y(<実数>)  
  grid_pitch(<実数>)  
  grid_pitch_x(<実数>)  
  grid_pitch_y(<実数>)  
フィルタタイプ これは,フィルタタイプのデフォルトを指定するために利用します.個々のフィルタに対しては,ファイル名の直前に指定します.下のフィルタタイプの項目を参照.
dimenstion_type(<次元>) 出力像の次元を指定します.dim1 (1次元), dim2 (2次元), circular (1次元の回転体)を指定できます.
wavelength_type(<波長>) 波長数を指定します.monochromatic (単一波長), multiwavelength (多波長) を指定できます.
diffraction_type(<回折>) 回折型を指定します.fraunhofer, fresnelが指定できます.
transmission_type(<透過か反射>) 透過型フィルタの場合transmissive, 反射型フィルタの場合reflectiveを指定します.
phase_type(<位相>) 位相型を指定します.analog_level(アナログ), multi_level(マルチレベル), binary_level(バイナリレベル)を指定できます.
備考: binary_levelを指定すると,自動的にphase_levelは2になります.
output_control_type(<スイッチ>) フィルタ設計を行うか,抑制するかを指定します.cancelの場合,全てのフィルタは設計されません.activeの場合,全てのフィルタが設計されます.ただし,フィルタ名の直前に指定したフィルタタイプが優先されます.
design_algorithm_type(<設計アルゴリズム>) 設計アルゴリズムを指定します.gs, oraが指定できます.ただし,wavelength_typeにmultiwavelengthを指定した場合は,oraしか利用できません.
Topへ


出力像の次元
dim1 1次元出力像の位相フィルタを設計します.
dim2 2次元出力像の位相フィルタを設計します.
dim3 3次元出力像の位相フィルタを設計します.ORA法を用いたフレネル回折の設計でのみ指定できます.
  circular 回転対称像(2次元)を設計します.
波長
monochromatic 単一波長に対するフィルタを設計します.
multiwavelength 波長多重フィルタを設計します.波長ごとに異なる像を出力することができます.
回折
fraunhofer 位相フィルタと出力像の間は,光はフラウンホーファ回折で伝播するとします.
fresnel 位相フィルタと出力像の間は,光はフレネル回折で伝播するとします.

defocus レンズを用いたフラウンホーファ回折において,フィルタ位置をレンズからfilter_position_from_lensだけ手前にずらした場合の光伝播を計算します.(フラウンホーファ回折とフレネル回折の中間になる)
透過型か反射型
transmissive 位相フィルタは透過型とします.
備考: 現バージョンではGSのみ対応
reflective 位相フィルタは反射型とします.
備考: 現バージョンではGSのみ対応
位相
binary_level 2レベル
multi_level 位相レベルは,4, 8, 16, 32レベルから選択できます.レベル数は,phase_levelで指定します.
analog_level 位相レベルは連続値になります.
設計
cancel これを指定したフィルタは,設計しません.
active これを指定したフィルタは,設計します.
設計アルゴリズム
gs GSアルゴリズムで,位相フィルタを設計します.
ora ORA法で,位相フィルタを設計します.
点像分布 pで始まる描画キーワードは,ピクセル単位,またはグリッドが指定されているときには,グリッドを単位として座標を指定します.
備考: dimension_typeにdim3を指定した場合,座標は3次元で与えます.

ピクセル・グリッド系
p_image("<filename>", <x>, <y>, <intensity>) filenameで指定した画像ファイルを,座標(x, y)に配置します.読み込める画像は,グレイ256レベルのWindows BMPファイルのみです.階調値255がintensityに対応します.
x, y: 整数, intensity: 実数
対応次元: dim2
対応アルゴリズム: GS
p_oal_point(<x1>, <y1>, <x2>, <y2>) 特殊用途向け.光アレイロジック用.
対応次元: dim2
対応アルゴリズム: GS
p_point(<x>, <y>, <intensity>)
p_point(<x>, <y>, <z>, <intensity>)
座標(x, y)に,intensityで指定した強度をもつ点を配置します.
  p_line(<x1>, <y1>, <x2>, <y2>, <intensity>)  
  p_box(<x1>, <y1>, <x2>, <y2>, <intensity>)  
p_box_fill(<x1>, <y1>, <x2>, <y2>, <intensity>)
p_box_fill(<x1>, <y1>, <z1>, <x2>, <y2>, <z2>, <intensity>)
(x1, y1)を始点,(x2, y2)を終点とする矩形領域を,強度intensityで塗りつぶします.
実寸系
  image("<filename>", <x>, <y>, <intensity>)  
point(<x>, <y>, <intensity>)
point(<x>, <y>, <z>, <intensity>)
現在ORAのみのサポート
  line(<x1>, <y1>, <x2>, <y2>, <step>, <intensity>)  
  box(<x1>, <y1>, <x2>, <y2>, <step>, <intensity>)  
  box_fill(<x1>, <y1>, <x2>, <y2>, <step>, <intensity>)
box_fill(<x1>, <y1>, <z1>, <x2>, <y2>, <z2>, <step>, <intensity>)
 
Topへ

連絡先:ogura@ist.osaka-u.ac.jp