説明

プログラム、数値計算装置及び数値計算方法

【課題】評価関数を用いた最適化において、パラメータ値の大域解への収束性を向上させること。
【解決手段】系の観測状況毎に共通パラメータが分離され、分離された共通パラメータの値の差異に対するペナルティ値が加えられた評価関数に基づいた最適化収束計算では、当該評価関数が局所的最小値の個数が少ない関数であり、分離された共通パラメータそれぞれの値が同一又は互いに近似した値に収束するため、大域解への収束性が向上される。実際にカメラキャリブレーションを行った結果、最適化収束計算により求められたカメラパラメータの最適値と、既知であるカメラパラメータの理想値との2乗誤差が、ほぼ全ての試行において小さくなり、大域解への収束性が向上されることが実証された。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値を所定の最適化収束計算を行って求める処理をコンピュータに実行させるためのプログラム等に関する。
【背景技術】
【0002】
従来より、評価関数を用いた最適化手法が広く知られている。評価関数とは、対象となる系の状態を評価するために用いられる関数であり、この関数の中では、系を構成する各要素がパラメータ化されている。また、評価関数は、その関数の値が最小となる場合に系が最も安定な状態となるように定式化される。
【0003】
そして、系の状態を最も安定にするようなパラメータ値の組み合わせを特定することをパラメータの最適化と呼ぶ。具体的には、最急降下法(SD法)、ニュートン法、Levenberg−Marquardt法(LM法)等の公知の最適化アルゴリズムに基づいた最適化収束計算をコンピュータに行わせ、評価関数の値を下げるように各パラメータ値を変化させていく手法が一般的である。
【0004】
この評価関数を用いた最適化手法は、ニューラルネットワークを始めとする様々な研究分野で応用されており、その一例として、カメラに固有のパラメータであるカメラパラメータ(例えば、レンズ歪み係数、レンズの焦点距離等)の最適化を行う所謂カメラキャリブレーションの手法が非特許文献1に開示されている。
【非特許文献1】Zhengyou Zhang, “A Flexible New Technique for Camera Calibration”, Microsoft Research, Technical Report MSR-TR-98-71, 1998.
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、系を構成する要素は一般に複数存在し、またこれらの相関は簡単な式では表されない場合が多い。このため、定式化される評価関数は、多くの局所的な最小値(局所的最小値)を持つ多峰性関数である場合がほとんどである。
【0006】
最適化手法の最大の課題の1つとして、次の問題がある。すなわち、最適化収束計算の過程においてパラメータ値が、評価関数が大域的な最小値(大域的最小値)を取る場合の値である大域解に収束せずに、局所的最小値を取る場合の値である局所解に収束してしまい、パラメータの最適化が適切に行われないという問題である。
【0007】
本発明は、この課題に対する全く新しい解決手段を提供するために為されたものであり、その目的とするところは、評価関数を用いた最適化において、パラメータ値の大域解への収束性を向上させることにある。
【課題を解決するための手段】
【0008】
以上の課題を解決するための第1の発明は、
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値を所定の最適化収束計算を行って求める処理をコンピュータに実行させるためのプログラム(例えば、図8の最適値算出プログラム41)であって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算ステップ(例えば、図12のステップA3)と、
前記代替評価関数収束計算ステップで求まった代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定ステップ(例えば、図12のステップA5)と、
を前記コンピュータに実行させるためのプログラムである。
【0009】
また、第4の発明は、
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値を所定の最適化収束計算を行って求める処理を実行する数値計算装置(例えば、図8のカメラキャリブレーション装置1)であって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算手段(例えば、図8の最適値算出部21;図12のステップA3)と、
前記代替評価関数収束計算手段により求められた代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定手段(例えば、図8の最適値算出部21;図12のステップA5)と、
を備える数値計算装置である。
【0010】
また、第5の発明は、
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値をコンピュータ上で所定の最適化収束計算を行って求めるための数値計算方法であって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算ステップ(例えば、図12のステップA3)と、
前記代替評価関数収束計算ステップで求まった代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定ステップ(例えば、図12のステップA5)と、
を含む数値計算方法である。
【0011】
この第1、第4又は第5の発明によれば、共通パラメータxが各部分関数毎に個別の代替パラメータxに代えられた部分関数f(x,y)の総和に、各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)が加えられた関数を評価関数として所定の最適化収束計算が行われ、この最適化収束計算により求められた代替パラメータxそれぞれの最適値に基づいて共通パラメータxの最適値が決定される。
【0012】
代替パラメータxは、各部分関数に固有のパラメータであるため、代替パラメータxの値の変化は、当該代替パラメータxが含まれる部分関数f(x,y)の値にしか影響を及ぼさない。このため、評価関数は、局所的最小値の個数の少ない関数、すなわち多峰性の弱い関数である。また、最適化収束計算では、ペナルティ値を下げる方向に代替パラメータxそれぞれの値が変化していくため、求められる代替パラメータxそれぞれの最適値は同一又は互いに近似した値となり、値にばらつきが生じる可能性が極めて少ない。以上のことから、代替パラメータxそれぞれの最適値に基づいて決定される共通パラメータxの最適値は大域解である可能性が高い。従って、評価関数を用いたパラメータの最適化において、パラメータ値の大域解への収束性を向上させることができるようになる。
【0013】
第2の発明は、第1の発明のプログラムであって、
前記関数P(x,x)は、各部分関数間の代替パラメータxの値の分散が大きい程、大きなペナルティ値を与える関数であることを特徴とするプログラムである。
【0014】
この第2の発明によれば、各部分関数間の代替パラメータxの値の分散が大きい程、大きなペナルティ値が与えられるようになる。
【0015】
第3の発明は、第1又は第2の発明のプログラムであって、
前記各部分関数fは、撮影対象の三次元空間の座標から所与のカメラで撮影した撮影画像の座標に変換する撮影画像毎に異なる座標変換のための部分関数であり、
前記共通パラメータxには、少なくとも前記所与のカメラのカメラパラメータが含まれ、
前記個別パラメータyには、少なくとも前記所与のカメラで撮影した際のカメラ位置及びカメラ方向のパラメータが含まれ、
前記共通パラメータ値決定ステップは、前記所与のカメラのカメラパラメータ値を決定するステップである、
ことを特徴とするプログラムである。
【0016】
この第3の発明によれば、各部分関数fは、撮影対象の三次元空間の座標から所与のカメラで撮影した撮影画像の座標に変換する撮影画像毎に異なる座標変換のための部分関数であり、当該カメラのカメラパラメータの値が共通パラメータの値として決定される。
【発明の効果】
【0017】
本発明によれば、共通パラメータxが各部分関数毎に個別の代替パラメータxに代えられた部分関数f(x,y)の総和に、各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)が加えられた関数を評価関数として所定の最適化収束計算が行われ、この最適化収束計算により求められた代替パラメータxそれぞれの最適値に基づいて共通パラメータxの最適値が決定される。
【0018】
代替パラメータxは、各部分関数に固有のパラメータであるため、代替パラメータxの値の変化は、当該代替パラメータxが含まれる部分関数f(x,y)の値にしか影響を及ぼさない。このため、評価関数は、局所的最小値の個数の少ない関数、すなわち多峰性の弱い関数である。また、最適化収束計算では、ペナルティ値を下げる方向に代替パラメータxそれぞれの値が変化していくため、求められる代替パラメータxそれぞれの最適値は同一又は互いに近似した値となり、値にばらつきが生じる可能性が極めて少ない。以上のことから、代替パラメータxそれぞれの最適値に基づいて決定される共通パラメータxの最適値は大域解である可能性が高い。従って、評価関数を用いたパラメータの最適化において、パラメータ値の大域解への収束性を向上させることができるようになる。
【発明を実施するための最良の形態】
【0019】
1.原理
最適化の原理について説明する。先ず、評価関数の定式化を行う。
今、簡単のため、2つの要素のみからなる系を考え、この2つの要素は、それぞれパラメータx及びyで表されるものとする。また前提として、パラメータyは、系の観測状況に応じて値が変化するパラメータ(以下、「個別パラメータ」と呼ぶ。)であるが、パラメータxは、系の観測状況に依らず値が不変なパラメータ(以下、「共通パラメータ」と呼ぶ。)であるものとする。これは、例えば熱力学系における等温過程に着目した場合の温度と圧力との関係を示したものであり、共通パラメータxは温度、個別パラメータyは圧力にそれぞれ対応する。
【0020】
今、i番目の観測状況における個別パラメータyをyで表し、以後yを個別パラメータと呼ぶことにすると、i番目の観測状況における共通パラメータxと個別パラメータyとの相関が部分関数f(x、y)で表されるとき、系の状態を評価するための評価関数は、全ての観測状況についての部分関数の和で表現される。すなわち、全部でn個の観測状況が存在する場合には、式(1)のように評価関数Eが定式化される。
【0021】
【数1】

