(57)【要約】      （修正有）【課題】  サンプリング周波数の画像データに含まれる最高周波数を操作することによって、ピンボケの効果を表現する方法において、ｋ値が大きく変化する境界線での不自然なぼかし処理の問題を解決する。【解決手段】  画素ごとの遠近情報を有する画像データに対して、元の画像に含まれる最高周波数成分：ｆmにたいして、デジタルローパスフィルタのカットオフ周波数：ｆdがｆd＝ｋｆmという関係で表されるとき、画素ごとの遠近情報に対応する最小識別可能なドット数の逆数を変数ｋの値とするデジタルローパスフィルタにより画素ごとに処理することにより前記画素ごとの遠近情報に応じたぼかしを有する画像データを生成するコンピュータ画像処理方法において、画素間のカットオフ係数ｋ値が大きく変化し、境界が明確になりすぎて不自然さが生じる可能性があるとき、境界部分の境界線を滑らかにすることを特徴とするコンピュータ画像処理方法とする。【選択図】    図７
2005353093.tif 000002
【特許請求の範囲】
【請求項１】
画素ごとの遠近情報を有する画像データに対して、元の画像に含まれる最高周波数成分：ｆmにたいして、デジタルローパスフィルタのカットオフ周波数：ｆdがｆd＝ｋｆmという関係で表されるとき、画素ごとの遠近情報に対応する最小識別可能なドット数の逆数を変数ｋの値とするデジタルローパスフィルタにより画素ごとに処理することにより前記画素ごとの遠近情報に応じたぼかしを有する画像データを生成するコンピュータ画像処理方法において、
画素間のカットオフ係数ｋ値が大きく変化し、境界が明確になりすぎて不自然さが生じる可能性があるとき、ぼかし処理対象画素に対して、ぼかし処理前のフィルタパラメータＡ1としたときの出力ｙ1、処理後のフィルタパラメータＡ2としたときの出力ｙ2とした場合、フィルタパラメータをＡ2で処理したときの目標出力をｙtが（ｙ1＋ｙ2）／２となるようにフィルタメモリ値を設定することによって、境界部分の境界線を滑らかにすることを特徴とするコンピュータ画像処理方法。
【請求項２】
画素ごとの遠近情報を有する画像データに対して、元の画像に含まれる最高周波数成分：ｆmにたいして、デジタルローパスフィルタのカットオフ周波数：ｆdがｆd＝ｋｆmという関係で表されるとき、画素ごとの遠近情報に対応する最小識別可能なドット数の逆数を変数ｋの値とするデジタルローパスフィルタにより画素ごとに処理することにより前記画素ごとの遠近情報に応じたぼかしを有する画像データを生成するコンピュータ画像処理装置において、
画素間のカットオフ係数ｋ値が大きく変化し、境界が明確になりすぎて不自然さが生じる可能性があるとき、ぼかし処理対象画素に対して、ぼかし処理前のフィルタパラメータＡ1としたときの出力ｙ1、処理後のフィルタパラメータＡ2としたときの出力ｙ2とした場合、フィルタパラメータをＡ2で処理したときの目標出力をｙtが（ｙ1＋ｙ2）／２となるようにフィルタメモリ値を設定することによって、境界部分の境界線を滑らかにする手段を備えたことを特徴とするコンピュータ画像処理装置。
【請求項３】
画素ごとの遠近情報を有する画像データに対して、元の画像に含まれる最高周波数成分：ｆmにたいして、デジタルローパスフィルタのカットオフ周波数：ｆdがｆd＝ｋｆmという関係で表されるとき、画素ごとの遠近情報に対応する最小識別可能なドット数の逆数を変数ｋの値とするデジタルローパスフィルタにより画素ごとに処理することにより前記画素ごとの遠近情報に応じたぼかしを有するコンピュータ画像を生成する処理において、
画素間のカットオフ係数ｋ値が大きく変化し、境界が明確になりすぎて不自然さが生じる可能性があるとき、ぼかし処理対象画素に対して、ぼかし処理前のフィルタパラメータＡ1としたときの出力ｙ1、処理後のフィルタパラメータＡ2としたときの出力ｙ2とした場合、フィルタパラメータをＡ2で処理したときの目標出力をｙtが（ｙ1＋ｙ2）／２となるようにフィルタメモリ値を設定することによって、境界部分の境界線を滑らかにする手順を実行するプログラムを記録したコンピュータ記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータにおける画像処理方法および装置に関する。
【背景技術】
【０００２】
風景などを注意深く観察すると、近景は細部までくっきりと見えるのに対して、遠景は輪郭や細部がぼんやりとして見えることが分かる。このような見え方が自然な映像として記憶されているために、コンピュータグラフィック技術により作成される画像は、距離に関係なく明瞭なために、むしろ不自然さを感じてしまう。しかしながら、印刷業界やコンピュータソフト業界あるいは他の業界においても、あらかじめデジタルデータとして作成した明瞭な画像を組み合わせて自然な遠近感を付加することで製作費用と時間を短縮したいという要望が強い。
【０００３】
このような遠近感を表現する方法としてぼかしがある。これをコンピュータで表現する方法としては、各画素に対して物理的法則を仮想的に適用して計算を行う分散光線追跡法がある。分散光線追跡法は１画素のぼかし画像を形成するために複数の光線について計算を行うなど、膨大な計算時間が必要である。
【０００４】
分散光線追跡法は計算量が多くなるために、より簡易にぼかしを表現する方法の例として、特開平1-12608（特許文献１）や特開平2-190898（特許文献２）あるいは特開平4-193811（特許文献３）や特開平6-36025（特許文献４）などが挙げられる。ここで示されている方法は、各画素の奥行情報に応じて各画素のぼけの直径を計算し、近傍画素へのぼけの広がり面積を求め、遠近感を表現するものである。    
【０００５】
特開平1-12608（特許文献１）や特開平2-190898（特許文献２）では３×３等のマスクレジスタを用いて、周囲の画素の影響を考慮して画像にボケを付加することによって遠近感を実現している。特開平4-193811（特許文献３）や特開平6-36025（特許文献４）では５×５のカーネルを用いて、周囲の画素の影響を考慮して遠近感を実現している。
【０００６】
特開平1-12608（特許文献１）や特開平2-190898（特許文献２）の例では、以下のような問題点がある。
ａ．着目している画像に対して、外側１画素分の影響しか実現できない。
ｂ．１画素の処理は、マスクレジスタによる９画素の積和処理が必要となり、計算負荷が重い。
ｃ．近景情報を適切なマスクレジスタの重み係数に変換することは困難である。
ｄ．人間の視覚特性を考えると、距離が非常に遠い場合には周囲の１０画素程度の影響を受けることが考えられる。この状況を十分に表現するためには、マスクレジスタの大きさを２１×２１に拡大しなければならず、１画素の処理にはマスクレジスタによる４４１画素の積和処理が必要となり、非現実的な計算負荷となってしまう。同時に、マスクレジスタの内容の設計も非現実的な状況が予測される。このために、現実的な応用においては、自然な遠近感の表現において制約が生じることになる。
【０００７】
一方、特開平4-193811（特許文献３）や特開平6-36025（特許文献４）の例では、以下のような問題点がある。
ａ．着目している画像に対して、外側２画素分の影響しか実現できない。
ｂ．１画素の処理は、カーネルによる２５画素の積和処理が必要となり、計算負荷が重い。
ｃ．カーネルの重み係数２５個は対象画素ごとに算出しなければならず、計算負荷が重い。
ｄ．カーネルの中心以外の重み係数を次式で計算している。
ｆｗi,j＝｛（１−ｆｗ33）／（５×５−１）｝×ｄｆi,j
【０００８】
上式は、次のように書き換えられる。
ｆｗi,j＝（ｄｆ33×ｄｆi,j）／（５×５−１）
この式は、距離と距離の乗算を示しており物理的には意味があいまいである。このことから、ぼけの程度を調整するために、一度フィルタをかけてから目視評価を行い、さらにファイル処理を繰り返す必要があるかを判断しなければならないと思われる。この繰り返し処理も計算負荷の増加につながる。
【０００９】
本発明者らは、上記の問題点を解決する方法として、特開平10-74258号（特許文献５）に示す方法を提案した。ローパスフィルタのカットオフ周波数ｆdと画像データに含まれる最高周波数ｆm（＝サンプリング周波数ｆsの半分＝ｆs／２）との比、すなわちｆd／ｆmをカットオフ係数ｋとして導入し、バターワース、チェビシェフ、逆チェビシェフ、楕円関数フィルタなどの伝達関数をサンプリング周波数ｆsに影響されない伝達関数として導き、カットオフ係数ｋでぼかしを行った。ｋの逆数は１ドットをフィルタリング処理後（ぼかし処理後）何ドットで表すかを示す係数であるために、物理的にも理解しやすい形態で自動的なぼかし処理を可能にしてきた。
【００１０】
コンピュータで利用する画像データはデジタルデータである。自然界の情報はすべてのものが連続したデータすなわちアナログデータである。したがってコンピュータ用のデジタルデータとするために、アナログデータをＡ／Ｄ変換器（アナログ／デジタル変換器）を通してデジタルデータにし、コンピュータで処理する。一方、デジタルデータをテレビなどの表示装置に映し出すには、Ｄ／Ａ変換器（デジタル／アナログ変換器）を通して再度電気的なアナログデータに変換する。図１はアナログ映像をデジタル化（Ａ／Ｄ変換）し、コンピュータ処理したのち再びアナログ化（Ｄ／Ａ変換）して画像出力する一連の流れを図式化したものである。
【００１１】
標本化（サンプリング）は、ある周期でパルスを発生させて入力信号を時間方向で離散信号に変換することであり、量子化は振幅方向で離散信号に変換することである。標本化信号ｙ（ｔ）は、
ｙ（ｔ）＝Σｘ（ｔ）δ（ｔ−ｎＴ）
で表せる。ここで「Ｔ」は一定周期、「Σ」は時間ｔをマイナス無限大からプラス無限大までの総和、「ｘ（ｔ）」は入力信号のアナログデータである。通常、「ｘ（ｔ）」は電圧の時間に対するアナログ信号である。また、「δ」はデルタ関数すなわち、
δ（ｔ−ｎＴ）＝１  （ｔ＝ｎＴ時）
＝０  （ｔ≠ｎＴ時）
となる特殊関数である。信号ｘ（ｔ）が帯域幅Ｗ（ラジアン／秒）の有限帯域信号であるとき、
Ｔ＝２π／Ｗ
ｆ＝Ｗ／２π
となる。このｆが最高周波数である。
【００１２】
テレビあるいはコンピュータのディスプレイ画面に画像を表示する場合、ドットという点の集まりで表現する。図２はアナログ信号とドットとの関係を概念的に表している。(1)は明、暗、明、暗……と並んだドット表示の場合、(2)は明、明、明、暗、暗、暗……と並んだドット表示の場合である。(1)の入力となる画像アナログ信号は周期の短い波であり、(2)の場合は周期の長い波である。
【００１３】
人間が小さな物体を識別しようとするとき、ある限界以下の物体は一つの塊としてしか認識できない。最終的には、識別可能な最小の物体の大きさは、物体の輪郭と目を結んだ線の角度の最小値によって知ることができる。最小の視野角に対して近くの物体と遠くの物体とではその大きさが異なる。このことはすなわち、遠くを見ているときには広い面積全体を小さな点として認識していることになる。
【００１４】
図２の例では(1)の周波数は(2)の３倍になっている。このことからも、最高周波数成分を変化させるとそれに対応した人間の目で識別可能な物体の最小の大きさを表す画像上のドット数が変化することがわかる。
【００１５】
コンピュータで利用する画像データは、あるサンプリング周波数に基づいて取得された映像データの集まりとして捉えることができる。この画像データは標本化定理によると、元の画像データに含まれる最高の周波数成分：ｆmは、標本化定理によりサンプリング周波数：ｆsの半分、ｆs／２となる。このとき、人間の目で識別可能な物体の大きさは表示される画像における１ドットの大きさである。
【００１６】
さらに画像データに含まれる最高周波数成分がｆm／２に変化したとすると、人間の目で識別可能な最小物体の大きさは表示される画像では２ドットの大きさに変化する。このように、元の画像を遠くの映像として利用する場合には、１ドット単位でなく、１．５ドットあるいは２ドット単位で識別可能な画像に変化させれば、遠近効果が出せることになる。２ドット単位で識別する距離というのは比較的遠景に対しての要求であり、通常は１０ドットが８ドットあるいは９ドットとして認識される距離を表現することになる。
【００１７】
ローパスフィルタのカット周波数：ｆdを、
fd=kfm、(0＜k＜1)
と表すとき、ｋ＝１のときはローパスフィルタの処理を受けた画像データは、元の画像データと同じ最高周波数成分をもつことになり、結果的にはローパスフィルタ処理をしなかったときと同じことになる。すなわち、１ドットごとに識別可能な状態を表していることになる。
【００１８】
ｋ＝0.5のときは、２ドットごとに識別可能な距離の画像データを表すことになる。ｋ＝0.8のときは１０ドットの画像情報を８ドット分として認識する距離の画像データを表すことになる。結局、ｋの逆数分のドット数が１ドットとして認識されることになる。したがって、ｋを距離に応じた値に変更するだけで遠近感に応じたぼかしを有する画像データを生成することができる。
【００１９】
このように、サンプリング周波数の画像データに含まれる最高周波数を操作することによって、ピンボケの効果を表現できることになる。
【特許文献１】特開平1-12608号公報
【特許文献２】特開平2-190898号公報
【特許文献３】特開平4-193811号公報
【特許文献４】特開平6-36025号公報
【特許文献５】特開平10-74258号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上記のサンプリング周波数の画像データに含まれる最高周波数を操作することによって、ピンボケの効果を表現する方法は非常に有効な手法であるが、特別な場合には不都合な結果を生ずることもある。
【００２１】
例えば、前処理でｍ次数の処理を行う場合、フィルタのメモリをゼロクリアーしてからフィルタの次数回またはそれ以上の回数だけのフィルタ処理を行ってから最初の画素を出力してきた。この場合、カットオフ係数ｋの値が小さい場合（具体的にはO.3以下の場合）に、各ラインの最初の画素が暗くなっていた。
【００２２】
すなわち、ぼかしの度合いが強くなればなるほど、最初の画素が暗くなりすぎるという問題があった。また、ｋ値が大きく変化する画素間では境界が明確になりすぎるという不自然さを生じていた。
【００２３】
本発明が解決しようとしている課題は、サンプリング周波数の画像データに含まれる最高周波数を操作することによって、ピンボケの効果を表現する方法において、ｋ値が大きく変化する境界線での不自然なぼかし処理の問題を、解決することである。
【課題を解決するための手段】
【００２４】
上記課題を解決するために、本発明は、遠近情報を有する画像データにたいして、遠近情報に対応するカットオフ周波数を有するデジタルローパスフィルタにより処理することにより遠近情報に応じたぼかしを有する画像データを生成する方法において、各ラインの最初の画素を処理する場合、フィルタの出力値が入力画素データの画素値と等しくなるようにフィルタのメモリ値を設定してからフィルタ処理を実行する。
【００２５】
また、画素間のカットオフ係数ｋ値が大きく変化し、境界が明確になりすぎて不自然さが生じる可能性があるとき、ぼかし処理対象画素に対して、ぼかし処理前のフィルタパラメータＡ1としたときの出力ｙ1、処理後のフィルタパラメータＡ2としたときの出力ｙ2とした場合、フィルタパラメータをＡ2で処理したときの目標出力をｙtが（ｙ1＋ｙ2）／２となるようにフィルタメモリ値を設定することによって、境界部分の境界線を滑らかにする。
【００２６】
この発明は、人間の視覚特性を遠近情報に応じた周波数特性のデジタルフィルタで近似することにより、定量的に任意の遠近設定を可能にしている。
【００２７】
コンピュータで利用する画像データは様々なサンプリング周波数で採取される可能性があり、しかもそのサンプリング周波数の情報も得られないことが多い。しかしこの問題は以下の数式を用いれば重大な欠陥とはならない。本発明の方法では与えられた画像データをサンプリング周波数にかかわらず、１ドットごとから１／ｋドットごとに識別可能な画像へと変換することが可能となる。
【００２８】
デジタルローパスフィルタの例としてバターワースフィルタについて説明する。フィルタの次数については偶数次であっても、奇数次であっても事情は変わらないので、偶数について説明する。いま次数ｎ＝２ｍ、カットオフ周波数ωd＝２πｆd、サンプリング周波数ｆs＝１／ｔsのデジタルバターワースフィルタの伝達関数は数１のように表される。
【００２９】
【数１】
2005353093.tif 000003
【００３０】
数１において
ｆd＝ｋｆm
ωd＝２πｆd，ωm＝２πｆm                            ………（５）
ωd＝ｋωm＝ｋωs／２
とすると、伝達関数の係数に含まれる
ｔsωcp＝ｔsωd
の項は次のように表される。
ｔsωcp＝ｔsωd
＝ｔsｋωs／２＝（１／ｆs）×（２πｋｆs／２）  ………（６）
＝ｋπ
【００３１】
式（６）の最後の表現にはサンプリング周波数ｆsが現れない。したがって、伝達関数もサンプリング周波数には無関係になり、サンプリング周波数の半分ｆmとカットオフ周波数ｆdとの比率ｋだけで表される。
【００３２】
フィルタの次数は何次であっても本発明の方法が運用可能であるから、おもに１次のフィルタについて説明する。なお数１で示される１次のデジタルローパスフィルタは図３で示されるようなデータ処理するフィルタであり、２次のデジタルローパスフィルタは図４で示されるようなデータ処理するフィルタである。ｎ（＝２ｍ）次のデジタルローパスフィルタは、同様な処理をｍ段縦続で処理することになる。
【００３３】
ローパスフィルタの伝達関数には数１の式に示されたバターワースフィルタのほかに、チェビシェフ、逆チェビシェフ、楕円関数フィルタなどが挙げられる。しかしいずれも上記のパラメータｋによって表すことができる。したがって、本稿ではバターワースフィルタを例に話を進める。
【００３４】
本発明を実際に適用した場合の伝達関数の係数の例を示す。この実施例においては、アナログフィルタを双一次変換によってデジタルフィルタに変換するため、アナログフィルタのカットオフ周波数をプリワープという処理で変換する。プリワープの処理は次式で示す。
ωa＝（２／ｔs）・tan（ωdｔs／２）                 ………（７）
【００３５】
この式は、以下のような意味を持つ。すなわち、サンプリング周期ｔsの場合、カットオフ角周波数ωdのデジタルフィルタはカットオフ角周波数ωaのアナログフィルタをもとに設計するということである。この処理を行わないと、伝達特性において周波数が低い角周波数からωdに近づくに従って予定の特性から誤差を生じることになる。数１の式を参照にして、上式における
ｔsωcp＝ｔsωd
は、
ｔsωcp→ｔsωd＝ｔs（２／ｔs）tan（ωdｔs／２）
＝２tan（ｋπ／２）                 ………（８）
伝達関数Ｈ2m（ωd，ｚ）の係数Ｃ0p、Ａ1p、Ａ2pの実例を表１に示す。
【００３６】
【表１】
2005353093.tif 000004
【００３７】
伝達関数は数２の式に示されるようにカットオフ係数ｋの関数になっている。また図６に示すように、ｚ値とカットオフ係数ｋとを関連づけることによって遠近に応じたぼかしを表現できる。カットオフ係数ｋに対して、１次のフィルタの伝達係数は以下の式、数２で示される。
【００３８】
【数２】
2005353093.tif 000005
【００３９】
図５に、数２で示される１次のローパスフィルタの空間周波数特性を示す。縦軸は周波数ｆを表し、横軸の１目盛は１ドットが何ドットとして認識されるかを表している。図からも分かるように、ｋ値が小さいほど全体的にぼかしが強調され、大きいほど焦点が絞られる。
【００４０】
実際に上記のぼかし処理をプログラミング化する場合、画素ごとの距離を表すｚ値とぼかしの度合いを決定するカットオフ係数ｋを計算し、ｋ値からフィルタパラメータＡを求め、各画素のデータｒ、ｇ、ｂとフィルタメモリｍＲ、ｍＧ、ｍＲとフィルタパラメータＡとから新しい画素データをｒ´、ｇ´、ｂ´を求め、これを求める新しい画素データとする。すなわち、Ｃ言語風に書けば、
ｋ＝｛ｚ値よりカットオフ係数ｋの計算｝；
Ａ＝｛ｋよりａｔテーブルよりフィルタパラメータＡのサーチ｝；
を求めておき、各ラインの先頭の画素を初期化したのち、
【００４１】
Ｂ＝−（２Ａ−１）；
ｕＲ＝Ａ＊ｒ＋Ｂ＊ｍＲ；
ｒ´＝ｕＲ＋ｍＲ；
ｍＲ＝ｕＲ；
ｕＧ＝Ａ＊ｇ＋Ｂ＊ｍＧ；                         ………（９）
ｇ´＝ｕＧ＋ｍＧ；
ｍＧ＝ｕＧ；
ｕＢ＝Ａ＊ｂ＋Ｂ＊ｍＢ；
ｂ´＝ｕＧ＋ｍＢ；
ｍＢ＝ｕＢ；
【００４２】
の処理によって、ぼかし処理後の画素データｒ´、ｇ´、ｂ´が計算できる。この計算は、画面左から右、上から下へと、各画素ごとに行う。上記の式からもわかるように、フィルタメモリｍＲ、ｍＧ、ｍＢは前の画素の値が次の画素の計算値になっている（「ｍＲ＝ｕＲ；ｍＧ＝ｕＧ；ｍＢ＝ｕＧ；」の式参照）。
【００４３】
この場合、従来の処理ではプログラムを簡略化するために、フィルタメモリの初期値（各ラインの先頭の画素に対するフィルタメモリ値）をゼロにセットしていた。このために、ｋ値が小さいときに各ラインの先頭の画素が暗くなるという問題を起こしていた。この弊害を取り除くために、本発明では各ラインの最初の画素が入力画素データの値になるようにフィルタメモリを初期化する。これによって、各ラインの最初の画素が暗くなるという弊害を取り除くことができる。具体的には、発明の実施の形態で説明する。
【００４４】
画素間のｋ値が大きく変化す場合には、境界が明確になりすぎて不自然さが生じることがある。この場合には、ぼかし処理対象画素に対して、ぼかし処理前のフィルタパラメータＡ1としたときの出力ｙ1、処理後のフィルタパラメータＡ2としたときの出力ｙ2とした場合、フィルタパラメータをＡ2で処理したときの目標出力をｙtが（ｙ1＋ｙ2）／２となるようにフィルタメモリ値を設定する。すなわち、目標出力を処理前と処理後の荷重平均になるようにフィルタメモリを書き換えることによって、境界部分の変換を滑らかにする。この点の具体例も発明の実施形態で説明する。
【発明の効果】
【００４５】
本発明では、ぼけの生成のためにフィルタ手段では、出力する画素１個に要する計算負荷は常に１画素分の計算量で済む。たとえば１０画素分の影響を表現するような場合でも、カットオフ係数の値が変わるだけで、計算負荷に影響はない。また、横方向または縦方向のどちらか１方向についてのみぼけ効果を実現する用途では、中間出力用のイメージメモリを不要とすることが可能である。
【００４６】
本発明では、ぼけ効果の強弱にかかわらず、１回のフィルタ処理で済み、ぼけ効果の強弱の設定が、人間の視覚効果をシミュレートしているために、感覚的に理解しやすい。ｚ値テーブルの設定時に、特定のｚ値におけるカットオフ変数ｋを0.95程度に設定するだけで、その距離に目の焦点があっていることにできる。
【００４７】
ｚ値スレッシュホールドテーブルの設定で遠距離を表すｚ値に対してぼけ効果を実現するｋ値を設定し、特定のｚ値に対してｋ＝0.95を設定し、このｚ値よりも近い距離のｚ値に対してぼけ効果を実現するｋ値を設定することもできる。このことにより、非常に近くの物を見たときにぼけて見える現象についても表現することが容易に可能となる。
【００４８】
従来は、カットオフ係数ｋが小さいとき、フィルタ処理の各ラインの最初の画素部分が暗くなるという弊害があった。これは、フィルタメモリをゼロクリアーしていたために、出力値が実際よりも小さな値となっていたからである。この弊害を取り除くために、本発明では各ラインの先頭の画素に対して、フィルタ処理の出力値が入力の画素値と等しくなるようにフィルタメモリを設定することによって解決した。すなわち、フィルタのメモリ値を変更することによって、画素の最初の部分が暗くなりすぎるという弊害を取り除くことが可能となった。
【００４９】
また従来技術ではカットオフ係数ｋが大きく変化する場合、画素間の区切りが明確になりすぎて不自然さを生じていた。この点に関しても、ｋの値が変わる境界線上の画素に対して、処理前の出力値の出力値と処理後の出力値が平均化されるようにフィルタメモリを書き換えることで解決した。これによって、滑らかなぼかし処理が可能となり、以前のような境界部分がくっきりと浮きでるような不自然さを取り除くことが可能となった。
【発明を実施するための最良の形態】
【００５０】
本発明は次数に関係なく１次のフィルタ処理と同様の処理をすればよいから、ここでも一次のフィルタを中心に説明する。以下ではＣ言語を想定した表記法を用いる。まず前準備として、次の項目を用意する。なお、画像データは横ｗ＋１ドット、縦ｖ＋１ドットからなるものとする。
（１）画像データは、
ｄ0、ｄ1、ｄ2、ｄ3、…………、ｄw
を１ライン分のデータとして、ｗ＋１ライン分あるものとする。
【００５１】
（２）ｚ値データ 画素ごとに、距離を表すｚ値データは、
ｚ0、ｚ1、ｚ2、ｚ3、…………、ｚw
を１ライン分のデータとして、ｖ＋１ライン分用意する。
【００５２】
（３）各画素データは順に対応するカットオフ係数ｋで決定される特殊のフィルタに入力されて、ぼけ効果が付加されたデータが出力される。この特殊のフィルタをフィルタパラメータＡとする。具体的には、Ａは数１のＡ1pやＡ2pを表す。具体例は後記する。
【００５３】
（４）ｚ値とカットオフ係数ｋの関係は、それぞれの表現したいぼかしパターンに対応したｚによって決定されるｋ値を導く、式またはテーブルを用意しておく。たとえば、図６に示すパターンが考えられる。図６において、横軸は距離ｚ、縦軸はカットオフ係数ｋであり、ｋ値が大きいほどくっきりとした画像が得られ、ｋ値が小さくなるほど画像のぼけが大きくなる。
【００５４】
すなわち、図６の（１）はｚｎから遠ざかるほどぼかしが強調され、ｚｆからは一定のぼけになる場合。（２）は距離ｚｃでもっともピンとが合い、注目点ｚｃから遠ざかるほどぼけを生じさせる場合。（３）はｚｃｎからｚｃｆの範囲で焦点が合い、そこから遠ざかるほどぼけを生じさせる場合。（４）はｚｃｎからｚｃｆの範囲でもっともぼけた状態にした場合である。このようなぼかしの仕方によってそれぞれ異なるぼけの効果を表現することが可能である。プログラム上は、距離ｚの関数としてカットオフ係数ｋを決める関係式を導入してもよいし、またそれぞれの特性に合わせたテーブルを用意しておき、ｚの値によってテーブルからｋ値を引き出す方式にすることも可能である。
【００５５】
図７および図８は、１次フィルタを使用した場合の、本発明のぼかし処理の一例である。図７で示す［ｙ］［ｘ］は画素の位置を表す。すなわち、［ｙ］［ｘ］画面ｘ列（横方向ｘ＋１番目）、ｙ行（縦方向ｙ＋１番目）の画素を表す。Ｃ言語での表現であるために、［０］［０］は画面左上の最初の画素を指す。画像データをＲＧＢ（赤緑青の三原色）で表した場合の、元の画像の画素データはそれぞれ以下のように表している。
Ｒ［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＲ画像データ
Ｇ［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＧ画像データ
Ｂ［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＢ画像データ
また、ぼかし処理を施したのちのＲＧＢ値は、以下のように表している。
Ｒ´［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＲ画像データ
Ｇ´［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＧ画像データ
Ｂ´［ｙ］［ｘ］  …  ｙ＋１ラインのｘ＋１番目の画素のＢ画像データ
【００５６】
すなわち図７は、ぼかし処理を元の画素Ｒ、Ｇ、Ｂに「ぼかし処理」を実行した結果得られた新画素データｒ´、ｇ´、ｂ´をそれぞれＲ´、Ｇ´、Ｂ´に代入し、新しい画素データとして画像表示する。処理はｙを０からｖまで、各ｙに対してｘを０からｗまで実行する。すなわち、画面左から右、上から下へと、すべての画素に対してぼかしの処理を施している。
【００５７】
図７の「フィルタ処理」は、図８のフローチャートで示してある。最初の「入力ｚ値からカットオフ係数ｋを計算する」処理は、図６で示したグラフの特性から求めることができる。次の「フィルタのパラメータＡを求める」処理は、あらかじめ計算しておき、ｋの値に対応したテーブルとして配列Ａｔに格納して、プログラム上ではｋの値からＡを求めている。図のフローチャート例では
Ａ＝Ａｔ［floor(20*(K+0.025))-1］；
として求めている。１次のフィルタのｋとＡの関係、および配列Ａｔの例を表２に載せておく。ちなみに、表２の「−（２Ａ−１）」は、図８のフローチャートのＢの値である。このＢも、フィルタパラメータＡとともにテーブル化しておくと、プログラム処理を速くすることができる。
【００５８】
【表２】
2005353093.tif 000006
【００５９】
図８の「ｐＡ＝０？」の判定は、各ラインの先頭かどうかを調べるものである。図７でｘ＝０ならｐＡ＝０としているから、各ラインの先頭の画素はｐＡ＝０である。すなわち、先頭の画素の場合、フィルタメモリを
【００６０】
ｍＲ＝ｒ／２；  
ｍＧ＝ｇ／２；  
ｍＢ＝ｂ／２；  
【００６１】
と初期化している。従来の方法では、この値を０にクリアしていたために、ｋ値が小さいときに画素が暗くなるという弊害を生じていた。本発明では入力画素データｒ、ｇ、ｂで初期化している、ｒ、ｇ、ｂは図７で元の画素データＲ、Ｇ、Ｂで初期化している。これによって、各ラインの最初の部分が暗くなるという弊害が取り除かれる。さらに、従来の方法では各ラインの先頭画素の処理で行っていた複数回のフィルタ処理が１回のみとなり、処理の高速化にもつながっている。ではなぜ、ｘ／２で初期化するかを説明する。
【００６２】
なお以下の計算式で示すｘはｒ、ｇ、ｂ、ｙはｒ´、ｇ´、ｂ´の、図３、図４に対応するものであり、上記のプログラム上で使用している画素の位置を示す［ｙ］［ｘ］のｘ、ｙではない点に注意されたい。
【００６３】
図３の１次フィルタ処理において、フィルタメモリをｍ、フィルタの入力をｘ、フィルタの中間データをｕおよび出力をｙ、Ａ1をＡとすると、
ｕ＝Ａ・ｘ−２（Ａ−１）・ｍ
ｙ＝ｕ＋ｍ＝Ａ・ｘ−２（Ａ−１）・ｍ                 ………（１０）
という関係式が得られる。そこで初期の出力画素データｙが元の画素データｘと等しくするｍは、ｙ＝ｘとしてｍを求めればよいから、
ｍ＝ｘ／２
となる。したがって、図８で示すようにフィルタメモリｍＲ、ｍＧ、ｍＢは元の画データの２分の１と、Ａとは無関係になる。
【００６４】
ちなみに、２次フィルタの場合には図４より、フィルタメモリをｍ1、ｍ2、フィルタの入力をｘ、フィルタの中間データをｕおよびフィルタの出力をｙとすると、
ｕ＝Ｃ0・ｘ−Ａ1・ｍ1−Ａ2・ｍ2
ｙ＝ｕ＋２ｍ1＋ｍ2＝Ｃ0・ｘ＋（２−Ａ1）・ｍ1＋（１−Ａ2）・ｍ2
となる関係式が得られる。
【００６５】
そこでｍ1とｍ2をｍと置き、１次の場合と同様にｙ＝ｘが成り立つｍを求めると、
ｍ＝（１−Ｃ0）・ｘ／（３−Ａ1−Ａ2）＝ｘ／４      （数１より）
が得られる。すなわち、２次以上の場合には、最初の画素値の４分の１をメモリに設定すればよいことになる。
【００６６】
次に、カットオフ係数ｋが大きく変化する画素の境界部分の処理について説明する。画素間でカットオフ係数ｋが大きく変化すると、境界部分が明確になりすぎるために不自然さが目立つことになる。そこで本発明では境界部分に対して以下のように処理する。
【００６７】
１次フィルタメモリ値をｍ1、入力をｄとしたときの、対象画素を処理する前のフィルタパラメータをＡ1、対象画素で指定されているフィルタパラメータをＡ2とし、フィルタパラメータがＡ1でフィルタ処理をしたときの出力がｙ1であり、フィルタパラメータＡ2でフィルタ処理をしたときの出力がｙ2であったとする。ｋが大きく変化するということは、ｙ1とｙ2の値に大きな変化が生じることを意味している。
【００６８】
したがって、この変化を少なくするために、ｙ1とｙ2の加重平均になるような出力ｙtが得られるようにフィルタメモリを書き換える。すなわち、
ｙt＝（ｙ1＋ｙ2）／２
となるように、フィルタメモリｍ1をｍtに変更する。この場合のｍtは、
ｍt＝｛２・（Ａ1＋Ａ2−２）・ｍ1
＋（Ａ2−Ａ1）・ｄ｝／｛４・（Ａ2−１）｝
である。この式をもとに図８のフローチャートを書き換えたのが、図９のフローチャートである。フローチャートの最後でフィルタパラメータｐＡが、
ｐＡ＝Ａ
と書き換えられている。すなわち「pA>0 and A<>pA?」の判定は、先頭の画素でなく、かつフィルタパラメータが現在処理対象画素のフィルタパラメータＡとそれより一つ前のフィルタパラメータｐＡが異なる場合には、フィルタメモリの更新を行うことを表している。
【００６９】
以上は１次のフィルタ処理での話であるが、２次以上のフィルタ処理も同様に行える。たとえば２次フィルタの場合には、対象画素以前のフィルタメモリ値をｍ1、ｍ2、フィルタパラメータをＣ01、Ａ11、Ａ21としたときの出力をｙ1、対象画素のフィルタパラメータをＣ02、Ａ12、Ａ22としたときの出力をｙ2とした場合、目標出力値がｙt＝（ｙ1＋ｙ2）／２が得られるフィルタメモリ値をｍ1、ｍ2をｍtとしてフィルタメモリ値ｍtを以下のように書き換える。
ｍt＝｛（Ｃ01−Ｃ02）・ｄ＋（４−Ａ11−Ａ12）・ｍ1
＋（２−Ａ21−Ａ22）・ｍ2｝／｛２・（３−Ａ12−Ａ22）｝
【００７０】
以上は画像データをＲＧＢフォーマットで説明してきたが、ＹＵＶフォーマットの場合には、フローチャートのＲ、Ｇ、ＢをＹ、Ｕ、Ｖに書き換えればよい。ただしＹＵＶの場合には、ＵとＶ成分の処理はあまり画質に悪影響を及ぼさないので、Ｙだけで処理することもできる。なぜなら、Ｙに比較してＵとＶは周波数スペクトルが低い周波数に集中しているために、フィルタによる周波数制限をなくしても影響が少ないためである。したがって、ＹＵＶフォーマットを使用した場合には、ＲＢＧフォーマットに比べて処理速度を３倍に高速化できる。
【図面の簡単な説明】
【００７１】
【図１】アナログ映像をデジタル化（Ａ／Ｄ変換）し、コンピュータ処理したのち再びアナログ化（Ｄ／Ａ変換）して画像出力する一連の流れの説明図である。
【図２】アナログ画像信号とドットの関係の説明図である。
【図３】課題を解決するための手段における１次のデジタルフィルタ処理の一例を示す構成構成図である。
【図４】課題を解決するための手段における２次のデジタルフィルタ処理の一例を示す構成図である。
【図５】課題を解決するための手段における１次のローパスフィルタ空間周波数特性を示すグラフである。
【図６】本発明の実施の形態における距離ｚとカットオフ係数ｋによって得られるぼかしのパターンを示すグラフである。
【図７】本発明の実施の形態における遠近感付加処理の全体的な処理を示すフローチャートである。
【図８】本発明の実施の形態におけるフィルタ処理を示すフローチャートである。
【図９】本発明の実施例における、図８のフィルタ処理に境界部分の、区切りが明確になる不自然さを取り除いた処理を追加したフィルタ処理を示すフローチャートである。
【図１】
2005353093.tif 000007
【図２】
2005353093.tif 000008
【図３】
2005353093.tif 000009
【図４】
2005353093.tif 000010
【図５】
2005353093.tif 000011
【図６】
2005353093.tif 000012
【図７】
2005353093.tif 000013
【図８】
2005353093.tif 000014
【図９】
2005353093.tif 000015