図1は本実施の形態における情報処理システムの構成例を示している。この情報処理システムは、対象物8を所定のフレームレートで撮影する撮像装置12、撮影画像から得た情報に基づき情報処理を行う情報処理装置10、および情報処理の結果を出力する表示装置16を含む。情報処理システムにはさらに、情報処理装置10に対する操作をユーザから受け付ける入力装置が含まれていてもよい。情報処理装置10はさらに、インターネットなどのネットワークに接続することでサーバなど外部の装置と通信可能としてもよい。
情報処理装置10と撮像装置12および表示装置16とは、有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。また情報処理装置10、撮像装置12、表示装置16のいずれか2つ以上を組み合わせて一体的な装置としてもよい。例えばそれらを装備したカメラや携帯端末などで情報処理システムを実現してもよい。あるいは表示装置16を、ユーザが頭部に装着することで眼前に画像を表示させるヘッドマウントディスプレイとし、当該ヘッドマウントディスプレイに、ユーザの視線に対応する画像を撮影するように撮像装置12を設けてもよい。いずれにしろ情報処理装置10、撮像装置12、表示装置16の外観形状は図示するものに限らない。
このようなシステムにおいて情報処理装置10は、撮像装置12が所定のフレームレートで撮影した画像のデータ、または当該画像から得られた各種データの少なくともいずれかを順次取得し、それに基づき対象物8の実空間における位置や姿勢を特定する。対象物8が弾性体など、形状が可変であればその形状も特定する。そして特定した結果に対応するように情報処理を実施し、表示画像や音声のデータを生成して表示装置16に出力する。対象物8の状態に対応させて実施する情報処理の内容は特に限定されず、それによって対象物8も様々であってよい。
例えば対象物8をゲームのコントローラとし、ユーザが把持して動かすことでゲームに対する操作がなされるようにしてもよい。この場合、ゲーム世界を表す画像がコントローラの動きに応じて変化したり、ユーザを写した撮影画像上でコントローラが仮想オブジェクトに置換された画像を表示させたりすることができる。あるいはヘッドマウントディスプレイを装着したユーザの視線に対応する視野で、ユーザの手などの実物体とインタラクションする仮想オブジェクトを表した画像を、当該ヘッドマウントディスプレイに表示させることもできる。
このように対象物8の状態を利用してなされる情報処理については様々に考えられるため、以後は、撮像装置12による撮影から、情報処理装置10における対象物8の位置、姿勢、形状に係るデータの取得までを、効率的かつ正確に実現する手法に主眼を置き説明する。以後、対象物の位置、姿勢、形状を「対象物の状態」と総称するが、常にその全てを特定する主旨ではなく、少なくともそのうちの1つを必要に応じて特定すればよい。この目的において本実施の形態における撮像装置12は、少なくとも被写空間の偏光画像を撮影するとともに、撮影結果に基づき複数種類のデータを生成し情報処理装置10に送信する。
情報処理装置10は、送信されたデータを用いて対象物8の状態を特定したうえ、最終目的である情報処理を実施する。なお撮像装置12は偏光画像を撮影する機構以外に、自然光(非偏光)の画像を撮影する機構を備えていてよい。また、既知の間隔を有する左右の視点から自然光の画像または偏光画像を撮影するステレオカメラを設け、三角測量の原理により対象物の3次元空間での位置を特定できるようにしてもよい。このような撮像装置12の構成は、目的とする情報処理の内容や表示させたい画像の内容などに応じて適宜決定してよいが、以後の説明では特に、偏光画像の撮影および処理について述べる。
図2は撮像装置12が備える撮像素子の構造例を示している。なお同図は素子断面の機能的な構造を模式的に示しており、層間絶縁膜や配線などの詳細な構造は省略している。撮像素子110はマイクロレンズ層112、ワイヤグリッド型偏光子層114、および光検出層118を含む。ワイヤグリッド型偏光子層114は、複数の線状の導体部材を入射光の波長より小さい間隔でストライプ状に配列させた偏光子を含む。マイクロレンズ層112により集光された光がワイヤグリッド型偏光子層114に入射すると、偏光子のラインと平行な方向の偏光成分は反射され、垂直な偏光成分のみが透過する。
透過した偏光成分を光検出層118で検出することにより偏光画像が取得される。光検出層118は一般的なCCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどの半導体素子構造を有する。ワイヤグリッド型偏光子層114は、光検出層118における電荷の読み取り単位、すなわち画素単位、あるいはそれより大きな単位で主軸角度が異なるような偏光子の配列を含む。同図右側には、ワイヤグリッド型偏光子層114を上面から見たときの偏光子配列120を例示している。
同図において網掛けされたラインが偏光子を構成する導体(ワイヤ)である。なお点線の矩形はそれぞれ一主軸角度の偏光子の領域を表しており、点線自体は実際に形成されるものではない。図示する例では、4通りの主軸角度の偏光子が2行2列の4つの領域122a、122b、122c、122dに配置されている。図中、対角線上にある偏光子はその主軸角度が直交しており、隣り合う偏光子は45°の差を有する。すなわち45°おきの4つの主軸角度の偏光子を設けている。
各偏光子はワイヤの方向に直交する方向の偏光成分を透過する。これにより、下に設けた光検出層118においては、4つの領域122a、122b、122c、122dに対応する各領域で、45°おきの4方向の偏光情報を得ることができる。このような4つの主軸角度の偏光子配列をさらに縦方向、横方向に所定数、配列させ、電荷読み出しのタイミングを制御する周辺回路を接続することにより、4種類の偏光情報を2次元データとして同時に取得するイメージセンサを実現できる。
ワイヤグリッド型偏光子を用いた画像取得技術については、例えば特開2012−80065号公報などにも開示されている。ただし本実施の形態における撮像装置12の素子構造は図示するものに限らない。例えばワイヤグリッド型偏光子層114と光検出層118の間に、赤、緑、青の光をそれぞれ透過するフィルタの配列を含むカラーフィルター層を設け、ワイヤグリッド型偏光子層114における偏光子の主軸角度とフィルタの色の組み合わせに応じて、偏光情報を色別に得てもよい。また偏光子はワイヤグリッド型に限らず、線二色性偏光子など実用化されているもののいずれでもよい。あるいは一般的なカメラの前面に主軸角度が変更可能な偏光板を配置した構造としてもよい。
図3は情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)23、GPU(Graphics Processing Unit)24、メインメモリ26を含む。これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインターフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、表示装置16へデータを出力する出力部36、撮像装置12や図示しない入力装置からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
CPU23は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU23はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU23からの描画命令に従って描画処理を行い、図示しないフレームバッファに表示画像のデータを格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36に出力する。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
図4は、撮像装置12と情報処理装置10の機能ブロックの構成を示している。同図に示す各機能ブロックは、ハードウェア的にはCPU、GPU、マイクロプロセッサ、演算回路、撮像素子、各種メモリなどの少なくともいずれかの構成で実現でき、ソフトウェア的には、記録媒体などからメモリにロードされた、演算機能、描画機能、通信機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
撮像装置12は、撮影により輝度データを取得する輝度データ取得部70、輝度データから所定解像度の撮影画像のデータを生成する画像データ生成部72、撮影画像の画素値を所定のパラメータに変換する画素値変換部74、複数種類のデータを接続して送出形式にする送出画像生成部76、および、情報処理装置10からの要求を取得し該当データを送信する通信部78を含む。
輝度データ取得部70は、例えば図2で示した撮像素子110の2次元配列により、複数方向の偏光成分の輝度分布を取得する。この輝度分布は、偏光撮影画像のいわゆるRAW画像である。画像データ生成部72は、各方向について離散的に得られた偏光輝度の値を補間するデモザイク処理を行うとともに、複数段階に縮小することにより所定解像度の偏光画像を生成する。
画素値変換部74は、偏光画像を用いて画素ごとに所定の演算を実施し、その結果を画素値とする新たな画像を生成する。具体的には、複数方向の偏光画像の画素値を同じ位置の画素ごとに集約し、対象物の法線を得るのに必要な中間パラメータ、あるいは法線を表すパラメータを画素ごとに算出する。このようにして新たに生成するデータは、パラメータによっては視覚的に意味のある一般的な「画像」とは異なる場合があるが、画素に対応づけられた2次元マップとして撮影画像と同様に扱えるため、以後の説明では「画像」と呼ぶこともある。パラメータの具体例については後述する。なお画素値変換部74には、画像データ生成部72が生成した偏光画像の画素値をそのまま出力する経路も設ける。
送出画像生成部76は、画素値変換部74から入力される複数種類のデータを統合したうえ、情報処理装置10から要求されたデータを出力する。本実施の形態において撮像装置12が内部で行う各種データの生成は、画素単位、あるいは近傍の複数の画素単位の局所的な処理である。したがって各処理を流れ作業で行うことにより、送出画像生成部76には、複数種類のデータが画素列順に入力される。送出画像生成部76はまず、それらのデータを接続して1つのデータストリームとしたうえ、要求されたデータのみを切り出して再接続することにより、最終的な送出形態としてのデータストリームを形成する。
このとき各種データを、それぞれの生成周期を考慮したサイズの画素列単位で循環して接続していくことにより、撮影からデータ送出までを高速に行うとともに、要求されたデータの切り出しや、情報処理装置10におけるデータの区別を容易に行えるようにする。通信部78は情報処理装置10と通信を確立し、必要なデータの種類および画像上の領域に係る要求を受け付け、画素値変換部74および送出画像生成部76に通知する。
そして送出画像生成部76が生成したデータストリームを順次パケット化して情報処理装置10に送信する。通信部78は、例えばUSB1.0/2.0/3.0等の所定のプロトコルにしたがって、情報処理装置10にパケットを送出する。情報処理装置10との通信は有線に限らず、例えばIEEE802.11a/b/gなどの無線LAN通信、IrDAなどの赤外線通信などの無線通信であってもよい。
情報処理装置10は、撮像装置12へデータを要求し、それに応じて送信されたデータを取得する通信部86、取得したデータを格納するデータ記憶部84、送信されたデータを利用して対象物の状態を特定する対象物認識部80、および、対象物の状態に基づき出力すべきデータを生成する出力データ生成部82を含む。通信部86は図3の通信部32、CPU23などで実現され、偏光画像や各種パラメータを表すデータストリームを撮像装置12から取得する。
データ記憶部84はメインメモリ26で実現され、通信部86が取得したデータを順次格納する。この際、通信部86は、データストリームに含まれる複数種類のデータを切り分けて、個別の画像として再構築する。データストリームにおける各種データの接続規則は、撮像装置12へのデータ要求の内容によって決定されるため、切り分け処理も当該要求に基づき行える。
対象物認識部80はCPU23、GPU24などで実現され、データ記憶部84に格納された各種データを用いて対象物の状態を特定する。具体的には、偏光画像のデータを直接参照したり、撮像装置12において求められた中間パラメータを利用したりして、対象物表面の法線ベクトルを取得することにより、対象物の位置や姿勢を特定する。このとき例えば、あらかじめ登録しておいた対象物の3次元モデルの状態を、取得された法線ベクトルの分布に適合するように仮想空間で調整することにより、実際の対象物の位置や姿勢を正確に特定できる。
法線ベクトルによる解析以外に、偏光画像に写る対象物の像をテンプレート画像とマッチングするなどして、見かけ上のサイズや形状から対象物の位置や姿勢を推定してもよい。また偏光画像、あるいは別途取得した自然光の画像に対し、顔検出、顔認識、手認識、視覚追跡など、実用化されている対象物認識処理を施してもよい。撮像装置12にステレオカメラを設ける場合、左右の視点から撮影されたステレオ画像を用いて奥行き画像を生成し対象物の実空間での位置を求めてもよい。
奥行き画像は、被写体の撮像面からの距離を、撮影画像における画素値として表した画像であり、ステレオ画像における対応点の視差に基づき、三角測量の原理により生成できる。これらの複数種類の処理を適宜組み合わせることにより、対象物の状態を高精度かつ効率よく特定できる。例えば奥行き画像や顔検出結果を用いて、画像平面のうち対象物が写る領域を特定し、当該領域についてのみ法線ベクトルを取得することにより、対象物の状態を詳細に求めてもよい。あるいは法線ベクトルの分布を奥行き画像と統合することにより、対象物表面の凹凸なども表した、より精密な奥行き画像を生成してもよい。
対象物認識部80は、実施する処理内容やその時点で特定した対象物の状態などに応じて、撮像装置12に要求するデータの種類、解像度、画像平面におけるどの領域のデータを要求するかを決定する。例えば、初期段階においては低解像度の偏光画像全体を要求し、それを用いて対象物の像の領域をおよそ特定したら、当該領域のみの偏光画像または中間パラメータなどを、高い解像度で要求する。要求する内容は通信部86に随時通知され、通信部86から撮像装置12へ発行される。
出力データ生成部82はCPU23、GPU24、出力部36などで実現し、対象物認識部80が特定した対象物の状態に基づき所定の情報処理を実施して、表示画像や音声など出力すべきデータを生成する。上述したようにここで実施する情報処理の内容は特に限定されない。例えば撮影画像上に、対象物と接するように仮想オブジェクトを描画する場合、出力データ生成部82はデータ記憶部84から読み出した自然光の撮影画像上に、対象物認識部80が特定した対象物の状態に対応するようにオブジェクトを描画する。出力データ生成部82は、そのようにして生成した表示画像などの出力データを表示装置16に送信する。
図5は、本実施の形態において対象物の状態を取得する処理の一例を模式的に示している。この例において撮影画像150には、対象物8を含む被写体が写っている。対象物認識部80はまず、低解像度の全体画像を用いて対象物8の像の領域を抽出する(矢印a)。画像152は抽出結果を表し、対象物8の像の領域を白抜きとしている。対象物の領域抽出には上述のとおり、外観形状に基づく種々の検出処理を導入してもよいし、奥行き画像が表す対象物の位置情報に基づいてもよい。または、それまでの画像フレームで得られた対象物の状態変化などを利用してもよい。あるいはそれらを適宜組み合わせてもよい。
次に対象物認識部80は、抽出した領域の高解像度の偏光画像154を解析したり、撮像装置12から当該領域の中間パラメータを取得したりして、対象物の法線ベクトルを取得する(矢印b、c)。例えば対象物8をラケットとした場合、その法線ベクトル分布が画像156に矢印で示すように得られれば、その傾きに応じて適切な方向に跳ね返る仮想的なボールを撮影画像上に描画することができる。これにより、対象物8をコントローラとする卓球ゲームなどを実現できる。
上述のとおり複数の主軸角度の偏光子を備えた撮像素子を導入することにより、複数方向の偏光画像を取得できる。これらの偏光画像を用い、偏光方向に対する輝度の変化を画素ごとに求めることにより、当該画素が表す対象物表面の法線ベクトルを取得できる。偏光画像を利用して被写体の様々な情報を取得する技術は従来、研究が進められている。被写体表面の法線ベクトルを求める方法についても、例えば、Gary Atkinson and Edwin R. Hancock, "Recovery of Surface Orientation from Diffuse Polarization", IEEE Transactions on Image Processing, June 2006, 15(6), pp.1653-1664、特開2009−58533号公報などに開示されており、本実施の形態ではそれらを適宜採用してよい。以下、概要を説明する。
まず偏光子を介して観察される光の輝度は、偏光子の主軸角度θpolに対し次の式のように変化する。
ここでImax、Iminはそれぞれ、観測される輝度の最大値、最小値であり、φは偏光位相である。上述のとおり4通りの主軸角度θpolに対し偏光画像を取得した場合、同じ位置にある画素の輝度Iは、各主軸角度θpolに対し式1を満たすことになる。したがって、それらの座標(I,θpol)を通る曲線を、最小二乗法等を用いて余弦関数に近似することにより、Imax、Imin、φを求めることができる。そのように求めたImax、Iminを用いて、次の式により偏光度ρが求められる。
対象物表面の法線は、光の入射面(拡散反射の場合は出射面)の角度を表す方位角αと、当該面上での角度を表す天頂角θで表現できる。また二色性反射モデルによれば、反射光のスペクトルは、鏡面反射と拡散反射のスペクトルの線形和で表される。ここで鏡面反射は物体の表面で正反射する光であり、拡散反射は物体を構成する色素粒子により散乱された光である。上述の方位角αは、鏡面反射の場合は式1において最小輝度Iminを与える主軸角度であり、拡散反射の場合は式1において最大輝度Imaxを与える主軸角度である。
天頂角θは、鏡面反射の場合の偏光度ρs、拡散反射の場合の偏光度ρdと、それぞれ次のような関係にある。
ここでnは対象物の屈折率である。式2で得られる偏光度ρを式3のρs、ρdのどちらかに代入することにより天頂角θが得られる。こうして得られた方位角α、天頂角θにより、法線ベクトル(px,py,pz)は次のように得られる。
このように偏光画像の各画素が表す輝度Iと偏光子の主軸角度θpolとの関係から、当該画素に写る対象物の法線ベクトルが求められ、像全体として法線ベクトル分布を得ることができる。ただし上述のとおり、観測された光には鏡面反射成分と拡散反射成分が含まれ、それぞれ振る舞いが異なるため、厳密には各成分の割合によって法線ベクトルも変化する。一方、一つの対象物に着目した場合、材質や色が限定的であることに鑑みれば、その連続した面では各成分の割合が不規則に変化することは考えにくい。
つまり一つの対象物の像の領域内部の分布として見た場合、法線ベクトルの空間的、時間的変化は、実際の対象物の変化を反映したものと考えられる。したがって本実施の形態では、鏡面反射モデルおよび拡散反射モデルのいずれか一方を採用し、画素ごとに得られる法線ベクトルを、着目する対象物の像全体で評価することにより、効率的に状態を特定する。なおゲームのコントローラなど対象物を限定できる態様においては、あらかじめその色や材質などを登録しておき、より適切なモデルを採用することにより、状態の特定精度を高めることができる。
図6は撮像装置12の構成をより詳細に示している。輝度データ取得部70は、図2で示した撮像素子の2次元配列などにより、複数方向の偏光成分の輝度分布を取得する。図2の撮像素子によれば、4方向の偏光成分の輝度が、各主軸角度の偏光子の配置に依存した位置で離散的に得られる。
画像データ生成部72は、ISP(Image Signal Processor)50およびピラミッドフィルタ部52を備える。ISP50は、各方向の偏光輝度データをそれぞれ補間することにより、4つの偏光画像を生成する。補間に用いるアルゴリズムは一般的なものでよい。補間処理を4方向に対し並列に行うことにより、4つの偏光画像の画素列を同時に出力できる。なおISP50は補間処理のほか、一般的な撮像装置でなされる各種補正処理も実施する。
ISP50が生成した4つの偏光画像は順次、画素値変換部74に送出されるとともに、ピラミッドフィルタ部52において多段階に縮小される。以後、ISP50が生成した偏光画像、あるいは当該画像と同じサイズ(解像度)の各種データの画像を「1/1画像」と呼び、1/Nに縮小された偏光画像、あるいは当該画像と同じサイズの各種データの画像を「1/N画像」と呼ぶ。ピラミッドフィルタ部52は、必要とする解像度のレベルに応じた数の1/4縮小フィルタを備え、各方向の偏光画像を段階的に縮小して複数の解像度の偏光画像を生成する。同図では第1フィルタ54a、第2フィルタ54b、第3フィルタ54cの3階層のフィルタを示しているが、フィルタの数をそれに限る主旨ではない。
各フィルタは、相互に隣接する4個の画素をバイリニア補間して4画素の平均画素値を演算する処理を実行する。したがって、処理後の画像サイズは処理前の画像の1/4になる。 第1フィルタ54aの前段には、ISP50が生成した1/1画像の横一列の画素数であるW個分の画素値を保持するFIFOバッファ56aを設ける。FIFOバッファ56aは、横一列分の画素の輝度データを、次の横一列分の画素の輝度データがISP50から出力されるまで保持する。
画素の保持時間は、撮像素子のラインスキャンの速度に応じて決まる。横二列分の画素の輝度データが入力されると、第1フィルタ54aは、横2×縦2の4画素分の輝度値を平均する。この処理を繰り返すことによって、1/1画像は縦横それぞれ1/2の長さとなり、全体として1/4のサイズに変換される。変換された1/4画像は、画素値変換部74に送出されるとともに、次段の第2フィルタ54bにも供給される。
第2フィルタ54bの前段には、1/4画像の横一列の画素数であるW/2個分の画素値を保持するFIFOバッファ56bを設ける。FIFOバッファ56bは、横一列分の画素の輝度データを、次の横一列分の画素の輝度データが第1フィルタ54aから出力されるまで保持する。横二列分の画素の輝度データが入力されると、第2フィルタ54bは、横2×縦2の4画素分の輝度値を平均する。この処理を繰り返すことによって、1/4画像は縦横それぞれ1/2の長さとなり、全体として1/16のサイズに変換される。変換された1/16画像は、画素値変換部74に送出されるとともに、次段の第3フィルタ54cに供給される。
第3フィルタ54cについても、前段にW/4個分の画素値を保持するFIFOバッファ56cが配置される以外は、上記と同様の処理を行う。そして画素値変換部74に、1/64サイズの画像を出力する。このように、ピラミッドフィルタ部52の各フィルタからは、1/4ずつ縮小された偏光画像のデータが画素値変換部74に入力される。なおこのようなピラミッドフィルタは既存技術である。一方、本実施の形態におけるピラミッドフィルタ部52は、4方向の偏光画像のデータをISP50から並列に取得したうえ、縮小処理も並列に実施する。
画素値変換部74は、4方向の偏光画像から法線ベクトルを求めるまでに必要な所定のパラメータを画素ごとに算出し、当該パラメータを画素値とする画像を生成する。そして元の偏光画像と新たに生成した画像のうち、必要とされるデータを選択して画素列順に出力する。ここで元の偏光画像のデータは、画素値として複数方向に対応する数のチャンネルを有するように統合したものでよい。このような処理を実施する機構を、画像データ生成部72が生成する複数の解像度ごとに独立に設けることにより、解像度とデータの種類との組み合わせを自由に設定できる。
画素値変換部74は解像度ごとに選択したデータを、送出画像生成部76に並列に供給する。画素値変換部74が法線ベクトルに係る処理の一部を担うことで、情報処理装置10における対象物認識処理の負荷を軽減でき、その後の情報処理を効率的に行える。また解像度ごとにパラメータを算出しておくことにより、情報処理装置10が目的とする処理の内容や対象物の状態に応じて、送信するデータの種類と解像度との組み合わせを即座に切り替えることができる。
なお実際に送信するデータの種類やその解像度については、最終的には送出画像生成部76において取捨選択されるため、画素値変換部74が出力するデータは情報処理の内容に応じて固定としてもよい。あるいは情報処理装置10からの要求に応じて随時切り替えてもよい。送出画像生成部76は出力タイミング調整部56およびクロッピング部60を備える。出力タイミング調整部56は、画素値変換部74から並列に供給された複数解像度のデータが、適切な画素列単位および順序で接続されるようにタイミングを調整して出力する。
そのため出力タイミング調整部56には、1/1、1/4、1/16、1/64サイズの、偏光画像または各種パラメータの画像の横一列分の画素値をそれぞれ保持するFIFOバッファ58a、58b、58c、58dを設ける。すなわちFIFOバッファ58a、58b、58c、58dはそれぞれ、W、W/2、W/4、W/8個分の画素値を保持するバッファである。
出力タイミング調整部56は基本的に、1/1画像の横一列の画素のデータを出力する都度、1/4画像の横一列を2分割した画素列のデータ、1/16画像の横一列を4分割した画素列のデータ、1/64画像の横一列を8分割した画素列のデータを、この順で出力していく。本実施の形態において撮像装置12が行う処理は、画像の左上を起点とし、左から右への処理を画像の下方向へ繰り返すラスタ順で行う。そして上述のとおり、撮像装置12内部の各ブロックにおけるデータの入出力、および情報処理装置10へのデータの送信は基本的に、そのような順序で画素値をつなげたストリーム形式とする。
出力タイミング調整部56が出力するデータも、複数の解像度のデータが混在する一連の画素値のストリームである。したがって厳密には各解像度のデータをつなげた結果を2次元平面の画像として生成するものではない。しかしながら後に詳述するように、出力タイミング調整部56が出力するストリームに対し、各解像度のデータの接続が一巡したときの画素数を画像の横一列分として定義すれば、以後の処理は、一般的にストリーム転送される画像に対するものと同様となる。
結果として出力タイミング調整部56は、実質的には1/1、1/4、1/16、1/64画像のデータを合成した画像を生成していることになる。以後、この仮想的な画像を「合成画像」と呼ぶ。クロッピング部60は、出力タイミング調整部56から合成画像のストリームを取得し、当該ストリームに含まれるデータのうち情報処理装置10から要求された部分の切り出しを行う。出力タイミング調整部56が適切な画素列単位および順序で各種データを接続していくことにより、合成画像において各データが矩形領域を構成するようにできる。このようにすると、合成画像の領域指定によって、要求するデータの種類、解像度、および画像平面上の領域を同時に指定できる。
クロッピング部60は出力タイミング調整部56から供給される合成画像のデータストリームのうち、指定領域に対応する画素列を順次切り出したうえ、それらを接続して新たなデータストリームを再構築し出力する。通信部78はパケット化部62および制御部64を備える。制御部64は、情報処理装置10からの要求信号に基づき、画素値変換部74およびクロッピング部60に、各種データのうちいずれを選択するかを指示する。制御部64はさらに、情報処理装置10から撮影の開始や終了を要求する信号、撮影条件を指定する信号などを受信し、輝度データ取得部70、ISP50などに適宜その情報を通知してよい。
パケット化部62はクロッピング部60から入力されたデータストリームを、所定のプロトコルに応じたサイズで分割してパケット化し、内部のパケットバッファ(図示せず)に書き込む。例えばUSBの場合、ストリームをエンドポイントのサイズごとにパケット化する。そして当該パケットバッファ内のパケットを順次、情報処理装置10に転送する。
図7は撮像装置12および情報処理装置10におけるデータの形態の基本的な変遷を模式的に示している。ここでは例として、横方向に画素W個分、縦方向に画素H個分の幅を有する画像200全体のデータを、撮像装置12から情報処理装置10に送信する場合を考える。上述のように本実施の形態ではデータの生成や出力を、画像平面のラスタ順に行い、最終的に送信するデータも、画像平面の横方向の画素列を順次つなげたストリームの形式とする。
同図においてストリーム202の横軸は時間経過を表しており、ストリーム202を構成する各矩形L1、L2、・・・、LHはそれぞれ、画像200の1列目、2列目、・・・、H列目の画素のデータを表す。1画素のデータサイズをdバイトとすると各矩形のデータサイズはW×dバイトである。パケット化部62は、ストリーム202を所定サイズごとにパケットにまとめ、パケットP1、P2、P3、P4、P5、・・・を生成する。これにより撮像装置12から情報処理装置10へ、パケットP1、P2、P3、P4、P5、・・・の順に送信される。情報処理装置10の通信部86は、パケットP1、P2、P3、P4、P5、・・・を受信すると、それぞれのデータをデータ記憶部84に格納する。
このとき、本来の画像200の横方向の画素数Wを横幅とするように、各パケットのデータをラスタ順に並べていき、W×d×Hバイトの連続したアドレスにデータを展開することにより、画像200を復元した画像204を生成する。同図において画像204を構成する矩形は各パケットのデータを示している。対象物認識部80や出力データ生成部82は、データ記憶部84に展開された画像204を解析に用いたり、画像204上にオブジェクトを描画したりする。
次に出力タイミング調整部56が解像度の異なる画像のデータを接続する手法について説明する。なお図8、9では、1/1、1/4、1/16、の3サイズ(3解像度)の画像について示しているが、1/64以下のサイズの画像を加えても原理は同様である。図8は、各解像度の偏光画像の画素値が、ピラミッドフィルタ部52から画素値変換部74へ入力されるタイミングを示すタイムチャートである。同図において時間ステップS1、S2、S3、S4、・・・はそれぞれ、1/1画像の1列目、2列目、3列目、4列目、・・・の画素値が入力される期間を表す。
なお画素値変換部74は、ピラミッドフィルタ部52から図示するタイミングで入力された画素順に所定のパラメータを算出して出力するため、画素値変換部74から出力タイミング調整部56へのデータ入力のタイミングも同様となる。まず、最も高い頻度で生成される1/1画像の横一列分の画素値が入力される期間を基準の時間ステップとする。そして、当該時間ステップを合成画像の横一列分の画素列と対応させる。すなわち、1/1画像の横一列分の画素値が入力される期間を基準周期として、合成画像の横一列分のデータを形成する。
図の上段、中段、下段はそれぞれ、1/1画像、1/4画像、1/16画像の入力タイミングを示しており、1つの矩形が1画素分の入力に対応する。まず時間ステップS1において、1/1画像の1列目の画素列L(1/1)1の画素値が左の画素から順に入力される。この時間ステップでは、1/4画像、1/16画像は生成されていないため入力されない。
次の時間ステップS2では、1/1画像の2列目の画素列L(1/1)2の画素値が左の画素から順に入力される。このときピラミッドフィルタ部52では、1/1画像の1列目の画素列L(1/1)1および2列目の画素列L(1/1)2の画素値を用いて1/4画像の1列目の画素列L(1/4)1が生成されるため、時間ステップS2では当該画素列の画素値も入力される。
例えば1/4画像の1列目の画素列L(1/4)1の左端の期間210で入力される画素値は、1/1画像の1列目の画素列L(1/1)1のうち、期間206で入力される2つの画素の画素値、および2列目の画素列L(1/1)2のうち、期間208で入力される2つの画素の画素値を用いて生成される。このため時間ステップS2において、画素列L(1/4)1の画素値の入力タイミングは、画素列L(1/1)2の対応する画素の画素値の入力タイミングより少なくとも2画素分遅延する。
次の時間ステップS3では、1/1画像の3列目の画素列L(1/1)3の画素値が入力される。この時間ステップでは1/4画像、1/16画像は生成されないため入力されない。次の時間ステップS4、すなわち1/1画像の4列目の画素列L(1/1)4の画素値が入力される期間では、時間ステップS2と同様、1/4画像の2列目の画素列L(1/4)2の画素値も入力される。
さらにピラミッドフィルタ部52では、1/4画像の1列目の画素列L(1/4)1および2列目の画素列L(1/4)2の画素値を用いて1/16画像の1列目の画素列L(1/16)1が生成されるため、時間ステップS4では当該画素列の画素値も入力される。例えば1/16画像の1列目の画素列L(1/16)1のうち、最初の入力期間218で入力される画素値は、1/4画像の1列目の画素列L(1/4)1のうち、期間210および期間212で入力される2つの画素の画素値、および2列目の画素列L(1/4)2のうち、期間214および期間216で入力される2つの画素の画素値を用いて生成される。
このため時間ステップS4において、画素列L(1/16)1の入力タイミングは、画素列L(1/4)2の対応する画素の画素値の入力タイミングより少なくとも2画素分遅延する。以後、同様に各画像の画素値入力を繰り返すことにより、1/1画像、1/4画像、1/16画像の全画素値が画素値変換部74、ひいては出力タイミング調整部56へ入力される。出力タイミング調整部56はこれらを適切なタイミングで循環して出力することにより、1つの合成画像を構成するデータストリームを形成する。
図9は、出力タイミング調整部56が複数解像度の画像のデータを循環して出力することにより生成される合成画像を模式的に示している。なお同図では理解を容易にするため、図8で示した3つの解像度に対応する3種類のデータのみをつなげた様子を示しているが、1つの解像度に対し複数種類のデータを生成する場合、同じ解像度のデータを続けてつなげていく。この場合、図6で示したFIFOバッファ58a〜58dはそれぞれ、生成されるデータの種類ごとに備えられる。
図中、S1、S2、S3、・・・は図8と同様の時間ステップであり、それぞれの期間に、1/1画像の一列分の画素値が入力される。同図では各時間ステップに出力される画素列を、画像ごとに異なる網掛け矩形で示している。図8を参照して説明したように、時間ステップS1では1/1画像の1列目の画素列L(1/1)1の画素値のみが入力されるため、出力タイミング調整部56はそれをそのまま出力する。元の偏光画像の横方向の画素数がWであるとすると、1/1画像の一列分の画素数も図示するようにWである。
次の時間ステップS2では、1/1画像の2列目の画素列L(1/1)2の画素値、および1/4画像の1列目の画素列L(1/4)1の画素値が図8に示すようなタイミングで並列に入力される。出力タイミング調整部56はそのうち、1/4画像の1列目の画素列L(1/4)1の画素値をFIFOバッファ58bに一時保存し、1/1画像の2列目の画素列L(1/1)2の画素値を連続して先に出力する。
1/1画像の2列目の画素列L(1/1)2の画素値が全て出力されたら、続けて、1/4画像の1列目の画素列L(1/4)1をFIFOバッファ58bから読み出し、出力する。このとき次の時間ステップS3で出力する分を考慮し、1/4画像の1列目の画素列L(1/4)1の全画素のうち前半部分(画像平面における左半分)の画素値のみ出力し、残りはFIFOバッファ58bに引き続き保存しておく。
次の時間ステップS3では、1/1画像の3列目の画素列L(1/1)3の画素値のみが入力される。出力タイミング調整部56は、当該画素列の画素値をそのまま出力し、続けて、1/4画像の1列目の画素列L(1/4)1のうち未出力であった後半部分(画像平面における右半分)の画素値をFIFOバッファ58bから読み出し、出力する。なお時間ステップS2で1/4画像の前半分の画素値を出力している期間に、1/1画像の3列目の画素列L(1/1)3が入力されたら、当該画素列の画素値はFIFOバッファ58aに格納することにより出力タイミングを調整する。以後の時間ステップでも同様である。
次の時間ステップS4では、1/1画像の4列目の画素列L(1/1)4の画素値および1/4画像の2列目の画素列L(1/4)2、1/16画像の1列目の画素列L(1/16)1の画素値が図8に示すようなタイミングで並列に入力される。出力タイミング調整部56はそのうち、1/4画像の2列目の画素列L(1/4)2および1/16画像の1列目の画素列L(1/16)1の画素値をそれぞれFIFOバッファ58b、58cに一時保存し、1/1画像の4列目の画素列L(1/1)4の画素値を連続して先に出力する。
1/1画像の4列目の画素列L(1/1)4の画素値が全て出力されたら、続けて、1/4画像の2列目の画素列L(1/4)2の前半部分をFIFOバッファ58bから読み出し、出力する。次に1/16画像の1列目の画素列L(1/16)1を出力する。このとき次以降の3つの時間ステップS5、S6、S7で出力する分を考慮し、1/16画像の1列目の画素列L(1/16)1を4分の1分割し、その最初の部分の画素値のみ出力する。残りはFIFOバッファ58cに保存しておく。
次の時間ステップS5では、1/1画像の5列目の画素列L(1/1)5の画素値のみが入力される。出力タイミング調整部56は、当該画素列の画素値をそのまま出力し、続けて、1/4画像の2列目の画素列L(1/4)2のうち未出力であった後半部分の画素値をFIFOバッファ58bから読み出し、出力する。さらに1/16画像の1列目の画素列L(1/16)1の未出力のデータのうち4分の1分割した2番目の部分の画素値を出力する。
同様に、次の時間ステップS6では、1/1画像の6列目の画素列L(1/1)6の画素値、1/4画像の3列目の画素列L(1/4)3の前半部分の画素値、1/16画像の1列目の画素列L(1/16)1の未出力のデータのうち4分の1分割した3番目の部分の画素値を出力する。次の時間ステップS7では、1/1画像の7列目の画素列L(1/1)7の画素値、1/4画像の3列目の画素列L(1/4)3の後半部分の画素値、1/16画像の1列目の画素列L(1/16)1のうち4分の1分割した最後の部分の画素値を出力する。
すなわち1/4画像の1列目の画素列L(1/4)1は、時間ステップS2およびS3の2つの時間ステップに半分ずつ出力される。また1/16画像の1列目の画素列L(1/16)1は、時間ステップS4、S5、S6、S7の4つの時間ステップに4分の1ずつ出力される。1/1画像の横方向の画素数がWであるとすると、1/4画像および1/16画像の横一列分の画素数はそれぞれW/2、W/4であるため、同図に示すように、時間ステップあたり(W/2)/2個、(W/4)/4個の画素のデータがそれぞれ出力される。
以上の出力処理を画像の最下段の列まで繰り返す。このとき1/1画像の最下段の画素列のデータを出力した時点では、1/4画像の最下段の画素列の後半部分のデータ、および1/16画像の最下段の残り4分の3の画素のデータが未出力となる。そこで直後の時間ステップS(H+1)では、1/4画像の最下段の画素列の後半部分のデータ、および1/16画像の最下段の画素列を4分の1分割した2番目の部分のデータを出力する。
このとき、それまで1/1画像のデータを出力していたW画素分のデータとして、まず無効データを出力し、続けて1/4画像、1/16画像のデータを出力する。続く2つの時間ステップS(H+2)、S(H+3)では、それまで1/1画像および1/4画像のデータを出力していたW+(W/2)/2画素分のデータとして、まず無効データを出力し、続けて1/16画像の最下段の画素列を4分の1分割した3番目の部分、4番目の部分のデータをそれぞれ出力する。なお同図は説明のために画素1列の幅を実際より広く示しているため、濃い網掛けで示した無効データの割合が比較的大きいが、実際には合成画像220の全面積の1%以下となる。
このような規則で出力すると、はじめの3つの時間ステップと終わりの3つの時間ステップを除いた各時間ステップにおいて、W+(W/2)/2+(W/4)/4=21W/16個の画素のデータが出力されることになる。また1列分の画素値を出力するのに、1/1画像は1時間ステップ、1/4画像は2時間ステップ、1/16画像は4時間ステップを要するため、1フレーム分の画像データを出力するのに要する時間ステップ数は、H=(H/2)×2=(H/4)×4と、画像サイズによらず等しくなる。結果として、3種の画像の1フレーム分のデータを出力するのに要する総時間ステップ数はH+3となる。
上述のように出力タイミング調整部56が出力するデータは画素値の羅列であるが、各時間ステップに対応する画素の個数、すなわち21W/16を横一列分の画素の個数として与えておくことにより、その後の処理は一般的な画像フレームと同様、各時間ステップにおいて出力されるデータを画像の一列分のデータとして扱うことができる。
そのようにしてなる合成画像220を図9に示すような2次元平面で捉えると、その横方向の画素列からなる各行は、1/1画像の出力期間を基準として定義した時間ステップに対応することになる。また各時間ステップで出力する画素列において、各画像のデータが占める範囲を固定することにより、合成画像220の2次元平面においては、図示するように各画像のデータがそれぞれまとまった矩形領域を構成する。その局所性を利用すれば、種類ごとのデータの切り出しを容易に行える。
クロッピング部60は、情報処理装置10が要求する画像データを合成画像220から切り出す。クロッピング部60が行う処理は、画像内の指定された矩形領域を切り出して余分な領域を除外する一般的なクロッピング処理と同様である。本実施の形態では処理対象が画像平面ではなくデータストリームであるが、合成画像の横一列分の画素数の情報を与えておけば、画像平面の二次元座標をストリームにおける一次元座標と対応づけることは容易であり、切り取る画素の特定は同様に行える。
図10は情報処理装置10からの要求に応じたデータの状態変化を模式的に示している。同図上段は出力タイミング調整部56からクロッピング部60に画素列順に供給される合成画像222であり、図9の合成画像220に対応する。なお上述の接続規則によれば、1/1画像のデータのみ、合成画像222においても画素の2次元配列が保たれるため、元の画像と同様の画像が表れる。情報処理装置10は、このような合成画像222における領域を指定することによりデータを要求する。
図10の例では、縦方向(Y軸方向)にY0≦Y<Y1の範囲、横方向(X軸方向)にX0≦X<X1、X2≦X<X3、X3≦X<X4の範囲である3つの領域を指定している。なお図示する例ではX0≦X<X1の領域は1/1画像の対象物周辺の領域、X2≦X<X3およびX3≦X<X4の領域はそれぞれ1/4画像、1/16画像の全体の領域に対応する。
クロッピング部60は、出力タイミング調整部56から横方向の画素列順に入力された合成画像222から指定された領域を切り取る。具体的にはY0の行の画素列から、X0≦X<X1、X2≦X<X3、X3≦X<X4の範囲の画素列のみを切り出し、パケット化部62に順次供給する。次いでY0+1の画素列、Y0+2の画素列、・・・と、同じ範囲の画素列を同様に切り出し、パケット化部62に供給していく。パケット化部62は供給された画素列をつなげたデータストリームを順次、所定サイズに分割してパケット化したうえ情報処理装置10に送信する。
結果として撮像装置12は、切り出された領域のデータのみからなる新たな合成画像240のデータストリームを情報処理装置10へ送信していることになる。情報処理装置10の通信部86は、受信したデータストリームをデータごとに切り分け、画像平面を再構築するようにデータ記憶部84の連続したアドレスに展開する。その結果、図示する例では、1/1画像のうち対象物周辺の領域242、1/4画像の全体領域246、1/16画像の全体領域248のデータが、それぞれデータ記憶部84に格納される。
このように情報処理装置10は、要求するデータの種類、解像度、および画像平面のどの領域のデータかを、合成画像内の領域により同時に指定できる。そしてクロッピング部60は、指定された領域のみを切り出して新たなストリームを生成することにより、必要最低限のデータのみを送信対象にできる。ここで図示するように、指定する複数の領域の縦方向の範囲を共通とすることで、ビットレートが安定化し、データ送信に要する時間の見積もりが容易になる。
図11は画素値変換部74のより詳細な構成を例示している。この例における画素値変換部74は、4方向の偏光画像の輝度を取得して演算を行い中間パラメータを生成する演算部250と、元の偏光画像の輝度および演算された中間パラメータのデータから必要なデータを選択するとともに最終的な送信形式に変換する送信データ形成部252を含む。図6に示すように画素値変換部74は、ピラミッドフィルタ部52の4つの解像度の出力に対し、図示するような機構を並列に設けた構成とする。
同図において「I0」、「I45」、「I90」、「I135」なる表記は、偏光子の主軸角度θpolがそれぞれ0°、45°、90°、135°のときの輝度のデータを示している。演算部250は3種類の演算器からなり、それぞれ次の演算を行う。
ここでa、b、cは、主軸角度θpolが0°、45°、90°、135°のときに、それらの輝度Iから式1の関数を近似する際に必要となる中間パラメータであり、式1を下式の形式に変換したときの係数を与える。
式1と式6の関係を利用すると、式3で表される偏光度ρおよび式1の偏光位相φは、次のように求められる。
送信データ形成部252は、ピラミッドフィルタ部52から出力される各主軸角度の輝度データと、式5による演算結果であるパラメータa、b、cの値とを入力値とし、そのうち必要なデータを選択したうえ所定の形式に変換して出力する。例えば情報処理装置10が偏光画像の輝度データを要求する場合、送信データ形成部252は4通りの主軸角度に対する輝度I0、I45、I90、I135の値を4チャンネルの画素値として出力する。
パラメータa、b、cが要求された場合は、当該パラメータの値を3チャンネルの画素値として出力する。このような処理を、ピラミッドフィルタ部52から出力される画素順に繰り返すことにより、要求されたデータを出力タイミング調整部56へ即座に入力することができる。また同様の構成をピラミッドフィルタ部52が出力する各解像度に対し設けることにより、ある解像度では偏光画像の輝度データを、別の解像度ではパラメータa、b、cを送信対象とするなど、解像度とデータの種類を自由に組み合わせることができる。
そして上述したようにそれらのデータを接続した合成画像から、さらに要求された領域のみをクロッピングして送信することにより、必要最低限のデータを低いレイテンシで送信できる。なお送信データ形成部252は後述するように、入力されたデータを用いてさらに必要な演算を実施したり量子化を行いデータ量を削減したりしてもよい。
画素値変換部74は、被写体表面の法線など、情報処理装置10において対象物の認識に用いるデータの取得処理の一部を担うものである。好適には、画素単位での演算が可能なパラメータを算出するようにすれば、撮像装置12全体での画素列順の処理の流れを停滞させることがない。その限りにおいて画素値変換部74が算出するパラメータの種類は特に限定されない。図12は画素値変換部74の構成の別の例を示している。この画素値変換部74は、図11で示した例より先の段階まで演算を実施するように構成されている。具体的には演算部254は、式5で示したパラメータa、b、cを算出するとともに、式7の偏光度ρ、偏光位相φを求める過程で得られる、1/c、a/c、b/c、(a2+b2)1/2、(a2+b2)1/2/c、1/b、a/bをさらに算出する。
これらの演算器をあらかじめ撮像装置12に設け、偏光画像の輝度を出力するのと同様の機構により出力できるようにしておくことにより、情報処理装置10における処理内容やそのときの状況に応じた最適なデータを供給できる。なお各演算器の接続関係は図示するものに限らない。また図示する全ての演算器を備えなくてもよい。さらに、各演算器からの出力データの全てを送信データ形成部256に入力しなくてもよい。
図13は、図12で示した画素値変換部74における送信データ形成部256の詳細な構成を例示している。この例では、偏光画像の色調を変換する色調変換回路260、262、法線の信頼度を判定する信頼度判定回路264、天頂角θを求める天頂角取得回路266、および方位角αを求める方位角取得回路268を備える。色調変換回路260、262はそれぞれ、対数関数およびシグモイド関数に輝度値を代入して変換することにより、偏光画像のコントラストを強調するなどの色調変換を行う。
信頼度判定回路264は、該当画素の偏光輝度から法線ベクトルを求めた場合の信頼度を表す数値を生成する。一般的に、被写体の正面方向にカメラの視点が近づくほど、すなわち被写体の法線とカメラの光軸とのなす角が小さいほど、偏光輝度の方位依存性が小さくなり、算出する法線ベクトルがノイズの影響を受けやすくなる。信頼度判定回路264は、演算部254から出力された(a2+b2)1/2の値に基づき、撮像装置12あるいは情報処理装置10で別途算出される法線の信頼性を評価し、信頼度を表す数値を出力する。
式5によれば、パラメータaおよびbは、主軸角度が90°の差を有するときの輝度の差に比例する値であり、(a2+b2)1/2が小さいほど偏光輝度の方位依存性が小さいといえる。したがって信頼度判定回路264は、(a2+b2)1/2が増加するほど高い値となるような所定の規則により信頼度を算出する。ただし信頼度は連続値でなくてもよく、複数段階で表してもよいし、(a2+b2)1/2が所定のしきい値を超えたか否かにより信頼度の有無を1/0の2値で表してもよい。
図では信頼度判定回路264が、算出した信頼度の値を、後述する量子化部274に出力しているが、信頼度を表す画像の画素値として別途、出力してもよい。天頂角取得回路266は、偏光度ρの近似値である(a2+b2)1/2/cに基づき天頂角θを取得する。偏光度ρと天頂角θの関係は、鏡面反射モデル/拡散反射モデルによって式3により表される。天頂角取得回路266は採用するモデルによって式3の関係を表す変換テーブルを内部のメモリに保持し、演算部254から取得した(a2+b2)1/2/cをインデックスとして天頂角θを取得し出力する。
上述のとおり画素値変換部74は、ピラミッドフィルタ部52がデータを生成する4つの解像度のそれぞれに対し同様の構成で設けられるが、天頂角θを取得する変換テーブルは当該解像度によって異ならせてもよい。これは次の理由による。すなわち、画像のデータは縮小するほど、つまり解像度が小さいほど、ノイズ成分に対する真のデータの割合、すなわちSN比が高くなる。このSN比の変化は、算出される法線の方向に影響を与え得る。具体的にはSN比が低いと天頂角θが本来の値より大きくなるといった誤差を含みやすい。この知見に基づき、好適には、解像度が高いほど大きい補正を与えて、より正確な天頂角θが得られるように変換テーブルを異ならせる。なお同様の理由により、信頼度判定回路264における信頼度の算出規則も、解像度によって異ならせてよい。
方位角取得回路268は、演算部254から取得したa/bの逆正接arctan(a/b)を計算して偏光位相φを求め、採用するモデルに応じて方位角αを出力する。そのような演算結果は一旦、バッファ270やバッファ272に格納し、適宜マージしたりタイミングを調整したりして送出画像生成部76に出力する。ただしこの例では、天頂角θと方位角αを量子化部274に入力し、量子化することによりデータ量を削減する。この際、量子化部274は、信頼度判定回路264が算出した信頼度を示す数値をさらに取得し、量子化後のデータとともに送出されるようにする。
図14は、量子化部274によるベクトル量子化の例を説明するための図である。(a)は天頂角θを動径、方位角αを偏角とする極座標において、当該2変数を要素とするベクトルの量子化単位を例示している。一般に法線の方向は位相角αが0≦α<360°、天頂角θが0≦θ≦90°の範囲で定義する。しかしながら式1からわかるように、偏光輝度の方位に対する変化は180°周期のため、0≦α<180°と180≦α<360°では同じ振る舞いを示し、偏光輝度の変化のみからどちらの範囲かを区別するのは困難である。
ただし特定の対象物の表面における法線の位置的な変化や時間的な変化を相対的に観測する場合は特に、位相角αが急に180°変化することは考えにくい。また対象物の表面形状がおよそ判明していれば、一部の領域でそのような不定性による誤差が生じても全体としての面の向きは特定できる。したがって本実施の形態では、方位角αを0≦α<180°の範囲で求め、同図の極座標においてグレーで示される領域は対象外とする。ただし別の手段で180°の差を区別する場合は、当該領域についても量子化単位を設定してよい。
また、算出された法線の信頼度はその角度に依存するため、角度の範囲によって量子化単位の粒度を異ならせることにより、圧縮効率の向上と量子化誤差の軽減を両立させる。具体的には、天頂角θが45°の近傍では、算出される法線の信頼度が高いため、量子化単位を細かくする。また上述のとおり天頂角θが0°の近傍、すなわちカメラの光軸とのなす角度が小さい法線は信頼度が低いため量子化単位を粗くする。同図ではそのような量子化単位の粒度の大小が、極座標における区分けされた領域の面積の差によって表されている。
量子化部274は、このような一種のコードブックにより、入力された(θ,α)からインデックスを一意に決定する。同図(b)は、量子化単位を直交軸の2次元配列で表しており、各マス目がインデックスを付与する量子化単位に対応する。同図の例では、天頂角θ、方位角αの定義範囲をそれぞれ16分割することにより、16×16=256個の量子化単位を設けている。天頂角θ、方位角αをそれぞれ8bitのデータとし、インデックスも8bitで定義すれば、量子化によるデータ圧縮率は50%となる。
例えばインデックスを(px,py,pz,信頼度)なる構成とし、各パラメータに対し2ビットずつを割り当てる。ここで(px,py,pz)は、量子化単位ごとの代表ベクトル(θr,αr)を、式4により直交座標系のベクトルに変換したものである。「信頼度」は信頼度判定回路264から与えられた、信頼度を示す値である。なお信頼度を1ビットで表す場合、残りの1ビットを利用してさらに何らかの情報を埋め込んでもよい。
例えば情報処理装置10から指定された、あるいはあらかじめ設定しておいた角度の範囲に、当該法線が入っているか否かを表すタグを含めてもよい。このような構成のインデックスを画素ごとに与えた画像のデータをストリームとして送信することにより、情報処理装置10では、法線ベクトルの情報とともに、その信頼度や、対象物が着目すべき範囲内の傾きとなっているか否か、といった情報も得ることができる。
これにより、信頼度がしきい値を超える法線ベクトルのみを利用して対象物の状態を正確に認識したり、奥行き画像などその他の手段で得た状態情報を考慮する度合いを信頼度によって変化させたりすることができる。また、所定範囲の傾きとなっている対象物のみを処理対象とすることもできる。図13に示した送信データ形成部256では、量子化部274からの出力データ以外に、偏光画像の輝度データを含めその前段で得られる各種パラメータを出力できる経路を設けている。送信データ形成部256はそのうち、情報処理装置10からの要求、あるいは内部での設定に従い、必要なデータを出力すればよい。
例えば、所定解像度の法線ベクトルの情報のみを必要とする場合、量子化部274が出力する、画素当たり8ビットのインデックスを出力するのみでもよい。より詳細な情報を必要とする場合は、天頂角θと位相角αの値自体を出力してもよい。上述したとおり画素値変換部74には、各解像度に対し同様の演算回路を並列に設けるため、解像度によって、あるいはその時々の状況によって、情報処理装置10が必要とするデータのみを即時に出力できる。
なお法線ベクトルの情報のみを得たい場合、多くのケースでは天頂角θ、方位角αや、それを量子化したインデックスを送信すれば十分であるが、中間パラメータも送信できるようにすることで、計算の信頼性を担保したりデバッグに用いたりすることもできる。また量子化部274が量子化する対象は天頂角θ、方位角αに限らず、その前の段階で算出されるパラメータのいずれでもよい。例えば演算部254が算出するa/cおよびb/cを同様に量子化して送信し、情報処理装置10において(a2+b2)1/2/cおよびa/bを計算して天頂角θと方位角αを求めてもよい。
次に、以上述べた構成によって実現される情報処理システムの動作について説明する。図15は、本実施の形態における撮像装置12と情報処理装置10が、協働して偏光画像を解析し表示画像を出力する処理手順を示すフローチャートである。図15のフローチャートは、ユーザが撮像装置12を起動させた状態で情報処理装置10に処理開始の指示を入力することによって開始される。なお理解を容易にするため同フローチャートの各ステップは直列に接続した矩形で表されているが、実際には各フレームの画素列単位でこれらのステップが並列に実行されるものとする。
まず情報処理装置10は、表示装置16に初期画像などを表示させたうえ、アプリケーションプログラムなどに設定されている、初期に必要なデータの送信を撮像装置12に要求する(S12)。この要求は、必要なデータの種類、解像度、画像平面における領域、の組み合わせによって構成されるが、送出画像生成部76で生成される仮想的な合成画像における領域を指定することにより表すことができる。あるいは、合成画像が生成される前の段階、すなわち画素値変換部74に対しデータの種類と解像度の組み合わせを指定してもよい。
なお撮像装置12として自然光の画像を撮影する機構を設ける場合、情報処理装置10は初期画像として当該撮影画像を要求し、表示装置16に表示させてもよい。撮像装置12の通信部78は、情報処理装置10からの要求を受け付け、画素値変換部74および送出画像生成部76に適宜通知する。一方、撮像装置12の画像データ生成部72は、輝度データ取得部70により取得された輝度データを補間したうえ、段階的に縮小することで異なる解像度を有する撮影画像の階層データを生成する(S14)。
上述では主に、4つの主軸角度の偏光子を用いた偏光画像について説明したが、自然光の撮影画像についても同様に階層データを生成してよい。ステレオカメラを設ける場合は、左右の視点から撮影されたステレオ画像のそれぞれについて階層データを生成してよい。次に撮像装置12の画素値変換部74は、複数方向の偏光成分の画像を用いて所定の演算や変換を行うことで、算出されたパラメータを画素値とする新たな画像を解像度別に生成し、そのうちの少なくともいずれかを出力する(S16)。
次に撮像装置12の送出画像生成部76は、解像度ごとに画素列順に出力される変換後のデータを、図9で説明したような規則で循環して接続していくことにより、仮想的な合成画像を生成し(S18)、S12で要求された領域を切り出しながら出力する(S20)。なお当該合成画像には、自然光の撮影画像やステレオ画像が含まれていてよい。通信部78は、合成画像から切り出され画素列順に出力されたデータストリームを、所定サイズごとにパケット化したうえ情報処理装置10へ送信する(S22)。
情報処理装置10の通信部86は、送信されたデータストリームを、データごとに切り分けてデータ記憶部84に格納する(S24)。このとき図10に示したように、各データの解像度に応じて画像平面を再構築することにより、その後の処理で画像データとして扱うことができる。対象物認識部80は当該データを用いて対象物の位置、姿勢、形状などの状態を特定する(S26)。このとき、ステレオマッチング、トラッキング、顔検出、ジェスチャ検出など、法線以外の手段で画像解析を行ってもよい。
出力データ生成部82は特定結果を用いてゲームを進捗させたり動きに応じた処理を実施したりして表示画像を生成し表示装置16に出力する(S28)。対象物の状態認識の結果によって、撮像装置12へ要求するデータ、すなわち必要なデータの種類、解像度、画像平面における領域、の組み合わせを変更する必要がある場合(S30のY)、対象物認識部80は通信部86を介して撮像装置12に変更後のデータを要求する(S12)。この場合、撮像装置12の画素値変換部74やクロッピング部60は、新たな画像フレームを処理するタイミングで、出力するデータや切り出す領域を変更し、S14〜S22の処理を実施する。
要求するデータを変更する必要がなく、処理を終了させる必要もなければ(S30のN、S32のN)、撮像装置12は後続の画像フレームについてS14〜S22の処理を同様に繰り返すことによりデータストリームを送出し続ける。どちらの場合も情報処理装置10はS24〜S28の処理を繰り返す。これにより、撮像装置12が撮影した画像を利用してなされた情報処理の結果が表示装置16に動画像として表示される。ユーザから処理を終了させる入力がなされた際などに、全ての処理を終了する(S32のY)。
図16は、図4および図6で示した撮像装置12の構成の変形例を示している。撮像装置12は、輝度データ取得部70、画像データ生成部72、領域抽出部280、画素値変換部74、および通信部78を含む。このうち輝度データ取得部70、画像データ生成部72、画素値変換部74、および通信部78は、図6で示した対応するブロックと同様の機能を有するため同じ符号を付している。領域抽出部280も基本的には図6で示した送出画像生成部76と同様の機能を有する。ただしこの例では、画像データ生成部72が生成した各解像度の4方向の偏光画像のデータを、先に領域抽出部280に入力する。
そして領域抽出部280において必要な領域が切り出されたあと、画素値変換部74が当該領域について必要なデータを生成する。すなわち図6の送出画像生成部76が、元の偏光画像を用いて取得された各種パラメータの画像も処理対象とするのに対し、図16の領域抽出部280は、偏光画像をそのまま処理対象とする。ここで領域抽出部280は、複数解像度の画像を上述したように循環して接続することで合成画像を生成する出力タイミング調整部56と、情報処理装置10が要求する領域を合成画像から切り出すクロッピング部60の組を、偏光の方向ごとに設けた構成を有する。
結果として、各解像度の偏光画像のうち要求された領域のみが所定の規則で接続されてなる合成画像のデータストリームが、4方向の偏光成分のそれぞれに対し生成され、画素値変換部74に並列に入力される。画素値変換部74は図6と同様、4方向の偏光成分の輝度を用いて各種パラメータを算出し、情報処理装置10から要求されたデータを出力する。ただしこの場合、前もって切り出された画像上の一部の領域に処理対象が限定されるため、図6の場合と比較して、画素値変換部74における演算量や撮像装置12内部でのデータ伝送量を削減できる。
画素値変換部74から通信部78に出力されるデータストリームは、図6において送出画像生成部76から通信部78に出力されるものと同等である。従って通信部78のパケット化部62は上述したように、当該データストリームを順次パケット化して情報処理装置10に転送する。制御部64は情報処理装置10からの要求に従い、領域抽出部280のクロッピング部60には複数解像度の偏光画像から切り出すべき領域を通知し、画素値変換部74には領域ごとに出力すべきデータの種類を通知する。
実際には、制御部64は、領域抽出部280および画素値変換部74が共通して参照可能なレジスタ(図示せず)に、切り出すべき領域と、当該領域について出力すべきデータの種類とを対応づけた情報を格納する。図17はレジスタに格納するデータの構造例と、それに応じてクロッピング部60が実施する処理の様子を模式的に示している。まずレジスタには、各解像度に対し(切り出し始点、切り出し長、パラメータタイプ)のデータセットを格納する領域を設ける。
図示する例では、1/1画像に対し、「0」から「3」の識別番号を有する4つのデータセットを格納するレジスタ領域282a、1/4画像、1/16画像、1/64画像のそれぞれに対し「0」、「1」の識別番号を有する2つのデータセットを格納するレジスタ領域282b、282c、282dを設けている。ただしデータセットの格納数はこれに限らない。同図においてX0、X1、・・・などで表される「切り出し始点」は、画像平面の横方向の軸において、クロッピング部60が切り出すべき領域の左端の位置座標である。なお切り出し始点は、図10で示した「X0」、「X2」などに対応する。
同図においてL0、L1、・・・などで表される「切り出し長」は、対応する切り出し始点X0、X1、・・・からの切り出すべき幅である。上述したようにクロッピング部60は、実際には出力タイミング調整部56から入力されたデータストリームに対し切り出しを行うため、切り出し始点および切り出し長は、データストリームにおいて周期的に表れる、切り出すべき画素列の開始位置および長さを表していることになる。切り出し始点および切り出し長は、全ての偏光方向のクロッピング部60により共通に読み出される。
同図においてT0、T1、・・・などで表される「パラメータタイプ」は、画素値変換部74により読み出され、対応する領域の偏光輝度を用いて生成、出力すべきパラメータの種類やデータ長を表す。パラメータタイプのデータ構造例については後述する。クロッピング部60は、切り出し始点および切り出し長の設定に応じて、出力タイミング調整部56から入力されたストリームから図10で説明したのと同様にデータの切り出しを行い出力していく。
同図の例ではまず、1/1サイズの偏光画像284aに対し、レジスタ領域282aにおいて識別番号「0」のデータセットとして設定された、切り出し始点「X1」、切り出し長「L1」の領域を切り出す。続いて、レジスタ領域282aにおいて識別番号「1」のデータセットとして設定された切り出し始点「X2」、切り出し長「L2」の領域、識別番号「2」のデータセットとして設定された切り出し始点「X3」、切り出し長「L3」の領域、識別番号「3」のデータセットとして設定された切り出し始点「X0」、切り出し長「L0」の領域を、1/1サイズの偏光画像284aから切り出す。
ここで、識別番号「2」および「3」のデータセットにおける設定のように、切り出す領域は元の偏光画像における同じ領域を含んでよい。このようにすることで、後段の画素値変換部74によって、同じ領域に対し複数種類のデータを生成、出力できる。またデータセットの識別番号は、各領域を識別するとともに、クロッピング部60からの出力順を指定する役割も有する。同図において、偏光画像284aの左端に位置する切り出し始点「X0」の領域の画素列は、出力タイミング調整部56からは他の領域の同行の画素列より早く入力されるが、識別番号「3」を与えることにより、クロッピング部60からの出力順が逆転している。
このようにデータセットの識別番号(あるいはレジスタの格納領域順)によって、切り出した領域の出力順を、元の画像平面での並び順と独立に制御する。この場合、出力タイミング調整部56が備えるFIFOバッファ58a〜58d、あるいはクロッピング部60が内部で保持する図示しないバッファなどにより出力タイミングを調整すればよい。ただし行ごとの切り出し、出力処理であることに変わりはないため、そのようなタイミング調整による遅延は微小となる。
その他の解像度の偏光画像284b、284c、284dについても、同様の設定により順次切り出しおよび出力がなされる。図示する例では、1/16サイズの偏光画像に対しては、データセット2つ分の格納領域に対し片方のみデータセットが設定されている。このように、レジスタに設けた格納領域数を上限として必要な数だけ設定を行う。場合によっては、ある解像度の偏光画像に対しては設定を行わないことで、切り出し対象から除外することもできる。
また同図の場合、1/64サイズの偏光画像に対しては、2つのデータセットで同一の領域を切り出す設定がなされている。この場合、クロッピング部60は、同じ領域のデータを繰り返して出力する。一方、図において「T7」、「T8」と示されるように、当該2つのデータセットでパラメータタイプの設定を異ならせることにより、画素値変換部74によって、同じ領域に対し2種類のデータが生成、出力される。
上述したように実際には、出力タイミング調整部56から入力される偏光画像のデータは、複数の解像度の画素列が規則的に接続されたデータストリームの状態である。クロッピング部60は、情報処理装置10からの要求内容を格納したレジスタの設定に従い、当該データストリームのうち切り出す部分を特定し、順次出力する。その結果、図10で説明したように、切り出された領域が矩形領域を構成する新たな合成画像286が、データストリームとして出力されることになる。このようにして、各方向の偏光画像の同じ領域によって構成される4つの合成画像286のデータが出力され、画素値変換部74に入力される。
図18は、画素値変換部74が、入力された偏光画像のデータを用いて、指定されたパラメータのデータストリームを出力する様子を示している。同図において合成画像290は、領域抽出部280のクロッピング部60が上述のように切り出し、出力したデータストリームを、2次元平面で表したものであり、図17の合成画像286に対応する。ただし同図では、図の簡単のために1つの解像度につき1つの領域が切り出されるとしている。したがって各解像度に対応するレジスタ領域282a、282b、282c、282dには、1つのデータセットのみが格納されているとする。
この例では、1/1サイズ、1/4サイズ、1/16サイズ、1/64サイズの偏光画像からそれぞれ切り出された、L1、L4、L6、L7の幅の領域のデータが、合成画像290においてそれぞれ矩形領域を構成している。ただし上述のとおり、1/4サイズ、1/16サイズ、1/64サイズのデータについては、合成画像290においてそれぞれL4/2、L6/4、L7/8の幅の矩形となる。4つの偏光方向に対応する合成画像290のデータがそれぞれ、左上の画素から順に入力されると、画素値変換部74は同じ画素の4方向の偏光輝度を用い、レジスタ領域に設定されたパラメータタイプに従ったパラメータを生成、出力する。
パラメータタイプは、「T1」、「T4」、「T6」、「T7」と示されるように、領域ごとに設定される。ただし当該表記は全てのパラメータタイプを必ずしも異ならせる主旨ではない。同図において「t0」、「t1」、「t2」、「t3」は、出力すべきパラメータのタイプを切り替えるタイミングを示している。当該タイミングの間隔は、当然、各領域の切り出し長「L1」、「L4」、「L6」、「L7」によって変化する。また合成画像290はデータストリームの形式で画素値変換部74に入力されるため、切り替えタイミングはその1行ごとに周期的に到来することになる。
また合成画像290の上端および下端の数行は、上述のとおり元の偏光輝度データの生成タイミングに起因して無効データを含むため、画素値変換部74は、それに対応する画素については同様に無効データを出力する。結果として画素値変換部74が出力するデータストリームは、複数種類のパラメータの接続が一巡したときの画素数を画像の横一列分として定義したとき、各パラメータが矩形領域を構成する合成画像292となる。同図において合成画像292は、単位面積当たりのデータサイズをパラメータによらず統一して示している。
本実施の形態において画素値変換部74が出力するパラメータは、種類によってデータ長を可変とする。そのため同じ画素数であっても、パラメータの種類が異なれば、領域ごとに画素列のデータ長が異なることになる。その結果、図示する例では、元の偏光画像の合成画像290と、出力されたパラメータの合成画像292では、各領域の構成割合が異なっている。例えば1/1サイズのデータは1画素あたり8ビットのパラメータを出力するのに対し、1/64サイズのデータは1画素あたり64ビットのパラメータを出力する、といった設定により、面積比が逆転することになる。
パラメータタイプは、例えば(各画素のチャンネル数、チャンネルごとのデータ長、各チャンネルのパラメータの種類)、といった構造で設定する。各画素値のチャンネル数を1、2、4の3種類とし、チャンネルごとのデータ長を8ビットまたは16ビットの2種類とした場合、それらの設定で合計3ビットを使用する。パラメータタイプのレジスタ容量を16ビットとした場合、残りの13ビットを、各チャンネルで出力するパラメータの種類の設定に割り当てられる。
チャンネル数の上限を4とした場合、1チャンネルに4ビット、残りの3チャンネルに3ビットずつ割り当て、パラメータの種類に対しあらかじめ付与したインデックスを指定するようにすれば、図11〜13で示したような様々なパラメータを臨機応変に指定できる。このようにすると、タイプに応じて8ビットから64ビットまでのパラメータのデータが、合成画像292の画素列順に画素値変換部74から出力される。ただしパラメータタイプの設定方式をこれに限る主旨ではない。なお切り出し領域やパラメータタイプの設定手法は、図6に示した撮像装置12においても同様に適用できる。
図19は、情報処理装置10の要求に応じて送信されるデータを例示している。ただし理解を容易にするため、偏光輝度から得られる各種パラメータや量子化データを送信する場合も、その元となる偏光画像で表している。この例において、まず情報処理装置10は視野全体のデータを、1/16サイズの低解像度で要求する。そして当該画像300を用いてマッチング処理を行うなどして、詳細に解析すべき部分領域を特定する。図示する例では、ゲームコントローラの像を含む領域302と手の像を含む領域304が特定される。
これに応じて情報処理装置10は、領域302、304のデータを要求する。このとき視野全体の画像300における各領域のサイズや、当該領域に施す処理の内容などに応じて要求する解像度を決定する。図示する例では、領域302については1/4サイズ、領域304については1/1サイズに対応する解像度のデータを要求する。そして例えば領域302の1/4サイズのデータ(画像306)と、当該領域についてステレオ画像から別途生成した奥行き画像のデータとを統合することにより、高精細な奥行き画像を生成する。
奥行き画像は一般的に、ステレオ画像において対応する特徴点を抽出し、その視差に基づき生成される。対応する特徴点をブロックマッチングなどにより抽出する処理の負荷や、特徴点の少なさなどに起因して、ステレオ画像のみから奥行き値を高い分解能で得るのは困難なことが多い。偏光画像から得られる法線の情報は画素単位で得られるため、粗い解像度で得た奥行き画像の情報と統合することにより、曲面形状も正確に表した奥行き画像を得ることができる。対象物として顔の像の領域を特定した場合は、同様に詳細な奥行き画像を生成することにより、表情認識を高精度に行える。
一方、領域304の1/1サイズの高解像度のデータ(画像308)は、手指の状態を詳細に認識したりトラッキングを行ったりするのに用いることができる。例えば3方向の偏光輝度をRGBの3チャンネルに割り当てた画像を用いても、自然光の撮影画像より腕や手の表面形状を特定しやすい。したがってそのようなデータを用いて、より精度よく手認識やトラッキングを行える。当然、法線に係る情報を取得し、さらに詳細に状態情報を取得してもよい。
またトラッキングにより手が撮像装置12に近づくことが判明したら、要求するデータの解像度を下げてもよい。撮像装置12に対象物が近づくことは、撮影画像における像のサイズによっても判明する。同図の例では、手が撮像装置に近づいたことにより、手の領域について1/16サイズのデータ(画像310)へ要求対象を変更し、それを用いて手認識やトラッキングを行うことを示している。
このように対象物の位置や処理内容によって、要求するデータの解像度と画像平面での範囲を適応的に切り替えることにより、送信するデータ量を一定範囲に抑えることができる。また、例えば手とゲームコントローラの状態を同時に認識することにより、ゲームコントローラのどの操作手段をどのように操作したか、といった情報を詳細に取得できるため、コントローラの構成を簡素化しても操作内容の特定が可能であり、製造コストや消費電力を削減できる。
図20は、図19で例示したデータを得るときの撮影環境を側面から見た様子を模式的に示している。撮像装置12の視野内には、画像300に写るように、人の手320、テーブル322、ゲームコントローラなどテーブル322上に置かれている物324が存在する。同図においてはさらに、形状、色、素材などが既知の参照用実物体326を視野内に置いている。同図の場合、参照用実物体326は、棒状の脚部に球体を載置した構成を有するがこれに限定する主旨ではない。
参照用実物体326は、撮像装置12において偏光度ρから天頂角θを取得するための変換テーブルや、天頂角θと方位角αをベクトル量子化する際に用いるコードブックなど、出力パラメータに誤差を生じさせる可能性のある各種変換規則を最適化するために利用する。参照用実物体326は例えば、ゲームのコントローラなどとともにユーザに提供し、運用時に撮像装置12の視野に入るように置いてもらう。あるいは参照用実物体326がゲームコントローラを兼ねてもよい。
図21は、参照用実物体326を用いて撮像装置12における変換規則を最適化する処理手順を示すフローチャートである。まず情報処理装置10は、例えば1/16サイズなど低解像度の偏光画像あるいは非偏光画像の全体領域を撮像装置12に要求する(S40)。撮像装置12から該当データが送信されたら(S42)、情報処理装置10の対象物認識部80は、当該全体領域のから参照用実物体326が写る領域を特定する(S44)。
そして少なくとも当該領域について、撮像装置12内部で取得された天頂角θのデータ、あるいは天頂角θと方位角αを量子化したデータなど、最適化の対象である変換規則により得られるパラメータのデータを適切な解像度で要求する(S46)。S40において要求した画像の解像度と異なる解像度でのパラメータを要求する場合、同じ解像度で偏光画像のデータも要求する。撮像装置12は要求されたデータを情報処理装置10に送信する(S48)。この際、デフォルトとして設定されている変換規則を用いてパラメータを生成する。
情報処理装置10の対象物認識部80は、撮像装置12から送信されたパラメータのデータと、偏光画像の輝度から自らが厳密に取得したパラメータのデータとを比較する(S50)。例えば天頂角θを比較する場合、対象物認識部80は、偏光画像から得られる偏光度ρに基づき、式3により天頂角θを厳密に求める。あるいはさらに、採用する反射モデルによって、偏光輝度の最大値あるいは最小値をもたらす位相角を、方位角αとして求める。参照用実物体326の色や材質が既知であれば、用いる反射モデルも正確に決定できる。形状も既知であるため、天頂角θや方位角αを高精度に求められる。
したがって比較の結果、両者に差があれば、撮像装置12が用いている変換規則が適切でないことがわかる。例えば天頂角θに所定値より大きい差があれば、偏光度ρから天頂角θを求めるための変換テーブルが適切でないと判定する。天頂角θに差がなく、量子化インデックスから求めた法線ベクトルに所定値より大きい差があれば、天頂角θと方位角αを量子化するためのコードブックが適切でないと判定する。このとき対応する画素ごとに角度の差を求め、その平均値を比較結果としてもよいし、それ以外の統計的な手法を用いてもよい。データ分布の差を評価する指標について様々に考えられることは当業者には理解されるところである。
そのようにして求められた差が所定値より大きければ(S52のN)、対象物認識部80は、当該判定結果を撮像装置12に通知する(S54)。差が所定値以下であれば変換規則を最適化する処理については終了させる(S52のY)。撮像装置12の画素値変換部74は、変換規則が適切でない旨の通知を受けたら(S56のY)、当該変換規則を補正する(S58)。例えば画素値変換部74は、複数の変換テーブル候補やコードブック候補を内部のメモリに保持しておき、用いる対象を切り替える。あるいは所定の規則に従い内部の設定値を徐々に変化させてもよい。
S54において情報処理装置10から、天頂角θがどちらの方向に誤差を持つか、法線ベクトルが参照用実物体326のどの部分で多くの誤差を発生させているか、といった傾向を通知させることで、撮像装置12において補正の方向を適切に決定してもよい。撮像装置12は、そのように変化させた変換規則を用いて再度パラメータを算出し、情報処理装置10へ送信する(S48)。情報処理装置10は再びパラメータの値を比較し(S50)、差が所定値より大きければ再度通知する(S52のN、S54)。
撮像装置12は、情報処理装置10から通知がある限り変換規則の補正を実施し(S56のY、S58)、通知がなければ変換規則を最適化する処理については終了させる(S56のN)。このような補正処理にはある程度の時間を要することもあり得るため、ゲームなどを開始する初期段階でキャリブレーションとして実施するほか、ゲームの最中などにバックグラウンドで行うようにしてもよい。例えば撮像装置12がヘッドマウントディスプレイに搭載されているなどして視点が変化する場合、視点に対する参照用実物体326の角度や距離に応じて、変換規則を適応的に切り替えてもよい。
参照用実物体326は上述のように、色や材質を既知とすることにより、法線ベクトルの取得に用いる反射モデルを精度よく決定することができる。同様の原理で、法線ベクトルが正確に求められるように参照用実物体326の形状、色、材質を適切に選択すれば、変換規則の補正も精度よく行えることになる。結果として、図20で示した手320、テーブル322、テーブル上の物324など、撮影環境に存在する参照用実物体326以外の物体の状態認識を高精度化できる。
図22は、撮像装置12から送信するデータをさらに限定する例を説明するための図である。図示する例は人体の撮影画像により脈拍数を監視する態様を想定しており、脈動による皮膚表面の形状変化を模式的に示している。すなわち皮膚の断面形状は脈動により、(a)に示す盛り上がりの小さい状態と(b)に示す盛り上がりの大きい状態とが交互に繰り返される。偏光画像によって法線を取得すれば、その周期変動により脈拍数を取得できる。
同図では各位置で得られる法線ベクトルを矢印で示している。(a)の状態と(b)の状態を比較すると、法線ベクトルは、盛り上がりの頂点近傍の領域Aや周辺の領域Cでは変化が小さい一方、それらの中間の傾斜領域Bでは変化が大きい。またこのような変化は天頂角θによって観測される。したがって情報処理装置10は、広域の低解像度画像から領域Bの位置を特定しつつ、当該領域について高解像度の天頂角θのデータを要求する。これにより、転送データの量や情報処理装置10における処理の負荷を最低限にして、低いレイテンシで撮影画像を用いた脈拍数の監視を実現できる。
以上述べた本実施の形態によれば、撮像装置において、偏光画像の輝度データから得られる様々なパラメータを算出する機構を設け、当該パラメータを画素値とする画素列のデータを生成する。また複数の解像度で偏光画像を生成したり、必要な領域を切り出したりする機構も設け、解像度、画像上の領域、パラメータの種類を自由に組み合わせて出力できるようにする。これにより、情報処理装置における対象物の状態認識処理を効率化できる。
また対象物のその時々の状態に応じて、必要なデータを限定して送信するため、データ転送量を増大させることなく精度よく状態認識を行える。例えば撮像装置において法線の天頂角と位相角を算出しておけば、情報処理装置においてはそれを利用して効率よく対象物の状態を取得できる。場合によって天頂角と位相角をベクトル量子化して送信できるようにすることにより、精度と送信データ量の優先順位に合わせて最適なデータを臨機応変に送信できる。
撮像装置が出力するデータは、画素単位で独立して算出可能なものとすることで、撮像素子によって輝度データを取得した画素列順での処理形態を崩すことなく結果を出力できる。結果として、撮像装置内部での演算によるレイテンシを最小限に抑えることができるとともに、演算結果を従来の画像データと同様に扱える。また、算出したパラメータを利用して当該画素の法線の信頼度や、法線の角度が所定の条件を満たしているか否かを特定し、その結果も送信対象とする。それらのデータを参照することにより、情報処理装置での処理をより効率化できる。
送信に際しては、複数種類のパラメータを解像度ごとに所定の画素列単位でつなげた仮想的な合成画像を生成し出力する処理を、データストリームの形式で行う。このとき、生成レートに応じた適切な規則でデータをつなげることにより、低いレイテンシでの送信を実現できるとともに、撮像装置に設けるべきメモリの容量を抑えることができる。また合成画像において複数種類のデータがそれぞれ矩形領域を構成するようにできるため、一般的なクロッピング処理によって特定のデータのみを容易に切り出せ、それを再接続して送信することにより情報処理装置においてもデータの区別が容易となる。
さらに、形状、色、材質などが既知の参照用実物体を利用して、撮像装置内部で用いる各種パラメータ取得のための変換規則を最適化する。これにより、撮像装置をヘッドマウントディスプレイに搭載する場合などにおける視野の変化や、明るさなどの撮影環境の変化に頑健性を有する実物認識技術を実現できる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。