【0022】
今、評価関数Eを用いて、系の状態を最も安定にするような共通パラメータx及び個別パラメータyの値を決定する(共通パラメータx及び個別パラメータyを最適化する)ことを考えた場合、最適化収束計算により、評価関数Eの値を下げるように共通パラメータx及び個別パラメータyの値を変化させていくことになる。系の状態が最も安定となるのは、評価関数Eが大域的最小値を取る場合だからである。
【0023】
しかし、評価関数Eは多峰性の強い関数であり、大域的最小値以外に多くの局所的最小値を有している。これは、共通パラメータxが全ての部分関数間で共通であることに起因し、共通パラメータxの値を変化させると部分関数それぞれの値が変化することから明らかである。評価関数Eのグラフの一例を図1に示す。
【0024】
図1において、横軸は共通パラメータx、縦軸は評価関数Eをそれぞれ示している。グラフ中の黒丸は、説明上、最適化収束計算の過程における共通パラメータxの値を示したものである。また、評価関数Eの大域的最小値はEであるものとして説明する。
【0025】
共通パラメータxの値は、最適化収束計算の過程で評価関数Eの値を下げる方向に変化していくため、計算過程において、例えば共通パラメータxの値がxやxである場合は、評価関数Eが局所的最小値Eを取る方向に変化していき、最終的に局所解xに収束する可能性が高い。しかし、局所的最小値Eは評価関数Eの真の最小値ではないため、この場合は、共通パラメータxの最適化が適切に行われたとは言えない。
【0026】
一方、計算過程において、例えば共通パラメータxの値がxやxである場合は、評価関数Eが大域的最小値Eを取る方向に共通パラメータxの値が変化していき、最終的に大域解xに収束する可能性が高い。大域的最小値Eは評価関数Eの真の最小値であるため、この場合は、共通パラメータxの最適化が適切に行われたと言える。
【0027】
このように、評価関数を用いた最適化を行う場合、その成否は専ら評価関数の多峰性に依存し、評価関数の多峰性が強ければ強いほど、最適化の成功率は低くなってしまう。そこで、最適化の成功率を上げるために、評価関数の多峰性を弱めることを考えた。
【0028】
評価関数Eの多峰性は、共通パラメータxが各部分関数間で共通であることに起因していると考えられるため、共通パラメータxを個別パラメータであるものとして取り扱うことにする(以下、この取り扱いを「パラメータの分離」と呼ぶ。)。具体的には、i番目の観測状況における共通パラメータxを代替パラメータx、部分関数をf(x、y)でそれぞれ表す。これは、共通パラメータxが観測状況に依らず値が不変なパラメータであるとの仮定に反するが、便宜上このような取り扱いをするだけである。この場合、式(1)の評価関数Eは、式(2)の評価関数Eとして書き換えられる。
【0029】
【数2】

