各区間[s,t]は1つの整数pに一対一対応させる。p.【0069】例えば、次の関数h(s,t)によって区間[s,t]を1つの整数p=h(s,t)に対応させることができる。+1)/2)から区間[s,t]は、次のように求められる。このような計算はどの領域が最大のゲインを有するのかを決定する際には用いることはない。that,[s,t]は1つの整数と同一視して取り扱う。Also,上記数38は一例にすぎず、他の関数を用いても問題ない。functions.【0071】次に領域を記憶しておく配列を用意する。+1)/2の整数型2次元配列であり、W,U,D,N−Typeのそれぞれに対して1つ用意する。U,D,N})と表すこととする。m-1列の第m−2列からの変化傾向Yを表す数値を記憶する。(m,[s,t])=Y:[x,y]と表す。y]を表すのに用いる(図18参照)。18).【0073】但し、第m列が領域の左端列である場合に、第m−1列にはつながらないことを表すために、この下位ビットには領域の左端を表す値を入れる。29ビット目を領域の左端を表すフラグにすればよい。region.【0074】では、最終的に最大のゲインを有する直交凸領域を求める処理を図19を用いて説明する。0,mを初期化する(ステップ1610)。xであるか判断する(ステップ1620)。xに達して、全ての列について以下の計算が終了したかを判断するものである。(s,t)を計算し、その結果を記憶する。この計算の順番は任意である。(s,t)の計算は、先に示した数30の計算を実施すればよい。(m,[s+1,t])となる。row−1列は、必ずW−Typeであるから、第m−1列の第m−2列からの変化傾向は記憶する必要ない。(s,t)の計算は、先に示した数33の計算を実施すればよい。(m,[s,t-1])が記憶される。(s,t)の計算は、先に示した数36の計算を実施すればよい。(m,[s+1,t])が記憶される。(s,t)の計算は、先に示した数37の計算を実施すればよい。(s,t)を記憶しておく必要はない。第m列の計算を実施している時には、その第m列と第m−1列の計算結果のみを用いる。よって、W,U,D,N−Typeごとに2列分の記憶容量があればよい。余裕があれば全て記憶しておいてもよい。19,mを1インクリメントして(ステップ1640)、ステップ1620に戻る。この処理を全ての列について実施する。