画像処理装置、画像処理方法、及びプログラム
【課題】画像変形処理とフィルタ処理とを連続して行う際に、画質の低下を防ぐ。
【解決手段】入力画像中の各画素位置のうち、変形処理により変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する。変形画像を構成する各画素位置について画素値を設定することで得られる変形画像から、出力画像の処理画素位置における画素の画素値を算出する。存在すると判定した場合には、変形画像における処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、出力画像における処理画素位置における画素の画素値として設定する。存在しないと判定した場合には、変形画像における処理画素位置の画素の画素値又は予め定められた画素値を、出力画像における処理画素位置における画素の画素値として設定する。出力画像の各画素位置について画素値を設定することで得られる出力画像を出力する。
【解決手段】入力画像中の各画素位置のうち、変形処理により変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する。変形画像を構成する各画素位置について画素値を設定することで得られる変形画像から、出力画像の処理画素位置における画素の画素値を算出する。存在すると判定した場合には、変形画像における処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、出力画像における処理画素位置における画素の画素値として設定する。存在しないと判定した場合には、変形画像における処理画素位置の画素の画素値又は予め定められた画素値を、出力画像における処理画素位置における画素の画素値として設定する。出力画像の各画素位置について画素値を設定することで得られる出力画像を出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理技術に関する。
【背景技術】
【0002】
従来より、画像を変形する技術と、画像に対してフィルタ処理を行う技術とが、それぞれ独立に知られている。例えば画像変形技術の一例として、歪み補正処理、キーストーン補正処理、又は幾何補正処理等と呼ばれる技術(以降、まとめて歪み補正処理と呼ぶ)がある。歪み補正技術は例えば、プロジェクタにおいて用いられる。図1はプロジェクタ100がスクリーン101上に画像を表示する様子を示す。プロジェクタ100の投射光学系の光学軸とスクリーン101とのなす角度が90度の場合には、投射画像102はスクリーン101上に正規の形状(例えば長方形)に表示される。一方、この角度が90度以外の場合には、投射画像103は歪んだ形状(例えば台形)で表示される。この歪みを補正するために、歪み補正処理が行われる。図2は、歪み補正処理の例を示す。歪み補正処理によって、入力画像200は歪み補正画像201に変換される。ここで歪み補正画像201には、台形形状の有効領域205と、有効領域外のブランキング領域204とが含まれる。歪み補正画像201がスクリーン101に投影されると、有効領域はスクリーン上で長方形に表示される(203)。
【0003】
また、画像に対してフィルタ処理を行う様々な技術が知られている。フィルタ処理の一例として、空間フィルタ処理を用いた視認性向上処理が挙げられる。この視認性向上処理には、動画を表示する際のフレームレートを向上させることが含まれる(例えば、図2の202)。このような処理の例としては、例えば特許文献1に記載の技術が挙げられる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−44460号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
歪み補正処理と、フィルタ処理とを組み合わせる場合に、以下のような課題が生じることを発明者は発見した。まず第1の課題について、図3(A)を参照して説明する。図3(A)においてスクリーンに投射されている投射画像304は、歪み補正画像303に対してフィルタ処理を行ってからスクリーンに投影することによって得られる。歪み補正画像303における領域301は、投射画像304における領域305に対応する。また、歪み補正画像303における領域302は、投射画像304における領域306に対応する。ここで、領域301と領域302とは同じ大きさであるが、領域305と領域306との大きさは異なる。すなわち、歪み補正画像303に対して領域301を参照領域とするフィルタ処理を行った場合、投射画像304の観察者にとっては、領域305を参照領域とするフィルタ処理が行われたかのように見える。同様に、歪み補正画像303に対して領域302を参照領域とするフィルタ処理を行った場合、投射画像304の観察者にとっては、領域306を参照領域とするフィルタ処理が行われたかのように見える。このように、観察者には投射画像304において一様でないフィルタ処理が行われているように見え、このことは画質の低下として認識されることがある。例えばフィルタ処理によって平滑化を行う場合、領域306と比べて、領域305においては画像の鮮鋭度がより大きく低下する。
【0006】
次に第2の課題について、図3(B)を参照して説明する。歪み補正画像303において、ブランキング領域307と有効領域308の境界にある領域300を参照してフィルタ処理を行うと、境界付近の鮮鋭度が低下することがある。通常、ブランキング領域307内の画素値は所定の値、例えば(R,G,B)=(0,0,0)(黒色)を持つ。ところで、領域310の中心画素は、ブランキング領域307内に位置するが、この画素の画素値は領域310を参照したフィルタ処理によって得られる。ところが領域310内には有効領域308が含まれるため、フィルタ処理によって得られる画素値は、上記の所定の値とは異なるものとなる。
【0007】
一方で領域309の中心画素は、有効領域308内に位置するが、この画素の画素値は領域309を参照したフィルタ処理によって得られる。ところが領域309内にはブランキング領域307が含まれるため、フィルタ処理によって得られる画素値は、ブランキング領域の画素値の影響を受けてしまう。すなわち、上述のようにブランキング領域の画素が黒色であれば、ブランキング領域307と有効領域308との境界において、ブランキング領域307の画素値は大きくなり、有効領域308の画素値は小さくなってしまう。
【0008】
本発明は、画像変形処理とフィルタ処理とを連続して行う際に、画質の低下を防ぐことを目的とする。
【課題を解決するための手段】
【0009】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置であって、
前記入力画像を入力する入力手段と、
前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定手段と、
前記判定手段が存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定手段が存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形手段と、
前記変形手段が前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算手段であって、
前記判定手段が存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定手段が存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算手段と、
前記演算手段が前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力手段と、
を備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、画像変形処理とフィルタ処理とを連続して行う際に、画質の低下を防ぐことができる。
【図面の簡単な説明】
【0011】
【図1】プロジェクタ100を用いてスクリーン101上に画像を表示する例。
【図2】歪み補正処理について説明するための説明図。
【図3】歪み補正処理とフィルタ処理とを組み合わせた際の問題を説明する図。
【図4】実施例1に係るコンピュータの物理的構成例。
【図5】実施例1の係る画像処理装置の機能的構成例。
【図6】領域判定部505が行う処理を説明するための図。
【図7】入力画像データ542のデータ構造の一例。
【図8】フィルタ選択情報548とフィルタ556との対応の一例を示す図。
【図9】カウンタ506が行う処理のフローチャートの一例。
【図10】領域判定部505が行う処理のフローチャートの一例。
【図11】参照画素取得部510が行う処理のフローチャートの一例。
【図12】入力画素取得部504が行う処理のフローチャートの一例。
【図13】画像蓄積部502が行う処理のフローチャートの一例。
【図14】実施例1に係る画像処理装置が行う処理のフローチャートの一例。
【発明を実施するための形態】
【0012】
以下、添付の図面を参照して、本発明をその好適な実施例に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0013】
[実施例1]
図5は実施例1に係る画像処理装置の機能的構成の一例を表す。以下、図5を参照して、本実施例に係る画像処理装置が備える各部について詳しく説明する。図5に示されるように、本実施例に係る画像処理装置は、歪み補正部500とフィルタ部501とを備える。
【0014】
まず、歪み補正部500について説明する。本実施例において歪み補正部500は、入力画像に対して変形処理(歪み補正処理)を行う。そして歪み補正部500は、歪み補正された画像を画像領域内に含む歪み補正画像(変形画像)を出力する。しかしながら歪み補正部500が行う処理は歪み補正処理に限られず、歪み補正部500は任意の画像変形処理を行うことができる。例えば、水平垂直補正、レンズ歪み補正、幾何変形、全方位画像変形などであってもよい。全方位画像変形とは、魚眼レンズ等の光学系によって取得した360度画像を長方形画像に展開する変形処理を指す。
【0015】
歪み補正部500は処理部として、画像蓄積部502、入力画素取得部504、領域判定部505、及びカウンタ506を備える。さらに歪み補正部500は記憶部として、フレームメモリ503、バッファ507、及び座標変換テーブル515を備える。フレームメモリ503及びバッファ507は、例えば後述のRAM400によって実現されうる。また座標変換テーブル515は、後述のROM401によって実現されうる。本実施例においてバッファ507は、FIFOバッファとして動作するものとする。
【0016】
歪み補正部500には、入力画像及び画像サイズ情報540が入力される。歪み補正部500には動画が入力されてもよく、この場合歪み補正部500には複数の入力画像(フレーム画像)が入力される。入力画像は、複数の画素で構成されている。具体的には歪み補正部500には、入力画像のそれぞれの画素についてのデータが入力される。以下で、入力画像のそれぞれの画素についてのデータを入力画像データ542と呼ぶ。入力画像データ542のデータ構造の一例を図7に示す。入力画像データ542は、図7に示されるように、Vsyncフラグ、Hsyncフラグ、Rコンポーネント、Gコンポーネント、及びBコンポーネントを含む。
【0017】
Vsyncフラグは垂直同期信号である。1つのフレーム画像を構成する入力画像データ542のうち、最初に入力される入力画像データ542のVsyncフラグは1となる。また、その他の入力画像データ542のVsyncフラグは0となる。通常、最初に入力される入力画像データ542は、フレーム画像の先頭画素についての情報を示す。
【0018】
Hsyncフラグは水平同期信号である。フレーム画像内の1つのラインを構成する入力画像データ542のうち、最初に入力される入力画像データ542のHsyncフラグは1となる。また、その他の入力画像データ542のHsyncフラグは0となる。通常、最初に入力される入力画像データ542は、ライン先頭画素についての情報を示す。
【0019】
Rコンポーネント、Gコンポーネント、及びBコンポーネントは、それぞれの画素についてのR画素値、G画素値、及びB画素値を示す。もっとも、本実施例に係る入力画像データ542の構造は図7に示されるものには限られない。例えば、入力画像データ542はRGBとは異なる色空間に基づく画素値を有してもよい。また入力画像データ542は、Hsyncフラグ及びVsyncフラグを有さなくてもよく、例えば座標情報を有していてもよい。
【0020】
画像サイズ情報540は、入力画像のサイズを示す情報である。例えば画像サイズ情報540は、X方向のピクセル数を示すxPixelNumと、Y方向のピクセル数を示すyPixelNumとを含んでいてもよい。
【0021】
画像蓄積部502は、入力画像データ542と画像サイズ情報540とを取得する(入力手段)。そして画像蓄積部502は、入力画像データ542をフレームメモリ503に書き込む。ここで、画像蓄積部502が行う処理について、図13のフローチャートを参照して説明する。
【0022】
ステップS1302で画像蓄積部502は、新しいフレーム画像の入力が開始するのを待つ。例えば画像蓄積部502は入力画像データ542を取得し、入力画像データ542のVsyncフラグが0であるか1であるかを判定する。Vsyncフラグが1である場合、処理はステップS1304に進む。Vsyncフラグが0である場合、Vsyncフラグが1である入力画像データ542を取得するまで、画像蓄積部502は入力画像データ542の取得とVsyncフラグの判定を繰り返す。
【0023】
ステップS1304で画像蓄積部502は、取得した入力画像データ542をフレームメモリ503に書き込む。具体的には画像蓄積部502は、フレームメモリ503の指定アドレスに、入力画像データ542を書き込む。この指定アドレスは、画像サイズ情報540に従って、画像蓄積部502が計算することができる。具体的には画像蓄積部502は、Vsyncフラグが1である入力画像データ542の後に入力された入力画像データ542の数をカウントする。そして画像蓄積部502は、入力画像のサイズとカウントとに従って、フレームメモリ503における対応アドレスを計算することができる。
【0024】
ステップS1306で画像蓄積部502は、1フレーム分の入力画像データ542を処理したか否かを判定する。この判定は例えば、画像サイズ情報540が示す入力画像のサイズと、上述のカウントとに従って、画像蓄積部502が行うことができる。別の実施形態において画像蓄積部502は、入力画像データのVsyncフラグに従って、1フレーム分の入力画像データ542を処理したか否かを判定してもよい。1フレーム分の入力画像データ542の処理が終わっていない場合、処理はステップS1302に戻る。1フレーム分の入力画像データ542の処理が終了した場合、処理はステップS1308に進む。
【0025】
ステップS1308において画像蓄積部502は、画像入力処理を終了するか否かを判定する。この判定は例えばユーザ指示に従って行われてもよいし、入力画像データ542と共に歪み補正部500(例えば画像蓄積部502)に入力される制御信号に従って行われてもよい。画像入力処理を終了しない場合、処理はステップS1302に戻る。画像入力処理を終了する場合、図13の処理は終了する。
【0026】
カウンタ506は、歪み補正画像601中(変形画像中)のそれぞれの画素についての座標値を順次出力する。例えばカウンタ506は、歪み補正画像601のそれぞれの画素を走査し、走査されている画素の座標を出力画素位置544として出力する。カウンタ506が行う処理について、図6を参照して説明する。図6において入力画像600は、歪み補正部500に入力される画像データの有効領域を示す。また歪み補正画像601は、歪み補正部500から出力される画像データを示す。歪み補正画像601のうち、ハッチングされていない部分が有効領域である。具体的にはハッチングされていない部分は、入力画像600に対応する。カウンタ506は歪み補正画像601における走査線604上のそれぞれの画素の画素位置、例えば画素Daを示す出力画素位置605を、出力画素位置544として出力する。
【0027】
ここで、カウンタ506が行う処理について、図9のフローチャートを参照して説明する。以下の説明においては、X方向にXPixelNum画素、Y方向にYPixelNum画素の大きさを有する歪み補正画像601において、各画素の座標値は(1,1)から(XPixelNum,YPixelNum)までの値をとるものとする。もっとも、座標値の設定方法は当業者が任意に選択可能であり、選択された座標値の設定方法に従って以下の処理を修正することは当業者には容易だろう。
【0028】
ステップS901でカウンタ506は、画像サイズ情報540を取得する。この画像サイズ情報540が示すサイズの歪み補正画像601が、歪み補正部500からは出力される。またカウンタ506は、X座標を0に、Y座標を0にセットする。ステップS902においてカウンタ506は、次のY座標を決定する。例えばカウンタ506は、Yに1を加えればよい。ステップS903においてカウンタ506は、次のX座標を決定する。例えばカウンタ506は、Xに1を加えればよい。
【0029】
ステップS904においてカウンタ506は、X座標とY座標との組を、出力画素位置544として出力する。ステップS905においてカウンタ506は、出力画素位置544が走査線の末端に位置するか否かを判定する。例えばカウンタ506は、XがXPixelNumに一致する場合に、出力画素位置544が走査線の末端に位置するものと判定することができる。XがXPixelNumに一致しない場合(または、XがXPixelNumよりも小さい場合)、処理はステップS903に戻る。XがXPixelNumに一致する場合(または、XがXPixelNum以上である場合)、処理はステップS906に進む。
【0030】
ステップS906においてカウンタ506は、出力画素位置544が歪み補正画像601の末端に位置するか否かを判定する。例えばカウンタ506は、YがYPixelNumに一致する場合に、出力画素位置544が歪み補正画像601の末端に位置するものと判定することができる。YがYPixelNumに一致しない場合(または、YがYPixelNumよりも小さい場合)、カウンタ506はXに0をセットし、そして処理はステップS902に戻る。YがYPixelNumに一致する場合(または、YがYPixelNum以上である場合)、処理はステップS907に進む。
【0031】
ステップS907においてカウンタ506は、出力画素位置の出力処理を終了するか否かを判定する。この判定は例えばユーザ指示に従って行われてもよいし、まだ歪み補正画像へと変換されていない入力画像が存在するか否かに従って行われてもよい。出力処理を終了しない場合、カウンタ506はX及びYに0をセットし、そして処理はステップS901に戻る。画像入力処理を終了する場合、図9の処理は終了する。
【0032】
領域判定部505は、出力画素位置544のそれぞれについて、出力画素位置544に対応する入力画素位置558を取得する。また領域判定部505は、出力画素位置544が示す画素に隣接する画素の位置に対応する入力画素位置559を取得する。これらの処理は、領域判定部505が備える座標変換部(不図示)が行うことができる。さらに領域判定部505は、入力画素位置558と入力画素位置559とに従って、出力画素位置544に適用するフィルタを選択する。具体的には領域判定部505は、フィルタを特定するフィルタ選択情報548を出力する。このフィルタ選択情報548は、フィルタ部501がフィルタ処理を行う際に用いられる。これらの処理は、領域判定部505が備える係数選択部(不図示)が行うことができる。
【0033】
ここで、出力画素位置544と、入力画素位置558と、入力画素位置559との関係を図6を参照して説明する。出力画素位置544は、図6の出力画素位置605に相当する。ここで、出力画素位置605に位置する画素をDaとする。また、入力画素位置558は、図6の入力画素位置602に対応する。さらに、入力画素位置602に位置する画素をSaとする。
【0034】
ここで、入力画像600を歪み補正画像601へと補正すると、画素Saは画素Daへと移動するものとする。出力画素位置と入力画素位置との関係は、座標変換テーブル515に規定されている。すなわち、出力画素位置605(画素Daの位置)と入力画素位置602(画素Saの位置)との関係は、座標変換テーブル515に規定されている。言い換えれば座標変換テーブル515は、歪み補正画像601中の着目画素位置に写像される、入力画像600中の画素位置を規定している。したがって領域判定部505は、出力画素位置544(出力画素位置605)から、入力画素位置558(入力画素位置602)を求めることができる。
【0035】
また出力画素位置606は、画素Daに隣接する画素の画素位置である。この出力位置606が、ここで、出力画素位置606に位置する画素をDbとする。本実施例において出力画素位置606(近隣画素位置)は、出力画素位置605のX座標に1を加えることによって得られる座標とする。すなわち、画素Dbは画素DaのX軸正方向に隣接する画素である。Daの座標を(Xda,Yda)とし、Dbの座標を(Xdb,Ydb)とすると、Xdb=Xda+1、Ydb=Ydaとなる。
【0036】
入力画素位置559は、図6の入力画素位置603に対応する。ここで、入力画素位置603に対応する画素をSbとする。ここで、入力画像600を歪み補正画像601へと補正すると、画素Sbは画素Dbへと移動するものとする。すなわち、座標変換テーブル515を参照することにより、領域判定部505は、出力画素位置544(出力画素位置605)から、入力画素位置559(入力画素位置603)を求めることができる。
【0037】
次に、領域判定部505が行う処理の詳細について、図10のフローチャートを参照して説明する。ステップS1001において領域判定部505は、カウンタ506から出力画素位置544を取得する。ステップS1002において領域判定部505は、上述のように出力画素位置544の画素に隣接する画素の画素位置545を算出する。ステップS1003において領域判定部505は上述のように、座標変換テーブル515を参照して、出力画素位置544に対応する入力画素位置558と、出力画素位置545に対応する入力画素位置559とを取得する。ステップS1004において領域判定部505は、出力画素位置544と入力画素位置558との組を入力画素取得部504へと出力する。
【0038】
ステップS1005において領域判定部505は、入力画素位置558が示す画素が、入力画像の有効領域内にあるか否かを判定する(判定手段)。入力画像の有効領域は、画像サイズ情報540によって示される。上述のように本実施例においては、X方向にXPixelNum画素、Y方向にYPixelNum画素の大きさを有する歪み補正画像601において、各画素の座標値は(1,1)から(XPixelNum,YPixelNum)までの値をとる。また、入力画素位置558が示す画素Saの座標を(Xsa,Ysa)とする。この場合、Xsaが1より小さいか又はXPixelNumより大きい場合、入力画素位置558が示す画素は入力画像の有効領域内にないものと判定することができる。また、Ysaが1より小さいか又はYPixelNumより大きい場合、入力画素位置558が示す画素は入力画像の有効領域内にないものと判定することができる。
【0039】
入力画素位置558が示す画素が入力画像の有効領域内にない場合、処理はステップS1010に進む。ステップS1010において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として0を出力し、その後処理はステップS1010に進む。一方で入力画素位置558が示す画素が入力画像の有効領域内にある場合、処理はステップS1006に進む。
【0040】
ステップS1006で領域判定部505は、入力画素位置558が示す画素が、入力画像の有効領域の境界に位置するか否かを判定する。具体的には、Xsaが1又はXPixelNumに等しい場合、入力画素位置558が示す画素が入力画像の有効領域の境界に位置すると判定することができる。また、Ysaが1又はYPixelNumに等しい場合も、入力画素位置558が示す画素が入力画像の有効領域の境界に位置すると判定することができる。入力画素位置558が示す画素が入力画像の有効領域の境界に位置する場合、処理はステップS1011に進む。ステップS1011において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として1を出力し、その後処理はステップS1010に進む。入力画素位置558が示す画素が入力画像の有効領域の境界に位置しない場合、処理はステップS1007に進む。
【0041】
ステップS1007,S1008,及び1012で領域判定部505は、入力画素位置558と入力画素位置559とに従ってフィルタ選択情報548を決定する。例えば領域判定部505は、入力画素位置558にある画素Saと、入力画素位置559にある画素Sbとの間の距離に従って、フィルタ選択情報548を決定することができる。
【0042】
本実施例においては、ステップS1007において領域判定部505は、入力画素位置558と入力画素位置559とに従って画素Saと画素Sbとの間の距離を算出する。画素Sbの座標を(Xsb,Ysb)とすると、画素Saと画素Sbとの間の距離は√((Xsa−Xsb)2+(Ysa−Ysb)2)となる。そして領域判定部505は、算出された距離が所定の閾値以下であるか否かを判定する。算出された距離が所定の閾値以上である場合、処理はステップS1012に進む。算出された距離が所定の閾値以上ではない場合、処理はステップS1008に進む。
【0043】
ステップS1012において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として2を出力し、その後処理はステップS1010に進む。ステップS1008において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報として3を出力し、その後処理はステップS1010に進む。
【0044】
ステップS1010において領域判定部505は、入力画素位置の出力処理及びフィルタ選択情報の出力処理を終了するか否かを判定する。例えば、カウンタ506から次の出力画素位置544が入力されている場合には、領域判定部505は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1001に戻る。処理を終了する場合、図10の処理は終了する。
【0045】
領域判定部505が出力したフィルタ選択情報548は、上述のように、フィルタ部501がフィルタ処理を行う際に用いられる。具体的にはフィルタ部501は、フィルタ選択情報548に従ってフィルタを選択する。ここで、フィルタ選択情報548と、フィルタ部501が選択するフィルタとの関係について、図8に示されるフィルタの例を参照して説明する。上述のように本実施例において、フィルタ選択情報548は0,1,2,3のいずれかの値を持つ。図8には、それぞれの値に対応するフィルタが示されている。すなわち、フィルタ選択情報548が0である場合にはフィルタ800が用いられる。フィルタ選択情報548が1である場合にはフィルタ801が用いられる。フィルタ選択情報548が2である場合にはフィルタ802が用いられる。また、フィルタ選択情報548が3である場合にはフィルタ803が用いられる。図8においては、ハッチングされている係数がフィルタの中心に相当する。
【0046】
フィルタ処理部512は、画像内の着目画素に対してフィルタ800を用いた空間フィルタ処理を行うことができる。例えばフィルタ処理部512は、空間フィルタ処理によって加重平均値を求めることができる。すなわちフィルタ処理部512は、歪み補正画像における出力画素位置554近傍(処理画素位置近傍)の画素群の画素値と、フィルタ係数群との畳み込み演算によって、出力画像における出力画素位置554の画素値を算出することができる。
【0047】
フィルタ800の係数は全て0である。したがって、画像内の着目画素に対してフィルタ800を用いた空間フィルタ処理を行うと、出力値は0となる。もっとも、ブランキング領域と有効領域との間の滲みを防止するという観点からは、フィルタ800における中心のフィルタ係数は1であってもよい。この場合、フィルタ800を用いたフィルタ処理を行うと、着目画素の画素値と出力値とは一致する。すなわちフィルタ800を用いる場合、歪み補正画像における処理画素位置の画素の画素値又は予め定められた画素値が、出力画像における処理画素位置における画素の画素値として設定される。
【0048】
一方でフィルタ801においては、フィルタ中心の係数が1で残りの係数は0である。したがってフィルタ801を用いたフィルタ処理を行うと、着目画素の画素値と出力値とは一致する。フィルタ802を用いたフィルタ処理を行う場合には、着目画素に隣接する画素値を考慮して出力値が算出される。さらに、フィルタ803を用いたフィルタ処理を行う場合には、フィルタ802を用いる場合よりも広い範囲の画素値を考慮して出力値が算出される。すなわち、フィルタ801、802、803の順に、フィルタ処理における参照領域は広くなる。
【0049】
ところで、入力画像600を歪み補正画像601へと補正した場合に、画素Da周辺における縮小率は、(SaとSbとの間の距離)/(DaとDbとの間の距離)として近似的に表すことができる。本実施例においては歪み補正画像601内の画素Daと画素Dbとの間の距離は一定(1画素)である。したがって、画素Saと画素Sbとの間の距離は、縮小率に相関する値となる。本実施例においては画素Saと画素Sbとの間の距離が所定の閾値以上である場合にフィルタ802が選択される。言い換えれば、歪み補正画像601の出力画素位置605(Da)における縮小率がより大きい場合に、より狭い範囲の画素を参照するフィルタが選択される。
【0050】
次に、入力画素取得部504について詳しく説明する。入力画素取得部504は、歪み補正画像を生成する。入力画素取得部504が行う処理について、図12のフローチャートを参照して説明する。ステップS1201において入力画素取得部504は、領域判定部505から、入力画素位置558、出力画素位置544、及びフィルタ選択情報548を取得する。
【0051】
ステップS1202において入力画素取得部504は、入力画素位置558に対応する入力画像データ543をフレームメモリ503から取得する(変形手段)。この際入力画素取得部504は、画像サイズ情報540を参照して、入力画素位置558に対応する入力画像データ543が格納されているアドレスを計算することができる。ところで、入力画素位置558に対応する入力画像データ543が存在しないことがある。例えば、入力画素位置558が入力画像領域外に位置する場合である。この場合、すなわち出力画素位置544に写像される入力画素位置558が存在しないと判定した場合には、入力画素取得部504は、所定の画素値(所定値)を示す入力画像データを、入力画素位置558に対応する入力画像データとする。この所定の画素値は通常は黒画素(R,G,B=0,0,0)である。しかしながら、この所定の画素値は任意の画素値でありうる。
【0052】
ステップS1203において入力画素取得部504は、ステップS1202で取得した入力画像データ543と、ステップS1201で取得した出力画素位置544と、ステップS1201で取得したフィルタ選択情報548とをバッファ507に出力する。出力画素位置544と入力画像データ543との組によって、歪み補正画像は表される。
【0053】
ステップS1205において入力画素取得部504は、出力処理を終了するか否かを判定する。例えば、領域判定部505から次の出力画素位置544が入力されている場合には、入力画素取得部504は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1201に戻る。処理を終了する場合、図12の処理は終了する。
【0054】
上述のように、出力画素位置544、入力画像データ543、及びフィルタ選択情報548の組が、バッファ507に出力される。これらの情報は一旦バッファ507に格納された後、歪み補正部500から出力される。このようにバッファ507に格納され、歪み補正部500から出力される入力画像データ543を、以降で補正画像データ549と呼ぶ。本実施例においてはバッファ507に出力画素位置544が格納されるものとした。しかしながら出力画素位置544は通常ラスタ順に順次選択され、この場合それぞれの入力画像データ543に対応する出力画素位置544は、出力画素位置544を用いずに知ることができる。また入力画素取得部504は、補正画像データ549を出力する際に、Vsyncフラグ及びHSyncフラグを、歪み補正画像内における補正画像データ549が示す画素の位置に従って書き換えてもよい。このように、バッファ507に出力画素位置544を格納することは必須ではない。
【0055】
次にフィルタ部501について詳しく説明する。フィルタ部501は、歪み補正部500から入力された歪み補正画像に対してフィルタ処理を行う。具体的にはフィルタ部501は、補正画像データ549とフィルタ選択情報548とを用いて、出力画像データ553を生成する。フィルタ部501は処理部として、画像蓄積部508、参照画素取得部510、カウンタ511、及びフィルタ処理部512を備える。さらにフィルタ部501は記憶部として、フレームメモリ509、バッファ514、及びフィルタ保持テーブル513を備える。フレームメモリ509及びバッファ514は、歪み補正部500が備えるフレームメモリ503及びバッファ507と同様のものでありうる。またフィルタ保持テーブル513は、後述のROM401によって実現されうる。
【0056】
以下に、フィルタ部501が備える各部について説明する。画像蓄積部508の動作は画像蓄積部502と同様であるが、画像蓄積部508は補正画像データ549に加えてフィルタ選択情報548を歪み補正部500から取得する。そして画像蓄積部508は、補正画像データ549及びフィルタ選択情報548をフレームメモリ509に格納する。画像蓄積部508は、画像蓄積部502と同様の方法で補正画像データ549及びフィルタ選択情報548をフレームメモリ509に格納することができる。カウンタ511は、カウンタ506と同様に、画像サイズ情報540を参照して出力画素位置554を順次出力する。
【0057】
フィルタ処理部512は、カウンタ511から入力された出力画素位置554の画素値を算出する(演算手段)。フィルタ処理部512が行う具体的な処理の一例について、図11のフローチャートを参照して説明する。ステップS1101においてフィルタ処理部512は、出力画素位置554を取得する。ステップS1102においてフィルタ処理部512は、出力画素位置554に対応するフィルタ選択情報548をフレームメモリ509から取得する。具体的にはフィルタ処理部512は、出力画素位置554を参照画素取得部510に送る。参照画素取得部510は、送られた画素位置についてのフィルタ選択情報548をフレームメモリ509から取得し、フィルタ処理部512に返す。
【0058】
ステップS1103においてフィルタ処理部512は、ステップS1102で取得したフィルタ選択情報548に対応するフィルタ556を、フィルタ保持テーブル513から取得する。より正確にはフィルタ処理部512は、各フィルタ係数と、各フィルタ係数を用いた演算の対象となる画素の相対位置と、をフィルタ保持テーブル513から取得する。フィルタ保持テーブル513は、フィルタ選択情報548とフィルタ556とを関連付けて保持している。フィルタ選択情報548と選択されるフィルタ556との関係は、前に説明した通りである。
【0059】
ステップS1104においてフィルタ処理部512は、出力画素位置554の画素値を算出するために用いられる画素(以降で参照画素と呼ぶ)についての補正画像データ549を取得する。参照画素は、ステップS1102で取得されたフィルタ556によって特定される。すなわちフィルタ処理部512は、フィルタ係数を用いた演算の対象となる画素についての補正画像データ549を取得する。具体的にはフィルタ処理部512は、参照画素のそれぞれについて、参照画素位置555を参照画素取得部510に送る。参照画素取得部510は、送られた画素位置についての補正画像データ549をフレームメモリ509から取得し、フィルタ処理部512に返す。参照画素取得部510は、画素位置と画像サイズ情報540とを参照して、送られた画素位置についての補正画像データ549が格納されているフレームメモリ509内のアドレスを計算する。こうして参照画素取得部510は、出力画素位置554の近傍についての補正画像データ549をフレームメモリ509から取得できる。もっともフィルタ処理部512は、ステップS1102において、出力画素位置554の近傍についての補正画像データ549及びフィルタ選択情報548をフレームメモリ509から取得してもよい。
【0060】
ステップS1105においてフィルタ処理部512は、ステップS1103で取得したフィルタ556と、参照画素についてステップS1104で取得した補正画像データ549と、を用いて出力画素位置554の画素値を算出する。例えばフィルタ処理部512は、参照画素に対してフィルタ556に基づく空間フィルタ処理を適用し、出力画像データ553を生成することができる。ここで空間フィルタ処理としては、例えばフィルタ556に基づく加重平均処理が例として挙げられる。フィルタ処理部512は、このようにして得られた出力画像データ553を、一旦バッファ514に格納する。バッファ514に格納された出力画像データは、その後フィルタ部501から出力される。
【0061】
ステップS1106においてフィルタ処理部512は、フィルタ処理を終了するか否かを判定する。例えば、カウンタ511から次の出力画素位置554が入力されている場合には、フィルタ処理部512は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1101に戻る。処理を終了する場合、図11の処理は終了する。
【0062】
ここまで、本実施例に係る画像処理装置が備える各部の動作について、それぞれ説明した。次に、本実施例に係る画像処理装置が行う動作の流れを、図14のフローチャートを参照して説明する。ステップS1405において画像蓄積部502は、複数の入力画像データ542によって表される入力画像を取得する。この処理は、図13のフローチャートに従って行うことができる。
【0063】
ステップS1410において入力画素取得部504は、カウンタ506及び座標変換テーブル515を用いて、歪み補正画像を構成する画素のそれぞれについて対応する入力画像データ542を取得する。こうして入力画素取得部504は歪み補正画像を生成し、この歪み補正画像内には変形された入力画像が含まれている。この処理は、図9及び図12のフローチャートに従って行うことができる。
【0064】
ステップS1415において領域判定部505は、歪み補正画像を構成する画素のそれぞれについて、適用するフィルタを特定するフィルタ選択情報548を生成する。この処理は、図10のフローチャートに従って行うことができる。
【0065】
ステップS1420においてフィルタ処理部512は、歪み補正画像を構成する画素のそれぞれについて、フィルタ選択情報548によって特定されたフィルタを用いたフィルタ処理を行う。こうしてフィルタ処理部512は、歪み補正画像に対してフィルタ処理を行い、出力画像を生成する。この処理は、図11のフローチャートに従って行うことができる。ステップS1425においてフィルタ処理部512は、生成された出力画像を出力する。
【0066】
最後に、本実施例に係る画像処理装置の物理的構成について説明する。本実施例に係る画像処理装置は、ソフトウェアによって、ハードウェアによって、又はソフトウェアとハードウェアとの組み合わせによって実現されうる。例えば、図5に示されている各部のうち1以上の機能を実現するハードウェアの組み合わせによって、本実施例に係る画像処理装置を実現することができる。
【0067】
また、本実施例に係る画像処理装置はパーソナルコンピュータのようなコンピュータによっても実現されうる。図4は、本実施例に係る画像処理装置を実現するコンピュータの物理的構成の一例を示す。このコンピュータにおいて本実施例に係る画像処理装置の機能を実行するためには、各機能構成をプログラムにより表現し、このコンピュータに読み込まればよい。こうして、このコンピュータで本実施例に係る全ての機能を実現することができる。この場合、図5をはじめとする構成要素の各々は関数、若しくはCPUが実行するサブルーチンで機能させればよい。
【0068】
また、コンピュータプログラムは通常、CD−ROM等のコンピュータが読み取り可能な記憶媒体に格納されている。この記憶媒体を、コンピュータが有する読み取り装置(CD−ROMドライブ等)にセットし、システムにコピー若しくはインストールすることで実行可能になる。従って、係るコンピュータが読み取り可能な記憶媒体も本発明の範疇にあることは明らかである。
【0069】
図4においてCPU402は、コンピュータ全体の動作をコントロールする。例えばCPU402は、RAM400に格納されたプログラムの実行等を行う。RAM400は、ハードディスク405等の記憶媒体に記憶されたプログラム等を読み込んで格納する。このコンピュータにおいては、図5に示す各部の処理手順を実現するプログラムをハードディスク405が格納する。プログラム実行時にはプログラムはRAM400に読み込まれ、CPU402によって実行される。RAM400、ROM401、CPU402、及びディスクコントローラ403は、バス407を介して互いに通信できるように接続されている。また、ハードディスク405には、ディスクコントローラ403を介してアクセスすることができる。バス407には、マウス及びキーボードなどのコンピュータに情報を入力するデバイスをさらに接続することができる。さらにバス407には、モニタ及びプリンタなど、コンピュータが情報を出力するために用いられるデバイスを接続することもできる。
【0070】
特に、画像蓄積部502、カウンタ506、領域判定部505、入力画素取得部504、画像蓄積部508、カウンタ511、参照画素取得部510、及びフィルタ処理部512は、CPU402によって実行されるソフトウェアとして実現されうる。また、フレームメモリ503、バッファ507、フレームメモリ509、及びバッファ514は、RAM400によって実現されうる。さらに、座標変換テーブル515及びフィルタ保持テーブル513は、ROM401によって実現されうる。
【0071】
[実施例2]
実施例1においては、フィルタ部501は歪み補正画像に対してフィルタ処理を行って出力画像を生成し、この出力画像を出力した。実施例2に係る画像処理装置は、動画像に対して画像変形を行い、さらに動画像のフレームレートを向上させる。すなわち実施例2に係る画像処理装置は、それぞれのフレーム画像から複数のフレーム画像を生成する。動画像のフレームレートを増加させる場合に、フレーム画像に対してフィルタ処理を行うことにより画質を向上させる技術が知られている。実施例2に係る画像処理装置もまた、1つのフレーム画像から複数のフレーム画像を生成する際に、フィルタ処理を行う。
【0072】
本実施例において、歪み補正部500には連続するフレーム画像で構成される動画像が入力される。歪み補正部500は、それぞれのフレーム画像に対して変形処理を行うことにより、連続する歪み補正画像で構成される動画像を生成する。フィルタ部501は、それぞれの歪み補正画像に対してフィルタ処理を行うことにより、複数の出力画像を生成する。そしてフィルタ部501は、それぞれの出力画像で構成される動画像を出力する。すなわち、フィルタ部501が出力する動画像のフレームレートは、フィルタ部501に入力された動画像のフレームレートよりも高い。フィルタ部501がフレームレート向上処理を行ってから歪み補正部500が変形処理を行う構成も考えられるが、この場合歪み補正部500が処理する画像の数が増えてしまうため、処理負荷が増大する。従って、歪み補正部500が変形処理を行ってからフィルタ部501がフレームレート向上処理を行うことは有利である。
【0073】
本実施例に係る画像処理装置の具体的な構成について以下に説明する。本実施例に係る画像処理装置は、図5に示す実施例1に係る画像処理装置と同様の構成を有する。本実施例の構成を実現するためには、カウンタ511はステップS901〜ステップS906の処理を繰り返せばよい。具体的には、フレームレートをN倍にする場合、カウンタ511はステップS901〜ステップS906の処理を、フィルタ部501に1枚の歪み補正画像が入力される毎にN回行えばよい。
【0074】
本実施例に係る画像処理装置によれば、1枚の歪み補正画像からN枚の出力画像(サブフレーム画像)が生成される。ここで、それぞれのサブフレーム画像を生成するために用いられるフィルタはそれぞれ異なっていてもよい。具体的には、1番目のサブフレーム画像を生成するために低周波強調フィルタを用いるフィルタ演算が行われ、2番目のサブフレーム画像を生成するために高周波強調フィルタを用いるフィルタ演算が行われてもよい。本実施例に係る画像処理装置は、複数のフィルタ保持テーブル513を備えていてもよい。すなわちそれぞれのサブフレーム画像を生成する際に、異なるフィルタ保持テーブル513が参照されてもよい。
【0075】
[その他の実施例]
上述の実施例においては、フィルタ800,801,802,803のうちから、1つのフィルタが選択された。しかしながらフィルタの選択方法は上述の方法に限られるわけではない。例えば上述の実施例においては、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に応じてフィルタ802又はフィルタ803が選択された。しかしながら、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離と、複数の閾値とを比較することにより、3つ以上のフィルタから1つが選択されてもよい。
【0076】
また、入力画素位置558が入力画像の領域外にある場合にはフィルタ800を選択し、入力画素位置558が入力画像の領域内にある場合にはフィルタ802を選択するという構成によっても、画質の改善は達成されうる。すなわち、変形後の画像にブランキング領域を有する変形処理において、ブランキング領域と有効領域の境界部分において空間フィルタ処理を適切に行うことができる。このように、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に基づいてフィルタを選択することは必須ではない。
【0077】
一方で、入力画素位置558が入力画像の領域外にあるか否かを判定せずに、入力画素位置558が入力画像領域の境界上に位置するか否か、又は境界付近に位置するか否かのみに従ってフィルタを選択することのみによっても、画質の改善は達成されうる。すなわち、入力画素位置558が入力画像領域の境界部付近に位置する場合に、より参照範囲の狭いフィルタを用いればよい。
【0078】
一方で、入力画素位置558が入力画像の領域外にあるか否かを判定せずに、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に基づいてフィルタを選択することのみによっても、画質の改善は達成されうる。すなわち、領域毎に拡大・縮小率が異なる変形処理において、均一な効果の空間フィルタ処理を行うことができる。このような修正は、ステップS1005〜S1007を修正することにより達成されうる。
【0079】
1つの実施例において、歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)が入力画像における一辺から所定距離内に位置する場合に、第1のフィルタ係数群が選択されうる。第1のフィルタ係数群とは、例えばフィルタ801でありうる。一方で歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)が入力画像における一辺から所定距離内に位置する場合に、第2のフィルタ係数群が選択されうる。第2のフィルタ係数群とは、例えばフィルタ803でありうる。ここで、第2のフィルタ係数群に含まれる係数の数は、第1のフィルタ係数群に含まれる係数の数よりも多い。すなわち、第2のフィルタ係数群を用いてフィルタ処理を行う際に参照される第2の画素群の画素数は、第1のフィルタ係数群を用いてフィルタ処理を行う際に参照される第1の画素群の画素数よりも多い。
【0080】
他の実施例において、歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が閾値以上である場合に、第1のフィルタ係数群が選択されうる。第1のフィルタ係数群とは、例えばフィルタ802でありうる。一方で歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が閾値以上ではない場合に、第2のフィルタ係数群が選択されうる。第2のフィルタ係数群とは、例えばフィルタ803でありうる。ここで、第2のフィルタ係数群に含まれる係数の数は、第1のフィルタ係数群に含まれる係数の数よりも多い。すなわち、第2のフィルタ係数群を用いてフィルタ処理を行う際に参照される第2の画素群の画素数は、第1のフィルタ係数群を用いてフィルタ処理を行う際に参照される第1の画素群の画素数よりも多い。
【0081】
上述の実施例においては、出力画素位置544に基づきフィルタ選択情報548が決定され、その後フィルタ保持テーブル513を参照してフィルタ選択情報548に対応するフィルタ556が取得された。しかしながらフィルタ保持テーブル513は、出力画素位置544とフィルタ556との組を格納していてもよい。この場合フィルタ処理部512は、フィルタ選択情報548を用いずに、出力画素位置544に対応するフィルタ556を取得することができる。また、フィルタ保持テーブル513の代わりに、任意の変換式に基づいて、出力画素位置544からフィルタ556を算出してもよい。
【0082】
フィルタ処理で用いられるフィルタ556の決定は、領域判定部505以外の構成要素が行ってもよい。例えばフィルタ処理部512が、入力画素位置558に基づいてフィルタ処理で用いられるフィルタ556を決定してもよい。さらにフィルタ処理部512は、入力画素位置558(Sa)及び入力画素位置559(Sb)に基づいてフィルタ556を算出してもよい。例えばフィルタ処理部512は、入力画素位置558が入力画像領域外にある場合、フィルタ800を用いる。一方でフィルタ処理部512、入力画素位置558が入力画像領域内にある場合、入力画素位置558(Sa)と入力画素位置559(Sb)とを用いて、所定の計算式に従ってフィルタ係数を算出する。具体的には、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が小さいほど、フィルタ中心の係数がより大きくかつ周辺部の係数がより小さくなるような計算式を用いて、フィルタ係数を算出すればよい。
【0083】
上述の実施例においては、座標変換テーブル515に従って、出力画素位置544(Da)が入力画素位置558(Sa)へと変換された。同様に、出力画素位置545(Db)は入力画素位置559(Sb)へと変換された。しかしながらこの変換は、変換式に従って行われてもよい。この場合にも上述の実施例と同様、入力画素位置559が入力画像領域内にあるか否かは判定されうる。また、入力画素位置558と入力画素位置559との距離も算出されうる。
【0084】
上述の実施例において領域判定部505は、画素Daに隣接する画素として、画素DaのX軸正方向に隣接する画素Dbを選択した。しかしながら、画素Dbは任意の方法で選択できる。そもそも画素Dbは、画素Daに隣接していなくてもよい。すなわち領域判定部505は、画素Daの近傍にある画素、例えば画素Daに対して所定の相対位置にある画素を、画素Dbとして選択してもよい。
【0085】
さらに領域判定部505は、画素Daの近傍にある複数の画素を選択してもよい。例えば領域判定部505は、画素Daに対してX軸正方向に隣接する画素Db1と、X軸負方向に隣接する画素Db2と、Y軸正方向に隣接する画素Db3と、Y軸負方向に隣接する画素Db4とを選択してもよい。この場合領域判定部505は、画素Daに対応する入力画像中の画素Saと、画素Db1〜4に対応する入力画像中の画素Sb1〜4と間の距離に従って、フィルタ選択情報548を決定できる。例えば、画素Saと画素Sb1との間の距離、画素Saと画素Sb2との間の距離、画素Saと画素Sb3との間の距離、及び画素Saと画素Sb4との間の距離の合計(又は平均)を求めてもよい。そして領域判定部505は、求められた合計と所定の閾値とを上述の実施例のように比較することにより、フィルタ選択情報548を決定してもよい。
【0086】
別の実施例において領域判定部505は、画素Daに対応する入力画像中の画素Saが入力画像の境界に位置するか否かを判定するのに加えて、又はこの代わりに、画素Saが入力画像の境界付近に位置するか否かを判定してもよい。例えば領域判定部505は、上述のように画素Daの近傍にある複数の画素Dbを選択し、それぞれの画素Dbに対応する入力画像中の画素Sbが、入力画像領域内にあるか否かを判定してもよい。1つ以上の画素Sbが入力画像領域内にない場合、領域判定部505は、画素Daが有効領域の境界付近にあると判定することができる。この場合領域判定部は、画素Daに対しては参照範囲の狭いフィルタが用いられるように、例えばフィルタ801が用いられるように、フィルタ選択情報548を決定してもよい。
【0087】
さらには、画素Daに対応する入力画像中の画素Saの位置(すなわち入力画素位置558)と、入力画像の境界との間の距離に応じて、領域判定部505はフィルタ選択情報548を決定してもよい。例えば、用いられるフィルタ556の参照範囲が、画素Saと入力画像の境界との間の距離を半径とする円よりも狭くなるように、フィルタ選択情報548が決定されてもよい。
【0088】
(他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【技術分野】
【0001】
本発明は画像処理技術に関する。
【背景技術】
【0002】
従来より、画像を変形する技術と、画像に対してフィルタ処理を行う技術とが、それぞれ独立に知られている。例えば画像変形技術の一例として、歪み補正処理、キーストーン補正処理、又は幾何補正処理等と呼ばれる技術(以降、まとめて歪み補正処理と呼ぶ)がある。歪み補正技術は例えば、プロジェクタにおいて用いられる。図1はプロジェクタ100がスクリーン101上に画像を表示する様子を示す。プロジェクタ100の投射光学系の光学軸とスクリーン101とのなす角度が90度の場合には、投射画像102はスクリーン101上に正規の形状(例えば長方形)に表示される。一方、この角度が90度以外の場合には、投射画像103は歪んだ形状(例えば台形)で表示される。この歪みを補正するために、歪み補正処理が行われる。図2は、歪み補正処理の例を示す。歪み補正処理によって、入力画像200は歪み補正画像201に変換される。ここで歪み補正画像201には、台形形状の有効領域205と、有効領域外のブランキング領域204とが含まれる。歪み補正画像201がスクリーン101に投影されると、有効領域はスクリーン上で長方形に表示される(203)。
【0003】
また、画像に対してフィルタ処理を行う様々な技術が知られている。フィルタ処理の一例として、空間フィルタ処理を用いた視認性向上処理が挙げられる。この視認性向上処理には、動画を表示する際のフレームレートを向上させることが含まれる(例えば、図2の202)。このような処理の例としては、例えば特許文献1に記載の技術が挙げられる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−44460号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
歪み補正処理と、フィルタ処理とを組み合わせる場合に、以下のような課題が生じることを発明者は発見した。まず第1の課題について、図3(A)を参照して説明する。図3(A)においてスクリーンに投射されている投射画像304は、歪み補正画像303に対してフィルタ処理を行ってからスクリーンに投影することによって得られる。歪み補正画像303における領域301は、投射画像304における領域305に対応する。また、歪み補正画像303における領域302は、投射画像304における領域306に対応する。ここで、領域301と領域302とは同じ大きさであるが、領域305と領域306との大きさは異なる。すなわち、歪み補正画像303に対して領域301を参照領域とするフィルタ処理を行った場合、投射画像304の観察者にとっては、領域305を参照領域とするフィルタ処理が行われたかのように見える。同様に、歪み補正画像303に対して領域302を参照領域とするフィルタ処理を行った場合、投射画像304の観察者にとっては、領域306を参照領域とするフィルタ処理が行われたかのように見える。このように、観察者には投射画像304において一様でないフィルタ処理が行われているように見え、このことは画質の低下として認識されることがある。例えばフィルタ処理によって平滑化を行う場合、領域306と比べて、領域305においては画像の鮮鋭度がより大きく低下する。
【0006】
次に第2の課題について、図3(B)を参照して説明する。歪み補正画像303において、ブランキング領域307と有効領域308の境界にある領域300を参照してフィルタ処理を行うと、境界付近の鮮鋭度が低下することがある。通常、ブランキング領域307内の画素値は所定の値、例えば(R,G,B)=(0,0,0)(黒色)を持つ。ところで、領域310の中心画素は、ブランキング領域307内に位置するが、この画素の画素値は領域310を参照したフィルタ処理によって得られる。ところが領域310内には有効領域308が含まれるため、フィルタ処理によって得られる画素値は、上記の所定の値とは異なるものとなる。
【0007】
一方で領域309の中心画素は、有効領域308内に位置するが、この画素の画素値は領域309を参照したフィルタ処理によって得られる。ところが領域309内にはブランキング領域307が含まれるため、フィルタ処理によって得られる画素値は、ブランキング領域の画素値の影響を受けてしまう。すなわち、上述のようにブランキング領域の画素が黒色であれば、ブランキング領域307と有効領域308との境界において、ブランキング領域307の画素値は大きくなり、有効領域308の画素値は小さくなってしまう。
【0008】
本発明は、画像変形処理とフィルタ処理とを連続して行う際に、画質の低下を防ぐことを目的とする。
【課題を解決するための手段】
【0009】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置であって、
前記入力画像を入力する入力手段と、
前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定手段と、
前記判定手段が存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定手段が存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形手段と、
前記変形手段が前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算手段であって、
前記判定手段が存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定手段が存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算手段と、
前記演算手段が前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力手段と、
を備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、画像変形処理とフィルタ処理とを連続して行う際に、画質の低下を防ぐことができる。
【図面の簡単な説明】
【0011】
【図1】プロジェクタ100を用いてスクリーン101上に画像を表示する例。
【図2】歪み補正処理について説明するための説明図。
【図3】歪み補正処理とフィルタ処理とを組み合わせた際の問題を説明する図。
【図4】実施例1に係るコンピュータの物理的構成例。
【図5】実施例1の係る画像処理装置の機能的構成例。
【図6】領域判定部505が行う処理を説明するための図。
【図7】入力画像データ542のデータ構造の一例。
【図8】フィルタ選択情報548とフィルタ556との対応の一例を示す図。
【図9】カウンタ506が行う処理のフローチャートの一例。
【図10】領域判定部505が行う処理のフローチャートの一例。
【図11】参照画素取得部510が行う処理のフローチャートの一例。
【図12】入力画素取得部504が行う処理のフローチャートの一例。
【図13】画像蓄積部502が行う処理のフローチャートの一例。
【図14】実施例1に係る画像処理装置が行う処理のフローチャートの一例。
【発明を実施するための形態】
【0012】
以下、添付の図面を参照して、本発明をその好適な実施例に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0013】
[実施例1]
図5は実施例1に係る画像処理装置の機能的構成の一例を表す。以下、図5を参照して、本実施例に係る画像処理装置が備える各部について詳しく説明する。図5に示されるように、本実施例に係る画像処理装置は、歪み補正部500とフィルタ部501とを備える。
【0014】
まず、歪み補正部500について説明する。本実施例において歪み補正部500は、入力画像に対して変形処理(歪み補正処理)を行う。そして歪み補正部500は、歪み補正された画像を画像領域内に含む歪み補正画像(変形画像)を出力する。しかしながら歪み補正部500が行う処理は歪み補正処理に限られず、歪み補正部500は任意の画像変形処理を行うことができる。例えば、水平垂直補正、レンズ歪み補正、幾何変形、全方位画像変形などであってもよい。全方位画像変形とは、魚眼レンズ等の光学系によって取得した360度画像を長方形画像に展開する変形処理を指す。
【0015】
歪み補正部500は処理部として、画像蓄積部502、入力画素取得部504、領域判定部505、及びカウンタ506を備える。さらに歪み補正部500は記憶部として、フレームメモリ503、バッファ507、及び座標変換テーブル515を備える。フレームメモリ503及びバッファ507は、例えば後述のRAM400によって実現されうる。また座標変換テーブル515は、後述のROM401によって実現されうる。本実施例においてバッファ507は、FIFOバッファとして動作するものとする。
【0016】
歪み補正部500には、入力画像及び画像サイズ情報540が入力される。歪み補正部500には動画が入力されてもよく、この場合歪み補正部500には複数の入力画像(フレーム画像)が入力される。入力画像は、複数の画素で構成されている。具体的には歪み補正部500には、入力画像のそれぞれの画素についてのデータが入力される。以下で、入力画像のそれぞれの画素についてのデータを入力画像データ542と呼ぶ。入力画像データ542のデータ構造の一例を図7に示す。入力画像データ542は、図7に示されるように、Vsyncフラグ、Hsyncフラグ、Rコンポーネント、Gコンポーネント、及びBコンポーネントを含む。
【0017】
Vsyncフラグは垂直同期信号である。1つのフレーム画像を構成する入力画像データ542のうち、最初に入力される入力画像データ542のVsyncフラグは1となる。また、その他の入力画像データ542のVsyncフラグは0となる。通常、最初に入力される入力画像データ542は、フレーム画像の先頭画素についての情報を示す。
【0018】
Hsyncフラグは水平同期信号である。フレーム画像内の1つのラインを構成する入力画像データ542のうち、最初に入力される入力画像データ542のHsyncフラグは1となる。また、その他の入力画像データ542のHsyncフラグは0となる。通常、最初に入力される入力画像データ542は、ライン先頭画素についての情報を示す。
【0019】
Rコンポーネント、Gコンポーネント、及びBコンポーネントは、それぞれの画素についてのR画素値、G画素値、及びB画素値を示す。もっとも、本実施例に係る入力画像データ542の構造は図7に示されるものには限られない。例えば、入力画像データ542はRGBとは異なる色空間に基づく画素値を有してもよい。また入力画像データ542は、Hsyncフラグ及びVsyncフラグを有さなくてもよく、例えば座標情報を有していてもよい。
【0020】
画像サイズ情報540は、入力画像のサイズを示す情報である。例えば画像サイズ情報540は、X方向のピクセル数を示すxPixelNumと、Y方向のピクセル数を示すyPixelNumとを含んでいてもよい。
【0021】
画像蓄積部502は、入力画像データ542と画像サイズ情報540とを取得する(入力手段)。そして画像蓄積部502は、入力画像データ542をフレームメモリ503に書き込む。ここで、画像蓄積部502が行う処理について、図13のフローチャートを参照して説明する。
【0022】
ステップS1302で画像蓄積部502は、新しいフレーム画像の入力が開始するのを待つ。例えば画像蓄積部502は入力画像データ542を取得し、入力画像データ542のVsyncフラグが0であるか1であるかを判定する。Vsyncフラグが1である場合、処理はステップS1304に進む。Vsyncフラグが0である場合、Vsyncフラグが1である入力画像データ542を取得するまで、画像蓄積部502は入力画像データ542の取得とVsyncフラグの判定を繰り返す。
【0023】
ステップS1304で画像蓄積部502は、取得した入力画像データ542をフレームメモリ503に書き込む。具体的には画像蓄積部502は、フレームメモリ503の指定アドレスに、入力画像データ542を書き込む。この指定アドレスは、画像サイズ情報540に従って、画像蓄積部502が計算することができる。具体的には画像蓄積部502は、Vsyncフラグが1である入力画像データ542の後に入力された入力画像データ542の数をカウントする。そして画像蓄積部502は、入力画像のサイズとカウントとに従って、フレームメモリ503における対応アドレスを計算することができる。
【0024】
ステップS1306で画像蓄積部502は、1フレーム分の入力画像データ542を処理したか否かを判定する。この判定は例えば、画像サイズ情報540が示す入力画像のサイズと、上述のカウントとに従って、画像蓄積部502が行うことができる。別の実施形態において画像蓄積部502は、入力画像データのVsyncフラグに従って、1フレーム分の入力画像データ542を処理したか否かを判定してもよい。1フレーム分の入力画像データ542の処理が終わっていない場合、処理はステップS1302に戻る。1フレーム分の入力画像データ542の処理が終了した場合、処理はステップS1308に進む。
【0025】
ステップS1308において画像蓄積部502は、画像入力処理を終了するか否かを判定する。この判定は例えばユーザ指示に従って行われてもよいし、入力画像データ542と共に歪み補正部500(例えば画像蓄積部502)に入力される制御信号に従って行われてもよい。画像入力処理を終了しない場合、処理はステップS1302に戻る。画像入力処理を終了する場合、図13の処理は終了する。
【0026】
カウンタ506は、歪み補正画像601中(変形画像中)のそれぞれの画素についての座標値を順次出力する。例えばカウンタ506は、歪み補正画像601のそれぞれの画素を走査し、走査されている画素の座標を出力画素位置544として出力する。カウンタ506が行う処理について、図6を参照して説明する。図6において入力画像600は、歪み補正部500に入力される画像データの有効領域を示す。また歪み補正画像601は、歪み補正部500から出力される画像データを示す。歪み補正画像601のうち、ハッチングされていない部分が有効領域である。具体的にはハッチングされていない部分は、入力画像600に対応する。カウンタ506は歪み補正画像601における走査線604上のそれぞれの画素の画素位置、例えば画素Daを示す出力画素位置605を、出力画素位置544として出力する。
【0027】
ここで、カウンタ506が行う処理について、図9のフローチャートを参照して説明する。以下の説明においては、X方向にXPixelNum画素、Y方向にYPixelNum画素の大きさを有する歪み補正画像601において、各画素の座標値は(1,1)から(XPixelNum,YPixelNum)までの値をとるものとする。もっとも、座標値の設定方法は当業者が任意に選択可能であり、選択された座標値の設定方法に従って以下の処理を修正することは当業者には容易だろう。
【0028】
ステップS901でカウンタ506は、画像サイズ情報540を取得する。この画像サイズ情報540が示すサイズの歪み補正画像601が、歪み補正部500からは出力される。またカウンタ506は、X座標を0に、Y座標を0にセットする。ステップS902においてカウンタ506は、次のY座標を決定する。例えばカウンタ506は、Yに1を加えればよい。ステップS903においてカウンタ506は、次のX座標を決定する。例えばカウンタ506は、Xに1を加えればよい。
【0029】
ステップS904においてカウンタ506は、X座標とY座標との組を、出力画素位置544として出力する。ステップS905においてカウンタ506は、出力画素位置544が走査線の末端に位置するか否かを判定する。例えばカウンタ506は、XがXPixelNumに一致する場合に、出力画素位置544が走査線の末端に位置するものと判定することができる。XがXPixelNumに一致しない場合(または、XがXPixelNumよりも小さい場合)、処理はステップS903に戻る。XがXPixelNumに一致する場合(または、XがXPixelNum以上である場合)、処理はステップS906に進む。
【0030】
ステップS906においてカウンタ506は、出力画素位置544が歪み補正画像601の末端に位置するか否かを判定する。例えばカウンタ506は、YがYPixelNumに一致する場合に、出力画素位置544が歪み補正画像601の末端に位置するものと判定することができる。YがYPixelNumに一致しない場合(または、YがYPixelNumよりも小さい場合)、カウンタ506はXに0をセットし、そして処理はステップS902に戻る。YがYPixelNumに一致する場合(または、YがYPixelNum以上である場合)、処理はステップS907に進む。
【0031】
ステップS907においてカウンタ506は、出力画素位置の出力処理を終了するか否かを判定する。この判定は例えばユーザ指示に従って行われてもよいし、まだ歪み補正画像へと変換されていない入力画像が存在するか否かに従って行われてもよい。出力処理を終了しない場合、カウンタ506はX及びYに0をセットし、そして処理はステップS901に戻る。画像入力処理を終了する場合、図9の処理は終了する。
【0032】
領域判定部505は、出力画素位置544のそれぞれについて、出力画素位置544に対応する入力画素位置558を取得する。また領域判定部505は、出力画素位置544が示す画素に隣接する画素の位置に対応する入力画素位置559を取得する。これらの処理は、領域判定部505が備える座標変換部(不図示)が行うことができる。さらに領域判定部505は、入力画素位置558と入力画素位置559とに従って、出力画素位置544に適用するフィルタを選択する。具体的には領域判定部505は、フィルタを特定するフィルタ選択情報548を出力する。このフィルタ選択情報548は、フィルタ部501がフィルタ処理を行う際に用いられる。これらの処理は、領域判定部505が備える係数選択部(不図示)が行うことができる。
【0033】
ここで、出力画素位置544と、入力画素位置558と、入力画素位置559との関係を図6を参照して説明する。出力画素位置544は、図6の出力画素位置605に相当する。ここで、出力画素位置605に位置する画素をDaとする。また、入力画素位置558は、図6の入力画素位置602に対応する。さらに、入力画素位置602に位置する画素をSaとする。
【0034】
ここで、入力画像600を歪み補正画像601へと補正すると、画素Saは画素Daへと移動するものとする。出力画素位置と入力画素位置との関係は、座標変換テーブル515に規定されている。すなわち、出力画素位置605(画素Daの位置)と入力画素位置602(画素Saの位置)との関係は、座標変換テーブル515に規定されている。言い換えれば座標変換テーブル515は、歪み補正画像601中の着目画素位置に写像される、入力画像600中の画素位置を規定している。したがって領域判定部505は、出力画素位置544(出力画素位置605)から、入力画素位置558(入力画素位置602)を求めることができる。
【0035】
また出力画素位置606は、画素Daに隣接する画素の画素位置である。この出力位置606が、ここで、出力画素位置606に位置する画素をDbとする。本実施例において出力画素位置606(近隣画素位置)は、出力画素位置605のX座標に1を加えることによって得られる座標とする。すなわち、画素Dbは画素DaのX軸正方向に隣接する画素である。Daの座標を(Xda,Yda)とし、Dbの座標を(Xdb,Ydb)とすると、Xdb=Xda+1、Ydb=Ydaとなる。
【0036】
入力画素位置559は、図6の入力画素位置603に対応する。ここで、入力画素位置603に対応する画素をSbとする。ここで、入力画像600を歪み補正画像601へと補正すると、画素Sbは画素Dbへと移動するものとする。すなわち、座標変換テーブル515を参照することにより、領域判定部505は、出力画素位置544(出力画素位置605)から、入力画素位置559(入力画素位置603)を求めることができる。
【0037】
次に、領域判定部505が行う処理の詳細について、図10のフローチャートを参照して説明する。ステップS1001において領域判定部505は、カウンタ506から出力画素位置544を取得する。ステップS1002において領域判定部505は、上述のように出力画素位置544の画素に隣接する画素の画素位置545を算出する。ステップS1003において領域判定部505は上述のように、座標変換テーブル515を参照して、出力画素位置544に対応する入力画素位置558と、出力画素位置545に対応する入力画素位置559とを取得する。ステップS1004において領域判定部505は、出力画素位置544と入力画素位置558との組を入力画素取得部504へと出力する。
【0038】
ステップS1005において領域判定部505は、入力画素位置558が示す画素が、入力画像の有効領域内にあるか否かを判定する(判定手段)。入力画像の有効領域は、画像サイズ情報540によって示される。上述のように本実施例においては、X方向にXPixelNum画素、Y方向にYPixelNum画素の大きさを有する歪み補正画像601において、各画素の座標値は(1,1)から(XPixelNum,YPixelNum)までの値をとる。また、入力画素位置558が示す画素Saの座標を(Xsa,Ysa)とする。この場合、Xsaが1より小さいか又はXPixelNumより大きい場合、入力画素位置558が示す画素は入力画像の有効領域内にないものと判定することができる。また、Ysaが1より小さいか又はYPixelNumより大きい場合、入力画素位置558が示す画素は入力画像の有効領域内にないものと判定することができる。
【0039】
入力画素位置558が示す画素が入力画像の有効領域内にない場合、処理はステップS1010に進む。ステップS1010において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として0を出力し、その後処理はステップS1010に進む。一方で入力画素位置558が示す画素が入力画像の有効領域内にある場合、処理はステップS1006に進む。
【0040】
ステップS1006で領域判定部505は、入力画素位置558が示す画素が、入力画像の有効領域の境界に位置するか否かを判定する。具体的には、Xsaが1又はXPixelNumに等しい場合、入力画素位置558が示す画素が入力画像の有効領域の境界に位置すると判定することができる。また、Ysaが1又はYPixelNumに等しい場合も、入力画素位置558が示す画素が入力画像の有効領域の境界に位置すると判定することができる。入力画素位置558が示す画素が入力画像の有効領域の境界に位置する場合、処理はステップS1011に進む。ステップS1011において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として1を出力し、その後処理はステップS1010に進む。入力画素位置558が示す画素が入力画像の有効領域の境界に位置しない場合、処理はステップS1007に進む。
【0041】
ステップS1007,S1008,及び1012で領域判定部505は、入力画素位置558と入力画素位置559とに従ってフィルタ選択情報548を決定する。例えば領域判定部505は、入力画素位置558にある画素Saと、入力画素位置559にある画素Sbとの間の距離に従って、フィルタ選択情報548を決定することができる。
【0042】
本実施例においては、ステップS1007において領域判定部505は、入力画素位置558と入力画素位置559とに従って画素Saと画素Sbとの間の距離を算出する。画素Sbの座標を(Xsb,Ysb)とすると、画素Saと画素Sbとの間の距離は√((Xsa−Xsb)2+(Ysa−Ysb)2)となる。そして領域判定部505は、算出された距離が所定の閾値以下であるか否かを判定する。算出された距離が所定の閾値以上である場合、処理はステップS1012に進む。算出された距離が所定の閾値以上ではない場合、処理はステップS1008に進む。
【0043】
ステップS1012において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報548として2を出力し、その後処理はステップS1010に進む。ステップS1008において領域判定部505は、出力画素位置544に関連付けられたフィルタ選択情報として3を出力し、その後処理はステップS1010に進む。
【0044】
ステップS1010において領域判定部505は、入力画素位置の出力処理及びフィルタ選択情報の出力処理を終了するか否かを判定する。例えば、カウンタ506から次の出力画素位置544が入力されている場合には、領域判定部505は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1001に戻る。処理を終了する場合、図10の処理は終了する。
【0045】
領域判定部505が出力したフィルタ選択情報548は、上述のように、フィルタ部501がフィルタ処理を行う際に用いられる。具体的にはフィルタ部501は、フィルタ選択情報548に従ってフィルタを選択する。ここで、フィルタ選択情報548と、フィルタ部501が選択するフィルタとの関係について、図8に示されるフィルタの例を参照して説明する。上述のように本実施例において、フィルタ選択情報548は0,1,2,3のいずれかの値を持つ。図8には、それぞれの値に対応するフィルタが示されている。すなわち、フィルタ選択情報548が0である場合にはフィルタ800が用いられる。フィルタ選択情報548が1である場合にはフィルタ801が用いられる。フィルタ選択情報548が2である場合にはフィルタ802が用いられる。また、フィルタ選択情報548が3である場合にはフィルタ803が用いられる。図8においては、ハッチングされている係数がフィルタの中心に相当する。
【0046】
フィルタ処理部512は、画像内の着目画素に対してフィルタ800を用いた空間フィルタ処理を行うことができる。例えばフィルタ処理部512は、空間フィルタ処理によって加重平均値を求めることができる。すなわちフィルタ処理部512は、歪み補正画像における出力画素位置554近傍(処理画素位置近傍)の画素群の画素値と、フィルタ係数群との畳み込み演算によって、出力画像における出力画素位置554の画素値を算出することができる。
【0047】
フィルタ800の係数は全て0である。したがって、画像内の着目画素に対してフィルタ800を用いた空間フィルタ処理を行うと、出力値は0となる。もっとも、ブランキング領域と有効領域との間の滲みを防止するという観点からは、フィルタ800における中心のフィルタ係数は1であってもよい。この場合、フィルタ800を用いたフィルタ処理を行うと、着目画素の画素値と出力値とは一致する。すなわちフィルタ800を用いる場合、歪み補正画像における処理画素位置の画素の画素値又は予め定められた画素値が、出力画像における処理画素位置における画素の画素値として設定される。
【0048】
一方でフィルタ801においては、フィルタ中心の係数が1で残りの係数は0である。したがってフィルタ801を用いたフィルタ処理を行うと、着目画素の画素値と出力値とは一致する。フィルタ802を用いたフィルタ処理を行う場合には、着目画素に隣接する画素値を考慮して出力値が算出される。さらに、フィルタ803を用いたフィルタ処理を行う場合には、フィルタ802を用いる場合よりも広い範囲の画素値を考慮して出力値が算出される。すなわち、フィルタ801、802、803の順に、フィルタ処理における参照領域は広くなる。
【0049】
ところで、入力画像600を歪み補正画像601へと補正した場合に、画素Da周辺における縮小率は、(SaとSbとの間の距離)/(DaとDbとの間の距離)として近似的に表すことができる。本実施例においては歪み補正画像601内の画素Daと画素Dbとの間の距離は一定(1画素)である。したがって、画素Saと画素Sbとの間の距離は、縮小率に相関する値となる。本実施例においては画素Saと画素Sbとの間の距離が所定の閾値以上である場合にフィルタ802が選択される。言い換えれば、歪み補正画像601の出力画素位置605(Da)における縮小率がより大きい場合に、より狭い範囲の画素を参照するフィルタが選択される。
【0050】
次に、入力画素取得部504について詳しく説明する。入力画素取得部504は、歪み補正画像を生成する。入力画素取得部504が行う処理について、図12のフローチャートを参照して説明する。ステップS1201において入力画素取得部504は、領域判定部505から、入力画素位置558、出力画素位置544、及びフィルタ選択情報548を取得する。
【0051】
ステップS1202において入力画素取得部504は、入力画素位置558に対応する入力画像データ543をフレームメモリ503から取得する(変形手段)。この際入力画素取得部504は、画像サイズ情報540を参照して、入力画素位置558に対応する入力画像データ543が格納されているアドレスを計算することができる。ところで、入力画素位置558に対応する入力画像データ543が存在しないことがある。例えば、入力画素位置558が入力画像領域外に位置する場合である。この場合、すなわち出力画素位置544に写像される入力画素位置558が存在しないと判定した場合には、入力画素取得部504は、所定の画素値(所定値)を示す入力画像データを、入力画素位置558に対応する入力画像データとする。この所定の画素値は通常は黒画素(R,G,B=0,0,0)である。しかしながら、この所定の画素値は任意の画素値でありうる。
【0052】
ステップS1203において入力画素取得部504は、ステップS1202で取得した入力画像データ543と、ステップS1201で取得した出力画素位置544と、ステップS1201で取得したフィルタ選択情報548とをバッファ507に出力する。出力画素位置544と入力画像データ543との組によって、歪み補正画像は表される。
【0053】
ステップS1205において入力画素取得部504は、出力処理を終了するか否かを判定する。例えば、領域判定部505から次の出力画素位置544が入力されている場合には、入力画素取得部504は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1201に戻る。処理を終了する場合、図12の処理は終了する。
【0054】
上述のように、出力画素位置544、入力画像データ543、及びフィルタ選択情報548の組が、バッファ507に出力される。これらの情報は一旦バッファ507に格納された後、歪み補正部500から出力される。このようにバッファ507に格納され、歪み補正部500から出力される入力画像データ543を、以降で補正画像データ549と呼ぶ。本実施例においてはバッファ507に出力画素位置544が格納されるものとした。しかしながら出力画素位置544は通常ラスタ順に順次選択され、この場合それぞれの入力画像データ543に対応する出力画素位置544は、出力画素位置544を用いずに知ることができる。また入力画素取得部504は、補正画像データ549を出力する際に、Vsyncフラグ及びHSyncフラグを、歪み補正画像内における補正画像データ549が示す画素の位置に従って書き換えてもよい。このように、バッファ507に出力画素位置544を格納することは必須ではない。
【0055】
次にフィルタ部501について詳しく説明する。フィルタ部501は、歪み補正部500から入力された歪み補正画像に対してフィルタ処理を行う。具体的にはフィルタ部501は、補正画像データ549とフィルタ選択情報548とを用いて、出力画像データ553を生成する。フィルタ部501は処理部として、画像蓄積部508、参照画素取得部510、カウンタ511、及びフィルタ処理部512を備える。さらにフィルタ部501は記憶部として、フレームメモリ509、バッファ514、及びフィルタ保持テーブル513を備える。フレームメモリ509及びバッファ514は、歪み補正部500が備えるフレームメモリ503及びバッファ507と同様のものでありうる。またフィルタ保持テーブル513は、後述のROM401によって実現されうる。
【0056】
以下に、フィルタ部501が備える各部について説明する。画像蓄積部508の動作は画像蓄積部502と同様であるが、画像蓄積部508は補正画像データ549に加えてフィルタ選択情報548を歪み補正部500から取得する。そして画像蓄積部508は、補正画像データ549及びフィルタ選択情報548をフレームメモリ509に格納する。画像蓄積部508は、画像蓄積部502と同様の方法で補正画像データ549及びフィルタ選択情報548をフレームメモリ509に格納することができる。カウンタ511は、カウンタ506と同様に、画像サイズ情報540を参照して出力画素位置554を順次出力する。
【0057】
フィルタ処理部512は、カウンタ511から入力された出力画素位置554の画素値を算出する(演算手段)。フィルタ処理部512が行う具体的な処理の一例について、図11のフローチャートを参照して説明する。ステップS1101においてフィルタ処理部512は、出力画素位置554を取得する。ステップS1102においてフィルタ処理部512は、出力画素位置554に対応するフィルタ選択情報548をフレームメモリ509から取得する。具体的にはフィルタ処理部512は、出力画素位置554を参照画素取得部510に送る。参照画素取得部510は、送られた画素位置についてのフィルタ選択情報548をフレームメモリ509から取得し、フィルタ処理部512に返す。
【0058】
ステップS1103においてフィルタ処理部512は、ステップS1102で取得したフィルタ選択情報548に対応するフィルタ556を、フィルタ保持テーブル513から取得する。より正確にはフィルタ処理部512は、各フィルタ係数と、各フィルタ係数を用いた演算の対象となる画素の相対位置と、をフィルタ保持テーブル513から取得する。フィルタ保持テーブル513は、フィルタ選択情報548とフィルタ556とを関連付けて保持している。フィルタ選択情報548と選択されるフィルタ556との関係は、前に説明した通りである。
【0059】
ステップS1104においてフィルタ処理部512は、出力画素位置554の画素値を算出するために用いられる画素(以降で参照画素と呼ぶ)についての補正画像データ549を取得する。参照画素は、ステップS1102で取得されたフィルタ556によって特定される。すなわちフィルタ処理部512は、フィルタ係数を用いた演算の対象となる画素についての補正画像データ549を取得する。具体的にはフィルタ処理部512は、参照画素のそれぞれについて、参照画素位置555を参照画素取得部510に送る。参照画素取得部510は、送られた画素位置についての補正画像データ549をフレームメモリ509から取得し、フィルタ処理部512に返す。参照画素取得部510は、画素位置と画像サイズ情報540とを参照して、送られた画素位置についての補正画像データ549が格納されているフレームメモリ509内のアドレスを計算する。こうして参照画素取得部510は、出力画素位置554の近傍についての補正画像データ549をフレームメモリ509から取得できる。もっともフィルタ処理部512は、ステップS1102において、出力画素位置554の近傍についての補正画像データ549及びフィルタ選択情報548をフレームメモリ509から取得してもよい。
【0060】
ステップS1105においてフィルタ処理部512は、ステップS1103で取得したフィルタ556と、参照画素についてステップS1104で取得した補正画像データ549と、を用いて出力画素位置554の画素値を算出する。例えばフィルタ処理部512は、参照画素に対してフィルタ556に基づく空間フィルタ処理を適用し、出力画像データ553を生成することができる。ここで空間フィルタ処理としては、例えばフィルタ556に基づく加重平均処理が例として挙げられる。フィルタ処理部512は、このようにして得られた出力画像データ553を、一旦バッファ514に格納する。バッファ514に格納された出力画像データは、その後フィルタ部501から出力される。
【0061】
ステップS1106においてフィルタ処理部512は、フィルタ処理を終了するか否かを判定する。例えば、カウンタ511から次の出力画素位置554が入力されている場合には、フィルタ処理部512は処理を終了しないことを決定することができる。処理を終了しない場合、処理はステップS1101に戻る。処理を終了する場合、図11の処理は終了する。
【0062】
ここまで、本実施例に係る画像処理装置が備える各部の動作について、それぞれ説明した。次に、本実施例に係る画像処理装置が行う動作の流れを、図14のフローチャートを参照して説明する。ステップS1405において画像蓄積部502は、複数の入力画像データ542によって表される入力画像を取得する。この処理は、図13のフローチャートに従って行うことができる。
【0063】
ステップS1410において入力画素取得部504は、カウンタ506及び座標変換テーブル515を用いて、歪み補正画像を構成する画素のそれぞれについて対応する入力画像データ542を取得する。こうして入力画素取得部504は歪み補正画像を生成し、この歪み補正画像内には変形された入力画像が含まれている。この処理は、図9及び図12のフローチャートに従って行うことができる。
【0064】
ステップS1415において領域判定部505は、歪み補正画像を構成する画素のそれぞれについて、適用するフィルタを特定するフィルタ選択情報548を生成する。この処理は、図10のフローチャートに従って行うことができる。
【0065】
ステップS1420においてフィルタ処理部512は、歪み補正画像を構成する画素のそれぞれについて、フィルタ選択情報548によって特定されたフィルタを用いたフィルタ処理を行う。こうしてフィルタ処理部512は、歪み補正画像に対してフィルタ処理を行い、出力画像を生成する。この処理は、図11のフローチャートに従って行うことができる。ステップS1425においてフィルタ処理部512は、生成された出力画像を出力する。
【0066】
最後に、本実施例に係る画像処理装置の物理的構成について説明する。本実施例に係る画像処理装置は、ソフトウェアによって、ハードウェアによって、又はソフトウェアとハードウェアとの組み合わせによって実現されうる。例えば、図5に示されている各部のうち1以上の機能を実現するハードウェアの組み合わせによって、本実施例に係る画像処理装置を実現することができる。
【0067】
また、本実施例に係る画像処理装置はパーソナルコンピュータのようなコンピュータによっても実現されうる。図4は、本実施例に係る画像処理装置を実現するコンピュータの物理的構成の一例を示す。このコンピュータにおいて本実施例に係る画像処理装置の機能を実行するためには、各機能構成をプログラムにより表現し、このコンピュータに読み込まればよい。こうして、このコンピュータで本実施例に係る全ての機能を実現することができる。この場合、図5をはじめとする構成要素の各々は関数、若しくはCPUが実行するサブルーチンで機能させればよい。
【0068】
また、コンピュータプログラムは通常、CD−ROM等のコンピュータが読み取り可能な記憶媒体に格納されている。この記憶媒体を、コンピュータが有する読み取り装置(CD−ROMドライブ等)にセットし、システムにコピー若しくはインストールすることで実行可能になる。従って、係るコンピュータが読み取り可能な記憶媒体も本発明の範疇にあることは明らかである。
【0069】
図4においてCPU402は、コンピュータ全体の動作をコントロールする。例えばCPU402は、RAM400に格納されたプログラムの実行等を行う。RAM400は、ハードディスク405等の記憶媒体に記憶されたプログラム等を読み込んで格納する。このコンピュータにおいては、図5に示す各部の処理手順を実現するプログラムをハードディスク405が格納する。プログラム実行時にはプログラムはRAM400に読み込まれ、CPU402によって実行される。RAM400、ROM401、CPU402、及びディスクコントローラ403は、バス407を介して互いに通信できるように接続されている。また、ハードディスク405には、ディスクコントローラ403を介してアクセスすることができる。バス407には、マウス及びキーボードなどのコンピュータに情報を入力するデバイスをさらに接続することができる。さらにバス407には、モニタ及びプリンタなど、コンピュータが情報を出力するために用いられるデバイスを接続することもできる。
【0070】
特に、画像蓄積部502、カウンタ506、領域判定部505、入力画素取得部504、画像蓄積部508、カウンタ511、参照画素取得部510、及びフィルタ処理部512は、CPU402によって実行されるソフトウェアとして実現されうる。また、フレームメモリ503、バッファ507、フレームメモリ509、及びバッファ514は、RAM400によって実現されうる。さらに、座標変換テーブル515及びフィルタ保持テーブル513は、ROM401によって実現されうる。
【0071】
[実施例2]
実施例1においては、フィルタ部501は歪み補正画像に対してフィルタ処理を行って出力画像を生成し、この出力画像を出力した。実施例2に係る画像処理装置は、動画像に対して画像変形を行い、さらに動画像のフレームレートを向上させる。すなわち実施例2に係る画像処理装置は、それぞれのフレーム画像から複数のフレーム画像を生成する。動画像のフレームレートを増加させる場合に、フレーム画像に対してフィルタ処理を行うことにより画質を向上させる技術が知られている。実施例2に係る画像処理装置もまた、1つのフレーム画像から複数のフレーム画像を生成する際に、フィルタ処理を行う。
【0072】
本実施例において、歪み補正部500には連続するフレーム画像で構成される動画像が入力される。歪み補正部500は、それぞれのフレーム画像に対して変形処理を行うことにより、連続する歪み補正画像で構成される動画像を生成する。フィルタ部501は、それぞれの歪み補正画像に対してフィルタ処理を行うことにより、複数の出力画像を生成する。そしてフィルタ部501は、それぞれの出力画像で構成される動画像を出力する。すなわち、フィルタ部501が出力する動画像のフレームレートは、フィルタ部501に入力された動画像のフレームレートよりも高い。フィルタ部501がフレームレート向上処理を行ってから歪み補正部500が変形処理を行う構成も考えられるが、この場合歪み補正部500が処理する画像の数が増えてしまうため、処理負荷が増大する。従って、歪み補正部500が変形処理を行ってからフィルタ部501がフレームレート向上処理を行うことは有利である。
【0073】
本実施例に係る画像処理装置の具体的な構成について以下に説明する。本実施例に係る画像処理装置は、図5に示す実施例1に係る画像処理装置と同様の構成を有する。本実施例の構成を実現するためには、カウンタ511はステップS901〜ステップS906の処理を繰り返せばよい。具体的には、フレームレートをN倍にする場合、カウンタ511はステップS901〜ステップS906の処理を、フィルタ部501に1枚の歪み補正画像が入力される毎にN回行えばよい。
【0074】
本実施例に係る画像処理装置によれば、1枚の歪み補正画像からN枚の出力画像(サブフレーム画像)が生成される。ここで、それぞれのサブフレーム画像を生成するために用いられるフィルタはそれぞれ異なっていてもよい。具体的には、1番目のサブフレーム画像を生成するために低周波強調フィルタを用いるフィルタ演算が行われ、2番目のサブフレーム画像を生成するために高周波強調フィルタを用いるフィルタ演算が行われてもよい。本実施例に係る画像処理装置は、複数のフィルタ保持テーブル513を備えていてもよい。すなわちそれぞれのサブフレーム画像を生成する際に、異なるフィルタ保持テーブル513が参照されてもよい。
【0075】
[その他の実施例]
上述の実施例においては、フィルタ800,801,802,803のうちから、1つのフィルタが選択された。しかしながらフィルタの選択方法は上述の方法に限られるわけではない。例えば上述の実施例においては、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に応じてフィルタ802又はフィルタ803が選択された。しかしながら、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離と、複数の閾値とを比較することにより、3つ以上のフィルタから1つが選択されてもよい。
【0076】
また、入力画素位置558が入力画像の領域外にある場合にはフィルタ800を選択し、入力画素位置558が入力画像の領域内にある場合にはフィルタ802を選択するという構成によっても、画質の改善は達成されうる。すなわち、変形後の画像にブランキング領域を有する変形処理において、ブランキング領域と有効領域の境界部分において空間フィルタ処理を適切に行うことができる。このように、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に基づいてフィルタを選択することは必須ではない。
【0077】
一方で、入力画素位置558が入力画像の領域外にあるか否かを判定せずに、入力画素位置558が入力画像領域の境界上に位置するか否か、又は境界付近に位置するか否かのみに従ってフィルタを選択することのみによっても、画質の改善は達成されうる。すなわち、入力画素位置558が入力画像領域の境界部付近に位置する場合に、より参照範囲の狭いフィルタを用いればよい。
【0078】
一方で、入力画素位置558が入力画像の領域外にあるか否かを判定せずに、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離に基づいてフィルタを選択することのみによっても、画質の改善は達成されうる。すなわち、領域毎に拡大・縮小率が異なる変形処理において、均一な効果の空間フィルタ処理を行うことができる。このような修正は、ステップS1005〜S1007を修正することにより達成されうる。
【0079】
1つの実施例において、歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)が入力画像における一辺から所定距離内に位置する場合に、第1のフィルタ係数群が選択されうる。第1のフィルタ係数群とは、例えばフィルタ801でありうる。一方で歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)が入力画像における一辺から所定距離内に位置する場合に、第2のフィルタ係数群が選択されうる。第2のフィルタ係数群とは、例えばフィルタ803でありうる。ここで、第2のフィルタ係数群に含まれる係数の数は、第1のフィルタ係数群に含まれる係数の数よりも多い。すなわち、第2のフィルタ係数群を用いてフィルタ処理を行う際に参照される第2の画素群の画素数は、第1のフィルタ係数群を用いてフィルタ処理を行う際に参照される第1の画素群の画素数よりも多い。
【0080】
他の実施例において、歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が閾値以上である場合に、第1のフィルタ係数群が選択されうる。第1のフィルタ係数群とは、例えばフィルタ802でありうる。一方で歪み補正画像中の着目画素位置に写像される入力画像中の画素位置が存在し、かつ入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が閾値以上ではない場合に、第2のフィルタ係数群が選択されうる。第2のフィルタ係数群とは、例えばフィルタ803でありうる。ここで、第2のフィルタ係数群に含まれる係数の数は、第1のフィルタ係数群に含まれる係数の数よりも多い。すなわち、第2のフィルタ係数群を用いてフィルタ処理を行う際に参照される第2の画素群の画素数は、第1のフィルタ係数群を用いてフィルタ処理を行う際に参照される第1の画素群の画素数よりも多い。
【0081】
上述の実施例においては、出力画素位置544に基づきフィルタ選択情報548が決定され、その後フィルタ保持テーブル513を参照してフィルタ選択情報548に対応するフィルタ556が取得された。しかしながらフィルタ保持テーブル513は、出力画素位置544とフィルタ556との組を格納していてもよい。この場合フィルタ処理部512は、フィルタ選択情報548を用いずに、出力画素位置544に対応するフィルタ556を取得することができる。また、フィルタ保持テーブル513の代わりに、任意の変換式に基づいて、出力画素位置544からフィルタ556を算出してもよい。
【0082】
フィルタ処理で用いられるフィルタ556の決定は、領域判定部505以外の構成要素が行ってもよい。例えばフィルタ処理部512が、入力画素位置558に基づいてフィルタ処理で用いられるフィルタ556を決定してもよい。さらにフィルタ処理部512は、入力画素位置558(Sa)及び入力画素位置559(Sb)に基づいてフィルタ556を算出してもよい。例えばフィルタ処理部512は、入力画素位置558が入力画像領域外にある場合、フィルタ800を用いる。一方でフィルタ処理部512、入力画素位置558が入力画像領域内にある場合、入力画素位置558(Sa)と入力画素位置559(Sb)とを用いて、所定の計算式に従ってフィルタ係数を算出する。具体的には、入力画素位置558(Sa)と入力画素位置559(Sb)との間の距離が小さいほど、フィルタ中心の係数がより大きくかつ周辺部の係数がより小さくなるような計算式を用いて、フィルタ係数を算出すればよい。
【0083】
上述の実施例においては、座標変換テーブル515に従って、出力画素位置544(Da)が入力画素位置558(Sa)へと変換された。同様に、出力画素位置545(Db)は入力画素位置559(Sb)へと変換された。しかしながらこの変換は、変換式に従って行われてもよい。この場合にも上述の実施例と同様、入力画素位置559が入力画像領域内にあるか否かは判定されうる。また、入力画素位置558と入力画素位置559との距離も算出されうる。
【0084】
上述の実施例において領域判定部505は、画素Daに隣接する画素として、画素DaのX軸正方向に隣接する画素Dbを選択した。しかしながら、画素Dbは任意の方法で選択できる。そもそも画素Dbは、画素Daに隣接していなくてもよい。すなわち領域判定部505は、画素Daの近傍にある画素、例えば画素Daに対して所定の相対位置にある画素を、画素Dbとして選択してもよい。
【0085】
さらに領域判定部505は、画素Daの近傍にある複数の画素を選択してもよい。例えば領域判定部505は、画素Daに対してX軸正方向に隣接する画素Db1と、X軸負方向に隣接する画素Db2と、Y軸正方向に隣接する画素Db3と、Y軸負方向に隣接する画素Db4とを選択してもよい。この場合領域判定部505は、画素Daに対応する入力画像中の画素Saと、画素Db1〜4に対応する入力画像中の画素Sb1〜4と間の距離に従って、フィルタ選択情報548を決定できる。例えば、画素Saと画素Sb1との間の距離、画素Saと画素Sb2との間の距離、画素Saと画素Sb3との間の距離、及び画素Saと画素Sb4との間の距離の合計(又は平均)を求めてもよい。そして領域判定部505は、求められた合計と所定の閾値とを上述の実施例のように比較することにより、フィルタ選択情報548を決定してもよい。
【0086】
別の実施例において領域判定部505は、画素Daに対応する入力画像中の画素Saが入力画像の境界に位置するか否かを判定するのに加えて、又はこの代わりに、画素Saが入力画像の境界付近に位置するか否かを判定してもよい。例えば領域判定部505は、上述のように画素Daの近傍にある複数の画素Dbを選択し、それぞれの画素Dbに対応する入力画像中の画素Sbが、入力画像領域内にあるか否かを判定してもよい。1つ以上の画素Sbが入力画像領域内にない場合、領域判定部505は、画素Daが有効領域の境界付近にあると判定することができる。この場合領域判定部は、画素Daに対しては参照範囲の狭いフィルタが用いられるように、例えばフィルタ801が用いられるように、フィルタ選択情報548を決定してもよい。
【0087】
さらには、画素Daに対応する入力画像中の画素Saの位置(すなわち入力画素位置558)と、入力画像の境界との間の距離に応じて、領域判定部505はフィルタ選択情報548を決定してもよい。例えば、用いられるフィルタ556の参照範囲が、画素Saと入力画像の境界との間の距離を半径とする円よりも狭くなるように、フィルタ選択情報548が決定されてもよい。
【0088】
(他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【特許請求の範囲】
【請求項1】
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置であって、
前記入力画像を入力する入力手段と、
前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定手段と、
前記判定手段が存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定手段が存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形手段と、
前記変形手段が前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算手段であって、
前記判定手段が存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定手段が存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算手段と、
前記演算手段が前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記判定手段は、前記入力画像中の各画素位置のうち、前記変形画像中の前記処理画素位置に写像される画素位置が、前記入力画像における一辺から所定距離内に位置するか否かをさらに判定し、
前記演算手段は、
前記判定手段が存在すると判定しかつ前記所定距離内に位置すると判定した場合には、前記変形画像における前記処理画素位置近傍の第1の画素群の画素値と第1のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定し、
前記判定手段が存在すると判定しかつ前記所定距離内に位置しないと判定した場合には、前記変形画像における前記処理画素位置近傍の第2の画素群であって、前記第1の画素群よりも画素数が多い第2の画素群の画素値と、第2のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定することを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記判定手段は、前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の処理画素位置に写像される画素位置と、前記変形処理により前記変形画像中の処理画素位置から所定の相対位置にある近隣画素位置に写像される画素位置と、の間の距離が閾値以上であるか否かをさらに判定し、
前記演算手段は、
前記判定手段が存在すると判定しかつ前記距離が閾値以上であると判定した場合には、前記変形画像における前記処理画素位置近傍の第1の画素群の画素値と第1のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定し、
前記判定手段が存在すると判定しかつ前記距離が閾値以上ではないと判定した場合には、前記変形画像における前記処理画素位置近傍の第2の画素群であって、前記第1の画素群よりも画素数が多い第2の画素群の画素値と、第2のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定することを特徴とする、請求項1に記載の画像処理装置。
【請求項4】
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置が行う画像処理方法であって、
前記画像処理装置の入力手段が、前記入力画像を入力する入力工程と、
前記画像処理装置の判定手段が、前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定工程と、
前記画像処理装置の変形手段が、前記判定工程で存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定工程で存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形工程と、
前記画像処理装置の演算手段が、前記変形工程で前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算工程であって、
前記判定工程で存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定工程で存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算工程と、
前記画像処理装置の出力手段が、前記演算工程で前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力工程と、
を備えることを特徴とする画像処理方法。
【請求項5】
コンピュータを、請求項1乃至3の何れか1項に記載の画像処理装置の各手段として機能させるための、コンピュータプログラム。
【請求項1】
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置であって、
前記入力画像を入力する入力手段と、
前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定手段と、
前記判定手段が存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定手段が存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形手段と、
前記変形手段が前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算手段であって、
前記判定手段が存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定手段が存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算手段と、
前記演算手段が前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記判定手段は、前記入力画像中の各画素位置のうち、前記変形画像中の前記処理画素位置に写像される画素位置が、前記入力画像における一辺から所定距離内に位置するか否かをさらに判定し、
前記演算手段は、
前記判定手段が存在すると判定しかつ前記所定距離内に位置すると判定した場合には、前記変形画像における前記処理画素位置近傍の第1の画素群の画素値と第1のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定し、
前記判定手段が存在すると判定しかつ前記所定距離内に位置しないと判定した場合には、前記変形画像における前記処理画素位置近傍の第2の画素群であって、前記第1の画素群よりも画素数が多い第2の画素群の画素値と、第2のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定することを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記判定手段は、前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の処理画素位置に写像される画素位置と、前記変形処理により前記変形画像中の処理画素位置から所定の相対位置にある近隣画素位置に写像される画素位置と、の間の距離が閾値以上であるか否かをさらに判定し、
前記演算手段は、
前記判定手段が存在すると判定しかつ前記距離が閾値以上であると判定した場合には、前記変形画像における前記処理画素位置近傍の第1の画素群の画素値と第1のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定し、
前記判定手段が存在すると判定しかつ前記距離が閾値以上ではないと判定した場合には、前記変形画像における前記処理画素位置近傍の第2の画素群であって、前記第1の画素群よりも画素数が多い第2の画素群の画素値と、第2のフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記着目画素位置の画素値として設定することを特徴とする、請求項1に記載の画像処理装置。
【請求項4】
入力画像に対して変形処理を行い、該変形された入力画像を画像領域に含む変形画像に対してフィルタ処理を行うことによって出力画像を生成する画像処理装置が行う画像処理方法であって、
前記画像処理装置の入力手段が、前記入力画像を入力する入力工程と、
前記画像処理装置の判定手段が、前記入力画像中の各画素位置のうち、前記変形処理により前記変形画像中の着目画素位置に写像される画素位置が存在するか否かを判定する判定工程と、
前記画像処理装置の変形手段が、前記判定工程で存在すると判定した場合には、前記変形画像中の着目画素位置に写像される前記入力画像中の画素位置における画素値を、該着目画素位置における画素値に設定し、前記判定工程で存在しないと判定した場合には、所定値を前記着目画素位置における画素の画素値に設定する変形工程と、
前記画像処理装置の演算手段が、前記変形工程で前記変形画像を構成する各画素位置について画素値を設定することで得られる前記変形画像から、前記出力画像の処理画素位置における画素の画素値を算出する演算工程であって、
前記判定工程で存在すると判定した場合には、前記変形画像における前記処理画素位置近傍の画素群の画素値とフィルタ係数群との畳み込み演算によって得られた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定し、
前記判定工程で存在しないと判定した場合には、前記変形画像における前記処理画素位置の画素の画素値又は予め定められた画素値を、前記出力画像における前記処理画素位置における画素の画素値として設定する演算工程と、
前記画像処理装置の出力手段が、前記演算工程で前記出力画像の各画素位置について画素値を設定することで得られる該出力画像を出力する出力工程と、
を備えることを特徴とする画像処理方法。
【請求項5】
コンピュータを、請求項1乃至3の何れか1項に記載の画像処理装置の各手段として機能させるための、コンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−238171(P2012−238171A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−106619(P2011−106619)
【出願日】平成23年5月11日(2011.5.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成23年5月11日(2011.5.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]