【0030】
式(2)において、代替パラメータxは、各部分関数に固有のパラメータであるため、代替パラメータxの値の変化は、当該代替パラメータxが含まれる部分関数f(x,y)の値にしか影響を及ぼさない。従って、評価関数Eは多峰性の弱い関数である。
【0031】
この評価関数Eを用いた最適化では、先ず最適化収束計算により評価関数Eの値を下げるように代替パラメータx及び個別パラメータyそれぞれの値を変化させていき、代替パラメータx及び個別パラメータyそれぞれの収束値を求める。そして、例えば求められた代替パラメータxの収束値の平均値を算出し、算出した平均値を共通パラメータxの最適値に決定する。また、求められた個別パラメータyそれぞれの収束値を、個別パラメータyそれぞれの最適値に決定する。
【0032】
しかしながら、代替パラメータxは部分関数毎に異なるパラメータであるため、代替パラメータxそれぞれの収束値にはばらつきが生じる可能性が高い。そこで、各部分関数間の代替パラメータxの値の差異に対するペナルティを与えることにし、式(2)の評価関数Eにペナルティ値を加算する。この場合、式(3)のような評価関数Eが定式化される。
【0033】
【数3】

【0034】
式(3)において、末項が、異なる全ての代替パラメータxの組み合わせについてのペナルティ値の総和である。また、各ペナルティ値を与えるペナルティ関数P(x、x)は、式(4)のように表される。
【0035】
【数4】

