説明

画像処理装置および方法、並びにプログラム

【課題】より簡単かつ迅速にパノラマ画像の所望の方向の領域を切り出すことができるようにする。
【解決手段】画像処理装置は、球面に投影されたパノラマ画像の所定の視線方向の領域を切り出して表示させる場合、指定された視線方向により定まる仮想的なスクリーンに投影されるパノラマ画像の領域を出力画像として表示させる。すなわち、画像処理装置は、スクリーン上の位置に投影されるパノラマ画像の画素位置を近似関数により算出し、出力画像を生成する。このとき、画像処理装置は、近似関数による近似誤差の評価を行なう。具体的には画像処理装置は、スクリーン上の書き込み領域内の各位置に対応するパノラマ画像の画素位置を1つの近似関数を用いて求めるときに、近似誤差が許容量以下となるように書き込み領域の範囲を定める。本技術は、画像処理装置に適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は画像処理装置および方法、並びにプログラムに関し、特に、パノラマ画像の特定方向の領域を切り出して表示させる場合に、より簡単かつ迅速に所望の方向の領域を切り出すことができるようにした画像処理装置および方法、並びにプログラムに関する。
【背景技術】
【0002】
例えば、カメラを回転させながら連続して撮影した複数の画像を用いて、ワイドなパノラマ画像を生成する技術が知られている(例えば、特許文献1参照)。このようなパノラマ画像は、複数撮影された画像の一部が切り出されて合成されることで生成される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第4293053号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した技術では、パノラマ画像の一部を切り出して表示させることはできるが、ユーザの視線方向として所望の方向が指定された場合に、パノラマ画像における指定された方向の領域を切り出して表示させることはできなかった。
【0005】
本技術は、このような状況に鑑みてなされたものであり、パノラマ画像における所望の方向の領域を簡単かつ迅速に切り出すことができるようにするものである。
【課題を解決するための手段】
【0006】
本技術の一側面の画像処理装置は、入力画像と所定の位置関係を有する出力画像を生成する画像処理装置であって、前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成する極値データ生成部と、前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出する誤差算出部と、前記誤差が所定の閾値以下となる前記対象領域を決定する決定部と、決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成する画像生成部とを備える。
【0007】
前記近似関数を、前記位置関係を示す関数を前記第1の位置の周りで多項式展開した多項式近似関数とすることができる。
【0008】
前記近似関数を、(n−1)次多項式近似関数とし、前記誤差の算出に必要な前記関数を、前記位置関係を示す関数をn次微分することで得られる関数とすることができる。
【0009】
前記位置関係を規定する変数を、所定の基準位置からみた前記出力画像の方向、および前記基準位置から前記出力画像までの距離とすることができる。
【0010】
前記出力画像上の所定の位置に対応する前記入力画像上の位置を、前記所定の位置および前記基準位置を通る直線と、前記入力画像との交点の位置とすることができる。
【0011】
前記入力画像を、球面に投影された画像、または円筒面に投影された画像とすることができる。
【0012】
本技術の一側面の画像処理方法またはプログラムは、入力画像と所定の位置関係を有する出力画像を生成する画像処理方法またはプログラムであって、前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成し、前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出し、前記誤差が所定の閾値以下となる前記対象領域を決定し、決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成するステップを含む。
【0013】
本技術の一側面においては、入力画像と所定の位置関係を有する出力画像を生成する場合に、前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータが生成され、前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差が算出され、前記誤差が所定の閾値以下となる前記対象領域が決定され、決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像が生成される。
【発明の効果】
【0014】
本技術の一側面によれば、パノラマ画像における所望の方向の領域を簡単かつ迅速に切り出すことができる。
【図面の簡単な説明】
【0015】
【図1】パノラマ画像が投影されている球面について説明する図である。
【図2】パノラマ画像が投影されている円筒面について説明する図である。
【図3】パノラマ画像の所望の領域を切り出すための擬似コードを示す図である。
【図4】パノラマ画像の所望の領域を切り出すための擬似コードを示す図である。
【図5】パノラマ画像の一部が投影されるスクリーンについて説明する図である。
【図6】n次微分関数が極値をとるときの値を求める擬似コードを示す図である。
【図7】n次微分関数が極値をとるときの値を求める擬似コードを示す図である。
【図8】n次微分関数が極値をとるときの値を求める擬似コードを示す図である。
【図9】n次微分関数が極値をとるときの値を求める擬似コードを示す図である。
【図10】画像処理装置の構成例を示す図である。
【図11】画像出力処理について説明するフローチャートである。
【図12】終了位置算出処理について説明するフローチャートである。
【図13】書き込み処理について説明するフローチャートである。
【図14】画像処理装置の構成例を示す図である。
【図15】画像出力処理について説明するフローチャートである。
【図16】終了位置算出処理について説明するフローチャートである。
【図17】書き込み処理について説明するフローチャートである。
【図18】コンピュータの構成例を示す図である。
【発明を実施するための形態】
【0016】
以下、図面を参照して、本技術を適用した実施の形態について説明する。
【0017】
〈本技術の概要〉
[パノラマ画像について]
まず、本技術の概要について説明する。
【0018】
一般的に、ワイドなパノラマ画像は、透視投影変換によって平面に射影した画像として生成されることは、あまり行なわれていない。そのような理由として、パノラマ画像の周辺部分が極端に歪んでしまうことと、180度を超えたワイドな画像は表現できないことがあげられる。そこで、通常は、パノラマ画像が球面に投影した画像、または円筒面に投影した画像として保存されることが多い。
【0019】
そこで、まず球面に投影したパノラマ画像と、円筒面に投影したパノラマ画像について説明する。
【0020】
パノラマ画像が球面に投影された画像である場合、パノラマ画像(2次元画像)の横幅は2πとされ、パノラマ画像の高さはπとされる。すなわち、2次元画像の座標系(以下、SxSy座標系と称する)上の任意の位置を(Sx,Sy)とした場合、パノラマ画像は、0≦Sx≦2π,−π/2≦Sy≦π/2の矩形領域の画像である。
【0021】
そして、この2次元画像の各位置(Sx,Sy)には、3次元のXwYwZw座標系(以下、ワールド座標系とも称する)における次式(1)に示す方向から原点に向かって飛来する光が投影されている。
【0022】
【数1】

【0023】
なお、式(1)においてXw、Yw、およびZwは、それぞれワールド座標系におけるXw座標、Yw座標、およびZw座標を示している。
【0024】
すなわち、図1に示すようにワールド座標系の原点Oを中心とした半径1の球面SP11を正距円筒図法により展開した画像が、パノラマ画像(2次元画像)である。なお、図1において、図中、右斜め方向、下方向、および左斜め方向は、それぞれワールド座標系のXw軸、Yw軸、およびZw軸の方向を示している。
【0025】
図1の例では、Zw軸と球面SP11とが交わる位置が、SxSy座標系の原点となっている。したがって、球面SP11上の円弧AR11の長さがSxであり、円弧AR12の長さがSyである。また、ワールド座標系の原点Oを通る直線L11の方向が、式(1)により示される方向である。
【0026】
これに対して、パノラマ画像が円筒面に投影された画像である場合、パノラマ画像(2次元画像)の横幅は2πとされ、パノラマ画像の高さは任意の高さHとされる。すなわち、2次元画像の座標系(以下、CxCy座標系と称する)上の任意の位置を(Cx,Cy)とした場合、パノラマ画像は、0≦Cx≦2π,−H/2≦Cy≦H/2の矩形領域の画像である。
【0027】
そして、この2次元画像の各位置(Cx,Cy)には、3次元のXwYwZw座標系(ワールド座標系)における次式(2)に示す方向から原点に向かって飛来する光が投影されている。
【0028】
【数2】

【0029】
なお、式(2)においてXw、Yw、およびZwは、それぞれワールド座標系におけるXw座標、Yw座標、およびZw座標を示している。
【0030】
すなわち、図2に示すようにワールド座標系のYw軸を中心とした半径1の円筒の側面である円筒面CL11を展開した画像が、パノラマ画像(2次元画像)である。なお、図2において、図中、右斜め方向、下方向、および左斜め方向は、それぞれワールド座標系のXw軸、Yw軸、およびZw軸の方向を示している。
【0031】
図2の例では、Zw軸と円筒面CL11とが交わる位置が、CxCy座標系の原点となっている。したがって、円筒面CL11上の円弧AR21の長さがCxであり、直線L21の長さがCyである。また、ワールド座標系の原点Oを通る直線L22の方向が、式(2)により示される方向である。
【0032】
[パノラマ画像の切り出し表示について]
ところで、このようなワイドなパノラマ画像から、その一部分を切り出して表示デバイスに表示させ、パノラマ画像を観賞したいという要望がある。
【0033】
いま、パノラマ画像から切り出された画像が表示される表示デバイスの表示画面の横方向(Sx方向またはCx方向に対応する方向)の画素数がWv画素であり、表示画面の縦方向(Sy方向またはCy方向に対応する方向)の画素数がHv画素であるとする。
【0034】
例えば、Wv=800,Hv=600であり、これらの画素数WvおよびHvは固定の値とされる。また、画素数WvおよびHvは偶数であるとする。
【0035】
ユーザは、表示デバイスにパノラマ画像の一部を表示させる場合、パノラマ画像のどの領域を表示させるかを指定する。具体的には、例えば2つの角度θyawおよびθpitchから定まるユーザの視線方向と、焦点距離Fvとがユーザにより指定される。
【0036】
このようにユーザの視線方向と焦点距離が指定されると、パノラマ画像における視線方向の領域が、焦点距離で定まるズーム倍率で表示されることになる。
【0037】
具体的には、ワイドなパノラマ画像が球面に投影された画像である場合には、図3に示す擬似コードが実行されて表示デバイスに画像が表示される。
【0038】
すなわち、横Wv,縦Hvの大きさのキャンバス領域がメモリ上に確保される。そして、キャンバス領域上のXvYv座標系の各位置(Xv,Yv)(但し、−Wv/2≦Xv≦Wv/2,−Hv/2≦Yv≦Hv/2)について、次式(3)を満たすパノラマ画像上の位置(Sx,Sy)が求められる。
【0039】
【数3】

