(58)【調査した分野】(Int.Cl.,DB名)
前記特徴から奥行きへのマッピング関数が、第1の色値を有する前記第2の3次元画像の複数のピクセルを奥行き値に関連付ける請求項15に記載の非一時的な機械可読記憶媒体。
【発明を実施するための形態】
【0008】
2次元(2D)入力画像に対して奥行きマップを生成するための実装形態が説明される。奥行きマップは、2次元の入力画像を3次元(3D)の出力画像に変換するのに用いられ得る。2Dの入力画像はユーザによって与えられてよく、または利用可能な画像のデータベースから選択されてもよい。本明細書で説明される画像コンバータは、3Dの画像を記憶している別のデータベースにアクセスしてもよい。これらの3Dの画像は、初めから3Dで取り込まれたものでも、あらかじめ2Dから3Dに変換されたものでもよい。画像コンバータは、2Dの入力画像に視覚的に類似した3Dの例画像をデータベースから識別することができる。視覚的に類似した画像は、2Dの入力画像と、類似した色、類似した対象、類似した位置に取り込まれてよいことなどの複数の特徴を共有し得る。本明細書には、説明を明確にするための例として、特に画像に関連した詳細を提供するが、そのような詳細は、たとえば映像、ドキュメント、テキスト(たとえばツイート)、フラッシュコンテンツなどといった他のタイプの媒体にも同様に適宜、適用可能であり得ることを理解されたい。
【0009】
視覚的に類似した例画像が3D画像であるので、画像に関する奥行き情報が知られ得る。奥行き情報が分かっていないか、または容易に利用可能でない場合、奥行き補間技術を用いて計算してよい。奥行き情報は、奥行きマップの形で記憶されてよい。奥行きマップは、画像に対して3Dの効果を与えるのに用いられる3Dの例画像の各ピクセルに関する奥行き値を含むことができる。奥行きマップは、3Dの例画像に関連しているので、2Dの入力画像に直接関連付けられることにはならない。したがって、奥行きマップは、2Dの入力画像に関して近似の奥行きマップと称されてもよい。しかし、3Dの例画像が視覚的に2Dの入力画像に似ているので、近似の奥行きマップは、2Dの入力画像に対して最終的な奥行きマップを生成するための優れた起点になり得る。
【0010】
一実装形態では、画像コンバータは、3Dの例画像および近似の奥行きマップを用いて、3Dの例画像の各ピクセルまたはピクセルのグループの色などの特徴値を、奥行き値に関係付ける、特徴から奥行きへのマッピング関数を生成することができる。画像コンバータは、2Dの入力画像の各ピクセルの奥行き値を生成するために、この関数を2Dの入力画像の既知の特徴値に対して適用することができる。これらの奥行き値は、2Dの入力画像に対する最終的な奥行きマップを形成することができる。画像コンバータは、最終的な奥行きマップを用いて、2Dの入力画像に基づいて3Dの出力画像を描画することができる。したがって、2Dの入力画像は、3Dの出力画像に効率的に変換され得る。
【0011】
本明細書で説明される変換技法の実装形態は、2Dのビジュアルコンテンツの3Dへの全自動の変換を提供するものである。これによって、個人が、高価で時間集約的な、3D画像を取り込む処理、または既存の2Dの画像を手動で3Dに変換する処理を回避することが可能になり得る。視覚的に入力画像に似ている画像に対応する、特徴から奥行きへのマッピング関数を用いると、画像の奥行き値のより正確な予測が可能になる。また、これは、3Dの出力画像のより正確でより現実的な描画をもたらすことができる。それに加えて、比較のために画像の大きなデータベースを利用すると、視覚的に類似した1つまたは複数の画像が見いだされる可能性が高まり、多くのタイプのビジュアルコンテンツの変換が容易になる。一実装形態では、比較用に非常に多くの画像が利用可能である。
【0012】
図1は、本開示の態様が実施され得る例示的ネットワークアーキテクチャを示すブロック図である。ネットワークアーキテクチャ100は、一実装形態により、1つまたは複数のネットワーク140を通じて1つまたは複数のユーザ装置130、132、134と通信する1つまたは複数のサーバ102を含むことができる。ネットワーク140は、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、電話回線網、移動体通信ネットワーク、インターネットなどの広域ネットワーク(WAN)または類似の通信システムであり得る。ユーザ装置130、132、134は、サーバコンピュータ、ゲートウェイコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、移動体通信装置、携帯電話、スマートフォン、ハンドヘルドコンピュータ、タブレットまたは類似のコンピュータ装置を含む任意のタイプのコンピュータ装置であり得る。ユーザ装置130、132、134は、画像、映像などのビジュアルコンテンツを見ることができるように種々の機能を伴って様々に構成され得る。
【0013】
サーバ102は、ネットワークアクセス可能なサーバベースの機能、種々のデータ格納、および/または他のデータ処理機器を含むことができる。サーバ102は、単一のマシンまたはマシンのクラスタによって実装することができる。サーバ102は、たとえば
図9のコンピュータシステム900を含むことができる。一実装形態では、サーバ102は画像コンバータ110および記憶装置120を含む。別の実装形態では、記憶装置120はサーバ102の外部にあってよく、ネットワークまたは他の接続によってサーバ102に接続されてよい。他の実装形態では、サーバ102は、異なる構成要素および/または追加の構成要素を含むことができるが、本開示が不明瞭にならないように、ここでは示されていない。記憶装置120が含むことができる1つまたは複数の大容量記憶装置には、たとえばフラッシュメモリ、磁気ディスクもしくは光ディスク、テープ駆動装置、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラム可能メモリ(たとえばEPROMおよびEEPROM)、フラッシュメモリ、または任意の他のタイプの記憶媒体が含まれ得る。
【0014】
一実装形態では、記憶装置120は、複数の3Dの画像ならびに複数の2Dの画像または映像を含んでいる画像データ格納を含む。少なくとも2Dまたは3Dの画像のうちのいくつかについては、関連する奥行きマップも記憶装置120に記憶されてよい。一実装形態では、奥行きマップは、画像の各ピクセル(またはピクセルの各グループ)の奥行き値を含む。別の実装形態では、3Dの画像のそれぞれに対して特徴から奥行きへの所定のマッピング関数を含んでいる特徴から奥行きへのマッピングデータベースが与えられ、記憶装置120に記憶され得る。
【0015】
画像コンバータ110は、2Dの入力画像を3Dの出力画像に変換するユーザ要求を受け取ることができる。変換すべき2Dの入力画像は、ユーザまたはコンピュータのアプリケーションプログラムによって以前に提供されて記憶装置120に記憶されている画像、またはユーザによって要求とともに提供された画像であり得る。画像コンバータ110は、変換されている2Dの画像に対して視覚的に似ている3Dの1つまたは複数の例画像、および例画像に関連した近似の奥行きマップを識別することができる。例示的な類似画像および関連した近似の奥行きマップは記憶装置120に記憶され得る。視覚的に類似した3Dの例画像は、その例画像が2Dの入力画像と共有する、類似した色、対象、位置、コンテキストなどの特徴によって識別されてよい。近似の奥行きマップは、画像に対して3Dの効果を与えるのに用いられる3Dの例画像の各ピクセル(またはピクセルのグループ)に関する奥行き値を含むことができる。別の実装形態では、近似の奥行きマップは、3Dの例画像に関連付けられるのではなく、ユーザまたは画像コンバータ110によって、2Dの入力画像を3Dに変換するのに用いられる利用可能な奥行きマップの選択肢から選択されてもよい。以下で説明されるように、画像コンバータ110は、近似の奥行きマップを用いて、2Dの入力画像を3Dの出力画像に自動的に変換することができる。
【0016】
図2Aは、本開示の一実装形態により、例示的な類似画像と関連した近似の奥行きマップを用いて奥行きマップを生成する画像コンバータを示すブロック図である。一実装形態では、画像コンバータ110は、特徴処理モジュール212、特徴から奥行きへのマッピングモジュール214、奥行きマップ生成モジュール216および画像描画モジュール218を含むことができる。モジュールのこの構成は論理的分離であってよく、他の実装形態では、これらのモジュールまたは他の構成要素は、特定の実装形態によって、互いに結合しても、さらなる構成要素へと分離されてもよい。一実装形態では、記憶装置120は、画像コンバータ110によって2Dから3Dへのより正確な変換のために用いられる、画像データ格納222および特徴から奥行きへのマッピングデータベース224を含むことができる。
【0017】
画像コンバータ110は、3Dの出力画像に変換すべき、2Dの入力画像を(たとえばユーザまたはコンピュータのアプリケーションプログラムから)受け取ることができ、データ格納222の中の例示的な類似画像および関連する近似の奥行きマップを見いだすことができる。一実装形態では、データ格納222からの画像を、変換されている入力画像に似ているものと見なすために、入力画像とデータ格納222からの画像の間で共有されなければならない複数の特徴または特性などの閾値が定義される。一旦、類似画像が識別されると、類似画像と関連した近似の奥行きマップを用いて、3Dの類似画像用の特徴から奥行きへのマッピング関数が求められる。別の実装形態では、3Dの類似画像用の特徴から奥行きへのマッピング関数が前もって求められて、特徴から奥行きへのマッピングデータベース224に記憶されてよい。
【0018】
一実装形態では、特徴から奥行きへのマッピング関数は、特徴処理モジュール212および特徴から奥行きへのマッピングモジュール214によって求められる。詳細には、一実装形態では、見られたとき奥行きの錯視を生成する立体画像対が、画像データ格納222の各3D画像(または3D映像のフレーム)に含まれているかまたは関連付けられている。一般に、画像対は、(人の眼の間の距離とほぼ等しい)わずかに異なる視点から得られた、同一の対象の2つの画像(たとえば左画像と右画像)を含む。したがって、2つの画像の各ポイントは、視点からポイントへの距離に比例する(ピクセルで測定された)わずかなオフセットを有することになる。このオフセットは視差と称され得る。一実装形態では、3Dの例画像と関連した近似の奥行きマップの中の各ピクセルの奥行き値は、計算された視差に対して等しいかまたは比例するものである。
【0019】
3Dの例画像用の特徴から奥行きへのマッピング関数を生成するために、3Dの例画像の特徴が、近似の奥行きマップの中の奥行き値に関連付けられてよい。一実装形態では、特徴処理モジュール212は、画像データ格納222から3Dの例画像の1つまたは複数の特徴を識別することができる。一実装形態では、特徴は、例画像の各ピクセルの色値を含んでよい。他の実装形態では、運動(または関連する運動ベクトル)、位置、テクスチャ、エッジ、またはスケールが不変の特徴変換(SIFT)などの画像の特徴に基づく傾斜ヒストグラムなどの他のいくつかの特徴が用いられてよい。本明細書で説明される特徴から奥行きへのマッピングは、これらまたは他の特徴のうちの任意のものとともに用いられてよい。
【0020】
一実装形態では、特徴処理モジュール212は、色空間(たとえばYUV、RGB、YCbCr)における複数のビンを求めることができる。考慮に入れる色数を減らすためにビニングが用いられてよい。YUVは、たとえば24ビットの色値を有することがあり、これは、一般的な特徴から奥行きへのマッピング関数にとって大きすぎる可能性がある。したがって、特徴処理モジュール212は、別々の色値を結合して、扱いやすい数のビンを得ることができる。画像データ格納222からの例画像については、特徴処理モジュール212は、ピクセルの色値に基づいて、各ピクセルを適切なビンと関連付けることができる。特徴処理モジュール212は、近似の奥行きマップを用いて、特定のビンの各ピクセルの奥行き値を結合して(たとえば平均をとって)、そのビンに関する集合的な奥行き値を生成することもできる。一連のデータポイントが取得されるまで、残りのビンのそれぞれにおいて、色に関して類似の結合を遂行してよい。
【0021】
特徴から奥行きへのマッピングモジュール214は、画像の1つまたは複数の特徴と特徴処理モジュール212が求めた奥行き値とに基づいて、例画像に関する特徴から奥行きへのマッピング関数を生成することができる。一実装形態では、関数を生成するのに用いられる特徴は色でよい。例画像の各ピクセルは、(たとえば画像のメタデータから求められた)既知の色値を有し、特徴処理モジュール212によって各色ビンについて求められた奥行き値を有してもよい。特徴から奥行きへのマッピング関数は、同一または類似の色を有する画像の対象は同一または類似の奥行き値も有するという仮定に基づいて、同一色または類似色のピクセルに関する奥行き値を凝集することができる。他の実装形態では、特徴から奥行きへのマッピング関数を生成するのに、色の代わりに、または色に加えて、テクスチャ、位置、形状などの他の特徴が用いられてもよい。もたらされる関数は、入力として、最終的に特定のピクセルまたは他のポイントに関する色値(または他の特徴値)を受け取って、そのピクセルに関する奥行き値を出力することができる。特徴から奥行きへのマッピング関数のさらなる詳細が、
図4に関して以下で説明される。
【0022】
一実装形態では、特徴から奥行きへのマッピングモジュール214は、3Dの例画像に対して特徴から奥行きへのマッピング関数を1つだけ生成するのではなく、画像データ格納222の中の単一の例画像に対して複数の特徴から奥行きへのマッピング関数を生成することができる。たとえば画像の別々の領域に対して別々の関数が生成されてもよい。一実装形態では、画像データ格納222からの画像は、論理的に(たとえば2つ、4つといった)複数の領域に分割されてよい。画像は、画像の主要な空間的変化の分布に依拠して、種々のやり方でタイル表示することができる。たとえば、屋外の山と空の画像については、画像を2つの部分、上半分と下半分の画像に水平に分割すれば十分なことがある。屋内の画像については、より多くの空間的構成要素を有する方がより優れていることがあり得、その場合、左半分の画像対右半分の画像が異なる奥行きマッピングを有してもよい。
図2Bは、4つの等しい領域252〜258に論理的に分割された例画像250を示す図である。特徴から奥行きへのマッピングモジュール214は、各領域252〜258をそれ自体の個々の画像として扱い、上記で説明されたやり方で、その領域に特有の特徴から奥行きへのマッピング関数を求めることができる。一実装形態では、特徴から奥行きへのマッピングモジュール214は、データベース224の画像の領域に対応する複数の関数を記憶することができる。別の実装形態では、複数の関数が、(たとえば、ピクセルPから各領域C1〜C4の中心への距離に基づく一次結合を用いて)たとえばデータベース224に記憶される単一の関数へと結合されてよい。この一次結合により、種々の領域にわたって特徴から奥行きへのマッピング関数を切り換えることによって生成される「境界効果」が解消され得る。2Dの入力画像に対して特徴から奥行きへのマッピングを適用するとき、最終的な奥行き値は、別々の領域間の補間でよい。ピクセルPに関する奥行き値を計算するとき、領域の中心C1〜C4への距離が最初に計算され、d1、d2、d3およびd4として示されてよい。領域252の特徴から奥行きへのマッピングで、ピクセルPに対する奥行き値v1が与えられる。同様に、他の領域254〜258からの、特徴から奥行きへのマッピングで、v2、v3およびv4が得られる。Pの最終的な奥行き値は、
d1〜d4に反比例するv1〜v4を結合することによって計算されてよく、たとえば次式となる。Pの奥行き=(v1/d1+v2/d2+v3/d3+v4/d4)/(1/d1+1/d2+1/d3+1/d4)
【0023】
特徴から奥行きへのマッピング関数の生成が完了すると、画像データ格納222からの画像に関する特徴から奥行きへのマッピング関数は、特徴から奥行きへのマッピングのデータベース224の対応するエントリに記憶され得る。一実装形態では、特徴から奥行きへのマッピングデータベース224は、データベースに加えていくつかの他の構造(たとえばキーと値の対のリスト)を有することができる。一実装形態では、特徴から奥行きへのマッピングデータベース224は、(示されたように)個別のデータ構造であり得るが、他の実装形態では、マッピング情報が、画像データ格納222のメタデータに記憶されてもよい。画像コンバータ110は、2Dの入力画像から3Dの出力画像を自動的に生成するのに、特徴から奥行きへのマッピングデータベース224を用いることができる。
【0024】
一実装形態では、奥行きマップ生成モジュール216は、特徴から奥行きへのマッピングモジュール214が求めた特徴から奥行きへのマッピング関数に基づいて、2Dの入力画像に関する奥行きマップを計算することができる。画像データおよび/または入力画像とともに受け取られたメタデータは、たとえば、入力画像の各ピクセルと関連した色値を含んでよい。次いで、3Dの例画像および近似の奥行きマップに基づいて生成された特徴から奥行きへのマッピング関数に対する入力として色値(または他の適切な特徴値)を適用することにより、各ピクセルに対して奥行き値を計算することができる。奥行きマップ生成モジュール216は、この割出しのための計算を遂行することができ、もたらされる奥行き値(たとえば最終的な奥行きマップ)を記憶装置120に記憶することができる。結果として生じる奥行きマップ510の一例が
図5に示されている。
【0025】
画像描画モジュール218は、入力画像および奥行きマップ生成モジュール216が計算した奥行き値に基づいて3Dの出力画像(すなわち立体画像の対)を描画することができる。一実装形態では、描画モジュール218は、奥行き画像ベースの描画(DIBR)技法を用いて3D画像を生成する。DIBR技法は、別の2Dの画像およびピクセルごとの奥行きマップに基づいて2Dの画像を描画することができる。元の2Dの画像が、3Dの画像を構成する2つの視野のうちの1つになり、DIBRで描画された2D画像は第2の視野になる。一実装形態では、元の2Dの画像が左の視野であり、描画された2D画像が右の視野である。他の実装形態では、これが反対になってもよい。
【0026】
一例として、ピクセルごとの奥行きマップを仮定すると、それぞれピクセルが左の視野から右視野へどれだけ移動しなければならないかを示す変位マップが生成されてよい。奥行きと変位の間の関係は、ほぼ直線状であり得るが、対象が画面から「出てくる」量または画面の背後に広がって見える量を制御するために、いくつかのパラメータが調節されてもよい。一旦、変位マップが生成されると、右視野を描画するために、ピクセルが左の視野から右の視野へシフトされてよいが、同時に、左の視野マップからの複数のピクセルが、右の同じピクセルへ画像空間を描画する場合、前方にあるピクセルが後部のピクセルを遮るようにする。一旦、すべてのピクセルがシフトされると、描画された右視野の中に、まだいくつかのホールが残されている可能性がある。描画された画像の近接したピクセルからホールを満たすために、塗り直し(画像補間)技法が採用されてよい。これによって、最終的な描画された右視野がもたらされる。高品質描画を生成するために、左の視野およびピクセルごとの奥行きマップに基づいて補間することにより、中間の、より高い解像度のピクセルグリッドで描画されてよい。一旦、描画された画像が、より高い中間解像度で取得されると、これを所望の解像度へ低下させる(scale back)ことができる。一実装形態では、描画された画像は、たとえばクロスバイラテラルフィルタリングを用いてフィルタリングされてよい。クロスバイラテラルフィルタリングは、画像内の対象の寸法形状に関して画像をフィルタリングするやり方である。たとえば、画像がフィルタリングされるとき、エイリアシング、ノイズ、および他の望ましくない特徴を除去するために、ピクセル値が、ピクセルの近隣からの値と結合されることがある。これによって、場合によっては画像内の同一の対象に属さない値の平均をとることになり、したがって、つじつまの合わない値をもたらす可能性がある。クロスバイラテラルフィルタリングは、対象を識別しやすくするために(1つだけでなく)複数のソース画像を用いることにより、これを解決しようとするものである。結果として、フィルタリングするとき、両方のピクセルが同一の対象に属するかどうか判断するために、近隣のピクセル値がそれらのスクリーンスペース距離によって重み付けされてよく、また、奥行きの差を考慮に入れた式を用いることによって重み付けされてもよい。これは、もたらされるフィルタリングされた画像のぶれを防止するのに役立ち得る。
【0027】
図3は、本開示の一実装形態による画像変換処理の流れを示すブロック図である。種々のモジュールおよび構成要素が、例示的な類似画像に関連した近似の奥行きマップを用いる、入力画像の奥行きマップの生成におけるそれらの役割に関して説明され得る。
【0028】
一実装形態では、処理の流れ300は、ブロック310で2Dの入力画像を受け取ることから始まる。ブロック320で、例示的な類似画像が識別される。ブロック322で、近似の奥行きマップが識別される。近似の奥行きマップは、例示的な類似画像に関連付けられても、他のいくつかの視覚的に類似した画像に関連付けられてもよい。ブロック330で、この例画像について、特徴から奥行きへのマッピング関数が求められる。特徴から奥行きへのマッピングモジュール214は、例示的な類似画像320の特徴と近似の奥行きマップ322とに基づいて、例示的な類似画像に関する特徴から奥行きへのマッピング関数を求めることができる。ブロック340で、特徴から奥行きへのマッピング関数に基づいて、入力画像に関する奥行きマップが生成される。奥行きマップ生成モジュール216は、奥行き値を求めるために、特徴から奥行きへのマッピング関数に対して入力画像の各ピクセルに関する特徴値(たとえば色)を適用することにより、奥行きマップを生成することができる。ブロック350で、3Dの出力画像360を生成するのに、描画技法(たとえばDIBR)とともに奥行きマップが用いられてよい。
【0029】
説明を簡単にするために、本開示の流れおよび方法は、一連の動作として描かれかつ記述される。しかし、本開示による動作は、種々の順序で、かつ/または同時に生じる可能性があり、また、本明細書で示されたり説明されたりすることのない他の動作とともに生じる可能性もある。たとえば、例示的な類似画像と関連した、ブロック322における近似の奥行きマップの識別、およびブロック330における特徴から奥行きへのマッピングは、入力画像がブロック310で受け取られてたとえば記憶装置120に記憶される前に生じる可能性がある。一旦、ブロック320で、例示的な類似画像が識別されると、あらかじめ処理された近似の奥行きマップおよび特徴から奥行きへのマッピング関数が取得され得て、ブロック340で奥行きマップを生成するのに用いられ得る。
【0030】
図4は、本開示の一実装形態による、特徴から奥行きへのマッピング関数を示す図である。この実装形態では、特徴から奥行きへのマッピング関数400は、画像の各ピクセルの色に基づくものである。関数400は、入力として、特定のピクセルまたは他のポイントに関する色値を受け取って、そのピクセルに関する奥行き値を出力することができる。
図4は、理解を容易にするために、奥行きを色の関数として1次元で示すものである。当業者なら、実際には、この関数が、多次元の色空間(たとえばYUV、RGB)における類似の特性を示し得ることを理解するであろう。一実装形態では、関数が配慮する色数を減少させるためにビニングが用いられる。YUVは、たとえば24ビットの色値を有することがあり、これは、一般的な特徴から奥行きへのマッピング関数に望まれるものより大きい可能性がある。場合によっては、24ビットの色方式で表される1600万を上回る種々の色により、色から奥行きへのマッピング関数の計算コストおよび消費時間が大きくなりすぎることがある。
図4では色値が8つのビン(A〜H)へと減少されているが、他の実装形態では、他のいくつかの数が用いられてもよい。画像データ格納222の画像のうち、色値および奥行き値が既知である1つの画像に関して、特定のビン(たとえばビンA)の色のうちの1つを有する各ピクセルに対応する奥行き値が結合されて(たとえば平均されて)、凝集された奥行き値を生成する。この値は、関数400の一部分として記憶されてよい。一連のデータポイントが取得されるまで、残りのビンのそれぞれにおいて、色に関して類似の結合を遂行してよい。特徴から奥行きへのマッピングモジュール214は、特徴から奥行きへのマッピング関数400を生成するために、多項式適合の一形態(たとえば曲線当てはめ)を遂行することができる。もたらされる関数は、f(color)=depthと表現されてよく、またはYUV色の場合、f(YUV)=depthと表現されてよい。したがって、所与のピクセルに関する奥行き値は、そのピクセルに関するYUV色値の関数として計算することができる。関数400は、特徴から奥行きへのマッピングデータベース224に記憶されてよい。
【0031】
図5は、本開示の実装形態によって計算された奥行きマップを示す図である。奥行きマップ生成モジュール216は、特徴から奥行きへのマッピングモジュール214が求めた特徴から奥行きへのマッピング関数400などの特徴から奥行きへのマッピング関数に基づいて、入力画像に関する奥行きマップを計算することができる。
図5の奥行きマップ510では、シェーディングは、ソース画像500の視点からのシーンオブジェクトの表面の距離に比例する。この実装形態では、より暗い色は、視点により近い奥行きを示し、より明るい色は、より離れた奥行きを示している。他の実装形態では、シェーディングは反対にされてもよい。
【0032】
図6は、本開示の一実装形態による画像変換のための方法を示す流れ図である。方法600は、ハードウェア(たとえば回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(たとえばハードウェアシミュレーションを遂行するために処理装置上で実行される命令)、またはその組合せを含んでいる処理ロジックによって遂行されてよい。方法600は、1つまたは複数の例示的な類似画像と関連した近似の奥行きマップを用いて、入力画像に関する奥行きマップを生成することができる。一実装形態では、方法600は、
図1に示されるような画像コンバータ110によって遂行されてよい。
【0033】
図6を参照して、方法600は、ブロック610で、3Dに変換するための2Dの入力画像を受け取る。入力画像は、(たとえば画像コンバータ110によって提供されるユーザインターフェースによって)ユーザから、(たとえばAPIなどのアプリケーションインターフェースによって)別のコンピュータアプリケーションプログラムから、または他のいくつかのソースから受け取られてよい。
【0034】
方法600は、ブロック620で、類似の3Dの画像と関連した近似の奥行きマップに基づいて、(たとえば計算するかまたは記憶装置から取得することにより)入力画像に関する特徴から奥行きへのマッピング関数を識別する。一実装形態では、特徴から奥行きへのマッピングモジュール214は、同一または類似の色を有する画像内の対象は同一または類似の奥行き値も有するという仮定に基づいて、例示的な類似画像の(たとえば色といった)同一の特徴または類似の特徴のピクセルに関する奥行き値を凝集することができる。関数400などのもたらされる関数は、入力として、最終的に、入力画像の特定のピクセルまたは他のポイントに関する色値(または他の特徴値)を受け取って、そのピクセルに関する奥行き値を出力することができる。特徴から奥行きへのマッピング関数は、たとえばデータベース224に記憶されてよい。
【0035】
方法600は、ブロック630で、ブロック620で識別された特徴から奥行きへのマッピング関数を、入力画像のピクセルに対して適用して、各ピクセルに関する奥行き値を求める。奥行きマップ生成モジュール216は、入力画像に関して結果として生じる奥行きマップを生成することができる。一実装形態では、奥行きマップ生成モジュール216は、ブロック620で生成された特徴から奥行きへのマッピング関数に対して色値(または他の適切な特徴値)を入力として適用することができる。これにより、入力画像の各ピクセルに関する奥行き値が計算される。これらの奥行き値が、関連するピクセルの位置に基づいて結合されて、
図5に示されるような奥行きマップ510を形成する。
【0036】
方法600は、ブロック640で、3Dの出力画像に関する二枚一組の立体画像(stereo pair)を生成する。一実装形態では、画像描画モジュール218は、入力画像、およびブロック630で奥行きマップ生成モジュール216が計算した奥行き値に基づいて3Dの出力画像を描画することができる。一実装形態では、描画モジュール218は、奥行き画像に基づく描画(DIBR)技法を用いて、3Dの画像を生成することができる。一実装形態では、3Dの出力画像は、二枚一組の立体画像を形成するために入力画像と併せて用いられる第2の画像を含む。第2の画像は、実装形態に依拠して、左画像または右画像のいずれでもよく、画像描画モジュール218によって生成され得る。第1の画像と第2の画像は、一緒に3Dの出力画像を形成し得る。3Dの出力画像は、記憶されても、ユーザによる目視のために表示されてもよい。
【0037】
図7は、本開示の一実装形態によって特徴から奥行きへのマッピング関数を計算するための方法を示す流れ図である。方法700は、ハードウェア(たとえば回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(たとえばハードウェアシミュレーションを遂行するために処理装置上で実行される命令)、またはその組合せを含んでいる処理ロジックによって遂行されてよい。方法700は、平面ビジュアルコンテンツを立体3Dに変換するために用いられる特徴から奥行きへのマッピング関数を生成することができる。一実装形態では、方法700は、
図1に示されるような画像コンバータ110によって遂行されてよい。
【0038】
図7を参照して、方法700は、ブロック710で、画像データ格納222から1つまたは複数の視覚的に類似した画像を識別する。一実装形態では、データ格納222は、特徴の情報(たとえば色)および奥行き値が既知の3Dの画像および/または映像のコーパスを含んでよい。一実装形態では、コーパスは、何百万もの画像および/または映像を含んでいる。指絞法、K最近傍法などの任意数の技法が、視覚的に類似した画像を識別するのに用いられてよい。ブロック720で、方法700は、所与の色空間に対して用いられる複数のビンを識別する。考慮に入れる色数を減らすためにビニングが用いられてよい。色空間がYCbCrである一実装形態では、空間は、Y、CbおよびCrのビンに独立して分割されてよい。一実装形態では、Y成分は32個のビンに分割され、CbおよびCrの成分はそれぞれ16個のビンに分割され、その結果、合計8192個のビンが存在する。他の実装形態では、他の数のビンおよび/または他の色空間が用いられてよい。
【0039】
方法700は、ブロック730で、ブロック710において識別された例示的な類似画像のピクセルを、ブロック720で識別されたビンと関連付ける。画像データ格納222からの例画像については、特徴処理モジュール212は、ピクセルの色値に基づいて、各ピクセルを適切なビンと関連付けることができる。各ビンは、同一色もしくは類似色(または他の関連した特徴)のピクセルを含んでよい。
【0040】
方法700は、ブロック740で、各色ビンの奥行き値を求める。たとえば、(Y、Cb、Cr)のビンのそれぞれに対して、複数の奥行き値があり得る。特徴から奥行きへのマッピング関数を生成するのに、(Y、Cb、Crの)ビンそれぞれについて1つの奥行き値だけが用いられてもよい。したがって、1つのビンの奥行き値が、すべて単一の奥行き値へと結合されてよい。一実装形態では、ビンに関して結合した奥行き値は、そのビンにマッピングされたすべての例示的な奥行きの単なる平均である。別の実装形態では、結合された奥行きは、そのビンにマッピングされたすべての例示的な奥行きの中央値である。さらに別の実装形態では、奥行き値のアウトライアを検出するためにRANSAC(Random Sample Consensus)方法が用いられて、インライアの平均が出力される。RANSACの各繰返しについて、奥行き値の総数がN個であると想定し、奥行き値のランダムサブセット(N1個)が選択され、その平均が計算される。この平均の奥行きとすべてのN個の奥行き値の間の差が計算される。閾値より小さな差を有する奥行き値がインライアの組に含まれてよい。インライアの組が変化しなくなったとき、または最大繰返し数に到達したとき、繰返しを停止してよい。インライアの組のサイズがM(Nの百分率として指定されてよい)より大きければ、このインライアの組は有効であると断言され、その平均が、すべての奥行き値の集計として用いられてよい。
【0041】
ブロック750で、方法700は、各ビンの重み値を計算する。特徴処理モジュール212は、各ビンの重みを計算することができるが、その重みは、そのビンの内部の占有率(occupancy)と任意のビンに関する平均占有率の比の関数である。したがって、例画像にN個のピクセルと合計B個のビンがある場合には、nヒットを有するビン(a bin with n hits)の占有率はn/(BN)である。各ビンの重みは、この占有率、すなわちw(n/(BN))の関数でよい。一実装形態では、この関数はw(x)=1-exp(-kx)であり、kは、小さな占有率についてはw(x)が小さいが、少なからぬ占有率については急速に1に近づくように選択される。別の実装形態では、ノイズによるものであり得る非常に小さな占有率のビンを棄却するために、重み関数w(x)は、xが小さな値未満のとき0であり、そうでなければ1である。
【0042】
ブロック760で、方法700は、特徴から奥行きへのマッピング関数を生成する。特徴から奥行きへのマッピングモジュール214は、特徴から奥行きへのマッピング関数400を生成するために、多項式適合の一形態(たとえば曲線当てはめ)を遂行することができる。もたらされる関数は、f(color)=depthと表現されてよく、またはYUV色の場合、f(YUV)=depthと表現されてよい。したがって、所与のピクセルに関する奥行き値は、そのピクセルに関するYUV色値の関数として計算される。特徴から奥行きへのマッピングモジュール214は、マッピング関数を平滑化することもできる。マッピング関数にはノイズがあり得るので、モジュール214は、所定の平滑化カーネルを用いてマッピング関数を畳み込み積分することにより(by convolving)、マッピング関数を平滑化することができる。たとえば、ビンjは、その近接したビンの重み付き平均を再割当てされてよく、この重みは、平滑化カーネルと、上記でブロック750において計算された占有率に基づく重みとの積である。一実装形態では、このビンjに関する最終的な奥行き(D)は次式で計算され得る。
【0044】
この式で、N(j)はビンの近隣を示す。特徴から奥行きへのマッピング関数は、たとえばデータベース224などのデータ格納に記憶されてよい。
【0045】
図8Aは、本開示の一実装形態による、入力画像に対して特徴から奥行きへのマッピング関数を適用する方法を示す流れ図である。方法800は、ハードウェア(たとえば回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(たとえばハードウェアシミュレーションを遂行するために処理装置上で実行される命令)、またはその組合せを含んでいる処理ロジックによって遂行されてよい。方法800は、入力画像に対して特徴から奥行きへのマッピング関数を適用して、入力画像を立体3Dに変換することができる。一実装形態では、方法800は、
図1に示されるような画像コンバータ110によって遂行されてよい。
【0046】
図8Aを参照して、方法800は、ブロック810で、3Dに変換すべき2Dの入力画像を受け取る。方法800は、ブロック820で、入力画像の各ピクセルの特徴(たとえば色値)を識別する。一実装形態では、特徴データは、画像に関連したメタデータに記憶されてよく、特徴処理モジュール212はこのメタデータから特徴値、たとえば色値、を求めることができる。
【0047】
方法800は、ブロック830で、(たとえば上記で
図7と併せて論じられたように)近似の奥行きマップから求めた特徴から奥行きへのマッピング関数に基づいて、入力画像の各ピクセルの奥行きを計算する。一実装形態では、奥行きマップ生成モジュール216は、特徴空間におけるn線形補間(n-linear interpolation)を遂行して、クエリピクセルの奥行きを得ることができる。たとえば、1次元の場合では、クエリピクセルの実際の値を取り巻く2つのビン中心は、C1およびC2と示されてよい。それらのビンの重み付き奥行き値は、それぞれD1およびD2としてよい。奥行きマップ生成モジュール216は、クエリピクセルと、C1およびC2との間の距離を計算し、それらをそれぞれd1およびd2で示すことができる。奥行きマップ生成モジュール216は、これらの距離を重みとして用い、次のような式を用いて、これらの2つのビン間の奥行き値を補間することができる。
【0049】
図8Bは、一実装形態による、色ビン-奥行きビン間の1次元線形補間を示す図である。補間値852は、クエリピクセルに関する奥行き値として返されてよい。特徴から奥行きへのマッピングのヒストグラム表現850を用いると、近似されたマッピングは滑らかではない。ビン境界の近くで、奥行き値が急激に変化することがある。一実装形態では、近似されたマッピングに対して補間が用いられ得る。一実装形態では、3Dのマッピング関数f(y、u、v)=dがあるので、マッピングの3つの線の補間が用いられてもよい。特徴は画像内の対象の輪郭を辿る傾向があるので、この方法を用いると、対象の境界を辿る奥行きマップにおける優れたセグメント化が達成され得る。
【0050】
図8Aを再び参照して、方法800は、ブロック840で、3Dの出力画像に関する二枚一組の立体画像を生成する。一実装形態では、画像描画モジュール218は、入力画像、およびブロック830で奥行きマップ生成モジュール216が計算した奥行き値に基づいて、3Dの出力画像を描画することができる。一実装形態では、描画モジュール218は、奥行き画像に基づく描画(DIBR)技法を用いて、3Dの画像を生成することができる。出力画像は、記憶されても、ユーザによる目視のために表示されてもよい。
【0051】
図9には、コンピュータシステム900の例示的形態のマシンの図式表示が示されており、その内部では、本明細書で論じた1つまたは複数の方法のうち任意のものをマシンに遂行させるための1組の命令が実行され得る。代替実装形態では、マシンは、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、またはインターネットにおける他のマシンに接続(たとえばネットワーク接続)されてよい。マシンは、クライアント/サーバネットワーク環境のサーバもしくはクライアントマシンの容量内で動作してよく、またはピアツーピア(または分散した)ネットワーク環境のピアマシンとして動作してもよい。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブ機器、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンが行う動作を指定する1組の命令(シーケンシャルな命令またはその他)を実行することができる任意のマシンでよい。さらに、単一のマシンのみが示されているが、用語「マシン」は、本明細書で論じた方法のうち任意の1つまたは複数を遂行するための1組(または複数の組)の命令を、個々に、または一緒に実行するマシンの任意の集合も含むように理解されるものとする。一実装形態では、コンピュータシステム900は、画像コンバータ110を実行するサーバ102などのサーバを表してよい。
【0052】
例示的なコンピュータシステム900は、処理装置902、メインメモリ904(たとえば読取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(シンクロナスDRAM(SDRAM)またはRambus DRAM(RDRAM)など)、スタティックメモリ906(たとえばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータ記憶装置918を含み、これらはバス930を介して互いに通信する。本明細書で説明した種々のバスを通じて供給される信号のうち任意のものが、他の信号と時分割多重化され、1つまたは複数の共通バスを通じて供給されてよい。さらに、回路の構成要素またはブロックの間の相互接続は、バスまたは単一信号ラインとして示され得る。あるいは、バスのそれぞれが1つまたは複数の単一信号ラインでもよく、単一信号ラインのそれぞれがバスでもよい。
【0053】
処理装置902は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理装置を表す。より詳細には、処理装置は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令型コンピュータ(RISC)マイクロプロセッサ、長大命令語(VLIM)マイクロプロセッサ、または他の命令セットを実施するプロセッサ、または命令セットの組合せを実施するプロセッサでよい。処理装置902は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理装置でもよい。処理装置902は、本明細書で論じた動作およびステップを遂行するための処理ロジック926を実行するように構成されている。
【0054】
コンピュータシステム900は、ネットワークインターフェース装置908をさらに含んでよい。またコンピュータシステム900は、映像表示装置910(たとえば液晶表示器(LCD)またはブラウン管(CRT))、文字数字入力装置912(たとえばキーボード)、カーソル制御装置914(たとえばマウス)、および信号生成装置916(たとえばスピーカ)を含んでよい。
【0055】
データ記憶装置918は、本明細書で説明した機能の方法のうち任意の1つまたは複数を具体化する命令の1つまたは複数の組922(たとえばソフトウェア)を記憶している機械可読記憶媒体928を含んでよい。命令922は、コンピュータシステム900による実行中には、メインメモリ904および/または処理装置902の内部に、完全に、または少なくとも部分的に存在してよく、メインメモリ904および処理装置902は、機械可読の記憶媒体も構成する。命令922は、ネットワークインターフェース装置908によって、ネットワーク920を通じて、さらに送信されるかまたは受信されてよい。
【0056】
機械可読記憶媒体928は、本明細書で説明したように、例示的な類似画像と関連した例示的な近似奥行きマップを用いて、入力画像に関する奥行きマップを生成する方法を遂行する命令を記憶するのに用いられてもよい。例示的な実装形態では、機械可読記憶媒体928が単一の媒体として示されているが、「機械可読記憶媒体」という用語は、命令の1つまたは複数の組を記憶する単一の媒体または複数の媒体(たとえば集中型データベースまたは分散型データベース、および/または関連するキャッシュおよびサーバ)を含むものと理解されたい。機械可読媒体には、マシン(たとえばコンピュータ)による読取りが可能な形態(たとえばソフトウェア、処理アプリケーション)で情報を記憶するための任意のメカニズムが含まれる。機械可読媒体には、それだけではないが、磁気記憶媒体(たとえばフロッピー(登録商標)ディスケット)、光記憶媒体(たとえばCD-ROM)、光磁気記憶媒体、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラム可能メモリ(たとえばEPROMおよびEEPROM)、フラッシュメモリ、または電子的命令を記憶するのに適する別のタイプの媒体が含まれ得る。
【0057】
先の記述は、本開示のいくつかの態様をよく理解できるように、特定のシステム、構成要素、方法等の例などの多数の特定の詳細を説明するものである。しかし、本開示の少なくともいくつかの実装形態が、これらの特定の詳細なしで実施され得ることが当業者には明らかであろう。他の例では、本開示を不必要に曖昧にすることのないように、よく知られた構成要素または方法は、詳細には説明されず、または単純なブロック図の形式で示されている。したがって、説明された特定の詳細は単なる例示である。特定の実装形態はこれらの例示的詳細から変化してよく、依然として、本開示の範囲に入るように企図されている。
【0058】
本明細書を通じて、「一実装形態」または「ある実装形態」に対する参照は、実装形態に関連して説明された特定の特徴、構造または特性が、少なくとも1つの実装形態に含まれることを意味する。したがって、本明細書を通じて、種々の位置における「一実装形態では」または「ある実装形態では」という慣用句の出現は、必ずしもすべてが同一の実装形態を指すわけではない。それに加えて、「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味するように意図されている。さらに、「例示的な」または「例示的」という単語は、本明細書では、例、実例、または具体例として役立つことを意味するのに用いられる。本明細書で「例示的」として説明されるいかなる態様もしくは設計も、必ずしも他の態様もしくは設計より好ましい、または有利であるものと解釈されるべきではない。むしろ、「例示的な」または「例示的」という単語の使用は、概念を具体的なやり方で示すことが意図されている。
【0059】
本明細書の方法の動作は、特定の順番で示されかつ説明されているが、各方法の動作の順番は、特定の動作が逆順で遂行され得るように、または、特定の動作が少なくとも部分的には他の動作と同時に遂行され得るように、変更されてよい。別の実装形態では、命令または別個の動作のサブ動作は、断続的な、かつ/または交番するやり方でもよい。さらに、開示された対象の態様を実施するのに、示された動作のすべて必要とされるとは限らない可能性がある。それに加えて、当業者なら、これらの方法が、状態図または各イベントによって、一連の相互関係がある状態として代替的に表され得ることを納得し、かつ理解するであろう。さらに、本明細書で開示された方法が、そのような方法をコンピュータ装置に転送したり伝送したりすることを容易にするために製品に記憶され得ることを理解されたい。本明細書で用いられる用語「製品」は、任意のコンピュータ可読装置または記憶媒体からアクセス可能なコンピュータプログラムを包含するように意図されている。