説明

画像処理装置、画像処理方法

【課題】 必要なメモリ帯域のピーク値が小さく、かつ、ハードウェア実装時の回路量が小さい、あるいはソフトウェア実装時の処理性能が高い画像変形技術を提供すること。
【解決手段】 画素位置(xi、yi)の写像画素位置(xo、yo)を求める。(xoの小数部+0.5)の小数部が既定値以上か及び/又は(yoの小数部+0.5)の小数部が既定値以上かの組み合わせに対応する複数の参照画素位置を取得し、逆写像を行い、画素位置(xi’、yi’)を求める。画素位置(xoの整数部xoc、yoの整数部yoc)に逆写像を行い、画素位置(xi”、yi”)を求める。画素位置(xi”、yi”)、(xi’、yi’)のうちx座標値の整数部及びy座標値の整数部がそれぞれxi、yiと同じである画素位置のx座標値の小数部及びy座標値の小数部と、画素位置(xi、yi)の周辺画素の画素値と、を用いた補間処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像変形技術に関するものである。
【背景技術】
【0002】
従来の画像変形を行う画像処理装置では、まず入力画素を1画面分メモリに記憶する。次に、出力画素の走査順に、出力画素の座標値から入力画素の座標値を座標変換の逆変換によって算出する。さらに、逆変換で得られた入力画素の座標値の整数部を用いて入力画素の近傍の画素をメモリから読み出し、近傍の画素と入力画素の座標値の小数部とを用いて補間計算によって出力画素の値を決定する操作を繰り返す。これらの操作により画像変形を行う画像処理を実現していた。上記方法を以下では、「読み出し時座標変換」と呼ぶ。例えば、特許文献1では、出力画像をタイルに分割し、分割されたタイル毎に読み出し時座標変換を行う画像処理方法が示されている。
【0003】
ところで、フロントプロジェクタの台形補正やカメラのレンズ補正を行う場合、入力画像から出力画像への拡大率は最小0.6倍〜最大1.25倍程度になる。さらに、映像入出力をリアルタイムで実現しなくてはならないという制約がある。映像入出力を1[pixel/cyc]で行うという制約下で上記に示す画像処理方法を実装すると、必要なメモリ帯域のピーク値が書き込みと読み出しの合計で(1+1/拡大率の最小値)[pixel/cyc]になってしまう。例えば拡大率の最小値が0.6倍であればピーク時に2.67[pixel/cyc]のメモリ帯域が必要になってしまう。
【0004】
これに対し、以下で「書き込み時座標変換」と呼ぶ方式がある。この方式は、まず、走査順に入力される入力画素に対して座標変換によって出力座標を算出する。次に、出力座標の整数部からメモリの格納先アドレスを算出する。さらに、出力座標の整数部から座標変換の逆変換により入力画像中の座標を求める。逆変換により求めた座標の整数部が元々の入力画素の座標に一致するときに、入力画素とその近傍の画素と、座標変換の逆変換によって求めた座標値の小数部とを用いて出力する画素値を補完計算によって求める。この画素値を先に求めた格納先アドレスに格納する。
【0005】
書き込み時座標変換方式における必要なメモリ帯域のピーク値は、書き込みと読み出しの合計で(1+拡大率の最大値)[pixel/cyc]になる。拡大率の最大値が1.25倍の時、この値は2.25[pixel/cyc]になり、想定する拡大率の範囲内では読み出し時座標変換よりメモリ帯域のピーク値を小さくすることができる。
【0006】
しかしながら、上記のままの書き込み時座標変換では、出力されない画素が発生することがあるため、対策が必要である。例えば、書き込み時座標変換を行っている特許文献2では、入力画素の座標をサブピクセル単位で走査することで出力されない画素が発生することを防いでいる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2005−135096号公報
【特許文献2】特開平6−149993号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1の方式では、必要なメモリ帯域のピーク値が、想定する拡大率の範囲内で大きくなってしまう。特許文献2の方式では、サブピクセルでの走査をX軸方向とY軸方向で共に1/2ピクセルとした場合でも座標変換で4点分、逆変換で4点分の演算が必要になる。射影変換は座標変換と逆変換の演算量が同じで、どちらの演算にも除算が含まれる。このため、特許文献2の方式では、ハードウェアで実装したときの回路量が大きくなり、ソフトウェア実装であれば処理性能が低下してしまう。
【0009】
本発明はこのような問題に鑑みてなされたものであり、必要なメモリ帯域のピーク値が小さく、かつ、ハードウェア実装時の回路量が小さい、あるいはソフトウェア実装時の処理性能が高い画像変形技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。即ち、入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置であって、前記入力画像に対して前記画像変形処理を行うことで該入力画像中の画素位置(xi、yi)が写像される画素位置(xo、yo)を求める手段と、xoの小数部に0.5を加えた値の小数部が既定値以上であるか否か及び/又はyoの小数部に0.5を加えた値の小数部が既定値以上であるか否かの組み合わせに対して予め設定された複数の参照画素位置を取得する取得手段と、前記複数の参照画素位置のそれぞれに対して前記写像の逆写像を行うことで、画素位置(xi’、yi’)を求める手段と、前記xoの整数部xoc及びyoの整数部yocで表される画素位置(xoc、yoc)に対して前記逆写像を行うことで、画素位置(xi”、yi”)を求める手段と、前記画素位置(xi”、yi”)、前記複数の参照画素位置のそれぞれについて求めた前記画素位置(xi’、yi’)、のうち、x座標値の整数部及びy座標値の整数部がそれぞれxi、yiと同じである画素位置を特定する特定手段と、前記特定手段が特定した画素位置のx座標値の小数部及びy座標値の小数部と、前記入力画像中の画素位置(xi、yi)の周辺画素位置における画素の画素値と、を用いた補間処理を行うことにより、前記出力画像上の画素位置(xoc、yoc)における画素値を求める算出手段とを備えることを特徴とする。
【発明の効果】
【0011】
本発明の構成によれば、必要なメモリ帯域のピーク値が小さく、かつ、ハードウェア実装時の回路量が小さい、あるいはソフトウェア実装時の処理性能が高い画像変形技術を提供することができる。
【図面の簡単な説明】
【0012】
【図1】画像処理装置の機能構成例を示すブロック図。
【図2】出力座標算出部106のより詳細な機能構成例を示すブロック図。
【図3】出力画素周辺座標生成部203のより詳細な機能構成例を示すブロック図。
【図4】サブ領域判定部207の動作を説明する為のグラフ。
【図5】サブ領域判定部207の動作の変形例を説明するためのグラフ。
【図6】画像処理装置の機能構成例を示すブロック図。
【図7】出力座標算出部606の機能構成例を示すブロック図。
【図8】領域を求める処理を説明するグラフ。
【図9】領域を求める処理を説明するグラフ。
【図10】領域を求める処理を説明するグラフ。
【発明を実施するための形態】
【0013】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
【0014】
[第1の実施形態]
本実施形態では、座標変換後の出力座標の小数部によって2領域に分割することで座標変換(座標逆変換)が必要な周辺画素数を中心座標も含めて5点まで削減する例と、4領域に分割することで4点まで削減する例とを示す。どの様な領域に分割するかは任意であり、その結果、逆変換(逆写像)が必要な周辺画素数が何点まで削減されるかは領域分割方法によって変わってくる。しかし、どの様な領域に分割するかは容易に変更することができる。
【0015】
また、本実施形態では、画像変形処理の一例として、射影変換を行う場合について説明するが、画素位置(座標)の座標変換とその逆変換が存在するのであれば、射影変換以外の幾何変換にも適用することができる。
【0016】
先ず、本実施形態に係る画像処理装置の機能構成例について、図1のブロック図を用いて説明する。画像処理装置には、画像変形処理を行う対象となる画像(入力画像)が入力されるのであるが、本実施形態ではこの入力画像が画素単位で入力されるものとして説明する。しかし、入力画像をどのようにして画像処理装置に入力するのかについては特に限定するものではない。
【0017】
画像処理装置に入力された入力画素の画素値(若しくは画像処理装置内のメモリから読み出された画素値)は、入力画素値121として入力画素記憶部101に格納されると共に、出力座標算出部106にも入力される。
【0018】
画素補間処理部102は、入力画素に対応する出力画像上の画素の画素値を求める為に必要な画素(入力画素の周辺画素位置における画素)の画素値を入力周辺画素値122として入力画素記憶部101から読み出す。更に画素補間処理部102は、入力画素について出力座標算出部106が求めた各画素の画素位置(x座標値とy座標値)の小数部127を、出力座標算出部106から取得する。そして画素補間処理部102は、読み出した入力周辺画素値122と、取得した各画素の画素位置の小数部127と、を用いて補間処理を行い、入力画素に対応する出力画像上の画素の画素値を求める。
【0019】
補間処理には様々な補間技術を適用することができるが、例えば、バイリニア補間を行う場合、入力画素を含む2×2ピクセルからバイリニア補間を行い、補間された画素を出力する。また、バイキュービック補間を行う場合、入力画素を含む4×4ピクセルからバイキュービック補間を行い、補間された画素を出力する。
【0020】
そして画素補間処理部102は、求めた画素値を入力補間画素値123としてメモリ書き込み部103に対して送出する。
【0021】
メモリ書き込み部103は、出力座標算出部106から「入力画素に対応する出力画像上の画素の画素位置の整数部128」を受け取り、受け取った整数部128で表される画素位置に対応する記憶部104内のアドレスを特定する。そしてメモリ書き込み部103は、画素補間処理部102から受け取った入力補間画素値123を書き込み画素値124として、この特定したアドレスに格納する。
【0022】
ランダムなアドレスに対する書き込みは低速である。しかし、連続するメモリアドレスへの書き込みが高速であるDRAMのようなメモリを記憶部104として用いる場合、メモリ書き込み部103内で入力補間画素値123のバッファリングを行う。そして、複数の入力補間画素値123をまとめて記憶部104に書き出すようにする。
【0023】
メモリ読み出し部105は、記憶部104に格納されている射影変換済みの画像の各画素の画素値を順次読み出し、出力画素値126として出力する。出力する順序については特に限定するものではないが、ラスタ順や縦方向を主走査とする方式や、タイルに分割してタイル毎に読み出しを行う方法などが考えられる。
【0024】
次に、出力座標算出部106のより詳細な機能構成例について、図2のブロック図を用いて説明する。入力画素座標生成部201は、入力画素値121を受け取ると、この入力画素の入力画像上(入力画像中)における画素位置を求める。例えば、入力画素値121の中にVSYNC、HSYNC信号が含まれているとする。この場合、入力画素座標生成部201はVSYNCを受けると、Y座標を0にリセットする。また入力画素座標生成部201は、HSYNCを受けると、X座標を0にリセットすると共に、前回のHSYNC信号を受けたときから画素値が入力されるとY座標を+1する。画素値が入力された時はX座標を+1する。そして入力画素座標生成部201は、このようにしてカウントしたX座標、Y座標をセットにして、入力画素座標値221として座標変換部202及び入力座標比較部205に対して送出する。なお、入力画素値121に入力画素の画素位置が含まれている場合には、この画素位置をそのまま入力画素座標値221として、座標変換部202及び入力座標比較部205に対して送出する。
【0025】
座標変換部202は、射影変換用のマトリクスを用いて、入力画素座標値221に対する射影変換を行い、射影変換後の座標値を出力画素座標値222として求める。このマトリクスは、m11〜m33を成分とする3×3の行列で表される。この行列を用いて入力画素座標値221(xi,yi)に対する射影変換を行うことで、この入力画素座標値221(xi,yi)が写像される画素座標位置である出力画素座標値222(xo,yo)を求める。
【0026】
この時、2×2ピクセルのバイリニア補間や4×4ピクセルのバイキュービックフィルタなどの偶数次のフィルタであればフィルタの中心座標が入力画素座標の中心から(+0.5,+0.5)ずれている。そのため、(xi+0.5,yi+0.5)に対する座標変換を行う。奇数次のフィルタであればフィルタの中心座標が(xi,yi)と同じであるため、(xi,yi)に対する座標変換を行う。以下に示す例は偶数次フィルタの時の出力画素座標値222(xo,yo)算出式である。
【0027】
xo0=m11・(xi+0.5)+m12・(yi+0.5)+m13
yo0=m21・(xi+0.5)+m22・(yi+0.5)+m23
zo0=m31・(xi+0.5)+m32・(yi+0.5)+m33
xo=xo0/zo0
yo=yo0/zo0
そして座標変換部202は、このようにして求めた出力画素座標値222(xo、yo)を、後段の出力画素周辺座標生成部203に対して送出する。
【0028】
出力画素周辺座標生成部203は、xoの小数部に0.5を加えた値の小数部が既定値以上であるか否か及び/又はyoの小数部に0.5を加えた値の小数部が既定値以上であるか否かの組み合わせに対して予め設定された複数の参照画素位置を取得する。
【0029】
出力画素周辺座標生成部203のより詳細な機能構成例について、図3のブロック図を用いて説明する。出力座標量子化部206は、出力画素座標値222(xo、yo)に対して以下の式を適用することで、xoの整数部xoc、yoの整数部yocを算出する。
【0030】
xoc=floor(xo+0.5)
yoc=floor(yo+0.5)
なお、floor(x)関数は、x以下の最大の整数を返す関数である。そして出力座標量子化部206は、画素位置(xoc、yoc)を、出力画素座標整数部231として、後段のサブ領域判定部207に対して出力する。
【0031】
一方、出力座標量子化部206は、出力画素座標値222(xo、yo)に対して以下の式を適用することで、xoの小数部xof、yoの小数部yofを算出する。ここでは、後の判定を0≦xof<1,0≦yof<1で行うためにxo,yoからそれぞれの整数部を減じた後に0.5を加えているが、判定の都合によってxof,yofの算出式を変えることもできる。
【0032】
xof=xo−floor(xo+0.5)+0.5
yof=yo−floor(yo+0.5)+0.5
そして出力座標量子化部206は、このようにして求めたxof、yofを、出力画素座標小数部233として、後段のサブ領域判定部207に対して出力する。
【0033】
サブ領域判定部207は、xofが既定値以上であるか否か及び/又はyofが既定値以上であるか否かの組み合わせを特定する。ここで、サブ領域判定部207の動作について、図4を用いて説明する。図4のグラフにおいて横軸はxof、縦軸はyofを示す。
【0034】
図4において領域301は、次のような条件を満たす領域である。先ず、画素位置(xoc、yoc)の右に隣接する画素位置(xoc+1、yoc)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p1、q1)であったとする。このとき、p1の整数部がxiと一致し、且つq1の整数部がyiと一致するような、xof、yofの範囲が領域301である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域301内に位置する場合、画素位置(xoc+1、yoc)に対して上記の射影変換の逆変換を施すことで得られるp1、q1のそれぞれの整数部はxi、yiと一致する。
【0035】
以下に上記の射影変換の逆変換を行い(po,qo)から(pi,qi)を求める式と、偶数次フィルタで補間係数kを0≦k<1の範囲とする時の(pi,qi)から整数部(pic,qic)を算出する式を示す。なお、奇数次フィルタで補間係数kを−0.5≦k<0.5とするときはpi,qiに0.5を加えて整数部(pic,qic)を求める。
【0036】
pi0=r11・po+r12・qo+r13
qi0=r21・po+r22・qo+r23
ri0=r31・po+r32・qo+r33
pi=pi0/ri0
qi=qi0/ri0
但し、(r11−r33)は(m11−m33)の逆行列である。射影変換に限定すれば、(r11−r33)は(m11−m33)の逆行列の定数倍であってもよい。
【0037】
pic=floor(pi)
qic=floor(qi)
同様に、画素位置(xoc、yoc)の下に隣接する画素位置(xoc、yoc+1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p2、q2)であったとする。このとき、p2の整数部がxiと一致し、且つq2の整数部がyiと一致するような、xof、yofの範囲が領域302である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域302内に位置する場合、画素位置(xoc、yoc+1)に対して上記の射影変換の逆変換を施すことで得られるp2、q2のそれぞれの整数部はxi、yiと一致する。
【0038】
同様に、画素位置(xoc、yoc)の左下に隣接する画素位置(xoc−1、yoc+1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p3、q3)であったとする。このとき、p3の整数部がxiと一致し、且つq3の整数部がyiと一致するような、xof、yofの範囲が領域311である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域311内に位置する場合、画素位置(xoc−1、yoc+1)に上記の射影変換の逆変換を施すことで得られるp3、q3のそれぞれの整数部はxi、yiと一致する。
【0039】
同様に、画素位置(xoc、yoc)の左に隣接する画素位置(xoc−1、yoc)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p4、q4)であったとする。このとき、p4の整数部がxiと一致し、且つq4の整数部がyiと一致するような、xof、yofの範囲が領域303である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域303内に位置する場合、画素位置(xoc−1、yoc)に対して上記の射影変換の逆変換を施すことで得られるp4、q4のそれぞれの整数部はxi、yiと一致する。
【0040】
同様に、画素位置(xoc、yoc)の上に隣接する画素位置(xoc、yoc−1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p5、q5)であったとする。このとき、p5の整数部がxiと一致し、且つq5の整数部がyiと一致するような、xof、yofの範囲が領域304である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域304内に位置する場合、画素位置(xoc、yoc−1)に対して上記の射影変換の逆変換を施すことで得られるp5、q5のそれぞれの整数部はxi、yiと一致する。
【0041】
同様に、画素位置(xoc、yoc)の右上に隣接する画素位置(xoc+1、yoc−1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p6、q6)であったとする。このとき、p6の整数部がxiと一致し、且つq6の整数部がyiと一致するような、xof、yofの範囲が領域313である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域313内に位置する場合、画素位置(xoc+1、yoc−1)に上記の射影変換の逆変換を施すことで得られるp6、q6のそれぞれの整数部はxi、yiと一致する。
【0042】
なお、図4では、画素位置(xoc−1、yoc−1)、(xoc+1、yoc+1)に対して上記の射影変換の逆変換を施すことで得られる画素位置は、x座標値の整数部=xi且つy座標値の整数部=yiという条件は満たしていないことになっている。
【0043】
然るに、図4を例に取り説明すると、サブ領域判定部207は、出力画素座標小数部233としてのxofが、0≦xof<0.5の範囲(サブ領域)に属しているのかそれとも0.5≦xof<1の範囲(サブ領域)に属しているのかを判定する。そしてサブ領域判定部207は、この判定の結果を、後段のサブ領域周辺座標出力部208に対して通知する。
【0044】
サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxofが、0≦xof<0.5の範囲(サブ領域)に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0045】
(xoc 、yoc+1)
(xoc−1、yoc )
(xoc 、yoc−1)
(xoc−1、yoc+1)
一方、サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxofが、0.5≦xof<1.0の範囲(サブ領域)に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0046】
(xoc+1、yoc )
(xoc 、yoc+1)
(xoc 、yoc−1)
(xoc+1、yoc−1)
そしてサブ領域周辺座標出力部208は、上記のように、xofの属する範囲に応じて決まる参照画素位置と、画素位置(xoc、yoc)と、を出力画素周辺座標値223として出力する。
【0047】
なお、xofの属する範囲に応じて参照画素位置を決定する方法は特に限定するものではなく、様々な方法が考え得る。例えば、xofの属する範囲毎に、対応する参照画素位置を登録したテーブルを用いて、上記の求めたxocに対応する参照画素位置をこのテーブルから取得しても良い。
【0048】
座標逆変換部204は、出力画素周辺座標値223としてのそれぞれの画素位置に対して、上記の射影変換の逆変換を施すことで、出力画素周辺座標値223としてのそれぞれの画素位置に対応する逆変換座標値を求める。ここで、xofの属する範囲に応じて決まる参照画素位置に対して、上記の射影変換の逆変換を施すことで得られる画素位置を(xi’、yi’)と表記する。また、画素位置(xoc、yoc)に対して上記の射影変換の逆変換を施す(計算する)ことで得られる画素位置を(xi”、yi”)と表記する。
【0049】
そして座標逆変換部204は、この求めたそれぞれの逆変換座標値(xi’、yi’)、(xi”、yi”)を入力比較座標値224として、後段の入力座標比較部205に対して送出する。
【0050】
入力座標比較部205は、画素位置(xi”、yi”)、それぞれの(xi’、yi’)、のうち、x座標値の整数部及びy座標値の整数部がそれぞれxi、yiと同じである画素位置を特定する。そして入力座標比較部205は、特定した画素位置のx座標値の小数部及びy座標値の小数部を小数部127として画素補間処理部102に送出し、画素位置(xoc、yoc)128はメモリ書き込み部103に対して送出する。これにより画素補間処理部102は、上記の補間処理を行うことで、出力画像上の画素位置(xoc、yoc)における画素値を求めることができる。また、メモリ書き込み部103は、画素位置(xoc、yoc)に対応する記憶部104上のアドレスに、画素位置(xoc、yoc)における画素値を格納することができる。
【0051】
<変形例>
サブ領域判定部207の動作の変形例について、図5を用いて説明する。図5のグラフにおいて横軸はxof、縦軸はyofを示す。図5に示した参照番号が指し示す対象は、形状こそ違うものの、基本的な事項については図4と同じである。
【0052】
図5において領域312は、次のような条件を満たす領域である。先ず、画素位置(xoc、yoc)の左上に隣接する画素位置(xoc−1、yoc−1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p7、q7)であったとする。このとき、p7の整数部がxiと一致し、且つq7の整数部がyiと一致するような、xof、yofの範囲が領域312である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域312内に位置する場合、画素位置(xoc−1、yoc−1)に上記の射影変換の逆変換を施すことで得られるp7、q7のそれぞれの整数部はxi、yiと一致する。
【0053】
同様に、画素位置(xoc、yoc)の右下に隣接する画素位置(xoc+1、yoc+1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p8、q8)であったとする。このとき、p8の整数部がxiと一致し、且つq8の整数部がyiと一致するような、xof、yofの範囲が領域310である。然るに、上記の式で求めたxof、yofによって表される位置(xof、yof)が領域310内に位置する場合、画素位置(xoc+1、yoc+1)に上記の射影変換の逆変換を施すことで得られるp8、q8のそれぞれの整数部はxi、yiと一致する。
【0054】
本変形例の場合、サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxof、yofがそれぞれ、0.0≦xof<0.5、0.0≦yof<0.5の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0055】
(xoc−1、yoc )
(xoc 、yoc−1)
(xoc−1、yoc−1)
また、サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxof、yofがそれぞれ、0.5≦xof<1.0、0.0≦yof<0.5の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0056】
(xoc+1、yoc )
(xoc 、yoc−1)
(xoc+1、yoc−1)
また、サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxof、yofがそれぞれ、0.0≦xof<0.5、0.5≦yof<1.0の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0057】
(xoc−1、yoc )
(xoc 、yoc+1)
(xoc−1、yoc+1)
また、サブ領域周辺座標出力部208は、出力画素座標小数部233としてのxof、yofがそれぞれ、0.5≦xof<1.0、0.5≦yof<1.0の範囲に属している旨の通知を受けると、以下の画素位置を参照画素位置として決定する。
【0058】
(xoc 、yoc+1)
(xoc+1、yoc )
(xoc+1、yoc+1)
このように、xoの小数部に0.5を加えた値の小数部が既定値以上であるか否か及び/又はyoの小数部に0.5を加えた値の小数部が既定値以上であるか否かの組み合わせについては様々なものがあり、第1の実施形態や本変形例に限定するものではない。そして何れにせよ、それぞれの組み合わせには、予め設定された複数の参照画素位置が対応付けられているので、どのような組み合わせを想定しても、対応する参照画素位置群は一意に特定することができる。
【0059】
以上の説明により、本変形例を含めた本実施形態によれば、座標変換(座標逆変換)が必要な周辺画素の数を削減することができる。必要となる座標変換数を従来より少なくすることができるため、回路量を従来の書き込み時座標変換方式より少なくすることができる。
【0060】
また、必要なメモリ帯域のピーク値が小さいまま、ハードウェア実装したときの回路量を小さくすることができる、あるいはソフトウェア実装した時に処理性能が高い射影変換を行うことができる。
【0061】
[第2の実施形態]
本実施形態に係る画像処理装置の機能構成例について、図6のブロック図を用いて説明する。図6において図1と同じ構成用件については同じ参照番号を付けており、その説明は省略する。本実施形態に係る画像処理装置は、図1に示した構成において、出力座標算出部106を出力座標算出部606に置き換えたものであり、この出力座標算出部606には、上記のマトリクスのデータである変形パラメータ129が入力される。然るに、出力座標算出部606以外の構成用件については第1の実施形態で説明したとおりであるため、以下ではこの出力座標算出部606について説明する。
【0062】
尚、以下の説明では、第1の実施形態でxo、yo、xoc、yocと表したものをそれぞれxot、yot、xotC、yotCと表記する。即ち、変数名が異なるだけで、指し示すものは同じであり、例えば、xoとxotとは指し示すものは同じである。
【0063】
出力座標算出部606の機能構成例について、図7のブロック図を用いて説明する。図7において図2と同じ構成用件については同じ参照番号を付けており、その説明は省略する。
【0064】
座標変換部202は、第1の実施形態で説明したマトリクスのデータとしての変形パラメータ129を受けると、この変形パラメータ129を用いて第1の実施形態と同様にして、入力画素座標値221に対する射影変換を行う。そして座標変換部202は、この射影変換により得られた座標値を出力画素座標値222として、後段の出力画素周辺座標生成部203に対して送出する。
【0065】
判定条件生成部703は、変形パラメータ129を受けると、この変形パラメータ129を用いて、参照画素位置を決定するための条件を生成する。そして判定条件生成部703は、この生成した条件を、判定条件704として出力画素周辺座標生成部203に対して供給する。判定条件生成部703の動作について、詳しくは後述する。
【0066】
座標逆変換部204は、第1の実施形態で説明したマトリクスのデータとしての変形パラメータ129を受けると、この変形パラメータ129を用いて第1の実施形態と同様にして、出力画素周辺座標値223に対して射影変換の逆変換を行う。そして座標逆変換部204は、この逆変換により得られた逆変換座標値を入力画素周辺座標値701として、後段の座標出力部702に対して送出する。
【0067】
座標出力部702は、入力画素周辺座標値701のx座標値の小数部及びy座標値の小数部を小数部127として画素補間処理部102に送出する。更に座標出力部702は、画素位置(xotC、yotC)を整数部128としてメモリ書き込み部103に送出する。
【0068】
出力座標算出部606は、一例として画像変形を行わない場合は、1つの入力画素値121に対して、1つの整数部128及び1つの小数部127を出力する。具体的には、変形パラメータ129がm11〜m33からなる3x3の単位行列のときがこのような場合に当たる。また、その他の例として、画像変形が拡大部分を含むときは、1つの入力画素値121に対して、複数の整数部128及び小数部127が出力される場合がある。
【0069】
出力画素周辺座標生成部203は先ず、xoの小数部xotf、yoの小数部yotfを以下の式により求める。
【0070】
xotf=xot−floor(xot+0.5)+0.5
yotf=yot−floor(yot+0.5)+0.5
そして出力画素周辺座標生成部203は、xotf及びyotfが、判定条件704を満たす場合には、この判定条件704に対応する複数の参照画素位置を取得する。そして出力画素周辺座標生成部203は、この取得した複数の参照画素位置と、画素位置(xotC、yotC)と、を出力画素周辺座標値223として出力する。ここで、出力画素周辺座標生成部203が出力画素周辺座標値223として出力する可能性があるものは、以下の9個の座標値である。
【0071】
(xotC−1,yotC−1)
(xotC+0,yotC−1)
(xotC+1,yotC−1)
(xotC−1,yotC+0)
(xotC+0,yotC+0)
(xotC+1,yotC+0)
(xotC−1,yotC+1)
(xotC+0,yotC+1)
(xotC+1,yotC+1)
図8のグラフにおいて横軸はxotf、縦軸はyotfを示す。図8において領域801は、次のような条件を満たす領域である。先ず、画素位置(xotC、yotC)の左上に隣接する画素位置(xotC−1、yotC−1)に対して上記の射影変換の逆変換を施すことで得られる画素位置が(p1、q1)であったとする。このとき、p1の整数部がxiと一致し、且つq1の整数部がyiと一致するような、xotf、yotfの範囲が領域801である。然るに、求めたxotf、yotfによって表される位置(xotf、yotf)が領域801内に位置する場合、画素位置(xotC−1、yotC−1)に上記の射影変換の逆変換を施して得られるp1、q1のそれぞれの整数部はxi、yiと一致する。これは、他の領域800,802〜805,808についても同様である。なお、それぞれの領域は重なる場合があり、図8では見易さの都合上、4つに分けて図示している。また、図8では、出力画素周辺座標生成部203が出力画素周辺座標値223として出力する可能性があるものは、以下の7個の座標値としている。
【0072】
(xotC−1,yotC−1)
(xotC+0,yotC−1)
(xotC−1,yotC+0)
(xotC+0,yotC+0)
(xotC+1,yotC+0)
(xotC+0,yotC+1)
(xotC+1,yotC+1)
判定条件生成部703は、それぞれの領域800〜805,808を規定するパラメータを判定条件704として出力画素周辺座標生成部203に対して送出する。例えば、図8に示す如く、領域801は、直線A806と直線B807とxotf軸とyotf軸とによって囲まれている。直線A806と直線B807は以下のとおり表わすことができる。
【0073】
y=A1・x+A2 (直線A)
y=B1・x+B2 (直線B)
然るに、判定条件生成部703は、領域801を規定するパラメータとして、以下の条件を示すパラメータを生成する。
【0074】
0.0 ≦ xotf ≦ 1.0
0.0 ≦ yotf ≦ 1.0
yotf ≧ A1・xotf+A2 (直線A)
yotf ≧ B1・xotf+B2 (直線B)
また判定条件生成部703は、他の領域800,802〜805,808についてもこのような、それぞれの領域を規定するパラメータを生成する。そして判定条件生成部703は、それぞれの領域800〜805,808について生成したパラメータをまとめて判定条件704として出力画素周辺座標生成部203に対して送出する。
【0075】
ここで、各領域を規定するためのパラメータを求めるための方法について説明する。各領域は、変形パラメータ129に依存しているため、各領域を規定するためのパラメータは、この変形パラメータ129を用いて生成されることになる。具体的には、各隣接画素座標値に対応する領域を囲む直線式の傾き係数と切片係数を求める。
【0076】
四角形が記されている図9(a)の入力画像(xi−yi平面)に対して変形パラメータ129を用いた画像変形処理を行うことで、変形した四角形が記されている図9(b)の出力画像(xot−yot平面)が得られたとする。図9(a)の四角形は頂点(入力端点)902〜905で構成されており、図9(b)の四角形は頂点(出力端点)906〜909で構成されている。
【0077】
各領域の求め方について、図10を用いて説明する。図9(a)に示した入力端点902〜905のうち1つを入力端点505として選び、画像変形処理による入力端点505の変換後の端点を出力端点507として求める。出力端点507の画素位置を(Axo,Ayo)とすると、画素位置(floor(Axo)+0.5、floor(Ayo)+0.5)に出力中心点506を設定する。
【0078】
次に、画像変形処理の逆変換処理による出力中心点506の変換後の点を入力中心点508として求める。入力中心点508の画素位置を(Acxi,Acyi)とすると、以下の4つの画素位置にそれぞれ入力近傍点509〜512を設定する。
【0079】
(Acxi−0.5,Acyi+0.5)
(Acxi+0.5,Acyi+0.5)
(Acxi+0.5,Acyi+0.5)
(Acxi−0.5,Acyi−0.5)
次に、画像変形処理による入力近傍点509〜512の変換後の点をそれぞれ出力近傍点514〜517として求める。そして出力近傍点514〜517で囲まれている領域のうち、0.0≦xot<1.0且つ0.0≦yot<1.0を満たす領域内を、判定領域518として求める。
【0080】
以上の判定領域518を求めるための処理を、入力端点902〜905のそれぞれについて行い、それぞれの領域について求めた判定領域518の和集合としての領域を、画素位置(xotC,yotC)に対する領域として出力する。同様の処理を、出力座標系501において出力中心点506を選択するとき、±1.0の8つの隣接画素座標に対して実行し、全ての領域を求めることができる。
【0081】
出力画素周辺座標生成部203はこの判定条件704を受けると、判定条件704に含まれているそれぞれのパラメータを参照する。そして出力画素周辺座標生成部203は、上記の式で求めたxotf、yotfによって表される位置(xotf、yotf)が領域800〜805,808の何れに属しているのかを判定する。そして出力画素周辺座標生成部203は、上記の式で求めたxotf、yotfによって表される位置(xotf、yotf)が属していると判定した領域に対応する画素位置(参照画素位置)を出力する。
【0082】
例えば、上記の式で求めたxotf、yotfによって表される位置(xotf、yotf)が、領域801内に位置している場合、画素位置(xotC−1、yotC−1)を参照画素位置として出力する。このようにして出力画素周辺座標生成部203は、上記の式で求めたxotf、yotfによって表される位置(xotf、yotf)が属していると判定した領域に対応する画素位置(参照画素位置)を出力する。
【0083】
このように、本実施形態では、変形パラメータ129をもとに判定条件704を生成し、判定条件704にもとづき入力画素値121に対応する出力画素周辺座標値223を選択する。拡大率が2倍未満のとき、出力画素周辺座標値223の候補は9点だが、ここまでの説明のとおり、判定条件704を用いることで、出力画素周辺座標値223を4点以下に削減できる。この結果、座標逆変換部204による逆変換回数を削減できる。必要となる座標変換数を従来より少なくすることができるため、回路量を従来の書き込み時座標変換方式より少なくすることができる。また、必要なメモリ帯域のピーク値が小さいまま、ハードウェア実装したときの回路量が小さい、あるいはソフトウェア実装した時に処理性能が高い射影変形を行う画像処理技術を実現することができる。なお、本実施形態は、拡大率が任意の倍率の場合にも近傍点数を増やすことで同様に拡張可能である。
【0084】
また、図1〜3,6,7に示した各部のうち、メモリとして機能するもの以外については、ソフトウェア(コンピュータプログラム)で実現させても良い。この場合、このメモリを有し、且つこのソフトウェアをインストールしたコンピュータは、このコンピュータが有するCPUがこのソフトウェアを実行することで、上記の画像処理装置として機能することになる。もちろん、図1〜3,6,7に示した全ての構成用件をハードウェアで実現させても良いし、一部をソフトウェアとして実現させても良い。
【0085】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置であって、
前記入力画像に対して前記画像変形処理を行うことで該入力画像中の画素位置(xi、yi)が写像される画素位置(xo、yo)を求める手段と、
xoの小数部に0.5を加えた値の小数部が既定値以上であるか否か及び/又はyoの小数部に0.5を加えた値の小数部が既定値以上であるか否かの組み合わせに対して予め設定された複数の参照画素位置を取得する取得手段と、
前記複数の参照画素位置のそれぞれに対して前記写像の逆写像を行うことで、画素位置(xi’、yi’)を求める手段と、
前記xoの整数部xoc及びyoの整数部yocで表される画素位置(xoc、yoc)に対して前記逆写像を行うことで、画素位置(xi”、yi”)を求める手段と、
前記画素位置(xi”、yi”)、前記複数の参照画素位置のそれぞれについて求めた前記画素位置(xi’、yi’)、のうち、x座標値の整数部及びy座標値の整数部がそれぞれxi、yiと同じである画素位置を特定する特定手段と、
前記特定手段が特定した画素位置のx座標値の小数部及びy座標値の小数部と、前記入力画像中の画素位置(xi、yi)の周辺画素位置における画素の画素値と、を用いた補間処理を行うことにより、前記出力画像上の画素位置(xoc、yoc)における画素値を求める算出手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記取得手段は、
xoの小数部xofが0.0≦xof<0.5であれば、(xoc、yoc+1)、(xoc−1、yoc)、(xoc、yoc−1)、(xoc−1、yoc+1)を前記参照画素位置として取得し、
xoの小数部xofが0.5≦xof<1.0であれば、(xoc+1、yoc)、(xoc、yoc+1)、(xoc、yoc−1)、(xoc+1、yoc−1)を前記参照画素位置として取得する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記取得手段は、
xoの小数部xofが0.0≦xof<0.5且つyoの小数部yofが0.0≦yof<0.5であれば、(xoc−1、yoc)、(xoc、yoc−1)、(xoc−1、yoc−1)を前記参照画素位置として取得し、
xoの小数部xofが0.0≦xof<0.5且つyoの小数部yofが0.5≦yof<1.0であれば、(xoc−1、yoc)、(xoc、yoc+1)、(xoc−1、yoc+1)を前記参照画素位置として取得し、
xoの小数部xofが0.5≦xof<1.0且つyoの小数部yofが0.0≦yof<0.5であれば、(xoc+1、yoc)、(xoc、yoc−1)、(xoc+1、yoc−1)を前記参照画素位置として取得し、
xoの小数部xofが0.5≦xof<1.0且つyoの小数部yofが0.5≦yof<1.0であれば、(xoc、yoc+1)、(xoc+1、yoc)、(xoc+1、yoc+1)を前記参照画素位置として取得する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
入力画像に対して画像変形処理を行うことで出力画像を生成する画像処理装置が行う画像処理方法であって、
前記画像処理装置の写像手段が、前記入力画像に対して前記画像変形処理を行うことで該入力画像中の画素位置(xi、yi)が写像される画素位置(xo、yo)を求める工程と、
前記画像処理装置の取得手段が、xoの小数部に0.5を加えた値の小数部が既定値以上であるか否か及び/又はyoの小数部に0.5を加えた値の小数部が既定値以上であるか否かの組み合わせに対して予め設定された複数の参照画素位置を取得する取得工程と、
前記画像処理装置の逆写像手段が、前記複数の参照画素位置のそれぞれに対して前記写像の逆写像を行うことで、画素位置(xi’、yi’)を求める工程と、
前記画像処理装置の計算手段が、前記xoの整数部xoc及びyoの整数部yocで表される画素位置(xoc、yoc)に対して前記逆写像を行うことで、画素位置(xi”、yi”)を求める工程と、
前記画像処理装置の特定手段が、前記画素位置(xi”、yi”)、前記複数の参照画素位置のそれぞれについて求めた前記画素位置(xi’、yi’)、のうち、x座標値の整数部及びy座標値の整数部がそれぞれxi、yiと同じである画素位置を特定する特定工程と、
前記画像処理装置の算出手段が、前記特定工程で特定した画素位置のx座標値の小数部及びy座標値の小数部と、前記入力画像中の画素位置(xi、yi)の周辺画素位置における画素の画素値と、を用いた補間処理を行うことにより、前記出力画像上の画素位置(xoc、yoc)における画素値を求める算出工程と
を備えることを特徴とする画像処理方法。
【請求項5】
コンピュータを請求項1乃至3の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−4031(P2013−4031A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−137737(P2011−137737)
【出願日】平成23年6月21日(2011.6.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】