【0036】
ペナルティ関数P(x、x)は、パラメータxとxとの差の2乗に、ペナルティ値の大きさを決定付けるための予め定められた正の係数であるペナルティ係数αが乗算された関数であり、xの値とxの値とが同一である場合に値が「0」となる関数である。また、ペナルティ係数αの具体的な値については言及しないが、最適化の試行を繰り返し、経験的に決定することが望ましい。
【0037】
評価関数Eを用いた最適化では、最適化収束計算により代替パラメータxそれぞれの値が、同一又は互いに近似した値に収束し、値にばらつきが生じる可能性が極めて低い。なぜなら、評価関数Eは、ペナルティ値の分だけ値が嵩上げされており、評価関数Eの値を下げるためには、ペナルティ値を「0」に近づける必要があるからである。また、評価関数Eは多峰性の弱い関数である。従って、代替パラメータxそれぞれの収束値から決定される共通パラメータxの最適値は大域解である可能性が高くなる。
【0038】
実際、第1実施例で示す通りに、共通パラメータxが部分関数毎に分離された評価関数Eを用いた最適化を行うと、共通パラメータの値の大域解への収束性が向上されることが実証されている。
【0039】
2.変形例
1.原理では、最適化収束計算により求められた代替パラメータxそれぞれの収束値の平均値を、共通パラメータxの最適値に決定するものとして説明した。しかし、このような構成を採るのではなく、最適化収束計算により求められた代替パラメータxそれぞれの収束値のうち、ばらつきの小さい収束値を抽出し、抽出した収束値の平均値を共通パラメータxの最適値に決定することにしても良い。具体的には、全ての代替パラメータxの収束値の組み合わせについてユークリッド距離を算出し、全体の代替パラメータxの中から、所定割合分の収束値をユークリッド距離が小さい順に抽出する。
【0040】
3.第1実施例
次に、1.原理で説明したパラメータの最適化手法に基づいてカメラキャリブレーションを行った場合の実施例について説明する。
【0041】
3−1.概要
先ず、図2を参照して、カメラキャリブレーションの概要について説明する。
カメラキャリブレーションとは、カメラで被写体を撮影し、実空間(三次元)における被写体の座標情報と、撮影画像(二次元)における被写体の座標情報とを用いてカメラパラメータの最適化を行う処理のことである。ここで、カメラパラメータは、レンズの焦点距離やレンズ歪み係数等のカメラに固有のパラメータである。
【0042】
具体的には、先ず実空間に被写体を配置し、カメラパラメータの値が未知であるカメラを用いて、複数の異なる撮影状況で被写体を撮影する。ここで、撮影状況とは、カメラの撮影位置や画角、撮影方向等から定まる撮影に対する外部的な状態のことを指し、このカメラの撮影位置や画角、撮影方向についての情報を、以下包括的に「カメラ設定情報」と呼ぶ。この手順を、図2(a)に模式的に示す。
【0043】
次いで、実空間(三次元)における被写体の座標情報と、撮影画像(二次元)における被写体の座標情報とに基づいて、カメラ設定情報及びカメラパラメータの値が未知であるものとして、カメラ設定情報及びカメラパラメータの最適値を決定する。この手順を、図2(b)に模式的に示す。
【0044】
尚、図2(a)に示した手順は、コンピュータシミュレーションにより実現することも可能である。具体的には、コンピュータを用いて、仮想三次元空間に仮想的な被写体(オブジェクト)を配置し、カメラ設定情報が異なる複数の異なる視点(仮想カメラ)から見た画像を生成する。この場合は、仮想三次元空間における仮想カメラの位置や画角、視線方向等の情報が「カメラ設定情報」となる。
【0045】
そして、仮想三次元空間におけるオブジェクトの座標情報と、生成された二次元の画像から取得されるオブジェクトの座標情報とに基づいて、カメラ設定情報及びカメラパラメータの最適値を決定する。本実施例では、この手法を採用してカメラキャリブレーションを行う。そこで、図3を参照して、本実施例におけるカメラキャリブレーションの詳細について説明する。
【0046】
本実施例では、仮想三次元空間に、オブジェクトとして立方体を配置する。立方体上には、複数の特徴点を設定し、j番目の特徴点のワールド座標系における座標値(以下、「ワールド座標値」と呼ぶ。)をX=(x、y、z)で表す。また、i番目の視点における仮想カメラのワールド座標値をC=(xci、yci、zci)で表す。この様子を、図3(a)に示す。
【0047】
そして、仮想カメラの複数の異なる視点から見た画像を生成する。具体的には、座標変換処理等の透視投影変換処理に従ってワールド座標系から視点座標系への座標変換を行い、陰面消去やテクスチャマッピング等のレンダリング処理を行って、二次元の画像を生成する。生成される二次元の画像の例を、図3(b)に示す。
【0048】
i番目の視点において生成される画像をIciで表し、各画像について、j番目の特徴点の画像上の座標系である画像座標系における座標値(以下、「画像座標値」と呼ぶ。)をU=(u,v)で表すことにする。
【0049】
3−2.評価関数の定式化
次に、評価関数の定式化を行う。
カメラキャリブレーションにおける評価関数は、ワールド座標系から画像座標系への座標変換が、カメラパラメータによりどれだけ正確に再現されるかを評価する関数として定式化される。今、仮想カメラのi番目の視点に着目した場合の評価関数fは式(5)のように定式化される。
【0050】
【数5】

