(57)【要約】【課題】画像変形処理のために使用されるフレームバッファのメモリ帯域のピーク値を小さくできるようにすること。【解決手段】分割領域毎縮小率計算部（２０１）は、入力画像を複数に分割した分割領域毎に、画像変形処理のための変形パラメータに基づく縮小率を決定する。分割領域毎縮小部（２０２）は、分割領域毎に決定された縮小率に基づいて、分割領域の画像をそれぞれ縮小して記憶部（２０３）に記憶させる。変形部（２０４）は、記憶部（２０３）に記憶された縮小済みの分割領域の画像に対し、変形パラメータに基づく画像変形処理を行う。【選択図】図２
2018026007.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の複数の分割領域毎に、画像変形処理のための変形パラメータに基づく縮小率を決定する決定手段と、
前記分割領域毎に決定された縮小率に基づいて、前記分割領域の画像をそれぞれ縮小してメモリに記憶させる縮小手段と、
前記メモリに記憶された縮小済みの分割領域の画像に対し、前記変形パラメータに基づく画像変形処理を行う変形手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記分割領域毎にそれぞれの分割領域内で得られる複数の縮小率の最大値を求め、前記最大値の前記縮小率を、前記分割領域毎の縮小率として決定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段は、矩形の前記分割領域の四隅のピクセル座標におけるＸ方向の縮小率及びＹ方向の縮小率の最大値を、前記分割領域に対する縮小率として決定することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記決定手段は、前記変形パラメータに基づく前記分割領域の前記Ｘ方向の縮小率が１を超える場合には前記Ｘ方向の縮小率を１に決定し、前記変形パラメータに基づく前記分割領域の前記Ｙ方向の縮小率が１を超える場合には前記Ｙ方向の縮小率を１に決定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記変形手段は、前記変形パラメータに基づいて、前記メモリに記憶された縮小済みの分割領域のピクセル座標に対応する出力の分割領域のピクセル座標を算出し、前記算出したピクセル座標に基づくピクセルのデータを前記メモリから読み出すことによる前記画像変形処理を行うことを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記変形手段は、前記変形パラメータに基づいて、前記メモリに記憶された縮小済みの矩形の前記分割領域の四隅のピクセル座標に対応する出力の分割領域の四隅のピクセル座標を算出し、前記算出した四隅のピクセル座標を基に補間に用いるピクセル座標を算出し、前記補間に用いるピクセル座標に基づくピクセルのデータを前記メモリから読み出すことによる前記画像変形処理を行うことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記決定手段は、１ピクセル当たりのメモリ帯域上限が所定の上限値に決められているとき、前記分割領域毎にそれぞれの分割領域内での縮小率の最大値と最小値とを求め、前記分割領域毎の縮小率の最小値／最大値が前記所定の上限値を下回る場合には、前記分割領域毎の前記縮小率を小さくして前記メモリ帯域上限を上記所定の上限値以下にすることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記決定手段は、１画面分の画像当たりのメモリ帯域上限が所定の上限値に決められているとき、前記画像変形処理における１画面分の画像当たりのメモリ帯域を算出し、前記１画面分の画像当たりのメモリ帯域がメモリ帯域上限の前記所定の上限値を超える場合には、前記分割領域毎にそれぞれの分割領域内での縮小率を小さくして前記１画面分の画像当たりの前記メモリ帯域上限を前記所定の上限値以下にすることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項９】
前記変形手段は、前記分割領域について前記決定手段により決定された縮小率と、前記変形パラメータとに基づいて、前記分割領域の画像の変形量を決定することを特徴とする請求項１乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
前記決定手段は、前記入力画像を構成する分割領域のうち、一部の分割領域毎に、縮小率を決定し、
前記縮小手段は、前記入力画像を構成する分割領域のうち、一部の分割領域について前記決定手段により決定された縮小率に基づいて、当該分割領域の画像を縮小して前記メモリに記憶させることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
入力画像の複数の分割領域毎に、画像変形処理のための変形パラメータに基づく縮小率を決定するステップと、
前記分割領域毎に決定された縮小率に基づいて、前記分割領域の画像をそれぞれ縮小してメモリに記憶させるステップと、
前記メモリに記憶された縮小済みの分割領域の画像に対し、前記変形パラメータに基づく画像変形処理を行うステップと
を有することを特徴とする画像処理装置の画像処理方法。
【請求項１２】
コンピュータを、請求項１乃至１０の何れか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像変形処理を行う画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
画像変形処理は、例えばフロントプロジェクタの投射位置補正やカメラレンズの収差補正等に使用されている。ただし、これらの画像変形処理では、入力画素の走査順序と出力画素の走査順序の両方を単純な走査順序（例えばラスタ順）にするようなことはできない。このため、画像変形処理では、通常は、フレームバッファを介することで、入力と出力を単純な走査順序にしている。特許文献１では、撮影画像からレンズの歪曲歪みを補正するような画像変形処理を行う際、撮影画像を縮小した縮小画像の入力走査順に従って出力画像の座標を求めて画像変形を行い、それをフレームバッファに書き込むことで画像変形を行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２６７４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、画像変形処理を行う場合、入力画素と出力画素の走査の速度を一定のピクセル／サイクルにすると、フレームバッファへの書き込みと読み出しで必要となるピクセル／サイクルは、画像変形処理の際の縮小率によって変わってくる。なお、ここでは、縮小率＝出力画素数／入力画素数であると定義する。また、拡大率も縮小率と同様に、拡大率＝出力画素数／入力画素数であると定義する。したがって、例えば縮小となるときは縮小率＜１．０であり、一方、拡大となるときは縮小率＞１．０となる。
【０００５】
また、フロントプロジェクタの投射位置補正やカメラレンズの収差補正等に用いる解像度のフレームバッファは容量が大きい。このため、フレームバッファは一般にＤＲＡＭが用いられる。ただし、ＤＲＡＭのメモリ帯域を大きくすることは、コストの大幅な上昇を招くことになる。したがって、画像変形処理を行う際のフレームバッファへの書き込み、読み出しにおけるピクセル／サイクルの最大値を小さくすることが、コスト削減の上で大切になる。
【０００６】
しかしながら、前述した特許文献１に記載の技術の場合、画像変形において例えば画像内の一部分でも拡大される部分がある場合、その拡大される部分に対応するために必要なＤＲＡＭのメモリ帯域のピーク値が大きくなってしまう。このため、ＤＲＡＭへの書き込み、読み出しにおけるピクセル／サイクルの最大値を小さくするができず、コスト削減を実現することが難しい。
【０００７】
そこで、本発明は、画像変形処理のために使用されるフレームバッファのメモリ帯域のピーク値を小さくできるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、入力画像の複数の分割領域毎に、画像変形処理のための変形パラメータに基づく縮小率を決定する決定手段と、前記分割領域毎に決定された縮小率に基づいて、前記分割領域の画像をそれぞれ縮小してメモリに記憶させる縮小手段と、前記メモリに記憶された縮小済みの分割領域の画像に対し、前記変形パラメータに基づく画像変形処理を行う変形手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、画像変形処理のために使用されるフレームバッファのメモリ帯域のピーク値を小さくできるようになる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の画像処理装置の概略的な全体構成を示す図である。
【図２】本実施形態の画像処理装置の主要部の概略構成を示す図である。
【図３】分割領域を表す図である。
【図４】分割領域毎縮小部の出力例を表す図である。
【図５】変形部の機能ブロック図である。
【図６】変形部の出力例を表す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を添付の図面を参照して詳細に説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、本発明は以下の実施形態に限定されるものではない。
【００１２】
＜第１の実施形態＞
図１は、第１の実施形態の画像処理装置の一適用例である投影装置（プロジェクタ）の概略的なハードウェア構成を示すブロック図である。図１に示す投影装置１００は、例えば、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、操作部１０６、投影部１０５、画像入力Ｉ／Ｆ１０４を有して構成されている。
【００１３】
ＣＰＵ１０１は、投影装置１００のシステム制御及び各種画像処理を実行する。ＲＯＭ１０２は、本実施形態に係るプログラムや各種パラメータ等を格納する読み取り専用メモリである。なお、プログラムやパラメータ等は、ＲＯＭ１０２の他に、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、磁気テープ、メモリカード等の記録媒体から供給されてもよいし、通信ネットワークを介して供給されてもよい。ＲＡＭ１０３は、外部から供給されるプログラムや各種データ等を一時記憶する書き換え可能なメモリであり、また、外部から入力された画像データを一時記憶するフレームバッファとしても使用される。本実施形態の場合、ＲＡＭ１０３は例えばＤＲＡＭを含んでいる。
【００１４】
投影部１０５は、画像入力Ｉ／Ｆ１０４により入力されてＲＡＭ１０３に一時記憶された画像データや、ＲＯＭ１０２に格納されている画像データに基づく画像をスクリーンに投影する。操作部１０６は、本実施形態の投影装置１００のユーザ（使用者）からの各種操作に応じた操作情報をＣＰＵ１０１に送る。画像入力Ｉ／Ｆ１０４は、スクリーンに投影される画像に対応する画像データが、例えば外部から入力されるインタフェースである。
【００１５】
図２は、本実施形態の投影装置１００において実行される画像処理（画像変形処理）を実現する概略的な機能ブロックを表す図である。本実施形態の投影装置１００は、画像変形処理を行うための構成として、分割領域毎縮小率計算部２０１（以下、計算部２０１と表記する。）と、分割領域毎縮小部２０２（以下、縮小部２０２と表記する。）と、記憶部２０３と、変形部２０４とを有する。図２に示した計算部２０１、縮小部２０２、変形部２０４は、例えばＣＰＵ１０１が本実施形態に係るプログラムを実行することで実現されるソフトウェア構成でもよいし、少なくとも一部がハードウェア構成により実現されてもよい。例えば、計算部２０１の処理はＣＰＵ１０１により実行され、縮小部２０２と変形部２０４の処理は、ＣＰＵ１０１の制御に基づいて専用のハードウェア（例えばＡＳＩＣ）により実行されるようにしても良い。本実施形態では、それらハードウェア構成とソフトウェア構成を区別せずに説明することとする。図２の記憶部２０３は、図１のＲＡＭ１０３に相当する。
【００１６】
ここで、本実施形態では、説明を簡単にするために、入力画像２２３と出力画像２２４が共に、水平方向（Ｘ方向）のピクセル（画素）数が１０２４ピクセル、垂直方向（Ｙ方向）のピクセル数が７６８ピクセルの、１０２４×７６８ピクセルの画像であるとする。本実施形態では、１０２４×７６８ピクセルの入力画像を、２５６×２５６ピクセルの矩形の領域毎に複数に分割し、それら分割画像（以下、分割領域と表記する。）毎に後述する縮小処理を行い、その縮小済みの分割領域毎に後述する画像変形処理を行う。分割領域は、入力画像２２３の一例である図３に示すような入力画像３００を、例えば水平方向（Ｘ方向）の領域数が"４"で、垂直方向（Ｙ方向）の領域数が"３"となる４×３領域に分割することにより形成される。本実施形態では、各分割領域は、それぞれ座標（ｔｘ，ｔｙ）、０≦ｔｘ＜４、０≦ｔｙ＜３により表される。なお、分割領域のサイズ（水平×垂直のピクセル数で表されるサイズ）は、上述した２５６×２５６ピクセルに限定されず、任意のサイズであってもよい。特に、分割領域のサイズを小さくすれば、入力画像を分割したことで画素（ピクセル）の端数ができてしまうことによる処理効率低下の発生を少なくすることが可能になる。その一方で、フレームバッファへの転送が行われる際には、各分割領域のサイズが小さいと、分割領域毎の転送画素数が少なくなり、メモリ帯域の使用効率が低下してしまうことも考えられる。このため、分割領域のサイズは、それらのバランスを考慮して決定することが望ましい。本実施形態ではこれらのことを考慮した一例として、入力画像３００を４×３領域に分割した例を挙げている。また、本実施形態では、各分割領域の画像サイズが同一となされた例を挙げたが、各分割領域はそれぞれ異なるサイズ（不均一な画像サイズ）となされてもよく、さらに各分割領域の形状は矩形ではなく任意の形状となされてもよい。
【００１７】
また、本実施形態では、１ピクセルは、指定した（Ｘ，Ｙ）座標を中心に、Ｘ−０．５以上でＸ＋０．５未満、Ｙ−０．５以上でＹ＋０．５未満の範囲を占めると定義して説明を行う。１ピクセルの座標の取り方は他の方法もあるが、座標を補正することで対応することができる。
【００１８】
また、本実施形態では、説明の簡略化のため、画像変形処理の一例として、射影変換を挙げて説明するが、例えばカメラレンズの収差を画像処理で補正する場合のような多項式で表された変形にも適用可能である。すなわち、レンズの収差補正の画像処理の場合にも、カメラにより撮像された画像を格子状に区切ってそれぞれ分割領域とし、それら各分割領域に対してそれぞれ画像変形処理を行うようにする。
【００１９】
図２に示した機能ブロックの構成において、入力画像２２３は、図２に示したような入力画像３００に相当する。縮小部２０２は、入力画像２２３を、図２に示したような矩形の複数の分割領域に分割し、計算部２０１にて算出される分割領域毎の縮小率に応じて、それら各分割領域の画像を縮小処理する。図４の画像４００は、図３に示した入力画像３００の各分割領域が、それぞれ縮小率に応じて縮小された縮小済み分割領域４０１の一例を概念的に表した図である。計算部２０１は、変形パラメータ２２１に基づいて、分割領域毎の縮小率を算出して、縮小部２０２と変形部２０４に供給する。変形パラメータ２２１は、例えば、本実施形態のプログラム等により生成される画像変形処理のパラメータであり、具体的には後述するような射影変換の行列で表されるデータである。計算部２０１が変換パラメータに基づいて分割領域毎の縮小率を算出する処理の詳細は後述する。そして、縮小部２０２での縮小処理後の各縮小済み分割領域のデータは、記憶部２０３に記憶される。
【００２０】
なお、縮小部２０２に対する入力画像２２３の入力順序は、例えば、１画像毎のラスタ方式、分割された分割領域の画像毎のラスタ方式、分割領域のサイズより小さな例えば８×８ピクセル毎の入力方式等の、何れの方式による順序であってもよい。本実施形態では、説明を簡単化するために、１画像毎のラスタ方式であるとして説明を行う。また、記憶部２０３に縮小済み分割領域のデータを格納する際の格納方式についても、様々な方式を用いることができる。本実施形態では、図４に示すように、縮小前の各分割領域の左上座標に対し、各縮小済み分割領域の左上座標がそれぞれ一致するように、各縮小済み分割領域のデータが格納されるとして説明する。また、記憶部２０３へのアクセスをなるべく連続させてメモリアクセスの効率化を図る観点から、縮小前の各分割領域の左上座標から縮小済み分割領域のデータを連続して格納するようにしてもよい。このように、記憶部２０３は、縮小部２０２による縮小済み分割領域毎にデータを保持する。
【００２１】
変形部２０４は、記憶部２０３に格納されている縮小済み分割領域毎の画像データに対し、縮小率と変形パラメータとに基づいて決定した変形量による画像変形処理を行う。すなわち、変形部２０４は、変形パラメータに基づく画像変形処理を行う際、記憶部２０３に格納されている縮小済み分割領域毎の画像データが、それぞれ計算部２０１で計算された分割領域毎の縮小率で縮小されていることを考慮した画像変形処理を行う。変形部２０４における画像変形処理の詳細は後述する。変形部２０４にて縮小済み分割領域毎に画像変形処理された後の画像データは出力画像２２４として出力される。
【００２２】
以下、計算部２０１における分割領域毎の縮小率の算出処理の詳細を説明する。
計算部２０１は、決定手段の一例であり、全ての分割領域に対して、以下に示すＸ方向（水平方向）の縮小率、Ｙ方向（垂直方向）の縮小率を算出する。本実施形態の場合、計算部２０１は、分割領域（ｔｘ，ｔｙ）、０≦ｔｘ＜４、０≦ｔｙ＜３に対して、分割領域毎のＸ方向縮小率ｒａｔｉｏＸ（ｔｘ，ｔｙ）とＹ方向縮小率ｒａｔｉｏＹ（ｔｘ，ｔｙ）とを算出する。
【００２３】
先ず、分割領域内で縮小した画像を拡大することによる画質低下が起こらないようにするため、計算部２０１は、分割領域内のＸ方向縮小率及びＹ方向縮小率の最大値を算出する。本実施形態の画像変形処理が射影変換である場合には、例えば分割領域の四隅の何れかの座標における縮小率が、その分割領域内での縮小率の最大値となる。このため、計算部２０１は、分割領域の四隅の座標において、Ｘ方向縮小率及びＹ方向縮小率の最大値を算出する。
【００２４】
このとき、１ピクセルが占める座標を考慮して、計算部２０１は、
左上隅の（Ｘ−０．５，Ｙ−０．５）
右上隅の（Ｘ＋０．５，Ｙ−０．５）
左下隅の（Ｘ−０．５，Ｙ＋０．５）
右下隅の（Ｘ＋０．５，Ｙ＋０．５）
の各座標での縮小率を計算する。例えば図３の左上の分割領域（０，０）を例に挙げた場合、計算部２０１は、左上の分割領域（０，０）に対するＸ方向縮小率とＹ方向縮小率を、下記の座標に対して算出する。すなわち、計算部２０１は、
左上隅の（−０．５，−０．５）
右上隅の（２５５．５，−０．５）
左下隅の（−０．５，２５５．５）
右下隅の（２５５．５，２５５．５）
の各座標に対してＸ方向縮小率とＹ方向縮小率を算出する。
【００２５】
なお、一般的には、例えば分割領域内の縮小率がその分割領域内での縮小率の最大値となる全候補座標（例えば全ピクセルの座標）において、Ｘ方向縮小率及びＹ方向縮小率を算出し、その中の最大値が算出されることになる。これに対し、本実施形態では、前述したように、分割領域の四隅の座標においてＸ方向縮小率及びＹ方向縮小率の最大値を算出している。そして、本実施形態では、分割領域の四隅の座標におけるＸ方向縮小率及びＹ方向縮小率の最大値を、その分割領域に対する縮小率とする。
【００２６】
さらに、本実施形態では、分割領域毎の縮小率は、画像変形処理に応じた値として算出している。本実施形態の場合、射影変換を行う例を挙げているため、計算部２０１は、画像変形処理の変形パラメータとして射影変換を表す行列ｍ１１〜ｍ３３を用い、この射影変換を表す行列ｍ１１〜ｍ３３に基づいて縮小率を算出する。具体的には、計算部２０１は、先ず、射影変換を表す行列ｍ１１〜ｍ３３を用い、下記の式（１）によりＸ方向の縮小率ＸｒａｔｉｏとＹ方向の縮小率Ｙｒａｔｉｏを算出する。
【００２７】
ｚ＝ｍ３１・ｘ＋ｍ３２・ｙ＋ｍ３３
ｄｚ＝１／ｚ
Ｘｒａｔｉｏ＝ｍ１１・ｄｚ−ｍ３１（ｍ１１・ｘ＋ｍ１２・ｙ＋ｍ１３）ｄｚ2
Ｙｒａｔｉｏ＝ｍ２２・ｄｚ−ｍ３２（ｍ２１・ｘ＋ｍ２２・ｙ＋ｍ２３）ｄｚ2
・・・式（１）
【００２８】
そして、計算部２０１は、分割領域内の四隅座標におけるＸ方向縮小率ＸｒａｔｉｏとＹ方向の縮小率Ｙｒａｔｉｏの最大値を求めて、それを分割領域の縮小率とする。
【００２９】
さらに、計算部２０１は、フレームバッファ書き込み時のメモリ帯域を削減するため、分割領域内のＸ方向縮小率が"１"を超えている場合、すなわち拡大となる場合には、Ｘ方向縮小率を"１"とする。これにより、縮小部２０２では、Ｘ方向の拡大が行われないことになる。同様に、計算部２０１は、分割領域内のＹ方向縮小率が"１"を超えている場合もＹ方向縮小率を"１"としてＹ方向の拡大が行われないようにする。このように、計算部２０１は、分割領域毎のＸ方向縮小率、Ｙ方向縮小率を算出する。
【００３０】
次に、縮小部２０２における分割領域毎の縮小処理の詳細を説明する。
縮小部２０２は、入力画像２２３の各ピクセルに対する入力画素座標を算出し、その入力画素座標が含まれる分割領域を算出して、その分割領域に対して計算部２０１で算出された縮小率に応じた縮小処理を行う。そして、縮小部２０２は、その縮小処理により生成した縮小済み分割領域毎の画像データを、記憶部２０３に出力して記憶させる。
【００３１】
入力画素座標を（ｓｒｃｘ，ｓｒｃｙ）で表し、本実施形態のようにラスタ順の入力が行われる場合、縮小部２０２は、入力画像２２３の各ピクセルに対して、ラスタ順に０≦ｓｒｃｘ＜１０２４、０≦ｓｒｃｙ＜７６８の座標を算出する。
【００３２】
さらに、入力画素座標（ｓｒｃｘ，ｓｒｃｙ）が含まれる分割領域の算出では、縮小部２０２は、入力画素座標（ｓｒｃｘ，ｓｒｃｙ）がどの分割領域（ｔｘ，ｔｙ）に含まれるかを算出する。本実施形態の場合、分割領域は２５６×２５６ピクセルであるため、分割領域（ｔｘ，ｔｙ）は、式（２）により算出できる。
【００３３】
（ｆｌｏｏｒ（（ｓｒｃｘ＋０．５）／２５６），ｆｌｏｏｒ（（ｓｒｃｙ＋０．５）／２５６））                                    ・・・式（２）
なお、式（２）中のｆｌｏｏｒ（ｘ）は、一般に床関数と呼ばれるものであり、実数ｘに対してｘ以下の最大の整数を返す関数である。
【００３４】
次に、縮小部２０２は、分割領域に対して計算部２０１で算出された縮小率に応じた縮小処理を行う。このときの縮小処理のアルゴリズムには、様々なアルゴリズムを使用することができる。縮小処理のアルゴリズムは、例えば、０次ホールド法、バイリニア法、バイキュービック法、Ｌａｎｃｚｏｓ法などの各種アルゴリズムを使用することができる。
【００３５】
このような縮小処理により、入力画素座標（ｓｒｃｘ，ｓｒｃｙ）は、式（３）で表されるような分割領域（ｔｘ，ｔｙ）毎の画像内の座標に変換される。
（（（（ｓｒｃｘ＋０．５）ｍｏｄ２５６）−０．５）・ｒａｔｉｏＸ（ｔｘ，ｔｙ），（（（ｓｒｃｙ＋０．５）ｍｏｄ２５６）−０．５）・ｒａｔｉｏＹ（ｔｘ，ｔｙ））
・・・式（３）
なお、数式中のｍｏｄは剰余を表すもので、例えばＲ＝Ａ  ｍｏｄ  Ｂとした時、ＡをＢで割ったときの剰余がＲで表される。また、剰余Ｒは０≦Ｒ＜Ｂの関係を満たすとする。
【００３６】
次に、変形部２０４の構成と射影変換の詳細を説明する。
変形部２０４は、図５に示すようにｓｒｃ座標算出部５０５（以下、座標算出部５０５と表記する。）、ピクセル補間座標算出部５０６（以下、補間座標算出部５０６と表記する。）、ピクセル補間部５０７を有して構成されている。
座標算出部５０５は、出力画像２２４として出力される走査順にｄｓｔ座標を生成し、そのｄｓｔ座標（ｄｓｔｘ，ｄｓｔｙ）に対するｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）を座標変換によって求める。なお、ｓｒｃ座標は入力される縮小済み分割領域における四角形の四つの頂点座標であり、ｄｓｔ座標は入力される縮小済み分割領域の四つの頂点座標に対応する出力の分割領域における四つの頂点座標である。ここで、本実施形態で挙げている射影変換の場合、この座標変換は、下記式（４）にて算出することができる。なお、式（４）中のｍ-1１１〜ｍ-1３３は、前述した射影変換の行列ｍ１１〜ｍ３３に対する逆行列である。
【００３７】
ｓｒｃｚ＝ｍ-1３１・ｄｓｔｘ＋ｍ-1３２・ｄｓｔｙ＋ｍ-1３３
ｓｒｃｘ＝（ｍ-1１１・ｄｓｔｘ＋ｍ-1１２・ｄｓｔｙ＋ｍ-1１３）／ｓｒｃｚ
ｓｒｃｙ＝（ｍ-1２１・ｄｓｔｘ＋ｍ-1２２・ｄｓｔｙ＋ｍ-1２３）／ｓｒｃｚ
・・・式（４）
【００３８】
補間座標算出部５０６は、ｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）からピクセル補間に用いるピクセルの座標をｓｒｃ座標上で算出する。ｓｒｘ座標を算出する際には、記憶部２０３に格納されている分割領域毎の画像が、それぞれ計算部２０１で計算された分割領域毎の縮小率で縮小処理されていることを考慮する。このため、本実施形態において、補間座標算出部５０６は、各ピクセル座標を縮小後のピクセル座標に座標変換してから、縮小前のピクセル座標に座標逆変換してピクセル補間座標を算出する。
【００３９】
先ず、補間座標算出部５０６のｓｒｃ周辺ピクセル座標算出部５０８（以下、周辺座標算出部５０８と表記する。）は、ｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）から縮小前のピクセルのｓｒｃ座標を求める。ここで、本実施形態で説明するピクセル補間部５０７ではｓｒｃ座標を囲む４点のピクセルのうち最大３点の内挿によって補間を行う。このため、周辺座標算出部５０８は、下記の４点の座標をｓｒｃ周辺ピクセル座標（ｓｒｃｐｘ［ｉ］，ｓｒｃｐｙ［ｉ］），ｉ＝０〜３とする。
ｉ＝０  （ｆｌｏｏｒ（ｓｒｃｘ−０．５），ｆｌｏｏｒ（ｓｒｃｙ−０．５））
ｉ＝１  （ｆｌｏｏｒ（ｓｒｃｘ＋０．５），ｆｌｏｏｒ（ｓｒｃｙ−０．５））
ｉ＝２  （ｆｌｏｏｒ（ｓｒｃｘ―０．５），ｆｌｏｏｒ（ｓｒｃｙ＋０．５））
ｉ＝３  （ｆｌｏｏｒ（ｓｒｃｘ＋０．５），ｆｌｏｏｒ（ｓｒｃｙ＋０．５））
【００４０】
次に、縮小後ｓｒｃ周辺ピクセル座標算出部５０９（以下、縮小後周辺座標算出部５０９と表記する。）は、補間に用いるピクセルの座標を算出する。具体的には、縮小後周辺座標算出部５０９は、ｓｒｃ周辺ピクセル座標（ｓｒｃｐｘ［ｉ］，ｓｒｃｐｙ［ｉ］），ｉ＝０〜３のそれぞれを分割領域毎に縮小する座標変換を行う。これにより、縮小後のピクセル座標（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］），ｉ＝０〜３が得られる。
【００４１】
また縮小後周辺座標算出部５０９は、ピクセル座標（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］），ｉ＝０〜３のうちの２点が、縮小により同一座標になる場合、ｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）を縮小後のピクセル座標（ｓｒｃｒｏｘ，ｓｒｃｒｏｙ）に変換する。そして、縮小後周辺座標算出部５０９は、縮小後のピクセル座標（ｓｒｃｒｏｘ，ｓｒｃｒｏｙ）が、下記式（５）の関係を満たしているか否か確認する。
ｓｒｃｒｘ［０］  ＜＝  ｓｒｃｒｏｘかつｓｒｃｒｙ［０］＜＝ｓｒｃｒｏｙ
ｓｒｃｒｘ［１］  ＞＝  ｓｒｃｒｏｘかつｓｒｃｒｙ［１］＜＝ｓｒｃｒｏｙ
ｓｒｃｒｘ［２］  ＜＝  ｓｒｃｒｏｘかつｓｒｃｒｙ［２］＞＝ｓｒｃｒｏｙ
ｓｒｃｒｘ［３］  ＞＝  ｓｒｃｒｏｘかつｓｒｃｒｙ［３］＞＝ｓｒｃｒｏｙ
・・・式（５）
【００４２】
式（５）の関係を満たしていない場合は、縮小後周辺座標算出部５０９は、式（５）の関係を満たさないピクセル座標（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］）を、式（５）の関係を満たすまで＋１、もしくは−１する。すなわち、縮小後周辺座標算出部５０９は、（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］），ｉ＝０〜３の４点が（ｓｒｃｒｏｘ，ｓｒｃｒｏｙ）を外側に囲む座標になるまで座標を広げる。
【００４３】
更に、縮小前ｓｒｃ周辺ピクセル座標算出部５１０（以下、縮小前周辺座標算出部５１０と表記する。）は、ピクセル補間部５０７での補間係数算出のため縮小後のピクセル座標を求める。具体的には、縮小前周辺座標算出部５１０は、ピクセル補間部５０７での補間係数算出のため縮小後のピクセル座標（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］），ｉ＝０〜３のそれぞれを分割領域毎に縮小する座標逆変換を行う。これにより、縮小前の座標（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］），ｉ＝０〜３が得られる。
【００４４】
そして、ピクセル補間部５０７は、縮小前の座標（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］），ｉ＝０〜３と、それに対応する（ｓｒｃｒｘ［ｉ］，ｓｒｃｒｙ［ｉ］），ｉ＝０〜３におけるピクセル値［ｉ］，ｉ＝０〜３とから、補間したピクセル値を算出する。具体的には、ピクセル補間部５０７は、先ず、補間に用いるピクセルを選択して、そのピクセルのデータを記憶部２０３から読み出す。ここで、ピクセル補間の手法の一例として、バイリニア補間では４点のピクセルを用いるが、一般には（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］，ピクセル値［ｉ］）の３次元座標４点は同一平面上にない。そこで本実施形態の場合、ピクセル補間部５０７は、縮小前の座標（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］），ｉ＝０〜３と、座標（ｓｒｃｘ，ｓｒｃｙ）との間の距離ｄ［ｉ］，ｉ＝０〜３を算出し、距離ｄ［ｉ］が小さいものから３点のピクセルを決定する。そして、ピクセル補間部５０７は、その３点のピクセルのデータを記憶部２０３から読み出して、それらデータを用いて補間を行う。距離ｄ［ｉ］は、本実施形態では例えば√（（ｓｒｃｄｘ［ｉ］−ｓｒｃｘ）2＋（ｓｒｃｄｙ［ｉ］−ｓｒｃｙ）2）で求めるものとする。
【００４５】
また、ピクセル補間部５０７は、距離ｄ［ｉ］＝０となるものがある場合には、縮小前の座標（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］）が、ｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）と同じであるため、補間後のピクセル値をピクセル値［ｉ］とする。一方、それ以外の場合（距離ｄ［ｉ］＝０となるものがない場合）、ピクセル補間部５０７は、例えば距離ｄ［ｉ］が小さいものから３点を選び、（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］，ピクセル値［ｉ］）の３次元座標４点からなる３次元平面の方程式を求める。そして、ピクセル補間部５０７は、この方程式でｓｒｃ座標（ｓｒｃｘ，ｓｒｃｙ）におけるピクセル値を算出することで、補間後のピクセル値を算出する。
【００４６】
なお、前述の例は、縮小前の座標（ｓｒｃｄｘ［ｉ］，ｓｒｃｄｙ［ｉ］）が異なる分割領域（ｔｘ，ｔｙ）にあるときに一般に用いることができるが、同一の分割領域（ｔｘ，ｔｙ）にあるときは、その４点に対してバイリニア補間を行うこともできる。
【００４７】
図６は、変形部２０４による画像変形処理の出力画像６００の一例を示す図である。出力画像６００は、図２の出力画像２２４に相当する。図６に示すように、画像変形処理後の出力画像６００は、分割領域が各々変形されて合わされた変形画像６０１となる。
【００４８】
以上説明したように、第１の実施形態の投影装置１００においては、画像変形処理のための変形パラメータに基づいて分割領域毎に縮小率を算出し、その分割領域毎の縮小率で、各分割領域を縮小してフレームバッファ（記憶部２０３）に書き込む。すなわち、フレームバッファには、分割領域毎の縮小率で縮小された各縮小済み分割領域の画像データが格納される。したがって、例えば１画面分の画像全体を縮小して格納するような場合と比較して、分割領域毎に縮小した画像データを格納する場合の方が、メモリ帯域のピーク値が小さくなり、メモリ帯域の大きなフレームバッファを必要とせず、コスト削減が可能となる。また、フレームバッファに格納される縮小済み分割領域毎の画像データは、画像変形処理の変形パラメータに基づく分割領域毎の縮小率で縮小された画像データとなされている。このため、画像変形処理が縮小であっても、また例えば縮小した画像を拡大する場合であっても、画質低下が非常に少ない画像変形処理が可能となる。このように、第１の実施形態によれば、画像変形が拡大，縮小の何れであってもメモリ帯域のピーク値を小さくでき、コスト削減を実現可能であるとともに画質劣化も非常に少ない。
【００４９】
＜第２の実施形態＞
次に、第２の実施形態について説明する。第２の実施形態の構成は前述した図１、図２と同様であるためそれら構成の図示は省略する。以下の説明では、第１の実施形態とは異なる部分についてのみ説明する。
【００５０】
第２の実施形態では、変形部２０４での１ピクセル当たりのメモリ帯域上限が例えば所定の上限値Ｍ＿ＲＥＡＤに決められている場合における、計算部２０１での計算方法について説明する。第２の実施形態では、１［ピクセル／サイクル］で出力する画像処理装置において、所定の上限値Ｍ＿ＲＥＡＤの単位は［ピクセル／サイクル］であるとして説明する。
【００５１】
ここで、変形部２０４での１ピクセル当たりのメモリ帯域を小さくするためには、計算部２０１から変形部２０４に送られる縮小率の最小値を大きくすればよい。また、変形部２０４での縮小率の最小値と、分割領域内の縮小率の最小値と、分割領域内の縮小率の最大値とは、下記式（６）の関係を有する。
変形部での縮小率の最小値＝分割領域内の縮小率の最小値／最大値  ・・・式（６）
【００５２】
このため、第２の実施形態の場合、計算部２０１は、分割領域毎のＸ方向縮小率の最小値ｒａｔｉｏＸｍｉｎ（ｔｘ，ｔｙ）とＹ方向縮小率の最小値ｒａｔｉｏＹｍｉｎ（ｔｘ，ｔｙ）とを求める。そして、計算部２０１は、分割領域毎のＸ方向縮小率の最小値ｒａｔｉｏＸｍｉｎ（ｔｘ，ｔｙ）とＹ方向縮小率の最小値ｒａｔｉｏＹｍｉｎ（ｔｘ，ｔｙ）と上限値Ｍ＿ＲＥＡＤとが、下記式（７）に示す不等式の関係を満たすようにする。
（ｒａｔｉｏＸｍｉｎ（ｔｘ，ｔｙ）×ｒａｔｉｏＹｍｉｎ（ｔｘ，ｔｙ））／（ｒａｔｉｏＸ（ｔｘ，ｔｙ）×ｒａｔｉｏＹ（ｔｘ，ｔｙ））＜１／Ｍ＿ＲＥＡＤ
・・・式（７）
【００５３】
ただし、この式（７）の不等式を満たすｒａｔｉｏＸ（ｔｘ，ｔｙ）、ｒａｔｉｏＹ（ｔｘ，ｔｙ）は無数に存在する。この場合、例えば下記式（８）の計算を行うことで、メモリ帯域上限を、上限値以下（Ｍ＿ＲＥＡＤ以下）にすることができる。
ｒａｔｉｏＸ（ｔｘ，ｔｙ）＝√（Ｍ＿ＲＥＡＤ）×ｒａｔｉｏＸｍｉｎ（ｔｘ，ｔｙ）
ｒａｔｉｏＹ（ｔｘ，ｔｙ）＝√（Ｍ＿ＲＥＡＤ）×ｒａｔｉｏＹｍｉｎ（ｔｘ，ｔｙ）                                                          ・・・式（８）
【００５４】
このように、第２の実施形態においては、計算部２０１は、分割領域毎の縮小率の計算の際、変形部２０４での分割領域毎の縮小率＝縮小率の最小値／縮小率の最大値が１／Ｍ＿ＲＥＡＤを下回る場合、分割領域毎の縮小率を小さくする。したがって、第２の実施形態によれば、メモリ帯域のピーク値を上限値以下（Ｍ＿ＲＥＡＤ以下）にすることができる。これにより、第２の実施形態によれば、画像変形が拡大，縮小の何れであってもメモリ帯域のピーク値が小さく、また例えば、縮小した画像を拡大することによる画質低下も生じない画像処理を実現可能である。
【００５５】
＜第３の実施形態＞
次に、第３の実施形態について説明する。第３の実施形態の構成は前述した図１、図２と同様であるためそれら構成の図示は省略する。以下の説明では、第１の実施形態とは異なる部分についてのみ説明する。
第３の実施形態では、変形部２０４での１画面分に相当する画像当たり（以下、１画面当たりと表記する。）のメモリ帯域上限が例えば上限値Ｍ＿ＲＥＡＤに決められている場合における、計算部２０１での計算方法について説明する。第３の実施形態では、１画面当たりの上限値Ｍ＿ＲＥＡＤの単位は［ピクセル］であるとして説明する。
【００５６】
ここで、変形部２０４での１画面当たりのメモリ帯域を上限値以下（Ｍ＿ＲＥＡＤ以下）にするためには、縮小部２０２が出力するピクセル総数を上限値以下（Ｍ＿ＲＥＡＤ以下）にすればよい。本実施形態では、説明を簡単にするため、上限値Ｍ＿ＲＥＡＤ以下にするために、分割領域毎のＸ方向縮小率ｒａｔｉｏＸ（ｔｘ，ｔｙ）とＹ方向縮小率ｒａｔｉｏＹ（ｔｘ，ｔｙ）とを、それぞれｋ倍（ｋ≦１．０）して減らす例を挙げる。なお、分割領域毎のピクセル数を減らす方法はこの例に限定されるものではない。
【００５７】
第３の実施形態の場合、計算部２０１は、先ず、分割領域毎のピクセル数に、分割領域毎のＸ方向縮小率ｒａｔｉｏＸ（ｔｘ，ｔｙ）とＹ方向縮小率ｒａｔｉｏＹ（ｔｘ，ｔｙ）とを乗ずることにより、縮小部２０２が出力するピクセル数を算出する。そして、計算部２０１は、算出したピクセル数を全ての分割領域について合計したものを、合計上限値Ｍ＿ＲＥＡＤ＿ＡＬＬとする。
【００５８】
また、上限値Ｍ＿ＲＥＡＤ以下にするために分割領域毎のＸ方向縮小率ｒａｔｉｏＸ（ｔｘ，ｔｙ）とＹ方向縮小率ｒａｔｉｏＹ（ｔｘ，ｔｙ）にそれぞれ乗ずる係数を例えばｋ（ｋ＜１．０）としたとき、係数ｋは式（９）の関係を満たす。
ｋ2×Ｍ＿ＲＥＡＤ＿ＡＬＬ≦Ｍ＿ＲＥＡＤ            ・・・式（９）
【００５９】
さらに、計算部２０１は、式（９）の不等式を解いて、式（１０）の関係を満たす係数ｋを選ぶ。
ｋ≦√（Ｍ＿ＲＥＡＤ／Ｍ＿ＲＥＡＤ＿ＡＬＬ）        ・・・式（１０）
そして、計算部２０１は、式（１１）に示すように、その係数ｋ（例えばｋ＝√（Ｍ＿ＲＥＡＤ／Ｍ＿ＲＥＡＤ＿ＡＬＬ））を、分割領域毎のＸ方向縮小率ｒａｔｉｏＸ（ｔｘ，ｔｙ）とＹ方向縮小率ｒａｔｉｏＹ（ｔｘ，ｔｙ）にそれぞれ乗ずる。これにより、１画面当たりのメモリ帯域上限が上限値Ｍ＿ＲＥＡＤ以下になされる。
ｒａｔｉｏＸ（ｔｘ，ｔｙ）×ｋ、ｒａｔｉｏＹ（ｔｘ，ｔｙ）×ｋ・・・式（１１）
【００６０】
上述したように、第３の実施形態では、計算部２０１は、分割領域毎の縮小率の計算の際に、変形部２０４での１画面当たりのメモリ帯域を算出する。そして、計算部２０１は、１画面当たりのメモリ帯域がメモリ帯域上限である上限値Ｍ＿ＲＥＡＤを超える場合には、分割領域毎の縮小率を小さくする。したがって、第３の実施形態によれば、１画面当たりのメモリ帯域上限を、上限値Ｍ＿ＲＥＡＤ以下にすることができる。これにより、第３の実施形態によれば、画像変形が拡大，縮小の何れであってもメモリ帯域のピーク値が小さく、また例えば、縮小した画像を拡大することによる画質低下が生じない画像処理を実現可能である。
【００６１】
なお上述の各実施形態では、入力画像を構成する複数の分割領域毎に縮小率を決定し、当該複数の分割領域をそれぞれ縮小してメモリに記憶させる構成を中心に説明したが、この形態に限られない。すなわち、入力画像を構成する複数の分割領域のうち、少なくとも一部の分割領域について縮小して、当該縮小後の分割領域の画像データをメモリに記憶させても良い。この場合、典型的には、縮小されなかった分割領域の画像データも、メモリに記憶される。そして、メモリに記憶された縮小済み分割画像データと、未縮小の分割画像データとに基づいて、変形処理後の画像を生成することも可能である。
【００６２】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６３】
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６４】
２０１  分割領域毎縮小率計算部、２０２  分割領域毎縮小部、２０３  記憶部、２０４  変形部、５０５  ｓｒｃ座標算出部、５０６  ピクセル補間座標算出部、５０７  ピクセル補間部、５０８  ｓｒｃ周辺ピクセル座標算出部、５０９  縮小後ｓｒｃ周辺ピクセル座標算出部、５１０  縮小前ｓｒｃ周辺ピクセル座標算出部
【図１】
2018026007.tif 000003
【図２】
2018026007.tif 000004
【図３】
2018026007.tif 000005
【図４】
2018026007.tif 000006
【図５】
2018026007.tif 000007
【図６】
2018026007.tif 000008