JP2000123149A - 画像生成方法及び装置 - Google Patents
画像生成方法及び装置Info
- Publication number
- JP2000123149A JP2000123149A JP29090298A JP29090298A JP2000123149A JP 2000123149 A JP2000123149 A JP 2000123149A JP 29090298 A JP29090298 A JP 29090298A JP 29090298 A JP29090298 A JP 29090298A JP 2000123149 A JP2000123149 A JP 2000123149A
- Authority
- JP
- Japan
- Prior art keywords
- expression
- image
- algebraic
- area
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Image Processing (AREA)
- Studio Circuits (AREA)
Abstract
(57)【要約】
【課題】 画像を合成するときの演算式を簡略化するこ
とで画像を合成するときの処理量を低減する。 【解決手段】 操作命令に応じて複数の画像が占める領
域を合成する内容を示し、各画像が占める領域を示すオ
ペランドと上記各画像を合成するときの処理手法を示す
演算子とからなる論理演算式を生成し、上記論理演算式
を構成するオペランドを処理の対象として各画像を示す
領域の名称に変換し、上記演算子を演算の種類及び演算
の優先順位を示す括弧に変換することで、上記論理演算
式を代数演算式に変換し、代数演算式を用いて、上記複
数の画像を合成して新たな画像を生成する。
とで画像を合成するときの処理量を低減する。 【解決手段】 操作命令に応じて複数の画像が占める領
域を合成する内容を示し、各画像が占める領域を示すオ
ペランドと上記各画像を合成するときの処理手法を示す
演算子とからなる論理演算式を生成し、上記論理演算式
を構成するオペランドを処理の対象として各画像を示す
領域の名称に変換し、上記演算子を演算の種類及び演算
の優先順位を示す括弧に変換することで、上記論理演算
式を代数演算式に変換し、代数演算式を用いて、上記複
数の画像を合成して新たな画像を生成する。
Description
【0001】
【発明の属する技術分野】本発明は、複数の画像を合成
して新たな画像を生成する画像生成方法及び装置に関
し、詳しくは、画像内に含まれる対象物の輪郭を示す複
数のキー画像を合成して新たな画像を生成する画像生成
方法及び装置に関する。
して新たな画像を生成する画像生成方法及び装置に関
し、詳しくは、画像内に含まれる対象物の輪郭を示す複
数のキー画像を合成して新たな画像を生成する画像生成
方法及び装置に関する。
【0002】
【従来の技術】従来の画像中の対象物について輪郭を抽
出してキー画像を生成する技術は、物体認識、追尾、画
像合成等の様々な分野で応用される基本的かつ重要な画
像処理技術である。上記キー画像としては、対象物の輪
郭部分において前景画像の値を1とし、背景画像の値α
を0として2値で表したハードキーと称されるものや、
対象物の輪郭部分を2本の境界曲線により構成し、境界
曲線間で上記前景画像と背景画像の寄与率値αを0から
1まで徐々に変化させたソフトキーと称されるものがあ
る。
出してキー画像を生成する技術は、物体認識、追尾、画
像合成等の様々な分野で応用される基本的かつ重要な画
像処理技術である。上記キー画像としては、対象物の輪
郭部分において前景画像の値を1とし、背景画像の値α
を0として2値で表したハードキーと称されるものや、
対象物の輪郭部分を2本の境界曲線により構成し、境界
曲線間で上記前景画像と背景画像の寄与率値αを0から
1まで徐々に変化させたソフトキーと称されるものがあ
る。
【0003】複数のキー画像を合成して新たなキー画像
を生成するときにおいては、通常の画像について行う合
成処理と同様の処理を行う。ここで、キー画像を合成す
る場合において、前景画像をF、背景画像をBとする
と、合成後の画像Cは、 C=α*F+(1−α)*B と表現される。上記演算式は、例えばビデオ機器で画像
を合成するときに用いられることが多い。また、上記演
算式は、CG(コンピュータ・グラフィック)技術を記
したの代表的な書籍であるJ.Foley、A.van Dam他著の
「Computer Graphics Principles And Practices」Addi
son-Wesley出版(1996)にも詳しく述べられている。
を生成するときにおいては、通常の画像について行う合
成処理と同様の処理を行う。ここで、キー画像を合成す
る場合において、前景画像をF、背景画像をBとする
と、合成後の画像Cは、 C=α*F+(1−α)*B と表現される。上記演算式は、例えばビデオ機器で画像
を合成するときに用いられることが多い。また、上記演
算式は、CG(コンピュータ・グラフィック)技術を記
したの代表的な書籍であるJ.Foley、A.van Dam他著の
「Computer Graphics Principles And Practices」Addi
son-Wesley出版(1996)にも詳しく述べられている。
【0004】上記演算式による画像合成は、ある画像上
に他の画像を重ねる処理を実現するものであるが、各画
像の領域の重複する部分について合成処理を行う等の多
様な合成演算についての上記寄与率αを用いた演算を一
般化した技術が、T.Porter,T.Duff著の「Compositing D
igital , Images Computer Graphics誌 , Vol.18,No.3,
P.253-259(1984)」で知られている。この公知技術は、
合成処理がなされる二つの画像内で定義されている領域
Aと領域Bとについて、一方の領域Aを他方の領域Bの
上に重ねて合成する、領域A,Bについて合成した後領
域A,Bの重なっている部分だけを取り出す、重なりの
ない部分だけを取り出す等、全部で11種類の合成演算
を定義し、それらを領域A,BそれぞれのRGB値と寄
与率αの値とを用いた計算式で表現している。
に他の画像を重ねる処理を実現するものであるが、各画
像の領域の重複する部分について合成処理を行う等の多
様な合成演算についての上記寄与率αを用いた演算を一
般化した技術が、T.Porter,T.Duff著の「Compositing D
igital , Images Computer Graphics誌 , Vol.18,No.3,
P.253-259(1984)」で知られている。この公知技術は、
合成処理がなされる二つの画像内で定義されている領域
Aと領域Bとについて、一方の領域Aを他方の領域Bの
上に重ねて合成する、領域A,Bについて合成した後領
域A,Bの重なっている部分だけを取り出す、重なりの
ない部分だけを取り出す等、全部で11種類の合成演算
を定義し、それらを領域A,BそれぞれのRGB値と寄
与率αの値とを用いた計算式で表現している。
【0005】キー画像が上記ソフトキーを含んで構成さ
れている場合、寄与率αは0と1の中間の値を取りう
る。寄与率αは画素に対するその領域の寄与率と考えら
れる。ここで、二つの領域A,Bがひとつの画素内に存
在する場合、上述のPorterらによる方法では、そ
れぞれの領域A,Bにおける単独での寄与率αaとαb
とは、互いに独立であるという仮定をしている。つまり
画素の内側は、以下の寄与率を持つ4つの部分に常に分
類されると仮定している。 (1)領域Aと領域Bのどちらにも覆われない部分 (1-
αa)(1-αb) (2)領域Aだけに覆われる部分 αa(1-αb) (3)領域Bだけに覆われる部分 (1-αa)αb (4)領域Aと領域Bの両方に覆われる部分 αa αb 寄与率αを、領域A,Bが画素に存在する確率と解釈す
ることができ、この解釈に従えば、例えば領域Aと領域
Bの両方に覆われるとは、領域Aと領域Bの両方の事象
が発生する確率と説明できる。上述した計算はこの解釈
に基づく条件付き確率の計算として理解することができ
る。Porterらの方法による仮定は、確率の用語に
あてはめれば二つの確率が互いに独立である、という仮
定に相当する。
れている場合、寄与率αは0と1の中間の値を取りう
る。寄与率αは画素に対するその領域の寄与率と考えら
れる。ここで、二つの領域A,Bがひとつの画素内に存
在する場合、上述のPorterらによる方法では、そ
れぞれの領域A,Bにおける単独での寄与率αaとαb
とは、互いに独立であるという仮定をしている。つまり
画素の内側は、以下の寄与率を持つ4つの部分に常に分
類されると仮定している。 (1)領域Aと領域Bのどちらにも覆われない部分 (1-
αa)(1-αb) (2)領域Aだけに覆われる部分 αa(1-αb) (3)領域Bだけに覆われる部分 (1-αa)αb (4)領域Aと領域Bの両方に覆われる部分 αa αb 寄与率αを、領域A,Bが画素に存在する確率と解釈す
ることができ、この解釈に従えば、例えば領域Aと領域
Bの両方に覆われるとは、領域Aと領域Bの両方の事象
が発生する確率と説明できる。上述した計算はこの解釈
に基づく条件付き確率の計算として理解することができ
る。Porterらの方法による仮定は、確率の用語に
あてはめれば二つの確率が互いに独立である、という仮
定に相当する。
【0006】つぎに、上述のPorterらの仮定を採
用して、二つの画像を示す領域A,Bを合成するときの
条件を示す演算の一例について説明する。なお、以下の
説明では寄与率αだけを扱うので、簡単のため領域Aの
寄与率αをαaと記す代わりに、単にAと記すことにす
る。図20に示すように、二つの領域Aと領域Bの共通
部分を取り出す演算(and)は A*B と表現される。また図20に示すように二つの領域A,
Bの少なくともいずれか(論理和)に属する領域を取り
出す演算(or)は A+B−A*B と表現される。更に、領域Aに属さない部分を取り出す
演算(not)は 1−A と表現される。画像合成のソースとなる各対象物のキー
画像を生成する手法は多数知られている。例えば、本出
願人による特願平8-339038号に開示した手法によっても
対象物のキー画像を生成することができる。この他に、
キー画像を合成する手法としては、対象物と周囲の色の
違いに着目して合成を行うクロマキーと呼ばれる手法も
知られている。
用して、二つの画像を示す領域A,Bを合成するときの
条件を示す演算の一例について説明する。なお、以下の
説明では寄与率αだけを扱うので、簡単のため領域Aの
寄与率αをαaと記す代わりに、単にAと記すことにす
る。図20に示すように、二つの領域Aと領域Bの共通
部分を取り出す演算(and)は A*B と表現される。また図20に示すように二つの領域A,
Bの少なくともいずれか(論理和)に属する領域を取り
出す演算(or)は A+B−A*B と表現される。更に、領域Aに属さない部分を取り出す
演算(not)は 1−A と表現される。画像合成のソースとなる各対象物のキー
画像を生成する手法は多数知られている。例えば、本出
願人による特願平8-339038号に開示した手法によっても
対象物のキー画像を生成することができる。この他に、
キー画像を合成する手法としては、対象物と周囲の色の
違いに着目して合成を行うクロマキーと呼ばれる手法も
知られている。
【0007】
【発明が解決しようとする課題】従来において用いられ
ていた画像合成技術としては、上述のPorterらに
よる方法がある。ここで、キー画像は寄与率αそのもの
の画像であることから、上述のPorterらによる合
成演算を複数のキー画像を合成するときにおいても利用
することができる。しかし、上述の画像合成技術を、キ
ー画像を合成することに応用すると、以下に述べるよう
な問題点がある。
ていた画像合成技術としては、上述のPorterらに
よる方法がある。ここで、キー画像は寄与率αそのもの
の画像であることから、上述のPorterらによる合
成演算を複数のキー画像を合成するときにおいても利用
することができる。しかし、上述の画像合成技術を、キ
ー画像を合成することに応用すると、以下に述べるよう
な問題点がある。
【0008】すなわち、上述のように、領域Aと領域B
のそれぞれの寄与率αは互いに独立であるという仮定が
ある。この仮定は通常の画像の合成の場合には、合成し
た画像について目視できるような問題を引き起こさな
い。しかし、複数のキー画像を合成して新たな画像を生
成するときには、多様なしかも複雑な合成演算が要求さ
れ、その過程で上述の仮定が成り立たない場合も頻繁に
発生する。例えば図21に示すように、 A or (not A) という演算の結果が1とはならず、元の画素値が0より
大きく1未満であった部分の画素値が1より小さくなっ
てしまう。更に、 A and A という演算においては、意味的には領域A自身のみを示
す画像となるが、上述の手法により演算を行うと、A2
となり、Aとはならない。このため、ソフトキーのキー
画像においては、元の画素値が1未満の画素の値が2乗
されてより小さくなってしまう。すなわち、対象物の輪
郭部分を示すキー画像のα値が1未満であるとき、例え
ば画素値が0.5であったとすると、計算後の値が0.
25となってしまい、0.5とはならないという問題点
がある。このような問題は、合成演算のオペランドとな
る領域の寄与率が互いに独立であるという従来の手法の
前提に起因する。この従来の手法においては、2つのオ
ペランドが同じ領域であったとき、寄与率が独立である
という仮定が成り立たないため、上述のような問題が発
生する。
のそれぞれの寄与率αは互いに独立であるという仮定が
ある。この仮定は通常の画像の合成の場合には、合成し
た画像について目視できるような問題を引き起こさな
い。しかし、複数のキー画像を合成して新たな画像を生
成するときには、多様なしかも複雑な合成演算が要求さ
れ、その過程で上述の仮定が成り立たない場合も頻繁に
発生する。例えば図21に示すように、 A or (not A) という演算の結果が1とはならず、元の画素値が0より
大きく1未満であった部分の画素値が1より小さくなっ
てしまう。更に、 A and A という演算においては、意味的には領域A自身のみを示
す画像となるが、上述の手法により演算を行うと、A2
となり、Aとはならない。このため、ソフトキーのキー
画像においては、元の画素値が1未満の画素の値が2乗
されてより小さくなってしまう。すなわち、対象物の輪
郭部分を示すキー画像のα値が1未満であるとき、例え
ば画素値が0.5であったとすると、計算後の値が0.
25となってしまい、0.5とはならないという問題点
がある。このような問題は、合成演算のオペランドとな
る領域の寄与率が互いに独立であるという従来の手法の
前提に起因する。この従来の手法においては、2つのオ
ペランドが同じ領域であったとき、寄与率が独立である
という仮定が成り立たないため、上述のような問題が発
生する。
【0009】上述の「A and A」を用いて説明した
ように、演算のオペランドが同じ領域である場合には、
これを検出して特別なルール、すなわち、「A and
A」であるときには「A」とすることを適用することが
考えられる。しかし、実際のキー画像の合成において
は、このような容易な場合は例外であることが多い。
ように、演算のオペランドが同じ領域である場合には、
これを検出して特別なルール、すなわち、「A and
A」であるときには「A」とすることを適用することが
考えられる。しかし、実際のキー画像の合成において
は、このような容易な場合は例外であることが多い。
【0010】図22に示すように、例えば (A and B) or (A and C) で示される論理演算式を用いてキー画像の合成処理を行
うときについて説明する。ここで、上述の従来の手法で
は、先ず、 A and B を求めるために領域Aのキー画像と領域Bのキー画像の
代数的な積ABを計算し、これを中間画像として保持す
る。そして、次の演算 A and C についても同様に積ACを中間画像として保持する。a
nd演算の二つのオペランドは異なる領域であるから、
この中間画像を生成する段階での計算は正しい。更に次
の演算では、二つの中間画像についてorの演算を行
う。ここで、上述の図20に示したorの演算規則に従
えば、 A*B+A*C−A2*B*C となる。これは、上述のように従来の手法では、前提と
して寄与率が各オペランドについて独立であることによ
るものであり、本来は、 A*B+A*C−A*B*C とならなければならない。しかし、ORの計算の時点で
はオペランドは二つの中間画像であり、その両方のオペ
ランドが領域Aの成分を含むか否かは中間画像のみから
は判断できない。また、仮に何らかの補正を試みるとし
ても、既に中間画像では元のA単独の値の情報は失われ
ているので、オペランドの画像のみから補正を行うこと
は不可能である。
うときについて説明する。ここで、上述の従来の手法で
は、先ず、 A and B を求めるために領域Aのキー画像と領域Bのキー画像の
代数的な積ABを計算し、これを中間画像として保持す
る。そして、次の演算 A and C についても同様に積ACを中間画像として保持する。a
nd演算の二つのオペランドは異なる領域であるから、
この中間画像を生成する段階での計算は正しい。更に次
の演算では、二つの中間画像についてorの演算を行
う。ここで、上述の図20に示したorの演算規則に従
えば、 A*B+A*C−A2*B*C となる。これは、上述のように従来の手法では、前提と
して寄与率が各オペランドについて独立であることによ
るものであり、本来は、 A*B+A*C−A*B*C とならなければならない。しかし、ORの計算の時点で
はオペランドは二つの中間画像であり、その両方のオペ
ランドが領域Aの成分を含むか否かは中間画像のみから
は判断できない。また、仮に何らかの補正を試みるとし
ても、既に中間画像では元のA単独の値の情報は失われ
ているので、オペランドの画像のみから補正を行うこと
は不可能である。
【0011】更に、上述の画像を合成する手法における
他の課題としては、合成処理の高速化が挙げられる。す
なわち、キー画像を合成する処理は、多数の領域を合成
するため、演算処理が複雑となることが多い。また、キ
ー画像を合成するときには、オペレータにとって簡易な
合成演算式は必ずしも合成演算の数が少ない式とは限ら
ない。例えば、図23に示すような同一の合成結果を得
るための演算式においても、 (1) (A AND B) OR C (2) C OR (A AND B AND (NOT C)) (3) (A OR C) AND (B OR C) と表現可能である。しかし、オペレータにとって、いづ
れの論理演算式が容易であるかは、合成処理を行うとき
の各キー画像の領域や位置関係により異なり、上記(1)
と比較して合成演算の多い上記(2)や上記(3)で演算して
合成することが望ましいこともある。このような場合に
おいても、上記(1)と比較して合成処理を行うための処
理時間が増加することは好ましいことではなく、上記
(1)を用いて合成処理を行ったときと同等の処理時間で
処理することが必要となる。特に、画像を合成するとき
の合成演算は、複数の画像の各画素同士についての演算
であることから、画素数の大きい画像における処理時間
の問題は更に重要となる。
他の課題としては、合成処理の高速化が挙げられる。す
なわち、キー画像を合成する処理は、多数の領域を合成
するため、演算処理が複雑となることが多い。また、キ
ー画像を合成するときには、オペレータにとって簡易な
合成演算式は必ずしも合成演算の数が少ない式とは限ら
ない。例えば、図23に示すような同一の合成結果を得
るための演算式においても、 (1) (A AND B) OR C (2) C OR (A AND B AND (NOT C)) (3) (A OR C) AND (B OR C) と表現可能である。しかし、オペレータにとって、いづ
れの論理演算式が容易であるかは、合成処理を行うとき
の各キー画像の領域や位置関係により異なり、上記(1)
と比較して合成演算の多い上記(2)や上記(3)で演算して
合成することが望ましいこともある。このような場合に
おいても、上記(1)と比較して合成処理を行うための処
理時間が増加することは好ましいことではなく、上記
(1)を用いて合成処理を行ったときと同等の処理時間で
処理することが必要となる。特に、画像を合成するとき
の合成演算は、複数の画像の各画素同士についての演算
であることから、画素数の大きい画像における処理時間
の問題は更に重要となる。
【0012】更にまた、上述の画像を合成するときにお
ける他の課題としては、合成演算に必要なメモリの消費
量を削減することが挙げられる。すなわち、キー画像を
合成するときにおいては、合成するための演算式が複雑
であることから、演算式の処理が多く発生し、演算途中
の中間結果を示すキー画像を保存する多くのメモリ量を
必要となる。従って、画像を合成する処理においては、
中間結果を保存する情報量を低減するとともに、各画素
の語長(ビット数)を最小とすることが重要である。
ける他の課題としては、合成演算に必要なメモリの消費
量を削減することが挙げられる。すなわち、キー画像を
合成するときにおいては、合成するための演算式が複雑
であることから、演算式の処理が多く発生し、演算途中
の中間結果を示すキー画像を保存する多くのメモリ量を
必要となる。従って、画像を合成する処理においては、
中間結果を保存する情報量を低減するとともに、各画素
の語長(ビット数)を最小とすることが重要である。
【0013】そこで、本発明は、上述したような実情に
鑑みて提案されたものであり、画像を合成するときの演
算式を簡略化することで画像を合成するときの処理量を
低減することができる画像生成方法及び装置を提供する
ことを目的とする。
鑑みて提案されたものであり、画像を合成するときの演
算式を簡略化することで画像を合成するときの処理量を
低減することができる画像生成方法及び装置を提供する
ことを目的とする。
【0014】
【課題を解決するための手段】上述の課題を解決する本
発明に係る画像生成方法及び装置は、操作命令に応じて
複数の画像が占める領域を合成する内容を示し、各画像
が占める領域を示すオペランドと上記各画像を合成する
ときの処理手法を示す演算子とからなる論理演算式を生
成し、上記論理演算式を構成するオペランドを処理の対
象として各画像を示す領域の名称に変換し、上記演算子
を演算の種類及び演算の優先順位を示す括弧に変換する
ことで、上記論理演算式を代数演算式に変換し、代数演
算式を用いて、上記複数の画像を合成して新たな画像を
生成することを特徴とする。
発明に係る画像生成方法及び装置は、操作命令に応じて
複数の画像が占める領域を合成する内容を示し、各画像
が占める領域を示すオペランドと上記各画像を合成する
ときの処理手法を示す演算子とからなる論理演算式を生
成し、上記論理演算式を構成するオペランドを処理の対
象として各画像を示す領域の名称に変換し、上記演算子
を演算の種類及び演算の優先順位を示す括弧に変換する
ことで、上記論理演算式を代数演算式に変換し、代数演
算式を用いて、上記複数の画像を合成して新たな画像を
生成することを特徴とする。
【0015】このような画像生成装置及び方法によれ
ば、合成処理の対象となる画像及び当該画像を合成する
手法からなる論理演算式を代数変換式に変換し、当該代
数演算式を用いて複数の画像を合成して新たな画像を生
成する処理を行う。
ば、合成処理の対象となる画像及び当該画像を合成する
手法からなる論理演算式を代数変換式に変換し、当該代
数演算式を用いて複数の画像を合成して新たな画像を生
成する処理を行う。
【0016】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照しながら詳細に説明する。
て図面を参照しながら詳細に説明する。
【0017】本発明を適用した画像生成装置1は、図1
に示すように、例えばユーザが操作するキーボードやポ
インティングデバイス等からなるGUI(Graphic User
Interface)2を備える。このGUI2は、ユーザに操
作されることで、複数のキー画像を合成する論理演算式
を操作入力命令として演算式処理部3に出力するととも
に、キー画像及び当該キー画像を示す領域の画像中にお
ける座標位置及びキー画像が画面内を占める領域を示す
物体輪郭情報をキー画像合成部4に出力する。
に示すように、例えばユーザが操作するキーボードやポ
インティングデバイス等からなるGUI(Graphic User
Interface)2を備える。このGUI2は、ユーザに操
作されることで、複数のキー画像を合成する論理演算式
を操作入力命令として演算式処理部3に出力するととも
に、キー画像及び当該キー画像を示す領域の画像中にお
ける座標位置及びキー画像が画面内を占める領域を示す
物体輪郭情報をキー画像合成部4に出力する。
【0018】キー画像は、画面内の対象物の輪郭を表す
3次元の曲面であり、当該曲面のX、Y成分が対象物の
輪郭形状を示し、Z成分が曲面の各点におけるキー値を
示す。また、キー画像合成部4における合成処理の対象
となるキー画像は、例えば特開平7-133761号公報に開示
された手法を用いて生成されていても良く、更にはクロ
マキー等の公知の技術を用いて生成されていても良い。
3次元の曲面であり、当該曲面のX、Y成分が対象物の
輪郭形状を示し、Z成分が曲面の各点におけるキー値を
示す。また、キー画像合成部4における合成処理の対象
となるキー画像は、例えば特開平7-133761号公報に開示
された手法を用いて生成されていても良く、更にはクロ
マキー等の公知の技術を用いて生成されていても良い。
【0019】ここで、キー画像は、画像内に含まれる対
象物の輪郭を示す閉曲線からなる画像であり、例えば図
2に示すように、body,wheel1,cap1,wheel2,cap2を示す
閉曲線からなる。そして、GUI2は、例えば図3に示
すような画像を合成して生成するときには、例えば「(w
heel1 and not cap1) or (wheel2 and not cap2)」とい
う論理演算式を生成する処理を行うことで、後述の各部
により画像を合成する処理を行わせる。
象物の輪郭を示す閉曲線からなる画像であり、例えば図
2に示すように、body,wheel1,cap1,wheel2,cap2を示す
閉曲線からなる。そして、GUI2は、例えば図3に示
すような画像を合成して生成するときには、例えば「(w
heel1 and not cap1) or (wheel2 and not cap2)」とい
う論理演算式を生成する処理を行うことで、後述の各部
により画像を合成する処理を行わせる。
【0020】GUI2から出力される論理演算式は、キ
ー画像を示す領域の名称と、andやor等の演算を示
す演算子からなる文字列である。この論理演算式は、例
えば一のキー画像を示す領域Aと他のキー画像を示す領
域Bとを重複させた領域を示すときには A or B という文字列となる。ここで、GUI2が演算式処理部
3で演算処理をするときに指定する論理演算式として
は、複数の領域を重複させる論理演算を示す「an
d」、複数の領域の和を取り出す論理演算を示す「o
r」、複数の領域の外側を取り出す論理演算を示す「n
ot」である。更に、論理演算式としては、演算の優先
順位を示す括弧を用いる。例えば (A and B or C) and (not D) という論理演算式は、領域A,B,Cのいづれかの領域
に属し、かつ領域Dには含まれない部分を示す。
ー画像を示す領域の名称と、andやor等の演算を示
す演算子からなる文字列である。この論理演算式は、例
えば一のキー画像を示す領域Aと他のキー画像を示す領
域Bとを重複させた領域を示すときには A or B という文字列となる。ここで、GUI2が演算式処理部
3で演算処理をするときに指定する論理演算式として
は、複数の領域を重複させる論理演算を示す「an
d」、複数の領域の和を取り出す論理演算を示す「o
r」、複数の領域の外側を取り出す論理演算を示す「n
ot」である。更に、論理演算式としては、演算の優先
順位を示す括弧を用いる。例えば (A and B or C) and (not D) という論理演算式は、領域A,B,Cのいづれかの領域
に属し、かつ領域Dには含まれない部分を示す。
【0021】演算式処理部3は、上述のGUI2からの
論理演算式を用いて、複数のキー画像同士の代数演算を
示す代数演算列を生成してキー画像合成部4に出力す
る。この代数演算列は、キー画像同士の代数的な演算を
指示する命令の列であり、乗算、加算、キー画像の反転
等を示す。また、代数演算列は、演算途中の中間結果を
保持する場所が指示する。
論理演算式を用いて、複数のキー画像同士の代数演算を
示す代数演算列を生成してキー画像合成部4に出力す
る。この代数演算列は、キー画像同士の代数的な演算を
指示する命令の列であり、乗算、加算、キー画像の反転
等を示す。また、代数演算列は、演算途中の中間結果を
保持する場所が指示する。
【0022】例えば、演算式処理部3は、GUI2から A or B を示す論理演算式が入力されたときには、以下の代数演
算列を生成する。 1.S ← !A 2.S ← S*B 3.S ← T+A ここでSは、中間画像を保持するレジスタ、すなわちメ
モリの格納領域を表している。また、上記A,Bは、領
域Aを占めるキー画像と、領域Bを占めるキー画像を表
している。更に、上記!Aは、画素の最高輝度(白画
像)からAの画素値を減じる処理、すなわち画像の反転
処理を意味する。ここで、最高輝度を1に正規化して表
せば、!Aは !A=(1−A) となる。
算列を生成する。 1.S ← !A 2.S ← S*B 3.S ← T+A ここでSは、中間画像を保持するレジスタ、すなわちメ
モリの格納領域を表している。また、上記A,Bは、領
域Aを占めるキー画像と、領域Bを占めるキー画像を表
している。更に、上記!Aは、画素の最高輝度(白画
像)からAの画素値を減じる処理、すなわち画像の反転
処理を意味する。ここで、最高輝度を1に正規化して表
せば、!Aは !A=(1−A) となる。
【0023】この演算式処理部3は、図4に示すような
構成となされている。すなわち、この演算式処理部3
は、GUI2から論理演算式が入力される構文解析部1
1を備えている。この構文解析部11は、入力された論
理演算式を演算ツリーに変換して代数式変換部12に出
力する。具体的には、この構文解析部11は、GUI2
から「A or B」を示す論理演算式が入力されたとき
には、図5に示すような演算ツリーに変換する。ここ
で、図5中の演算ツリーにおいて、□でキー画像が占め
る領域の名称を表し、○で2つのキー画像についての演
算子を表し、△で1つのキー画像についての反転処理を
行う演算子を示す。また、図示しないが、この演算ツリ
ーには、ある領域全体について同じ画素値の画像(定数
画像)を示す0〜1の数値が表される。ここで定数画像
とは、例えば領域全体が中間輝度の灰色の画像を0.5
と表す。例えば A and 0.5 と表現された論理演算式は、領域Aのキー画像と領域全
体の輝度が0.5の灰色画像とをAND演算することを
示し、結果として領域Aのキー画像の画素値が全体的に
半分の輝度とすることを示す。
構成となされている。すなわち、この演算式処理部3
は、GUI2から論理演算式が入力される構文解析部1
1を備えている。この構文解析部11は、入力された論
理演算式を演算ツリーに変換して代数式変換部12に出
力する。具体的には、この構文解析部11は、GUI2
から「A or B」を示す論理演算式が入力されたとき
には、図5に示すような演算ツリーに変換する。ここ
で、図5中の演算ツリーにおいて、□でキー画像が占め
る領域の名称を表し、○で2つのキー画像についての演
算子を表し、△で1つのキー画像についての反転処理を
行う演算子を示す。また、図示しないが、この演算ツリ
ーには、ある領域全体について同じ画素値の画像(定数
画像)を示す0〜1の数値が表される。ここで定数画像
とは、例えば領域全体が中間輝度の灰色の画像を0.5
と表す。例えば A and 0.5 と表現された論理演算式は、領域Aのキー画像と領域全
体の輝度が0.5の灰色画像とをAND演算することを
示し、結果として領域Aのキー画像の画素値が全体的に
半分の輝度とすることを示す。
【0024】代数式変換部12は、構文解析部11から
の演算and、or、not等の演算子と領域の名称で
表現された演算ツリーを代数演算式に変換する。すなわ
ち、この代数式変換部12は、例えば論理演算式 A and B or C を、 C+A*B−A*B*C (式1) という代数演算式に変換する。
の演算and、or、not等の演算子と領域の名称で
表現された演算ツリーを代数演算式に変換する。すなわ
ち、この代数式変換部12は、例えば論理演算式 A and B or C を、 C+A*B−A*B*C (式1) という代数演算式に変換する。
【0025】最適化部13は、代数式変換部12からの
代数演算式の最適化、すなわちキー画像合成部4でキー
画像を合成する処理を少なくするための代数演算式の簡
略化を行う。この最適化部13は、例えば上記式1に示
した代数演算式の冗長な部分を削除し、代数演算の総数
を減らす。
代数演算式の最適化、すなわちキー画像合成部4でキー
画像を合成する処理を少なくするための代数演算式の簡
略化を行う。この最適化部13は、例えば上記式1に示
した代数演算式の冗長な部分を削除し、代数演算の総数
を減らす。
【0026】因数分解部14は、最適化部13からの代
数演算式を因数でくくる処理を行うことで代数演算式の
変形を行うことにより、代数演算の総数を削減する。因
数分解部14は、例えば上記式1のCを因数として処理
するとき、上記式1をCとその反転!Cの成分に分離す
ることにより、 C+!C*A*B という代数演算式とする。
数演算式を因数でくくる処理を行うことで代数演算式の
変形を行うことにより、代数演算の総数を削減する。因
数分解部14は、例えば上記式1のCを因数として処理
するとき、上記式1をCとその反転!Cの成分に分離す
ることにより、 C+!C*A*B という代数演算式とする。
【0027】ここで、代数式変換部12、最適化部13
及び因数分解部14の処理の他の一例としては、例えば
図6に白抜き部分で示したような領域を示す論理演算式 (A or B or C) and (not D) を、 A!D + B!D + C!D - AB!D - BC!D - CA!D + ABC!D (式2) という代数演算式に代数式変換部12により変換し、因
数分解部14によりD,A,Bの順にこれらを因数とし
て処理することにより、 !D(A+!A(B+!BC)) (式3) という代数演算式に変形する。
及び因数分解部14の処理の他の一例としては、例えば
図6に白抜き部分で示したような領域を示す論理演算式 (A or B or C) and (not D) を、 A!D + B!D + C!D - AB!D - BC!D - CA!D + ABC!D (式2) という代数演算式に代数式変換部12により変換し、因
数分解部14によりD,A,Bの順にこれらを因数とし
て処理することにより、 !D(A+!A(B+!BC)) (式3) という代数演算式に変形する。
【0028】これにより、因数分解部14は、上記式2
により代数演算をしたときには乗算12回、加算6回を
行う必要があるのに対し、適切な順序で因数を選択して
処理することにより、乗算3回、加算2回の代数演算で
図6の白抜き部分で示す領域を表現することができる。
により代数演算をしたときには乗算12回、加算6回を
行う必要があるのに対し、適切な順序で因数を選択して
処理することにより、乗算3回、加算2回の代数演算で
図6の白抜き部分で示す領域を表現することができる。
【0029】演算命令生成部15は、因数分解部14か
らの代数演算式を代数演算の命令である代数演算列に変
換してキー画像合成部4に出力する。このとき、演算命
令生成部15は、キー画像合成部4により代数演算列を
用いて生成する中間画像の量が少なくなるように演算命
令の順序を決定する。
らの代数演算式を代数演算の命令である代数演算列に変
換してキー画像合成部4に出力する。このとき、演算命
令生成部15は、キー画像合成部4により代数演算列を
用いて生成する中間画像の量が少なくなるように演算命
令の順序を決定する。
【0030】また、この演算命令生成部15は、代数演
算の命令を示す代数演算列を生成するときに、当該代数
演算中に部分的なキー画像の取り出し命令も含めて生成
する。ここで、部分的なキー画像とは、画像中に含まれ
る対象物の輪郭を示す曲線を囲む領域、すなわちキー画
像全体では黒となる部分を最大限削除するように設定し
た最小の矩形領域の画像である。
算の命令を示す代数演算列を生成するときに、当該代数
演算中に部分的なキー画像の取り出し命令も含めて生成
する。ここで、部分的なキー画像とは、画像中に含まれ
る対象物の輪郭を示す曲線を囲む領域、すなわちキー画
像全体では黒となる部分を最大限削除するように設定し
た最小の矩形領域の画像である。
【0031】キー画像合成部4は、演算式処理部3から
の代数演算列に示された演算を、GUI2からの物体輪
郭情報及びキー画像を用いて実行する。これにより、キ
ー画像合成部4は、各キー画像を合成処理し、合成結果
である合成キー画像を記憶部5に出力する。そして、記
憶部5は、キー画像合成部4からの合成処理がなされた
合成キー画像を記憶する。
の代数演算列に示された演算を、GUI2からの物体輪
郭情報及びキー画像を用いて実行する。これにより、キ
ー画像合成部4は、各キー画像を合成処理し、合成結果
である合成キー画像を記憶部5に出力する。そして、記
憶部5は、キー画像合成部4からの合成処理がなされた
合成キー画像を記憶する。
【0032】このキー画像合成部4は、図7に示すよう
に、上述の演算式処理部3の演算命令生成部15から代
数演算式が入力される合成処理管理部21を備えてい
る。この合成処理管理部21は、図8に示す画面内の一
部の領域を占める部分的なキー画像、当該部分的なキー
画像の座標位置を決定するオフセット、周辺のキー値に
基づいてGUI2からのキー画像を管理する。この合成
処理管理部21は、例えば代数演算列が2つの領域につ
いての演算である場合、後述の実合成処理部22の入力
となる2枚のキー画像を用いて、出力画像領域を計算す
る。このとき、合成処理管理部21は、2枚のキー画像
を含む最小の矩形領域を出力画像領域とするように計算
を行う。また、この合成処理管理部21は、出力画像領
域を計算するとともに、当該出力画像領域の左上の座標
位置をオフセットとして計算する。なお、合成処理管理
部21は、演算命令生成部15からの代数演算列が1枚
のキー画像について行う演算を示すときには入力された
部分的なキー画像、入力されたオフセットを出力画像領
域、及びオフセットとする。そして、この合成処理管理
部21は、上述のように計算して得た出力画像領域及び
例えば「and」、「or」のような演算の種類を実合
成処理部22に出力する。
に、上述の演算式処理部3の演算命令生成部15から代
数演算式が入力される合成処理管理部21を備えてい
る。この合成処理管理部21は、図8に示す画面内の一
部の領域を占める部分的なキー画像、当該部分的なキー
画像の座標位置を決定するオフセット、周辺のキー値に
基づいてGUI2からのキー画像を管理する。この合成
処理管理部21は、例えば代数演算列が2つの領域につ
いての演算である場合、後述の実合成処理部22の入力
となる2枚のキー画像を用いて、出力画像領域を計算す
る。このとき、合成処理管理部21は、2枚のキー画像
を含む最小の矩形領域を出力画像領域とするように計算
を行う。また、この合成処理管理部21は、出力画像領
域を計算するとともに、当該出力画像領域の左上の座標
位置をオフセットとして計算する。なお、合成処理管理
部21は、演算命令生成部15からの代数演算列が1枚
のキー画像について行う演算を示すときには入力された
部分的なキー画像、入力されたオフセットを出力画像領
域、及びオフセットとする。そして、この合成処理管理
部21は、上述のように計算して得た出力画像領域及び
例えば「and」、「or」のような演算の種類を実合
成処理部22に出力する。
【0033】実合成処理部22は、GUI2から複数の
キー画像が入力されるとともに、上述の合成処理管理部
21からキー画像を合成するための出力画像領域、オフ
セット及び1回の演算に必要な演算の種類が入力され
る。この実合成処理部22は、出力画像領域において代
数演算を行ったキー画像を合成処理管理部21に出力す
る。このとき、実合成処理部22は、複数のキー画像を
合成するとき、処理領域を分割して、各領域毎に合成処
理を行う。なお、この実合成処理部22の処理の詳細に
ついては後述する。
キー画像が入力されるとともに、上述の合成処理管理部
21からキー画像を合成するための出力画像領域、オフ
セット及び1回の演算に必要な演算の種類が入力され
る。この実合成処理部22は、出力画像領域において代
数演算を行ったキー画像を合成処理管理部21に出力す
る。このとき、実合成処理部22は、複数のキー画像を
合成するとき、処理領域を分割して、各領域毎に合成処
理を行う。なお、この実合成処理部22の処理の詳細に
ついては後述する。
【0034】このように構成された画像生成装置1でキ
ー画像を合成して新たなキー画像を生成するときには、
図9のフローチャートに示す処理を行う。すなわち、先
ずステップS1において、GUI2が例えばユーザによ
り操作されることで、合成処理がなされるキー画像の指
定がなされて、論理演算式を生成するとともに、GUI
2から演算式処理部3に論理演算式が入力されるととも
に、GUI2からキー画像合成部4に指定されたキー画
像が入力される。
ー画像を合成して新たなキー画像を生成するときには、
図9のフローチャートに示す処理を行う。すなわち、先
ずステップS1において、GUI2が例えばユーザによ
り操作されることで、合成処理がなされるキー画像の指
定がなされて、論理演算式を生成するとともに、GUI
2から演算式処理部3に論理演算式が入力されるととも
に、GUI2からキー画像合成部4に指定されたキー画
像が入力される。
【0035】次のステップS2において、演算式処理部
3では、上述の構文解析部11でGUI2からの論理演
算式を演算ツリーに変換し、代数式変換部12で演算ツ
リーを代数演算式に変換して最適化部13で最適化を行
う。そして、因数分解部14は、代数式変換部12で生
成した代数演算式を変形し、演算命令生成部15で代数
演算列を生成して、キー画像合成部4に出力する。な
お、演算式処理部3の詳細な処理内容については、後述
する。
3では、上述の構文解析部11でGUI2からの論理演
算式を演算ツリーに変換し、代数式変換部12で演算ツ
リーを代数演算式に変換して最適化部13で最適化を行
う。そして、因数分解部14は、代数式変換部12で生
成した代数演算式を変形し、演算命令生成部15で代数
演算列を生成して、キー画像合成部4に出力する。な
お、演算式処理部3の詳細な処理内容については、後述
する。
【0036】次のステップS3において、キー画像合成
部4は、ステップS1で指定したキー画像を用い、ステ
ップS2で生成した代数演算列を実行することで合成処
理を行う。このとき、キー画像合成部4は、合成処理管
理部21及び実合成処理部22で部分的なキー画像同士
の合成を行う。なお、部分的なキー画像を合成するとき
の処理の詳細は後述する。
部4は、ステップS1で指定したキー画像を用い、ステ
ップS2で生成した代数演算列を実行することで合成処
理を行う。このとき、キー画像合成部4は、合成処理管
理部21及び実合成処理部22で部分的なキー画像同士
の合成を行う。なお、部分的なキー画像を合成するとき
の処理の詳細は後述する。
【0037】つぎに、上述のステップS2における演算
式処理部3の処理について図10のフローチャートに示
す処理について説明する。先ず、ステップS11におい
て、構文解析部11は、GUI2からの論理演算式を構
文解釈する。すなわち、構文解析部11は、論理演算式
として与えられた文字列をLALRパーサにより解析
し、演算ツリーを生成する。これにより、構文解析部1
1は、例えば ((A and A) and B) or (A or ( not ( not C))) (式4) という論理演算式から図11(a)に示すような上記式
4に基づく演算ツリーを生成して代数式変換部12に出
力する。
式処理部3の処理について図10のフローチャートに示
す処理について説明する。先ず、ステップS11におい
て、構文解析部11は、GUI2からの論理演算式を構
文解釈する。すなわち、構文解析部11は、論理演算式
として与えられた文字列をLALRパーサにより解析
し、演算ツリーを生成する。これにより、構文解析部1
1は、例えば ((A and A) and B) or (A or ( not ( not C))) (式4) という論理演算式から図11(a)に示すような上記式
4に基づく演算ツリーを生成して代数式変換部12に出
力する。
【0038】次のステップS12において、代数式変換
部12は、ステップS11で生成した演算ツリーを代数
演算のツリーに変換し、更に演算数の最適化を図る処理
を行う。このステップS12において、代数式変換部1
2及び最適化部13は、図12に示すような処理を行
う。ここで、例えば図11(a)に示すような演算ツリ
ーが代数式変換部12に入力され、ステップS21にお
いて、代数式変換部12は、ルートノードの種類を調べ
る。
部12は、ステップS11で生成した演算ツリーを代数
演算のツリーに変換し、更に演算数の最適化を図る処理
を行う。このステップS12において、代数式変換部1
2及び最適化部13は、図12に示すような処理を行
う。ここで、例えば図11(a)に示すような演算ツリ
ーが代数式変換部12に入力され、ステップS21にお
いて、代数式変換部12は、ルートノードの種類を調べ
る。
【0039】ここで、ルートノードは、「or」である
から、ステップS22bに進み、このステップS22b
で「or」についての2つのオペランド、すなわち第1
オペランドとして左側のandノードと、第2オペラン
ドとして右側のorノードに対して同じ処理を再帰的に
実行する。すなわち、代数式変換部12は、andノー
ドについて上述のステップS21の処理を再帰的に行う
ことにより、andノードと、領域Bを調べてステップ
S22dに進み、領域Bのノードをそのまま保持する。
更に、上述のステップS21の処理を再帰的に行うこと
で、andノード以下のオペランドである領域A、Bを
調べてステップS22dに進み、ノードをそのまま保持
する。更に、代数式変換部12は、ルートノードの第2
オペランドについて上述の処理を再帰的に行うことで、
領域AについてステップS22dで示す処理を行い、n
otノードについてステップS22cに示す処理を行
う。ステップS22cでは、notノードについて上述
と同様の処理を行って第5オペランドとしてnotノー
ドを調べ、更に、ステップS22cに示す処理を行うこ
とで領域CについてステップS22dに示す処理を行
う。これにより、オペランドに関する再帰処理ステップ
を終了する。
から、ステップS22bに進み、このステップS22b
で「or」についての2つのオペランド、すなわち第1
オペランドとして左側のandノードと、第2オペラン
ドとして右側のorノードに対して同じ処理を再帰的に
実行する。すなわち、代数式変換部12は、andノー
ドについて上述のステップS21の処理を再帰的に行う
ことにより、andノードと、領域Bを調べてステップ
S22dに進み、領域Bのノードをそのまま保持する。
更に、上述のステップS21の処理を再帰的に行うこと
で、andノード以下のオペランドである領域A、Bを
調べてステップS22dに進み、ノードをそのまま保持
する。更に、代数式変換部12は、ルートノードの第2
オペランドについて上述の処理を再帰的に行うことで、
領域AについてステップS22dで示す処理を行い、n
otノードについてステップS22cに示す処理を行
う。ステップS22cでは、notノードについて上述
と同様の処理を行って第5オペランドとしてnotノー
ドを調べ、更に、ステップS22cに示す処理を行うこ
とで領域CについてステップS22dに示す処理を行
う。これにより、オペランドに関する再帰処理ステップ
を終了する。
【0040】次に、代数式変換部12は、andノード
に関する処理(ステップS23)に進み、両オペランド
の積、すなわち A*A を計算し、その結果を示す代数式で第3オペランドであ
るandノード以下のサブツリー全体を置換する。そし
て、代数式変換部12は、ステップS23での演算結果
を用いて、ステップS26に進み、ステップS23にお
ける演算結果「A2」を「A」とする処理を行い、ルー
トノードの第1オペランドについて処理を行う。すなわ
ち、代数式変換部12は、andノード以下の領域A及
び領域Bについて A*B で表される代数式を得る。
に関する処理(ステップS23)に進み、両オペランド
の積、すなわち A*A を計算し、その結果を示す代数式で第3オペランドであ
るandノード以下のサブツリー全体を置換する。そし
て、代数式変換部12は、ステップS23での演算結果
を用いて、ステップS26に進み、ステップS23にお
ける演算結果「A2」を「A」とする処理を行い、ルー
トノードの第1オペランドについて処理を行う。すなわ
ち、代数式変換部12は、andノード以下の領域A及
び領域Bについて A*B で表される代数式を得る。
【0041】一方、ルートノードの第2オペランドにつ
いて、代数式変換部12は、orノード以下の処理を行
う。すなわち、代数式変換部12は、先ず領域Cについ
てステップS25で示す処理行うことで、 1−C という演算式を得、更にステップS25で示す処理を行
うことで 1−(1−C)=C という演算式を得る。これにより、図11(a)に示す
演算ツリーを図11(b)に示す演算ツリーに変換す
る。
いて、代数式変換部12は、orノード以下の処理を行
う。すなわち、代数式変換部12は、先ず領域Cについ
てステップS25で示す処理行うことで、 1−C という演算式を得、更にステップS25で示す処理を行
うことで 1−(1−C)=C という演算式を得る。これにより、図11(a)に示す
演算ツリーを図11(b)に示す演算ツリーに変換す
る。
【0042】更に代数式変換部12は、ルートノードの
第2オペランドであるorノードについての第1オペラ
ンドと第2オペランドとについてステップS24に示す
処理を行う。すなわち、代数式変換部12は、 A+C−A*C を計算することで、図11(b)に示す演算ツリーを図
11(c)に示す演算ツリーに変換する。
第2オペランドであるorノードについての第1オペラ
ンドと第2オペランドとについてステップS24に示す
処理を行う。すなわち、代数式変換部12は、 A+C−A*C を計算することで、図11(b)に示す演算ツリーを図
11(c)に示す演算ツリーに変換する。
【0043】更にまた、代数式変換部12は、ルートノ
ードについてステップS24に示す処理を行う。ここで
ルートノードについての第1オペランドはA*Bであ
り、第2オペランドはA+C−A*Cであるから、ステ
ップS24に示す処理を行うことで、 (A*B) + (A+C-A*C) - (A*B) * (A+C-A*C) = A*B + A + C - A*C -A2*B - A*B*C + A2*B*C (式
5)という代数演算式を得る。
ードについてステップS24に示す処理を行う。ここで
ルートノードについての第1オペランドはA*Bであ
り、第2オペランドはA+C−A*Cであるから、ステ
ップS24に示す処理を行うことで、 (A*B) + (A+C-A*C) - (A*B) * (A+C-A*C) = A*B + A + C - A*C -A2*B - A*B*C + A2*B*C (式
5)という代数演算式を得る。
【0044】次に代数式変換部12は、上記式5がべき
乗を含んでいることから、ステップS26に示す処理を
行うことにより、上記式5に示すべき乗のある代数演算
式からべき乗のない代数演算式に変形することで、AB
+A+C−AC−AB−ABC+ABC (式6)とい
う代数演算式を得る。
乗を含んでいることから、ステップS26に示す処理を
行うことにより、上記式5に示すべき乗のある代数演算
式からべき乗のない代数演算式に変形することで、AB
+A+C−AC−AB−ABC+ABC (式6)とい
う代数演算式を得る。
【0045】次のステップS27においては、上述の処
理により得た上記式6のような代数演算式を最適化部1
3により最適化する。すなわち、最適化部13は、以下
の処理を行うことにより、代数演算式中の項の数を削減
する。 (1) 定数項をまとめる、すなわち複数の定数項から
なる代数演算式は計算を行うことで一つの定数項とす
る。 (2) 項の統合 (2−1) 同じ項の係数をまとめる。例えば K1*A*B*C + K2*A*B*C という代数演算式を (K1 + K2) *A*B*C という代数演算式とする。ここで、K1,K2は定数で
ある。また、(K1+K2)は実際には多くの場合(K
1+K2)=0であるので、この場合にはこの項自体を
消去することができる。 (2−2) 距離が1だけ異なる項をまとめる。例えば K1 * A*B*C + K2*A*!B*C という代数演算式を K2*A*C + (K1-K2)*A*B*C という代数変換式とする。ここで、上記距離とは、代数
演算式に示される同じ領域が2つ以上あるときにおいて
各領域に対して定義されるものであり、2つの項の間で
反転(!)の関係にあるものの個数を指す。上記の例で
は、2つの項はともに同じ領域A,B,Cからなり、B
だけが反転の関係にあることから、距離は「1」とな
る。
理により得た上記式6のような代数演算式を最適化部1
3により最適化する。すなわち、最適化部13は、以下
の処理を行うことにより、代数演算式中の項の数を削減
する。 (1) 定数項をまとめる、すなわち複数の定数項から
なる代数演算式は計算を行うことで一つの定数項とす
る。 (2) 項の統合 (2−1) 同じ項の係数をまとめる。例えば K1*A*B*C + K2*A*B*C という代数演算式を (K1 + K2) *A*B*C という代数演算式とする。ここで、K1,K2は定数で
ある。また、(K1+K2)は実際には多くの場合(K
1+K2)=0であるので、この場合にはこの項自体を
消去することができる。 (2−2) 距離が1だけ異なる項をまとめる。例えば K1 * A*B*C + K2*A*!B*C という代数演算式を K2*A*C + (K1-K2)*A*B*C という代数変換式とする。ここで、上記距離とは、代数
演算式に示される同じ領域が2つ以上あるときにおいて
各領域に対して定義されるものであり、2つの項の間で
反転(!)の関係にあるものの個数を指す。上記の例で
は、2つの項はともに同じ領域A,B,Cからなり、B
だけが反転の関係にあることから、距離は「1」とな
る。
【0046】このように、最適化部13は、最適化の処
理を行うことで、図11(d)で示した代数演算式を図
11(e)に示す A+C−AC (式7) という代数変換式を生成し、当該代数演算式を因数分解
部14に出力する。
理を行うことで、図11(d)で示した代数演算式を図
11(e)に示す A+C−AC (式7) という代数変換式を生成し、当該代数演算式を因数分解
部14に出力する。
【0047】次のステップS13において、因数分解部
14は、上述のステップS11により得た上記式7の代
数演算式について、適当な領域を選択して改めて代数演
算式を変形する。この因数分解部14は、例えば領域と
してAを選択したときには、代数演算式Pを、 P → A*Q + !A*R (式8) と変形する。ここで、Q及びRは、Aを含まない代数演
算式である。因数分解部14は、選択する領域として、
例えば上記式7の代数演算式内で最も多く出現する領域
を選択し、選択した領域について代数演算式を変形させ
る。因数分解部14は、このような処理を代数演算式が
定数又は1つの領域となるまで再帰的に繰り返す。これ
により、因数分解部14は、代数演算式の中で多数回出
現する領域から順次選択して変形する処理を行うことに
より、代数演算式全体の演算数を削減する。
14は、上述のステップS11により得た上記式7の代
数演算式について、適当な領域を選択して改めて代数演
算式を変形する。この因数分解部14は、例えば領域と
してAを選択したときには、代数演算式Pを、 P → A*Q + !A*R (式8) と変形する。ここで、Q及びRは、Aを含まない代数演
算式である。因数分解部14は、選択する領域として、
例えば上記式7の代数演算式内で最も多く出現する領域
を選択し、選択した領域について代数演算式を変形させ
る。因数分解部14は、このような処理を代数演算式が
定数又は1つの領域となるまで再帰的に繰り返す。これ
により、因数分解部14は、代数演算式の中で多数回出
現する領域から順次選択して変形する処理を行うことに
より、代数演算式全体の演算数を削減する。
【0048】また、このステップS13においては、上
述のように因数分解部14により選択した領域に基づい
て代数演算式を変形させることにより、上記式5で示し
たQやRの中に簡単化することができる項が発生したと
きには上述のステップS11で説明した最適化部13で
行う処理を行っても良い。これにより、演算式処理部3
は、さらなる代数演算式の簡単化を行い演算数を削減す
る。
述のように因数分解部14により選択した領域に基づい
て代数演算式を変形させることにより、上記式5で示し
たQやRの中に簡単化することができる項が発生したと
きには上述のステップS11で説明した最適化部13で
行う処理を行っても良い。これにより、演算式処理部3
は、さらなる代数演算式の簡単化を行い演算数を削減す
る。
【0049】このようなステップS13においては、上
述した処理を行うことで、代数演算を行うときにおいて
中間結果でのオーバーフローを回避する。すなわち、因
数分解部14は、上述した処理を代数演算式について行
うことで以下に説明するようにオーバーフローを回避す
る。例えば「A or C」という論理演算式を代数変換
式に変換すると、 A+C−A*C となる。ここで、領域A及び領域Bの正規化した画素値
はそれぞれ0〜1の範囲内であるから、A+Cの結果は
0〜2の範囲内となる。ここで1画素を1バイトで表現
している場合は、通常、画素値の0〜1を0〜255段
階のデータとしてマッピングする。しかし、演算結果が
1を越える場合には、演算結果の画素値を1バイトで表
現できなくなってしまう。すなわち、計算機の最小の処
理単位はバイトであるから、画素値が1を越える値とな
ったとき、当該画素値をメモリに格納するのに2バイト
分のデータ量が必要となる。つまり、中間結果を格納す
るメモリは、演算を行う前のキー画像を格納するメモリ
の2倍の容量を有することが必要となる。そこで、上述
したステップS13の処理を因数分解部14で行うこと
で、全ての中間結果で得られる画像の画素値が0〜1の
範囲内となるので、中間結果を格納するメモリとして容
量の小さいメモリを用いることができる。
述した処理を行うことで、代数演算を行うときにおいて
中間結果でのオーバーフローを回避する。すなわち、因
数分解部14は、上述した処理を代数演算式について行
うことで以下に説明するようにオーバーフローを回避す
る。例えば「A or C」という論理演算式を代数変換
式に変換すると、 A+C−A*C となる。ここで、領域A及び領域Bの正規化した画素値
はそれぞれ0〜1の範囲内であるから、A+Cの結果は
0〜2の範囲内となる。ここで1画素を1バイトで表現
している場合は、通常、画素値の0〜1を0〜255段
階のデータとしてマッピングする。しかし、演算結果が
1を越える場合には、演算結果の画素値を1バイトで表
現できなくなってしまう。すなわち、計算機の最小の処
理単位はバイトであるから、画素値が1を越える値とな
ったとき、当該画素値をメモリに格納するのに2バイト
分のデータ量が必要となる。つまり、中間結果を格納す
るメモリは、演算を行う前のキー画像を格納するメモリ
の2倍の容量を有することが必要となる。そこで、上述
したステップS13の処理を因数分解部14で行うこと
で、全ての中間結果で得られる画像の画素値が0〜1の
範囲内となるので、中間結果を格納するメモリとして容
量の小さいメモリを用いることができる。
【0050】すなわち、中間結果がオーバーフローしな
いことは以下のようにして説明できる。先ず、 P → A*Q + !A*R において、最終結果Pが0〜1の範囲内であることは明
らかである。すなわち、代数演算式が定義上、領域の論
理積・論理和の計算であり、最終結果Pもまた、合成処
理によって生成されるある領域の寄与率αの濃淡画像と
なるからである。最終結果Pが寄与率である限り、値は
0〜1の範囲内となる。ここで、最終結果Pが0〜1の
範囲内となるから、上記式における加算処理を行うこと
によるオーバーフローは発生しないことになる。次に
「A*Q」と「!A*R」の2つの項であるが、上述の
「and」に関する代数式への変換の定義を用いると、
これらの項は、最終結果である領域Pを領域Aに重なる
部分「A*Q」と、領域Aの外側の部分「!A*R」と
に分割した操作とみなすことができる。つまり、上記Q
やRもある領域の形状を表す寄与率αの濃淡画像であ
り、当該濃淡画像と領域Aとの合成演算をしたものとみ
なすことができる。したがって、上記Q及びRの値は、
0〜1の範囲内となる。以上のことから、乗算処理の対
象となる両オペランドはともに0〜1の範囲内の画素値
となり、積A*Q及び!A*Rは、0〜1の範囲内とな
る。従って、乗算処理を行っても、画素値が0〜1の範
囲外となるようなことがなく、中間結果についてオーバ
ーフローが生ずることはない。
いことは以下のようにして説明できる。先ず、 P → A*Q + !A*R において、最終結果Pが0〜1の範囲内であることは明
らかである。すなわち、代数演算式が定義上、領域の論
理積・論理和の計算であり、最終結果Pもまた、合成処
理によって生成されるある領域の寄与率αの濃淡画像と
なるからである。最終結果Pが寄与率である限り、値は
0〜1の範囲内となる。ここで、最終結果Pが0〜1の
範囲内となるから、上記式における加算処理を行うこと
によるオーバーフローは発生しないことになる。次に
「A*Q」と「!A*R」の2つの項であるが、上述の
「and」に関する代数式への変換の定義を用いると、
これらの項は、最終結果である領域Pを領域Aに重なる
部分「A*Q」と、領域Aの外側の部分「!A*R」と
に分割した操作とみなすことができる。つまり、上記Q
やRもある領域の形状を表す寄与率αの濃淡画像であ
り、当該濃淡画像と領域Aとの合成演算をしたものとみ
なすことができる。したがって、上記Q及びRの値は、
0〜1の範囲内となる。以上のことから、乗算処理の対
象となる両オペランドはともに0〜1の範囲内の画素値
となり、積A*Q及び!A*Rは、0〜1の範囲内とな
る。従って、乗算処理を行っても、画素値が0〜1の範
囲外となるようなことがなく、中間結果についてオーバ
ーフローが生ずることはない。
【0051】次のステップS14において、演算命令生
成部15は、上述のステップS13で変形された代数演
算式を、キー画像合成部4が複数のキー画像を合成する
処理を実行する代数演算列に変換する。ここで、キー画
像合成部4で代数演算式を用いて行う代数演算として
は、以下のものがある。 (1) 乗算 (2) 加算 (3) 反転 乗算と加算は2個のソースオペランドをとり、これらの
ソースオペランドは、領域を占めるキー画像又は演算途
中の中間画像を示す。また、反転は1個のオペランドを
とり、このオペランドは、領域を占めるキー画像又は中
間画像を示す。
成部15は、上述のステップS13で変形された代数演
算式を、キー画像合成部4が複数のキー画像を合成する
処理を実行する代数演算列に変換する。ここで、キー画
像合成部4で代数演算式を用いて行う代数演算として
は、以下のものがある。 (1) 乗算 (2) 加算 (3) 反転 乗算と加算は2個のソースオペランドをとり、これらの
ソースオペランドは、領域を占めるキー画像又は演算途
中の中間画像を示す。また、反転は1個のオペランドを
とり、このオペランドは、領域を占めるキー画像又は中
間画像を示す。
【0052】このステップS14において、演算命令生
成部15は、上述のステップS13で生成した代数演算
式をツリー構造とみなして、深さの深い側のオペランド
から順次代数演算列を生成する。例えば演算命令生成部
15は、因数分解部14から図13(a)に示すような
ツリー構造とみなされる A*B + !C*(D+E*B) が入力されたとき、図13(a)におけるツリー構造の
左側、すなわち「A*B」から代数演算列を生成する処
理を開始すると、以下の1〜6で示す順序で代数演算列
を生成する。 1.S←A*B 2.T←!C 3.U←E*B 4.U←D+U 5.T←T+U 6.S←S+T すなわち、このステップS14において、演算命令生成
部15は、先ず、「A*B」を計算することにより、領
域Aと領域Bとを乗算処理することでレジスタSに格納
する中間画像を生成し(図13(b))、更に領域Cに
ついて反転処理することでレジスタTに格納する中間画
像を生成し(図13(c))、領域Eと領域Bとを乗算
処理することでレジスタUに格納する中間画像を生成す
るような代数演算列を生成する。そして演算命令生成部
15は、領域DとレジスタUに格納する中間画像とを加
算処理することで新たなレジスタUに格納する中間画像
を生成し、更にレジスタTに格納した中間画像とレジス
タUに格納した中間画像とを加算処理することで新たな
レジスタTに格納する中間画像を生成し、更にレジスタ
Sに格納する中間画像とレジスタTに格納する中間画像
とを加算処理することで合成されたキー画像を得るよう
な代数演算列を生成する。
成部15は、上述のステップS13で生成した代数演算
式をツリー構造とみなして、深さの深い側のオペランド
から順次代数演算列を生成する。例えば演算命令生成部
15は、因数分解部14から図13(a)に示すような
ツリー構造とみなされる A*B + !C*(D+E*B) が入力されたとき、図13(a)におけるツリー構造の
左側、すなわち「A*B」から代数演算列を生成する処
理を開始すると、以下の1〜6で示す順序で代数演算列
を生成する。 1.S←A*B 2.T←!C 3.U←E*B 4.U←D+U 5.T←T+U 6.S←S+T すなわち、このステップS14において、演算命令生成
部15は、先ず、「A*B」を計算することにより、領
域Aと領域Bとを乗算処理することでレジスタSに格納
する中間画像を生成し(図13(b))、更に領域Cに
ついて反転処理することでレジスタTに格納する中間画
像を生成し(図13(c))、領域Eと領域Bとを乗算
処理することでレジスタUに格納する中間画像を生成す
るような代数演算列を生成する。そして演算命令生成部
15は、領域DとレジスタUに格納する中間画像とを加
算処理することで新たなレジスタUに格納する中間画像
を生成し、更にレジスタTに格納した中間画像とレジス
タUに格納した中間画像とを加算処理することで新たな
レジスタTに格納する中間画像を生成し、更にレジスタ
Sに格納する中間画像とレジスタTに格納する中間画像
とを加算処理することで合成されたキー画像を得るよう
な代数演算列を生成する。
【0053】一方、このステップS14において、演算
命令生成部15は、上述とは異なり、図14(a)で示
したツリー構造とみなされる代数演算式をツリー構造の
右側、すなわち「E*B」から代数演算列を生成する処
理を行うと、以下のような代数演算列を生成する。 1.S←E*B(図14(a)→図14(b)) 2.S←D+S(図14(b)→図14(c)) 3.T←!C 4.S←T*S 5.T←A*B 6.S←T*S このように演算命令生成部15は、ツリー構造の右側か
ら代数演算列を生成する処理を行うことで、上述のツリ
ー構造の左側から代数演算列を生成するときにはS,
T,Uの3枚の中間画像が必要であったことに対して、
中間画像をSとTの2枚とすることができる。従って、
演算命令生成部15は、サブツリーの深いオペランドの
処理を先に実行することで中間画像の枚数を少なくする
ことができ、処理するときに発生する中間画像を格納す
るメモリの消費量を低減することができる。
命令生成部15は、上述とは異なり、図14(a)で示
したツリー構造とみなされる代数演算式をツリー構造の
右側、すなわち「E*B」から代数演算列を生成する処
理を行うと、以下のような代数演算列を生成する。 1.S←E*B(図14(a)→図14(b)) 2.S←D+S(図14(b)→図14(c)) 3.T←!C 4.S←T*S 5.T←A*B 6.S←T*S このように演算命令生成部15は、ツリー構造の右側か
ら代数演算列を生成する処理を行うことで、上述のツリ
ー構造の左側から代数演算列を生成するときにはS,
T,Uの3枚の中間画像が必要であったことに対して、
中間画像をSとTの2枚とすることができる。従って、
演算命令生成部15は、サブツリーの深いオペランドの
処理を先に実行することで中間画像の枚数を少なくする
ことができ、処理するときに発生する中間画像を格納す
るメモリの消費量を低減することができる。
【0054】そして、ステップS14においては、上述
のように演算命令生成部15により生成した代数演算列
をキー画像合成部4に出力する。
のように演算命令生成部15により生成した代数演算列
をキー画像合成部4に出力する。
【0055】このような演算式処理部3を備えた画像生
成装置1は、キー画像を合成するための演算内容を示し
た論理演算式を代数演算式に変換し、当該代数演算式を
展開、最適化することで、ユーザの操作入力命令に従っ
て高速に複数のキー画像を合成することができる。
成装置1は、キー画像を合成するための演算内容を示し
た論理演算式を代数演算式に変換し、当該代数演算式を
展開、最適化することで、ユーザの操作入力命令に従っ
て高速に複数のキー画像を合成することができる。
【0056】つぎに、上述のキー画像合成部4で複数の
キー画像を合成するときにおいて、合成して得た新たな
キー画像を保持するために必要な領域を算出する処理に
ついて説明する。なお、以下に示す処理の一例では、そ
れぞれ領域A,Bを占める2枚のキー画像を上述の図5
で示した演算ツリーに従って合成するときについて図1
5に示すフローチャートを用いて説明する。
キー画像を合成するときにおいて、合成して得た新たな
キー画像を保持するために必要な領域を算出する処理に
ついて説明する。なお、以下に示す処理の一例では、そ
れぞれ領域A,Bを占める2枚のキー画像を上述の図5
で示した演算ツリーに従って合成するときについて図1
5に示すフローチャートを用いて説明する。
【0057】すなわち、先ずステップS31において、
例えば特開平10-134199号公報で示されたソフトキー生
成装置により領域Aを占めるキー画像を生成し、次のス
テップS32において上記ソフトキー生成装置により領
域Bを占めるキー画像を生成する。そして、これらのキ
ー画像は、GUI2からの操作入力命令により合成され
るキー画像として指定される。そして、指定された領域
Aを占めるキー画像及び領域Bを占めるキー画像は、G
UI2からキー画像合成部4の実合成処理部22内に設
けられたメモリに格納される。
例えば特開平10-134199号公報で示されたソフトキー生
成装置により領域Aを占めるキー画像を生成し、次のス
テップS32において上記ソフトキー生成装置により領
域Bを占めるキー画像を生成する。そして、これらのキ
ー画像は、GUI2からの操作入力命令により合成され
るキー画像として指定される。そして、指定された領域
Aを占めるキー画像及び領域Bを占めるキー画像は、G
UI2からキー画像合成部4の実合成処理部22内に設
けられたメモリに格納される。
【0058】次のステップS33において、合成処理管
理部21は、図5に示す論理演算式から生成された演算
式処理部3からの代数演算列に従って、上述のステップ
S31において指定された領域Bを占めるキー画像につ
いて反転処理を行う。このとき、合成処理管理部21
は、実合成処理部22に領域Bを占めるキー画像につい
て反転処理を行う旨の命令をし、代数演算列に従って反
転処理を行わせる。そして、実合成処理部22は、反転
処理をした領域Bを占めるキー画像を内部のメモリに記
憶する。これにより、!Bの代数演算式に従った中間画
像を得る。
理部21は、図5に示す論理演算式から生成された演算
式処理部3からの代数演算列に従って、上述のステップ
S31において指定された領域Bを占めるキー画像につ
いて反転処理を行う。このとき、合成処理管理部21
は、実合成処理部22に領域Bを占めるキー画像につい
て反転処理を行う旨の命令をし、代数演算列に従って反
転処理を行わせる。そして、実合成処理部22は、反転
処理をした領域Bを占めるキー画像を内部のメモリに記
憶する。これにより、!Bの代数演算式に従った中間画
像を得る。
【0059】次のステップS34において、合成処理管
理部21は、図16に示すように、領域A及び領域Bを
含む最小の矩形領域Cを上記出力画像領域として作成す
る。このとき、合成処理管理部21は、実合成処理部2
2内のメモリに格納された各キー画像の領域A及び領域
Bを参照して矩形領域Cを作成する。
理部21は、図16に示すように、領域A及び領域Bを
含む最小の矩形領域Cを上記出力画像領域として作成す
る。このとき、合成処理管理部21は、実合成処理部2
2内のメモリに格納された各キー画像の領域A及び領域
Bを参照して矩形領域Cを作成する。
【0060】次のステップS35において、合成処理管
理部21は、実合成処理部22に領域A,B、領域Aに
ついてのオフセット、領域Bについてのオフセット、矩
形領域C及び乗算処理を行う旨の命令を与える。これに
応じて、実合成処理部22は、領域Aを占めるキー画像
と、領域Bを占めるキー画像とについて乗算処理を行う
ことにより、矩形領域Cに含まれる合成されたキー画像
生成する。そして、合成処理管理部21は、実合成処理
部22から乗算処理がなされたキー画像を入力し、メモ
リに格納する。
理部21は、実合成処理部22に領域A,B、領域Aに
ついてのオフセット、領域Bについてのオフセット、矩
形領域C及び乗算処理を行う旨の命令を与える。これに
応じて、実合成処理部22は、領域Aを占めるキー画像
と、領域Bを占めるキー画像とについて乗算処理を行う
ことにより、矩形領域Cに含まれる合成されたキー画像
生成する。そして、合成処理管理部21は、実合成処理
部22から乗算処理がなされたキー画像を入力し、メモ
リに格納する。
【0061】次のステップS36において、合成処理管
理部21は、矩形領域Cの周辺のキー値を、領域Aの周
辺のキー値及び領域Bの周辺のキー値を用いて算出す
る。これにより、A*!Bの代数演算式に従った中間画
像を得て、一旦合成処理管理部21のメモリに格納す
る。
理部21は、矩形領域Cの周辺のキー値を、領域Aの周
辺のキー値及び領域Bの周辺のキー値を用いて算出す
る。これにより、A*!Bの代数演算式に従った中間画
像を得て、一旦合成処理管理部21のメモリに格納す
る。
【0062】次のステップS37において、合成処理管
理部21は、領域B及び矩形領域Cを含む最小の矩形領
域を計算する。このとき、合成処理管理部21は、矩形
領域Cが領域Bを含むので、矩形領域として矩形領域C
を計算して得る。
理部21は、領域B及び矩形領域Cを含む最小の矩形領
域を計算する。このとき、合成処理管理部21は、矩形
領域Cが領域Bを含むので、矩形領域として矩形領域C
を計算して得る。
【0063】次のステップS38において、合成処理管
理部21は、領域B、矩形領域C、矩形領域Cに対する
領域Bについてのオフセット及び加算処理を行う旨の命
令を実合成処理部22に出力する。そして、実合成処理
部22は、矩形領域Cを占める中間画像と領域Bを占め
るキー画像とについて加算処理を行う。
理部21は、領域B、矩形領域C、矩形領域Cに対する
領域Bについてのオフセット及び加算処理を行う旨の命
令を実合成処理部22に出力する。そして、実合成処理
部22は、矩形領域Cを占める中間画像と領域Bを占め
るキー画像とについて加算処理を行う。
【0064】次のステップS39において、合成処理管
理部21は、矩形領域Cの周辺のキー値を、領域Bの周
辺のキー値及び矩形領域Cの周辺のキー値を用いて算出
する。これにより、キー画像合成部4は、図5の演算ツ
リーで示される演算を行った画像を得る。
理部21は、矩形領域Cの周辺のキー値を、領域Bの周
辺のキー値及び矩形領域Cの周辺のキー値を用いて算出
する。これにより、キー画像合成部4は、図5の演算ツ
リーで示される演算を行った画像を得る。
【0065】次のステップS40において、合成処理管
理部21は、出力画像領域Dを作成する。このとき、合
成処理管理部21は、例えばGUI2からの操作入力命
令に従って上述した処理により合成して得た新たなキー
画像を示す出力画像領域Dを作成する。
理部21は、出力画像領域Dを作成する。このとき、合
成処理管理部21は、例えばGUI2からの操作入力命
令に従って上述した処理により合成して得た新たなキー
画像を示す出力画像領域Dを作成する。
【0066】次のステップS41において、合成処理管
理部21は、上述のステップS40において作成した出
力画像領域Dの全体を上述のステップS39で求めた周
辺のキー値とする。
理部21は、上述のステップS40において作成した出
力画像領域Dの全体を上述のステップS39で求めた周
辺のキー値とする。
【0067】次のステップS42において、合成処理管
理部21は、合成処理管理部21内のメモリに格納した
領域Cを占めるキー画像を出力画像領域D上にコピーす
る。これにより、合成処理管理部21は、出力画像領域
D内に上述のステップS38で合成して得たキー画像を
含む画像を生成する。
理部21は、合成処理管理部21内のメモリに格納した
領域Cを占めるキー画像を出力画像領域D上にコピーす
る。これにより、合成処理管理部21は、出力画像領域
D内に上述のステップS38で合成して得たキー画像を
含む画像を生成する。
【0068】つぎに、上記実画像合成部22で行う領域
分割の一例について図17のフローチャートに示す処理
を行う。すなわち、実合成処理部22は、上述のように
複数のキー画像を合成して新たなキー画像を生成すると
きにおいて、上述の図16を用いて説明した出力画像領
域内において複数の領域の大きさ及び各領域についての
オフセットから各領域の重なりを分析し、各領域の重な
り方によって出力画像領域に対する処理を変化させる。
分割の一例について図17のフローチャートに示す処理
を行う。すなわち、実合成処理部22は、上述のように
複数のキー画像を合成して新たなキー画像を生成すると
きにおいて、上述の図16を用いて説明した出力画像領
域内において複数の領域の大きさ及び各領域についての
オフセットから各領域の重なりを分析し、各領域の重な
り方によって出力画像領域に対する処理を変化させる。
【0069】すなわち、実合成処理部22は、先ず、ス
テップS41において、合成する処理がなされる領域
A,Bを占める2枚のキー画像をGUI2で指定される
ことに応じて入力する。このとき、実合成処理部22
は、GUI2から領域Aを占めるキー画像、領域Bを占
めるキー画像、領域A,Bそれぞれについてのオフセッ
トが合成処理管理部21から入力される。
テップS41において、合成する処理がなされる領域
A,Bを占める2枚のキー画像をGUI2で指定される
ことに応じて入力する。このとき、実合成処理部22
は、GUI2から領域Aを占めるキー画像、領域Bを占
めるキー画像、領域A,Bそれぞれについてのオフセッ
トが合成処理管理部21から入力される。
【0070】次のステップS42において、実合成処理
部22は、合成処理管理部21からの領域Aについての
オフセットに応じて、図18に示すように領域Aのx軸
方向における座標値をax1とする。また、この実合成
処理部22は、ステップS43において、合成処理管理
部21からの領域Aについてのオフセットに応じて、領
域Aのy軸方向における座標値をay1とする。
部22は、合成処理管理部21からの領域Aについての
オフセットに応じて、図18に示すように領域Aのx軸
方向における座標値をax1とする。また、この実合成
処理部22は、ステップS43において、合成処理管理
部21からの領域Aについてのオフセットに応じて、領
域Aのy軸方向における座標値をay1とする。
【0071】次のステップS44において、実合成処理
部22は、上述の座標値ax1と合成処理管理部21か
らの領域Aのx軸方向における幅を加算したときの座標
値をax2とする。また、この実合成処理部22は、ス
テップS45において、上述の座標値ay1と合成処理
管理部21からの領域Aのy軸方向における幅を加算し
たときの座標値をay2とする。
部22は、上述の座標値ax1と合成処理管理部21か
らの領域Aのx軸方向における幅を加算したときの座標
値をax2とする。また、この実合成処理部22は、ス
テップS45において、上述の座標値ay1と合成処理
管理部21からの領域Aのy軸方向における幅を加算し
たときの座標値をay2とする。
【0072】次のステップS46において、実合成処理
部22は、上述の領域Aについて行ったステップS42
〜ステップS45と同様の処理を領域Bについて行う。
これにより、実合成処理部22は、領域Aについての座
標値ax1,ay2,ax2,ay2に対応する領域B
についての座標値bx1,by2,bx2,by2を得
る。
部22は、上述の領域Aについて行ったステップS42
〜ステップS45と同様の処理を領域Bについて行う。
これにより、実合成処理部22は、領域Aについての座
標値ax1,ay2,ax2,ay2に対応する領域B
についての座標値bx1,by2,bx2,by2を得
る。
【0073】次のステップS47において、実合成処理
部22は、上述した処理により得たx軸方向についての
各座標値ax1,ax2,bx1,bx2を比較し、座
標値が小さい順に配列するとともに、座標値の小さいも
のからx1,x2,x3,x4とする。また、実合成処
理部22は、ステップS48において、上述した処理に
よる得たy軸方向についての各座標値ay1,ay2,
by1,by2を比較し、座標値が小さい順に配列する
とともに、座標値の小さいものからy1,y2,y3,
y4とする。
部22は、上述した処理により得たx軸方向についての
各座標値ax1,ax2,bx1,bx2を比較し、座
標値が小さい順に配列するとともに、座標値の小さいも
のからx1,x2,x3,x4とする。また、実合成処
理部22は、ステップS48において、上述した処理に
よる得たy軸方向についての各座標値ay1,ay2,
by1,by2を比較し、座標値が小さい順に配列する
とともに、座標値の小さいものからy1,y2,y3,
y4とする。
【0074】次のステップS49において、実合成処理
部22は、出力画像領域を、 (x1,y1)-(x2,y2) , (x2,y1)-(x3,y2) , (x3,y1)-(x4,y2) (x1,y2)-(x2,y3) , (x2,y1)-(x3,y3) , (x3,y2)-(x4,y3) (x1,y3)-(x2,y4) , (x2,y3)-(x3,y3) , (x3,y3)-(x4,y4) で示される行列のように、対角点で定義される図18に
示す9個の領域C〜Kに分割して、各領域毎に異なった
演算を行う。これにより、実合成処理部22は、領域
A,Bを占める2枚のキー画像のキー値を代数演算式に
従って演算するときの処理の効率化を図る。
部22は、出力画像領域を、 (x1,y1)-(x2,y2) , (x2,y1)-(x3,y2) , (x3,y1)-(x4,y2) (x1,y2)-(x2,y3) , (x2,y1)-(x3,y3) , (x3,y2)-(x4,y3) (x1,y3)-(x2,y4) , (x2,y3)-(x3,y3) , (x3,y3)-(x4,y4) で示される行列のように、対角点で定義される図18に
示す9個の領域C〜Kに分割して、各領域毎に異なった
演算を行う。これにより、実合成処理部22は、領域
A,Bを占める2枚のキー画像のキー値を代数演算式に
従って演算するときの処理の効率化を図る。
【0075】すなわち、実合成処理部22は、例えば図
19に示す領域Aのように出力画像領域に対して2枚の
キー画像が重なっている場合、2枚のキー画像のキー値
を画素毎に取得して代数演算列に従った演算を行い、演
算結果を出力画像領域に書き込む。また、実合成処理部
22は、図19に示す領域Bのように出力画像領域に対
して1枚のキー画像が存在し、他のキー画像が当該領域
Bに含まれないときには、領域Bに存在するキー画像の
キー値を画素毎に取得し、他のキー画像の周辺のキー値
とで代数演算列に従った演算を行い、演算結果を出力画
像領域に書き込む。
19に示す領域Aのように出力画像領域に対して2枚の
キー画像が重なっている場合、2枚のキー画像のキー値
を画素毎に取得して代数演算列に従った演算を行い、演
算結果を出力画像領域に書き込む。また、実合成処理部
22は、図19に示す領域Bのように出力画像領域に対
して1枚のキー画像が存在し、他のキー画像が当該領域
Bに含まれないときには、領域Bに存在するキー画像の
キー値を画素毎に取得し、他のキー画像の周辺のキー値
とで代数演算列に従った演算を行い、演算結果を出力画
像領域に書き込む。
【0076】更に、実合成処理部22は、例えば代数演
算列で与えられた演算の種類が加算又は減算であって、
周辺のキー値が0である場合、或いは演算の種類が乗算
で周辺のキー値が255又は65535である場合、画
素毎に領域のキー値を求める演算を行わず、当該キー値
を求める領域に存在するキー画像のキー値を出力画像領
域にコピーする処理を行う。
算列で与えられた演算の種類が加算又は減算であって、
周辺のキー値が0である場合、或いは演算の種類が乗算
で周辺のキー値が255又は65535である場合、画
素毎に領域のキー値を求める演算を行わず、当該キー値
を求める領域に存在するキー画像のキー値を出力画像領
域にコピーする処理を行う。
【0077】更にまた、実合成処理部22は、演算の種
類が乗算であって、周辺のキー値が「0」である場合、
存在するキー画像のキー値によらず、当該キー値を求め
る領域に存在するキー画像のキー値を「0」として出力
画像領域にコピーする処理を行う。
類が乗算であって、周辺のキー値が「0」である場合、
存在するキー画像のキー値によらず、当該キー値を求め
る領域に存在するキー画像のキー値を「0」として出力
画像領域にコピーする処理を行う。
【0078】更にまた、実合成処理部22は、図19に
示す領域Cのように2枚のキー画像がともに存在しない
場合、演算の種類に応じて各キー画像の周辺のキー値を
用いて演算を行うことにより当該領域Cにおけるキー値
を求める。
示す領域Cのように2枚のキー画像がともに存在しない
場合、演算の種類に応じて各キー画像の周辺のキー値を
用いて演算を行うことにより当該領域Cにおけるキー値
を求める。
【0079】このようにキー画像を合成する画像生成装
置1は、キー画像を画面全体で扱って合成する処理を行
うのではなく、部分的なキー画像と、画面全体からのオ
フセットと、キー画像の周辺のキー値を用いてキー画像
を合成する処理を行うので、合成処理の対象となるキー
画像の面積が低減され、合成処理を行うときの処理量を
低減することができ、処理を高速化することができる。
また、この画像生成装置1は、部分的なキー画像を用い
て合成処理を行うので、演算途中の中間結果を保持する
ためのメモリを少なくすることができる。
置1は、キー画像を画面全体で扱って合成する処理を行
うのではなく、部分的なキー画像と、画面全体からのオ
フセットと、キー画像の周辺のキー値を用いてキー画像
を合成する処理を行うので、合成処理の対象となるキー
画像の面積が低減され、合成処理を行うときの処理量を
低減することができ、処理を高速化することができる。
また、この画像生成装置1は、部分的なキー画像を用い
て合成処理を行うので、演算途中の中間結果を保持する
ためのメモリを少なくすることができる。
【0080】また、この画像生成装置1は、出力画像領
域内で複数のキー画像を合成する処理を行うとき、出力
画像領域を分割して代数演算列に従った演算を行うこと
で合成する処理を行うので、分割した領域毎に処理を簡
略化する処理をすることができ、処理の効率化を図って
処理量を低減することができる。
域内で複数のキー画像を合成する処理を行うとき、出力
画像領域を分割して代数演算列に従った演算を行うこと
で合成する処理を行うので、分割した領域毎に処理を簡
略化する処理をすることができ、処理の効率化を図って
処理量を低減することができる。
【0081】なお、画像生成装置1のGUI2から出力
する論理演算式は、各領域を示すオペランドの間に演算
子を配置する表記(インフィックス演算子)を用いた
が、例えばLISP処理系等で使用される演算子を最初
に配置する表記(プリフィックス演算子)や、演算子を
最後に配置する表記(ポストフィックス演算子、逆ポー
ランド気法)を採用しても良い。このとき、論理演算式
は、いずれの場合も、文字列を解析して構文木を生成し
た時点で同じ内部的な表現となる。また、GUI2は、
上述の論理演算式を生成する場合のみならず、直接構文
木を操作入力命令として出力しても良い。
する論理演算式は、各領域を示すオペランドの間に演算
子を配置する表記(インフィックス演算子)を用いた
が、例えばLISP処理系等で使用される演算子を最初
に配置する表記(プリフィックス演算子)や、演算子を
最後に配置する表記(ポストフィックス演算子、逆ポー
ランド気法)を採用しても良い。このとき、論理演算式
は、いずれの場合も、文字列を解析して構文木を生成し
た時点で同じ内部的な表現となる。また、GUI2は、
上述の論理演算式を生成する場合のみならず、直接構文
木を操作入力命令として出力しても良い。
【0082】
【発明の効果】以上詳細に説明したように、本発明に係
る画像生成方法及び装置は、合成処理の対象となる画像
及び当該画像を合成する手法からなる論理演算式を代数
変換式に変換し、当該代数演算式を用いて複数の画像を
合成して新たな画像を生成する処理を行うので、画像を
合成するときの代数演算式を簡略化させることで、画像
を合成するときの処理量を低減するとともに、複数の画
像を合成するときの処理の高速化を図ることができる。
る画像生成方法及び装置は、合成処理の対象となる画像
及び当該画像を合成する手法からなる論理演算式を代数
変換式に変換し、当該代数演算式を用いて複数の画像を
合成して新たな画像を生成する処理を行うので、画像を
合成するときの代数演算式を簡略化させることで、画像
を合成するときの処理量を低減するとともに、複数の画
像を合成するときの処理の高速化を図ることができる。
【図1】本発明を適用した画像生成装置を示すブロック
図である。
図である。
【図2】本発明を適用した画像生成装置で合成処理を行
うキー画像について説明するための図である。
うキー画像について説明するための図である。
【図3】本発明を適用した画像生成装置によりキー画像
を合成する処理の一例について説明する図である。
を合成する処理の一例について説明する図である。
【図4】演算式処理部を示すブロック図である。
【図5】構文解析部により論理演算式を演算ツリーに変
換することを説明するための図である。
換することを説明するための図である。
【図6】因数分解部により代数変換式を変形するときの
一例について説明するための図である。
一例について説明するための図である。
【図7】キー画像合成部の構成を示すブロック図であ
る。
る。
【図8】部分的なキー画像を説明するための図である。
【図9】本発明を適用した画像生成装置により複数のキ
ー画像を合成するときの処理を示すフローチャートであ
る。
ー画像を合成するときの処理を示すフローチャートであ
る。
【図10】演算式処理部により代数演算列を生成すると
きの処理を示すフローチャートである。
きの処理を示すフローチャートである。
【図11】最適化部で代数変換式を変形するときの一例
について説明するための図である。
について説明するための図である。
【図12】演算式処理部の最適化部と因数分解部により
代数演算式を変形するときの処理を示すフローチャート
である。
代数演算式を変形するときの処理を示すフローチャート
である。
【図13】演算命令生成部で代数演算列を生成するとき
の一例を説明するための図である。
の一例を説明するための図である。
【図14】演算命令生成部で代数演算列を生成するとき
の他の一例を説明するための図である。
の他の一例を説明するための図である。
【図15】領域A,Bを占める2枚のキー画像を上述の
図5で示した演算ツリーに従って合成するときの処理を
示すフローチャートである。
図5で示した演算ツリーに従って合成するときの処理を
示すフローチャートである。
【図16】領域Aと領域Bとを含む最小の矩形領域Cを
上記出力画像領域として作成することを説明するための
図である。
上記出力画像領域として作成することを説明するための
図である。
【図17】複数のキー画像の各領域の重なり方によって
出力画像領域に対する処理を変化させるときに行う領域
分割の処理を示すフローチャートである。
出力画像領域に対する処理を変化させるときに行う領域
分割の処理を示すフローチャートである。
【図18】図17に示した処理により分割した領域を説
明するための図である。
明するための図である。
【図19】各領域の重なり方に応じて合成する処理を変
化させる一例について説明するための図である。
化させる一例について説明するための図である。
【図20】二つの画像を示す領域A,Bを合成するとき
の条件を示す演算の一例について説明するための図であ
る。
の条件を示す演算の一例について説明するための図であ
る。
【図21】従来の手法で複数のキー画像を合成して新た
な画像を生成する処理について説明するための図であ
る。
な画像を生成する処理について説明するための図であ
る。
【図22】論理演算式を用いてキー画像の合成処理を行
う従来の手法について説明するための図である。
う従来の手法について説明するための図である。
【図23】同一の合成結果を得るための代数演算式が複
数存在することを説明するための図である。
数存在することを説明するための図である。
1 画像生成装置、3 演算式処理部、11 構文解析
部、12 代数式変換部、13 最適化部、14 因数
分解部、15 演算命令生成部
部、12 代数式変換部、13 最適化部、14 因数
分解部、15 演算命令生成部
Claims (16)
- 【請求項1】 操作命令に応じて複数の画像が占める領
域を合成する内容を示し、各画像が占める領域を示すオ
ペランドと上記各画像を合成するときの処理手法を示す
演算子とからなる論理演算式を生成するステップと、 上記論理演算式を構成するオペランドを処理の対象とし
て各画像を示す領域の名称に変換し、上記演算子を演算
の種類及び演算の優先順位を示す括弧に変換すること
で、上記論理演算式を代数演算式に変換するステップ
と、 上記代数演算式を用いて、上記複数の画像を合成して新
たな画像を生成するステップとを有することを特徴とす
る画像生成方法。 - 【請求項2】 上記画像は、画像内に含まれる対象物の
輪郭を示すキー画像であることを特徴とする請求項1記
載の画像生成方法。 - 【請求項3】 上記代数演算式を構成する領域の名称及
び演算の種類の数を削減して代数演算式を最適化するス
テップを有することを特徴とする請求項1記載の画像生
成方法。 - 【請求項4】 同一の少なくとも一の領域の名称からな
る項をまとめる処理を行うことで領域の名称及び演算の
種類の数を削減することを特徴とする請求項3記載の画
像生成方法。 - 【請求項5】 同一の領域の名称及び演算の種類からな
る項についての係数をまとめる処理を行うことで領域の
名称及び演算の種類の数を削減することを特徴とする請
求項3記載の画像生成方法。 - 【請求項6】 上記代数演算式を構成する領域の名称を
選択し、選択した領域を含む項と選択した領域を含まな
い項とに分類することで演算の種類の数を削減すること
を特徴とする請求項4記載の画像生成方法。 - 【請求項7】 代数演算式に含まれる領域の名称のう
ち、最も数の多い領域の名称を選択することを特徴とす
る請求項6記載の画像生成方法。 - 【請求項8】 上記代数演算式は、上記論理演算式にお
ける最下層のオペランドから処理するように上記論理演
算式を括弧に変換してなることを特徴とする請求項1記
載の画像生成方法。 - 【請求項9】 操作命令に応じて複数の画像が占める領
域を合成する内容を示し、各画像が占める領域を示すオ
ペランドと上記各画像を合成するときの処理手法を示す
演算子とからなる論理演算式を生成する論理演算式生成
手段と、 上記論理演算式を構成するオペランドを処理の対象とし
て各画像を示す領域の名称に変換し、上記演算子を演算
の種類及び演算の優先順位を示す括弧に変換すること
で、上記論理演算式を代数演算式に変換する代数演算式
変換手段と、 上記代数演算式を用いて、上記複数の画像を合成して新
たな画像を生成する画像生成手段とを備えることを特徴
とする画像生成装置。 - 【請求項10】 上記画像は、画像内に含まれる対象物
の輪郭を示すキー画像であることを特徴とする請求項9
記載の画像生成装置。 - 【請求項11】 上記代数演算式変換手段で変換された
代数演算式を構成する領域の名称及び演算の種類の数を
削減して代数演算式を最適化する最適化手段を備えるこ
とを特徴とする請求項9記載の画像生成装置。 - 【請求項12】 上記最適化手段は、同一の少なくとも
一の領域の名称からなる項をまとめる処理を行うことで
領域の名称及び演算の種類の数を削減することを特徴と
する請求項11記載の画像生成装置。 - 【請求項13】 上記最適化手段は、同一の領域の名称
及び演算の種類からなる項についての係数をまとめる処
理を行うことで領域の名称及び演算の種類の数を削減す
ることを特徴とする請求項11記載の画像生成装置。 - 【請求項14】 上記最適化手段は、代数演算式を構成
する領域の名称を選択し、選択した領域を含む項と選択
した領域を含まない項とに分類することで演算の種類の
数を削減することを特徴とする請求項12記載の画像生
成装置。 - 【請求項15】 上記最適化手段は、代数演算式に含ま
れる領域の名称のうち、最も数の多い領域の名称を選択
することを特徴とする請求項14記載の画像生成装置。 - 【請求項16】 上記代数演算式変換手段は、論理演算
式における最下層のオペランドから処理するように上記
論理演算式を括弧に変換することを特徴とする請求項9
記載の画像生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29090298A JP2000123149A (ja) | 1998-10-13 | 1998-10-13 | 画像生成方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29090298A JP2000123149A (ja) | 1998-10-13 | 1998-10-13 | 画像生成方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000123149A true JP2000123149A (ja) | 2000-04-28 |
Family
ID=17761997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29090298A Withdrawn JP2000123149A (ja) | 1998-10-13 | 1998-10-13 | 画像生成方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2000123149A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101893034B1 (ko) * | 2010-07-30 | 2018-10-04 | 알레고히뜨믹 | 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법 |
-
1998
- 1998-10-13 JP JP29090298A patent/JP2000123149A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101893034B1 (ko) * | 2010-07-30 | 2018-10-04 | 알레고히뜨믹 | 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5644758A (en) | Bitmap block transfer image conversion | |
CA2210014C (en) | Optimized color space conversion | |
JP3797666B2 (ja) | グラフィックオブジェクトの塗りつぶしをアクティブ化する方法および装置 | |
US5596701A (en) | Method for automatically restoring consistency in a hierarchical object structure in a computer after a user interaction, and computer comprising such a system for automatic consistency restoration | |
US5129013A (en) | Graphics image editor | |
KR100918532B1 (ko) | 알파 채널 인식 환경에서 비알파 채널 영상 데이터를 이용하는 코프로세싱 장치 및 컴퓨팅 장치 | |
JPH11147335A (ja) | 描画処理装置 | |
US7554554B2 (en) | Rendering apparatus | |
WO2003034272A2 (en) | Systems and methods for generating visual representations of graphical data and digital document processing | |
JP3442192B2 (ja) | データ駆動型情報処理装置 | |
US5777599A (en) | Image generation device and method using dithering | |
JP2837339B2 (ja) | 画像生成方法 | |
JP2011223633A (ja) | 高速フィルタ型のyuvからrgbへの変換 | |
US5896307A (en) | Method for handling an underflow condition in a processor | |
EP0860080A1 (en) | Method and apparatus for de-interlacing video fields to progressive scan video frames | |
KR100368198B1 (ko) | 마이크로컴퓨터 | |
US5333261A (en) | Graphics processing apparatus having instruction which operates separately on X and Y coordinates of pixel location registers | |
JP2005077522A (ja) | 画像処理装置および画像処理方法 | |
JP2000123149A (ja) | 画像生成方法及び装置 | |
JP4143613B2 (ja) | 描画方法、描画装置 | |
JP4063918B2 (ja) | 表示のためのグラフィックス情報を含むイメージを作成する装置と方法 | |
JP2000125197A (ja) | 画像生成方法及び装置 | |
US10424084B2 (en) | Digital content rendering that supports alpha is shape (AIS) as part of knockout groups | |
JP2008067233A (ja) | 電子透かし埋め込み方法、プログラムおよびコンピュータ読み取り可能な記録媒体 | |
US5497436A (en) | System and method for bit-masked color signal scaling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060110 |