【0040】
XvYv座標系上の各位置(Xv,Yv)に対応するパノラマ画像上の位置(Sx,Sy)が求められると、位置(Sx,Sy)にあるパノラマ画像の画素の画素値が、キャンバス領域上の対応する位置(Xv,Yv)に書き込まれる。すなわち、パノラマ画像の位置(Sx,Sy)の画素の画素値が、キャンバス領域上の対応する位置(Xv,Yv)の画素の画素値とされる。
【0041】
このようにしてキャンバス領域上の各位置に画素値が書き込まれると、キャンバス領域の画像が、パノラマ画像上における、ユーザにより指定された視線方向および焦点距離の領域の画像として出力される。
【0042】
同様に、ワイドなパノラマ画像が円筒面に投影された画像である場合には、図4に示す擬似コードが実行されて表示デバイスに画像が表示される。
【0043】
すなわち、横Wv,縦Hvの大きさのキャンバス領域がメモリ上に確保される。そして、キャンバス領域上のXvYv座標系の各位置(Xv,Yv)(但し、−Wv/2≦Xv≦Wv/2,−Hv/2≦Yv≦Hv/2)について、次式(4)を満たすパノラマ画像上の位置(Cx,Cy)が求められる。
【0044】
【数4】

【0045】
XvYv座標系上の各位置(Xv,Yv)に対応するパノラマ画像上の位置(Cx,Cy)が求められると、位置(Cx,Cy)にあるパノラマ画像の画素の画素値が、キャンバス領域上の対応する位置(Xv,Yv)に書き込まれる。
【0046】
このようにしてキャンバス領域上の各位置に画素値が書き込まれると、キャンバス領域の画像が、パノラマ画像上における、ユーザにより指定された視線方向および焦点距離の領域の画像として出力される。
【0047】
これらの図3および図4に示した擬似コードで得られる画像は、例えば図5に示す画像となる。なお、図中、右斜め方向、下方向、および左斜め方向は、それぞれワールド座標系のXw軸方向、Yw軸方向、およびZw軸方向を示している。
【0048】
図5では、ワールド座標系上の空間に仮想的なスクリーンSC11が設けられており、このスクリーンSC11は、図3および図4の擬似コードの実行時にメモリ上に確保されるキャンバス領域に対応する。また、この例では、スクリーンSC11(キャンバス領域)を基準としたXvYv座標系の原点O’は、スクリーンSC11の中心に位置している。
【0049】
いま、ワールド座標系の原点Oを通り、Zw軸と平行な直線を、Yw軸を軸として角度θyawだけ回転させた後、さらにXwZw平面に対して角度θpitchだけ回転させた軸AX11を考える。この軸AX11は、ワールド座標系の原点Oと、XvYv座標系の原点O’とを結ぶ直線であり、軸AX11の長さ、つまり原点Oから原点O’までの距離は焦点距離Fvとなっている。また、原点Oにユーザの視点があるとすると、軸AX11の方向は、ユーザにより指定された角度θyawと角度θpitchから定まる視線方向、つまりスクリーンSC11が位置する方向である。
【0050】
したがって、ユーザが角度θyawおよび角度θpitchから定まる視線方向と、焦点距離Fvとを指定することは、パノラマ画像から切り出された画像が表示されるスクリーンSC11の位置を指定することである。
【0051】
スクリーンSC11は、軸AX11に直交する平面であり、このスクリーンSC11の大きさは、横Wv,縦Hvとなる。すなわちXvYv座標系において、−Wv/2≦Xv≦Wv/2,−Hv/2≦Yv≦Hv/2の範囲の領域がスクリーンSC11の領域となる(有効な領域となる)。
【0052】
ここで、XvYv座標系におけるスクリーンSC11上の任意の位置(Xv,Yv)は、ワールド座標系上では、次式(5)で表わされる。
【0053】
【数5】

【0054】
また、上述したように、SxSy座標系におけるワイドなパノラマ画像上の各位置(Sx,Sy)には、ワールド座標系における式(1)に示される方向からワールド座標系の原点Oに向かって飛来する光が投影されている。同様に、CxCy座標系におけるパノラマ画像上の各位置(Cx,Cy)には、ワールド座標系における式(2)に示される方向から原点Oに向かって飛来する光が投影されている。
【0055】
したがって、式(3)または式(4)により、スクリーンSC11上の各位置(Xv,Yv)の画素の画素値を確定していくことは、ワールド座標系における、ある方向から原点Oに向かって飛来する光を、スクリーンSC11と交わる位置に投影していくことと同値である。
【0056】
そのため、図3または図4に示した擬似コードを実行することで出力される画像は、あたかもスクリーンSC11上に投影されている画像(パノラマ画像)となる。すなわち、ユーザは、角度θyawおよび角度θpitchから定まる視線方向と、焦点距離Fvとを指定することで、仮想的なスクリーンSC11に投影された画像(風景)を表示デバイスで観賞することができる。スクリーンSC11に投影された画像、つまり表示デバイスに表示される画像は、ワイドなパノラマ画像から切り出された、パノラマ画像の一部の領域の画像である。
【0057】
なお、焦点距離Fvの値を大きくすると、望遠レンズで撮影したかのような画像が表示デバイスに表示され、焦点距離Fvの値を小さくすると、広角レンズで撮影したかのような画像が、表示デバイスに表示される。
【0058】
また、以上においてした説明から分かるように、角度θyawは0度以上、360度未満であり、角度θpitchは−90度以上、90度未満である。さらに、焦点距離Fvの取り得る値は、例えば0.1以上、10以下とされる。
【0059】
[本技術について]
ところで、パノラマ画像から一部の領域を切り出して表示デバイスに表示させるには、XvYv座標系におけるスクリーンSC11(キャンバス領域)の各位置(Xv,Yv)について、上述した式(3)または式(4)の計算を行なわなくてはならない。しかしながら、これらの計算は三角関数の演算や割り算が必要な複雑な計算である。そのため、演算量が膨大となり、処理速度が遅くなってしまう。
【0060】
そこで、本技術では、多項式近似の計算を行なうことにより、スクリーンの各位置に投影されるパノラマ画像の領域を求める計算の演算量をより少なくし、処理速度を向上させる。しかも、演算時には、近似による誤差を評価することで、近似計算による最悪誤差が所望の閾値を超えないようにし、高品質な画像を提示できるようにする。
【0061】
換言すれば、本技術は、図3または図4に示した擬似コードにおける演算量を低減させることにより、簡単な計算で、ワイドなパノラマ画像から一部の領域を切り出して表示させることができるようにするものである。
【0062】
パノラマ画像の一部の領域を切り出すには、複雑な計算を行なわなければならないので、本技術では、その計算が多項式近似により簡略化されて処理速度の向上が図られるが、多項式近似はあくまで近似であるため、多項式近似による計算では計算誤差が発生する。
【0063】
本技術では、上述した図3や図4に示した擬似コードの実行時に行なわれる計算に対して、多項式近似が適用される。
【0064】
すなわち、XvYv座標系におけるスクリーン(キャンバス領域)の所定の位置(Xv,Yv)の近傍では、ある多項式近似により計算が行なわれる。そして、多項式近似の計算誤差がある程度大きくなった場合、つまり計算誤差が所定の閾値を超えるようになった場合には、計算誤差が所定の閾値を超える位置からは、別の多項式近似で計算が行なわれていく。
【0065】
例えば図3や図4に示した擬似コード実行時の計算に多項式近似を適用する場合、計算誤差がどの位置で閾値を超えるかを特定することができないと、多項式近似による高速処理で得られる画像の画質が、計算誤差により低下してしまう可能性があった。つまり、最終的に得られる画像が適切な画像でなくなってしまう可能性があった。
【0066】
そのため本技術では、多項式近似による計算誤差を評価し、その評価に応じて計算に用いる多項式近似を切り替えていく。これにより、パノラマ画像における所望の方向の領域を簡単かつ迅速に切り出すことができ、しかも切り出された画像として、より高品質な画像を提示することができるようになる。
【0067】
[多項式近似について]
まず、本技術について説明する前に、多項式近似(テイラー展開)について説明する。
【0068】
微分可能な任意の関数G(L)について、次式(6)の関係が成立する。すなわち、式(6)は、関数G(L)をテイラー展開することで得られる。
【0069】
【数6】

【0070】
ここで、関数G(L)を(n−1)次多項式近似した関数Ga(L)は、次式(7)により示される関数となる。
【0071】
【数7】

【0072】
これらの式(6)および式(7)から、次式(8)を導くことができる。すなわち、式(8)は、関数G(L)と、関数G(L)を(n−1)次多項式近似した関数Ga(L)との誤差を示している。
【0073】
【数8】

【0074】
また、任意の0<L≦Lについて、次式(9)が成立する。
【0075】
【数9】

【0076】
したがって、関数G(L)の所定のLが次式(10)を満たせば、関数G(L)に代えて近似関数である関数Ga(L)を用いても、閉区間[0,L]内のすべての位置において、近似による計算誤差はたかだかεである。
【0077】
【数10】

【0078】
以上が、テイラーの定理についての説明である。
【0079】
[多項式近似の適用について]
それでは、次に、上述した式(3)や式(4)に対してテイラーの定理を適用した場合について考える。なお、以降において、nは固定値であり、例えばnは3または4程度の値とされる。
【0080】
まず、上述した式(3)を変形することで次式(11)が得られる。
【0081】
【数11】

【0082】
同様に、上述した式(4)を変形することで次式(12)が得られる。
【0083】
【数12】

【0084】
なお、式(3)および式(4)は比例関係の式であり、それらの式の右辺の各要素のみを焦点距離Fvで除算しても比例関係は保たれるので、式(11)および式(12)が導かれる。
【0085】
式(11)において、Sx,Syは、それぞれ(Xv/Fv)、(Yv/Fv)、θyaw、およびθpitchの関数となるので、これを明示すると次式(13)となる。
【0086】
【数13】

【0087】
同様に、式(12)において、Cx,Cyは、それぞれ(Xv/Fv)、(Yv/Fv)、θyaw、およびθpitchの関数となるので、これを明示すると次式(14)となる。
【0088】
【数14】

【0089】
さて、上述した式(11)から次式(15)の関係が導けるので、以下の式(16)の関係が成立する。
【0090】
【数15】

【0091】
【数16】

