(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-20
(45)【発行日】2025-03-03
(54)【発明の名称】深度を用いる計算写真技法の特徴
(51)【国際特許分類】
G06T 11/80 20060101AFI20250221BHJP
G06T 5/73 20240101ALI20250221BHJP
【FI】
G06T11/80 A
G06T5/73
(21)【出願番号】P 2022546490
(86)(22)【出願日】2020-05-26
(86)【国際出願番号】 US2020070075
(87)【国際公開番号】W WO2021242326
(87)【国際公開日】2021-12-02
【審査請求日】2022-12-05
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ドゥ,ルオフェイ
(72)【発明者】
【氏名】キム,デイビッド
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2015-079519(JP,A)
【文献】特開2008-021163(JP,A)
【文献】特開2018-029270(JP,A)
【文献】特開2016-208522(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 11/60-11/80
G06T 5/00- 5/94
(57)【特許請求の範囲】
【請求項1】
現実世界の空間の一部として画像を受信するステップと、
前記画像内においてアンカーの位置を決定するステップと、
前記アンカーの前記位置に関連付けられた深度を決定し、前記アンカーが前記深度に応じた大きさを有するようにするステップと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用するステップと、
編集された前記画像をレンダリングするステップとを含む、方法。
【請求項2】
取り込まれた前記画像はライブ画像であり、そのレンダリングは、前記深度に基づいた前記画像編集アルゴリズムを使用して絶えず修正される、請求項1に記載の方法。
【請求項3】
前記アンカーは、取り込まれた前記画像におけるある深度に焦点を配置し、
取り込まれた前記画像の視点が変更され、
前記焦点は前記深度上にとどまる、請求項1または2のいずれか1項に記載の方法。
【請求項4】
現実世界の空間の一部として画像を受信するステップと、
前記画像内においてアンカーの位置を決定するステップと、
前記アンカーの前記位置に関連付けられた深度を決定するステップと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用するステップと、
編集された前記画像をレンダリングするステップとを含み、
前記深度に基づいた前記画像編集アルゴリズムを取り込まれた前記画像に適用するステップは、
前記深度のしきい値距離内の取り込まれた前記画像の画素を含む画素の第1の部分に
、前記アンカーへのフォーカスを含む第1のアルゴリズムを適用するステップと、
取り込まれた前記画像の残りの画素を含む画素の第2の部分に前記第1のアルゴリズムとは異なる第2のアルゴリズムを適用するステップとを含む、方法。
【請求項5】
現実世界の空間の一部として画像を受信するステップと、
前記画像内においてアンカーの位置を決定するステップと、
前記アンカーの前記位置に関連付けられた深度を決定するステップと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用するステップと、
編集された前記画像をレンダリングするステップとを含み、
前記深度に基づいた前記画像編集アルゴリズムを取り込まれた前記画像に適用するステップは、
前記画像に関連付けられた被写体を決定するステップと、
前記深度に基づいて前記被写体のエッジを決定するステップと、
前記被写体の前記エッジに関連付けられた取り込まれた前記画像の画素を含む画素の第1の部分に
、前記アンカーへのフォーカスを含む第1のアルゴリズムを適用するステップと、
取り込まれた前記画像の残りの画素を含む画素の第2の部分に前記第1のアルゴリズムとは異なる第2のアルゴリズムを適用するステップとを含む、方法。
【請求項6】
前記アンカーの前記位置に関連付けられた前記深度を決定するステップは、取り込まれた前記画像に関連付けられた深度マップを取得するステップを含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記アンカーの前記位置に関連付けられた前記深度を決定するステップは、
取り込まれた前記画像に関連付けられた深度マップを取得するステップと、
取り込まれた前記画像に関連付けられた最小深度値を決定するステップと、
取り込まれた前記画像に関連付けられた最大深度値を決定するステップと、
前記最小深度値および前記最大深度値に基づいて前記深度マップを正規化するステップと、
前記位置に関連付けられた前記深度を正規化された深度値として決定するステップとを含む、請求項1~5のいずれか1項に記載の方法。
【請求項8】
前記アンカーの前記位置に関連付けられた前記深度を決定するステップは、取り込まれた前記画像に関連付けられた層状深度を取得するステップを含み、
前記アンカーの前記深度は深度指数を有する、請求項1~5のいずれか1項に記載の方法。
【請求項9】
現実世界の空間の一部として画像を受信するステップと、
前記画像内においてアンカーの位置を決定するステップと、
前記アンカーの前記位置に関連付けられた深度を決定するステップと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用するステップと、
編集された前記画像をレンダリングするステップとを含み、
GUIとしての画像編集ツールを選択するステップをさらに含み、
前記画像編集ツールは、前記画像編集アルゴリズムに対応
し、前記アンカーへのフォーカスを含む、方法。
【請求項10】
実行されるとコンピュータシステムのプロセッサに、請求項1~9のいずれか1項に記載の方法のステップのうちのいずれかを行なわせる命令を含む、コンピュータプログラム。
【請求項11】
請求項1~9のいずれか1項に記載の方法のステップのうちのいずれかを行なうように構成された、画像を編集するためのコンピュータシステム。
【請求項12】
システムであって、
1組の命令を格納するメモリと、
前記システムに動作を行なわせるように前記1組の命令を実行するように構成されたプロセッサとを含み、前記動作は、
現実世界の空間の一部として画像を受信することと、
前記画像内においてアンカーの位置を決定することと、
前記アンカーの前記位置に関連付けられた深度を決定し、前記アンカーが前記深度に応じた大きさを有するようにすることと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用することと、
編集された前記画像をレンダリングすることとを含む、システム。
【請求項13】
取り込まれた前記画像はライブ画像であり、そのレンダリングは、前記深度に基づいた前記画像編集アルゴリズムを使用して絶えず修正される、請求項12に記載のシステム。
【請求項14】
前記アンカーは、取り込まれた前記画像におけるある深度に焦点を配置し、
取り込まれた前記画像の視点が変更され、
前記焦点は前記深度上にとどまる、請求項12または13のいずれか1項に記載のシステム。
【請求項15】
システムであって、
1組の命令を格納するメモリと、
前記システムに動作を行なわせるように前記1組の命令を実行するように構成されたプロセッサとを含み、前記動作は、
現実世界の空間の一部として画像を受信することと、
前記画像内においてアンカーの位置を決定することと、
前記アンカーの前記位置に関連付けられた深度を決定することと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用することと、
編集された前記画像をレンダリングすることとを含み、
前記深度に基づいた前記画像編集アルゴリズムを取り込まれた前記画像に適用することは、
前記深度のしきい値距離内の取り込まれた前記画像の画素を含む画素の第1の部分に
、前記アンカーへのフォーカスを含む第1のアルゴリズムを適用することと、
取り込まれた前記画像の残りの画素を含む画素の第2の部分に前記第1のアルゴリズムとは異なる第2のアルゴリズムを適用することとを含む、システム。
【請求項16】
システムであって、
1組の命令を格納するメモリと、
前記システムに動作を行なわせるように前記1組の命令を実行するように構成されたプロセッサとを含み、前記動作は、
現実世界の空間の一部として画像を受信することと、
前記画像内においてアンカーの位置を決定することと、
前記アンカーの前記位置に関連付けられた深度を決定することと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用することと、
編集された前記画像をレンダリングすることとを含み、
前記深度に基づいた前記画像編集アルゴリズムを取り込まれた前記画像に適用することは、
前記画像に関連付けられた被写体を決定することと、
前記深度に基づいて前記被写体のエッジを決定することと、
前記被写体の前記エッジに関連付けられた取り込まれた前記画像の画素を含む画素の第1の部分に
、前記アンカーへのフォーカスを含む第1のアルゴリズムを適用することと、
取り込まれた前記画像の残りの画素を含む画素の第2の部分に前記第1のアルゴリズムとは異なる第2のアルゴリズムを適用することとを含む、システム。
【請求項17】
前記アンカーの前記位置に関連付けられた前記深度を決定することは、取り込まれた前記画像に関連付けられた深度マップを取得することを含む、請求項12~16のいずれか1項に記載のシステム。
【請求項18】
前記アンカーの前記位置に関連付けられた前記深度を決定することは、
取り込まれた前記画像に関連付けられた深度マップを取得することと、
取り込まれた前記画像に関連付けられた最小深度値を決定することと、
取り込まれた前記画像に関連付けられた最大深度値を決定することと、
前記最小深度値および前記最大深度値に基づいて前記深度マップを正規化することと、
前記位置に関連付けられた前記深度を正規化された深度値として決定することとを含む、請求項12~16のいずれか1項に記載のシステム。
【請求項19】
前記アンカーの前記位置に関連付けられた前記深度を決定することは、取り込まれた前記画像に関連付けられた層状深度を取得することを含み、
前記アンカーの前記深度は深度指数を有する、請求項12~16のいずれか1項に記載のシステム。
【請求項20】
システムであって、
1組の命令を格納するメモリと、
前記システムに動作を行なわせるように前記1組の命令を実行するように構成されたプロセッサとを含み、前記動作は、
現実世界の空間の一部として画像を受信することと、
前記画像内においてアンカーの位置を決定することと、
前記アンカーの前記位置に関連付けられた深度を決定することと、
前記深度に基づいた画像編集アルゴリズムを取り込まれた前記画像に適用することと、
編集された前記画像をレンダリングすることとを含み、
GUIとしての画像編集ツールを選択することをさらに含み、
前記画像編集ツールは、前記画像編集アルゴリズムに対応
し、前記アンカーへのフォーカスを含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
分野
実施形態は、デジタル写真撮影画像編集に関する。
【背景技術】
【0002】
背景
モバイルデバイスにおける計算写真技法は、機械学習ベースのセグメンテーションを使用して、画面空間強調やフィルターなど、および/または、背景のぼかし(blurring)や変更などを適用することによって、画像の視覚的外観を高めることを含む。たとえば、フィルターを画面空間に適用して、着色を修正する(たとえば、青色を変更する、グレースケールに変更する、色を明るくするなど)ことができる。別の例では、学習されたアルゴリズムが、画面空間における人間と背景とを区別して、背景をぼかす(または異なる背景を挿入する)ことができる。別の例では、画像の第1の部分が前景であり、当該画像の第2の部分が背景である場合、深度に基づいて背景をぼかすことができる。言い換えれば、深度d0が識別され、d0よりも小さい深度dfは前景であり、d0よりも大きい深度dbは背景である。次に、画像の背景部分(深度db)全体がぼかされ、一方、画像の前景部分(深度df)全体はそのまま放置される。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
一般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納した)非一時的コンピュータ読取可能媒体、および/または方法が、現実世界の空間の一部として画像を受信するステップと、画像上にアンカーを配置するステップと、アンカーの位置を決定するステップと、アンカーの位置に関連付けられた深度を決定するステップと、深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップと、編集された画像をレンダリングするステップとを含む方法を用いて、プロセスを行なうことができる。
【0004】
実現化例は、以下の特徴のうちの1つ以上を含み得る。たとえば、取り込まれた画像はライブ画像であってもよく、そのレンダリングは、深度に基づいた画像編集アルゴリズムを使用して絶えず修正される。アンカーは、取り込まれた画像におけるある深度に焦点を配置可能であり、取り込まれた画像の視点が変更され、焦点は深度上にとどまり得る。深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップは、深度のしきい値距離内の取り込まれた画像の画素を含む画素の第1の部分に第1のアルゴリズムを適用するステップと、取り込まれた画像の残りの画素を含む画素の第2の部分に第2のアルゴリズムを適用するステップとを含み得る。
【0005】
たとえば、深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップは、画像に関連付けられた被写体を決定するステップと、深度に基づいて被写体のエッジを決定するステップと、被写体のエッジに関連付けられた取り込まれた画像の画素を含む画素の第1の部分に第1のアルゴリズムを適用するステップと、取り込まれた画像の残りの画素を含む画素の第2の部分に第2のアルゴリズムを適用するステップとを含み得る。アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた深度マップを取得するステップを含み得る。
【0006】
たとえば、アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた深度マップを取得するステップと、取り込まれた画像に関連付けられた最小深度値を決定するステップと、取り込まれた画像に関連付けられた最大深度値を決定するステップと、最小深度値および最大深度値に基づいて深度マップを正規化するステップと、位置に関連付けられた深度を正規化された深度値として決定するステップとを含み得る。アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた層状深度を取得するステップを含み、アンカーの深度は深度指数を有する。方法またはシステムは、画像編集ツールを選択するステップをさらに含み、画像編集ツールは画像編集アルゴリズムに対応する。
【0007】
例示的な実施形態は、ここに以下に提供される詳細な説明、および添付図面からより十分に理解されるであろう。図中、同じ要素は同じ参照番号によって表わされ、それらは例示としてのみ提供されており、このため例示的な実施形態の限定ではない。
【図面の簡単な説明】
【0008】
【
図1】少なくとも1つの例示的な実施形態に従ったユーザインターフェイスの一部のブロック図である。
【
図2】少なくとも1つの例示的な実施形態に従ったユーザインターフェイスの一部の写真表現を示す図である。
【
図3】少なくとも1つの例示的な実施形態に従った、画像を編集するための方法のフローチャートを示す図である。
【
図4】少なくとも1つの例示的な実施形態に従った、画像を編集するための方法のフローチャートを示す図である。
【
図5】少なくとも1つの例示的な実施形態に従った画像処理システムのブロック図である。
【
図6】少なくとも1つの例示的な実施形態に従ったコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す図である。
【発明を実施するための形態】
【0009】
なお、これらの図は、ある例示的な実施形態において利用される方法、構造および/または材料の一般的な特性を示すよう意図されており、かつ、以下に提供される記載を補足するよう意図されている。しかしながら、これらの図面は縮尺通りではなく、また、任意の所与の実施形態の構造特性または性能特性そのものを正確に反映していない場合があり、例示的な実施形態が包含する値または特性の範囲を定義または限定していると解釈されるべきでない。たとえば、明瞭にするために、分子、層、領域、および/または構造要素の相対的な厚さおよび位置付けが減少または誇張される場合がある。さまざまな図面における同様または同一の参照番号の使用は、同様または同一の要素または特徴の存在を示すよう意図される。
【0010】
実施形態の詳細な説明
ここで説明される手法を用いて、深度マップおよび/または深度層が、計算写真技法のための新しいオプションを作り出すために使用され得る。深度特徴を用いる計算写真技法は、識別された深度での画像操作を可能にすることによって、ユーザ体験を向上させることができる。たとえば、深度特徴を用いる計算写真技法は、対象深度での画素強調を可能にし、他の深度での画素歪みを可能にして、ユーザが対象深度にある画像の要素に強調された焦点を配置することを可能にすることができる。深度とは、基準点からの距離であり得る。深度とは、基準点からの距離および方向であり得る。画像における各画素は、深度を有し得る。したがって、画像における各画素は、基準点からの関連付けられた距離(およびオプションで方向)を有し得る。基準点は、カメラを含むデバイス(たとえば、モバイルデバイス、タブレット、カメラなど)の位置に基づき得る。基準点は、デバイスの(たとえば全地球測位システム(global positioning system:GPS)を使用した)地球上の位置に基づき得る。
【0011】
例示的な一実現化例では、アンカーまたは仮想アンカーが、被写界深度計算とともに使用するために、(たとえばデバイス上に表示された画像内の)画面空間に固定され、および/またはロックされ得る。アンカーは、現実世界の空間(たとえばユーザ環境)におけるある深度に焦点を固定しながら、ビデオの撮影を支援することができる。デバイスが現実世界の空間で動く(たとえば視点を変更する)間、たとえばデバイスセンサと、これらのセンサを使用してデバイスからの深度を追跡するように構成されたアプリケーションプログラミングインターフェイス(application programming interface:API)とを使用して、デバイスに対する視界の深度を現実世界の空間で追跡することができる。言い換えれば、アンカーをある深度にロックすることができ、デバイスが動くにつれて、(たとえば、固定された焦点距離を維持することなく)当該深度を追跡することができる。たとえば、マーカーが深度6メートルに配置され(必ずしも6メートルで被写体上に配置されるとは限らない)、デバイスが5メートルへ動かされる(たとえば、デバイスのユーザが前に進む)場合、デバイスが動くにつれてマーカーの深度は5メートルへ変化する。これを、焦点が被写体上でロックされ、被写体が動く(またはデバイスが動く)につれて、被写体が視界内にある限り、焦点が被写体にとどまる被写体追跡と対比されたい。いくつかの実現化例では、追跡は、拡張現実APIに含まれる機能であり得る。
【0012】
たとえば、ユーザは、自分の環境において被写体のビデオを撮影し、(たとえば必ずしも被写体上にあるとは限らない)ある深度で画像効果(たとえば強調)を適用することができる。画像効果を適用するために、ユーザは、(デバイス上にまたは画面空間に表示されるような)現実世界の空間においてアンカーを当該深度に配置するために、(ビデオを撮影するデバイスのタッチスクリーンディスプレイ上で)当該深度にタッチすることができる。次に、アンカーがいったん配置されると、ユーザは自分の環境において歩き回ることができ、焦点はアンカーされた深度にとどまるであろう。例示的な一実現化例では、ユーザは動き回り(たとえば視点を変更し)、さらには目をそらすこともでき、焦点は当該深度にとどまることができる。また、複数のそのようなアンカー点を使用する(たとえば、画面空間に配置する)ことができる。
【0013】
この例では、被写体は、新しい被写体追跡手法を可能にするアンカーの深度にあり得る(しかし、必ずしもそうとは限らない)。深度追跡は、被写体追跡のための現在の手法に対する改良である。なぜなら、被写体が現在の手法を使用する画面空間における焦点である場合、ユーザは、たとえば被写体の写真を撮るために被写体にフォーカスするためである。ユーザが別の写真を撮るために別の視点へ動く場合、現在では、カメラは、被写体に再びフォーカスするために被写体認識アルゴリズム(または音響オートセンサ)を使用する。被写体認識アルゴリズムを使用することは、同じ被写体のうちの2つを区別すること、被写体がもはや視界にない場合および/または視界へ戻ってきた場合に再びフォーカスしないこと、高速プロセッサを必要とする(または大量の処理リソースを使用する)こと、特殊センサの必要性などを含む、多くの欠点を有する。対照的に、例示的な実現化例は、(たとえば3次元における)被写体の位置および深度を保持することができ、同じ焦点を維持することができる。いくつかの実現化例では、追跡は、被写体認識および深度追跡を使用することを含み得る。
【0014】
この説明では、画面空間とは、デバイス(たとえばモバイルデバイス)のディスプレイ上に示されるような画像の視覚エリアであり得る。現実世界の空間とは、デバイスが動作している(たとえばビデオを撮っている)視覚的環境であり得る。視界空間とは、レンダリングされた画像の視覚エリアであり得る(たとえば、画面空間と同じまたは異なる視覚エリアであり得る)。
【0015】
図1は、少なくとも1つの例示的な実施形態に従ったユーザインターフェイスの一部のブロック図を示す。
図1に示すように、インターフェイス105は、複数の被写体110-1、110-2、110-3、110-4、110-5と、スライドバー115と、アンカー125とを含む。スライドバー115は、スライダー120を含む。アンカー125は、処理アクション(たとえば、強調、フィルター、くもり(fog)、ぼかしなど)に関連付けられた深度を識別するように構成され得る。スライドバー115は、処理アクション(たとえば、ぼかしの量、くもりの量など)を制御するように構成され得る。
【0016】
例示的な一実現化例では、インターフェイス105は、画像(またはビデオ、またはビデオのフレーム)処理アプリケーションのユーザインターフェイスの一部であり得る。アンカー125は、深度決定を引き起こす被写体(たとえば被写体110-3)上に、および/または、被写体110-1、110-2、110-3、110-4、110-5を含む画像のある深度に、(たとえば、タッチスクリーンアクション、マウスアクションなどを使用して)配置され得る。これらの被写体の各々は画像において異なる深度にあり、および/または、これらの被写体のうちの2つ以上が同じ深度にある。画像は、カメラ(たとえば、カメラはRGBDセンサであり得る)によって取り込まれ、および/または、画像に基づいて(たとえば、深度マップを作成する運動アルゴリズムからの深度を使用して)決定されたような深度情報を含み得る。言い換えれば、画像は、画像における各画素の深度を識別する、関連付けられた深度マップを有し得る。各画素の深度を識別することは、被写体110-1、110-2、110-3、110-4、110-5の各々について相対的深度を決定する(または決定するのを助ける)ことを可能にし得る。
【0017】
インターフェイスを含むデバイスのユーザは、アンカー125に関連付けられた深度に基づいて、行なわれるべき画像処理アクションを選択することができる。たとえば、アンカーの深度(または深度の範囲内)にある画素を強調する(たとえば品質を向上させる)ことができ、アンカーの深度(または深度の範囲内)にない画素を操作する(たとえば、歪める、ぼかす、くもらせるなど)ことができる。スライドバーは、たとえば歪みのレベルおよび/または深度の範囲を制御するために(ユーザによって)使用され得る。深度は、選択された被写体の(たとえば深度マップの)画素、および/または、選択された被写体の層(たとえばz層)に関連付けられた深度であり得る。
【0018】
図2は、少なくとも1つの例示的な実施形態に従ったユーザインターフェイスの一部の写真表現を示す。
図2に示すように、ユーザインターフェイスの一部は、第1の状態205にある画像と、第2の状態210にある画像と、選択ツール215と、第1の位置220にある(ボールとして図示された)アンカーと、第2の位置225にある(ボールとして図示された)アンカーとを含む。選択ツール215は、画
像編集ツール(たとえば、処理アクション、強調、フォーカス、歪み、ぼかし、くもり、フィルターなど)を選択するように構成される。
図2に示すように、選択ツール215は、処理アクションとしてフォーカスを選択するように(たとえば、タッチスクリーンまたはスワイプを介して)すでに使用されている。
【0019】
第1の状態205にある画像は、第1の位置220にあるアンカーを示す。第1の位置220にあるアンカーにより、第1の状態205にある画像は、画像において深くまたは遠くにある(選択ツール215によって選択されたような)焦点を有するようになる。第1の状態205にある画像に示されるように、遠くにある被写体(ジム設備)に焦点が合っており、一方、近くの被写体はぼやけている。第2の状態210にある画像に示されるように、近くにある被写体(ジム設備)がフォーカスされ、一方、遠くの被写体はぼやけている。例示的な一実現化例では、アンカーの位置を第1の位置220から第2の位置225へ変更することは、異なる深度での画素操作(たとえば、フォーカスおよびぼかし)を引き起こす。この画素操作は、被写界深度効果と呼ばれることがある。
【0020】
例示的な一実現化例では、現実世界の空間の一部が、デバイス(たとえば、ディスプレイ、ビューファインダーなど)上で、画像または画面空間画像としてプレビューされる。デバイスのユーザは、(たとえば、デバイスのタッチスクリーンを使用して)少なくとも1つのアンカーを画像上に配置することができる。デバイスは、アンカーの位置(たとえば、画面空間における座標(x,y))と、当該位置に関連付けられた深度(したがってアンカー)とを決定するように構成され得る。たとえば、深度は、アンカー位置での(たとえば深度マップを使用した)画素の深度に基づき得る。深度に基づいた画像編集アルゴリズムが、プレビューされた画像に適用され得る。編集された画像は、デバイスのディスプレイ上にレンダリングされ得る。プレビューされた画像はライブ画像であってもよく、そのレンダリングは、深度に基づいた画像編集アルゴリズムを使用して絶えず修正される。アンカーが第1の位置220から第2の位置225へ動かされると、(たとえば深度マップ上の位置を使用する)深度決定がトリガされ、決定された深度に基づいて焦点の変更がトリガされる。
【0021】
別の実現化例では、第1の状態205にある画像は、アプリケーションを使用してデバイス上に表示されている取り込まれた画像である。アンカーが第1の位置220から第2の位置225へ動かされると、(たとえば深度マップ上の位置を使用する)深度決定が行なわれ、画像編集プロセスをトリガする。画像編集プロセスは、画像強調アルゴリズムが、決定された深度にある(または、決定された深度の範囲内にある)画素に対して実現されるようにするとともに、画像ぼかしアルゴリズムが、決定された深度にない(または、決定された深度の範囲内にない)画素に対して実現されるようにすることができる。画像ぼかしアルゴリズムは、深度に基づいてぼかしを変更することができる。たとえば、決定された深度から遠ざかるにつれて、より多くのぼかしが適用される。
【0022】
別の実現化例では、画像は、すべての深度で高解像度を有する取り込まれた画像である。高解像度の取り込まれた画像は、アプリケーションを使用してデバイス上に表示され得る。アンカーは第1の位置220に配置されて、(たとえば深度マップ上の位置を使用する)深度決定が(たとえばアプリケーションによって)行なわれるようにし、画像編集プロセスをトリガすることができる。画像編集プロセスは、決定された深度にない(または、決定された深度の範囲内にない)画素に対して実現される画像ぼかしアルゴリズムであり得る。画像ぼかしアルゴリズムは、深度に基づいてぼかしを変更することができる。たとえば、決定された深度から遠ざかるにつれて、より多くのぼかしが適用される。アンカーが第1の位置220から第2の位置225へ動かされると、(たとえば深度マップ上の位置を使用する)新たな深度決定が行なわれ、別の画像編集プロセスをトリガする。画像編集プロセスは、ぼかし除去プロセスが、決定された深度にある(または、決定された深度の範囲内にある)画素に対して実現されるようにするか、または、元の画像に対する再処理を引き起こすとともに、画像ぼかしアルゴリズムが、決定された深度にない(または、決定された深度の範囲内にない)画素に対して実現されるようにすることができる。画像ぼかしアルゴリズムは、深度に基づいてぼかしを変更することができる。たとえば、決定された深度から遠ざかるにつれて、より多くのぼかしが適用される。
【0023】
例示的な一実現化例では、画像編集は、表1に示すように画素を編集することを含む。表1では、d0は決定された深度であり、Dは画素の深度である。表1の例は、フォーカス/ぼかし編集プロセスを示す。
【0024】
【0025】
図3および
図4は、例示的な実施形態に従った方法のフローチャートである。
図3および
図4に関して説明される方法は、装置に関連付けられたメモリ(たとえば非一時的コンピュータ読取可能記憶媒体)に格納され、装置に関連付けられた少なくとも1つのプロセッサによって実行されるソフトウェアコードの実行によって行なわれ得る。
【0026】
しかしながら、専用プロセッサとして具現化されたシステムといった、代替的な実施形態が考えられる。専用プロセッサは、グラフィックス処理ユニット(graphics processing unit:GPU)であり得る。GPUは、グラフィックスカードのコンポーネントであり得る。グラフィックスカードはまた、ビデオメモリと、ランダムアクセスメモリデジタルアナログ変換器(random access memory digital-to-analogue converter:RAMDAC)と、ドライバソフトウェアとを含み得る。ビデオメモリは、画像、ビデオのフレーム、画像の被写体、またはフレームのシーンを表わすデジタルデータを格納するフレームバッファであり得る。RAMDACは、ビデオメモリのコンテンツを読み出し、コンテンツをアナログRGB信号に変換し、アナログ信号をディスプレイまたはモニタに送信するように構成され得る。ドライバソフトウェアは、上述のメモリに格納されたソフトウェアコードであり得る。ソフトウェアコードは、ここに説明される方法を実現するように構成され得る。
【0027】
以下に説明される方法はプロセッサおよび/または専用プロセッサによって実行されるとして説明されるが、これらの方法は必ずしも同じプロセッサによって実行されるとは限らない。言い換えれば、少なくとも1つのプロセッサおよび/または少なくとも1つの専用プロセッサが、
図3および
図4に関して以下に説明される方法を実行し得る。
【0028】
図3は、少なくとも1つの例示的な実施形態に従った、画像を編集するための方法のフローチャートを示す。
図3に示すように、ステップS305で、画像が選択される。画像は、画像を編集するように構成されたデバイスに関連付けられたメモリから選択され得る。画像は、ビデオを編集するように構成されたデバイスに関連付けられたメモリから選択されたビデオのフレームであり得る。画像は、画像が取り込まれてデバイスに格納される前に、プレビュー画像として選択され得る。画像は、ビデオのフレームが取り込まれてデバイスに格納される際に、プレビュー画像として選択され得る。言い換えれば、画像またはフレームは、(たとえば、デバイス上で実行されるカメラアプリケーションの機能としての)取り込みプロセス中に編集され得る。例示的な一実現化例では、選択された画像は深度情報を含む。
【0029】
深度情報は、画像における各画素についての深度値を有する深度マップを含み得る。深度マップは、カラー(たとえばRGB、YUVなど)画像またはビデオのフレームに関連付けられた画像であり得る。深度マップは、白黒やグレースケールなどの画像またはビデオのフレームに関連付けられた画像であり得る。深度マップは、画像またはフレームにおける各画素についての距離値を格納することができる。深度値は、たとえば0~255の値を有する8ビット表現を有し得る。ここで、255(または0)は最も近い深度値を表現し、0(または255)は最も遠い深度値を表現する。例示的な一実現化例では、深度マップは正規化され得る。たとえば、深度マップは、[0,1]という範囲に変換され得る。正規化は、深度値の実際の範囲を変換することを含み得る。たとえば、深度マップが43~203の値を含む場合、43は0に変換され、203は1に変換され、残りの深度値は0と1との間の値に変換されるであろう。
【0030】
深度マップは、深度(depth:D)センサを含むカメラによって生成され得る。このタイプのカメラは、RGBDカメラと呼ばれることがある。深度マップは、画像またはビデオのフレームを取り込んでいる間にカメラの後処理機能として実現されるアルゴリズムを使用して生成され得る。たとえば、画像は、カメラ(たとえばモバイルデバイスのカメラ)によって取り込まれた複数(たとえば3個、6個、9個、または10個以上)の画像から生成され得る。アルゴリズムは、現実世界の空間の画像を取り込むことに関連付けられた(たとえば拡張現実アプリケーションのための)アプリケーションプログラミングインターフェイス(API)において実現され得る。
【0031】
高ダイナミックレンジ(high dynamic range:HDR)画像取り込みでは、複数のフレーム(たとえば3個、6個、9個、または10個以上)を単一画像になるよう一体化することができる。その結果、カメラは、複数のフレームを平均化してノイズを減少させる能力を有することができ、それは画像品質を向上させる。加えて、カメラは、複数の画像を使用して深度マップを生成することができる。なぜなら、画像は、すべての画素までの距離を推定するために比較され得る異なる角度からのものであり得るためである。場合によっては、デバイスが現実世界の空間を動き回るにつれて、深度マップはより正確になり得る。
【0032】
深度情報は、3D点群として表現され得る。言い換えれば、点群は、3次元での深度マップであり得る。点群は、シーンの外面を表現する3D点(X,Y,Z)の集合であってもよく、カラー情報を含み得る。
【0033】
深度情報は、層順序を示す数(たとえば、指数またはz指数)を各々有する深度層を含み得る。深度情報は、画像における各画素についての複数の順序付けられた深度を有する層状深度画像(layered depth image:LDI)であり得る。カラー情報は、画像における各画素についてのカラー(たとえばRGB、YUVなど)であり得る。深度画像は、各画素がカメラ位置からの距離を表わす画像であり得る。
【0034】
層状深度画像(LDI)は、3次元(3D)シーンの画像ベース表現であり得る。LDIは、層状深度画素の2次元(2D)アレイまたはグループを含み得る。各層状深度画素は、単一のカメラ位置または視点から見られるような1本の視線に沿ってソートされた1組のLDIサンプルを含み得る。カメラは、LDIカメラと呼ばれ得る。LDIサンプルを参照する他のやり方は、点、深度画素、または層状深度画素サンプルを含み得るものの、それらに限定されない。各LDIサンプルについて、ソースカメラと呼ばれるカメラが、LDIサンプルに関連付けられたデータを提供する。LDI画素の表現は、カラー情報、アルファチャネル情報、深度情報(画素とカメラとの間の距離)、LDIサンプル用のソースカメラのための識別子(たとえば、数、ポインター、またはカメラへの参照)、および、3次元(3D)空間でのLDIのレンダリングをサポートできる他の属性を含み得る。
【0035】
ステップS310で、画像編集ツールが選択される。たとえば、デバイスのユーザは、画像を編集するために使用される画像処理アクションを選択することができる。画像処理アクションは、画像に対するアルゴリズムの実行を引き起こすように構成され得る。アルゴリズムは、少なくとも、画像強調、画像ぼかし、画像くもり、画像フィルター、画像トリミング、画像カラー変更、画像特殊効果、画像歪みなどを含み得る。いくつかの実現化例では、画像処理アクションは、画像に対する2つ以上のアルゴリズムの実行を引き起こし得る。たとえば、画像強調は、画像の一部(たとえば、選択された画素)に対して実行可能であり、画像ぼかしは、画像の別の一部(たとえば、選択された画素)に対して実行可能である。
【0036】
ステップS315で、深度が選択される。たとえば、上述のように、画像は、関連付けられた深度情報を有し得る。深度情報は、深度マップ、画素ごとの深度、層などを含み得る。したがって、深度を選択することは、深度マップからの距離、画素からの距離、層(たとえばz指数)などを選択することを含み得る。上述のように、アンカーが、画像上のある位置に配置され得る。アンカーはある被写体上に配置可能であり、アンカーはある深度に配置可能である、などとなっている。例示的な一実現化例では、深度は、アンカーの配置および/または位置に基づいて選択される。
【0037】
ステップS320で、画像編集ツールが実行される。例示的な一実現化例では、画像編集ツールは、選択された深度に基づいて実現される。たとえば、アルゴリズムは、選択された深度にある画像の画素に対して実行され得る。それに代えて、またはそれに加えて、アルゴリズムは、選択された深度の範囲内にある画像の画素に対して実行され得る。範囲は、画素のしきい値数に基づき得る(たとえば、深度、より近いこと、および/または、より遠いことに基づき得る)。範囲は、深度からのしきい値距離に基づいた画素数であり得る。範囲は可変であり得る(たとえば、スライドバーを使用して変更され得る)。いくつかの実現化例では、(選択された画像編集ツールに基づいた)画像処理アクションは、画像に対する2つ以上のアルゴリズムの実行を引き起こし得る。たとえば、画像強調は、選択された深度にある(または選択された深度の範囲内にある)画像の画素に対して実行可能であり、画像ぼかしは、画像における画素の残り(または残りの画素)に対して実行可能である。
【0038】
ステップS325で、修正された画像が表示される。たとえば、画像編集ツールを使用して修正された画像が、デバイス上に(たとえば、アプリケーションのユーザインターフェイス内に)表示され得る。例示的な一実現化例では、画像またはフレームは、(たとえば、デバイス上で実行されるカメラアプリケーションの機能としての)取り込みプロセス中に編集され得る。したがって、アルゴリズムは、選択された深度にある画像の画素に対して絶えず(たとえば、フレームごとに、またはフレーム数ごとに)実行可能であり、修正された画像は、絶えず更新されて表示され得る。言い換えれば、画像編集は、リアルタイムの深度ベースの画像編集を含み得る。アンカーが被写体上に焦点または強調を配置する一実現化例では、デバイスが動く(たとえば、視点を変更する)際、アンカーされた被写体はフォーカスおよび/または強調されたままであり得る。ユーザインターフェイスはユーザに、画像編集設定を修正し、ディスプレイのスナップショットを撮って画像をデバイスのメモリに保存するオプションを選択するオプションを与えることができる。
【0039】
図4は、少なくとも1つの例示的な実施形態に従った、画像を編集するための方法のフローチャートを示す。
図4に示すように、ステップS405で、画像が選択される。画像は、画像を編集するように構成されたデバイスに関連付けられたメモリから選択され得る。画像は、デジタル写真撮影によって得られたデジタル画像であり得る。画像は、ビデオを編集するように構成されたデバイスに関連付けられたメモリから選択されたビデオのフレームであり得る。画像は、画像が取り込まれてデバイスに格納される前に、プレビュー画像として選択され得る。画像は、ビデオのフレームが取り込まれてデバイスに格納される際に、プレビュー画像として選択され得る。言い換えれば、画像またはフレームは、(たとえば、デバイス上で実行されるカメラアプリケーションの機能としての)取り込みプロセス中に編集され得る。この実現化例では、画像は、現実世界の空間のライブ画像であり得る。
【0040】
例示的な一実現化例では、選択された画像は深度情報を含む。深度情報は、画像における各画素についての深度値を有する深度マップを含み得る。深度情報は、3D点群として表現され得る。言い換えれば、点群は、3次元での深度マップであり得る。深度情報は、層順序を示す数(たとえば、指数またはz指数)を各々有する深度層を含み得る。
【0041】
ステップS410で、アンカー(または仮想アンカー)が画像上に配置される。たとえば、アンカーが、画像上のある位置に配置され得る。アンカーはある被写体上に配置可能であり、アンカーはある深度に配置可能である、などとなっている。アンカーは、デバイスのタッチスクリーンの動作を介して画像上に配置され得る。アンカーは、デバイスによって検出されたジェスチャーの動作を介して画像上に配置され得る。一実現化例では、画像は、現実世界の空間のライブ画像であり得る。したがって、アンカーは、現実世界の空間のライブ画像内の現実世界の位置に配置され得る。
【0042】
ステップS415で、アンカーは、画像の座標位置に変換される。たとえば、画像は、デバイスのディスプレイ(たとえば画面空間)の長さおよび幅に基づいた2次元(2D)表現(たとえばxy座標)を有し得る。言い換えれば、アンカーは、画面空間における座標によって表現され得る。
【0043】
ステップS420で、画像の画素変数が編集される。たとえば、上述のように、画像は、アルゴリズムを使用して編集され得る。アルゴリズムは、少なくとも、画像強調、画像フォーカス、画像ぼかし、画像くもり、画像フィルター、画像トリミング、画像カラー変更、画像特殊効果、画像歪みなどを含み得る。たとえば、アンカー点までの測定された物理的距離アルゴリズムに従った画素ごとのぼかしを行なうことができる。距離に基づく画素ごとのぼかしは、画素がアンカーから遠ざかるにつれて、レンダリングされた結果において画素がよりぼやけるように、画素をぼかすことを含み得る。上述のように、画像は、現実世界の空間のライブ画像であり得る。したがって、画素ごとのぼかしは、デバイスに対する被写界深度効果をリアルタイムでシミュレートすることができる。
使用されている。
【0044】
ステップS425で、修正された画像がレンダリングされる。たとえば、深度に基づいて修正された画像が、デバイスのディスプレイ上で(たとえば、アプリケーションのユーザインターフェイス内で)レンダリングされ得る。例示的な一実現化例では、画像またはフレームは、(たとえば、デバイス上で実行されるカメラアプリケーションの機能としての)取り込みプロセス中に編集され得る。したがって、アルゴリズムは、選択された深度にある画像の画素に対して絶えず(たとえば、フレームごとに、またはフレーム数ごとに)実行可能であり、修正された画像は、絶えず更新されて表示され得る。言い換えれば、画像編集は、リアルタイムの深度ベースの画像編集を含み得る。
【0045】
例示的な一実現化例では、画像編集は、現実世界の空間のライブ画像取り込みで行なわれ得る。したがって、デバイスが動く際、画面空間が再計算され、深度マップが再生成され、アンカーの座標が再計算される。画像は再編集され、デバイス上でレンダリングされる。言い換えれば、
図3および
図4に関して説明された手法は、絶えず繰り返され得る(たとえば、ループ状に実行される)。アンカーが被写体上に焦点または強調を配置する一実現化例では、デバイスが動く(たとえば、視点を変更する)際、アンカーされた被写体はフォーカスおよび/または強調されたままであり得る。ユーザインターフェイスはユーザに、画像編集設定を修正し、ディスプレイのスナップショットを撮って画像をデバイスのメモリに保存するオプションを選択するオプションを与えることができる。
【0046】
例示的な使用事例として、画像編集ツールとしてくもり効果を行なうことを、
図3および/または
図4の文脈で説明する。(たとえば
図1および/または
図2に関して説明されたような)ユーザインターフェイスを使用して、ユーザはくもり効果を選択し、くもり厚さ、くもり距離、および/またはくもりカラーを設定する。リアルタイムでの現実世界の空間のライブ画像(たとえばRGB、YUVなど)および深度データ(たとえば深度マップ)が取り込まれる。深度マップから、最小(MIN)深度値および最大(MAX)深度値が決定され得る。深度マップを[0,1]という範囲に変換することによって、深度範囲が正規化され得る。アンカーは、たとえば、現実世界の空間のライブ画像における被写体上に配置され得る。
【0047】
例示的な一実現化例では、画面空間におけるアンカー位置が決定される。アンカー位置(または複数のアンカー位置)は、画面空間における指標によって表現され得る。しかしながら、代替的なまたは追加の手法では、アンカー位置(または複数のアンカー位置)は、たとえば、画面空間におけるスクリーンタッチに基づいて格納され得る。アンカーの深度が要求され(たとえば、APIへの関数呼出し)、アンカーの画面座標に関連付けられた深度値を取得し得る。アンカーの画面空間位置は、デバイスの現実世界の空間位置に変換され得る。アンカーの現実世界の位置(たとえば3D位置)は、アンカー位置が画面空間にない場合にアンカー位置を失うことなくデバイス運動を可能にするために格納され得る。最後に、アンカー位置は視界空間位置に変換可能であり、深度は、最小(MIN)深度値および最大(MAX)深度値に基づいて正規化され得る(たとえば、フォーカスされている被写体の強調を引き起こし得る)。2次元(2D)ディスプレイを有するデバイス上にデータを表示することは、レンダリングされた場合に3Dとして現われるように2Dデータを(たとえばガウスフィルターで)フィルタリングすることにより、3Dディスプレイを模倣することを含み得る。この手法は、2.5D RGBDデータとしてのレンダリングと呼ばれることがある。したがって、被写界深度データは、2.5D RGBDデータとしてレンダリングされ得る。
【0048】
アンカー深度位置が決定され、正規化される。正規化された深度は、D_a=(d_a-MIN)/MAX-MIN)であり得る。ここで、d_aはアンカー深度であり、D_aは正規化された深度である。次に、各画素が、くもり効果アルゴリズムに基づいて編集される。くもり効果アルゴリズムは、各画素について、くもり係数=saturate((-深度値-くもり距離)/くもり厚さ)(fog_factor = saturate ((-depth_value-fog_distance)/fog_thickness))であり得る。代替的なくもり効果アルゴリズムは、各画素について、くもり係数=1.0-exp((-深度値-くもり距離)*くもり厚さ)(fog_factor = 1.0-exp((-depth_value-fog_distance)*fog_thickness))であり得る。
【0049】
くもったライブ画像のディスプレイは、現実世界の空間のライブ画像の(カメラによって取り込まれたような)元の画素カラーとくもり係数(fog_factor)によるくもりカラーとの間の線形補間をレンダリングすることであり得る。最終カラー=元のカラー*(1-くもり係数)+くもり係数*くもりカラー(Final_color = original color*(1-fog_factor)+fog_factor*fog_color)が成立する。結果として生じるレンダリングされた画像は、デバイス上に表示され得る。ユーザインターフェイスはユーザに、くもり効果変更を行ない、ディスプレイのスナップショットを撮って画像をデバイスのメモリに保存するオプションを選択するオプションを与えることができる。
【0050】
以下のリスティング(リスティング1)は、ラインコードとしての別の使用事例を示す。この使用事例は、アパーチャ効果を有する例示的なアンカーされた焦点である。
【0051】
【0052】
図5は、少なくとも1つの例示的な実施形態に従った画像処理システムのブロック図を示す。
図5に示すように、画像処理システム500は、少なくとも1つのプロセッサ505と、少なくとも1つのメモリ510と、コントローラ520と、バッファ525と、アンカーモジュール530と、アルゴリズムモジュール535とを含む。少なくとも1つのプロセッサ505と、少なくとも1つのメモリ510と、コントローラ520と、バッファ525と、アンカーモジュール530と、アルゴリズムモジュール535とは、バス515を介して通信可能に結合される。
【0053】
少なくとも1つのプロセッサ505は、少なくとも1つのメモリ510上に格納された命令を実行し、それにより、ここに説明されるさまざまな特徴および機能、もしくは、追加のまたは代替的な特徴および機能を実現するために利用され得る。少なくとも1つのプロセッサ505は、汎用プロセッサであり得る。少なくとも1つのプロセッサ505は、グラフィックス処理ユニット(GPU)であり得る。少なくとも1つのプロセッサ505と少なくとも1つのメモリ510とは、さまざまな他の目的のために利用され得る。特に、少なくとも1つのメモリ510は、ここに説明されるモジュールのうちのいずれか1つを実現するために使用され得るさまざまなタイプのメモリならびに関連ハードウェアおよびソフトウェアの一例を表わし得る。
【0054】
少なくとも1つのメモリ510は、画像処理システム500に関連付けられたデータおよび/または情報を格納するように構成され得る。たとえば、少なくとも1つのメモリ510は、画像を取り込み、および/または編集するようにユーザインターフェイスを実現することに関連付けられたコードを格納するように構成され得る。たとえば、少なくとも1つのメモリ510は、画像、ビデオのフレーム、プレビュー画像などを編集することに関連付けられたコードを格納するように構成され得る。少なくとも1つのメモリ510は、プロセッサ505によって実行されるとプロセッサ505にここに説明される手法のうちの1つ以上を実現させるコードを有する非一時的コンピュータ読取可能媒体であり得る。少なくとも1つのメモリ510は、共有リソースであり得る。たとえば、画像処理システム500は、より大きいシステム(たとえば、サーバ、パーソナルコンピュータ、モバイルデバイスなど)の要素であり得る。したがって、少なくとも1つのメモリ510は、より大きいシステム内の他の要素(たとえば、画像/ビデオ提供、ウェブ閲覧、または有線/無線通信)に関連付けられたデータおよび/または情報を格納するように構成され得る。
【0055】
コントローラ520は、さまざまな制御信号を生成し、制御信号を画像処理システム500におけるさまざまなブロックに通信するように構成され得る。コントローラ520は、ここに説明される手法を実現するように制御信号を生成するように構成され得る。コントローラ520は、例示的な実施形態に従って画像、画像の一部、複数の画像などの画素を修正するようにアルゴリズムモジュール535を制御するように構成され得る。たとえば、コントローラ520は、画像編集を実現するためのパラメータに対応する制御信号を生成し得る。
【0056】
アルゴリズムモジュール535は、画像を編集するためのアルゴリズムを格納するように構成され得る。アルゴリズムモジュール535は、画像を編集するためのアルゴリズムの(たとえばプロセッサ505を使用した)実行を引き起こすように構成され得る。アルゴリズムは、少なくとも、画像(および/または被写体)強調、ぼかし、くもり、フィルター、エッジハイライト処理、トリミング、カラー変更、特殊効果、歪みなどを含み得る。複数の画像および/または被写体編集アルゴリズム(またはアルゴリズム機能)がリストされているが、実現化例はそれらに限定されない。バッファ525は、画像編集の前および/または後に画像を格納するように構成されたメモリ(たとえば一時的または揮発性メモリ)であり得る。バッファ525は、少なくとも1つのメモリ510の予備部分であり得る。それに代えて、またはそれに加えて、バッファ525は、スタンドアロンメモリであり得る。
【0057】
いくつかの実現化例では、アンカーモジュール530は、画像上にアンカーを配置すること、画像におけるアンカーの位置を決定すること、画像におけるアンカーの深度を決定すること、アンカーの正規化された深度を決定すること、画像におけるアンカー位置にある被写体を決定することなど(たとえば、ここに説明される他のアンカー機能)を行なうように構成され得る(または支援し得る)。例示的な実現化例では、アンカーモジュール530およびアルゴリズムモジュール535はともに、
図1~4に関して上述された手法を実現するように構成され得る。
【0058】
図6は、ここに説明される手法を用いて使用され得るコンピュータデバイス600およびモバイルコンピュータデバイス650の一例を示す。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス650は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は単なる例示であることが意図されており、本文書に記載のおよび/または請求項に記載の本発明の実現化例を限定するよう意図されてはいない。
【0059】
コンピューティングデバイス600は、プロセッサ602と、メモリ604と、記憶装置606と、メモリ604および高速拡張ポート610に接続している高速インターフェイス608と、低速バス614および記憶装置606に接続している低速インターフェイス612とを含む。コンポーネント602、604、606、608、610、および612の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ602は、コンピューティングデバイス600内で実行される命令を処理可能であり、これらの命令は、GUIのためのグラフィック情報を、高速インターフェイス608に結合されたディスプレイ616などの外部入力/出力デバイス上に表示するために、メモリ604内または記憶装置606上に格納された命令を含む。他の実現化例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用され得る。また、複数のコンピューティングデバイス600が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の部分を提供する。
【0060】
メモリ604は、情報をコンピューティングデバイス600内に格納する。一実現化例では、メモリ604は1つまたは複数の揮発性メモリユニットである。別の実現化例では、メモリ604は1つまたは複数の不揮発性メモリユニットである。メモリ604はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
【0061】
記憶装置606は、コンピューティングデバイス600のためのマスストレージを提供可能である。一実現化例では、記憶装置606は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、もしくは、ストレージエリアネットワークまたは他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラム製品が情報担体において有形に具現化され得る。コンピュータプログラム製品はまた、実行されると上述のような1つ以上の方法を行なう命令を含み得る。情報担体は、メモリ604、記憶装置606、またはプロセッサ602上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【0062】
高速インターフェイス608はコンピューティングデバイス600のための帯域幅集約的な動作を管理し、一方、低速コントローラ612はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示に過ぎない。一実現化例では、高速インターフェイス608は、メモリ604、ディスプレイ616に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート610に結合される。この実現化例では、低速コントローラ612は、記憶装置606および低速バス614に結合される。さまざまな通信ポート(たとえば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入力/出力デバイスに、もしくは、スイッチまたはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合され得る。
【0063】
コンピューティングデバイス600は、図に示すように多くの異なる形態で実現され得る。たとえばそれは、標準サーバ620として、またはそのようなサーバのグループで複数回実現され得る。それはまた、ラックサーバシステム624の一部として実現され得る。加えて、それは、ラップトップコンピュータ622などのパーソナルコンピュータにおいて実現され得る。これに代えて、コンピューティングデバイス600からのコンポーネントは、デバイス650などのモバイルデバイス(図示せず)における他のコンポーネントと組合され得る。そのようなデバイスの各々は、コンピューティングデバイス600、650のうちの1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス600、650で構成されてもよい。
【0064】
コンピューティングデバイス650は、他のコンポーネントの中でもとりわけ、プロセッサ652と、メモリ664と、ディスプレイ654などの入力/出力デバイスと、通信インターフェイス666と、トランシーバ668とを含む。デバイス650にはまた、追加のストレージを提供するために、マイクロドライブまたは他のデバイスなどの記憶装置が設けられてもよい。コンポーネント650、652、664、654、666、および668の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたは他の態様で適宜搭載され得る。
【0065】
プロセッサ652は、メモリ664に格納された命令を含む、コンピューティングデバイス650内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現され得る。プロセッサは、たとえば、ユーザインターフェイス、デバイス650が実行するアプリケーション、およびデバイス650による無線通信の制御といった、デバイス650の他のコンポーネント同士の連携を提供し得る。
【0066】
プロセッサ652は、ディスプレイ654に結合された制御インターフェイス658およびディスプレイインターフェイス656を介してユーザと通信し得る。ディスプレイ654は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス656は、ディスプレイ654を駆動してグラフィカル情報および他の情報をユーザに提示するための適切な回路を含み得る。制御インターフェイス658は、ユーザからコマンドを受信し、それらをプロセッサ652に送出するために変換し得る。加えて、デバイス650と他のデバイスとの近接エリア通信を可能にするように、外部インターフェイス662がプロセッサ652と通信した状態で設けられ得る。外部インターフェイス662は、たとえば、ある実現化例では有線通信を提供し、他の実現化例では無線通信を提供してもよく、複数のインターフェイスも使用されてもよい。
【0067】
メモリ664は、情報をコンピューティングデバイス650内に格納する。メモリ664は、1つまたは複数のコンピュータ読取可能媒体、1つまたは複数の揮発性メモリユニット、もしくは、1つまたは複数の不揮発性メモリユニットのうちの1つ以上として実現され得る。拡張メモリ674も設けられ、拡張インターフェイス672を介してデバイス650に接続され得る。拡張インターフェイス672は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る。そのような拡張メモリ674は、デバイス650に余分の格納スペースを提供してもよく、もしくは、デバイス650のためのアプリケーションまたは他の情報も格納してもよい。具体的には、拡張メモリ674は、上述のプロセスを実行または補足するための命令を含んでいてもよく、安全な情報も含んでいてもよい。このため、たとえば、拡張メモリ674はデバイス650のためのセキュリティモジュールとして設けられてもよく、デバイス650の安全な使用を許可する命令でプログラミングされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を載せるといったように、安全なアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
【0068】
メモリはたとえば、以下に説明されるようなフラッシュメモリおよび/またはNVRAMメモリを含み得る。一実現化例では、コンピュータプログラム製品が情報担体において有形に具現化される。コンピュータプログラム製品は、実行されると上述のような1つ以上の方法を行なう命令を含む。情報担体は、メモリ664、拡張メモリ674、またはプロセッサ652上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体であり、たとえばトランシーバ668または外部インターフェイス662を通して受信され得る。
【0069】
デバイス650は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス666を介して無線通信し得る。通信インターフェイス666は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供し得る。そのような通信は、たとえば無線周波数トランシーバ668を介して生じ得る。加えて、ブルートゥース、Wi-Fi、または他のそのようなトランシーバ(図示せず)などを使用して、短距離通信が生じ得る。加えて、GPS(Global Positioning System:全地球測位システム)レシーバモジュール670が、追加のナビゲーション関連および位置関連無線データをデバイス650に提供してもよく、当該データは、デバイス650上で実行されるアプリケーションによって適宜使用されてもよい。
【0070】
デバイス650はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック660を使用して、音声通信してもよい。音声コーデック660はまた、たとえばデバイス650のハンドセットにおいて、スピーカを介するなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話からの音を含んでいてもよく、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでいてもよく、デバイス650上で動作するアプリケーションが生成する音も含んでいてもよい。
【0071】
コンピューティングデバイス650は、図に示すように多くの異なる形態で実現され得る。たとえばそれは、携帯電話680として実現され得る。それはまた、スマートフォン682、携帯情報端末、または他の同様のモバイルデバイスの一部として実現され得る。
【0072】
一般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納した)非一時的コンピュータ読取可能媒体、および/または方法が、現実世界の空間の一部として画像を受信するステップと、画像上にアンカーを配置するステップと、アンカーの位置を決定するステップと、アンカーの位置に関連付けられた深度を決定するステップと、深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップと、編集された画像をレンダリングするステップとを含む方法を用いて、プロセスを行なうことができる。
【0073】
実現化例は、以下の特徴のうちの1つ以上を含み得る。たとえば、取り込まれた画像はライブ画像であってもよく、そのレンダリングは、深度に基づいた画像編集アルゴリズムを使用して絶えず修正される。アンカーは、取り込まれた画像におけるある深度に焦点を配置可能であり、取り込まれた画像の視点が変更され、焦点は深度上にとどまり得る。深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップは、深度のしきい値距離内の取り込まれた画像の画素を含む画素の第1の部分に第1のアルゴリズムを適用するステップと、取り込まれた画像の残りの画素を含む画素の第2の部分に第2のアルゴリズムを適用するステップとを含み得る。
【0074】
たとえば、深度に基づいた画像編集アルゴリズムを取り込まれた画像に適用するステップは、画像に関連付けられた被写体を決定するステップと、深度に基づいて被写体のエッジを決定するステップと、被写体のエッジに関連付けられた取り込まれた画像の画素を含む画素の第1の部分に第1のアルゴリズムを適用するステップと、取り込まれた画像の残りの画素を含む画素の第2の部分に第2のアルゴリズムを適用するステップとを含み得る。アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた深度マップを取得するステップを含み得る。
【0075】
たとえば、アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた深度マップを取得するステップと、取り込まれた画像に関連付けられた最小深度値を決定するステップと、取り込まれた画像に関連付けられた最大深度値を決定するステップと、最小深度値および最大深度値に基づいて深度マップを正規化するステップと、位置に関連付けられた深度を正規化された深度値として決定するステップとを含み得る。アンカーの位置に関連付けられた深度を決定するステップは、取り込まれた画像に関連付けられた層状深度を取得するステップを含み、アンカーの深度は深度指数を有する。方法またはシステムは、画像編集ツールを選択するステップをさらに含み、画像編集ツールは画像編集アルゴリズムに対応する。
【0076】
例示的な実施形態はさまざまな修正および代替的形態を含み得るが、それらの実施形態は例として図面に示されており、ここに詳細に説明されるであろう。しかしながら、例示的な実施形態を開示された特定の形態に限定する意図はなく、それどころか、例示的な実施形態は請求の範囲内に該当するすべての修正、均等物、および代替物を網羅することが理解されるべきである。同じ番号は、図の説明全体にわたって同じ要素を指す。
【0077】
ここに説明されるシステムおよび手法のさまざまな実現化例は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらのさまざまな実現化例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能である1つ以上のコンピュータプログラムにおける実現化例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令を送受信するように結合されてもよい。ここに説明されるシステムおよび手法のさまざまな実現化例は、ソフトウェア局面とハードウェア局面とを組合せることができる回路、モジュール、ブロック、またはシステムとして実現可能であり、および/または、ここに概してそう呼ばれ得る。たとえば、モジュールは、プロセッサ(たとえば、シリコン基板、GaAs基板などの上に形成されたプロセッサ)または何らかの他のプログラマブルデータ処理装置上で実行される機能/行為/コンピュータプログラム命令を含み得る。
【0078】
上述の例示的な実施形態のうちのいくつかは、フローチャートとして示されるプロセスまたは方法として説明される。これらのフローチャートは動作を逐次プロセスとして説明しているが、動作の多くは、並列、同時または一斉に行なわれてもよい。加えて、動作の順序は並び替えられてもよい。それらの動作が完了されるとプロセスは終了され得るが、図に含まれていない追加のステップも有していてもよい。これらのプロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。
【0079】
それらのうちのいくつかがフローチャートによって示されている、上述された方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実現される場合、必要なタスクを行なうプログラムコードまたはコードセグメントは、記憶媒体などの機械読取可能媒体またはコンピュータ読取可能媒体に格納され得る。プロセッサが必要なタスクを行ない得る。
【0080】
ここに開示された具体的な構造詳細および機能詳細は、例示的な実施形態を説明するための代表的なものに過ぎない。しかしながら、例示的な実施形態は、多くの代替的な形態で具現化され、ここに述べられた実施形態のみに限定されると解釈されるべきでない。
【0081】
第1、第2などといった用語は、さまざまな要素を説明するためにここに使用され得るが、これらの要素はこれらの用語によって限定されるべきでない、ということが理解されるであろう。これらの用語は、1つの要素を別の要素と区別するために使用されているに過ぎない。たとえば、例示的な実施形態の範囲から逸脱することなく、第1の要素を第2の要素と称してもよく、同様に、第2の要素を第1の要素と称してもよい。ここに使用されるように、「および/または」という用語は、関連付けられる列挙された項目の1つ以上のいずれかおよびすべての組合せを含む。
【0082】
ある要素が別の要素に接続または結合されると称される場合、ある要素は別の要素に直接接続または結合され得るか、もしくは介在要素が存在し得る、ということが理解されるであろう。対照的に、ある要素が別の要素に直接接続または直接結合されると称される場合、介在要素は存在しない。要素間の関係を説明するために使用される他の文言は、類似の態様(たとえば、「間に」と「間に直接」、「隣接」と「直接隣接」など)で解釈されるべきである。
【0083】
ここに使用される用語は特定の実施形態を説明するためのものに過ぎず、例示的な実施形態の限定であるよう意図されてはいない。ここに使用されるように、単数形は、文脈が別の態様を明らかに示していない限り、複数形も含むよう意図される。「備える(comprises, comprising)」および/または「含む(includes, including)」という用語は、ここに使用される場合、言及された特徴、整数、ステップ、動作、要素および/またはコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネントおよび/またはそれらのグループの存在または追加を排除しない、ということがさらに理解されるであろう。
【0084】
また、いくつかの代替的な実現化例では、言及された機能/行為が、図に示された順序とは異なって生じてもよい。たとえば、連続して示される2つの図は実際には、関与する機能性/行為に依存して、同時に実行されてもよく、または、時には逆の順序で実行されてもよい。
【0085】
別の態様で定義されていない限り、ここに使用されるすべての用語(技術用語および科学用語を含む)は、例示的な実施形態が属する技術の当業者によって一般に理解されているのと同じ意味を有する。さらに、たとえば一般に使用されている辞書で定義されているような用語は、関連技術の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、ここに明らかにそう定義されていない限り、理想化されたまたは過度に形式的な意味で解釈されない、ということが理解されるであろう。
【0086】
ソフトウェア、または、コンピュータメモリ内でのデータビットに対する動作のアルゴリズムおよび記号的表現に関して、上述の例示的な実施形態および対応する詳細な説明の部分が提示される。これらの説明および表現は、当業者が自分の研究の内容を他の当業者に効果的に伝えるものである。アルゴリズムとは、その用語がここに使用される場合、および一般的に使用される場合、所望の結果に至るステップの首尾一貫したシーケンスであると考えられる。これらのステップは、物理量の物理的操作を必要とするものである。必ずではないものの、通常は、これらの量は、格納、転送、組合せ、比較、および別の態様での操作が可能である光学信号、電気信号、または磁気信号の形態を取る。これらの信号をビット、値、要素、記号、文字、項、または数字などと称することは、主に一般的な使用の理由により、時に便利であることが証明されている。
【0087】
上述の例示的な実施形態において、プログラムモジュールまたは機能的プロセスとして実現され得る(たとえばフローチャートの形態での)行為および動作の記号的表現への参照は、特定のタスクを行ない、または特定の抽象データタイプを実現するとともに、既存の構造要素で既存のハードウェアを使用して記述および/または実現され得る、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。そのような既存のハードウェアは、1つ以上の中央処理装置(Central Processing Unit:CPU)、デジタル信号プロセッサ(digital signal processor:DSP)、特定用途向け集積回路、または、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)コンピュータなどを含み得る。
【0088】
しかしながら、これらおよび同様の用語はすべて、適切な物理量に関連付けられるべきであり、これらの量に適用された便利なラベルに過ぎない、ということが念頭に置かれるべきである。特に別記されない限り、あるいは説明から明らかであるように、表示の処理、コンピューティング、計算、または判断といった用語は、コンピュータシステムのレジスタおよびメモリ内で物理的な電子量として表わされるデータを操作し、当該データを、コンピュータシステムメモリ、レジスタ、もしくは他のそのような情報記憶、送信または表示装置内の物理量として同様に表わされる他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指す。
【0089】
また、例示的な実施形態のソフトウェアによって実現される局面は典型的には、何らかの形態の非一時的プログラム記憶媒体上で符号化されるか、または、何らかのタイプの伝送媒体上で実現される。プログラム記憶媒体は、磁気的(たとえば、フロッピーディスクまたはハードドライブ)であるか、または光学的(たとえば、コンパクトディスク読み取り専用メモリ、すなわちCD ROM)であってもよく、読み取り専用またはランダムアクセスであってもよい。同様に、伝送媒体は、当該技術について公知であるツイストペア線、同軸ケーブル、光ファイバ、または何らかの他の好適な伝送媒体であってもよい。例示的な実施形態は、所与の実現化例のこれらの局面によって限定されない。
【0090】
最後に、添付の請求の範囲は、ここに説明された特徴の特定の組合せを述べているが、本開示の範囲は、請求されるその特定の組合せに限定されず、代わりに、その特定の組合せが現時点で添付の請求の範囲において具体的に列挙されているか否かに関わらず、ここに開示された特徴または実施形態の任意の組合せを包含するよう広がる。