【0051】
式(5)において、mはオブジェクトである立方体上に設定された特徴点の総数である。また、Kはカメラパラメータを含んだカメラパラメータ行列であり、Oはカメラ設定情報をパラメータとして含んだカメラ設定情報行列である。
【0052】
評価関数fは、各特徴点のワールド座標値Xにカメラパラメータ行列Kとカメラ設定情報行列Oとを作用させることで得られる座標値KOと、各特徴点の画像座標値Uとのずれの大きさの総和を表しており、全ての特徴点において座標値が一致する場合に、最小値「0」となる関数である。
【0053】
カメラパラメータは、視点iに依らず値が不変であることから共通パラメータであり、式(5)では、このカメラパラメータを含んだカメラパラメータ行列Kが、式(1)の共通パラメータxに対応する。一方、カメラ設定情報のパラメータは、視点iに応じて値が変化することから個別パラメータであり、式(5)では、このカメラ設定情報のパラメータを含んだカメラ設定情報行列Oが、式(1)の個別パラメータyに対応する。
【0054】
評価関数fは、1つの視点に着目した場合の評価関数であるため、全部でn個の視点が存在する場合には、式(6)のように評価関数Eが定式化される。
【0055】
【数6】

【0056】
式(6)の評価関数Eは、式(1)の評価関数Eに対応するものであり、評価関数fを部分関数として含んでいる。ここで、評価関数Eは、原理で説明した通り多峰性の強い関数である。そこで、カメラパラメータ(カメラパラメータ行列K)を視点i毎に分離し、式(6)の評価関数Eを式(3)の評価関数Eに則って書き換えると、式(7)のようになる。
【0057】
【数7】