【0092】
同様に、上述した式(12)から次式(17)の関係が導けるので、以下の式(18)の関係が成立する。
【0093】
【数17】

【0094】
【数18】

【0095】
ここで、次式(19)で定義される関数Us(x,y,θ)、および関数Vs(x,y,θ)と、式(20)で定義される関数Uc(x,y,θ)、および関数Vc(x,y,θ)とを考える。
【0096】
【数19】

【0097】
【数20】

【0098】
いま、角度θyaw=0である場合における式(11)と式(19)とを比較し、さらに式(16)を考慮すると、次式(21)が導かれる。
【0099】
【数21】

【0100】
同様に、角度θyaw=0である場合における式(12)と式(20)とを比較し、さらに式(18)を考慮すると、次式(22)が導かれる。
【0101】
【数22】

【0102】
さらに、式(21)における最初の式、つまり関数Sx(Xv/Fv,Yv/Fv,θyawpitch)にテイラーの定理を適用すると、次式(23)が得られる。
【0103】
【数23】

【0104】
なお、式(23)は、変数Yvについて、Yvの周りで関数Sx(Xv/Fv,Yv/Fv,θyawpitch)をテイラー展開して得られる式である。また、式(23)においてYvは、開区間(Yv,Yv)内の適切な値である。
【0105】
したがって、ある特定のXv,ある特定のFv,ある特定のθyaw,ある特定のθpitchと、閉区間[Yv,Yv]内の任意のYvの値に対して、関数Sx(Xv/Fv,Yv/Fv,θyawpitch)を次式(24)で示す多項式で近似した場合、その近似による誤差は、式(25)に示される値を超えることはない。
【0106】
【数24】

【0107】
【数25】

【0108】
なお、式(24)に示される関数は、式(21)に示される最初の式をYvの周りで多項式展開した(n−1)次多項式近似関数である。
【0109】
Sxと同様のことがSy,Cx,Cyについてもいえる。
【0110】
すなわち、ある特定のXv,ある特定のFv,ある特定のθyaw,ある特定のθpitchと、閉区間[Yv,Yv]内の任意のYvの値に対して、式(21)の関数Sy(Xv/Fv,Yv/Fv,θyawpitch)を次式(26)で示す多項式で近似した場合、その近似による誤差は、式(27)に示される値を超えることはない。
【0111】
【数26】

【0112】
【数27】

【0113】
また、ある特定のXv,ある特定のFv,ある特定のθyaw,ある特定のθpitchと、閉区間[Yv,Yv]内の任意のYvの値に対して、式(22)の関数Cx(Xv/Fv,Yv/Fv,θyawpitch)を次式(28)で示す多項式で近似した場合、その近似による誤差は、式(29)に示される値を超えることはない。
【0114】
【数28】

【0115】
【数29】

【0116】
さらに、ある特定のXv,ある特定のFv,ある特定のθyaw,ある特定のθpitchと、閉区間[Yv,Yv]内の任意のYvの値に対して、式(22)の関数Cy(Xv/Fv,Yv/Fv,θyawpitch)を次式(30)で示す多項式で近似した場合、その近似による誤差は、式(31)に示される値を超えることはない。
【0117】
【数30】

【0118】
【数31】

【0119】
[各関数の極値のリストアップについて]
ところで、式(19)で定義した関数Us(x,y,θ)をyによりn回偏微分して得られた関数において、xとθを固定して、yを変数とみたときの極値を考える。
【0120】
すなわち、図6に示す擬似コードを実行することにより、関数Us(x,y,θ)のn次微分関数が極値をとるときのyの値を全てリストアップしたとする。具体的には、各xおよびθの組について、関数Us(x,y,θ)のn次微分関数が次式(32)または式(33)を満たすときのyの値が、極値となるyの値yus(x,θ)(i)として登録される。
【0121】
【数32】

【0122】
【数33】

【0123】
このとき、固定値であるθの値は、-89.9≦θ≦89.9までの範囲で、つまり-89.9から89.9まで刻み幅0.1で変化するように定められる。
【0124】
また、固定値であるxの値は、-10×(Wv/2)+0.1≦x≦10×(Wv/2)-0.1の範囲で、つまり-10×(Wv/2)+0.1から10×(Wv/2)-0.1まで刻み幅0.1で変化するように定められる。さらに、変数であるyの値は、-10×(Hv/2)+0.1≦y≦10×(Hv/2)-0.1の範囲で、つまり-10×(Hv/2)+0.1から10×(Hv/2)-0.1まで刻み幅0.1で変化するように定められる。ここで、xの値を定めるWv、およびyの値を定めるHvは、パノラマ画像の一部の領域が投影されるスクリーンSC11の横幅(Xv軸方向の幅)および縦幅(Yv軸方向の高さ)である。
【0125】
なお、関数Us(x,y,θ)のn次微分関数が極値となるyの値yus(x,θ)(i)における値iは、yの値が小さい方から何番目の極値となるyであるかを示している。すなわち、所定の固定値x,θに対して、関数Us(x,y,θ)をyによりn回偏微分して得られる関数について、yを変数とみたときに極値となるyの値は、1つとは限らないので、何番目の極値であるかが添え字「i」が用いられて表現されている。
【0126】
したがって、関数Us(x,y,θ)のyによるn次微分関数について、yを変数とみたときに、そのn次微分関数が極値をとるyの値は、yus(x,θ)(1),yus(x,θ)(2),yus(x,θ)(3),・・・となる。
【0127】
また、この例ではx、y、θの各値の刻み幅は0.1とされているが、これらの値の刻み幅は0.1に限らずどのような値であってもよい。但し、これらの値の刻み幅を細かくするほど、値yus(x,θ)(i)の算出精度は向上するが、リストアップされる値yus(x,θ)(i)のデータが膨大な量となるので、各値の刻み幅は0.1程度が望ましい。
【0128】
さらに、n次微分関数が極値をとるときのyの値yus(x,θ)(i)のみが登録されるようにしてもよいし、値yus(x,θ)(i)とそのときの極値とが登録されるようにしてもよい。以下においては、値yus(x,θ)(i)とそのときの極値とが登録されるものとして説明を続ける。
【0129】
以上のようにしてリストアップされた、各固定値x,θに対する関数Us(x,y,θ)のn次微分関数の極値をとるときのyの値yus(x,θ)(i)は、上述した式(25)に示されるSxの近似誤差の最大値の算出に用いられる。
【0130】
関数Us(x,y,θ)と同様に、式(19)で定義した関数Vs(x,y,θ),式(20)で定義した関数Uc(x,y,θ)および関数Vc(x,y,θ)についても、それらの関数の変数yによるn次微分関数が極値をとるときのyの値をリストアップすることを考える。
【0131】
すなわち、まず図7に示す擬似コードを実行することにより、関数Vs(x,y,θ)をyによりn回偏微分して得られたn次微分関数において、xとθを固定して、yを変数とみたときにn次微分関数が極値をとるときのyの値を全てリストアップしたとする。
【0132】
具体的には、各xおよびθについて、関数Vs(x,y,θ)のn次微分関数が次式(34)または式(35)を満たすときのyの値が、極値となるyの値yvs(x,θ)(i)として登録される。より詳細には、値yvs(x,θ)(i)とそのときの極値とが登録される。
【0133】
【数34】

【0134】
【数35】

【0135】
このとき、固定値であるθの値は、-89.9から89.9まで刻み幅0.1で変化するように定められる。また、固定値であるxの値は、-10×(Wv/2)+0.1から10×(Wv/2)-0.1まで刻み幅0.1で変化するように定められ、変数であるyの値は、-10×(Hv/2)+0.1から10×(Hv/2)-0.1まで刻み幅0.1で変化するように定められる。
【0136】
なお、関数Vs(x,y,θ)のn次微分関数が極値となるyの値yvs(x,θ)(i)における値iは、yの値が小さい方から何番目の極値となるyであるかを示している。
【0137】
以上のようにしてリストアップされた、各固定値x,θに対する関数Vs(x,y,θ)のn次微分関数の極値をとるときのyの値yvs(x,θ)(i)は、上述した式(27)に示されるSyの近似誤差の最大値の算出に用いられる。
【0138】
また、図8に示す擬似コードを実行することにより、関数Uc(x,y,θ)をyによりn回偏微分して得られたn次微分関数において、xとθを固定して、yを変数とみたときにn次微分関数が極値をとるときのyの値を全てリストアップしたとする。
【0139】
具体的には、各xおよびθについて、関数Uc(x,y,θ)のn次微分関数が次式(36)または式(37)を満たすときのyの値が、極値となるyの値yuc(x,θ)(i)として登録される。より詳細には、値yuc(x,θ)(i)とそのときの極値とが登録される。
【0140】
【数36】

【0141】
【数37】

【0142】
このとき、固定値であるθの値は、-89.9から89.9まで刻み幅0.1で変化するように定められる。また、固定値であるxの値は、-10×(Wv/2)+0.1から10×(Wv/2)-0.1まで刻み幅0.1で変化するように定められ、変数であるyの値は、-10×(Hv/2)+0.1から10×(Hv/2)-0.1まで刻み幅0.1で変化するように定められる。
【0143】
なお、関数Uc(x,y,θ)のn次微分関数が極値となるyの値yuc(x,θ)(i)における値iは、yの値が小さい方から何番目の極値となるyであるかを示している。
【0144】
以上のようにしてリストアップされた、各固定値x,θに対する関数Uc(x,y,θ)のn次微分関数の極値をとるときのyの値yuc(x,θ)(i)は、上述した式(29)に示されるCxの近似誤差の最大値の算出に用いられる。
【0145】
さらに、図9に示す擬似コードを実行することにより、関数Vc(x,y,θ)をyによりn回偏微分して得られたn次微分関数において、xとθを固定して、yを変数とみたときにn次微分関数が極値をとるときのyの値を全てリストアップしたとする。
【0146】
具体的には、各xおよびθについて、関数Vc(x,y,θ)のn次微分関数が次式(38)または式(39)を満たすときのyの値が、極値となるyの値yvc(x,θ)(i)として登録される。より詳細には、値yvc(x,θ)(i)とそのときの極値とが登録される。
【0147】
【数38】

【0148】
【数39】

