(57)【要約】【課題】  より高い精度で画像変形行うための技術を提供すること。【解決手段】  入力画像に画像変形処理を行うことで該入力画像上の指定画素位置が写像される出力画像上の画素位置を求める（第１の演算）。画素サイズを有する矩形領域を矩形画素領域とし、入力画像に画像変形処理を行うことで指定画素位置の周辺画素位置における矩形画素領域が写像される出力画像上の写像領域を求める。第１の演算で求めた画素位置を中心とする矩形画素領域内における該写像領域に基づいて、指定画素位置に対する許容誤差範囲を求める。画像変形処理に関する指定画素位置の誤差が許容誤差範囲に収まるように、画像変形処理で用いるパラメータを調整する。【選択図】  図１
2015197862.tif 000002
【特許請求の範囲】
【請求項１】
入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置であって、
前記入力画像に対して前記画像変形処理を行うことで該入力画像上の指定画素位置が写像される前記出力画像上の画素位置を求める第１の演算手段と、
画素サイズを有する矩形領域を矩形画素領域とし、前記入力画像に対して前記画像変形処理を行うことで前記指定画素位置の周辺画素位置における矩形画素領域が写像される前記出力画像上の写像領域を求め、前記第１の演算手段が求めた画素位置を中心とする矩形画素領域内における該写像領域に基づいて、前記指定画素位置に対する許容誤差範囲を求める第２の演算手段と、
前記画像変形処理に関する前記指定画素位置の誤差が前記許容誤差範囲に収まるように、前記画像変形処理で用いるパラメータを調整する調整手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記第２の演算手段は、前記第１の演算手段が求めた画素位置と、該画素位置を中心とする矩形画素領域内における該写像領域と、の間の距離を前記許容誤差範囲として求めることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記調整手段は、前記入力画像上のそれぞれの指定画素位置の誤差が、前記第２の演算手段が該それぞれの指定画素位置について求めた許容誤差範囲のうち最も小さい許容誤差範囲に収まるように、前記パラメータを調整することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記調整手段は、前記画像変形処理で用いるパラメータのうち定数項として扱われるパラメータを調整することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記指定画素位置は、前記入力画像の四隅の画素位置であることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置が行う画像処理方法であって、
前記画像処理装置の第１の演算手段が、前記入力画像に対して前記画像変形処理を行うことで該入力画像上の指定画素位置が写像される前記出力画像上の画素位置を求める第１の演算工程と、
前記画像処理装置の第２の演算手段が、画素サイズを有する矩形領域を矩形画素領域とし、前記入力画像に対して前記画像変形処理を行うことで前記指定画素位置の周辺画素位置における矩形画素領域が写像される前記出力画像上の写像領域を求め、前記第１の演算工程で求めた画素位置を中心とする矩形画素領域内における該写像領域に基づいて、前記指定画素位置に対する許容誤差範囲を求める第２の演算工程と、
前記画像処理装置の調整手段が、前記画像変形処理に関する前記指定画素位置の誤差が前記許容誤差範囲に収まるように、前記画像変形処理で用いるパラメータを調整する調整工程と
を備えることを特徴とする画像処理方法。
【請求項７】
コンピュータを、請求項１乃至５の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像変形技術に関するものである。
【背景技術】
【０００２】
画像変形を行う画像処理装置の多くは以下の様に処理をおこなう。まず、入力画素を１画面分メモリに記憶する。次に、出力画素の走査順に出力画素の座標値から入力画素での座標値を座標変換の逆変換によって算出する。さらに、逆変換で得られた入力画素の座標の整数部を用いて入力画素の近傍の画素をメモリから読み出し、近傍の画素と入力画素の座標の小数部とを用いて補間計算によって出力画素の値を決定する操作を繰り返す。これらの操作により画像変形を行う画像処理を実現している。
【０００３】
一方、必要なメモリ帯域のピーク値を減らすことができる画像変形を行う画像処理装置では以下の様に処理を行う。走査順に入力される入力画素に対して座標変換によって出力座標を算出する。次に、出力座標の整数部からメモリの格納先アドレスを算出する。さらに、出力座標の整数部を座標変換の逆変換により入力画像中の座標を求める。逆変換により求めた座標の整数部が元々の入力画素の座標に一致するときに、入力画素とその近傍の画素と、座標変換の逆変換によって求めた座標値の小数部と、を用いて出力する画素値を補完計算によって求める。この画素値を先に求めた格納先アドレスに格納する。
【０００４】
上記の座標変換や、座標変換の逆変換（以降、これらをまとめて座標計算と呼ぶ）は、指定する変形の形状に近くするため、また、補間計算のためになるべく高い演算精度で演算を行う方がよい。しかしながら、画像変形を行う際に射影変換を行うとすれば、座標計算で高い精度の加算、乗算、除算が必要である。このような座標計算を行う際、ハードウェアであれば回路量や動作周波数の問題、ソフトウェアであれば処理性能の問題で十分な演算精度が得られないことがある。この問題に対して、特許文献１では、実施例の２で高精度な座標計算を行う際に着目画素付近で近似計算する方法を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−１４９９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の方式では、近似計算であるために高解像度の画像や変形が大きい画像変形を高い精度で演算することが難しいという問題がある。
【０００７】
本発明はこのような問題に鑑みてなされたものであり、より高い精度で画像変形行うための技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一様態は、入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置であって、前記入力画像に対して前記画像変形処理を行うことで該入力画像上の指定画素位置が写像される前記出力画像上の画素位置を求める第１の演算手段と、画素サイズを有する矩形領域を矩形画素領域とし、前記入力画像に対して前記画像変形処理を行うことで前記指定画素位置の周辺画素位置における矩形画素領域が写像される前記出力画像上の写像領域を求め、前記第１の演算手段が求めた画素位置を中心とする矩形画素領域内における該写像領域に基づいて、前記指定画素位置に対する許容誤差範囲を求める第２の演算手段と、前記画像変形処理に関する前記指定画素位置の誤差が前記許容誤差範囲に収まるように、前記画像変形処理で用いるパラメータを調整する調整手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、より高い精度で画像変形行うための技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置の機能構成例を示すブロック図。
【図２】出力座標算出部１０６のより詳細な機能構成例を示すブロック図。
【図３】出力画素周辺座標生成部２０３のより詳細な機能構成例を示すブロック図。
【図４】基準矩形領域を示す図。
【図５】変形パラメータ算出部１０７が行う処理のフローチャート。
【図６】ステップＳ４０５における処理の詳細を示すフローチャート。
【図７】ステップＳ４１３の処理を説明する図。
【図８】サブ領域判定部２０７の動作の一例を説明するための図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１２】
［第１の実施形態］
本実施形態では、入力画像に対して画像変形を行うことで出力画像を生成する技術において、この画像変形がより高精度に行われるように、該画像変形に用いるパラメータを調整する技術の一例について説明する。
【００１３】
また、本実施形態では、画像変形の一例として、射影変換を行う場合について説明する。しかし、画素位置（座標）の座標変換とその逆変換が存在するのであれば、射影変換以外の幾何変換にも適用することができる。
【００１４】
先ず、本実施形態に係る画像処理装置の機能構成例について、図１のブロック図を用いて説明する。画像処理装置には、画像変形の対象となる画像（入力画像）が入力されるのであるが、本実施形態ではこの入力画像が画素単位で入力されるものとして説明する。しかし、入力画像をどのようにして画像処理装置に入力するのかについては特に限定するものではない。
【００１５】
画像処理装置に入力された入力画素の画素値（若しくは画像処理装置内のメモリから読み出された画素値）は、入力画素値１２１として入力画素記憶部１０１に格納されると共に、出力座標算出部１０６にも入力される。
【００１６】
画素補間処理部１０２は、入力画素に対応する出力画像上の画素の画素値を求める為に必要な画素（入力画素の周辺画素位置における画素）の画素値を入力周辺画素値１２２として入力画素記憶部１０１から読み出す。更に画素補間処理部１０２は、入力画素について出力座標算出部１０６が求めた各画素の画素位置（ｘ座標値とｙ座標値）の小数部１２７を、出力座標算出部１０６から取得する。そして画素補間処理部１０２は、読み出した入力周辺画素値１２２と、取得した各画素の画素位置の小数部１２７と、を用いて補間処理を行い、入力画素に対応する出力画像上の画素の画素値を求める。
【００１７】
補間処理には様々な補間技術を適用することができるが、例えば、バイリニア補間を行う場合、入力画素を含む２×２ピクセルからバイリニア補間を行い、補間された画素を出力する。また、バイキュービック補間を行う場合、入力画素を含む４×４ピクセルからバイキュービック補間を行い、補間された画素を出力する。
【００１８】
そして画素補間処理部１０２は、求めた画素値を入力補間画素値１２３としてメモリ書き込み部１０３に対して送出する。
【００１９】
メモリ書き込み部１０３は、出力座標算出部１０６から「入力画素に対応する出力画像上の画素の画素位置の整数部１２８」を受け取り、受け取った整数部１２８で表される画素位置に対応する記憶部１０４内のアドレスを特定する。そしてメモリ書き込み部１０３は、画素補間処理部１０２から受け取った入力補間画素値１２３を書き込み画素値１２４として、この特定したアドレスに格納する。
【００２０】
ランダムなアドレスに対する書き込みは低速である。しかし、連続するメモリアドレスへの書き込みが高速であるＤＲＡＭのようなメモリを記憶部１０４として用いる場合、メモリ書き込み部１０３内で入力補間画素値１２３のバッファリングを行う。そして、複数の入力補間画素値１２３をまとめて記憶部１０４に書き出すようにする。
【００２１】
メモリ読み出し部１０５は、記憶部１０４に格納されている射影変換済みの画像の各画素の画素値（読み出し画素値１２５）を順次読み出し、出力画素値１２６として出力する。出力する順序については特に限定するものではないが、ラスタ順や縦方向を主走査とする方式や、タイルに分割してタイル毎に読み出しを行う方法などが考えられる。
【００２２】
次に、出力座標算出部１０６のより詳細な機能構成例について、図２のブロック図を用いて説明する。入力画素座標生成部２０１は、入力画素値１２１を受け取ると、この入力画素の入力画像上（入力画像中）における画素位置を求める。例えば、入力画素値１２１の中にＶＳＹＮＣ、ＨＳＹＮＣ信号が含まれているとする。この場合、入力画素座標生成部２０１はＶＳＹＮＣを受けると、Ｙ座標を０にリセットする。また入力画素座標生成部２０１は、ＨＳＹＮＣを受けると、Ｘ座標を０にリセットすると共に、前回のＨＳＹＮＣ信号を受けたときから画素値が入力されるとＹ座標を＋１する。その後、画素値が入力されるたびにＸ座標を＋１する。そして入力画素座標生成部２０１は、このようにしてカウントしたＸ座標、Ｙ座標をセットにして、入力画素座標値２２１として座標変換部２０２及び入力座標比較部２０５に対して送出する。なお、入力画素値１２１に入力画素の画素位置が含まれている場合には、この画素位置をそのまま入力画素座標値２２１として、座標変換部２０２及び入力座標比較部２０５に対して送出する。
【００２３】
座標変換部２０２は、変形パラメータ算出部１０７から送出された座標変換パラメータ１２９によって規定される射影変換用のマトリクスを用いて、入力画素座標値２２１に対する射影変換を行い、射影変換後の座標値を出力画素座標値２２２として求める。このマトリクスは、ｍ１１〜ｍ３３（座標変換パラメータ１２９）を成分とする３×３の行列で表される。この行列を用いて入力画素座標値２２１（ｘｉ，ｙｉ）に対する射影変換を行うことで、この入力画素座標値２２１（ｘｉ，ｙｉ）が写像される画素座標位置である出力画素座標値２２２（ｘｏ，ｙｏ）を求める。
【００２４】
入力画素座標値２２１（ｘｉ，ｙｉ）が写像される画素座標位置である出力画素座標値２２２（ｘｏ，ｙｏ）を求めるための計算式は以下の通りである。ここでは、除算回数を減らす為に１／ｚｏ０を求めてからｘｏ０，ｙｏ０に乗ずる計算を行っているが、直接除算を行うこともできる。
【００２５】
ｘｏ０＝ｍ１１・ｘｉ＋ｍ１２・ｙｉ＋ｍ１３
ｙｏ０＝ｍ２１・ｘｉ＋ｍ２２・ｙｉ＋ｍ２３
ｚｏ０＝ｍ３１・ｘｉ＋ｍ３２・ｙｉ＋ｍ３３
ｄｚｏ０＝１／ｚｏ０
ｘｏ＝ｘｏ０・ｄｚｏ０
ｙｏ＝ｙｏ０・ｄｚｏ０
そして座標変換部２０２は、このようにして求めた出力画素座標値２２２（ｘｏ、ｙｏ）を、後段の出力画素周辺座標生成部２０３に対して送出する。
【００２６】
出力画素周辺座標生成部２０３は、ｘｏの小数部に０．５を加えた値の小数部が既定値以上であるか否か及び／又はｙｏの小数部に０．５を加えた値の小数部が既定値以上であるか否かの組み合わせに対して予め設定された複数の参照画素位置を取得する。
【００２７】
出力画素周辺座標生成部２０３のより詳細な機能構成例について、図３のブロック図を用いて説明する。出力座標量子化部２０６は、出力画素座標値２２２（ｘｏ、ｙｏ）に対して以下の式を適用することで、ｘｏの整数部ｘｏｃ、ｙｏの整数部ｙｏｃを算出する。
【００２８】
ｘｏｃ＝ｆｌｏｏｒ（ｘｏ＋０．５）
ｙｏｃ＝ｆｌｏｏｒ（ｙｏ＋０．５）
なお、ｆｌｏｏｒ（ｘ）関数は、ｘ以下の最大の整数を返す関数である。そして出力座標量子化部２０６は、画素位置（ｘｏｃ、ｙｏｃ）を、出力画素座標整数部２３１として、後段のサブ領域判定部２０７に対して出力する。
【００２９】
一方、出力座標量子化部２０６は、出力画素座標値２２２（ｘｏ、ｙｏ）に対して以下の式を適用することで、ｘｏの小数部ｘｏｆ、ｙｏの小数部ｙｏｆを算出する。ここでは、後の判定を０≦ｘｏｆ＜１，０≦ｙｏｆ＜１で行うためにｘｏ，ｙｏからそれぞれの整数部を減じた後に０．５を加えているが、判定の都合によってｘｏｆ，ｙｏｆの算出式を変えることもできる。
【００３０】
ｘｏｆ＝ｘｏ−ｆｌｏｏｒ（ｘｏ＋０．５）＋０．５
ｙｏｆ＝ｙｏ−ｆｌｏｏｒ（ｙｏ＋０．５）＋０．５
そして出力座標量子化部２０６は、このようにして求めたｘｏｆ、ｙｏｆを、出力画素座標小数部２３２として、後段のサブ領域判定部２０７に対して出力する。
【００３１】
サブ領域判定部２０７は、ｘｏｆが既定値以上であるか否か及び／又はｙｏｆが既定値以上であるか否かの組み合わせを特定する。ここで、サブ領域判定部２０７の動作の一例について、図８を用いて説明する。図８のグラフにおいて横軸はｘｏｆ、縦軸はｙｏｆを示す。
【００３２】
図８において領域５０１は、次のような条件を満たす領域である。先ず、画素位置（ｘｏｃ、ｙｏｃ）の右に隣接する画素位置（ｘｏｃ＋１、ｙｏｃ）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ１、ｑ１）であったとする。このとき、ｐ１の整数部がｘｉと一致し、且つｑ１の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５０１である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５０１内に位置する場合、画素位置（ｘｏｃ＋１、ｙｏｃ）に対して上記の射影変換の逆変換を施すことで得られるｐ１、ｑ１のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３３】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の下に隣接する画素位置（ｘｏｃ、ｙｏｃ＋１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ２、ｑ２）であったとする。このとき、ｐ２の整数部がｘｉと一致し、且つｑ２の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５０２である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５０２内に位置する場合、画素位置（ｘｏｃ、ｙｏｃ＋１）に対して上記の射影変換の逆変換を施すことで得られるｐ２、ｑ２のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３４】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の左下に隣接する画素位置（ｘｏｃ−１、ｙｏｃ＋１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ３、ｑ３）であったとする。このとき、ｐ３の整数部がｘｉと一致し、且つｑ３の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５１１である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５１１内に位置する場合、画素位置（ｘｏｃ−１、ｙｏｃ＋１）に上記の射影変換の逆変換を施すことで得られるｐ３、ｑ３のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３５】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の左に隣接する画素位置（ｘｏｃ−１、ｙｏｃ）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ４、ｑ４）であったとする。このとき、ｐ４の整数部がｘｉと一致し、且つｑ４の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５０３である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５０３内に位置する場合、画素位置（ｘｏｃ−１、ｙｏｃ）に対して上記の射影変換の逆変換を施すことで得られるｐ４、ｑ４のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３６】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の上に隣接する画素位置（ｘｏｃ、ｙｏｃ−１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ５、ｑ５）であったとする。このとき、ｐ５の整数部がｘｉと一致し、且つｑ５の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５０４である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５０４内に位置する場合、画素位置（ｘｏｃ、ｙｏｃ−１）に対して上記の射影変換の逆変換を施すことで得られるｐ５、ｑ５のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３７】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の右上に隣接する画素位置（ｘｏｃ＋１、ｙｏｃ−１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ６、ｑ６）であったとする。このとき、ｐ６の整数部がｘｉと一致し、且つｑ６の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５１３である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５１３内に位置する場合、画素位置（ｘｏｃ＋１、ｙｏｃ−１）に上記の射影変換の逆変換を施すことで得られるｐ６、ｑ６のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３８】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の右下に隣接する画素位置（ｘｏｃ＋１、ｙｏｃ＋１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ７、ｑ７）であったとする。このとき、ｐ７の整数部がｘｉと一致し、且つｑ７の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５１０である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５１０内に位置する場合、画素位置（ｘｏｃ＋１、ｙｏｃ＋１）に上記の射影変換の逆変換を施すことで得られるｐ７、ｑ７のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００３９】
同様に、画素位置（ｘｏｃ、ｙｏｃ）の左下に隣接する画素位置（ｘｏｃ−１、ｙｏｃ−１）に対して上記の射影変換の逆変換を施すことで得られる画素位置が（ｐ８、ｑ８）であったとする。このとき、ｐ８の整数部がｘｉと一致し、且つｑ８の整数部がｙｉと一致するような、ｘｏｆ、ｙｏｆの範囲が領域５１２である。然るに、上記の式で求めたｘｏｆ、ｙｏｆによって表される位置（ｘｏｆ、ｙｏｆ）が領域５１２内に位置する場合、画素位置（ｘｏｃ−１、ｙｏｃ−１）に上記の射影変換の逆変換を施すことで得られるｐ８、ｑ８のそれぞれの整数部はｘｉ、ｙｉと一致する。
【００４０】
然るに、図８を例に取り説明すると、サブ領域判定部２０７は、出力画素座標小数部２３２としてのｘｏｆが、０≦ｘｏｆ＜０．５の範囲（サブ領域）に属しているのかそれとも０．５≦ｘｏｆ＜１の範囲（サブ領域）に属しているのかを判定する。そしてサブ領域判定部２０７は、この判定の結果を、後段のサブ領域周辺座標出力部２０８に対して通知する。
【００４１】
サブ領域周辺座標出力部２０８は、出力画素座標小数部２３２としてのｘｏｆが、０≦ｘｏｆ＜０．５の範囲（サブ領域）に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４２】
（ｘｏｃ    、ｙｏｃ＋１）
（ｘｏｃ−１、ｙｏｃ＋１）
（ｘｏｃ−１、ｙｏｃ    ）
（ｘｏｃ−１、ｙｏｃ−１）
（ｘｏｃ    、ｙｏｃ−１）
一方、サブ領域周辺座標出力部２０８は、出力画素座標小数部２３２としてのｘｏｆが、０．５≦ｘｏｆ＜１．０の範囲（サブ領域）に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４３】
（ｘｏｃ    、ｙｏｃ＋１）
（ｘｏｃ＋１、ｙｏｃ＋１）
（ｘｏｃ＋１、ｙｏｃ    ）
（ｘｏｃ＋１、ｙｏｃ−１）
（ｘｏｃ    、ｙｏｃ−１）
そしてサブ領域周辺座標出力部２０８は、上記のように、ｘｏｆの属する範囲に応じて決まる参照画素位置と、画素位置（ｘｏｃ、ｙｏｃ）と、を出力画素周辺座標値２２３として出力する。
【００４４】
なお、ｘｏｆの属する範囲に応じて参照画素位置を決定する方法は特に限定するものではなく、様々な方法が考え得る。例えば、ｘｏｆの属する範囲毎に、対応する参照画素位置を登録したテーブルを用いて、上記の求めたｘｏｃに対応する参照画素位置をこのテーブルから取得しても良い。
【００４５】
また、サブ領域周辺座標出力部２０８は、ｘｏｆだけでなく、ｙｏｆをも参酌して参照画素位置を決定しても良い。図８の例では、出力画素座標小数部２３２としてのｘｏｆ、ｙｏｆがそれぞれ、０．０≦ｘｏｆ＜０．５、０．０≦ｙｏｆ＜０．５の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４６】
（ｘｏｃ−１、ｙｏｃ    ）
（ｘｏｃ    、ｙｏｃ−１）
（ｘｏｃ−１、ｙｏｃ−１）
また、サブ領域周辺座標出力部２０８は、出力画素座標小数部２３２としてのｘｏｆ、ｙｏｆがそれぞれ、０．５≦ｘｏｆ＜１．０、０．０≦ｙｏｆ＜０．５の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４７】
（ｘｏｃ＋１、ｙｏｃ    ）
（ｘｏｃ    、ｙｏｃ−１）
（ｘｏｃ＋１、ｙｏｃ−１）
また、サブ領域周辺座標出力部２０８は、出力画素座標小数部２３２としてのｘｏｆ、ｙｏｆがそれぞれ、０．０≦ｘｏｆ＜０．５、０．５≦ｙｏｆ＜１．０の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４８】
（ｘｏｃ−１、ｙｏｃ    ）
（ｘｏｃ    、ｙｏｃ＋１）
（ｘｏｃ−１、ｙｏｃ＋１）
また、サブ領域周辺座標出力部２０８は、出力画素座標小数部２３２としてのｘｏｆ、ｙｏｆがそれぞれ、０．５≦ｘｏｆ＜１．０、０．５≦ｙｏｆ＜１．０の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【００４９】
（ｘｏｃ    、ｙｏｃ＋１）
（ｘｏｃ＋１、ｙｏｃ    ）
（ｘｏｃ＋１、ｙｏｃ＋１）
このように、ｘｏの小数部に０．５を加えた値の小数部が既定値以上であるか否か及び／又はｙｏの小数部に０．５を加えた値の小数部が既定値以上であるか否かの組み合わせについては様々なものがあり、このような例に限定するものではない。そして何れにせよ、それぞれの組み合わせには、予め設定された複数の参照画素位置が対応付けられているので、どのような組み合わせを想定しても、対応する参照画素位置群は一意に特定することができる。
【００５０】
図２に戻って、座標逆変換部２０４は、出力画素周辺座標値２２３としてのそれぞれの画素位置に対して、上記の射影変換の逆変換（座標逆変換パラメータ１３０によって規定されるマトリクスを用いた変換）を施すことで、出力画素周辺座標値２２３としてのそれぞれの画素位置に対応する逆変換座標値を求める。ここで、ｘｏｆの属する範囲に応じて決まる参照画素位置に対して、上記の射影変換の逆変換を施すことで得られる画素位置を（ｘｉ’、ｙｉ’）と表記する。また、画素位置（ｘｏｃ、ｙｏｃ）に対して上記の射影変換の逆変換を施す（計算する）ことで得られる画素位置を（ｘｉ”、ｙｉ”）と表記する。
【００５１】
そして座標逆変換部２０４は、この求めたそれぞれの逆変換座標値（ｘｉ’、ｙｉ’）、（ｘｉ”、ｙｉ”）を入力比較座標値２２４として、後段の入力座標比較部２０５に対して送出する。
【００５２】
入力座標比較部２０５は、画素位置（ｘｉ”、ｙｉ”）、それぞれの（ｘｉ’、ｙｉ’）、のうち、ｘ座標値の整数部及びｙ座標値の整数部がそれぞれｘｉ、ｙｉと同じである画素位置を特定する。そして入力座標比較部２０５は、特定した画素位置のｘ座標値の小数部及びｙ座標値の小数部を小数部１２７として画素補間処理部１０２に送出し、画素位置（ｘｏｃ、ｙｏｃ）１２８はメモリ書き込み部１０３に対して送出する。これにより画素補間処理部１０２は、上記の補間処理を行うことで、出力画像上の画素位置（ｘｏｃ、ｙｏｃ）における画素値を求めることができる。また、メモリ書き込み部１０３は、画素位置（ｘｏｃ、ｙｏｃ）に対応する記憶部１０４上のアドレスに、画素位置（ｘｏｃ、ｙｏｃ）における画素値を格納することができる。
【００５３】
次に、上記のマトリクスによる画像変形をより高精度に行うべく該マトリクスおける定数項を調整する変形パラメータ算出部１０７が行う処理について、図５のフローチャートを用いて説明する。
【００５４】
＜ステップＳ４０１＞
変形パラメータ算出部１０７には、高精度変形パラメータ１３１が入力される。この高精度変形パラメータは、例えば倍精度で表現された射影変換のパラメータであるとする。変形パラメータ算出部１０７への高精度変形パラメータ１３１の入力形態については、ユーザが不図示の操作部を操作することで入力する、メモリから読み出す、等様々な入力形態があり、特定の入力形態に限らない。また、変形パラメータ算出部１０７の出力となる座標変換パラメータ１２９は座標変換部２０２の演算のビット幅、表現形式にしたがったものである。同様に、座標逆変換パラメータ１３０は座標逆変換部２０４の演算のビット幅、表現形式にしたがったものである。本実施形態では、座標変換パラメータ１２９及び座標逆変換パラメータ１３０は共に符号付きで固定小数点形式表現された射影変換のパラメータであるとするが、他の形式でも実現可能である。
【００５５】
そして変形パラメータ算出部１０７は、高精度変形パラメータ１３１から座標逆変換時の変形パラメータを算出する。例えば、射影変換であれば、高精度変形パラメータ１３１の逆行列を求めることで座標逆変換時の変形パラメータを算出することができる。
【００５６】
＜ステップＳ４０２＞
変形パラメータ算出部１０７は、ステップＳ４０１で求めた座標逆変換時の変形パラメータを座標逆変換部２０４の演算のビット幅、表現形式に変換して、座標逆変換パラメータ１３０として出力する。例えば、倍精度形式を固定小数点形式にするのであれば、座標逆変換パラメータ１３０の小数部の桁数だけ左シフトを行い、四捨五入の為に０．５を加えて、整数部のみを取り出す。なお、最終的に座標逆変換パラメータ１３０を取得することができるのであれば、その処理過程は特定の方法に限るものではない。
【００５７】
＜ステップＳ４０３＞
変形パラメータ算出部１０７は、ステップＳ４０２得た座標逆変換パラメータ１３０から座標変換時の変形パラメータを算出する。例えば、射影変換であれば、座標逆変換パラメータ１３０の逆行列を求めることで座標変換時の変形パラメータを算出することができる。
【００５８】
＜ステップＳ４０４＞
変形パラメータ算出部１０７は、ステップＳ４０３求めた座標変換時の変形パラメータを座標変換部２０２の演算のビット幅、表現形式に変換して、座標変換パラメータ１２９として出力する。例えば、倍精度形式を固定小数点形式にするのであれば、座標変換パラメータ１２９の小数部の桁数だけ左シフトを行い、四捨五入の為に０．５を加えて、整数部のみを取り出す。なお、最終的に座標変換パラメータ１２９を取得することができるのであれば、その処理過程は特定の方法に限るものではない。
【００５９】
＜ステップＳ４０５＞
変形パラメータ算出部１０７は、上記のマトリクスによる画像変形をより高精度に行うべく該マトリクスおける定数項を調整する処理を行う。本ステップにおける処理の詳細について、図６のフローチャートを用いて説明する。
【００６０】
＜ステップＳ４１１＞
変形パラメータ算出部１０７は、先ず、入力画像に対して座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行った場合に、該入力画像上の予め指定された画素位置における画像変形誤差を取得する。そのために変形パラメータ算出部１０７は、入力画像に対して座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行った場合に、該入力画像のそれぞれの画素位置で生じうる画像変形誤差の上限値を表す情報（誤差情報）を取得する。このような誤差情報はテーブル形式の情報であっても構わないし、関数形式の情報であっても構わないが、何れにせよ、誤差情報は、画像処理装置内の不図示のメモリに予め登録されているものとする。
【００６１】
然るに変形パラメータ算出部１０７は、このような誤差情報を参照して、入力画像上の予め指定された画素位置における画像変形誤差（の上限値）を取得する。以下では一例として、「入力画像上の予め指定された画素位置」は「入力画像の四隅の画素位置」であるものとして説明する。この場合、変形パラメータ算出部１０７は、入力画像の四隅の画素位置のそれぞれについて、該画素位置に対応する画像変形誤差を誤差情報から取得することになる。
【００６２】
＜ステップＳ４１２＞
変形パラメータ算出部１０７は、入力画像に対して座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行った場合に、該入力画像上の予め指定された画素位置（四隅の画素位置）における画像変形誤差に対する許容値を算出する。
【００６３】
以下に、四隅の画素位置のうち１つの画素位置（ｘｓ、ｙｓ）について画像変形誤差の許容値を算出する処理について説明する。然るに、実際には、以下に説明する許容値算出処理を四隅の画素位置のそれぞれについて行うことになる。
【００６４】
先ず、入力画像に対して座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行った場合に、画素位置（ｘｓ、ｙｓ）が写像される出力画像上の画素位置（ｘｏ，ｙｏ）を求める。そして、ｘｏの整数部ｘｏｃ、ｙｏの整数部ｙｏｃによって規定される画素位置（ｘｏｃ，ｙｏｃ）を中心に縦横１のサイズの矩形領域（基準矩形領域）を設定する。このようにして設定された基準矩形領域を図４に示す。
【００６５】
また、変形パラメータ算出部１０７は、画素位置（ｘｓ、ｙｓ）の周辺画素位置（ｘｓ＋１、ｙｓ）、（ｘｓ＋１、ｙｓ−１）、（ｘｓ、ｙｓ−１）、（ｘｓ−１、ｙｓ−１）、（ｘｓ−１、ｙｓ）、（ｘｓ−１、ｙｓ＋１）、（ｘｓ、ｙｓ＋１）、（ｘｓ＋１、ｙｓ＋１）のそれぞれについて、該周辺画素位置を中心とする縦横１のサイズの矩形領域を設定する。そして、これらの８個の矩形領域のそれぞれに対して、座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行うと、この８個の矩形領域のそれぞれは、出力画像上の対応する位置に変形された状態で写像される。そして、上記の基準矩形領域において、８個の矩形領域のそれぞれを写像した領域（変形領域）と重なる部分を求める。
【００６６】
図４では、領域３１１は、画素位置（ｘｓ−１，ｙｓ＋１）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。領域３０３は、画素位置（ｘｓ−１，ｙｓ）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。領域３０４は、画素位置（ｘｓ，ｙｓ−１）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。領域３１３は、画素位置（ｘｓ＋１，ｙｓ−１）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。領域３０１は、画素位置（ｘｓ＋１，ｙｓ）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。領域３０２は、画素位置（ｘｓ，ｙｓ＋１）を中心とする縦横サイズが１の矩形領域を写像した変形領域において基準矩形領域と重なる領域である。
【００６７】
そして基準矩形領域内におけるそれぞれの変形領域のエッジ線（図４中の太線で示すエッジ線）上において（ｘｏｃ，ｙｏｃ）に最も近い点と、（ｘｏｃ，ｙｏｃ）と、の間の距離を、画素位置（ｘｓ、ｙｘ）における画像変形誤差に対する許容値として求める。図４においては、領域３１３の一角が（ｘｏｃ，ｙｏｃ）に最も近い点となっており、そのｘｏｆ方向の許容値はｘ方向許容誤差３２１、ｙｏｆ方向の許容値はｙ方向許容誤差３２２として示している。
【００６８】
なお、以下で用いる許容値としては、ｘ方向許容誤差３２１、ｙ方向許容誤差３２２の何れかを用いても構わないし、両方を用いて計算される値を用いても構わない。例えば、ｘ方向許容誤差３２１及びｙ方向許容誤差３２２のうちより小さい方を用いても構わないし、ｘ方向許容誤差３２１及びｙ方向許容誤差３２２の二乗和の平方根を用いても構わない。
【００６９】
＜ステップＳ４１３＞
変形パラメータ算出部１０７は、四隅の画素位置のそれぞれについて求めた画像変形誤差が、四隅の画素位置のそれぞれについて求めた許容値のうち最小の許容値よりも小さくなるように、定数項を調整する処理を行う。なお、画素補間処理部１０２がバイリニア補間やバイキュービック補間の様にタップ数が偶数のフィルタは上記の様に丸め処理では切り捨てを行い、０．０〜＋１．０の間で考えるが、タップ数が奇数のフィルタでは四捨五入を行い、−０．５〜＋０．５で考える。また、丸め誤差を含まない様に、ステップＳ４０３で求めたものを使用する。
【００７０】
本ステップにおける処理について、図７に示す具体例を挙げて説明する。以下では、入力画像の四隅の画素位置の何れかの画素位置における画像変形誤差が許容値を超えた場合に、上記の計算式における定数項を調整することで除算の誤差を減らす方法を説明する。除算は他の演算（加算、減算、乗算）に比べて誤差が生じやすい演算であるため、ここではこの除算による誤差が他の演算（加算、減算、乗算）に比べて相対的に小さくなるように、定数項の調整を行う。もちろん、同様の目的のために、定数項以外を調整するようにしても構わないし、結果として入力画像の四隅の画素位置における画像変形誤差が許容値を超えないようにするのであれば、座標変換パラメータをどのように調整しても構わない。以下では説明を簡単にするために、除算の入力誤差が一定範囲内にあれば出力誤差も一定範囲内にあるとする。
【００７１】
以下では、四隅の画素位置のそれぞれにおける許容値を、該画素位置における１／ｚｏ０（＝ｄｚｏ０）の許容値とする。これは、上記のｘ方向許容誤差、ｙ方向許容誤差に対してｘｏ＝ｘｏ０・ｄｚｏ０、あるいはｙｏ＝ｙｏ０・ｄｚｏ０の演算（乗算）において発生する最大誤差を考慮して１／ｚｏ０の最大許容誤差を算出することで求めることができる。
【００７２】
図７（ａ）には、入力画像４５０における四隅の画素位置における許容値（下記で説明するように便宜上、「±」をつけている）を示しており、左上隅の画素位置における許容値は±０．４９、左下隅の画素位置における許容値は±０．４９、右下隅の画素位置における許容値は±０．４９、右上隅の画素位置における許容値は±０．３０となっている。ここで、四隅の画素位置における許容値のうち最も小さい（最も範囲が狭い）ものは「±０．３０」であるので、以下では、この「±０．３０」を閾値とし、四隅の画素位置における画像変形誤差がこの閾値を超えないように定数項を調整する。
【００７３】
図７（ｂ）には、入力画像４５０に対して現在の座標変換パラメータ１２９を用いた上記の計算式にしたがった画像変形を行った場合に、該入力画像の四隅の画素位置における画像変形誤差を示しており、左上隅の画素位置における画像変形誤差は＋０．１０、左下隅の画素位置における画像変形誤差は−０．２５、右下隅の画素位置における画像変形誤差は＋０．１５、右上隅の画素位置における画像変形誤差は＋０．５０となっている。これらの画像変形誤差は、すでに上記のステップＳ４１１で得られているものであり、１／ｚｏ０の誤差、すなわちｄｚ０の誤差を表している。
【００７４】
次に、入力画像４５０における四隅の画素位置のそれぞれについて、該画素位置における画像変形誤差が閾値からどれだけ超過しているのかを示す超過分求める。なお、超過していない場合には、超過分は０．０とする。
【００７５】
図７（ａ）、（ｂ）の場合、左上隅の画素位置における画像変形誤差は＋０．１０であり、（画像変形誤差−閾値）を超過分として計算する。この場合の超過分は負の値となり、画像変形誤差は閾値以下であることが分かるため、図７（ｃ）に示す如く、この場合の超過分は０．０とする。
【００７６】
また、左下隅の画素位置における画像変形誤差は−０．２５であり、画像変形誤差が負の値であるので、この場合、閾値も負の値−０．３０を採用し、−１×（画像変形誤差−閾値）を超過分として計算する。この場合の超過分は負の値となり、画像変形誤差は閾値以下であることが分かるため、図７（ｃ）に示す如く、この場合の超過分は０．０とする。
【００７７】
また、右下隅の画素位置における画像変形誤差は＋０．１５であり、（画像変形誤差−閾値）を超過分として計算する。この場合の超過分は負の値となり、画像変形誤差は閾値以下であることが分かるため、図７（ｃ）に示す如く、この場合の超過分は０．０とする。
【００７８】
また、右上隅の画素位置における画像変形誤差は＋０．５０であり、（画像変形誤差−許容値）を超過分として計算する。この場合の超過分は正の値となり、画像変形誤差は閾値以上であることが分かり、図７（ｃ）に示す如く、この場合の超過分は０．２０となる。
【００７９】
然るにこの場合、右上隅の画素位置における画像変形誤差が閾値０．３０以下となるように、定数項を調整する。先ず、定数項の補正前の状態における座標変換パラメータを用いて以下の式を定義する。
【００８０】
ｚｏ０ｄ＝ｍ３１・ｘｉ＋ｍ３２・ｙｉ＋ｍ３３
１／ｚｏ０ｄ＝１／ｚｉ＋ｄ＋ａ
同様に、定数項の補正後の状態における座標変換パラメータを用いて以下の式を定義する。
【００８１】
ｚｏ０ａ＝ｍ３１・ｘｉ＋ｍ３２・ｙｉ＋ｍ３３ａ
１／ｚｏ０ａ＝１／ｚｉ＋ｄ
但し、１／ｚｉは１／ｚｏ０（＝ｄｚｏ０）の理想値（誤差０）、ｄは許容誤差（図７の場合、０．３０）、ａは超過分（図７の場合、０．２０）であるとする。定数補正のためにｍ３３に加算する値、ｍ３３ａ−ｍ３３は以下の様に計算できる。
【００８２】
ｍ３３ａ−ｍ３３＝１／（１／ｚｉ＋ｄ）−１／（１／ｚｉ＋ｄ＋ａ）
１／ｚｉは１／ｚｏ０（＝ｄｚｏ０）の理想値であるので、ｚｉ＝ｍ３１・ｘｉ＋ｍ３２・ｙｉ＋ｍ３３，１／ｚｉを十分高い精度で算出する。そして（ｍ３３ａ−ｍ３３）ををｍ３３に加算することで、出力画素座標値２２２の誤差を小さくすることができる（図７（ｄ）、（ｅ））。
【００８３】
なお、本実施形態に係る画像処理装置は、以下に説明するような画像処理装置の一例に過ぎず、以下に説明する構成に帰着する構成であれば、図１〜３に示した構成は如何様に変形／変更しても構わない。
【００８４】
すなわち、ようは、入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置であって、入力画像に対して画像変形処理を行うことで該入力画像上の指定画素位置が写像される出力画像上の画素位置を求める（第１の演算）。そして、画素サイズを有する矩形領域を矩形画素領域とし、入力画像に対して画像変形処理を行うことで指定画素位置の周辺画素位置における矩形画素領域が写像される出力画像上の写像領域を求め、第１の演算で求めた画素位置を中心とする矩形画素領域内における該写像領域に基づいて、指定画素位置に対する許容誤差範囲を求める（第２の演算）。そして、画像変形処理に関する指定画素位置の誤差が許容誤差範囲に収まるように、画像変形処理で用いるパラメータを調整する。
【００８５】
［第２の実施形態］
第１の実施形態では、入力画像４５０における四隅の画素位置における誤差を閾値以下に抑える方法について説明したが、画像の変形の度合いや、画像変形に対して予め許容された評価値などによっては、全ての隅の画素位置における誤差を閾値以下に抑えなくても良い。
【００８６】
また、第１の実施形態では、図１〜３に示した各機能部は１つの装置（画像処理装置）内に納められているものとして説明したが、複数台の装置に分散させ、装置間でデータ通信を行うことで、これらの装置により上記の処理を達成するようにしても構わない。すなわち、図１に示した構成は、１台の装置で実現させても構わないし、複数台の装置で実現させても構わない。
【００８７】
また、図１〜３に示した各機能部のうち、メモリとして機能するもの以外については、ソフトウェア（コンピュータプログラム）で実現させても良い。この場合、このメモリを有し、且つこのソフトウェアをインストールしたコンピュータは、このコンピュータが有するＣＰＵがこのソフトウェアを実行することで、上記の画像処理装置として機能することになる。もちろん、図１〜３に示した全ての機能部をハードウェアで実現させても良いし、一部をソフトウェアとして実現させても良い。
【００８８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８９】
１０６：出力座標算出部  １０７：変形パラメータ算出部
【図１】
2015197862.tif 000003
【図２】
2015197862.tif 000004
【図３】
2015197862.tif 000005
【図４】
2015197862.tif 000006
【図５】
2015197862.tif 000007
【図６】
2015197862.tif 000008
【図７】
2015197862.tif 000009
【図８】
2015197862.tif 000010