【0058】
式(7)において、Kはi番目の視点におけるカメラパラメータ行列である。また、末項は、異なる全てのカメラパラメータ行列Kの組み合わせについてのペナルティ値の総和である。尚、ペナルティ関数Pは、式(4)で説明した通りである。
【0059】
3−3.処理の流れ
次に、本実施例におけるカメラキャリブレーションの処理の流れについて説明する。
本実施例では、コンピュータに、既知である特徴点のワールド座標値X及び画像座標値Uを入力する。そして、式(6)の評価関数E及び式(7)の評価関数Eそれぞれについて、ニュートン法に基づいた最適化収束計算を行わせ、カメラパラメータ行列K(カメラパラメータ)及びカメラ設定情報行列O(カメラ設定情報)の最適値を得る。この流れを、図4に示す。尚、カメラパラメータ行列K(カメラパラメータ)及びカメラ設定情報行列O(カメラ設定情報)の初期値は、ランダムに与えるものとする。
【0060】
ニュートン法は、二次収束性を持ち、解への収束速度が非常に早いことを特徴とする最適化アルゴリズムである。より具体的には、対象となる評価関数をテーラー展開によって近似し、その近似関数の値が「0」になる点を求める手順を含んでいる。また、このニュートン法による最適化収束計算の詳細手法は公知のものであるため、説明は省略する。
【0061】
3−4.結果
図5〜7を参照して、カメラキャリブレーションを行った結果について説明する。
ここで示す結果は、ランダムに決定された24個の異なる視点を基に生成された各画像から取得した画像座標値Uに基づいて最適化収束計算を行い、求められたカメラパラメータの最適値と、カメラパラメータの理想値との2乗誤差を算出する試行を繰り返し行った場合の、各試行における2乗誤差をプロットしたものである。但し、カメラパラメータの理想値は既知である。また、カメラパラメータは複数存在するため、各カメラパラメータについての2乗誤差の総和をプロットしている。
【0062】
図5は、式(6)の評価関数Eに基づいた計算結果を示す図であり、図6は、式(7)の評価関数Eに基づいた計算結果を示す図である。また、図6の一部を拡大した図を図7に示す。各図において、横軸は、最適化に要した処理時間(秒)を示し、縦軸は、2乗誤差を示している。
【0063】
評価関数Eを用いて最適化を行った場合は、全ての試行において処理時間は「100秒」以内であり、最適化に要する時間は非常に短いが、得られた2乗誤差は、約「200000」〜「1000000」と非常に大きな値となっている。例えば、2乗誤差が「600000」の場合は、理想値からの最適値のずれは約8〜10%であり、良好な結果が得られたとは言い難い。
【0064】
一方、評価関数Eを用いて最適化を行った場合は、最適化に要する時間は比較的長いが、得られた2乗誤差は、ほとんどが「100000」以内と非常に小さな値となっている。例えば、2乗誤差が「20000」の場合は、理想値からの最適値のずれは約2〜3%である。また、2乗誤差が「0」となった試行も多数存在したため、良好な結果が得られたと言える。
【0065】
3−5.作用効果
第1実施例では、仮想三次元空間に配置したオブジェクトを複数の視点から見た仮想カメラの画像を生成し、生成した各画像から取得されるオブジェクトの座標情報を利用したカメラキャリブレーションを行った。また、カメラキャリブレーションを行う際の評価関数に、カメラパラメータが仮想カメラの視点毎に分離された評価関数を用いたことで、カメラパラメータの値の大域解への収束性を向上させることができた。
【0066】
4.第2実施例
次に、本発明を適用した数値計算装置の一種であるカメラキャリブレーション装置1について説明する。
カメラキャリブレーション装置1は、カメラパラメータ及びカメラ設定情報の最適値を算出・表示する装置である。具体的には、先ず、実空間に配置した被写体を、複数の異なる撮影状況でユーザがカメラにより撮影する。そして、被写体上に複数設定した各特徴点の実空間における座標値(以下、「実空間座標値」と呼ぶ。)と、撮影画像から取得される各特徴点の画像座標系における座標値(以下、「画像座標値」と呼ぶ。)とをカメラキャリブレーション装置1に入力すると、カメラキャリブレーション装置1は、最適化収束計算を行ってカメラパラメータ及びカメラ設定情報の最適値を算出して、その値を表示する。また、最適化収束計算は、式(7)の評価関数Eに基づいて行われ、ユーザにより入力される特徴点の実空間座標値がX、画像座標値がUにそれぞれ対応する。
【0067】
4−1.機能構成
図8は、カメラキャリブレーション装置1の機能構成を示すブロック図である。
カメラキャリブレーション装置1は、入力部10と、処理部20と、表示部30と、記憶部40とを備えて構成されるコンピュータシステムである。
【0068】
入力部10は、例えばキーボードにより実現され、押下されたキーの信号を処理部20に出力する。この入力部10によるキー操作により、特徴点の実空間座標値及び画像座標値の入力がなされる。
【0069】
処理部20は、カメラキャリブレーション装置1全体の制御や最適値の算出処理等を行う。この機能は、例えばCPU(CISC型、RISC型)等の演算装置やその制御プログラムにより実現される。
【0070】
また、処理部20は、主な機能部として、カメラパラメータ及びカメラ設定情報の最適値の算出を行う最適値算出部21を含んでいる。最適値算出部21は、最適値算出プログラム41に従って最適値算出処理を実行する。
【0071】
表示部30は、処理部20により算出されるカメラパラメータ及びカメラ設定情報の最適値が表示される表示装置であって、例えばCRT、LCD、ELD、PDP、HMD等のハードウェアによって実現される。
【0072】
記憶部40は、処理部20にカメラキャリブレーション装置1を統合的に制御させるための諸機能を実現するためのシステムプログラムや、カメラパラメータ及びカメラ設定情報の最適値を算出させるために必要なプログラムやデータ等を記憶すると共に、処理部20の作業領域として用いられ、処理部20が各種プログラムに従って実行した演算結果や入力部10から入力される入力データ等を一時的に記憶する。この機能は、例えば各種ICメモリやハードディスク、CD−ROM、DVD、MO、RAM、VRAM等によって実現される。
【0073】
また、記憶部40は、処理部20を最適値算出部21として機能させるための最適値算出プログラム41と、特徴点座標情報43と、カメラ設定最適値情報45と、カメラパラメータ最適値情報47とを含んでいる。
【0074】
特徴点座標情報43は、ユーザにより入力された特徴点の座標値が記憶されたデータであり、画像番号431と、特徴点座標値433とが対応付けられている。この特徴点座標情報43のデータ構成例を、図9に示す。
【0075】
画像番号431は、撮影画像の番号である。特徴点座標値433は、各特徴点の実空間座標値と画像座標値とを含んでいる。
【0076】
最適値算出処理において、処理部20は、ユーザにより入力部10を介して入力された各特徴点の実空間座標値と画像座標値とを、包括して特徴点座標値433とする。そして、処理部20は、画像番号431と特徴点座標値433とを対応付けて特徴点座標情報43とし、記憶部40に記憶させる。
【0077】
カメラ設定最適値情報45は、最適値算出処理により算出される各カメラ設定情報それぞれの最適値のデータであり、画像番号451と、カメラ設定最適値453とが対応付けられている。このカメラ設定最適値情報45のデータ構成例を、図10に示す。
【0078】
画像番号451は、画像番号431と同一である。カメラ設定最適値453は、各撮影状況におけるカメラの撮影位置、画角、撮影方向等の最適値である。
【0079】
最適値算出処理において、処理部20は、算出したカメラの撮影位置、画角、撮影方向等の最適値をカメラ設定最適値453とする。そして、処理部20は、画像番号451とカメラ設定最適値453とを対応付けてカメラ設定最適値情報45とし、記憶部40に記憶させる。
【0080】
カメラパラメータ最適値情報47は、最適値算出処理により算出される各カメラパラメータそれぞれの最適値のデータであり、そのデータ構成例を図11に示す。レンズの焦点距離やレンズ歪み係数等のカメラパラメータの最適値が格納されている。
【0081】
4−2.処理の流れ
次に、処理の流れについて説明する。
図12は、最適値算出処理の流れを示すフローチャートである。この処理は、最適値算出部21が最適値算出プログラム41を実行することで実現される処理である。
【0082】
先ず、ユーザにより、各撮影画像について、それぞれの特徴点の実空間座標値と画像座標値とが入力部10を介して入力されると(ステップA1)、最適値算出部21は、入力された実空間座標値と画像座標値とを包括して特徴点座標値433とする。そして、最適値算出部21は、画像番号431と特徴点座標値433とを対応付けて特徴点座標情報43とし、記憶部40に記憶させる。
【0083】
次いで、最適値算出部21は、式(7)の評価関数Eに基づいた最適化収束計算を行い(ステップA3)、各カメラパラメータについて、分離されたカメラパラメータそれぞれの収束値の平均値を算出して、カメラパラメータの最適値とする(ステップA5)。そして、最適値算出部21は、各カメラパラメータの最適値をカメラパラメータ最適値情報47として、記憶部40に記憶させる。
【0084】
また、最適値算出部21は、各カメラ設定情報について、カメラ設定情報それぞれの収束値をカメラ設定最適値453とする(ステップA7)。そして、最適値算出部21は、画像番号451とカメラ設定最適値453とを対応付けてカメラ設定最適値情報45とし、記憶部40に記憶させる。
【0085】
最後に、最適値算出部21は、算出したカメラパラメータ及びカメラ設定情報の最適値を表示部30に表示させて(ステップA9)、最適値算出処理を終了する。
【0086】
4−3.作用効果
第2実施例によれば、被写体上に設定された各特徴点の実空間座標値と、画像座標値とがユーザにより入力されることで、式(7)の評価関数Eに基づいた最適化収束計算を行い、カメラパラメータ及びカメラ設定情報の最適値を算出・表示するカメラキャリブレーション装置1が実現される。
【図面の簡単な説明】
【0087】
【図1】多峰性の強い評価関数のグラフの一例を示す図。
【図2】カメラキャリブレーションの概要を示す図。
【図3】第1実施例におけるカメラキャリブレーションの詳細を示す図。
【図4】第1実施例におけるカメラキャリブレーションの流れを示す図。
【図5】第1実施例における最適化収束計算の計算結果の一例を示す図。
【図6】第1実施例における最適化収束計算の計算結果の一例を示す図。
【図7】第1実施例における最適化収束計算の計算結果の一例を示す図。
【図8】カメラキャリブレーション装置の機能構成を示すブロック図。
【図9】特徴点座標情報のデータ構成例を示す図。
【図10】カメラ設定最適値情報のデータ構成例を示す図。
【図11】カメラパラメータ最適値情報のデータ構成例を示す図。
【図12】最適値算出処理の流れを示すフローチャート。
【符号の説明】
【0088】
1 カメラキャリブレーション装置
10 入力部
20 処理部
21 最適値算出部
30 表示部
40 記憶部
41 最適値算出プログラム
43 特徴点座標情報
45 カメラ設定最適値情報
47 カメラパラメータ最適値情報