【0149】
このとき、固定値であるθの値は、-89.9から89.9まで刻み幅0.1で変化するように定められる。また、固定値であるxの値は、-10×(Wv/2)+0.1から10×(Wv/2)-0.1まで刻み幅0.1で変化するように定められ、変数であるyの値は、-10×(Hv/2)+0.1から10×(Hv/2)-0.1まで刻み幅0.1で変化するように定められる。
【0150】
なお、関数Vc(x,y,θ)のn次微分関数が極値となるyの値yvc(x,θ)(i)における値iは、yの値が小さい方から何番目の極値となるyであるかを示している。
【0151】
以上のようにしてリストアップされた、各固定値x,θに対する関数Vc(x,y,θ)のn次微分関数の極値をとるときのyの値yvc(x,θ)(i)は、上述した式(31)に示されるCyの近似誤差の最大値の算出に用いられる。
【0152】
[近似誤差の評価について]
さて、以上において説明した各関数のn次微分関数が極値をとるときの値を用いることで、Sx,Sy,Cx,Cyの各近似誤差を評価することが可能となる。
【0153】
すなわち、例えば閉区間[Yv,Yv]において、上述した式(25)に示されるSxの近似誤差の値は、次式(40)乃至式(42)のそれぞれにより求まる3つの値の最大値と等しくなる。
【0154】
【数40】

【0155】
【数41】

【0156】
【数42】

【0157】
なお、式(40)乃至式(42)において、Xaは0.1単位の所定のxの値であり、かつXv/Fvになるべく近い値(最も近い値)である。また、θaは0.1単位の所定のθの値であり、かつθpitchになるべく近い値(最も近い値)である。
【0158】
式(40)の計算では、図6の擬似コードの演算によりリストアップされた値yus(x,θ)(i)が用いられる。つまり式(40)の計算は、固定のx=xa,θ=θaについて、Yv/Fv<y<Yv/Fvの範囲において関数Us(x,y,θ)のn次微分関数の絶対値の最大値を求め、得られた最大値に|Yv−Yv/(n!×Fv)を乗算した値を出力値として求める計算である。
【0159】
ここで、n次微分関数の絶対値の最大値を求める計算は、リストアップされた値yus(x,θ)(i)のうち、Yv/Fv<yus(xa,θa)(i)<Yv/Fvを満たすものについて、その値yus(xa,θa)(i)におけるn次微分関数の絶対値を求め、さらにそれらの絶対値の最大値を求める計算である。値yus(xa,θa)(i)におけるn次微分関数の絶対値とは、値yus(xa,θa)(i)に対応付けられた極値の絶対値である。
【0160】
これは、YvからYvまでの値のなかで、式(25)に示す誤差が最大となる値を求めるときには、YvからYvまでの間にある極値についてのみ調べればよいからである。つまり、誤差が最大となる可能性のあるYvについてのみ調べればよいからである。
【0161】
また、式(40)の計算では、閉区間[Yv,Yv]の両端、つまりYvおよびYvについては、計算が行なわれない。そこで、上述した式(41)および式(42)の計算を行なうことで、Yv,Yv、つまりy=Yv/Fv,Yv/FvにおけるSxの近似誤差の値も算出される。
【0162】
したがって、以上の式(40)乃至式(42)の計算により得られた各値のうちの最大値が、閉区間[Yv,Yv]におけるSxの近似誤差の値となる。なお、本来であれば、式(40)の計算は、xの値がXv/Fvで、かつθの値がθpitchであるときの極値で計算すべきであるが、yus(x,θ)(i)のxおよびθは0.1単位でしかリストアップされていないので、最も近いyus(x,θ)(i)で極値が近似されている。
【0163】
Sxと同様にして、Sy,Cx,Cyの各近似誤差を評価することが可能である。
【0164】
例えば、閉区間[Yv,Yv]において、上述した式(27)に示されるSyの近似誤差の値は、次式(43)乃至式(45)のそれぞれにより求まる3つの値の最大値と等しくなる。
【0165】
【数43】

【0166】
【数44】

【0167】
【数45】

【0168】
なお、式(43)乃至式(44)において、Xaは0.1単位の所定のxの値であり、かつXv/Fvになるべく近い値(最も近い値)である。また、θaは0.1単位の所定のθの値であり、かつθpitchになるべく近い値(最も近い値)である。
【0169】
式(43)の計算では、図7の擬似コードの演算によりリストアップされた値yvs(x,θ)(i)に対応付けられている極値が用いられる。つまり式(43)の計算は、固定のx=xa,θ=θaについて、Yv/Fv<y<Yv/Fvの範囲において関数Vs(x,y,θ)のn次微分関数の絶対値の最大値を求めることで行なわれる。
【0170】
また、式(43)の計算では、閉区間[Yv,Yv]の両端については、計算が行なわれないので、式(44)および式(45)の計算を行なうことで、Yv,YvにおけるSyの近似誤差の値も算出される。したがって、以上の式(43)乃至式(45)の計算により得られた各値のうちの最大値が、閉区間[Yv,Yv]におけるSyの近似誤差の値となる。
【0171】
また、例えば閉区間[Yv,Yv]において、上述した式(29)に示されるCxの近似誤差の値は、次式(46)乃至式(48)のそれぞれにより求まる3つの値の最大値と等しくなる。
【0172】
【数46】

【0173】
【数47】

【0174】
【数48】

【0175】
なお、式(46)乃至式(48)において、Xaは0.1単位の所定のxの値であり、かつXv/Fvになるべく近い値(最も近い値)である。また、θaは0.1単位の所定のθの値であり、かつθpitchになるべく近い値(最も近い値)である。
【0176】
式(46)の計算では、図8の擬似コードの演算によりリストアップされた値yuc(x,θ)(i)に対応付けられている極値が用いられる。つまり式(46)の計算は、固定のx=xa,θ=θaについて、Yv/Fv<y<Yv/Fvの範囲において関数Uc(x,y,θ)のn次微分関数の絶対値の最大値を求めることで行なわれる。
【0177】
また、式(46)の計算では、閉区間[Yv,Yv]の両端については、計算が行なわれないので、式(47)および式(48)の計算を行なうことで、Yv,YvにおけるCxの近似誤差の値も算出される。したがって、以上の式(46)乃至式(48)の計算により得られた各値のうちの最大値が、閉区間[Yv,Yv]におけるCxの近似誤差の値となる。
【0178】
さらに、例えば閉区間[Yv,Yv]において、上述した式(31)に示されるCyの近似誤差の値は、次式(49)乃至式(51)のそれぞれにより求まる3つの値の最大値と等しくなる。
【0179】
【数49】

【0180】
【数50】

【0181】
【数51】

