以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態における画像処理装置の構成例を示すブロック図である。本実施形態における画像処理装置101は、入力画像100を入力とし、入力画像100に対して画像変形処理を施して得られた変形画像102を出力する。画像変形処理は、例えば拡大縮小等のスケーリング処理、回転等のアフィン変形処理、プロジェクタ投影におけるキーストーン(台形)補正処理、レンズ歪み補正処理、樽型歪曲補正処理、糸巻き型歪曲補正処理、円柱・角柱投影時の歪み補正処理などである。
画像処理装置101の画像変形処理は、変形画像102の座標系の各画素の座標を走査し、入力画像100において対応する座標の近傍画素を取得して、得られた近傍画素の画素値を用いた補間演算を行い、変形画像102の各画素を生成する。以下では説明の便宜上、画像変形処理前の入力画像100の座標系を「変形前の座標系」と呼び、画像変形処理後の変形画像102の座標系を「変形後の座標系」と呼ぶ。
画像処理装置101は、着目画素走査部103、倍率情報参照部104、倍率情報記憶部105、倍率情報保持部106、及び倍率情報生成部107を有する。また、画像処理装置101は、フィルタ処理部108、変形処理部109、フィルタ係数算出部110、及びフィルタ係数テーブル111を有する。
着目画素走査部103は、変形後の座標系において、生成対象とする着目画素の座標を生成する。着目画素走査部103の処理を、図2(A)及び図2(B)を参照して説明する。図2(A)は、変形後の座標系200における格子点201と着目画素202との関係の例を示す図である。格子点201は、例えば変形前の画像(入力画像100)を複数の領域に分割したときの分割境界上の点であり、変形後の画像(変形画像102)の各画素が複数の格子点201によって包含されるようになっている。例えば変形前の画像の分割方法としては格子状に分割する方法がある。
変形後の座標系200の各座標に対応する変形前の座標系における格子点201の倍率情報が、倍率情報保持部106に保持されている。格子点201の倍率情報は、それぞれの格子点201に対応する変形画像102上の点の倍率を示す情報である。仮に変形画像102が入力画像100に対して全面50%の縮小であった場合には、各格子点201の倍率情報として50%という値が保持される。
ここで、例えば本実施形態における処理をハードウエアによって実装する場合には、着目画素202を包含する4つの格子点201の情報を同時に参照して演算を高速化する必要性が生じることも考えられる。格子点201の倍率情報を同時にアクセス可能な複数の記憶領域(又はメモリ)に分割して保持することで、演算の際に必要となる格子点201の倍率情報を並列に参照することが可能となる。
このとき、着目画素202がどの点を参照する場合にも、着目画素202を包含できるように格子点201の倍率情報を分割する必要がある。また、着目画素202を包含する格子点201の倍率情報は同時に参照ができるように、隣接する格子点201の倍率情報は分割されている必要がある。このような条件を満たす分割の例として、図2(A)に示すようにA群、B群、C群、及びD群の格子点201に分割する例がある。
図2(A)に一例を示すように分割することで、変形後の座標系200において何れの着目画素202が選択された際にも、着目画素202を包含する4つの格子点201の倍率情報を並列に参照することができる。着目画素202は4つの格子点201で包含される領域の中を走査する。
また、格子点の分割方法としては任意の分割方法があるが、各格子点が長方形状に配置されると着目画素202の倍率情報の演算を簡易化することができる。具体的には、図5(A)を参照して説明する後述の方法によって算出が可能となる。また、各格子点を正方形状に配置すると、図5(A)に示す例において必要となる補間演算が縦方向及び横方向(X軸方向及びY軸方向)に対して同じ計算で実現可能となる。
着目画素走査部103は、図2(B)のステップS201〜S203に示すように、格子点に包含されるよう着目画素の座標を生成し出力する処理(S202)を変形後の座標系において全ピクセルに繰り返し行う。
倍率情報参照部104は、着目画素走査部103から出力された着目画素の座標を入力とし、着目画素を包含する格子点の倍率情報を倍率情報保持部106から読み出すための読み出しアドレスを生成して出力する。倍率情報参照部104の処理を、図3(A)及び図3(B)を参照して説明する。
図3(A)には、変形後の座標系300における格子点301と着目画素302との関係を示しており、図3(A)においては格子点301を識別するために、括弧内にx方向及びy方向の識別子をそれぞれ付与している。ここではA〜D[x][y]の形式で示しており、例えばA[1][0]はA群の格子点301においてX軸方向1番目、Y軸方向0番目の格子点であることを示す。
図3(A)に示す例において、着目画素302の位置が選択された場合には、その着目画素を包含する格子点301を選択する。すなわち、左上にD[0][0]の格子点301を、右上にC[1][0]の格子点301を、左下にB[0][1]の格子点301を、右下にA[1][1]の格子点301をそれぞれ選択する。
倍率情報参照部104は、例えば選択された格子点301のそれぞれの識別子を、着目画素302を包含する格子点301の倍率情報の読み出しアドレスとして出力する。このようにして倍率情報参照部104は、図3(B)のステップS301〜S303に示すように、入力される着目画素の座標のそれぞれに対して、着目画素を包含する格子点の倍率情報の読み出しアドレスを生成し出力する処理(S302)を繰り返し行う。
倍率情報記憶部105は、入力された倍率情報参照部104からの着目座標を包含する格子点の倍率情報の読み出しアドレスを参照し、それら格子点の倍率情報を倍率情報保持部106から取得する。また、倍率情報記憶部105は、取得した格子点の倍率情報を倍率情報生成部107へ出力する。例えば、図3(A)を例に説明すると、着目画素302を包含する、左上のD[0][0]、右上のC[1][0]、左下のB[0][1]、右下のA[1][1]の各格子点301の倍率情報を出力する。倍率情報記憶部105は、図4のステップS401〜S403に示すように、各着目画素について、入力された着目画素を包含する格子点の倍率情報の読み出しアドレスに基づいて、格子点の倍率情報を取得し出力する処理(S402)を繰り返し行う。
次に、倍率情報生成部107は、入力された倍率情報記憶部105からの着目画素を包含する格子点の倍率情報、及び着目画素走査部103からの着目画素の座標をもとに、着目画素の座標に対応する倍率情報を補間演算によって生成する。図5(A)に一例を示すように、倍率情報生成部107は、着目画素504について、それを包含するA〜Dの格子点501の倍率情報を用いて補間演算を行って倍率情報を算出する。
図5(A)に示した例では、まずY軸方向について倍率情報を補間算出する。Aの格子点501及びCの格子点501の倍率情報から補間点I502の倍率情報を補間算出し、Bの格子点501及びDの格子点501の倍率情報から補間点II503の倍率情報を補間算出する。次に、補間算出した補間点I502及び補間点II503の倍率情報から着目画素504の倍率情報をX軸方向に補間算出して出力する。なお、A〜Dの格子点501の倍率情報を用いてY軸方向で補間算出した後にX軸方向で補間算出する例を示したが、X軸方向で補間算出した後にY軸方向で補間算出するようにしてもよい。
このように倍率情報生成部107は、図5(B)のステップS501〜S503に示すように、各着目画素について、入力された着目画素を包含する格子点の倍率情報を用いて、着目画素の倍率情報を生成し出力する処理(S502)を繰り返し行う。これにより、変形画像102におけるすべての画素の倍率情報が生成され出力される。
フィルタ係数算出部110は、倍率情報生成部107から出力された変形画像102における各画素の倍率情報を入力として、フィルタ係数を算出する。フィルタ係数算出部110は、各倍率情報に対応したフィルタ係数を保持するフィルタ係数テーブル111を参照することによりフィルタ係数を算出する。そして、フィルタ係数算出部110は、算出したフィルタ係数をフィルタ処理部108へ出力する。
フィルタ処理部108は、入力画像100とフィルタ係数算出部110からのフィルタ係数を入力として、入力画像100に対するフィルタ処理を行い、フィルタ処理されたフィルタ処理画像を出力する。本実施形態では、フィルタ処理部108は、高周波成分を除去するローパスフィルタ処理(以下、「LPF処理」と記す)を入力画像102に施す。
変形処理部109は、フィルタ処理部108からのフィルタ処理画像を入力として、フィルタ処理画像に対する画像変形処理を行い、画像変形処理された変形画像102を出力する。変形処理部109は、例えば拡大縮小等のスケーリング処理、回転等のアフィン変形処理、プロジェクタ投影におけるキーストーン(台形)補正処理、レンズ歪み補正処理、樽型歪曲補正処理、糸巻き型歪曲補正処理、円柱・角柱投影時の歪み補正処理などを行う。
本実施形態での入力画像100に対するフィルタ処理について説明する。フィルタ係数テーブル111は、各倍率情報に対応したフィルタ係数を保持しており、倍率情報に対応するフィルタ係数を出力する。
以下、倍率情報として水平方向の倍率である水平倍率を例に説明する。水平倍率100%は変形画像において、該座標の水平方向の倍率が等倍であることを意味する。また、水平倍率100%に対して、水平倍率0%側は水平方向の倍率が小さく、水平倍率200%側は水平方向の倍率が大きいことを意味する。なお、水平倍率の上限及び下限は画像処理装置において想定する画像変形処理の変形種別に応じて決めて良い。例えば、変形画像において水平倍率200%を超える変形を行う際には、その上限に基づきフィルタ係数テーブル111に保持するフィルタ係数を変えても良い。
図6に一例を示すようにフィルタ係数テーブル111では、各水平倍率に各々フィルタ係数が対応付けられており、本実施形態ではLPF処理のフィルタ係数が保持されている。LPF処理の係数は、着目画素を中心とする任意の領域の参照画素に対する重みづけの係数である。図6に示した例では、着目画素を中心画素とし、中心画素近傍の±2画素の範囲の計5画素分の重みづけ係数を保持している。
この5画素分の重みづけ係数の和は一般に1.0相当となり、中心画素に対して対称となるような係数とする。中心画素に対するフィルタ係数が1.0に近い場合には、中心画素の値が支配的になるためLPF処理の効果は低くなり、入力画像に近い画像がLPF処理後の画像として出力される。一方、中心画素に対するフィルタ係数が低い場合には、周辺画素の値が支配的になるためLPF処理の効果は高くなり、入力画像には平滑化処理が強く適用されて出力される。
本実施形態におけるフィルタ係数テーブル111では、大きな水平倍率に対してLPF処理の効果が低いフィルタ係数を対応付け、小さな水平倍率に対してLPF処理の効果が高いフィルタ係数を対応付けている。なお、ここでは水平倍率について記載したが、垂直倍率についても同様である。
このように倍率情報に対してフィルタ係数を対応付けることで、以下のような効果が得られる。図7において、変形前の座標系700におけるフィルタ処理結果画像701に対し、画像変形処理を施した結果が変形後の座標系710における変形画像711になるとする。この例において、フィルタ処理結果画像701と変形画像711とを比較すると、フィルタ処理結果画像701の右上部分は左下部分に対して倍率が小さくなっている。
したがって、本実施形態ではフィルタ処理結果画像701の右上部分702には、左下部分703に対して、より強いLPF処理が適用される。ここで、LPF処理は、画像変形処理によって生じるモアレを低減する効果がある一方で、他方では画像の明瞭感を低下させる。したがって、単にLPF処理を強く適用させるだけではモアレの低減と明瞭感の維持を両立することができない。
これに対して、本実施形態ではフィルタ処理結果画像711に示す通り、画像変形処理での倍率に応じてLPF処理の強度を変えることで、様々な種別の画像変形処理に対してモアレを低減しつつ明瞭感を維持することが可能になる。図7に示す例では、変形画像711において、右上部分712においてはモアレを中程度に低減しつつ明瞭感を中程度に維持し、一方で左下部分713においてもモアレを中程度に低減しつつ明瞭感を良く維持することが可能となる。
本実施形態によれば、入力画像に画像変形処理を行う際、変形後の画像の各画素の倍率情報を生成し、倍率情報に応じたフィルタ係数でのフィルタ処理を行った後に画像変形処理を行う。これにより、入力画像に行う画像変形処理に応じて適切なモアレ低減処理を行うことができ、種々の画像変形処理に応じたモアレ低減処理を実行することができる。
なお、本実施形態では変形前の画像を複数の領域に分割し、各領域に対応する変形後の倍率情報に基づき処理を行う例を示したが、変形後の画像を複数の領域に分割し、各領域に対応する変形前の倍率情報に基づき処理を行うようにしても良い。ただし、この場合には、同様の効果を得るためにはフィルタ係数テーブル111に保持する倍率情報とフィルタ係数の強度の関係は、図6に示した例とは逆にする必要がある。すなわち、変形前の倍率が小さいものに対してLPF処理の強度を弱くし、変形前の倍率が大きいものに対してLPF処理の強度を強くなるよう、フィルタ係数テーブル111におけるフィルタ係数を対応付けるようにすればよい。このようにすることで、変形後の画像を走査して画像変形処理を行う場合の構成に対しても、種々の画像変形処理に応じたモアレ低減処理を実行することができる。
なお、本実施形態ではフィルタ処理部108としてLPF処理を例に示したが、シャープネス処理等の他のフィルタ処理であっても良い。この場合には、フィルタ処理部108としてLPF処理に限らず、画像の周波数成分を調整する他の任意のフィルタ処理によっても、種々の画像変形処理に応じたモアレ低減処理を実行することが可能となる。
(本発明の他の実施形態)
本発明は、前述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
例えば、前述の実施形態に示した画像処理装置は、図8に示すようなコンピュータ機能800を有し、そのCPU801により前述の実施形態での動作が実施される。コンピュータ機能800は、図8に示すように、CPU801と、ROM802と、RAM803とを有する。また、操作部(CONS)809のコントローラ(CONSC)805と、表示部としてのディスプレイ(DISP)810のディスプレイコントローラ(DISPC)806とを有する。さらに、ハードディスク(HD)811、及びフレキシブルディスク等の記憶デバイス(STD)812のコントローラ(DCONT)807と、ネットワークインタフェースカード(NIC)808とを有する。それら機能部801、802、803、805、806、807、808は、システムバス804を介して互いに通信可能に接続された構成としている。
CPU801は、ROM802又はHD811に記憶されたソフトウェア、又はSTD812より供給されるソフトウェアを実行することで、システムバス804に接続された各構成部を総括的に制御する。すなわち、CPU801は、前述したような動作を行うための処理プログラムを、ROM802、HD811、又はSTD812から読み出して実行することで、前述の実施形態での動作を実現するための制御を行う。RAM803は、CPU801の主メモリ又はワークエリア等として機能する。CONSC805は、CONS809からの指示入力を制御する。DISPC806は、DISP810の表示を制御する。DCONT807は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、及び前述したような動作を行うための処理プログラム等を記憶するHD811及びSTD812とのアクセスを制御する。NIC808はネットワーク813上の他の装置と双方向にデータをやりとりする。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。