以下、図面を参照して、本発明を実施する形態について説明する。なお、以下に示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
[実施例1]
図1は、第1の実施例に係る撮像装置の概観を示す説明図である。図1には、複数の撮像部を備える多眼方式による撮像装置と、プレノプティック方式による撮像装置とを正面から見た場合の概観の一例が示されている。
まず、図1(a)に示す、複数の撮像部を備える多眼方式による撮像装置について説明する。
図1(a)に示すように、撮像装置101は、筐体上側(図1(a)における上側)に撮影ボタン102を備える。また、撮像装置101は、筐体正面(図1(a)における手前側)に、画像データを取得する4個の撮像部103〜106を備える。4個の撮像部は、すべて同一の焦点距離を有し、正方格子状に配置されている。ユーザが撮影ボタン102を押下すると撮像処理が開始される。
まず、第1の合焦位置が設定され、撮像部103〜106が被写体の光情報をセンサ(撮像素子)で受光する。受光した信号がA/D変換されて、複数の画像データが同時に取得される。このような多眼方式により、同一の被写体を複数の視点位置から撮像した画像データ群(多視点画像データ)を得ることができる。
図2は、多視点画像データの例を示す説明図である。図2(a)には、撮像部104から撮像した左上視点(視点1)の画像が示されている。図2(b)には、撮像部103から撮像した右上視点(視点2)の画像が示されている。図2(c)には、撮像部106から撮像した左下視点(視点3)の画像が示されている。図2(d)には、撮像部105から撮像した
右下視点(視点4)の画像が示されている。図2(a)〜(d)を比べると、撮像部の配置により、各画像に写っているオブジェクトの位置が異なっていることが分かる。ここでは、オブジェクト601に焦点が合っているとする。
次いで、第1の合焦位置とは異なる第2の合焦位置が設定され、再度、多視点画像データが取得される。このときも同様に、撮像部103〜106が、被写体の光情報をセンサで受光する。受光した信号がA/D変換されて、複数の画像データが同時に取得される。ここでは、オブジェクト602に焦点が合っているとする。
このように、1回の撮像指示で、合焦位置が異なる多視点画像データが取得される。
図3を用いて複数の焦点位置、視点で撮像された画像データについて説明する。図3は、複数の合焦位置及び複数の視点で撮像された画像データの関連を模式的に示す説明図である。横軸は視点を表す。したがって、図3に示す例は、多視点画像データ709の各撮像画像データ(撮像画像データ701,702,703,704)の視点が互いに異なることを示す。また、多視点画像データ710の各撮像画像データ(撮像画像データ705,706,707,708)の視点が互いに異なることを示す。また、撮像画像データ701,705が同一の視点で撮像された画像データであることを示す。また、撮像画像データ702,706が同一の視点で撮像された画像データであることを示す。また、撮像画像データ703,707が同一の視点で撮像された画像データあることを示す。また、撮像画像データ704,708が同一の視点で撮像された画像データであることを示す。また、上下方向(図3における上下方向)に並べて示される多視点画像データ709,710は、互いの合焦位置が異なることを表している。図2に示す例に対応させると、多視点画像データ709は、オブジェクト601に焦点が合った多視点画像データ(視点1,2,3,4の撮像画像データ)に相当する。また、多視点画像データ710は、オブジェクト602に焦点が合った多視点画像データ(視点1,2,3,4の撮像画像データ)に相当する。
なお、ここでは撮像部の数を4個としたが撮像部の数は4個に限定されない。撮像装置が複数の撮像部を備える限りにおいて本発明は適用可能である。また、ここでは4個の撮像部が正方格子状に配置される例について説明したが、撮像部の配置は任意である。例えば、各撮像部が直線状に配置されていてもよいし、まったくランダムに配置されていてもよい。以下、撮像画像データ701〜708を単に画像データ701〜708と表現する場合がある。
次に、図1(b)に示す、プレノプティック方式による撮像装置について説明する。
図1(b)に示すように、撮像装置101は、筺体上側(図1(b)における上側)に撮影ボタン102を備える。また、撮像装置101は、筐体正面(図1(b)における手前側)に、画像データを取得する撮像部201を備える。ユーザが撮影ボタン102を押下すると撮像処理が開始される。
まず、第1の合焦位置が設定され、撮像部201が被写体の光情報をセンサで受光する。
図4(a)には、プレノプティック方式の撮像部201の内部構成が示されている。プレノプティック方式では、メインレンズ403とセンサ面405との間にマイクロレンズアレイ404が配置される。メインレンズの焦点面401上に配置されたオブジェクト402から発せられる光は、メインレンズ403によって集光され、マイクロレンズアレイ404において分離され、センサ面405で受光される。センサ面405によって受光された信号がA/D変換されることにより、プレノプティック方式の画像データが取得される。図4(a)の右下には、センサ面405の一部であるセンサ406を拡大した図が示されている。センサ406は、2×2(縦×横)画素のセンサであって、光を円状に受光する。
図4(b)には、プレノプティック方式の撮像部201で取得される画像データの一例が示されている。図4(b)において、格子状に区分されている領域が画素である。例えば、画素501,502,503,504,506,507,508がある。画素501,502,503,504は、センサ406によって円状に受光された光を角度分解した画素である。図4(b)に示す円505は、センサ406によって円状に受光された光を表す。図4(b)に示す例では、円状に受光された光が2×2(縦×横)画素で分離されている。
プレノプティック方式の画像データから多視点画像データを生成する方法を説明する。図4(b)に示す各円に対して、画素501、506、507、508と順に、左上の画素(図4(b)において斜線で示される画素)を選択して並べることにより、図4(c)に示すような左上視点の画像データが生成される。同様の処理を右上の画素、左下の画素、右下の画素について行うことにより、右上視点、左下視点、右下視点の画像データが生成される。このようにして、プレノプティック方式の画像データから、図2に示されるような多視点画像データが生成される。ここでは、オブジェクト601に焦点が合っているとする。なお、画像のデモザイク処理については本発明の主眼ではないため説明を省略する。
次に、第1の合焦位置とは異なる第2の合焦位置が設定され、多視点画像データが取得される。このときも同様に、メインレンズの焦点面(焦点面401とは別の焦点面)上に配置されたオブジェクトから発せられる光が、メインレンズ403によって集光され、マイクロレンズアレイ404において光が分離され、センサ面405で受光される。センサ面405で受光された信号がA/D変換されることにより、プレノプティック方式の画像データが取得される。その後、プレノプティック方式の画像データから多視点画像データが生成される。ここでは、オブジェクト602に焦点が合っているとする。このように、1回の撮像指示で、合焦位置が異なる多視点画像データが取得される。
なお、ここではセンサ406の分割数を2×2画素としたが、センサ406は2×2画素に限定されない。すなわち、マイクロレンズを介してセンサ面で光を分割する限りにおいて本発明は適用可能である。
上記のとおり、本実施例の撮像装置101は、1回の撮像指示で、多眼方式、プレノプティック方式共に図3で示されるような合焦位置が異なる多視点画像データを取得することができる。なお、上記の説明では、1回の撮像指示で2つの多視点画像データを取得する撮像方式を示したが、本発明は、1回の撮像指示で3つ以上の多視点画像データを取得する撮像方式にも適用可能である。また、以下では、異なる視点位置、異なる合焦位置の画像データの扱いについて説明するが、画像データの扱い方は多眼方式、プレノプティック方式共に同様であり、本発明は、どちらの撮像方式にも適用可能である。
図5は、撮像装置101の内部構成の一例を示すブロック図である。
撮像装置101は、ライトフィールド撮像部301と、距離データ取得部302と、バス303と、中央処理装置(CPU)304と、RAM305と、ROM306と、操作部307と、表示制御部308と、表示部309と、ライトフィールド撮像制御部310と、距離データ取得制御部311と、外部メモリ制御部312と、符号化部313と、自由焦点画像生成部314と、自由視点画像生成部315と、付加情報生成部316とを含む。
ライトフィールド撮像部301は、合焦位置が互いに異なる複数の多視点画像データを撮像する。撮像装置101が多眼方式である場合は、ライトフィールド撮像部301は、図1(a)に示す撮像部103〜106に相当する。撮像装置101がプレノプティック方式である場合は、ライトフィールド撮像部301は、図1(b)に示す撮像部201に相当する。撮像装置101がプレノプティック方式である場合、ライトフィールド撮像部301は、図4(b)に示されるプレノプティック方式の画像データから、図4(c)に示される多視点画像データを生成する。なお、ライトフィールド撮像部301において、視点が同一で合焦位置が異なる画像データ群を用いてノイズ除去を行うなど、画像処理による高画質化を行っても構わない。
距離データ取得部302は、TOF(Time−of−Flight)方式の距離センサなど、画像センサ以外のセンサを用いて距離データを取得する。なお、距離データの取得方法は、距離データが取得できるのであれば、TOF方式である必要はなく、レーザパターンを照射する方式など他の方式であっても構わない。また、付加情報生成部316が、画像センサで取得した画像データから距離データを生成しても構わない。そのような形態によれば、距離データ取得部302を備える必要がなくなる。
バス303は、各種データの転送経路である。例えば、バス303を介して、ライトフィールド撮像部301で撮像された画像データ、距離データ取得部302で取得された距離データが、所定の処理部に送られる。
CPU304は、各部を統括する。
RAM305は、CPU304の主メモリ、ワークエリア等として機能する。
ROM306は、CPU304で実行される制御プログラム等を格納する。
操作部307は、ボタンやモードダイヤルなどである。操作部307を介して、ユーザ指示が入力される。
表示部309は、撮影画像や文字の表示を行う。表示部309は、例えば液晶ディスプレイである。なお、表示部309は、タッチスクリーン機能を有していてもよい。その場合、操作部307の代わりに、タッチスクリーンを介して、ユーザ指示を入力するようにしてもよい。
表示制御部308は、表示部309に表示される画像や文字の表示制御を行う。
ライトフィールド撮像制御部310は、CPU304からの指示に基づいた撮像系の制御を行う。例えば、ライトフィールド撮像制御部310は、CPU304からの指示に基づいて、フォーカスを合わせたり、シャッターを開閉したり、絞りを調節したり、連続撮像したりする。これにより、ライトフィールド撮像部301において、合焦位置が互いに異なる複数の多視点画像データが取得される。
距離データ取得制御部311は、CPU304からの指示に基づいて、距離データ取得部302を制御する。本実施例では、距離データ取得制御部311は、距離データ取得部302における距離データの取得の開始及び終了を制御する。
外部メモリ制御部312は、パーソナルコンピュータ(PC)やその他のメディア(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)と、バス303とを接続するためのインターフェースである。
符号化部313は、デジタルデータを符号化する。また、符号化部313は、符号化されたデジタルデータ(以下、符号化データと呼ぶ。)を所定のフォーマットに格納する。さらに、符号化部313は、後述する管理情報を生成し、符号化データとともに上記所定のフォーマットに格納する。
自由焦点画像生成部314は、ライトフィールド撮像部301で撮像された画像データとは異なる合焦位置の画像データを生成する。
自由視点画像生成部315は、ライトフィールド撮像部301で撮像された画像データとは異なる視点位置の画像データを生成する。
付加情報生成部316は、画像の構造情報を抽出する。例えば、付加情報生成部316は、多視点画像データから距離データを生成する。また例えば、付加情報生成部316は、多視点画像データと距離データとに基づいてオブジェクト単位に領域分割を行って領域分割データを生成する。
符号化部313、自由焦点画像生成部314、自由視点画像生成部315及び付加情報生成部316の詳細については後述する。なお、撮像装置101は、上記以外の構成要素を備えていてもよい。
(符号化部)
符号化部313について説明する。符号化部313は、以下のデジタルデータを入力可能である。
・ライトフィールド撮像部301で撮像される合焦位置が異なる多視点画像データ
・距離データ取得部302で取得される距離データ
・自由焦点画像生成部314で生成される、撮像画像とは異なる合焦位置の画像データ
・自由視点画像生成部315で生成される、撮像画像とは異なる視点位置の画像データ
・付加情報生成部316で生成される距離データ、領域分割データ
・後述する、カメラ外部パラメータやカメラ内部パラメータ
符号化部313に入力されたデジタルデータは符号化され、所定のフォーマットに格納される。なお、「所定のフォーマットに格納する」などの表現を用いるが、具体的には、所定のフォーマットに従って記憶媒体などに格納することである。フォーマットに格納されるデジタルデータは、追加及び削除可能である。ライトフィールド撮像部301で撮像される合焦位置が異なる多視点画像データ、及び、距離データ取得部302で取得される距離データは、バス303を介して、符号化部313に入力される。また、自由焦点画像生成部314で生成される画像データ、自由視点画像生成部315で生成される画像データ、並びに、付加情報生成部316で生成される距離データ及び領域分割データは、バス303を介して、符号化部313に入力される。カメラ外部パラメータやカメラ内部パラメータは、ライトフィールド撮像制御部310からバス303を介して、符号化部313に入力される。
次に、多視点画像データ、画像データ、距離データ及び領域分割データの符号化方法について説明する。なお、多視点画像データは、合焦位置が同一であり、視点位置が異なる画像データの集まりである。
画像データについては、符号化部313は、JPEGやPNGなど単視点画像の符号化方式で符号化する。
多視点画像データについては、符号化部313は、各画像データをJPEGやPNGなど単視点画像の符号化方式で符号化してもよいし、または、MVC(Multiview Video Coding)など多視点画像の符号化方式で符号化してもよい。
距離データについては、符号化部313は、距離データを画像データとして表現して、JPEGやPNGなど単視点画像の符号化方式で符号化する。例えば、距離データは8ビットのグレイ画像として表現される。グレイ画像における各画素の画素値は、距離値と一対一で対応する。距離値から8ビットの画素値への変換は、距離の最小値と最大値を8ビットで均等に分割してもよいし、手前の距離の分解能が上がるように非線形に分割してもよい。または、画素値と距離値とをルックアップテーブルで対応させる方法など、他の方法を用いてもよい。なお、距離データの表現は8ビットのグレイ画像に限定されず、各画素の距離値をバイナリデータとして保持する方法など、他の表現方法を用いても構わない。図6は、距離データ及び領域分割データによって表される画像の一例を示す説明図である。図6(a)には、距離データによって表される画像の一例が示されている。オブジェクト601とオブジェクト602には異なる画素値が割り当てられる。またオブジェクト601内でも、撮像部との距離が異なる部分には異なる画素値が割り当てられる。
領域分割データについては、符号化部313は、領域分割データを画像データとして表現して、JPEGやPNGなど単視点画像の符号化方式で符号化する。領域分割データも距離データと同様に8ビットのグレイ画像として表現される。グレイ画像における各画素の画素値は、領域番号に対応する。例えば、黒色(画素値:0)の場合に領域番号が0であり、白色(画素値:255)の場合に領域番号が255となる。もちろん領域番号と画素値が対応するのであれば、領域分割データをRGBのカラー画像で表現する方法や、領域番号をバイナリデータとして保持する方法など、他の表現方法を用いても構わない。図6(b)には、領域分割データによって表される画像の一例が示されている。図6(b)では、オブジェクト601とオブジェクト602には異なる画素値が割り当てられる。またオブジェクト601内の画素値は、同一オブジェクトとなるので同じ画素値となる。
次に、符号化データを格納するフォーマットについて説明する。
フォーマットには、前述した符号化データと、各データを関連付ける管理情報とが格納される。図7(a)には、管理情報の一例が示されている。管理情報は、符号化データの関連とポインタとが記述された情報である。本実施例では、図7(a)に示すように、管理情報は、階層構造で記述される。また図7(a)に示すように、管理情報は、全視点のデータを統括する多視点データ1001と、各視点のデータを統括する視点データ1002(1002−1〜1002−N)と、各焦点のデータを統括する焦点データ1003(1003−1〜1003−M)とを含む。図7(a)には、視点数がN、焦点数がMであるときの、管理情報が示されている。
ここで、多視点データ1001、視点データ1002及び焦点データ1003に格納される情報について説明する。
多視点データ1001には、視点数、代表視点の番号など、全視点のデータを統括する情報が記述される。視点数は、図1(a)に示すような多眼方式による撮像装置の場合、撮像部の個数に相当する。代表視点とは、画像のサムネイルなどを表示するときに優先する視点である。代表視点の番号とは、代表視点を識別可能な番号である。他にも、距離データの表現をルックアップテーブルで行う場合には、ルックアップテーブルの情報が記述される。また、画像サイズが全視点で同一の場合には、画像サイズの情報が記述される。なお、全視点のデータを統括する情報であれば、記述する内容はこれに限定されるものではない。
視点データ1002には、カメラ外部パラメータ、焦点画像の枚数、代表焦点画像の番号、距離データ参照情報、距離データの表現方法、距離の最小値と最大値、領域分割データ参照情報などが記述される。カメラ外部パラメータは、視点(具体的には、視点位置や視点方向)などを示す情報である。本実施例では、視点位置の座標がカメラ外部パラメータとして視点データ1002に記述される。代表焦点画像とは、画像のサムネイルなどを表示するときに優先する焦点に対応する画像である。代表焦点画像の番号とは、代表焦点画像を識別可能な番号である。距離データ参照情報は、距離データにアクセスするための情報(例えば、距離データへのポインタ)である。領域分割データ参照情報は、領域分割データにアクセスするための情報(例えば、領域分割データへのポインタ)である。なお、視点単位に利用される情報であれば、記述する内容はこれに限定されるものではない。
焦点データ1003には、カメラ内部パラメータなどが記述される。カメラ内部パラメータとは、焦点距離、絞り値、合焦した時のAF(オートフォーカス)情報、レンズの歪みなどを示すものである。なお、画像単位に利用される情報であれば、記述する内容はこれに限定されるものではない。さらに、焦点データ1003には、画像データ参照情報が記述される。画像データ参照情報は、画像データにアクセスするための情報(例えば、画像データへのポインタ)である。これにより、画像データ参照情報が、当該画像データの視点を示す視点情報(例えば、視点データ1002に記述された視点位置の座標)と、当該画像データの合焦位置を示す焦点情報(例えば、焦点データ1003に記述されたAF情報)とに対応付けされる。
上記の多視点データ1001、視点データ1002、焦点データ1003を管理情報として記述することで、多視点画像データ、距離データ、領域分割データを関連付けることができる。また管理情報をXML形式で記述することで、標準のXMLパーサで読み込むことも可能となる。なお、管理情報の構造は、図7(a)に示される構造に限定されない。画像データにアクセスするための画像データ参照情報が、当該画像データの視点を示す視点情報と、当該画像データの合焦位置を示す焦点情報とに対応付けされていれば、管理情報は他の構造を有していてもよい。
管理情報、多視点画像データ、距離データ、及び、領域分割データを格納するファイルフォーマットについて、2つの形式を以下に示す。図7(b)(c)には、フォーマットの一例が示されている。
一つ目は、図7(b)に示すように、フォルダ1101の中に管理情報を記述した管理ファイル1102と、各データを保存するフォーマットである。各データとは、画像データ701〜708、距離データ801、領域分割データ802、自由視点画像生成部315によって生成される画像データ(以下、自由視点画像データと呼ぶ。)806、自由焦点画像生成部314によって生成される画像データ(以下、自由焦点画像データと呼ぶ。)807である。
二つ目の形式は、図7(c)に示すように、ファイル1103のヘッダ1104に管理情報を記述し、ファイル1103に各データを保存するフォーマットである。各データとは、画像データ701〜708、距離データ801、領域分割データ802、自由視点画像データ806、自由焦点画像データ807である。
このようにして、多視点画像データ、画像データ、距離データ及び領域分割データが符号化され、各データの関連を示す管理情報と共に、上記フォーマットに格納される。以下、上記フォーマットを「多次元情報フォーマット」と呼ぶ。
符号化部313は、自身が備える不図示の記憶部(記憶媒体)に多次元情報フォーマットを保持する。なお、符号化部313は、外部メモリ制御部312を介して外部メモリ(SDカード等の記憶媒体)に、多次元情報フォーマットを格納してもよい。
(付加情報生成部)
付加情報生成部316について説明する。付加情報生成部316は、符号化部313からバス303を介して、多次元情報フォーマットを入力する。ここで、多次元情報フォーマットが外部メモリに格納されている場合には、付加情報生成部316は、外部メモリ制御部312を介して当該外部メモリから多次元情報フォーマットを読み出せばよい。
図8(a)には、付加情報生成部316に入力されるデータと、付加情報生成部316から出力されるデータとが模式的に示されている。付加情報生成部316は、入力された多次元情報フォーマットから、多視点画像データ及び距離データを取得する。ここでは、付加情報生成部316は、図8(a)に示す、多視点画像データ709(画像データ701,702,703,704)、及び、付加情報生成を行う視点の距離データ801を取得する。なお、距離データが上記フォーマットに格納されていない場合には、多視点画像データ709(画像データ701,702,703,704)のみが取得される。付加情報生成を行う視点は、操作部307や表示部309を介して、ユーザ等により指定される。ここでは、視点1が指定されたものとする。
多次元情報フォーマットに距離データが格納されている場合には、付加情報生成部316は、領域分割データ802を生成して出力する。多次元情報フォーマットに距離データが格納されていない場合には、付加情報生成部316は、距離データ801及び領域分割データ802を生成して出力する。なお、領域分割データは、後述する第2の実施例のリフォーカス処理において利用されるデータである。したがって、本実施例においては、付加情報生成部316は、距離データ801のみを生成して出力するようにしても構わない。出力されたデジタルデータは、バス303を介して符号化部313において多次元情報フォーマットに格納される。このとき、符号化部313は、多次元情報フォーマット内の管理情報の、視点1に対応する視点データに、距離データ801に関する情報(距離データ801のポインタなど)を追記する。なお、多次元情報フォーマットが外部メモリに格納されている場合には、付加情報生成部316が、生成した付加情報で、外部メモリに格納された多次元情報フォーマットを更新すればよい。
図9は、付加情報生成部316の内部構成の一例を示すブロック図である。付加情報生成部316は、距離データ生成部1201、領域分割データ生成部1202を含む。本実施例では、付加情報生成部316を撮像装置101内の一構成要素として説明しているが、付加情報生成部316の機能はPC等の外部装置で実現されてもよい。すなわち、本実施例における付加情報生成部316は、撮像装置の一機能としても、または独立した画像処理装置としても実現し得るものである。
以下、付加情報生成部316の各構成要素について説明する。
付加情報生成部316に多視点画像データのみが入力された場合には、距離データ生成部1201は、多視点画像データから距離データを生成し、生成した距離データを領域分割データ生成部1202とバス303とに出力する。領域分割データ生成部1202は、多視点画像データと、距離データ生成部1201から入力した距離データとから、領域分割データを生成し、バス303に出力する。なお、付加情報生成部316が距離データのみを出力データとして出力する場合は、領域分割データ生成部1202の処理は行われない。
付加情報生成部316に多視点画像データと、距離データ取得部302で取得された距離データとが入力された場合には、領域分割データ生成部1202は、入力された両データから領域分割データを生成し、バス303に出力する。このとき、距離データ生成部1201の処理は行われない。
距離データ生成部1201について説明する。図10は、距離データ生成部1201の処理を示すフローチャートである。
ステップS1301において、距離データ生成部1201は、多視点画像データを入力する。ここでは、多視点画像データが、図2に示す4視点の画像に対応する画像データである場合を例にする。
ステップS1302において、距離データ生成部1201は、距離データを生成する視点となる基準画像と、距離データを生成するために参照する参照画像とを選択する。ここでは図2(a)に示される視点1の画像を基準画像とし、図2(b)に示される視点2の画像を参照画像とする。参照画像は複数視点の画像でも構わないが、本実施例では説明を分かり易くするために参照画像を1視点の画像とする。
ステップS1303において、距離データ生成部1201は、基準画像を基準として参照画像との視差を計算する。これを基準視差と呼ぶ。図11は、視差の算出方法を説明するための説明図である。
まず、図11(a)、(b)を用いて基準視差の算出方法を説明する。
図11(a)は基準画像(視点1の画像)であり、図11(b)は参照画像(視点2の画像)である。基準画像と参照画像は視点位置が異なるため、撮像されるオブジェクトの位置が異なる。撮像されたオブジェクトのずれ量(視差)は、撮像装置101からオブジェクトまでの距離に依存するため、視差から距離データを算出することができる。
基準画像におけるオブジェクト601の右目のX座標(図11における水平方向の座標)1401を、参照画像において同一座標で表すとX座標1402となる。X座標1402から参照画像におけるオブジェクト601の右目のX座標を探索して対応点を求める。X座標1402と対応点のX座標との差が視差1403となる。基準画像における全ての画素について対応点探索を行い、基準視差を算出する。
対応点探索には様々な方法があるが、いずれの方法を用いても構わない。例えば、領域単位に探索してコスト値(色差)が最小となる視差を対応点とする方法がある。また例えば、画素単位に探索してコスト値(色差)を算出し、算出したコスト値に対してエッジ保持型のフィルタで平滑化を行い、コスト値が最小となる視差を対応点とする方法がある。
ステップS1304において、距離データ生成部1201は、参照画像を基準として基準画像との視差を計算する。これを参照視差と呼ぶ。
次に、図11(c)、(d)を用いて参照視差の算出方法を説明する。
図11(c)は基準画像(視点1の画像)であり、図11(d)は参照画像(視点2の画像)である。参照画像におけるオブジェクト601の右目のX座標1405を、基準画像において同一座標で表すとX座標1404となる。X座標1404から基準画像におけるオブジェクト601の右目のX座標を探索して対応点を求める。X座標1404と対応点のX座標との差が視差1406となる。参照画像における全ての画素について対応点探索を行い、参照視差を算出する。
ステップS1305において、距離データ生成部1201は、ステップS1303で算出した基準視差と、ステップS1304で算出した参照視差との対応領域の算出を行う。基準視差と参照視差を画素単位に比較し、基準視差と参照視差との差が閾値以下のとき、比較対象の画素を対応領域とし、閾値より大きいとき、比較対象の画素を非対応領域として分類する。つまり対応領域は基準視差と参照視差の一致度が高い領域であり、視差の信頼性が高い。また非対応領域は基準視差と参照視差の一致度が低い領域であり、視差の信頼性が低いと言える。
ステップS1306において、距離データ生成部1201は、ステップS1304で分類した非対応領域の視差を補正する。前述した通り、非対応領域は視差の信頼性が低いため、信頼性の高い周囲の対応領域の基準視差から補完して、非対応領域の基準視差を決定する。
ステップS1307において、距離データ生成部1201は、基準視差を距離データに変換して出力する。
なお、距離データ生成部1201における距離データの生成方法は、上述した手法に限定されない。距離データの生成処理には、多視点画像データから距離データを生成する手法であれば、複数視点の参照画像を用いる手法など、他の手法を用いても構わない。また、ステップS1301において、距離データ生成部1201が、合焦位置が異なる複数の多視点画像データを入力した場合には、各多視点画像データのそれぞれについて生成した距離データを出力すればよい。そして、符号化部313が、各距離データを重み付き平均等により統合してから、多次元情報フォーマットに格納すればよい。そのような形態によれば、より正確な距離データを取得することが可能となる。なお、距離データ生成部201が各距離データを統合してから出力するようにしてもよい。
次に、領域分割データ生成部1202について説明する。図12は、領域分割データ生成部1202の処理を示すフローチャートである。
ステップS1501において、領域分割データ生成部1202は、領域分割を行う視点の画像データと距離データとを入力する。ここでは、図2(a)に示す視点1の画像に対応する画像データと、図6(a)に示す視点1の距離データを入力する。
ステップS1502において、領域分割データ生成部1202は、操作部307を介して入力されるユーザ操作に基づいて、切り出すオブジェクトを囲む矩形領域を選択する。図13は、オブジェクトを囲む矩形領域が選択される様子を示す説明図である。なお、ユーザ操作を伴わず、人体検出などの認識処理を用いて切り出すオブジェクトを囲む矩形領域を指定しても構わない。図13(a)に示す例では、オブジェクト601を囲む矩形領域1601が選択されている。
ステップS1503において、領域分割データ生成部1202は、選択した矩形領域からオブジェクトを切り出す処理を行う。オブジェクトを囲む矩形領域内の距離データをクラスタリング処理することで、画像データにおける矩形領域内の主オブジェクトを抽出する。なお、距離データをコスト関数のパラメータとして追加し、グラフカットに代表される大域最適化処理により、画像データにおける矩形領域内の主オブジェクトを抽出しても構わない。
ステップS1504において、領域分割データ生成部1202は、切り出されたオブジェクトに対して領域番号を設定する。本実施例では、領域番号を8ビット(0〜255)の数値で表す。領域番号には、8ビット(0〜255)で表現可能な番号であれば、任意の番号を設定しても構わない。これにより、例えば、図6(b)に示す例では、オブジェクト601に領域番号1が割り当てられる。
ステップS1505において、領域分割データ生成部1202は、領域分割処理を終了するか確認する。
切り出すオブジェクトが残っていれば(ステップS1505のNO)、領域分割データ生成部1202は、ステップS1502の処理に戻る。領域分割データ生成部1202は、ステップS1502の処理に戻ると、図13(b)に示すように、オブジェクト602を囲む矩形領域1602を選択し、ステップS1503、S1504の処理を行う。これにより、例えば図6(b)に示す例では、オブジェクト602に領域番号2が割り当てられる。
切り出すオブジェクトが残っていなければ(ステップS1505のYES)、領域分割データ生成部1202は、領域分割を終了する。
ステップS1506において、領域分割データ生成部1202は、領域分割データを出力する。
なお、領域分割データ生成部1202における領域分割データの生成処理は、上述した手法に限定されない。領域分割データの生成処理には、画像データと距離データとから領域分割データを生成する手法であれば、矩形領域ではなくオブジェクトの一部を選択する手法など、他の手法を用いても構わない。
(自由視点画像生成部)
自由視点画像生成部315について説明する。自由視点画像生成部315は、符号化部313からバス303を介して、多次元情報フォーマットを入力する。ここで、多次元情報フォーマットが外部メモリに格納されている場合には、自由視点画像生成部315は、外部メモリ制御部312を介して当該外部メモリから多次元情報フォーマットを読み出せばよい。自由視点画像生成部315に入力されるデータ、及び、自由視点画像生成部315から出力されるデータについて図8(b)を用いて説明する。
自由視点画像生成部315は、入力された多次元情報フォーマットから、多視点画像データ及び各視点に対応する距離データを取得する。ここでは、自由視点画像生成部315は、図8(b)に示す、多視点画像データ709(画像データ701,702,703,704)、及び、各視点に対応する距離データ801,803,804,805を取得する。
自由視点画像生成部315は、入力された多視点画像データとは異なる視点の画像データ(自由視点画像データ)806を生成して出力する。出力されたデジタルデータは、バス303を介して符号化部313において多次元情報フォーマットに格納される。このとき、符号化部313は、多次元情報フォーマット内の管理情報に、自由視点画像データ806に対応する視点データを追加し、さらに当該視点データの配下に自由視点画像データ806に対応する焦点データを追加する。なお、多次元情報フォーマットが外部メモリに格納されている場合には、自由視点画像生成部315が、生成した自由視点画像データ806で、外部メモリに格納された多次元情報フォーマットを更新すればよい。
図14は、自由視点画像生成部315の内部構成の一例を示すブロック図である。自由視点画像生成部315は、分離情報生成部1701、自由視点画像合成部1702を含む。本実施例では、自由視点画像生成部315を、撮像装置101内の一構成要素として説明しているが、自由視点画像生成部315の機能はPC等の外部装置で実現されてもよい。すなわち、本実施例における自由視点画像生成部315は、撮像装置の一機能としても、または独立した画像処理装置としても実現し得るものである。
以下、自由視点画像生成部315の各構成要素について説明する。
多視点画像データ、及び、各視点に対応する距離データが自由視点画像生成部315に入力されると、まず、両データが分離情報生成部1701に送られる。以下、各視点の画像データによって表される画像を視点画像と呼ぶ。
分離情報生成部1701は、入力された多視点画像データに対応する各視点画像を、2つの層(被写体の境界である境界層、被写体の境界でない主層)に分離するための基礎となる情報(分離情報)を生成する。具体的には、分離情報生成部1701は、各視点画像内の各画素を、被写体の境界(以下、「オブジェクト境界」と呼ぶ。)に隣接する境界画素、及び、境界画素以外の通常画素の2種類に分類する。そして、分離情報生成部1701は、各画素がいずれの種類に該当するかを特定可能な情報を生成する。
図15は、分離情報生成部1701の処理を示すフローチャートである。
ステップS1901において、分離情報生成部1701は、多視点画像データ、及び、各視点に対応する距離データを入力する。
ステップS1902において、分離情報生成部1701は、視点画像のオブジェクト境界を抽出する。本実施例では、対象画素の距離データと近隣画素の距離データとの差分(以下、「距離データの差分」と呼ぶ。)が閾値以上の箇所をオブジェクトの境界として特定する。具体的には、以下のとおりである。
まず、分離情報生成部1701は、視点画像を縦方向に走査し、距離データの差分を閾値と比較して、閾値以上となる画素を特定する。次に、視点画像を横方向に走査し、同様に距離データの差分を閾値と比較して、閾値以上となる画素を特定する。そして、分離情報生成部1701は、縦方向と横方向とでそれぞれ特定された画素の和集合を、オブジェクト境界として特定する。なお、閾値としては、距離データが8ビット(0〜255)で量子化されている場合においては、例えば「10」のような値に設定される。
ステップS1903において、分離情報生成部1701は、各視点画像内の各画素を、境界画素、通常画素の2種類に分類する。具体的には、分離情報生成部1701は、ステップS1901で取得した距離データを参照して、ステップS1902で特定されたオブジェクト境界に隣接する画素を境界画素と決定する。
図16は、視点画像内の各画素が、境界画素、通常画素の2つに分類される様子を示す説明図である。オブジェクト境界2001を跨ぐ隣接画素が境界画素2002,2003、残りの画素が通常画素2004にそれぞれ分類されている。図16では、境界画素が黒塗りの丸で表されている。また、通常画素が白塗りの丸で表されている。なお、以降に示す図においても、境界画素を黒塗りの丸、通常画素を白塗りの丸で表す。ここでは、オブジェクト境界に隣接する画素のみを境界画素としているが、オブジェクト境界から2画素の幅で境界画素とする方法など、他の分離方法を用いても構わない。
ステップS1904において、分離情報生成部1701は、入力された多視点画像データに対応するすべての視点画像について画素の分類が完了したかどうかを判定する。
未処理の視点画像がある場合には(ステップS1904のYES)、分離情報生成部1701は、ステップS1902の処理に戻り、次の視点画像に対してステップS1902及びステップS1903の処理を行う。一方、すべての視点画像について画素の分類が完了している場合には(ステップS1904のNO)、分離情報生成部1701は、ステップS1905の処理に進む。
ステップS1905において、分離情報生成部1701は、境界画素と通常画素とを特定可能な分離情報を、自由視点画像合成部1702に送る。境界画素が分かれば、その他の画素は通常画素であると判明するので、分離情報としては、境界画素が特定可能な情報であればよい。したがって、分離情報として、例えば境界画素と判定された画素について“1”、通常画素と判定された画素について“0”といったフラグを付加する方法等が考えられる。自由視点画像合成部1702は、このような分離情報を用いて、所定の視点画像を2つの層(すなわち、境界画素で構成される境界層、通常画素で構成される主層)に分離する。
図17は、分離情報生成部1701の処理を説明するための説明図である。図17に示す例では、視点1の画像におけるオブジェクト内部1801,1802、視点2の画像におけるオブジェクト内部1803,1804が主層として表される。また、視点1の画像におけるオブジェクト境界部1805,1806、視点2の画像におけるオブジェクト境界部1807,1808が境界層として表される。なお、図20(a),(b)では、説明を簡単にするため、オブジェクト境界部の内側の通常画素で構成される層のみを主層として表している。
自由視点画像合成部1702は、自由視点画像合成に利用する参照画像群を設定し、まず参照画像群の主層をレンダリングし、次に参照画像群の境界層をレンダリングする。そして、自由視点画像合成部1702は、各レンダリング画像を合成することで任意の視点位置における画像データ(自由視点画像データ)を生成する。図18は、自由視点画像合成部1702の処理を示すフローチャートである。
ステップS2101において、自由視点画像合成部1702は、ユーザによって指定される任意の視点(以下、「自由視点」と呼ぶ。)の、位置情報を取得する。自由視点の位置情報は、本実施例では、図2(a)に示される視点1の位置を基準とする場合における、自由視点の位置を示す座標情報である。基準とする視点1の座標を(0.0,0.0)とした場合、図2(b)に示される視点2は(1.0,0.0)、図2(c)に示される視点3は(0.0,1.0)、図2(d)に示される視点4は(1.0,1.0)の座標でそれぞれ表される。ここで、例えば、ユーザが、視点1〜4の中間位置を自由視点とした画像を合成したいと考えたとき、ユーザは、座標(0.5,0.5)を入力する。なお、座標定義の方法は上記に限るものではなく、視点1以外の位置を基準としてもよい。また、自由視点の位置情報の入力方法は、上述した座標を直接入力する方法に限られず、例えば、撮像部が図1(a)に示すように配置されている場合には、撮像部103〜106の配置を示すUI画面(不図示)を表示部309に表示し、ユーザがタッチ操作等によって所望の自由視点を指定するようにしてもよい。
ステップS2102において、自由視点画像合成部1702は、自由視点画像データの生成において参照する、複数の視点画像(以下、「参照画像群」と呼ぶ。)を設定する。本実施例では、自由視点画像合成部1702は、指定された自由視点の位置に近い4つの視点画像を参照画像群として設定する。上記のように、自由視点の位置として座標(0.5,0.5)が指定されたときの参照画像群は、図2に示される視点1〜4の視点画像によって構成されることになる。なお、参照画像群を構成する視点画像の数は4つに限定されるものではなく、指定された自由視点の周囲の3つの視点画像でも構わない。また、参照画像群は、指定された自由視点の位置を内包する視点に対応する画像群であればよいので、例えば指定された自由始点位置の直近ではない4つの視点位置で撮像された視点画像を参照画像群に設定してもよい。
ステップS2103において、自由視点画像合成部1702は、参照画像の主層の3次元モデルを生成する処理を行う。主層の3次元モデルは、オブジェクト境界に掛かっていない通常画素を含む4つの画素を相互に接続して四辺形メッシュを構築することにより生成する。図19(a)には、主層の3次元モデル生成の様子が示されている。図19(a)に示すように、例えば、通常画素を含む4つの画素であって、いずれもオブジェクト境界2001に掛かってない画素(2つの通常画素2004,2201及び2つの境界画素2202,2203)を接続して四辺形メッシュ2204が構築される。このような処理を繰り返し行い、主層の3次元モデルとなるすべての四辺形メッシュが構築される。このときの四辺形メッシュの大きさは最小で1画素×1画素である。本実施例では、主層を全て1画素×1画素の大きさの四辺形メッシュで構築しているが、より大きな四辺形メッシュで主層を構築してもよい。また、四辺形以外の形状、例えば三角形のメッシュで主層を構築してもよい。
上記のようにして構築される、1画素単位の四辺形メッシュのX座標とY座標は視点画像のカメラパラメータから算出されたグローバル座標に相当し、Z座標は距離情報から得られる各画素における被写体までの距離に相当する。そして、自由視点画像合成部1702は、各画素の色情報を四辺形メッシュにテクスチャマッピングして、主層の3次元モデルを生成する。
図18のフローチャートの説明に戻る。
ステップS2104において、自由視点画像合成部1702は、参照画像の主層を自由視点位置でレンダリングする。具体的には、自由視点画像合成部1702は、ステップS2103で生成した参照画像の主層の3次元モデルを、ステップS2101で取得した自由視点位置でレンダリングする。
なお、ステップS2103,S2104の処理は、参照画像群の各参照画像について実行される。
図19(b)には、主層のレンダリングの様子が示されている。図19(b)において、横軸はX座標を表し、縦軸はZ座標を表す。また、図19(b)において、境界画素2404,2405との間にオブジェクト境界(不図示)が存在するものとする。また、図19(b)において、線分2401,2402(以下、境界層2401,2402または四辺形メッシュ2401,2402と表現する場合がある)は、白塗りの逆三角で示す参照画像の視点(以下、「参照視点」と呼ぶ。)2408から3次元モデル生成した場合における主層の四辺形メッシュをそれぞれ示す。すなわち、図19(b)に示す例では、通常画素2406と境界画素2404とを接続した四辺形メッシュ2401、及び、通常画素2407と境界画素2405とを接続した四辺形メッシュ2402が、主層として3次元モデル生成されている。このような四辺形メッシュ2401,2402を、黒塗りの逆三角形で示す自由視点2408でレンダリングした画像がレンダリング画像となる。レンダリング処理において、色が存在しない画素部分は、穴として残ることになる。図19(b)において、矢印2409,2410は、四辺形メッシュ2402が、参照視点2403、自由視点2408において、どの位置に見えるかを示す。参照視点2403より左側にある自由視点2408では、四辺形メッシュ2402は、参照視点2403より右側に位置する。矢印2411,2412も同様に、四辺形メッシュ2401が、参照視点2403、自由視点2408において、どの位置に見えるかを示す。
図18のフローチャートの説明に戻る。
ステップS2105において、自由視点画像合成部1702は、指定した自由視点位置における主層のレンダリング結果を統合して、主層の統合画像データを得る。本実施例では、参照画像の主層から生成されたレンダリング画像(4つ)が統合される。統合処理は、画素毎に行われ、統合後の色は各レンダリング画像の重み付き平均、具体的には、指定された自由視点の位置と参照画像との距離に基づく重み付き平均を用いる。例えば、指定された自由視点位置が各参照画像に対応する4つの視点位置から等距離だけ離れた位置であった場合には、各レンダリング画像に対応する重みは、いずれも0.25となる。一方、指定された自由視点位置が、いずれかの参照画像の視点位置に近寄った位置である場合には、その距離が近いほど大きい重みとなる。なお、平均色の求め方は、これに限定されるものではない。また、各レンダリング画像のうち、穴が空いている箇所(四辺形メッシュが構築されていない画素)は、統合する際の色計算の対象とされない。つまり、いずれかのレンダリング画像で穴が空いている箇所については、当該箇所に穴が空いていないレンダリング画像を対象とする重み付き平均によって、統合後の色が算出される。全てのレンダリング画像で穴が空いている箇所は、穴として残る。
図18のフローチャートの説明に戻る。
ステップS2106において、自由視点画像合成部1702は、参照画像の境界層の3次元モデルを生成する。オブジェクト境界に接する境界層では、メッシュ生成時に隣接画素との接続を行わない。具体的には、自由視点画像合成部1702は、1つの画素に対して1つの四辺形メッシュを構築して、境界層の3次元モデルを生成する。図19(c)には、境界層の3次元モデル生成の様子が示されている。自由視点画像合成部1702は、境界画素2301に対して、1画素×1画素の大きさの四辺形メッシュ2302を構築する。自由視点画像合成部1702は、このような処理を境界画素に対して繰り返し行い、境界層の3次元モデルとなるすべての四辺形メッシュを構築する。上記のようにして構築される、1画素単位の四辺形メッシュのX座標とY座標は視点画像のカメラパラメータから算出されたグローバル座標に相当し、Z座標は距離情報から得られる各境界画素における被写体までの距離に相当する。そして、自由視点画像合成部1702は、各境界画素の色情報を四辺形メッシュの色として境界層の3次元モデルを生成する。なお、ステップS2106の処理は、参照画像群の各参照画像について実行される。
図18のフローチャートの説明に戻る。
ステップS2107において、自由視点画像合成部1702は、参照画像の境界層のレンダリングを行う。図19(d)は、境界層のレンダリングの様子を説明する図である。図19(b)と同様、図19(d)において、横軸はX座標を表し、縦軸はZ座標を表す。また、図19(d)において、境界画素2404と境界画素2405との間にオブジェクト境界(不図示)が存在するものとする。また、図19(d)において、線分2501,2502(以下、境界層2501,2502または四辺形メッシュ2501,2502と表現する場合がある)は、白塗りの逆三角で示される参照視点2403から3次元モデル生成した場合における境界層の四辺形メッシュを示す。境界層2501,2502は、境界画素2405,2404の距離情報と色情報とを有する1画素単位の四辺形メッシュである。このような1画素単位の四辺形メッシュ2501,2502を、ステップS2101で指定された自由視点の位置(図19(d)において黒塗りの逆三角で示す自由視点2408)でレンダリングした画像が境界層のレンダリング画像となる。なお、境界層のレンダリング処理においても、色が存在しない箇所(四辺形メッシュが構築されていない画素)は、穴として残る。そして、自由視点画像合成部1702は、上記のようなレンダリング処理を、参照画像群の参照画像の全てについて行い、境界層のレンダリング画像群を得る。図19(d)において、矢印2503,2504は、四辺形メッシュ2502が、参照視点2403,自由視点2408においてどの位置に見えるかを示す。参照視点2403より左側にある自由視点2408では、四辺形メッシュ2502は、参照視点2403より右側に位置する。
図18のフローチャートの説明に戻る。
ステップS2108において、自由視点画像合成部1702は、境界層のレンダリング画像群を統合して、境界層の統合画像データを得る。このとき、ステップS2105と同様の統合処理によって、4つの視点画像から生成された境界層のレンダリング画像(4つ)が統合される。
図18のフローチャートの説明に戻る。
ステップS2109において、自由視点画像合成部1702は、ステップS2105で得た主層の統合画像データと、ステップS2108で得た境界層の統合画像データとを統合して2層統合画像データを得る。ここでの統合処理も画素毎に行われる。この際、主層の統合画像と境界層の統合画像とでは主層の統合画像の方が、安定的に精度が高い画像が得られるため、主層の統合画像を優先して利用する。よって、主層の統合画像に穴が空いていて、境界層の統合画像に穴が空いていないという場合にのみ、境界層の色で補完がなされる。主層の統合画像と境界層の統合画像との双方に穴が空いているときは、穴として残ることになる。以上の処理により、自由視点画像合成部1702は、2層統合画像データを得る。
なお、本実施例において、主層のレンダリング、境界層のレンダリングの順に処理を行うのは、オブジェクト境界付近の画質劣化を抑えるためである。
ステップS2110において、自由視点画像合成部1702は、穴埋め処理を行う。具体的には、自由視点画像合成部1702は、ステップS2109で得た2層統合画像データにおいて穴として残っている部分を周囲の色を用いて補完する。本実施例では、穴埋め対象画素の周囲画素から距離データがより大きい値を示す画素を選択して穴埋め処理を行う。なお、穴埋め処理には他の方法を用いても構わない。
ステップS2111において、自由視点画像合成部1702は、穴埋め処理が終わった自由視点画像データを出力する。
(自由焦点画像生成部)
自由焦点画像生成部314について説明する。自由焦点画像生成部314は、符号化部313からバス303を介して、多次元情報フォーマットを入力する。ここで、多次元情報フォーマットが外部メモリに格納されている場合には、自由焦点画像生成部314は、外部メモリ制御部312を介して当該外部メモリから多次元情報フォーマットを読み出せばよい。自由焦点画像生成部314に入力されるデータ、及び、自由焦点画像生成部314から出力されるデータについて、図8(c)(d)(e)を用いて説明する。
本実施例の自由焦点画像生成部314は、入力された多次元情報フォーマットから、合焦位置が異なる多視点画像データ及び自由焦点画像生成を行う視点の距離データを取得する。なお、自由焦点画像生成を行う視点は、操作部307に入力されるユーザ操作によって指定される。
自由焦点画像生成部314は、入力された多視点画像データとは異なる合焦位置の画像データ(自由焦点画像データ)807を生成して出力する。出力されたデジタルデータは、バス303を介して符号化部313において多次元情報フォーマットに格納される。このとき、符号化部313は、多次元情報フォーマット内の管理情報に、自由焦点画像データ807に対応する視点データを追加し、さらに当該視点データの配下に自由焦点画像データ807に対応する焦点データを追加する。なお、多次元情報フォーマットが外部メモリに格納されている場合には、自由焦点画像生成部314が、生成した自由焦点画像データ807で、外部メモリに格納された多次元情報フォーマットを更新すればよい。
図20は、第1の実施例に係る自由焦点画像生成部314の処理を示すフローチャートである。なお、本実施例では、自由焦点画像生成部314を、撮像装置101内の一構成要素として説明しているが、自由焦点画像生成部314の機能はPC等の外部装置で実現されてもよい。すなわち、本実施例における自由焦点画像生成部314は、撮像装置の一機能としても、または独立した画像処理装置としても実現し得るものである。
ステップS2601において、自由焦点画像生成部314は、異なる合焦位置の多視点画像データ、及び、距離データを取得する。ここでは、図8(c)に示す、多視点画像データ709(画像データ701,702,703,704)、多視点画像データ709とは異なる合焦位置の多視点画像データ710(画像データ705,706,707,708)、自由焦点画像生成を行う視点の距離データ801が取得される。以下、多視点画像データ709の合焦位置を「焦点1」、多視点画像データ710の合焦位置を「焦点2」と呼ぶ。また、多視点画像データ709の画像データ701,702,703,704の視点位置を、それぞれ「視点1」、「視点2」、「視点3」、「視点4」と呼ぶ。同様に多視点画像データ710の画像データ705,706,707,708の視点位置を、それぞれ「視点1」、「視点2」、「視点3」、「視点4」と呼ぶ。また、視点n、焦点mに対応する画像を、「画像(視点n、焦点m)」と表す。
図21は、自由焦点画像データの生成処理を説明するための説明図である。ここでは、自由焦点画像生成を行う視点として、ユーザが「視点1」を選択した場合を例にする。図21(a)は、画像データ701によって表される画像、すなわち、画像(視点1、焦点1)を示す。図21(b)は、画像データ705によって表される画像、すなわち、画像(視点1、焦点2)を示す。図21(a)では、オブジェクト2701,2702に焦点が合っていて、オブジェクト2703,2704には焦点が合っていない。対して図21(b)では、オブジェクト2703,2704に焦点が合っていて、オブジェクト2701,2702には焦点が合っていない。図21(d)(e)は、生成された自由焦点画像を示す。
図8(d)(e)には、多視点画像データと、生成された自由焦点画像との被写界深度が示されている。縦軸はZ方向(距離)を示す。被写界深度2801は、画像データ701を含む多視点画像データ709の被写界深度である。両矢印の縦方向の位置及び長さは、被写界深度の位置及び範囲を示す。被写界深度2802は、画像データ705を含む多視点画像データ710の被写界深度である。被写界深度2803は、図21(c)に示される、オブジェクト2701に焦点が合った自由焦点画像の、被写界深度である。被写界深度2804は、図21(d)に示される、オブジェクト2704に焦点が合った自由焦点画像の、被写界深度である。
図20のフローチャートの説明に戻る。
ステップS2602において、自由焦点画像生成部314は、焦点を合わせる被写体を選択し、被写体までの距離を取得する。本実施例では、焦点を合わせる被写体の選択は、操作部307に入力されるユーザ操作によって行われる。例えば、図21(a)または図21(b)に示す画像のサムネイルを表示部309に表示し、ユーザが、タッチ操作等によって、サムネイルから焦点を合わせる被写体を選択するようにしてもよい。なお、ユーザ操作によらずに、顔検出などにより認識された被写体を、焦点を合わせる被写体として指定するようにしても構わない。例えば、オブジェクト2701内のピクセルが指定されたとき、自由焦点画像生成部314は、対応する視点の距離データ801からオブジェクト2701の代表的な距離値を取得する。代表的な距離値とは、指定したピクセル位置の周辺ブロック(例えば、3×3ブロック)の中央値を用いる。なお、代表的な距離値の求め方は、これに限定されず、周辺ブロックの平均値を用いる方法や、指定されたピクセル位置の距離値を用いる方法など、他の方法を用いても構わない。
図20のフローチャートの説明に戻る。
ステップS2603において、自由焦点画像生成部314は、ステップS2602で取得した被写体までの距離に基づいて、多視点画像データを選択する。
ここで、ステップS2603の処理の詳細を説明する。なお、ここでは、多視点画像データが図7(b)に示す多次元情報フォーマット(フォルダ1101)に従って、記憶媒体に格納されている場合を例にする。
まず、自由焦点画像生成部314は、フォルダ1101内の管理ファイル1102に記述された管理情報(具体的には、多視点データ1001)を参照し、視点数を取得する。
さらに、自由焦点画像生成部314は、取得した視点数に対応する視点データを取得する。例えば、視点数が4であった場合には、視点データ1002−1〜1002−4が取得される。
さらに、自由焦点画像生成部314は、各視点データの配下の焦点データの中から、被写体までの距離に対応する焦点データを取得する。本実施例では、自由焦点画像生成部314は、焦点データに記述されたカメラ内部パラメータ(例えば、絞り値や、合焦した時のAF情報)を参照し、当該カメラ内部パラメータによって示される被写界深度内に、被写体が含まれるか否かを判断する。そして、被写体が含まれると判断した場合に、自由焦点画像生成部314は、当該焦点データを、当該被写体までの距離に対応する焦点データとして取得する。
最後に、自由焦点画像生成部314は、取得した焦点データに記述された画像データへのポインタを参照して、当該画像データをフォルダ1101から読み出す。
このような処理により、例えば、ステップS2602でオブジェクト2701が指定された場合には、オブジェクト2701を含む被写界深度を有する多視点画像データが選択される。具体的には、被写界深度2803を含む被写界深度2801を有する、多視点画像データ709が選択される。また例えば、ステップS2602でオブジェクト2704が指定された場合には、オブジェクト2704を含む被写界深度を有する多視点画像データが選択される。具体的には、被写界深度2804を含む被写界深度2802を有する、多視点画像データ710が選択される。選択された多視点画像データは、ステップS2604のリフォーカス処理(合焦位置の変更処理)において利用される。
図20のフローチャートの説明に戻る。
ステップS2604において、自由焦点画像生成部314は、ステップS2603で選択した多視点画像データを用いて、リフォーカス処理を行う。本実施例のリフォーカス処理では、多視点画像をシフトさせて、ユーザが選択した被写体に焦点が合った自由焦点画像を取得する。具体的には、多視点画像データをシフト加算することにより、リフォーカス処理を行う。シフト量は、ステップS2602で取得した距離値に基づいて決定される。
シフト加算について図22を用いて説明する。図22は、シフト加算を説明するための説明図である。図22(a)に示す画像は、画像データ701によって表される画像(視点1(左視点)の画像)であり、シフト加算において基準とする画像であるとする。図22(b)に示す画像は、画像データ702によって表される画像(視点2(右視点)の画像)であり、シフト加算においてシフトする画像であるとする。ステップS2602で取得した距離値は、オブジェクト2701の視差2901に対応する。オブジェクト2701に焦点を合わせたいときには、自由焦点画像生成部314は、視点2(右視点)の画像を右方向(図22における右方向)に視差2901だけシフトさせ、シフトした視点2(右視点)の画像を基準となる視点1の画像に加算する。なお、「画像を加算する」等の表現を用いるが、具体的には、画像を表す画像データ(画素値)を加算することである。視差2901が逆方向である場合には、視点2(右視点)の画像を左方向(図22における左方向)に視差2901だけシフトさせればよい。自由焦点画像生成部314は、視点1の画像を基準とし、他の視点(視点3、視点4)の画像をシフトする画像として、同様の処理を行う。このように、基準となる画像データ701と、シフトした3つの画像データ702,703,704とを統合することで、オブジェクト2701に焦点が合った自由焦点画像データ807が生成される。
ステップS2602でオブジェクト2701が指定された場合には、ステップS2604で生成される自由焦点画像データ807によって表される画像(図21(c)に示す画像)は、オブジェクト2701にのみ焦点が合っていて、オブジェクト2702,2703,2704には焦点が合っていない画像となる。また、当該画像の被写界深度(図8(d)に示す被写界深度2803)の範囲は、図8(d)に示されるように、多視点画像データ709の被写界深度2801の範囲よりも狭い。つまり、当該画像は、多視点画像データ709によって表される画像よりも浅い被写界深度の画像となる。
また、ステップS2602でオブジェクト2704が指定された場合には、ステップS2604で生成される自由焦点画像データ807によって表される画像(図21(d)に示す画像)は、オブジェクト2704にのみ焦点が合っていて、オブジェクト2701,2702,2703には焦点が合っていない画像となる。当該画像の被写界深度(図8(e)に示す被写界深度2804)の範囲は、図8(e)に示されるように、多視点画像データ710の被写界深度2802の範囲よりも狭い。つまり、当該画像は、多視点画像データ710によって表される画像よりも浅い被写界深度の画像となる。
ステップS2605において、自由焦点画像生成部314は、生成した自由焦点画像データ807を出力する。
以上に説明したように、本実施例では、データ記録装置(図5に示す符号化部313や付加情報生成部316や自由視点画像生成部315や自由焦点画像生成部314に相当)が、複数の合焦位置の画像データ、複数の視点位置の画像データ、距離データ、領域分割データを関連付けて、所定のフォーマットに従って記憶媒体に記録する。それにより、多眼カメラやプレノプティックカメラで撮像した画像データをより多くの用途に利用することが可能となる。例えば、それらの画像データを、撮像後に視点位置を変更するような画像処理に利用することができる。また例えば、撮像後に合焦位置を調整したり、被写界深度を制御したりするようなリフォーカス処理に利用することができる。
さらに、本実施例では、自由焦点画像生成部314および自由視点画像生成部315が生成した画像データを、多次元情報フォーマットに格納する。よって、本発明による多次元情報フォーマットを利用することにより、画像処理において、撮像画像データだけでなく、撮像画像データから生成した画像データを用いることが可能となる。
さらに、本実施例におけるフォーマットを用いることにより、画像データ、距離データ、領域分割データが関連付けて記録されるので、それらのデータに対するアクセスがしやすくなる。すなわち、それらのデータを利用した画像処理をより迅速に行うことが可能となる。
[実施例2]
第1の実施例では、自由焦点画像生成に、基準視点の距離データを利用する。つまり第1の実施例では、リフォーカス処理のシフト量に距離データを利用する。本実施例では、自由焦点画像生成に、基準視点の距離データ、及び、領域分割データを利用する。それにより、オブジェクト単位に焦点を合わせるリフォーカス処理を実現する。以下、第1の実施例と共通する部分については説明を省略し、差異点である自由焦点画像生成部314における処理を中心に説明する。
本実施例の自由焦点画像生成部314は、合焦位置が異なる多視点画像データ、自由焦点画像生成を行う視点の距離データに加えて、さらに領域分割データを入力する。
本実施例の自由焦点画像生成部314は、第1の実施例と同様であって、入力された多視点画像データとは異なる合焦位置の自由焦点画像データ807を生成して出力する。出力されたデジタルデータは、バス303を介して符号化部313において多次元情報フォーマットに格納される。図23は、第2の実施例に係る自由焦点画像生成部314が入出力するデータを模式的に示す説明図である。
図24は、第2の実施例に係る自由焦点画像生成部314の処理を示すフローチャートである。ここでは、自由焦点画像生成を行う視点として、ユーザが「視点1」を選択した場合を例にする。
ステップS3101において、自由焦点画像生成部314は、異なる合焦位置の多視点画像データ、距離データ、及び領域分割データを取得する。図23に示すように、ここでは、図8(c)に示す、多視点画像データ709、多視点画像データ709とは異なる合焦位置の多視点画像データ710、及び、自由焦点画像生成を行う視点の距離データ801に加えて、領域分割データ802が入力される。
ステップS3102において、自由焦点画像生成部314は、焦点を合わせる領域(対象領域)と、対象領域における被写体までの距離を取得する。本実施例では、焦点を合わせる対象領域の選択は、操作部307に入力されるユーザ操作によって行われるものとする。例えば、図21(a)または図21(b)に示す画像のサムネイルを表示部309に表示し、ユーザがタッチ操作等によって、サムネイルから焦点を合わせる対象領域を選択するようにしてもよい。なお、ユーザ操作によらずに、顔検出などにより認識された対象領域を、焦点を合わせる領域として指定しても構わない。例えば、対象領域として図21に示すオブジェクト2701が選択されたとき、自由焦点画像生成部314は、距離データ801から対象領域の各画素の距離値を取得する。また対象領域としてオブジェクト2704が選択されたとき、自由焦点画像生成部314は、距離データ801から対象領域の各画素の距離値を取得する。
図24のフローチャートの説明に戻る。
ステップS3103において、自由焦点画像生成部314は、ステップS3102で選択した対象領域における被写体までの距離に基づいて、多視点画像データを選択する。なお、ステップS3103における多視点画像データの選択処理は、ステップS2603の処理と同様であるため、詳細な説明は省略する。選択された多視点画像データは、ステップS3104のリフォーカス処理(合焦位置の変更処理)において利用される。ステップS3102でオブジェクト2701が指定された場合には、オブジェクト2701を含む被写界深度(図8(d)に示す例では、被写界深度2801)を有する多視点画像データ709が選択される。また、ステップS3102でオブジェクト2704が指定された場合には、オブジェクト2704を含む被写界深度(図8(e)に示す例では、被写界深度2802)を有する多視点画像データ710が選択される。
図24のフローチャートの説明に戻る。
ステップS3104において、自由焦点画像生成部314は、ステップS3103で選択した多視点画像データを用いて、リフォーカス処理を行う。本実施例のリフォーカス処理では、多視点画像データをシフトさせて、ユーザが選択した対象領域(オブジェクト)に焦点が合った自由焦点画像を取得する。具体的には、多視点画像データをシフト加算することにより、リフォーカス処理を行う。このときシフト量は、ステップS3102で取得した対象領域の距離値に基づいて決定される。
シフト加算について図22、及び、図25を用いて説明する。図25は、第2の実施例に係るシフト加算を説明するための説明図である。図25(a)に示す画像は、図22(a)に示す画像と同様に、画像データ701によって表される画像(視点1(左視点)の画像)であり、シフト加算において基準とする画像であるとする。図25(b)に示す画像は、図22(b)に示す画像と同様に、画像データ702によって表される画像(視点2(右視点)の画像)であり、シフト加算においてシフトする画像とする。ステップS3102で取得した距離値のうち、オブジェクト2701の鼻の領域における距離値は、視差3201に対応する。
ここで視差2901と視差3201とが異なる視差量を有しているとき、第1の実施例におけるリフォーカス処理方法では、視差2901に基づいてシフト加算したときには、オブジェクト2701の目に焦点が合い、オブジェクト2701の鼻には焦点が合わなくなる。また視差3201に基づいてシフト加算したときには、オブジェクト2701の鼻に焦点が合い、オブジェクト2701の目には焦点が合わない。
つまり、オブジェクト2701全体に焦点を合わせたいとき、シフト量を変化させて加算する必要がある。オブジェクト2701に焦点を合わせたいとき、視点2(右視点)の画像を右方向(図25における右方向)に、目の領域では視差2901だけ、鼻の領域では視差3201だけシフトさせ、基準となる視点1の画像に加算する。視差が逆方向である場合には、視点2(右視点)の画像を左方向(図25における左方向)に、目の領域では視差2901だけ、鼻の領域では視差3201だけシフトさせればよい。オブジェクト2701以外の領域に関しては、代表する視差だけシフトする。例えば、目の領域の視差2901だけシフトする。
自由焦点画像生成部314は、視点1の画像を基準とし、他の視点(視点3、視点4)の画像をシフトする画像として、同様の処理を行う。このように、基準となる画像データ701と、シフトした3つの画像データ702,703,704)と統合することで、オブジェクト2701に焦点が合った自由焦点画像データ807が生成される。
以降の処理は、第1の実施例と同様である。
なお、本実施例では、説明を簡単にするため、リフォーカス処理において、オブジェクト2701内の目と鼻の領域のシフト量を変化させているが、実際には、オブジェクト2701内の目と鼻以外の領域についても同様に、シフト量を変化させたリフォーカス処理が行われる。
以上のように、本実施例では、撮像後の自由焦点画像生成において、基準視点の距離データだけでなく、基準視点の領域分割データを用いた、リフォーカス処理を行う。それにより、第1の実施例と同様の効果を得られるだけでなく、多眼カメラやプレノプティックカメラで撮像した画像データに対して、ユーザが指定したオブジェクトに適切に焦点を合わせることが可能となる。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。