(57)【特許請求の範囲】
【請求項１】
ディスプレイに表示する画像にアンチエイリアス処理を施す画像処理装置であって、
画像データの任意のピクセルを注目ピクセルとしたときに、前記注目ピクセルの上下にそれぞれ隣接する２ピクセル間の色情報の差分と、当該注目ピクセルの左右にそれぞれ隣接する２ピクセル間の色情報の差分との積をカド度合として算出するカド判定手段と、
前記画像データの任意のピクセルに対して前記カド度合に対応したボカシ処理を行うボカシ手段とを備える画像処理装置。
【請求項２】
ディスプレイに表示する画像にアンチエイリアス処理を施すためにコンピュータにより実行される画像処理プログラムであって、当該コンピュータに、
画像データの任意のピクセルを注目ピクセルとしたときに、前記注目ピクセルの上下にそれぞれ隣接する２ピクセル間の色情報の差分と、当該注目ピクセルの左右にそれぞれ隣接する２ピクセル間の色情報の差分との積を前記カド度合として算出するカド判定ステップと、
前記画像データの任意のピクセルに対して前記カド度合に対応したボカシ処理を行うボカシステップとを実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置および画像処理プログラムに関し、より特定的には、ディスプレイに表示する画像にアンチエイリアス処理を施す画像処理装置および画像処理プログラムに関する。
【０００２】
【従来の技術】
画像をディスプレイに表示するとき、ピクセルが方形であることに起因して、例えば図形や模様の境界部分（又は輪郭部分）や直線がギザギザ（ジャギー）に見えてしまう。このギザギザを滑らかに見せるための画像処理をアンチエイリアス処理という。代表的なアンチエイリアス処理としては、オーバーサンプリング方式や二度描き方式などがある。
【０００３】
オーバーサンプリング方式とは、例えばポリゴンによって表現された３次元のオブジェクトを２次元の画像データに変換する際に、表示すべき解像度よりも大きな解像度でポリゴンのエッジ部分の計算を行い、エッジ部分の色と背景色とを計算結果に基づいて混ぜ合わせて表示する方式である。
【０００４】
二度描き方式とは、３次元のオブジェクトを２次元の画像データに変換後、例えば図形や模様の色の境界部分において、その部分の色をその周囲の色と混ぜ合わせて表示する方式である。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来のアンチエイリアス処理には次のような欠点がある。
つまり、オーバーサンプリング方式では、本来表示すべき解像度よりも大きな解像度でポリゴンのエッジ部分の計算を行うため、通常よりも大きなメモリ容量が必要になるという問題がある。また、通常に比べてポリゴンのエッジ部分に対する処理負荷が増えるため、描くべきポリゴンの枚数によって処理負荷が大きく変動する。よって安定した動作が求められる処理には向かないという問題もある。特にゲーム処理では、プレイヤの操作を反映させたゲーム画像を例えば１秒間に６０回の割合で安定して生成する必要があるが、描くべきポリゴンの枚数が多くなるとアンチエイリアス処理に時間がかかってゲーム処理が遅延し、結果としてフレームのコマ落ちが生じてしまう。
【０００６】
一方、二度描き方式では、全ての色の境界部分において前述の混ぜ合わせ処理が行われるため、ギザギザに見えてしまう部分以外の部分まで処理され、例えば図形や模様の境界部分の全体にボケがかかり、結果として画面全体がボケた印象になってしまうという問題がある。
【０００７】
それゆえに、本発明の目的は、大きなメモリ容量を必要とせず、また大きな処理負荷なしに、メリハリ感を残しかつジャギーが目立たない画像を生成することのできる画像処理装置を提供することである。
【０００８】
【課題を解決するための手段および発明の効果】
この発明は、上記の目的を達成するために、次のように構成される。
すなわち、請求項１に係る発明によれば、画像処理装置は、ディスプレイ（実施形態との対応関係を示せば、例えば表示部１５）に表示する画像にアンチエイリアス処理を施すものであって、カド判定手段（ステップＳ２０３〜Ｓ２０４を実行するコプロセッサ１２；以下、単にステップ番号のみを示す）と、ボカシ手段（Ｓ２０５）とを備える。カド判定手段は、画像データの任意のピクセルを注目ピクセルとしたときに、前記注目ピクセルの上下にそれぞれ隣接する２ピクセル間の色情報の差分と、当該注目ピクセルの左右にそれぞれ隣接する２ピクセル間の色情報の差分との積をカド度合として算出する。ボカシ手段は、前記画像データの任意のピクセルに対して前記カド度合に対応したボカシ処理を行う。これにより、大きなメモリ容量を必要とせず、また大きな処理負荷なしに、メリハリ感が残るように効果的にボヤかした画像を生成することができる。つまり、上述のように処理されるようによって、ギザギザに見える部分（カド）だけがボケ、かつギザギザになっていない部分はボケない（換言すれば、元のくっきりした状態）ので、メリハリ感が残りかつジャギーが比較的目立たない画像となる。なお、括弧内の参照符号等は、理解を助けるために示したものであって、本発明の範囲を何ら限定するものではない。
【００２１】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照して説明する。
まず、図１および図２を参照して、本発明の画像処理の原理について説明する。本発明は、ギザギザに見える部分だけを効果的にボヤかしたメリハリのある画像を生成することを特徴としている。まず、図１に示すような、アンチエイリアス処理を行う前の７×７ピクセルの「元画像」があるとする。図中の黒いピクセルでは、色情報（例えば明度）を０〜１で表したときの色情報が０であることを示しており、一方図中の白いピクセルでは色情報が１であることを示している。ここでは説明を簡単にするために、各ピクセルの色情報の値が０ないし１のいずれかであるような元画像を用いて説明しているが、実際には色情報は０と１の間の任意の値をとりうる。
【００２２】
この「元画像」を、上下左右のそれぞれの方向に１ピクセルだけずらした４つの画像を生成する。そして、上方向にずらした画像と下方向にずらした画像とで各ピクセル毎に色情報の差分をとって差分画像を生成する。一方、左方向にずらした画像と右方向にずらした画像についても同様に差分画像を生成する。前述のように色情報は０〜１の値で表されているため、差分も０〜１の値となる。次に、こうして求めた二つの差分画像から、各ピクセル毎に差分値の積を演算する。その結果、図に示すように、各ピクセル毎に「カドの度合」を０〜１の値で示したデータが得られる。「カドの度合」とは、大まかには「視覚的にそこがカドであると認識される度合」を意味する。例えば色情報の差が大きい２つの領域の境界部分に存在するカドについては「カドの度合」は大きく、色情報の差が小さい２領域の境界部分に存在するカドについては「カドの度合」は小さい。また境界以外の部分や、境界の直線部分については「カドの度合」は０となる。なお、「カドの度合」は、ギザギザすなわちジャギーとしての目立ち度合いともいえる。
【００２３】
次に、上記のようにして求めた「カドの度合」を用いてアンチエイリアス処理を実行する。図２を参照してこの処理の説明を行う。この処理を行うにあたって、まず図に示すような「元画像のボカシ画像」が予め作成される。このボカシ画像の作成には、既存の任意のボカシ処理技術を用いることができる。そして、各ピクセル毎に「元画像」と「元画像のボカシ画像」とを前述の「カドの度合」に応じて混ぜ合わせることによって「処理後画像」を生成する。具体的に説明すると、「カドの度合」がαである場合に、「元画像」と「元画像のボカシ画像」の色情報の値を（１−α）：αの比率で混ぜ合わせる。例えば、図２において、「カドの度合」が０であるピクセル（白い部分）については「元画像」と「元画像のボカシ画像」とを１：０の比率で混ぜ合わせる、すなわち「元画像」と同じになる。一方、「カドの度合」が１であるピクセル（黒い部分）については「元画像」と「元画像のボカシ画像」とを０：１の比率で混ぜ合わせる、すなわち「元画像のボカシ画像」と同じになる。その結果、図に示す「処理後画像」のように、カドの部分だけを効果的にボヤかしたメリハリのある画像を得ることができる。
【００２４】
なお以上の説明では、処理途中に差分画像やその他の中間的な画像データが生成されるものとして説明したが、実際の処理ではこれら中間的な画像データを必ずしも生成する必要はなく、結果的に「処理後画像」が得られればよい。むしろメモリ領域の節約のためには、これら中間的な画像データを生成することなく「処理後画像」を得るようにするのが好ましい。よって以下で説明する実施形態では、これら中間的な画像データを生成することなく各ピクセル毎に「処理後画像」を生成している。
【００２５】
以下、本発明の一実施形態に係る画像処理装置について説明する。
図３に、本発明の一実施形態に係る画像処理装置の構成を示す。なお本実施形態は、本発明をゲーム装置に適用した場合の例を示すものであって、本発明はゲーム処理に限定されない。図３において、画像処理装置は、ビデオゲームメインユニット１０と、表示部１５と、ゲームコントローラ１６と、ゲームディスク１７とを備える。ビデオゲームメインユニット１０は、メインプロセッサ１１と、コプロセッサ１２と、メモリ１３と、ドライブユニット１４とを含む。
【００２６】
画像処理装置で実行される画像処理プログラムは、メモリ１３およびゲームディスク１７に格納され、コプロセッサ１２内で実行される。メモリ１３には、図４のメモリマップで示されるプログラムおよびデータが格納される。また、ゲームディスク１７は、ＤＶＤ等の記録媒体であって、図５のメモリマップで示されるプログラムおよびデータが格納される。
【００２７】
図４に示すメモリ１３のメモリマップにおいて、プログラム領域には、ビデオゲームメインユニット１０を動作させるための基本的なシステムプログラムに加え、ゲームディスク１７から読み出されたオブジェクト発生プログラム等が格納されている。オブジェクトデータ記憶領域には、ゲームディスク１７から読み出された各オブジェクトの画像データが格納される。計算用バッファは、オブジェクトのテクスチャの各色データの算出に用いられるバッファである。オブジェクトリスト領域には、１枚のフレーム画像を構成するために必要なオブジェクトの情報が格納される。フレームバッファ２１には、表示部１５より出力される１フレームの画像データが格納される。ボカシ画像格納バッファ２２には、フレームバッファ２１に格納されたアンチエイリアス処理前の元画像データをボカしたボカシ画像が格納される。元画像のコピー格納バッファ２３には、フレームバッファ２１に格納されたアンチエイリアス処理前の元画像データのコピーが格納される。
【００２８】
図５に示すゲームディスク１７のメモリマップにおいて、メインプログラム領域には、ゲームを動作させるための基本的なプログラムが格納されている。オブジェクト発生プログラム領域には、オブジェクト発生プログラム等の画像生成プログラムが格納されている。その他のプログラム領域には、メインプログラムおよびオブジェクト発生プログラム以外のプログラムが格納されている。画像データ領域には、オブジェクト（ゲームのグラフィック表示に必要なポリゴンおよびテクスチャ等）に関する様々なデータが格納されている。音データ領域には、ゲームの音表現に関する様々なデータが格納されている。
【００２９】
次に、図６および図７を参照して、図３に示す画像処理装置において、どのように画像生成プログラムが実行され、処理された画像が表示部１５の画面に表示されるのかを説明する。
図６に、画像処理装置において画像生成プログラムが実行される手順を説明するためのフローチャートを示す。図７は、図６のステップＳ１０８の詳細な手順を説明するためのフローチャートである。
【００３０】
図６において、まず電源投入時に動作するプログラムによって初期設定が行われる（ステップＳ１０１）。この初期設定では、ゲームディスク１７がセットされているか否かや、ゲームコントローラ１６が接続されているか否か等が検出される。初期設定が完了すると、ゲームディスク１７からメモリ１３へ、必要なプログラムおよびデータが転送される（ステップＳ１０２）。次に、メインプロセッサ１１が、メモリ１３のプログラム領域に記憶された画像生成プログラムの実行を開始し（ステップＳ１０３）、メモリ１３のオブジェクトデータ記憶領域から、オブジェクト（キャラクタ等）のデータを読み出す（ステップＳ１０４）。そして、メインプロセッサ１１によって、読み出された各オブジェクトが、ワールド座標系に配置される（ステップＳ１０５）。次に、メインプロセッサ１１が、ゲームプレーヤの視点に対応する仮想カメラをワールド座標系に配置し、この仮想カメラに基づいて各オブジェクトをカメラ座標系に変換する（ステップＳ１０６）。この変換は、行列変換およびメモリ座標上の二次元座標変換によって実現される。次に、コプロセッサ１２が、カメラ座標系に変換された各オブジェクトにレンダリング処理を行って、各オブジェクトの画像データをフレームバッファ２１に書き込む（ステップＳ１０７）。全てのオブジェクトについてレンダリング処理が完了すると、フレームバッファ２１に書き込まれた画像データ（元画像データ）に基づいてアンチエイリアス処理が行われる（ステップＳ１０８）。アンチエイリアス処理の詳細については後述する。アンチエイリアス処理が完了すると、フレームバッファ２１には処理後画像データが書き込まれた状態となっており、コプロセッサ１２は、フレームバッファ２１に書き込まれた処理後画像データに基づいて、表示部１５に画像信号を出力する（ステップＳ１０９）。上記ステップＳ１０３〜Ｓ１０９の処理は、ゲームが終了するまで繰り返して行われる（ステップＳ１１０）。
【００３１】
次に図７に示すフローチャートを参照して、図６に示すステップＳ１０８のアンチエイリアス処理について詳細に説明する。図７において、アンチエイリアス処理が開始されると、コプロセッサ１２は、ステップＳ２０１で、前述のレンダリング処理によってフレームバッファ２１に書き込まれた元画像（ＸＰＩＣ）から、元画像のボカシ画像（ＢＰＩＣ）を生成してボカシ画像格納バッファ２２に格納するとともに、元画像のコピー（ＣＰＩＣ）を元画像のコピー格納バッファ２３に格納する。元画像のボカシ画像を生成する方法としては、従前の任意のボカシ処理技術を用いることができる。各バッファへの画像の格納が完了すると、コプロセッサ１２は、処理対象とするピクセル（以下、注目ピクセルと称す）の位置を選択する（ステップＳ２０２）。本実施形態では、コプロセッサ１２は、各ピクセル毎に順次処理を行い、最終的に全てのピクセルについて処理を完了する。注目画素が選択されると、コプロセッサ１２は、元画像のコピー格納バッファ２３に格納されている元画像のコピー（ＣＰＩＣ）を参照して、注目ピクセルの上下にそれぞれ隣接する２ピクセル間の差分ｖと、注目ピクセルの左右にそれぞれ隣接する２ピクセル間の差分ｈを算出する（ステップＳ２０３）。このとき、例えばピクセルの色情報がＲＧＢ系で表されている場合、これらＲＧＢについてそれぞれ独立して差分の算出が行われる。またステップＳ２０３以降のステップ（ステップＳ２０４、Ｓ２０５）についても、同様にＲＧＢについてそれぞれ独立して処理が行われる。また差分は、色情報の最小から最大をＲＧＢについてそれぞれ０〜１で示した値に基づいて算出される。よって、差分ｖおよび差分ｈがとりうる値はともに０〜１となる。
【００３２】
注目ピクセルに対して差分ｖおよび差分ｈが算出されると、コプロセッサ１２は、ステップＳ２０４で、これら２つの差分の積ｃを算出する。積ｃは、この注目ピクセルの「カドの度合」を示している。差分ｖおよび差分ｈがとりうる値はともに０〜１であるため、この「カドの度合」ｃがとりうる値は０〜１となる。次に、コプロセッサは１２は、注目ピクセルに対応する元画像のボカシ画像（ＢＰＩＣ）および元画像のコピー（ＣＰＩＣ）のそれぞれの色情報を「カドの度合」ｃに応じた比率で混ぜ合わせ、その結果として算出された色情報に基づいて、フレームバッファ２１に格納されている元画像（ＸＰＩＣ）のデータを書き換える。具体的には、ボカシ画像（ＢＰＩＣ）の色情報とコピー（ＣＰＩＣ）の色情報とをｃ：（１−ｃ）の比率で混ぜ合わせる。その結果、「カドの度合」ｃが大きくなる（１に近づく）ほど処理後の色情報はボカシ画像（ＢＰＩＣ）の色情報に近づき、逆に「カドの度合」ｃが小さくなる（０に近づく）ほど処理後の色情報はコピー（ＣＰＩＣ）に近くなる。そして、重要な点として、「カドの度合」ｃが０である場合は、処理後の色情報はコピー（ＣＰＩＣ）の色情報、つまり元画像（ＸＰＩＣ）のままとなり、何らボカシ処理がかからないことになる。以上のステップＳ２０２〜Ｓ２０５の処理は、注目ピクセルを変えて順次実行され（ステップＳ２０６）、フレームバッファ２１に格納されている画像データの全てのピクセルについて処理されるとアンチエイリアシング処理は完了する。
【００３３】
以上のように、本実施形態では、注目ピクセルの上下にそれぞれ隣接する２ピクセル間の差分ｖと注目ピクセルの左右にそれぞれ隣接する２ピクセル間の差分ｈとの積として「カドの度合」ｃを判定する。図８に、差分ｈ、差分ｖと「カドの度合」ｃとの関係を示す。この図において、ｖ軸上の部分は、左右２ピクセル間の差分ｈが０である、つまり注目ピクセルが、色の境界線が水平に伸びている直線部分、ないし色の境界が無いベタ塗りの部分にあたることを意味する。一方、ｈ軸上の部分は、上下２ピクセル間の差分ｖが０である、つまり注目ピクセルが、色の境界線が垂直に伸びている直線部分、ないし色の境界が無いベタ塗りの部分にあたることを意味する。本実施形態では、注目画素がこれらｖ軸上またはｈ軸上の部分以外にあたる場合に、“注目画素はカドである”と判定し、この注目画素を「カドの度合」に応じてボカす。図８に示すように、上下２ピクセル間の差分ｖが大きいほど、また左右２ピクセル間の差分ｈが大きいほど、ボカシ処理がかかる度合（以下、「ボカシ度」と称す）が大きくなる。
【００３４】
なお、図８に示すｖ軸上またはｈ軸上以外の部分について、本実施形態では「カドの度合」ｃをそのまま「ボカシ度」として利用して、図７のステップＳ２０５に示すようにボカシ処理のかかり具合を決定しているが、これに限らない。ｖ軸上またはｈ軸上を除く部分について、図８に示す曲面に限らず、任意の「ボカシ度」を設定しても構わない。また「カドの度合」ｃを、何らかの関数によって「ボカシ度」ｂに変換した後、ステップＳ２０５におけるｃを「ボカシ度」ｂに置き換えて処理をしても構わない。また、その「カドの度合」を「ボカシ度」に変換するための関数は、ユーザによって任意に調整可能としても構わない。また、この関数は、「カドの度合」ｃがあるしきい値以上であれば「ボカシ度」ｂが１となり、あるしきい値以下であれば「ボカシ度」ｂが０となるような関数であっても構わない。重要なのは、「カドの度合」ｃが０であるときには「ボカシ度」ｂを０にすることである。これにより、直線部分にまでボカシ処理がかかってしまうことがなくなり、その結果として、ギザギザに見える部分（カド）だけを効果的にボヤかしたメリハリのある画像を生成することができるからである。
【００３５】
なお本実施形態では、画像データがＲＧＢ系の色情報で表されている場合に、このＲＧＢについてそれぞれ独立して処理を行うとしたが、これに限らず、例えば、ＲＧＢの各値を平均することによって生成したモノクロの色情報に基づいて処理を行うようにしても構わない。これにより、１フレームの画像処理にかかる処理負荷を低減することができる。ただし、注目画素がカドであるか否かをＲＧＢの各値の平均に基づいて判定する場合には、視覚的にはカドであると認識される場合であっても、処理としてはカドとして認識されない場合もある。例えば、赤の領域と青の領域の境界部分にあるカドなどでは、両領域においてＲＧＢの各値の平均が同一となる場合などがそうである。よって、カドであるか否かをより確実に判定するためには、ＲＧＢそれぞれについて独立して処理を行うのが好ましい。なお色情報としては、ＲＧＢ系以外の色情報、例えば明度や輝度等、種々の情報を利用しても良い。
【００３６】
また本実施形態では、レンダリング処理によって１フレーム分の画像データをフレームバッファ２１に格納した後、この画像データ全体に対してアンチエイリアス処理を行うとしたが、これに限らず、画像データの各部分（例えば背景部分や各オブジェクト）に対してそれぞれ個別にアンチエイリアス処理を施すようにしても良い。例えば、アンチエイリアス処理をかけたくない画像だけを後からフレームバッファ２１にレンダリングするステップをステップＳ１０８の後ろに追加すればよい。具体的には、ステップＳ１０７において、アンチエイリアス処理をかけたい画像だけをフレームバッファ２１にレンダリングしておく。そして、ステップＳ１０８において、フレームバッファ２１を対象にアンチエイリアス処理を施す。その後、アンチエイリアス処理をかけたくない画像をフレームバッファ２１に書き込む。このようにすれば、例えばゲーム画面に予め所望の状態で描かれた文字や図形等を重ねて表示する場合には、アンチエイリアス処理によって文字や図形等のイメージが変化してしまわないので有効である。
【００３７】
以上のように、本実施形態によれば、オーバーサンプリング方式のように本来表示すべき解像度よりも大きな解像度でポリゴンのエッジ部分の計算を行う必要がないため、大きなメモリ容量は必要ない。また、描くべきポリゴンの枚数によってアンチエイリアス処理負荷が変化したりすることはなく、１フレーム分の画像データに対する処理負荷がほぼ一定であるので、処理負荷が大きく変動することがない。よってゲーム処理のように安定した動作が求められる処理に対して好適に利用することができる。また、ギザギザに見える部分だけを効果的にボヤかすことができるので、ボカシ処理によって画面全体がボケた印象になってしまうこともない。
【図面の簡単な説明】
【図１】図１は、本発明のアンチエイリアス処理の原理を説明するための図である。
【図２】図２は、本発明のアンチエイリアス処理の原理を説明するための図である。
【図３】図３は、本発明の一実施形態に係る画像処理装置の構成を示すブロック図である。
【図４】図４は、メモリ１３のメモリマップの一例を示す図である。
【図５】図５は、ゲームディスク１７のメモリマップの一例を示す図である。
【図６】図６は、画像処理装置における画像処理動作を示すフローチャートである。
【図７】図７は、アンチエイリアシング処理の詳細な手順を示すフローチャートである。
【図８】図８は、差分ｖ、差分ｈと「カドの度合」ｃとの関係を示す図である。
【符号の説明】
１０…ビデオゲームメインユニット
１１…メインプロセッサ
１２…コプロセッサ
１３…メモリ
１４…ドライブユニット
１５…表示部
１６…ゲームコントローラ
１７…ゲームディスク
【図１】
0003792149.tif 000002
【図２】
0003792149.tif 000003
【図３】
0003792149.tif 000004
【図４】
0003792149.tif 000005
【図５】
0003792149.tif 000006
【図６】
0003792149.tif 000007
【図７】
0003792149.tif 000008
【図８】
0003792149.tif 000009