【特許請求の範囲】
【請求項1】
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値を所定の最適化収束計算を行って求める処理をコンピュータに実行させるためのプログラムであって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算ステップと、
前記代替評価関数収束計算ステップで求まった代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定ステップと、
を前記コンピュータに実行させるためのプログラム。
【請求項2】
前記関数P(x,x)は、各部分関数間の代替パラメータxの値の分散が大きい程、大きなペナルティ値を与える関数であることを特徴とする請求項1に記載のプログラム。
【請求項3】
前記各部分関数fは、撮影対象の三次元空間の座標から所与のカメラで撮影した撮影画像の座標に変換する撮影画像毎に異なる座標変換のための部分関数であり、
前記共通パラメータxには、少なくとも前記所与のカメラのカメラパラメータが含まれ、
前記個別パラメータyには、少なくとも前記所与のカメラで撮影した際のカメラ位置及びカメラ方向のパラメータが含まれ、
前記共通パラメータ値決定ステップは、前記所与のカメラのカメラパラメータ値を決定するステップである、
ことを特徴とする請求項1又は2に記載のプログラム。
【請求項4】
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値を所定の最適化収束計算を行って求める処理を実行する数値計算装置であって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算手段と、
前記代替評価関数収束計算手段により求められた代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定手段と、
を備える数値計算装置。
【請求項5】
各部分関数間で共通の共通パラメータxと、各部分関数毎に個別の個別パラメータyとを変数とする複数の部分関数f(x,y)(i=1,2,・・・)の総和として表現可能な評価関数の値を最小にするための前記共通パラメータx及び前記個別パラメータyの最適値をコンピュータ上で所定の最適化収束計算を行って求めるための数値計算方法であって、
前記各部分関数それぞれを、共通パラメータxを各部分関数毎に個別の代替パラメータxに代えた部分関数f(x,y)とした当該部分関数の総和に、当該各部分関数間の代替パラメータxの値の差異に応じて定まるペナルティ値を与える関数P(x,x)(i≠j)を加えた関数を前記評価関数として前記所定の最適化収束計算を行う代替評価関数収束計算ステップと、
前記代替評価関数収束計算ステップで求まった代替パラメータxそれぞれの最適値に基づいて前記共通パラメータxの最適値を決定する共通パラメータ値決定ステップと、
を含む数値計算方法。

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