(57)【要約】【課題】奥行き感を確保しつつ、線を消失することなく描画する。【解決手段】正変換行列描画処理部１１３は、第２のピクセル群に対して逆アフィン変換を施すことにより、前記第２のピクセル群に対応するアフィン変換前の第１のピクセル群を算出し、それらの第１のピクセル群のデータに基づいて第２のピクセル群を描画する。逆変換行列描画処理部１１２は、第１のピクセル群のうち、描画処理に用いられなかったデータに対応する第１のピクセルにアフィン変換を施すことにより、第１のピクセルに対応する第２のピクセル群を算出する。そして、逆変換行列描画処理部１１２は、第１のピクセルのデータに基づいて、算出された第２のピクセル群を描画する。【選択図】図１
2012160120.tif 000002
【特許請求の範囲】
【請求項１】
第１のピクセル群に対してアフィン変換を施すことにより第２のピクセル群を描画する画像処理装置であって、
前記第２のピクセル群に対して逆アフィン変換を施すことにより、前記第２のピクセル群に対応するアフィン変換前の前記第１のピクセル群を算出する第１の算出手段と、
前記第１の算出手段により算出された前記第１のピクセル群のデータに基づいて前記第２のピクセル群を描画する第１の描画手段と、
前記第１のピクセル群のうち、前記第１の描画手段による描画処理に用いられなかったデータに対応する第１のピクセルにアフィン変換を施すことにより、前記第１のピクセルに対応する前記第２のピクセル群を算出する第２の算出手段と、
前記第１のピクセルのデータに基づいて、前記第２の算出手段により算出された前記第２のピクセル群を描画する第２の描画手段とを有することを特徴とする画像処理装置。
【請求項２】
前記アフィン変換は、２次元変形及び３次元変形のうちの少なくとも何れか一方を含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
最近傍法を用いて、前記第１のピクセル群から前記第２のピクセル群にアフィン変換を行うことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
線形補間法を用いて、前記第１のピクセル群から前記第２のピクセル群にアフィン変換を行うことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
アフィン変換後の前記第２のピクセル群の大きさに基づいて、前記第１のピクセル群から前記第２のピクセル群にアフィン変換を行うことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項６】
前記データは、ベクトルデータをラスタライズしたビットマップデータを含むことを特徴とする請求項１乃至５の何れか１項に記載の画像処理装置。
【請求項７】
前記第１のピクセル群のうち、前記第１の描画手段による描画処理に用いられなかったデータに対応する第１のピクセルを管理するための情報を記憶する記憶領域と、前記データが格納される領域とを共有することを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
第１のピクセル群に対してアフィン変換を施すことにより第２のピクセル群を描画する画像処理装置によって実行される画像処理方法であって、
前記第２のピクセル群に対して逆アフィン変換を施すことにより、前記第２のピクセル群に対応するアフィン変換前の前記第１のピクセル群を算出する第１の算出ステップと、
前記第１の算出ステップにより算出された前記第１のピクセル群のデータに基づいて前記第２のピクセル群を描画する第１の描画ステップと、
前記第１のピクセル群のうち、前記第１の描画ステップによる描画処理に用いられなかったデータに対応する第１のピクセルにアフィン変換を施すことにより、前記第１のピクセルに対応する前記第２のピクセル群を算出する第２の算出ステップと、
前記第１のピクセルのデータに基づいて、前記第２の算出ステップにより算出された前記第２のピクセル群を描画する第２の描画ステップとを有することを特徴とする画像処理方法。
【請求項９】
第１のピクセル群に対してアフィン変換を施すことにより第２のピクセル群を描画する画像処理装置によって実行される画像処理方法をコンピュータに実行させるためのプログラムであって、
前記第２のピクセル群に対して逆アフィン変換を施すことにより、前記第２のピクセル群に対応するアフィン変換前の前記第１のピクセル群を算出する第１の算出ステップと、
前記第１の算出ステップにより算出された前記第１のピクセル群のデータに基づいて前記第２のピクセル群を描画する第１の描画ステップと、
前記第１のピクセル群のうち、前記第１の描画ステップによる描画処理に用いられなかったデータに対応する第１のピクセルにアフィン変換を施すことにより、前記第１のピクセルに対応する前記第２のピクセル群を算出する第２の算出ステップと、
前記第１のピクセルのデータに基づいて、前記第２の算出ステップにより算出された前記第２のピクセル群を描画する第２の描画ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のピクセル群に対してアフィン変換を施すことにより第２のピクセル群を描画する技術に関するものである。
【背景技術】
【０００２】
２次元グラフィックスデータに３次元変形を施して描画するには、一般に、２次元グラフィックスデータをテクスチャに対して描画し、描画されたテクスチャデータを３次元変形してスクリーンに射影する。テクスチャデータを３次元変形して射影する一般的な方法は、スクリーンの各ピクセルについて、３次元変形の逆行列を掛けてテクスチャデータにおいて参照されるピクセル（参照ピクセル）を算出し、参照ピクセルのデータで描画する。しかし、この方法では、テクスチャデータの中で参照されないピクセルが発生することがあり、線の消失等が生じる原因となっている。
【０００３】
このような問題を解決するために、２次元グラフィックスデータを３次元変形して描画するとき、２次元グラフィックスデータが線であるかどうかを判別し、線である場合には、一定の太さで画面に描画するものが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２０３２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のように、線を一定の太さで画面に描画する手法では、３次元変形の奥行き感を出すことができないという問題があった。また、射影する際に、線であるオブジェクトを認識する必要があった。
【０００６】
そこで、本発明の目的は、奥行き感を確保しつつ、線を消失することなく描画することにある。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、第１のピクセル群に対してアフィン変換を施すことにより第２のピクセル群を描画する画像処理装置であって、前記第２のピクセル群に対して逆アフィン変換を施すことにより、前記第２のピクセル群に対応するアフィン変換前の前記第１のピクセル群を算出する第１の算出手段と、前記第１の算出手段により算出された前記第１のピクセル群のデータに基づいて前記第２のピクセル群を描画する第１の描画手段と、前記第１のピクセル群のうち、前記第１の描画手段による描画処理に用いられなかったデータに対応する第１のピクセルにアフィン変換を施すことにより、前記第１のピクセルに対応する前記第２のピクセル群を算出する第２の算出手段と、前記第１のピクセルのデータに基づいて、前記第２の算出手段により算出された前記第２のピクセル群を描画する第２の描画手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、奥行き感を確保しつつ、線を消失することなく描画することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係るグラフィックス描画装置の構成を示す図である。
【図２】逆アフィン変換による描画処理の流れを示すフローチャートである。
【図３】アフィン変換前後における矩形領域を説明するための図である。
【図４】逆アフィン変換による描画結果を説明するための図である。
【図５】原画像にアフィン変換を施して算出された矩形領域内の参照先ピクセルと、当該矩形領域に対して逆アフィン変換を施すことにより得られる参照元ピクセルとの対応関係を示す図である。
【図６】本発明の実施形態における描画処理を示すフローチャートである。
【図７】参照フラグバッファの初期状態と描画処理後の状態とを示す図である。
【図８】本発明の実施形態における描画処理による描画結果を説明するための図である。
【図９】参照元ピクセルと参照先ピクセルとの対応関係を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１１】
図１は、本発明の実施形態に係るグラフィックス描画装置の構成を示す図である。図１において、１００はグラフィックス描画装置であり、メモリ１１０及びＣＰＵ１２０を備える。また、グラフィックス描画装置１００は、ディスプレイ２００及び入力装置３００と接続されている。メモリ１１０には、参照フラグバッファ管理部１１１、逆変換行列描画処理部１１２、正変換行列描画処理部１１３としてＣＰＵ１２０を機能させるためのプログラムが格納されている。なお、グラフィックス描画装置１００は、画像処理装置の適用例となる構成である。
【００１２】
先ず、図２〜図５を用いて、逆アフィン変換による描画処理について説明する。図２は、逆アフィン変換による描画処理の流れを示すフローチャートである。ステップＳ２００１において、ＣＰＵ１２０は、アフィン変換後の矩形領域を算出する。ここでは、図３（Ａ）に示す矩形領域に対してアフィン変換を施し、図３（Ｂ）に示す矩形領域に変換する場合について考える。このときのアフィン変換行列は式１に示す行列であるものとする。また、変換前のピクセル（ｘ，ｙ）は、式１のアフィン変換行列を用いて、式２のように変換後のピクセル（ｘ１，ｙ１）に変換されるものとする。なお、図３に示す矩形領域における一つ一つの矩形の部分がピクセルに相当するものである。
【００１３】
【数１】
2012160120.tif 000003
【００１４】
正変換行列描画処理部１１３は、アフィン変換前の４つの頂点についてそれぞれアフィン変換を施すことにより、アフィン変換後の矩形領域を算出する。次に、アフィン変換後の矩形領域内の各ピクセルについて、以下に説明するステップＳ２００２〜Ｓ２００４の処理が繰り返し実行される。以下では、アフィン変換後の矩形領域内の各ピクセルを参照先ピクセルと称す。ステップＳ２００２において、逆変換行列描画処理部１１２は、式３に示すように、変換後の矩形領域内の各参照先ピクセルに対して逆アフィン変換を施すことにより、各参照先ピクセルに対応する、変換前の領域におけるピクセルを算出する。ステップＳ２００３において、逆変換行列描画処理部１１２は、ステップＳ２００２で算出したピクセルから最近傍法によって参照されるピクセル（以下、参照元ピクセルと称す）を求め、参照元ピクセルの値をスクリーンの各参照先ピクセルに描画する。本実施形態では、最近傍法によって参照元ピクセルを求めるが、線形補間法等の他の方法で求めるようにしてもよい。
【００１５】
【数２】
2012160120.tif 000004
【００１６】
いま、図４（Ａ）に示すようなビットマップデータである原画像にアフィン変換を施して描画する例を考える。原画像は２値のビットマップデータとし、図４（Ｄ）に示すように黒く塗りつぶされているピクセルの値を１とし、その他のピクセルの値を０とする。ここでは、２値のビットマップデータを例に挙げているが、多値のビットマップデータでもよいし、カラービットマップデータでもよい。図５は、図４（Ａ）に示す原画像にアフィン変換を施して算出された矩形領域内の参照先ピクセル（図５（Ａ））と、当該矩形領域に対して逆アフィン変換を施すことにより得られる参照元ピクセル（図５（Ｂ））との対応関係を示す図である。即ち、図５に示す対応関係に従って、図４（Ａ）に示す原画像に対してアフィン変換を施すと、図４（Ｂ）に示す描画結果となる。図４（Ｂ）に示すようにアフィン変換後は矩形領域が小さくなっているため、図４（Ｃ）に示すように原画像内に参照されないピクセルである非参照ピクセル（図４（Ｅ））が生じている。そのため、原画像の全てのピクセルの値が描画結果に反映されず、図４（Ｂ）に示すように横線が欠落することがある。なお、図４（Ａ）に示す矩形領域は第１のピクセル群の一例であり、図４（Ｂ）に示す矩形領域は第２のピクセル群の一例である。
【００１７】
次に、図６〜図９を用いて、本発明の実施形態における描画処理について説明する。ステップＳ６００１において、参照フラグバッファ管理部１１１は、逆アフィン変換によって原画像の各ピクセルが参照されたかどうかを示すフラグを格納するバッファをメモリ１１０に確保して初期化する。以下では、上記バッファを参照フラグバッファと称す。即ち、参照フラグバッファ管理部１１１は、図７（Ａ）に示すように、原画像と同じサイズの参照フラグバッファを確保し、全参照フラグバッファを０に初期化する。ステップＳ６００２において、正変換行列描画処理部１１３は、アフィン変換後の矩形領域を算出する。
【００１８】
ステップＳ６００３〜Ｓ６００５は、ステップＳ６００２で算出された矩形領域の全参照先ピクセルに対して繰り返し実行される。ステップＳ６００３において、逆変換行列描画処理部１１２は、アフィン変換後の参照先ピクセルについて、逆アフィン変換を施して原画像の参照元ピクセルを算出する。ステップＳ６００４において、逆変換行列描画処理部１１２は、参照元ピクセルの値（色情報）をスクリーン上の参照先ピクセルに描画する。ステップＳ６００５において、参照フラグバッファ管理部１１１は、ステップＳ６００３で算出された参照元ピクセルと同じ位置における参照フラグバッファの値を１に更新する。ステップＳ６００５までの処理が完了した時点では、描画結果は逆アフィン変換による描画結果と同様である。また、参照フラグバッファは図７（Ｂ）に示すように更新される。図７（Ｂ）において、０となっているピクセルが参照されなかったことを示している。なお、ステップＳ６００３は、第１の算出手段の処理例であり、ステップＳ６００４は、第１の描画手段の処理例である。
【００１９】
以上の処理に続き、ステップＳ６００６〜Ｓ６００８の処理が原画像の色情報が有効な全ピクセルについて繰り返し実行される。ここでいう色情報が有効なピクセルとは、本実施形態では、ピクセルの値が１であるピクセルであるが、多値のビットマップデータやカラービットマップデータである場合には、ピクセルの値が０以外の全てのピクセルである。ステップＳ６００６において、参照フラグバッファ管理部１１１は、色情報が有効なピクセルに対応する参照フラグバッファの値が０であるか否かを判定する。参照フラグバッファの値が０である場合、処理はステップＳ６００７に移行する。一方、参照フラグバッファの値が０ではなく、１である場合、ステップＳ６００７、Ｓ６００８はスキップされる。
【００２０】
ステップＳ６００７において、正変換行列描画処理部１１３は、現在のピクセルに対してアフィン変換を施して、スクリーン上で対応するピクセルを算出する。ステップＳ６００８において、正変換行列描画処理部１１３は、ステップＳ６００７で算出したピクセルを、原画像における現在のピクセルの色情報で描画する。なお、ステップＳ６００７は、第２の算出手段の処理例であり、ステップＳ６００８は、第２の描画手段の処理例である。
【００２１】
図８（Ａ）は、ステップＳ６００５までの処理が終了した時点における、原画像のピクセルの値が１であり、且つ参照フラグバッファの値が０であるピクセルを表している。図９は、図８（Ａ）に示す参照元ピクセルと、参照先ピクセルとの対応関係を示す図である。ここでは、同じアルファベットについて、小文字で示した参照元ピクセルから大文字で示した参照先ピクセルに変換されるものとする。一部、小文字のアルファベットで表された参照元ピクセルに対応する大文字のアルファベットで表された参照先ピクセルがないが、これは、異なる参照元ピクセルから同一の参照先ピクセルに変換されたためである。図６の処理全体による描画結果は、図８（Ｃ）に示すようになる。また、図６の処理のうち、ステップＳ６００６〜ステップＳ６００８の処理による描画結果は、図８（Ｂ）に示すようになる。図８（Ｃ）に示す最終的な描画結果は、逆アフィン変換参照による描画処理による描画結果（図４（Ｂ））に、本実施形態で追加した描画処理による描画結果（図８（Ｂ））を追加したものになる。
【００２２】
以上のように、本実施形態によれば、細い線を含む文字のような図形を３次元変形した場合であっても、３次元変形による奥行き感を確保しつつ、線を消失することなく描画することが可能となる。
【００２３】
本実施形態では、ビットマップデータにアフィン変換を施す例を示したが、ベクトルデータをラスタライズしたビットマップデータでも同様の処理を適用することができる。また、本実施形態では、３ｘ３のアフィン行列の例を示したが、３ｘ３によって２次元変形又は３次元変形を施すことができる。
【００２４】
また、本実施形態では、参照元ピクセルからのアフィン変換で参照先ピクセルを求める方法に最近傍法を用いたが、線形補間法を用いてもよい。また、参照元ピクセルのアフィン変換後の大きさを考慮して、参照元ピクセルからアフィン変換で参照先ピクセルを求めてもよい。例えば、アフィン変換によって参照先ピクセルの大きさが大きくなる場合、アフィン変換後の複数の参照先ピクセルに影響を及ぼす。逆に、アフィン変換によって参照先ピクセルの大きさが小さくなる場合、アフィン変換後の参照先ピクセルの一部に影響を及ぼすため、透明度をつけるようにしてもよい。さらに、本実施形態では、参照フラグバッファをビットマップデータとは別の領域に確保したが、共有して処理するようにしてもよい。
【００２５】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００２６】
１００：グラフィックス描画装置、１１０：メモリ、１１１：参照フラグバッファ管理部、１１２：逆変換行列描画処理部、１１３：正変換行列描画処理部、２００：ディスプレイ、３００：入力装置
【図１】
2012160120.tif 000005
【図２】
2012160120.tif 000006
【図３】
2012160120.tif 000007
【図４】
2012160120.tif 000008
【図５】
2012160120.tif 000009
【図６】
2012160120.tif 000010
【図７】
2012160120.tif 000011
【図８】
2012160120.tif 000012
【図９】
2012160120.tif 000013