【0182】
なお、式(49)乃至式(51)において、Xaは0.1単位の所定のxの値であり、かつXv/Fvになるべく近い値(最も近い値)である。また、θaは0.1単位の所定のθの値であり、かつθpitchになるべく近い値(最も近い値)である。
【0183】
式(49)の計算では、図9の擬似コードの演算によりリストアップされた値yvc(x,θ)(i)に対応付けられている極値が用いられる。つまり式(49)の計算は、固定のx=xa,θ=θaについて、Yv/Fv<y<Yv/Fvの範囲において関数Vc(x,y,θ)のn次微分関数の絶対値の最大値を求めることで行なわれる。
【0184】
また、式(49)の計算では、閉区間[Yv,Yv]の両端については、計算が行なわれないので、式(50)および式(51)の計算を行なうことで、Yv,YvにおけるCyの近似誤差の値も算出される。したがって、以上の式(49)乃至式(51)の計算により得られた各値のうちの最大値が、閉区間[Yv,Yv]におけるCyの近似誤差の値となる。
【0185】
以上において説明したことをまとめると、次のことがいえる。
【0186】
すなわち、パノラマ画像が球面に投影された画像である場合、x,y,θの関数である関数Us(x,y,θ)と関数Vs(x,y,θ)を式(19)により定義し、式(3)により定義されるθyaw,θpitch,Fv,Xv,Yvの関数であるSxおよびSyの近似式を考える。
【0187】
具体的には、θyaw,θpitch,Fv,Xvのそれぞれを任意の値に固定して、Yvとして閉区間[Yv,Yv]の範囲で、関数Sxを式(24)で近似し、関数Syを式(26)で近似したとする。
【0188】
このとき、関数Sxの値と、式(24)で示される関数Sxの近似値との差、すなわち近似による誤差は、式(40)乃至式(42)により得られる3つの値の最大値を超えることはない。また、関数Syの値と、式(26)で示される関数Syの近似値との差(近似誤差)は、式(43)乃至式(45)により得られる3つの値の最大値を超えることはない。
【0189】
ここで、式(40)における値yus(x,θ)(i)と、式(43)における値yvs(x,θ)(i)は、それぞれ図6および図7に示した擬似コードを実行することにより生成されるデータである。また、式(40)乃至式(45)において、Xaは0.1単位の値であり、かつXv/Fvになるべく近い値である。同様にθaは0.1単位の値であり、かつθpitchになるべく近い値である。
【0190】
このように関数Us(x,y,θ)や関数Vs(x,y,θ)の偏導関数の極値に関するデータをリストアップすることで、近似による誤差を定量的に評価することができる。これにより、近似誤差の許容範囲内で、かつより少ない計算でパノラマ画像の一部の領域を切り出すことができる。
【0191】
以上のことから、パノラマ画像が球面に投影された画像である場合、所定の固定値Xvに対して、スクリーンSC11(キャンバス領域)の位置(Xv,Yv)から位置(Xv,Yv)までの領域には、次のようにしてパノラマ画像の画素を書き込めばよい。
【0192】
すなわち、位置(Xv,Yv)から位置(Xv,Yv)までの各位置(Xv,Yv)に対して式(24)および式(26)の近似計算が行なわれ、スクリーンSC11上の位置(Xv,Yv)に対応するパノラマ画像上の位置(Sx,Sy)が算出される。そして、このようにして算出されたパノラマ画像上の位置(Sx,Sy)にある画素の画素値が、スクリーンSC11上の位置(Xv,Yv)の画素の画素値として書き込まれる。
【0193】
また、位置(Xv,Yv)がスクリーンSC11のYv軸方向側の端でない場合には、位置(Xv,Yv)から位置(Xv,Yv)までの画素の書き込み後、さらに位置(Xv,Yv+1)が新たな位置(Xv,Yv)とされ、画素の書き込みが繰り返し行われる。
【0194】
以上の処理により簡単な計算で、迅速にワイドなパノラマ画像の一部を切り出して表示させることができる。なお、スクリーンSC11上の位置(Xv,Yv)におけるYv座標であるYvは、Yv=Yvに対して、上述した式(40)乃至式(45)の最大値が予め定めた閾値以下となる最大のYv座標とすればよい。つまり、近似誤差が許容範囲内となる最大のYv座標をYvとすればよい。そうすれば、スクリーンSC11上に投影される画像の近似誤差による品質劣化を防止し、高品質な画像を得ることができる。
【0195】
一方、パノラマ画像が円筒面に投影された画像である場合、x,y,θの関数である関数Uc(x,y,θ)と関数Vc(x,y,θ)を式(20)により定義し、式(4)により定義されるθyaw,θpitch,Fv,Xv,Yvの関数であるCxおよびCyの近似式を考える。
【0196】
具体的には、θyaw,θpitch,Fv,Xvのそれぞれを任意の値に固定して、Yvとして閉区間[Yv,Yv]の範囲で、関数Cxを式(28)で近似し、関数Cyを式(30)で近似したとする。
【0197】
このとき、関数Cxの値と、式(28)で示される関数Cxの近似値との差、すなわち近似による誤差は、式(46)乃至式(48)により得られる3つの値の最大値を超えることはない。また、関数Cyの値と、式(30)で示される関数Cyの近似値との差(近似誤差)は、式(49)乃至式(51)により得られる3つの値の最大値を超えることはない。
【0198】
ここで、式(46)における値yuc(x,θ)(i)と、式(49)における値yvc(x,θ)(i)は、それぞれ図8および図9に示した擬似コードを実行することにより生成されるデータである。また、式(46)乃至式(51)において、Xaは0.1単位の値であり、かつXv/Fvになるべく近い値である。同様にθaは0.1単位の値であり、かつθpitchになるべく近い値である。
【0199】
このようにUc(x,y,θ)や関数Vc(x,y,θ)の偏導関数の極値に関するデータをリストアップすることで、近似による誤差を定量的に評価することができる。これにより、近似誤差の許容範囲内で、かつより少ない計算でパノラマ画像の一部の領域を切り出すことができる。
【0200】
以上のことから、パノラマ画像が円筒面に投影された画像である場合、所定の固定値Xvに対して、スクリーンSC11の位置(Xv,Yv)から位置(Xv,Yv)までの領域には、次のようにしてパノラマ画像の画素を書き込めばよい。
【0201】
すなわち、位置(Xv,Yv)から位置(Xv,Yv)までの各位置(Xv,Yv)に対して式(28)および式(30)の近似計算が行なわれ、スクリーンSC11上の位置(Xv,Yv)に対応するパノラマ画像上の位置(Cx,Cy)が算出される。そして、このようにして算出されたパノラマ画像上の位置(Cx,Cy)にある画素の画素値が、スクリーンSC11上の位置(Xv,Yv)の画素の画素値として書き込まれる。
【0202】
また、位置(Xv,Yv)がスクリーンSC11のYv軸方向側の端でない場合には、位置(Xv,Yv)から位置(Xv,Yv)までの画素の書き込み後、さらに位置(Xv,Yv+1)が新たな位置(Xv,Yv)とされ、画素の書き込みが繰り返し行われる。
【0203】
以上の処理により簡単な計算で、迅速にワイドなパノラマ画像の一部を切り出して表示させることができる。なお、スクリーンSC11上の位置(Xv,Yv)におけるYv座標であるYvは、Yv=Yvに対して、上述した式(46)乃至式(51)の最大値が予め定めた閾値以下となる最大のYv座標とすればよい。
【0204】
〈第1の実施の形態〉
[画像処理装置の構成例]
次に、本技術を適用した具体的な実施の形態について説明する。
【0205】
まず、パノラマ画像が球面に投影された画像である場合について説明する。そのような場合、画像処理装置は、例えば図10に示すように構成される。
【0206】
図10の画像処理装置31は、取得部41、入力部42、決定部43、書き込み部44、および表示部45から構成される。
【0207】
取得部41は、パノラマ画像を取得して書き込み部44に供給する。ここで、取得部41により取得されるパノラマ画像は、球面に投影された画像である。入力部42は、ユーザの操作に応じた信号を決定部43に供給する。
【0208】
決定部43は、パノラマ画像の一部の領域を切り出して表示部45に表示させる場合に、1つの近似関数が用いられてパノラマ画像の書き込みが行なわれる、書き込み部44に確保されたキャンバス領域上の領域を決定する。決定部43は、極値データ生成部61、および誤差算出部62を備えている。
【0209】
極値データ生成部61は、パノラマ画像上の位置(Sx,Sy)の算出の近似誤差の評価に必要なn次微分関数が極値をとるときのyの値と、そのときの極値とを極値データとして生成する。すなわち、極値データとして、n次微分関数が極値をとるときのyの値yus(x,θ)(i)とそのときの極値、および値yvs(x,θ)(i)とそのときの極値が算出される。誤差算出部62は、極値データに基づいて、パノラマ画像上の位置(Sx,Sy)の算出の近似誤差を算出する。
【0210】
書き込み部44は、必要に応じて決定部43と情報の授受を行ないながら、取得部41からのパノラマ画像の一部を、確保したキャンバス領域に書き込むことで、パノラマ画像における、ユーザにより指定された視線方向および焦点距離の領域の画像を生成する。
【0211】
また、書き込み部44は、対応位置算出部71を備えており、対応位置算出部71は、キャンバス領域の各位置に書き込むパノラマ画像上の画素の位置を算出する。書き込み部44は、キャンバス領域に書き込まれた画像(以下、出力画像と称する)を表示部45に供給する。
【0212】
表示部45は、例えば液晶ディスプレイなどからなり、書き込み部44から供給された出力画像を表示する。表示部45は、上述した表示デバイスに相当するものである。なお、以下では、表示部45の表示画面の大きさは、横方向がWv画素,縦方向がHv画素であるものとする。
【0213】
[画像出力処理の説明]
ところで、画像処理装置31にパノラマ画像が供給され、ユーザにより出力画像の表示が指示されると、画像処理装置31は、供給されたパノラマ画像から出力画像を生成して出力する画像出力処理を開始する。以下、図11のフローチャートを参照して、画像処理装置31による画像出力処理について説明する。
【0214】
ステップS11において、取得部41はパノラマ画像を取得し、書き込み部44に供給する。
【0215】
ステップS12において、極値データ生成部61は、関数Us(x,y,θ)をyによりn回偏微分して得られるn次微分関数が極値をとるときのyの値yus(x,θ)(i)を算出し、得られた各値yus(x,θ)(i)と、値yus(x,θ)(i)における極値とを極値データとして保持する。
【0216】
具体的には、極値データ生成部61は図6に示した擬似コードを実行し、式(32)または式(33)を満たすときのyの値を、極値となるyの値yus(x,θ)(i)とする。
【0217】
ステップS13において、極値データ生成部61は、関数Vs(x,y,θ)をyによりn回偏微分して得られるn次微分関数が極値をとるときのyの値yvs(x,θ)(i)を算出し、得られた各値yvs(x,θ)(i)と、値yvs(x,θ)(i)における極値とを極値データとして保持する。
【0218】
具体的には、極値データ生成部61は図7に示した擬似コードを実行し、式(34)または式(35)を満たすときのyの値を、極値となるyの値yvs(x,θ)(i)とする。
【0219】
このようにして求められた極値データとしてのyの値yus(x,θ)(i)および値yvs(x,θ)(i)と、それらのyの値における極値とは、キャンバス領域(スクリーン)上の位置(Xv,Yv)に書き込まれるパノラマ画像上の位置(Sx,Sy)を近似により求めるときの近似誤差の算出に用いられる。なお、極値データは、例えばルックアップテーブルなどの形式で保持されるようにしてもよい。
【0220】
ステップS14において、書き込み部44は、出力画像を生成するためのキャンバス領域を図示せぬメモリ上に確保する。このキャンバス領域は図5に示した仮想的なスクリーンSC11に相当する。
【0221】
なお、キャンバス領域の中心を原点O’としてXvYv座標系が定められ、キャンバス領域のXv方向(横方向)の幅はWvとされ、Yv方向(縦方向)の高さはHvとされる。したがって、XvYv座標系におけるキャンバス領域の範囲は、−Wv/2≦Xv≦Wv/2,−Hv/2≦Yv≦Hv/2とされる。
【0222】
ステップS15において、入力部42は、角度θyaw、角度θpitch、および焦点距離Fvの入力を受け付ける。ユーザは、入力部42を操作して、角度θyawおよび角度θpitchから定まる視線方向と、焦点距離Fvとを入力する。入力部42は、ユーザにより入力された角度θyaw、角度θpitch、および焦点距離Fvを決定部43に供給する。
【0223】
ステップS16において、書き込み部44は、キャンバス領域上のパノラマ画像の書き込みを行なう領域の開始位置のXv座標を−Wv/2とする。
【0224】
なお、キャンバス領域へのパノラマ画像の書き込みは、Xv座標が同じである画素からなる領域ごとに、−Yv方向側の端から+Yv方向側に順番に行なわれるものとする。また、キャンバス領域におけるYv方向に並ぶいくつかの画素からなる領域が書き込み領域とされ、1つの近似関数を用いた計算により、書き込み領域内の各位置(Xv,Yv)に対応するパノラマ画像上の位置が求められる。
【0225】
以下においては、書き込み領域の−Yv方向側の端、つまり最もYv座標が小さい画素の位置を、書き込み領域の開始位置とも称し、書き込み領域の+Yv方向側の端、つまり最もYv座標が大きい画素の位置を、書き込み領域の終了位置とも称することとする。また、以下、書き込み領域の開始位置のYv座標をYvとし、書き込み領域の終了位置のYv座標をYvとする。
【0226】
ステップS17において、書き込み部44は、書き込み領域の開始位置のYv座標をYv=−Hv/2とする。
【0227】
したがって、キャンバス領域上の書き込み領域の開始位置は、位置(−Wv/2,−Hv/2)となる。すなわち、図5のスクリーンSC11の図中、左上の端(頂点)の位置が、書き込み領域の開始位置とされる。
【0228】
ステップS18において、画像処理装置31は、終了位置算出処理を行なって、書き込み領域の終了位置のYv座標であるYvの値を算出する。
【0229】
なお、この終了位置算出処理は後述するが、終了位置算出処理では、ステップS12およびステップS13の処理で求められた極値データが用いられて、書き込み領域の終了位置が定められる。
【0230】
ステップS19において、画像処理装置31は、書き込み処理を行って、キャンバス領域上の書き込み領域にパノラマ画像の画素の画素値を書き込む。なお、書き込み処理の詳細は後述するが、書き込み処理では、上述した式(24)および式(26)の近似関数が用いられて、書き込み領域の各位置(Xv,Yv)に対応するパノラマ画像上の位置(Sx,Sy)が算出される。
【0231】
ステップS20において、書き込み部44は、現時点における書き込み領域の終了位置のYv座標がYv=Hv/2であるか否かを判定する。
【0232】
例えば、書き込み領域の終了位置が、キャンバス領域の+Yv方向側の端である場合、Yv=Hv/2であると判定される。この場合、キャンバス領域のYv方向に並ぶ画素からなる1つの画素列に対して、パノラマ画像の書き込みが行なわれたことになる。
【0233】
ステップS20においてYv=Hv/2であると判定されなかった場合、まだキャンバス領域上の1つの画素列に対する書き込みが終了していないので、処理はステップS21に進む。
【0234】
ステップS21において、書き込み部44は、書き込み領域の開始位置のYv座標であるYvをYv+1とする。
【0235】
すなわち、書き込み部44は、現時点における書き込み領域の終了位置に対して+Yv方向側に隣接する位置を、次の新たな書き込み領域の開始位置とする。例えば、現時点における書き込み領域の終了位置の座標が(Xv,Yv)である場合、座標が(Xv,Yv+1)である位置が、新たな書き込み領域の開始位置とされる。
【0236】
新たな書き込み領域の開始位置が定められると、その後、処理はステップS18に戻り、上述した処理が繰り返される。すなわち、新たな書き込み領域の終了位置が定められ、書き込み領域へのパノラマ画像の書き込みが行なわれる。
【0237】
これに対して、ステップS20において、Yv=Hv/2であると判定された場合、キャンバス領域上の1つの画素列に対する書き込みが終了したので、ステップS22において、書き込み部44は、Xv=Wv/2であるか否かを判定する。
【0238】
すなわち、現時点における書き込み領域のXv座標が、キャンバス領域の+Xv方向側の端のXv座標であるか否かが判定される。現時点における書き込み領域の位置がキャンバス領域の+Xv方向側の端の位置であるということは、キャンバス領域全体に対してパノラマ画像の書き込みが行なわれたということである。
【0239】
ステップS22において、Xv=Wv/2でないと判定された場合、すなわち、まだキャンバス領域に対するパノラマ画像の書き込みが終了していない場合、ステップS23において、書き込み部44はXv=Xv+1とする。すなわち、書き込み部44は、現時点における書き込み領域に対して+Xv方向側に隣接する位置のXv座標を、新たな書き込み領域のXv座標とする。
【0240】
新たな書き込み領域のXv座標が定められると、その後、処理はステップS17に戻り、上述した処理が繰り返される。すなわち、新たな書き込み領域の開始位置および終了位置が定められ、書き込み領域へのパノラマ画像の書き込みが行なわれる。
【0241】
これに対して、ステップS22において、Xv=Wv/2であると判定された場合、すなわちキャンバス領域へのパノラマ画像の書き込みが終了した場合、ステップS24において、書き込み部44は、キャンバス領域の画像を出力画像として出力する。
【0242】
書き込み部44から出力された画像は、出力画像として表示部45に供給され、表示される。これにより、パノラマ画像における、ユーザにより指定された視線方向および焦点距離の領域の画像(出力画像)が表示部45に表示されるので、ユーザは、表示された出力画像を観賞することができる。
【0243】
出力画像が出力されると、その後、処理はステップS15に戻り、上述した処理が繰り返される。すなわち、ユーザは、パノラマ画像における別の領域を観賞したい場合に、視線方向と焦点距離を再度入力すると、ステップS15乃至ステップS24の処理により、新たな出力画像が生成され、表示される。ユーザにより、出力画像の表示終了が指示されると、画像出力処理は終了する。
【0244】
以上のようにして画像処理装置31は、ユーザにより視線方向および焦点距離が指定されると、それらの視線方向および焦点距離により特定されるパノラマ画像の各画素を、キャンバス領域に書き込んで出力画像を生成する。このとき、画像処理装置31は、品質の劣化が生じないように、近似誤差の評価結果に基づいて書き込み領域の終了位置を定め、書き込み領域へのパノラマ画像の画素の書き込みを行なっていく。
【0245】
これにより、パノラマ画像における所望の方向の領域を簡単かつ迅速に切り出して出力画像とすることができるとともに、高品質な出力画像を提示することができる。
【0246】
[終了位置算出処理の説明]
次に、図12のフローチャートを参照して、図11のステップS18の処理に対応する終了位置算出処理について説明する。
【0247】
ステップS51において、決定部43は、閾値th=0.5とする。ここで、閾値thは、近似関数を用いたパノラマ画像上の位置(Sx,Sy)の算出に対する近似誤差の許容量を示している。なお、閾値thの値は、0.5に限らずどのような値とされてもよい。
【0248】
ステップS52において、決定部43はXaおよびθaの値を設定する。具体的には、決定部43はXaとして、0.1単位でXv/Fvに一番近い値をセットし、θaとして、0.1単位で角度θpitchに一番近い値をセットする。
【0249】
ここで、Xvは図11のステップS16またはステップS23の処理で定められた、書き込み領域のXv座標の値であり、Fvおよびθpitchは、図11のステップS15の処理で入力された角度θpitchおよび焦点距離Fvの値である。
【0250】
ステップS53において、決定部43は、書き込み領域の終了位置の下限を示すパラメータminYv1=Yv0、上限を示すパラメータmaxYv1=Hv/2とし、そして、終了位置のYv座標をYv1=(int)((minYv1+maxYv1)/2)とする。なお、ここで定められた終了位置のYv座標は、一時的に定められた仮の値である。ここで、(int)(A)は、Aの小数部分を切り捨てて、整数部分を出力する関数である。
【0251】
ステップS54において、誤差算出部62は、上述した式(40)乃至式(45)の計算を行い、近似関数によりSx,Syを算出したときの近似誤差の最大値を求め、求められた値をtmpとする。
【0252】
すなわち、誤差算出部62は、式(40)乃至式(42)の計算を行なうことで、式(24)の近似関数によりSxを算出したときの近似誤差を算出する。このとき、誤差算出部62は、極値データとして保持されているyの値yus(xa,θa)(i)の極値を用いて、式(40)の計算を行なう。なお、yの値yus(xa,θa)(i)におけるXaおよびθaの値として、ステップS52の処理でセットされた値が用いられる。また、極値データとして、yの値yus(xa,θa)(i)のみが保持されている場合には、その値yus(xa,θa)(i)に基づいて、n次微分関数の値(極値)が算出される。
【0253】
さらに、誤差算出部62は、式(43)乃至式(45)の計算を行なうことで、式(26)の近似関数によりSyを算出したときの近似誤差を算出する。このとき、誤差算出部62は、極値データとして保持されているyの値yvs(xa,θa)(i)の極値を用いて、式(43)の計算を行なう。なお、yの値yvs(xa,θa)(i)におけるXaおよびθaの値として、ステップS52の処理でセットされた値が用いられる。
【0254】
誤差算出部62は、このようにしてSxの近似誤差とSyの近似誤差を求めると、それらの近似誤差のうちの大きい方を、誤差の最大値tmpとする。
【0255】
この誤差の最大値tmpが、誤差の許容量である閾値th以下であれば、書き込み領域の開始位置から、現時点で仮に定められている書き込み領域の終了位置までの領域に対して、近似誤差が許容範囲内ということになる。すなわち、同じ近似関数を用いて書き込み領域の各位置に対応するパノラマ画像の位置を求めても、出力画像の品質劣化が目立たないことになる。
【0256】
ステップS55において、決定部43は、誤差の最大値tmpが閾値thよりも大きいか否かを判定する。
【0257】
ステップS55において、最大値tmpが閾値thよりも大きいと判定された場合、つまり近似誤差が許容量を超える場合、ステップS56において、決定部43は、終了位置の上限を示すパラメータをmaxYv1=Yv1とする。そして、決定部43は、tmpYv1=(int)((minYv1+maxYv1)/2)とする。
【0258】
ここで、(int)(A)は、Aの小数部分を切り捨てて、整数部分を出力する関数である。また、Yvは現時点における書き込み領域の開始位置のYv座標であり、Yvは現時点における書き込み領域の仮に定められている終了位置のYv座標である。
【0259】
したがって、現時点の終了位置の下限と終了位置の上限の中間位置のYv座標がtmpYv1とされる。tmpYv1が求められると、その後、処理はステップS58に進む。
【0260】
これに対して、ステップS55において、最大値tmpが閾値thよりも大きくないと判定された場合、つまり近似誤差が許容量以下である場合、ステップS57において、決定部43は、終了位置の下限を示すパラメータをminYv1=Yv1とする。そして、決定部43は、tmpYv1=(int)((minYv1+maxYv1)/2)とする。
【0261】
ここで、(int)(A)は、Aの整数部分を出力する関数である。また、Yvは現時点における書き込み領域の仮に定められている終了位置のYv座標である。したがって、現時点の終了位置の下限と終了位置の上限の中間位置のYv座標がtmpYv1とされる。tmpYv1が求められると、その後、処理はステップS58に進む。
【0262】
ステップS56またはステップS57においてtmpYv1が求められると、ステップS58において、決定部43は、tmpYv1=minYv1またはtmpYv1=maxYv1であるか否かを判定する。すなわち、ステップS55乃至ステップS57の処理で行なわれる二分法の収束により、終了位置のYv座標であるYvが確定したか否かが判定される。
【0263】
ステップS58において、tmpYv1=minYv1およびtmpYv1=maxYv1の何れも成立しないと判定された場合、ステップS59において、決定部43は、Yv1=tmpYv1とする。すなわち、ステップS56またはステップS57で算出されたtmpYv1の値が、書き込み領域の終了位置の新たな仮のYv座標とされる。
【0264】
Yv1=tmpYv1とされると、その後、処理はステップS54に戻り、上述した処理が繰り返される。
【0265】
一方、ステップS58において、tmpYv1=minYv1またはtmpYv1=maxYv1であると判定された場合、決定部43は、現時点において仮に定められているYvの値を、書き込み領域の終了位置のYv座標として決定する。
【0266】
そして、決定部43は、書き込み領域の開始位置および終了位置を示す情報を書き込み部44に供給し、終了位置算出処理は終了する。終了位置算出処理が終了すると、その後、処理は図11のステップS19に進む。なお、このとき、決定部43から書き込み部44には、必要に応じて、ユーザにより入力された角度θyaw、角度θpitch、および焦点距離Fvも供給される。
【0267】
以上のようにして画像処理装置31は、極値データを用いて近似関数による位置(Sx,Sy)の算出の誤差を求め、その誤差に基づいて書き込み領域の終了位置を決定する。
【0268】
画像処理装置31によれば、予め極値データを生成しておくことで、極値データを用いて上述した式(40)乃至式(45)の計算を行うという簡単な演算で、近似誤差が許容範囲内となる書き込み領域を迅速に定めることができる。
【0269】
[書き込み処理の説明]
次に、図13のフローチャートを参照して、図11のステップS19の処理に対応する書き込み処理について説明する。
【0270】
ステップS81において、書き込み部44は、決定部43から供給された書き込み領域の開始位置および終了位置を示す情報に基づいて、キャンバス領域上の書き込み領域のうち、これから書き込みを行なう書き込み対象の位置のYv座標をYvとする。
【0271】
すなわち、キャンバス領域上の書き込み対象の位置(Xv,Yv)のYv座標が、書き込み領域の開始位置のYv座標であるYvとされる。なお、書き込み対象の位置(Xv,Yv)のXv座標は、図11のステップS16またはステップS23の処理で定められたXv座標とされる。したがって、この場合、書き込み領域の開始位置が、書き込み対象の位置(Xv,Yv)となる。
【0272】
ステップS82において、対応位置算出部71は、上述した式(24)および式(26)の計算を行なうことで、書き込み対象の位置(Xv,Yv)に対応するパノラマ画像上の位置(Sx,Sy)を算出する。このとき、対応位置算出部71は、決定部43から供給された開始位置と終了位置の情報や、角度θyaw、角度θpitch、および焦点距離Fvを用いて、式(24)および式(26)の計算を行なう。
【0273】
ステップS83において、書き込み部44は、ステップS82の処理で算出された位置(Sx,Sy)にあるパノラマ画像の画素の画素値を、書き込み対象の位置(Xv,Yv)の画素の画素値とし、キャンバス領域上の書き込み対象の位置に書き込む。
【0274】
ステップS84において、書き込み部44は、書き込み対象の位置(Xv,Yv)のYv座標が、書き込み領域の終了位置のYv座標であるYv未満であるか否かを判定する。すなわち、書き込み領域内の各画素に対して、パノラマ画像の画素の書き込みが行なわれたか否かが判定される。
【0275】
ステップS84において、書き込み対象の位置のYv座標が、終了位置のYv座標であるYv未満であると判定された場合、ステップS85において、書き込み部44は、書き込み対象の位置のYv座標を、Yv=Yv+1とする。
【0276】
すなわち、書き込み部44は、現時点における書き込み対象の位置からみて、キャンバス領域上の+Yv方向に隣接する位置を、新たな書き込み対象の位置とする。したがって、現時点における書き込み対象の位置が(Xv,Yv)である場合、新たな書き込み対象の位置は(Xv,Yv+1)となる。
【0277】
新たな書き込み対象の位置が定められると、その後、処理はステップS82に戻り、上述した処理が繰り返される。
【0278】
これに対して、ステップS84において、書き込み対象の位置のYv座標が、終了位置のYv座標であるYv以上であると判定された場合、書き込み領域内の全ての位置にパノラマ画像の画素が書き込まれたので、書き込み処理は終了する。書き込み処理が終了すると、その後、処理は図11のステップS20へと進む。
【0279】
以上のようにして、画像処理装置31は、近似関数を用いて書き込み対象の位置に書き込むべき画素があるパノラマ画像上の位置を算出し、書き込み領域への書き込みを行なう。このように、近似関数を用いて書き込み対象の位置に対応するパノラマ画像上の位置を求めることで、簡単な計算により迅速に書き込みを行なうことができる。
【0280】
例えば、書き込み対象の位置に対応するパノラマ画像上の位置を、上述した式(3)の計算により求める場合、三角関数の演算や割り算など複雑な計算が必要となるため、演算量が膨大となり、処理速度が低下してしまう。
【0281】
これに対して、画像処理装置31では、式(24)や式(26)のn次多項式により、書き込み対象の位置に対応するパノラマ画像上の位置を求めることができるので、処理速度の向上を図ることができる。
【0282】
〈第2の実施の形態〉
[画像処理装置の構成例]
次に、パノラマ画像が円筒面に投影された画像である場合における、実施の形態について説明する。そのような場合、画像処理装置は、例えば図14に示すように構成される。
【0283】
図14の画像処理装置101は、取得部111、入力部42、決定部112、書き込み部113、および表示部45から構成される。なお、図14において、図10における場合と対応する部分には同一の符号を付してあり、その説明は省略する。
【0284】
取得部111は、パノラマ画像を取得して書き込み部113に供給する。ここで、取得部111により取得されるパノラマ画像は、円筒面に投影された画像である。
【0285】
決定部112は、パノラマ画像の一部の領域を切り出して表示部45に表示させる場合に、1つの近似関数が用いられてパノラマ画像の書き込みが行なわれる、書き込み部113に確保されたキャンバス領域上の領域を決定する。決定部112は、極値データ生成部131、および誤差算出部132を備えている。
【0286】
極値データ生成部131は、パノラマ画像上の位置(Cx,Cy)の算出の近似誤差の評価に必要なn次微分関数が極値をとるときのyの値と、そのときの極値とを極値データとして生成する。すなわち、極値データとして、n次微分関数が極値をとるときのyの値yuc(x,θ)(i)および値yvc(x,θ)(i)が算出される。誤差算出部132は、極値データに基づいて、パノラマ画像上の位置(Cx,Cy)の算出の近似誤差を算出する。
【0287】
書き込み部113は、必要に応じて決定部112と情報の授受を行ないながら、取得部111からのパノラマ画像を、確保したキャンバス領域に書き込むことでパノラマ画像における、ユーザにより指定された視線方向および焦点距離の領域の画像を生成する。
【0288】
また、書き込み部113は、対応位置算出部141を備えており、対応位置算出部141は、キャンバス領域の各位置に書き込むパノラマ画像上の画素の位置を算出する。
【0289】
[画像出力処理の説明]
ところで、画像処理装置101にパノラマ画像が供給され、ユーザにより出力画像の表示が指示されると、画像処理装置101は、供給されたパノラマ画像から出力画像を生成して出力する画像出力処理を開始する。以下、図15のフローチャートを参照して、画像処理装置101による画像出力処理について説明する。
【0290】
ステップS131において、取得部111はパノラマ画像を取得し、書き込み部113に供給する。
【0291】
ステップS132において、極値データ生成部131は、関数Uc(x,y,θ)をyによりn回偏微分して得られるn次微分関数が極値をとるときのyの値yuc(x,θ)(i)を算出し、得られた各値yuc(x,θ)(i)と、値yuc(x,θ)(i)における極値とを極値データとして保持する。
【0292】
具体的には、極値データ生成部131は図8に示した擬似コードを実行し、式(36)または式(37)を満たすときのyの値を、極値となるyの値yuc(x,θ)(i)とする。
【0293】
ステップS133において、極値データ生成部131は、関数Vc(x,y,θ)をyによりn回偏微分して得られるn次微分関数が極値をとるときのyの値yvc(x,θ)(i)を算出し、得られた各値yvc(x,θ)(i)と、値yvc(x,θ)(i)における極値とを極値データとして保持する。
【0294】
具体的には、極値データ生成部131は図9に示した擬似コードを実行し、式(38)または式(39)を満たすときのyの値を、極値となるyの値yvc(x,θ)(i)とする。
【0295】
このようにして求められた極値データとしてのyの値yuc(x,θ)(i)および値yvc(x,θ)(i)と、それらのyの値における極値とは、キャンバス領域(スクリーン)上の位置(Xv,Yv)に書き込まれるパノラマ画像上の位置(Cx,Cy)を近似により求めるときの近似誤差の算出に用いられる。なお、極値データは、例えばルックアップテーブルなどの形式で保持されるようにしてもよい。
【0296】
極値データが求められると、その後、ステップS134乃至ステップS137の処理が行なわれるが、これらの処理は図11のステップS14乃至ステップS17の処理と同様であるので、その説明は省略する。
【0297】
ステップS138において、画像処理装置101は、終了位置算出処理を行なって、書き込み領域の終了位置のYv座標であるYvの値を算出する。
【0298】
なお、この終了位置算出処理は後述するが、終了位置算出処理では、ステップS132およびステップS133の処理で求められた極値データが用いられて、書き込み領域の終了位置が定められる。
【0299】
ステップS139において、画像処理装置101は、書き込み処理を行って、キャンバス領域上の書き込み領域にパノラマ画像の画素の画素値を書き込む。なお、書き込み処理の詳細は後述するが、書き込み処理では、上述した式(28)および式(30)の近似関数が用いられて、書き込み領域の各位置(Xv,Yv)に対応するパノラマ画像上の位置(Cx,Cy)が算出される。
【0300】
書き込み処理が行なわれると、その後、ステップS140乃至ステップS144の処理が行なわれるが、これらの処理は図11のステップS20乃至ステップS24の処理と同様であるので、その説明は省略する。また、ユーザにより、出力画像の表示終了が指示されると、画像出力処理は終了する。
【0301】
以上のようにして画像処理装置101は、ユーザにより視線方向および焦点距離が指定されると出力画像を生成し、出力する。このとき、画像処理装置101は、品質の劣化が生じないように、近似誤差の評価結果に基づいて書き込み領域の終了位置を定め、書き込み領域へのパノラマ画像の画素の書き込みを行なっていく。
【0302】
これにより、パノラマ画像における所望の方向の領域を簡単かつ迅速に切り出して出力画像とすることができるとともに、高品質な出力画像を提示することができる。
【0303】
[終了位置算出処理の説明]
次に、図16のフローチャートを参照して、図15のステップS138の処理に対応する終了位置算出処理について説明する。
【0304】
なお、ステップS71乃至ステップS73の処理は、図12のステップS51乃至ステップS53の処理と同様であるので、その説明は省略する。
【0305】
ステップS74において、誤差算出部132は、上述した式(46)乃至式(51)の計算を行い、近似関数によりCx,Cyを算出したときの近似誤差の最大値を求め、求められた値をtmpとする。
【0306】
すなわち、誤差算出部132は、式(46)乃至式(48)の計算を行なうことで、式(28)の近似関数によりCxを算出したときの近似誤差を算出する。このとき、誤差算出部132は、極値データとして保持されているyの値yuc(xa,θa)(i)の極値を用いて、式(46)の計算を行なう。なお、yの値yuc(xa,θa)(i)におけるXaおよびθaの値として、ステップS72の処理でセットされた値が用いられる。
【0307】
また、誤差算出部132は、式(49)乃至式(51)の計算を行なうことで、式(30)の近似関数によりCyを算出したときの近似誤差を算出する。このとき、誤差算出部132は、極値データとして保持されているyの値yvc(xa,θa)(i)の極値を用いて、式(49)の計算を行なう。なお、yの値yvc(xa,θa)(i)におけるXaおよびθaの値として、ステップS72の処理でセットされた値が用いられる。
【0308】
誤差算出部132は、このようにしてCxの近似誤差とCyの近似誤差を求めると、それらの近似誤差のうちの大きい方を、誤差の最大値tmpとする。
【0309】
誤差の最大値tmpが求められると、その後、ステップS75乃至ステップS79の処理が行なわれて終了位置算出処理は終了するが、これらの処理は図12のステップS55乃至ステップS59の処理と同様であるので、その説明は省略する。
【0310】
終了位置算出処理が終了すると、その後、処理は図15のステップS139に進む。なお、このとき、決定部112から書き込み部113には、書き込み領域の開始位置および終了位置の情報とともに、必要に応じてユーザにより入力された角度θyaw、角度θpitch、および焦点距離Fvも供給される。
【0311】
以上のようにして画像処理装置101は、極値データを用いて近似関数による位置(Cx,Cy)の算出の誤差を求め、その誤差に基づいて書き込み領域の終了位置を決定する。
【0312】
画像処理装置101によれば、予め極値データを生成しておくことで、極値データを用いて上述した式(46)乃至式(51)の計算を行うという簡単な演算で、近似誤差が許容範囲内となる書き込み領域を迅速に定めることができる。
【0313】
[書き込み処理の説明]
次に、図17のフローチャートを参照して、図15のステップS139の処理に対応する書き込み処理について説明する。
【0314】
なお、ステップS101の処理は、図13のステップS81の処理と同様であるので、その説明は省略する。
【0315】
ステップS102において、対応位置算出部141は、上述した式(28)および式(30)の計算を行なうことで、書き込み対象の位置(Xv,Yv)に対応するパノラマ画像上の位置(Cx,Cy)を算出する。このとき、対応位置算出部141は、決定部112から供給された開始位置と終了位置の情報や、角度θyaw、角度θpitch、および焦点距離Fvを用いて、式(28)および式(30)の計算を行なう。
【0316】
ステップS103において、書き込み部113は、ステップS102の処理で算出された位置(Cx,Cy)にあるパノラマ画像の画素の画素値を、書き込み対象の位置(Xv,Yv)の画素の画素値とし、キャンバス領域上の書き込み対象の位置に書き込む。
【0317】
キャンバス領域への書き込みが行なわれると、その後、ステップS104およびステップS105の処理が行なわれて、書き込み処理は終了するが、これらの処理は図13のステップS84およびステップS85の処理と同様であるので、その説明は省略する。書き込み処理が終了すると、その後、処理は図15のステップS140に進む。
【0318】
以上のようにして、画像処理装置101は、近似関数を用いて書き込み対象の位置に書き込むべき画素があるパノラマ画像上の位置を算出し、書き込み領域への書き込みを行なう。このように、近似関数を用いて書き込み対象の位置に対応するパノラマ画像上の位置を求めることで、簡単な計算により迅速に書き込みを行なうことができる。
【0319】
ところで、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0320】
図18は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【0321】
コンピュータにおいて、CPU(Central Processing Unit)201,ROM(Read Only Memory)202,RAM(Random Access Memory)203は、バス204により相互に接続されている。
【0322】
バス204には、さらに、入出力インターフェース205が接続されている。入出力インターフェース205には、入力部206、出力部207、記録部208、通信部209、及びドライブ210が接続されている。
【0323】
入力部206は、キーボード、マウス、マイクロホンなどよりなる。出力部207は、ディスプレイ、スピーカなどよりなる。記録部208は、ハードディスクや不揮発性のメモリなどよりなる。通信部209は、ネットワークインターフェースなどよりなる。ドライブ210は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア211を駆動する。
【0324】
以上のように構成されるコンピュータでは、CPU201が、例えば、記録部208に記録されているプログラムを、入出力インターフェース205及びバス204を介して、RAM203にロードして実行することにより、上述した一連の処理が行われる。
【0325】
コンピュータ(CPU201)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア211に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0326】
コンピュータでは、プログラムは、リムーバブルメディア211をドライブ210に装着することにより、入出力インターフェース205を介して、記録部208にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部209で受信し、記録部208にインストールすることができる。その他、プログラムは、ROM202や記録部208に、あらかじめインストールしておくことができる。
【0327】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0328】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0329】
例えば、本技術は、1つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【0330】
また、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。
【0331】
さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。
【0332】
さらに、本技術は、以下の構成とすることも可能である。
【0333】
[1]
入力画像と所定の位置関係を有する出力画像を生成する画像処理装置であって、
前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成する極値データ生成部と、
前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出する誤差算出部と、
前記誤差が所定の閾値以下となる前記対象領域を決定する決定部と、
決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成する画像生成部と
を備える画像処理装置。
[2]
前記近似関数は、前記位置関係を示す関数を前記第1の位置の周りで多項式展開した多項式近似関数である
[1]に記載の画像処理装置。
[3]
前記近似関数は、(n−1)次多項式近似関数であり、前記誤差の算出に必要な前記関数は、前記位置関係を示す関数をn次微分することで得られる関数である
[2]に記載の画像処理装置。
[4]
前記位置関係を規定する変数は、所定の基準位置からみた前記出力画像の方向、および前記基準位置から前記出力画像までの距離である
[1]乃至[3]の何れかに記載の画像処理装置。
[5]
前記出力画像上の所定の位置に対応する前記入力画像上の位置は、前記所定の位置および前記基準位置を通る直線と、前記入力画像との交点の位置とされる
[4]に記載の画像処理装置。
[6]
前記入力画像は、球面に投影された画像、または円筒面に投影された画像である
[1]乃至[5]の何れかに記載の画像処理装置。
【符号の説明】
【0334】
31 画像処理装置, 43 決定部, 44 書き込み部, 61 極値データ生成部, 62 誤差算出部, 71 対応位置算出部, 101 画像処理装置, 112 決定部, 113 書き込み部, 131 極値データ生成部, 132 誤差算出部, 141 対応位置算出部

【特許請求の範囲】
【請求項1】
入力画像と所定の位置関係を有する出力画像を生成する画像処理装置であって、
前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成する極値データ生成部と、
前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出する誤差算出部と、
前記誤差が所定の閾値以下となる前記対象領域を決定する決定部と、
決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成する画像生成部と
を備える画像処理装置。
【請求項2】
前記近似関数は、前記位置関係を示す関数を前記第1の位置の周りで多項式展開した多項式近似関数である
請求項1に記載の画像処理装置。
【請求項3】
前記近似関数は、(n−1)次多項式近似関数であり、前記誤差の算出に必要な前記関数は、前記位置関係を示す関数をn次微分することで得られる関数である
請求項2に記載の画像処理装置。
【請求項4】
前記位置関係を規定する変数は、所定の基準位置からみた前記出力画像の方向、および前記基準位置から前記出力画像までの距離である
請求項3に記載の画像処理装置。
【請求項5】
前記出力画像上の所定の位置に対応する前記入力画像上の位置は、前記所定の位置および前記基準位置を通る直線と、前記入力画像との交点の位置とされる
請求項4に記載の画像処理装置。
【請求項6】
前記入力画像は、球面に投影された画像、または円筒面に投影された画像である
請求項5に記載の画像処理装置。
【請求項7】
入力画像と所定の位置関係を有する出力画像を生成する画像処理方法であって、
前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成し、
前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出し、
前記誤差が所定の閾値以下となる前記対象領域を決定し、
決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成する
ステップを含む画像処理方法。
【請求項8】
入力画像と所定の位置関係を有する出力画像を生成する画像処理用のプログラムであって、
前記出力画像上の位置に対応する前記入力画像上の位置を近似関数により求めたときの誤差の算出に必要な関数であって、前記位置関係を規定する変数および前記出力画像上の位置を変数として有する関数に基づいて、前記関数の極値に関するデータを生成し、
前記出力画像上の第1の位置から第2の位置までの対象領域について、前記データに基づいて、前記対象領域内の位置に対応する前記入力画像の位置を前記近似関数により求めたときの前記誤差を算出し、
前記誤差が所定の閾値以下となる前記対象領域を決定し、
決定された前記対象領域内の各位置について、前記近似関数を用いて前記入力画像の対応する位置を求め、前記対応する位置の画素の画素値を前記対象領域の位置の画素の画素値とすることで、前記出力画像を生成する
ステップを含む処理をコンピュータに実行させるプログラム。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2013−101525(P2013−101525A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−245295(P2011−245295)
【出願日】平成23年11月9日(2011.11.9)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】