IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-顔に対する射影歪み補正 図1
  • 特許-顔に対する射影歪み補正 図2
  • 特許-顔に対する射影歪み補正 図3
  • 特許-顔に対する射影歪み補正 図4
  • 特許-顔に対する射影歪み補正 図5
  • 特許-顔に対する射影歪み補正 図6
  • 特許-顔に対する射影歪み補正 図7
  • 特許-顔に対する射影歪み補正 図8
  • 特許-顔に対する射影歪み補正 図9
  • 特許-顔に対する射影歪み補正 図10
  • 特許-顔に対する射影歪み補正 図11
  • 特許-顔に対する射影歪み補正 図12
  • 特許-顔に対する射影歪み補正 図13
  • 特許-顔に対する射影歪み補正 図14
  • 特許-顔に対する射影歪み補正 図15
  • 特許-顔に対する射影歪み補正 図16
  • 特許-顔に対する射影歪み補正 図17
  • 特許-顔に対する射影歪み補正 図18
  • 特許-顔に対する射影歪み補正 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-21
(45)【発行日】2024-03-01
(54)【発明の名称】顔に対する射影歪み補正
(51)【国際特許分類】
   G06T 1/00 20060101AFI20240222BHJP
   H04N 23/60 20230101ALI20240222BHJP
【FI】
G06T1/00 340A
H04N23/60
【請求項の数】 17
【外国語出願】
(21)【出願番号】P 2022163357
(22)【出願日】2022-10-11
(62)【分割の表示】P 2020562661の分割
【原出願日】2018-05-07
(65)【公開番号】P2023011634
(43)【公開日】2023-01-24
【審査請求日】2022-11-01
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シー,イーチャン
(72)【発明者】
【氏名】リアン,チア-カイ
【審査官】三沢 岳志
(56)【参考文献】
【文献】中国特許出願公開第105046657(CN,A)
【文献】米国特許出願公開第2017/0069056(US,A1)
【文献】特開2004-038973(JP,A)
【文献】Frederic DEVERNAY et al.,Straight lines have to be straight,Machine Vision and Applications,2001年08月,Vol. 13,No. 1,pp. 14-24,DOI: 10.1007/PL00013269
【文献】Ohad FRIED et al.,“Perspective-aware manipulation of portrait photos”,ACM Transactions on Graphics,2016年07月11日,Vol. 35,No. 4,pp. 1-10,DOI: 10.1145/2897824.2925933
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
H04N 23/60
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実現される方法であって、
コンピューティングデバイスが、第1の対象領域を含む画像を受信することを含み、前記第1の対象領域は、前記画像の全体よりも小さく、
前記コンピュータによって実現される方法はさらに、
前記画像における射影歪みを補正することを含み、
前記画像における射影歪みを補正することは、
前記コンピューティングデバイスが、前記第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも2つの顔関連変換を前記第1の対象領域に適用することと、
前記コンピューティングデバイスが、前記少なくとも2つの顔関連変換によって少なくとも修正された前記画像の前記全体の残りの部分における1つ以上のエッジの直線性を保存するよう、エッジ関連変換を適用することとによって行われ、
前記コンピュータによって実現される方法はさらに、
前記コンピューティングデバイスが、補正された前記画像を提供することを含む、コンピュータによって実現される方法。
【請求項2】
前記第1の対象領域は、第1の人間の顔を表す、請求項1に記載のコンピュータによって実現される方法。
【請求項3】
前記少なくとも2つの顔関連変換に基づいて前記第1の対象領域についてのアスペクト比を決定することによって、前記少なくとも2つの顔関連変換に関連付けられる第1のコストを決定することと、
前記エッジ関連変換に関連付けられる第2のコストを決定することとをさらに含み、
前記射影歪みを補正することは、前記第1のコストおよび前記第2のコストを含むコスト関数の最適化に基づく、請求項1または2に記載のコンピュータによって実現される方法。
【請求項4】
前記アスペクト比を決定することは、
前記少なくとも2つの顔関連変換の第1の変換を使用して、前記第1の対象領域を第1の空間にマッピングすることと、
前記少なくとも2つの顔関連変換の第2の変換を使用して、前記第1の対象領域を第2の空間にマッピングすることとを含み、
前記アスペクト比は、前記第2の空間の面積に対する前記第1の空間の面積の比に基づく、請求項3に記載のコンピュータによって実現される方法。
【請求項5】
前記第1の変換は透視変換を含み、前記第2の変換はステレオ変換を含む、請求項に記載のコンピュータによって実現される方法。
【請求項6】
前記少なくとも2つの顔関連変換は、前記第1の対象領域の回転、前記第1の対象領域の平行移動、および/または、前記第1の対象領域のスケーリングを含む、請求項1~5のいずれかに記載のコンピュータによって実現される方法。
【請求項7】
前記コンピューティングデバイスが、前記画像を表示することと、
前記コンピューティングデバイスが、前記画像における前記射影歪みを補正するユーザ指示を受信することとをさらに含み、
前記射影歪みを補正することは、前記ユーザ指示に応答して実行される、請求項1~のいずれかに記載のコンピュータによって実現される方法。
【請求項8】
前記第1の対象領域は、第1の顔を表し、前記画像は、第2の顔を含む第2の対象領域を含み、
前記コンピュータによって実現される方法はさらに、
前記エッジ関連変換を適用する前に前記コンピューティングデバイスが、前記第2の対象領域の1つ以上の幾何学的歪みを補正するよう、前記少なくとも2つの顔関連変換を前記第2の対象領域に適用することをさらに含み、
前記エッジ関連変換は、前記第1の対象領域および前記第2の対象領域の外側の前記画像の部分に適用される、請求項1~7のいずれかに記載のコンピュータによって実現される方法。
【請求項9】
コンピューティングデバイスであって、
1つ以上のプロセッサと、
コンピュータ読取可能命令が格納されている1つ以上のコンピュータ読取可能媒体とを含み、前記コンピュータ読取可能命令は、前記1つ以上のプロセッサによって実行されると、前記コンピューティングデバイスに機能を実行させ、
前記機能は、
第1の対象領域を含む画像を受信することを含み、前記第1の対象領域は、前記画像の全体よりも小さく、
前記機能はさらに、
前記画像における射影歪みを補正することを含み、
前記画像における射影歪みを補正することは、
前記第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも2つの顔関連変換を前記第1の対象領域に適用することと、
前記少なくとも2つの顔関連変換によって少なくとも修正された前記画像の前記全体の残りの部分における1つ以上のエッジの直線性を保存するよう、エッジ関連変換を適用することとによって行われ、
前記機能はさらに、
補正された前記画像を提供することを含む、コンピューティングデバイス。
【請求項10】
前記第1の対象領域は、第1の人間の顔を表す、請求項9に記載のコンピューティングデバイス。
【請求項11】
前記機能はさらに、
前記少なくとも2つの顔関連変換に基づいて前記第1の対象領域についてのアスペクト比を決定することによって、前記少なくとも2つの顔関連変換に関連付けられる第1のコストを決定することと、
前記エッジ関連変換に関連付けられる第2のコストを決定することとをさらに含み、
前記射影歪みを補正することは、前記第1のコストおよび前記第2のコストを含むコスト関数の最適化に基づく、請求項9または請求項10に記載のコンピューティングデバイス。
【請求項12】
前記アスペクト比を決定することを含む前記機能は、
前記少なくとも2つの顔関連変換の第1の変換を使用して、前記第1の対象領域を第1の空間にマッピングすることと、
前記少なくとも2つの顔関連変換の第2の変換を使用して、前記第1の対象領域を第2の空間にマッピングすることとを含み、
前記アスペクト比は、前記第2の空間の面積に対する前記第1の空間の面積の比に基づく、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記第1の変換は透視変換を含み、前記第2の変換はステレオ変換を含む、請求項12に記載のコンピューティングデバイス。
【請求項14】
前記少なくとも2つの顔関連変換は、前記第1の対象領域の回転、前記第1の対象領域の平行移動、および/または、前記第1の対象領域のスケーリングを含む、請求項9~13のいずれかに記載のコンピューティングデバイス。
【請求項15】
前記機能はさらに、
前記コンピューティングデバイスが、前記画像を表示することと、
前記コンピューティングデバイスが、前記画像における前記射影歪みを補正するユーザ指示を受信することとをさらに含み、
前記射影歪みを補正することは、前記ユーザ指示に応答して実行される、請求項9~14のいずれかに記載のコンピューティングデバイス。
【請求項16】
前記第1の対象領域は、第1の顔を表し、前記画像は、第2の顔を含む第2の対象領域を含み、
前記機能はさらに、
前記エッジ関連変換を適用する前に前記コンピューティングデバイスが、前記第2の対象領域の1つ以上の幾何学的歪みを補正するよう、前記少なくとも2つの顔関連変換を前記第2の対象領域に適用することをさらに含み、
前記エッジ関連変換は、前記第1の対象領域および前記第2の対象領域の外側の前記画像の部分に適用される、請求項9~15のいずれかに記載のコンピューティングデバイス。
【請求項17】
請求項1~8のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
携帯電話、パーソナルコンピュータおよびタブレットを含む多くの現代のコンピューティングデバイスは、スチルカメラおよび/またはビデオカメラといった撮像デバイスを含む。撮像デバイスは、人々、動物、風景および/または対象物を含む画像のような画像を撮像し得る。
【0002】
いくつかの撮像デバイスおよび/またはコンピューティングデバイスは、撮像された画像を補正し得る。たとえば、いくつかの撮像デバイスは、フラッシュ照明などの明るい光を使用して撮像された画像内に存在し得る人々および動物の赤く見える目のようなアーチファクトを除去する「赤目」補正を提供し得る。撮像された画像が補正された後、当該補正された画像は、保存され、表示され、送信され、紙に印刷され、および/または、他の態様で利用され得る。
【発明の概要】
【0003】
概要
1つの局面では、コンピュータによって実現される方法が提供される。画像を表す画像データが受け取られる。画像における第1の対象領域に対応する第1の画像エリアが決定される。画像についてのワーピングメッシュが決定される。第1の画像エリアに関連付けられるワーピングメッシュの第1の部分が決定される。ワーピングメッシュについてのコスト関数が決定される。ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第1の部分に関連付けられる第1のコストであって、画像において表されるような第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第1の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む第1のコストを決定することと、ワーピングメッシュに関連付けられる第2のコストであって、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連変換のコストを含む第2のコストを決定することとによって行われる。ワーピングメッシュについてのコスト関数の最適化に基づいて最適化メッシュが決定される。最適化メッシュに基づいて画像の第1の画像エリアが修正される。
【0004】
別の態様では、コンピューティングデバイスが提供される。コンピューティングデバイスは、1つ以上のプロセッサと、コンピュータ読取可能命令が格納されている1つ以上のコンピュータ読取可能媒体とを含み、コンピュータ読取可能命令は、1つ以上のプロセッサによって実行されると、コンピューティングデバイスに、機能を実行させる。上記機能は、画像を表す画像データを受け取ることと、画像における第1の対象領域に対応する第1の画像エリアを決定することと、画像についてのワーピングメッシュを決定することと、第1の画像エリアに関連付けられるワーピングメッシュの第1の部分を決定することと、ワーピングメッシュについてのコスト関数を決定することとを含み、ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第1の部分に関連付けられる第1のコストであって、画像において表されるような第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第1の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む第1のコストを決定することと、ワーピングメッシュに関連付けられる第2のコストであって、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連変換のコストを含む第2のコストを決定することとによって行われ、上記機能はさらに、ワーピングメッシュについてのコスト関数の最適化に基づいて、最適化メッシュを決定することと、最適化メッシュに基づいて、画像の第1の画像エリアを修正することとを含む。
【0005】
別の局面では、コンピューティングデバイスが提供される。コンピューティングデバイスは、画像を表す画像データを受け取るための手段と、画像における第1の対象領域に対応する第1の画像エリアを決定するための手段と、画像についてのワーピングメッシュを決定するための手段と、第1の画像エリアに関連付けられるワーピングメッシュの第1の部分を決定するための手段と、ワーピングメッシュについてのコスト関数を決定するための手段とを含み、ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第1の部分に関連付けられる第1のコストであって、画像において表されるような第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第1の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む第1のコストを決定することと、ワーピングメッシュに関連付けられる第2のコストであって、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連変換のコストを含む第2のコストを決定することとによって行われ、コンピューティングデバイスはさらに、ワーピングメッシュについてのコスト関数の最適化に基づいて、最適化メッシュを決定するための手段と、最適化メッシュに基づいて、画像の第1の画像エリアを修正するための手段とを含む。
【0006】
別の態様では、製造物が提供される。製造物は、コンピュータ読取可能命令が格納されている1つ以上のコンピュータ読取可能媒体を含み、コンピュータ読取可能命令は、コンピューティングデバイスの1つ以上のプロセッサによって実行されると、コンピューティングデバイスに、機能を実行させる。上記機能は、画像を表す画像データを受け取ることと、画像における第1の対象領域に対応する第1の画像エリアを決定することと、画像についてのワーピングメッシュを決定することと、第1の画像エリアに関連付けられるワーピングメッシュの第1の部分を決定することと、ワーピングメッシュについてのコスト関数を決定することとを含み、ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第1の部分に関連付けられる第1のコストであって、画像において表されるような第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第1の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む第1のコストを決定することと、ワーピングメッシュに関連付けられる第2のコストであって、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連変換のコストを含む第2のコストを決定することとによって行われ、上記機能はさらに、ワーピングメッシュについてのコスト関数の最適化に基づいて、最適化メッシュを決定することと、最適化メッシュに基づいて、画像の第1の画像エリアを修正することとを含む。
【0007】
上記の概要は、単に例示であって、如何なる態様でも限定を意図していない。上に記載した例示的な局面、実施形態および特徴に加えて、さらに別の局面、実施形態および特徴が、図および以下の詳細な説明ならびに添付の図面を参照することによって明らかになるであろう。
【図面の簡単な説明】
【0008】
図1】例示的な実施形態に従った方法のフローチャートである。
図2】例示的な実施形態に従った、顔ボックスおよび拡張顔ボックスを有する入力画像を示す図である。
図3】例示的な実施形態に従った、図2の入力画像についての画像マスクを示す図である。
図4】例示的な実施形態に従った、図2の入力画像についてのワーピングメッシュを示す図である。
図5】例示的な実施形態に従った、図2の入力画像についての最適化メッシュを示す図である。
図6】例示的な実施形態に従った、図2の入力画像の顔補正を含む出力画像を示す図である。
図7】例示的な実施形態に従った方法のフローチャートである。
図8】例示的な実施形態に従った方法のフローチャートである。
図9】例示的な実施形態に従った方法のフローチャートである。
図10】例示的な実施形態に従った方法のフローチャートである。
図11】例示的な実施形態に従った方法のフローチャートである。
図12】例示的な実施形態に従った方法のフローチャートである。
図13】例示的な実施形態に従った方法のフローチャートである。
図14】例示的な実施形態に従った、2つの顔を表す入力画像について、対応する出力画像において両方の顔が補正されるシナリオを示す図である。
図15】例示的な実施形態に従った、4つの顔を表す入力画像について、対応する出力画像において4つの顔のうち3つの顔が補正されるシナリオを示す図である。
図16】例示的な実施形態に従った、コンピューティングデバイスが、入力画像と、制御部とを表示するシナリオを示す図であって、当該制御部は、選択されると、入力画像において表される顔の補正を含む対応する出力画像1550をコンピューティングデバイスに生成させる図である。
図17】例示的な実施形態に従った分散コンピューティングアーキテクチャを示す図である。
図18】例示的な実施形態に従った例示的なコンピューティングデバイスの機能ブロック図である。
図19】例示的な実施形態に従った方法のフローチャートである。
【発明を実施するための形態】
【0009】
詳細な説明
対象物を撮影すると、3次元環境が2次元画像として再現される。これにより、空間における3次元点が2次元座標系に投影される。このような投影の結果として、さまざまな歪みが生じ得る。たとえば、射影歪み(perspective distortion)は、画像が撮像された画角が画像を見る画角と異なる場合に発生し得、撮像デバイスからさまざまな距離にある対象物の相対的な外観に歪みをもたらし得る。射影歪みのアーチファクトは、広視野(WFOV: Wide Field of View)撮像システムの使用において特に顕著であり得る。広視野撮像システムは、WFOVレンズおよび/またはWFOVセンサを含み得る。したがって、たとえば、スマートフォン、折り畳み式電話(flip phone)、タブレットといったモバイルコンピューティングデバイスまたは他のデバイス上にしばしば存在するWFOV撮像システムの利点は、画像忠実度における欠点にしばしば関連付けられる。このような影響は、画像の周辺部にある対象物についてしばしば特に顕著になる。
【0010】
結果として、人間の顔および/または他の対象物が撮影されると、特に、得られる写真または他の画像の周辺領域において、人間の顔および/または他の対象物は、射影歪みの結果として、伸張および傾斜した特徴を示す場合がある。これは、撮像システムの技術的結果であり、画像忠実度の点で不利であり得、画像品質の低減を引き起こし得る。詳細には、人間の顔の歪みは、特に目立ち得るので、そのような歪みが相対的に小さい場合であっても、画質の大幅な劣化を表すことになる。すなわち、射影歪みは、人間の顔の不快な歪みを引き起こ得し、ユーザ体験に悪影響を及ぼし得る。射影歪みは、人間の顔の不快な歪みを引き起こし、ユーザ体験に悪影響を及ぼし得る。
【0011】
したがって、人間の顔を含む顔などの対象物の射影歪みアーチファクトとともに撮像された画像(たとえば、写真、ビデオ録画における画像)には問題がある。本明細書では、写真および/または他の画像におけるこれらの射影歪みアーチファクトを補正するための技術および関連する装置が記載される。本明細書において記載される技術および関連する
装置は、1つ以上の投影を使用してこれらのアーチファクトを補正することを補助し得る。より詳細には、1つ以上の入力画像の顔領域、すなわち、顔を表す入力画像の領域は、第1の投影を用いて局所的に補正され得、顔領域の外側の入力画像の領域は、第2の投影を用いて補正され得る。たとえば、第1の投影はステレオ投影(stereographic projection)であり得、第2の投影は透視投影(perspective projection)であり得る。第1の投影および/または第2の投影はメッシュで具現化され得る。さらに、メッシュ、第1の投影および/または第2の投影を使用して1つ以上の入力画像に対して行われた補正を反映する1つ以上の補正画像が、生成、表示、送信、および/または他の態様で作り出され得、いくつかの場合では、補正画像は、対応する入力画像のピクセルのすべてではないにしてもほとんどにメッシュ、第1の投影および/または第2の投影を使用して行われた補正を反映し得る。例として、本明細書において記載されるこれらの技術は、モバイルコンピューティングデバイスのソフトウェアアプリケーションにおいて具現化され得る。
【0012】
画像を補正するために他の技術が使用されてきた。いくつかの場合では、射影歪みアーチファクトを補正するために、画像をグローバルにマッピングするよう魚眼レンズおよび/または関連するソフトウェアが利用される。しかしながら、魚眼レンズおよび/または関連するソフトウェアは、直線を作り出すことができず、得られる画像に曲線状の外観をレンダリングする。本明細書において記載される技術および関連する装置は、画像内の直線を維持しながら射影歪みアーチファクトを補正し得、これにより、射影歪み補正された画像内に付加的なアーチファクトが、もしあったとしても、ほとんど生成されない。さらに、本明細書に記載の技術をモバイルコンピューティングデバイス上でソフトウェアアプリケーションが効率的に実行し得る。
【0013】
特に、本明細書において記載される技術は、画像の顔領域上において正角図法(conformal projection)を局所的にブレンドするという概念に依拠している。顔領域は、1つ以上の顔を表す画像の領域である。正角図法は、曲線が交わる角度を保ちながら球を平面に投影するステレオ投影のような角度保存投影を含み得る。画像の残り、すなわち、顔領域の外側の画像の部分は、直線を保つ透視投影を用いてレンダリングされ得る。しかしながら、画像全体に適用される正角図法は、画像全体における剛性の対象物の形状および曲率を歪ませる。対象物の形状および曲率のこれらの歪みを避けるために、本明細書において記載される技術は、顔の領域に局所的に正角図法を適用する。次いで、顔領域の外側の形状/曲率歪みに対処するために、直線性保存透視変換が画像の残りに対して使用される。結果として得られる画像補正技術は、画像の顔領域に対する正角図法と、画像の残りに対する透視投影とを組み合わせる。
【0014】
いくつかの例では、本明細書において記載される技術は、最小限のユーザ入力により利用され得るか、または、ユーザ入力なしで利用され得る。たとえば、本明細書において記載される技術は、ユーザが画像の顔領域、線または他の局面を識別することを要求することなく、かつ、本明細書において記載される技術の計算において利用される項(term)のユーザの特定を要求することなく、利用され得る。むしろ、以下で論じるように、本明細書において記載される技術は、画像の局面に対するそのようなユーザ入力なしで、かつ、本明細書において記載される計算において使用される項に対するそのようなユーザ入力なしで、利用され得、したがって、自動画像補正アプリケーションにおいて利用され得る。さらに、本明細書において記載される技術は、ビデオ録画における一連の画像といった一連の画像を補正するために、ユーザ入力なしで利用され得る。したがって、本明細書において記載される技術は、ユーザ入力を必要とすることなく、静止画および/またはビデオ録画の画像における顔領域を補正するために有益に利用され得る。もちろん、何らかのユーザ入力を伴う本明細書において記載される技術の変形例も同様に可能である。
【0015】
画像における射影歪みを補正するための技術および装置
メッシュ最適化問題は、画像の顔領域に対する正角図法と画像の残りに対する透視投影を組み合わせるよう、ワーピングメッシュ(warping mesh)上で解決され得る。次いで、メッシュ最適化問題を解決する最適化メッシュを使用して、射影歪みを有する関連する入力画像をワーピングすることによって、出力画像がレンダリングされ得る。
【0016】
いくつかの例では、対応する入力画像Iにおける射影歪みのいくつかまたはすべてを補正する補正出力画像Oを生成するために、図1の文脈において以下で論じられる方法100に関連する以下の手順が使用され得る。
【0017】
1.入力画像Iのトリガ条件がチェックされ得る。たとえば、そのようなトリガ条件は、顔(たとえば、人間の顔、動物の顔)および/または他の対象物の表示、そのような顔および/または対象物の表示のサイズ、ならびに、顔および/または対象物の表示に関連する正角性コストに関し得る。他のトリガ条件も同様に可能である。
【0018】
2.画像Iの顔領域に対応する1つ以上の顔マスクが決定され得る。顔領域に対応する画像Iの部分の組み合わせとして顔マスクの統合が使用され得る。顔以外の対象物のアーチファクトが補正されるべきであるいくつかの例では、顔マスクおよび対応する顔領域は、顔以外の対象物についての1つ以上のマスクおよび/または顔以外の対象物についての画像Iの1つ以上の対応する対象物領域により置き換えられ、および/または、増強され得る。
【0019】
3.顔領域に関連するスケールファクタが推定され得る。たとえば、画像Iの顔領域が第1のタイプの変換または他の処理技術に関連付けられ得、画像Iの非顔領域が第2のタイプの変換または他の処理技術に関連付けられ得る。スケールファクタは、第2のタイプの変換により処理される画像Iの部分Pの面積に対する第1のタイプの変換により処理される画像Iの部分Pの面積の比を表し得る(または逆も同様である)。他のスケールファクタも同様に可能である。
【0020】
4.メッシュ最適化問題は、ワーピングメッシュvにおいてエネルギー項(energy term)を有する最適化式として公式化され得る。たとえば、メッシュ最適化問題は、ワーピ
ングメッシュvにおいて表されるエネルギー項を最小化する最小化問題であり得る。他のメッシュ最適化問題も同様に可能である。
【0021】
5.ワーピングメッシュvに境界条件が課され得る。いくつかの例では、境界条件は課されない。
【0022】
6.ワーピングメッシュvに対するメッシュ最適化問題が数値的に解かれ得、その解は、最適なメッシュv′を得るために正規化され得る。
【0023】
7.最適なメッシュv′は、逆メッシュzを生成するために再サンプリングされ得る。
8.出力画像Oは、逆メッシュzを用いて生成される座標に基づいて入力画像Iのピクセルをサンプリングすることにより生成され得る。出力画像Oは、入力画像Iにおいて射影歪みに関連するアーチファクトを低減または除去することによって、入力画像Iを補正し得る。
対応する入力画像Iにおける射影歪みのいくつかまたはすべてを補正する補正出力画像Oを生成する際に使用する他の手順が可能である。
【0024】
図1は、例示的な実施形態に従った方法100のフローチャートである。上で記載された手順に関連する方法100は、対応する入力画像Iにおける射影歪みを補正する補正出力画像Oを生成し得る。方法100は、以下に記載されるコンピューティングデバイス1
800のようなコンピューティングデバイスによって実行され得る。
【0025】
方法100は、ブロック110において開始され得る。ブロック110において、コンピューティングデバイスは、幅W(I)および高さH(I)を有する入力画像Iを受け取り得る。さらに、コンピューティングデバイスは、サイズがしきい値サイズよりも大きい、画像Iによって表される顔の数であるNを決定し得る。ブロック110に関連する詳細な手順は、図7の文脈において以下に記載される。
【0026】
ブロック120において、コンピューティングデバイスは、入力画像IにおけるN個の顔についてN個の顔ボックスFBを決定し得る。kは1~Nの範囲である。画像についての顔ボックスは、人間の顔のような顔を表す画像の領域を示し得る。いくつかの例では、顔ボックスは、正方形または長方形の形状を有し得る。他の例では、顔ボックスは、たとえば、長円形または楕円形の形状、三角形の形状、六角形の形状といった、正方形または長方形とは異なる形状を有し得る。
【0027】
コンピューティングデバイスは、k番目の顔の顔ランドマークを含むように、必要に応じてN個の顔ボックスの各顔ボックスFB(1≦k≦N)を拡張し得る。顔の顔ランドマークは、顔上における顔の特定の特徴の位置を示し得る。顔のそのような特徴は、当該顔のある頭部の上部、顔の髪、顔の額、顔の目、顔の鼻、顔の鼻孔、顔の唇、顔の口、顔の顎、顔の舌、顔の歯、顔の表情、顔の上におけるえくぼ、顔上におけるほくろ(beauty
mark)および/または他のマーク、ならびに、顔を保持する首を含み得るが、これらに
限定されない。ブロック120に関連する詳細な手順は、図8の文脈において以下に記載される。
【0028】
ブロック120に関連する例として、図2は、壁240の前にある顔210を含む例示的な入力画像200を示す。顔210は、画像200の右縁部の近傍に位置している。図2は、顔210が初期顔ボックス212によって部分的に囲まれていることを示す。すなわち、図2に示される入力画像200の例では、Nは1に等しく、顔ボックス212は、拡張前のFBであると考えられ得る。次いで、画像200において顔ランドマークが検出され得る。そのような顔ランドマークは、図2において白丸として示されており、顔210の上部の近傍の顔ランドマーク220と、顔210の右下における顔ランドマーク222とを含む。顔ボックス212は、顔ランドマーク222を含むが、顔ランドマーク220を含まない。したがって、ブロック120において、コンピューティングデバイスは、顔210について発見されるすべての顔ランドマークを含むように顔ボックス212を拡張し得る。結果として得られる拡張顔ボックスが、拡張顔ボックス230として図2に示される。
【0029】
ブロック130において、コンピューティングデバイスは、N個の顔ボックスのうちの各顔ボックスFB(1≦k≦N)について、入力画像IにおけるセグメンテーションマスクMを計算し得る。次いで、コンピューティングデバイスは、画像マスクMを、すべてのセグメンテーションマスクMの統合として決定し得る。
【0030】
ブロック130に関連する例として、図3は、拡張顔ボックスFBのためのセグメンテーションマスクMを表す画像マスク300を示す。セグメンテーションマスクMはセグメンテーションマスク310として表され、拡張顔ボックスFBは拡張顔ボックス230として表される。セグメンテーションマスク310は、顔ランドマーク220および222を含む顔210の顔ランドマークによって示されるような顔210を表すマスクである。
【0031】
いくつかの例では、ブロック130において、コンピューティングデバイスは、入力画
像Iがレンズ歪みを含むか否かを決定し得る。画像Iがレンズ歪みを含む場合、画像マスクMをワーピングすることにより、レンズ歪みが補正され得る。
【0032】
ブロック140において、コンピューティングデバイスは、画像IについてNR×NC個の頂点を有する少なくとも1つのワーピングメッシュvを作成し得る。NRおよびNCの各々は0より大きい。ブロック140に関連する例として、図4は、ワーピングメッシュ400を示す。NR=75=ワーピングメッシュ400の行数であり、NC=100=ワーピングメッシュ400の列数である。
【0033】
ブロック150において、コンピューティングデバイスは、マスクMに対応するメッシュvの位置において、画像IにおけるN個の顔について1つ以上の顔関連変換を実行することに関連付けられるコストにより、ワーピングメッシュvをアップデートし得る。たとえば、1つ以上の顔関連変換を実行することに関連付けられるコストは、顔関連コストと称され得る。顔関連変換は、N個の顔のうちの少なくとも1つの1つ以上の幾何学的歪みを補正し得る。ブロック150に関連する詳細な手順は、図9の文脈において以下に記載される。
【0034】
ブロック160において、コンピューティングデバイスは、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連変換を実行することに関連付けられるコストと、ワーピングメッシュvの境界についてのコストとにより、メッシュvをアップデートし得る。たとえば、1つ以上のエッジ関連変換を実行することに関連付けられるコストは、エッジ関連コストと称され得る。ブロック160に関連する詳細な手順は、図10の文脈において以下に記載される。いくつかの例では、1つ以上の投影変換は、1つ以上の顔関連変換と1つ以上のエッジ関連変換との両方を組み合わせ得る。これらの例のいくつかでは、顔関連コストおよびエッジ関連コストは、(組み合わされた投影変換に対応する)投影コストとして組み合わされ得る。
【0035】
ブロック170において、コンピューティングデバイスは、ブロック150および160においてアップデートされたワーピングメッシュvの頂点のコスト項の最小化などの数値最適化に基づいて最適化メッシュv′を決定し得る。ブロック170に関連する詳細な手順は、図11の文脈において以下に記載される。
【0036】
ブロック170に関連する例として、図5は、顔210、拡張顔ボックス230およびセグメンテーションマスク310に関連付けられる顔関連メッシュ部分510によりアップデートおよび最適化されるワーピングメッシュ400を示す最適化メッシュ500を示す。顔関連メッシュ部分510は、入力画像200における顔210について顔関連変換を実行することに関連付けられるコストによりアップデートされている。さらに、顔関連変換を実行することに関連付けられるコストが最適化されており、たとえば、数値最適化を用いて最小化されている。顔関連変換は、顔関連メッシュ部分510内の最適化メッシュ500の変形として図5に反映されている。ワーピングメッシュ400と同様に、最適化メッシュ500は、行数NR=75、列数NC=100を有する。
【0037】
ブロック180において、コンピューティングデバイスは、最適化メッシュv′を再サンプリングすることによって逆メッシュzを決定し得る。ブロック180に関連する詳細な手順は、図12の文脈において以下に記載される。
【0038】
ブロック190において、コンピューティングデバイスは、少なくとも、画像Oの各ピクセルP(O)について、逆メッシュzに基づいて決定されるサンプリング座標において取得される画像Iのサンプルに基づいてP(O)をアップデートすることにより、出力画像Oを決定し得る。ブロック190に関連する詳細な手順は、図13の文脈において以下
に記載される。
【0039】
出力画像Oが決定された後、コンピューティングデバイスは、画像Oを出力し得る。たとえば、画像Oの部分またはすべてを表示し得、画像Oの部分またはすべてを揮発性および/または不揮発性メモリに格納し得、画像Oの部分またはすべてを1つ以上の他のコンピューティングデバイスに通信し得、画像Oを紙に印刷するなどし得る。
【0040】
ブロック190に関連する例として、図6は、入力画像200を補正する出力画像600を示す。特に、出力画像600における顔610は、入力画像200の顔210と比較して回転およびスケーリングされており、顔610は、少なくともブロック150の文脈において上で論じた顔関連変換によって回転およびスケーリングされている。出力画像600はさらに、直線が保存されていることを示している。たとえば、出力画像600において表されるような壁640に対してドア、ドアフレームなどを輪郭とする直線も、入力画像200において表される壁240に対する直線として示される。拡張顔ボックス230の外側の他の直線および直線間の角度は、入力画像200および出力画像600の両方において同じである。したがって、出力画像600は、拡張顔ボックス230内の射影歪みを補正するために入力画像200をワーピングすることを伴う方法100の手順によってレンダリングされている。さらに、画像200および600を比較することによって示されるように、方法100は、出力画像600を生成する間、(少なくとも)直線に関連する視覚的アーチファクトを入力画像200に加えなかった。
【0041】
方法100は、方法100によって処理される画像において顔が存在する1人以上の人のプライバシーを保証するためにプライバシーコントロールを有するように構成され得る。たとえば、コンピューティングデバイスは、顔が顔ボックスFBによって表わされる各人から明示的な許可を取得し得る。コンピューティングデバイスは、恐らく顔ボックスがブロック120において拡張された後、顔ボックスFB(kは1~Nの範囲である)における顔を提示し得る。次いで、方法100の残りに進む前に、顔が顔ボックスFB内に存在する各人から、入力画像Iを処理する許可が取得され得る。すなわち、コンピューティングデバイスは、表示された顔ボックス内に顔が存在する各人からの承認を要求するよう、顔ボックスFBを表示し得る。
【0042】
他の例では、顔が画像内に存在する1人以上の人は、ブロック110において入力画像Iが受け取られる前に、方法100を実行するための事前承認を与え得、コンピューティングデバイスは、方法100を実行する前に、必要に応じてその承認を照合し得る。さらに他の例では、そのような許可は暗黙的であり得る。たとえば、コンピューティングデバイスの所有者が、「セルフィー(selfie)」画像において自分の顔および自分の顔のみを撮像し、次いで方法100を使用する画像補正を要求する場合、自身の顔のみについて方法100を実行するように進める所有者の許可は、当該セルフィーに対する画像補正についての要求によって推測され得る。これらのプライバシー関連技術および/または入力画像Iおよび/または他の画像において顔が撮像されている人のプライバシーを保証するための他の技術の組み合わせも可能である。
【0043】
図7は、例示的な実施形態に従った、方法100のブロック110の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック120の手順を実行する間、ブロック710,720,730,740,750,760,770,772,774,776,780,782,784および790の手順のうちの少なくともいくつかを実行し得る。
【0044】
ブロック710において、コンピューティングデバイスは、幅W(I)および高さH(I)を有する入力画像Iを受け取り得る。コンピューティングデバイスは、画像Iによっ
て表される人の顔の数(顔の数はこれに限定されない)などの顔の数であるNを決定し得る。たとえば、図2の入力画像200は、N=1人の人間の顔を表す。コンピューティングデバイスは、顔についての最小正角性コストCCminを決定し得る。顔についての正角性コストは、少なくともブロック774および776の文脈において以下により詳細に論じられる。コンピューティングデバイスは、値N1をNに等しくし得る。
【0045】
ブロック720において、コンピューティングデバイスは、N個の顔について顔ボックスFB(1≦k≦N)を決定し得る。Nおよび/または顔ボックスFB、FB...
FBのいくつかもしくはすべてを決定するために、コンピューティングデバイスは、顔検出ソフトウェアを利用し得る。顔検出ソフトウェアは、画像Iにおいて顔を特定および/もしくはカウントし、ならびに/または、画像Iにおいて検出される顔についての顔ボックスを計算する。コンピューティングデバイスは、値kを1に等しくし得る。
【0046】
ブロック730において、コンピューティングデバイスは、顔ボックスFBのサイズ(たとえば、面積)が顔ボックスのしきい値サイズTSより大きいか否かを決定し得る。コンピューティングデバイスは、顔ボックスFBのサイズがTSより大きいと決定すると、ブロック750に進み得る。そうでなければ、コンピューティングデバイスは、顔ボックスFBのサイズがTS以下であると決定し得、ブロック740に進み得る。
【0047】
ブロック740において、コンピューティングデバイスは、顔ボックスFBを廃棄し得る。顔ボックスFBを廃棄することによって、コンピューティングデバイスは、顔として顔ボックスFBに関連付けられる画像の顔部分をもはや実質的に処理しなくなる。次いで、コンピューティングデバイスは、Nの値を1だけデクリメントし得る。すなわち、コンピューティングデバイスは、N=N-1とし得る。
【0048】
ブロック750において、コンピューティングデバイスは、kの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、k=k+1とし得る。
【0049】
ブロック760において、コンピューティングデバイスは、kがN1より大きいか否かを決定し得る。コンピューティングデバイスは、kがN1より大きいと決定した場合、ブロック770に進み得る。そうでなければ、コンピューティングデバイスは、kがN1以下であると決定し得、ブロック730に進み得る。
【0050】
ブロック770において、コンピューティングデバイスは、Nが0以下であるか否かを決定し得る。Nが0以下であるとコンピューティングデバイスが決定した場合、画像I内の顔は、しきい値サイズTSを超える対応する顔ボックスを有さないので、コンピューティングデバイスは、ブロック790に進み得る。そうでなければ、コンピューティングデバイスは、Nが0より大きいと決定し得、ブロック772に進み得る。
【0051】
ブロック772において、コンピューティングデバイスは、kの値を1に等しく設定し得る。
【0052】
ブロック774において、コンピューティングデバイスは、顔ボックスFBの4つのコーナーC1、C2、C3およびC4の最大正角性コストCCを決定し得る。顔ボックスFBについての正角性コストCCは、顔ボックスFBのコーナーC1、C2、C3およびC4の座標の差の二乗の加重和として決定され得る。少なくとも1次元におけるコーナーの座標の差が、顔ボックスFBの面積に基づく値によってさらに加重される。
【0053】
ブロック776において、コンピューティングデバイスは、顔ボックスFBについての正角性コストCCが最小正角性コストCCmin未満であるか否かを決定し得る。C
がCCmin未満であるとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック782に進み得る。そうでなければ、コンピューティングデバイスは、CCがCCmin以上であると決定し得、コンピューティングデバイスは、ブロック780に進み得る。
【0054】
ブロック780において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック110の手順を完了し得、方法100のブロック120の手順の実行を開始することによって方法100を継続し得る。
【0055】
ブロック782において、コンピューティングデバイスは、kの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、k=k+1とし得る。
【0056】
ブロック784において、コンピューティングデバイスは、kがNより大きいか否かを決定し得る。kがNより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスはブロック790に進み得る。そうでなければ、コンピューティングデバイスは、kがN以下であると決定し得、ブロック774に進み得る。
【0057】
ブロック790において、コンピューティングデバイスは、入力画像Iを出力画像Oにコピーし得る。すなわち、入力画像Iのコピーを出力画像Oとして生成し得る。コンピューティングデバイスは、画像Oが方法100の出力である場合、方法100を終了し得る。
【0058】
図8は、例示的な実施形態に従った、方法100のブロック120の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック120の手順を実行する間、ブロック800,810,820,830,840,850および860の手順のいくつかまたはすべてを実行し得る。
【0059】
ブロック800において、コンピューティングデバイスは、値kを1に等しくおよび/または初期化し得る。
【0060】
ブロック810において、コンピューティングデバイスは、画像Iにおける顔kについて1つ以上の顔ランドマークFLを決定し得る。
【0061】
ブロック820において、コンピューティングデバイスは、顔kについての顔ボックスFBが顔ランドマークFLのすべてを含むか否かを決定し得る。たとえば、コンピューティングデバイスは、各顔ランドマークFLの座標が顔ボックスFBの内側または外側であるかを決定し得る。顔ランドマークFLのすべての座標が顔ボックスFBの内側である場合、コンピューティングデバイスは、顔ボックスFBが顔ランドマークFLのすべてを含むので顔kを表す画像Iのエリアを取り囲むと決定し得、コンピューティングデバイスはブロック840に進み得る。そうでなければ、コンピューティングデバイスは、顔ボックスFBが顔ランドマークFLのすべてを含まないと決定し得、ブロック830に進み得る。
【0062】
ブロック830において、コンピューティングデバイスは、顔ランドマークFLのすべてを含むように顔ボックスFBを拡張し得る。したがって、ブロック830での拡張の後、顔ボックスFBは、顔kを表す画像Iのエリアを取り囲む。
【0063】
ブロック840において、コンピューティングデバイスは、kの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、k=k+1とし得る。
【0064】
ブロック850において、コンピューティングデバイスは、kがNより大きいか否かを決定し得る。kがNより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスはブロック860に進み得る。そうでなければ、コンピューティングデバイスは、kがN以下であると決定し得、ブロック810に進み得る。
【0065】
ブロック860において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック120の手順を完了し得、方法100のブロック130の手順の実行を開始することによって方法100を継続し得る。
【0066】
図9は、例示的な実施形態に従った、方法100のブロック150の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック150の手順を実行する間、ブロック900,910,920,930,940,950,960,970および980の手順のいくつかまたはすべてを実行し得る。
【0067】
ブロック900において、コンピューティングデバイスは、値kを1に等しくおよび/または初期化し得る。
【0068】
ブロック910において、コンピューティングデバイスは、ステレオ空間にマッピングされた顔ボックスFBの面積SAを計算し、透視空間にマッピングされた顔ボックスFBの別の面積PAを計算し得る。次いで、コンピューティングデバイスは、顔kについてのネイティブスケールファクタNSFを、NSF=SA/PAとして計算し得る。ネイティブスケールファクタNSFは、顔ボックスFBによって囲まれる顔kのサイズがステレオ投影後にどのように変化するかを示し得る。
【0069】
ブロック920において、コンピューティングデバイスは、ワーピングメッシュuおよびvを作成し得る。ワーピングメッシュuおよびvの各々はNR×NC個の頂点を有する。NR=行数は0より大きく、NC=列数は0より大きい。たとえば、NR=100およびNC=75であり、この例では、メッシュuおよびvの各々は、NR×NC=7500個の頂点を有する。ワーピングメッシュvは、おそらく画像Iがレンズ補正された後の画像Iにわたる(頂点の)メッシュであり得る。ワーピングメッシュuは、画像Iのステレオ投影にわたる(頂点の)ワーピングメッシュであり得る。ワーピングメッシュuおよび/またはワーピングメッシュvの他の例も同様に可能である。
【0070】
ブロック930において、コンピューティングデバイスは、メッシュvにおける各頂点を、顔kについての顔スケールコスト項FSCTに関連付け得る。顔スケールコスト項FSCTは、画像Iにおいて表わされるような顔kの歪みを修正するために行なわれる顔kについてのスケーリングの量を表わし得る。FSCTは、FSCT=W×|a-1/NSFとして計算され得る。Wは、顔のスケーリングについての加重項であり、NSFは、ブロック910の文脈で上で論じた顔kについてのネイティブスケールファクタ項であり、aは、以下において直ちに論じられる変換行列Sによって提供される顔kのスケーリングを表わす。
【0071】
ブロック940において、コンピューティングデバイスは、顔kについて、変換行列Sおよび平行移動ベクトルtという2つの暗黙的な変数を設定および/または初期化し得る。Sは、顔kのスケーリングおよび/または回転を表す変換行列を含み得、tは、顔kの平行移動を表す平行移動ベクトルを含み得る。たとえば、Sは、顔毎の剛体変換行列(per-face rigid transformation matrix)[a_b;-b]を含み得る。顔毎の形状保存変換行列は、顔kについてスケーリング変換aおよび回転変換bの組み合わせを表す。tは、顔毎の平行移動ベクトル[tx,ty]を含み得、t
およびtyは、顔kのそれぞれのx座標の平行移動およびy座標の平行移動を表す。行列Sおよびベクトルtによって表される顔kのスケーリング、回転および/または平行移動は、アフィン変換(affine transformation)のような、画像Iによって表さ
れるような顔kの1つ以上の幾何学的歪みを補正し得る変換であり得る。
【0072】
ブロック950において、コンピューティングデバイスは、(1)メッシュuにおいて対応する頂点Uを決定する機能と、(2)頂点Vを顔変換コスト項FTCTに関連付ける機能とを実行することによって、ワーピングメッシュvにおける各頂点Vについてのコストを表し得る。変換コスト項FTCTは、画像Iにおいて表わされるような顔kの歪みを補正するために行なわれる顔kについての変換の量を表わし得る。FTCTは、FTCT=W×|V-S×U-tとして計算され得、Wは顔の変換についての加重項であり、Sは、ブロック940の文脈において上で論じた暗黙的な変数および変換行列であり、tは、ブロック940の文脈において上で論じた暗黙的な変数および平行移動ベクトルである。
【0073】
ブロック960において、コンピューティングデバイスは、kの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、k=k+1とし得る。
【0074】
ブロック970において、コンピューティングデバイスは、kがNより大きいか否かを決定し得る。kがNより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック980に進み得る。そうでなければ、コンピューティングデバイスは、kがN以下であると決定し得、ブロック910に進み得る。
【0075】
ブロック980において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック150の手順を完了し得、方法100のブロック160の手順の実行を開始することによって方法100を継続し得る。
【0076】
図10は、例示的な実施形態に従った、方法100のブロック160の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック160の手順を実行する間、ブロック1000,1010,1020,1030,1040,1042,1050,1060,1070,1080および1090の手順のいくつかまたはすべてを実行し得る。
【0077】
ブロック1000において、コンピューティングデバイスは、値eを1に等しくおよび/または初期化し、値NEを画像Iにおいて表されるエッジおよび/または他の線の数に等しくおよび/または初期化し得る。たとえば、画像Iにおいて表されるエッジおよび/または他の線を検出するよう、線検出アルゴリズムが使用され得、値NEは、画像Iにおいて検出されるエッジおよび/または他の線の数に設定され得る。値NEを決定するための他の技術も同様に可能である。
【0078】
ブロック1010において、コンピューティングデバイスは、画像Iのエッジeに等しくなるように値Eを設定し得る。Eはメッシュvにおける頂点VおよびVに関連付けられ、i≠jである。
【0079】
ステップ1020において、コンピューティングデバイスは、エッジEをエッジコスト項ECTに関連付け得る。エッジコスト項ECTは、エッジEを維持することに関連付けられるコストを表す。ECTは、ECT=W×|E|として算出され得る。|E|は、エッジEの長さを表し、Wは、正則化加重項である。
【0080】
ブロック1030において、コンピューティングデバイスは、エッジEをエッジ曲げ項
EB(E)に関連付け得る。エッジ曲げ項EB(E)は、エッジEが変換された後にエッジEを曲げることに関連付けられるコストを表す。EB(E)は、エッジEの水平方向の向きまたは垂直方向の向きに依存して、2つの値のうちの1つに等しくなり得る。より具体的には、EB(E)は、以下のうちのいずれかのように決定され得る。
【0081】
エッジEが水平である場合、EB(E)=W×|V,y+V,y|、または、
エッジEが垂直である場合、EB(E)=W×|V,x+V,x|
式中、Wは曲げ加重項であり得る。
【0082】
ブロック1040において、コンピューティングデバイスは、eの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、e=e+1とし得る。
【0083】
ブロック1042において、コンピューティングデバイスは、eがNEより大きいか否かを決定し得る。eがNEより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック1050に進み得る。そうでなければ、コンピューティングデバイスは、eがNE以下であると決定し得、ブロック1010に進み得る。
【0084】
ブロック1050において、コンピューティングデバイスは、メッシュvの境目上の各頂点Vを境界コスト項BCTに関連付け得る。BCTは、BCT=W×d(V)として計算され得、d(V)は、頂点Vとメッシュvの境目との間の垂直距離であり、Wは、ブロック1030の文脈において上で論じた曲げ加重項であり得る。
【0085】
ブロック1060において、コンピューティングデバイスは、メッシュvを、各辺上の頂点の数NBDRY(NBDRY>0)だけ拡張し得る。たとえば、NBDRYは、1、2、3、4といった整数値または別の整数値であり得る。NBDRY個の頂点によってメッシュを拡張することによってワーピングメッシュvに加えられる各頂点について、コンピューティングデバイスは、画像Iの境目に垂直になるように頂点の次元(dimension)
を固定し得る。次いで、コンピューティングデバイスは、NBDRYに基づいてメッシュvの行数NRおよび列数NCをアップデートし得る。たとえば、NR=NR+NBDRYおよびNC=NC+NBDRYとする。
【0086】
ブロック1070において、コンピューティングデバイスは、非対称コストが方法100において使用されるべきか否かを決定し得る。たとえば、非対称コストが方法100において使用される場合、変数、値、フラグまたは他の同様のデータ項目ACFLAGが、第1の値(たとえば、1)に設定され得、非対称コストが方法100において使用されない場合、第2の値(たとえば、0)に設定され得る。次いで、コンピューティングデバイスは、ACFLAGの値を確認し、非対称コストが方法100において使用されるべきか否かを決定し得る。非対称コストが方法100において使用されるべきであるとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック1080に進み得る。そうでなければ、コンピューティングデバイスは、非対称コストが方法100において使用されるべきではないと決定し得、ブロック1090に進み得る。
【0087】
ブロック1080において、コンピューティングデバイスは、メッシュvにおいて元々存在する各頂点V(すなわち、ブロック1060において追加されなかったメッシュvの頂点)について、頂点Vをメッシュ外インジケータ関数(outside-mesh indicator function)OMI(V)=0に関連付け得る。元々メッシュvに存在しない各頂点V
(すなわち、ブロック1060において追加されたメッシュvの頂点)について、コンピューティングデバイスは、Vをメッシュ外インジケータ関数OMI(V)=1に関連付け得る。
【0088】
ブロック1090において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック160の手順を完了し得、方法100のブロック170の手順の実行を開始することによって方法100を継続し得る。
【0089】
図9および図10の文脈において記載されたもの以外のコスト関数も同様に可能である。さらに、いくつかの例では、コスト関数の相対的な重みが修正され得、および/または、ワーピングメッシュuを作成する際に使用されるステレオ投影が1つ以上の他の投影に置き換えられ得る。
【0090】
図11は、例示的な実施形態に従った、方法100のブロック170の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック170の手順を実行する間、ブロック1100,1110,1120,1130,1140,1150,1160,1170および1180の手順のいくつかまたはすべてを実行し得る。
【0091】
ブロック1100において、コンピューティングデバイスは、非対称コストが方法100において使用されるべきか否かを決定し得る。非対称コストが方法100において使用されるべきか否かを決定するための技術は、ブロック1070の文脈において上で論じられている。非対称コストが方法100において使用されるべきであるとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック1110に進み得る。そうでなければ、コンピューティングデバイスは、非対称コストが方法100において使用されるべきではないと決定し得、ブロック1120に進み得る。
【0092】
ブロック1110において、コンピューティングデバイスは、最適化メッシュv′を初期化するために、LevelNumレベル(LevelNum>1)を伴うコース・ツー・ファイン(coarse-to-fine)技術を使用し得る。当該コース・ツー・ファイン技術を実行するために、コンピューティングデバイスは、(a)最も粗いレベル(たとえば、レベル1)では、各顔ボックスFB(1≦k≦N)についてステレオ投影および透視投影の補間に基づいて、最適化メッシュV′を初期化し得、(b)より微細なレベルNの各々(2≦N≦LevelNum)について、初期化されたメッシュV′をレベルN-1からアップサンプリングし得る。
【0093】
ブロック1120において、コンピューティングデバイスは、ワーピングメッシュVを最適化メッシュV′にコピーすることによって最適化メッシュV′を初期化し得る。
【0094】
ブロック1130において、コンピューティングデバイスは、最適化メッシュV′を取得し得、初期化されたメッシュV′の頂点に関連付けられるコストの合計の数値最小化を実行することによって、暗黙的な変数Sおよびtについての値を決定し得る。Sは、少なくともブロック940の文脈において上で論じた暗黙的な変数および変換行列であり、tは、少なくともブロック940の文脈において上で論じた暗黙的な変数および平行移動ベクトルである。
【0095】
初期化されたメッシュV′の頂点に関連付けられるコストの合計の数値最小化を実行するために使用され得る例示的な数値ソルバは、インターネット上においてCeres-solver.orgに記載されているCeres Solverである。
【0096】
ブロック1140において、コンピューティングデバイスは、メッシュV′のdhmax値,dhmin値,dvmax値,dvmin値を計算またはそうでなければ決定し得る。dhmax値は、メッシュV′の左の境目上の頂点v′間においてdhmax=max(v′,x)として決定され得る。dhmin値は、メッシュV′の右の境目上の
頂点v′間においてdhmin=min(v′,x)として決定され得る。dvmax値は、メッシュV′の上部境目上の頂点v′間においてdvmax=max(v′,x)として決定され得る。dvmin値は、メッシュV′の底部境目上の頂点v′間においてdvmin=min(v′,x)として決定され得る。
【0097】
ブロック1150において、コンピューティングデバイスはスケールベクトルsV′を決定し得る。スケールベクトルsV′=[s,s]=[W(I),H(I)]/[dhmin-dhmax,dvmin-dvmax]であり、W(I)は画像Iの幅であり得、H(I)は画像Iの高さであり得る。
【0098】
ブロック1160において、コンピューティングデバイスは、オフセットベクトルoV′を決定し得る。オフセットベクトルoV′=[o,o]=[dhmax,dvmax]である。
【0099】
ブロック1170において、コンピューティングデバイスは、v′=sV′×(v′-oV′)を決定することによってメッシュV′の各頂点v′を調整し得る。
【0100】
ブロック1180において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック170の手順を完了し得、方法100のブロック180の手順の実行を開始することによって方法100を継続し得る。
【0101】
図12は、例示的な実施形態に従った、方法100のブロック180の手順についての方法のフローチャートである。たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック180の手順を実行する間、ブロック1200,1210,1220,1230,1240,1250,1260,1270,1280および1290の手順のいくつかまたはすべてを実行し得る。図12のフローチャートは、逆メッシュzを作り出すために最適なメッシュv′を再サンプリングするための2パスアルゴリズム(two-pass algorithm)を示す。2パスアルゴリズムの第1のパスは、ブロック1200,1210,1220,1230および1240によって示されるような最適化メッシュv′の行を伴う。2パスアルゴリズムの第2のパスは、ブロック1250,1260,1270,1280および1290によって示されるような最適化メッシュv′の列を伴う。逆メッシュzを形成するための他の再サンプリング技術も同様に可能である。
【0102】
ステップ1200において、コンピューティングデバイスは、値RNumを1に等しくおよび/または初期化し得、値CNumを1に等しくおよび/または初期化し得る。コンピューティングデバイスはさらに、値NRVを最適化メッシュv′における行数に等しくおよび/または初期化し得、値NCVを最適化メッシュv′における列数に等しくおよび/または初期化し得る。
【0103】
ブロック1210において、コンピューティングデバイスは、v′のRNum番目の行をバッファBUFに格納し得る。
【0104】
ブロック1220において、コンピューティングデバイスは、BUFに格納されたRNum番目の行について列座標を補間し得る。
【0105】
ブロック1230において、コンピューティングデバイスは、RNumの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、RNum=RNum+1とし得る。
【0106】
ブロック1240において、コンピューティングデバイスは、RNum値がNRVより
大きいか否かを決定し得る。NRVの値は、最適化メッシュv′における行の数である。RNum値がNRVより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、ブロック1250に進み得る。そうでなければ、コンピューティングデバイスは、RNum値がNRV以下であると決定し得、ブロック1210に進み得る。
【0107】
ブロック1250において、コンピューティングデバイスは、バッファBUFのCNum番目の列を最適化メッシュv′のCNum番目の列にコピーし得る。
【0108】
ブロック1260において、コンピューティングデバイスは、v′のCNum番目の列について行座標を補間し得る。
【0109】
ブロック1270において、コンピューティングデバイスは、CNumの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、CNum=CNum+1とし得る。
【0110】
ブロック1280において、コンピューティングデバイスは、CNum値がNCVより大きいか否かを決定し得る。NCVの値は、最適化メッシュv′における列の数である。コンピューティングデバイスが、CNum値がNCVより大きいと決定した場合、コンピューティングデバイスは、ブロック1290に進み得る。そうでなければ、コンピューティングデバイスは、RNum値がNRV以下であると決定し得、ブロック1250に進み得る。
【0111】
ブロック1290において、コンピューティングデバイスは、方法100の残りに進み得る。すなわち、方法100のブロック180の手順を完了し得、方法100のブロック190の手順の実行を開始することによって方法100を継続し得る。
【0112】
図13は、例示的な実施形態に従った、方法100のブロック190の手順についての方法のフローチャートである。
【0113】
たとえば、方法100を実行するコンピューティングデバイスは、方法100のブロック190の手順を実行する間、ブロック1300,1310,1320,1330,1340,1350,1360および1370の手順のいくつかまたはすべてを実行し得る。
【0114】
ブロック1300において、コンピューティングデバイスは、値Pixを1に等しくおよび/または初期化し得、値NumPixを出力画像Oにおけるピクセルの数に等しくし得る。
【0115】
ブロック1310において、コンピューティングデバイスは、P(O)を画像OにおけるPix番目のピクセルとし得、Zを逆メッシュzにおけるP(O)に最も近いものの数NumNbrとし得る。NumNbrは0より大きい整数である。たとえば、NumNbrは、1、2、3、4に等しいか、または、別の正の整数に等しくあり得る。
【0116】
ブロック1320において、コンピューティングデバイスは、透視空間におけるピクセルP(O)の座標であるCoord(P(O))を、ZのNumNbr値の補間に等しくなるように設定し得る。
【0117】
ブロック1330において、コンピューティングデバイスは、座標InCoords(P(O))を求めるために、レンズ補正モデルを使用してレンズ歪み空間上においてCoord(P(O))をルックアップし得る。
【0118】
ブロック1340において、コンピューティングデバイスは、P(O)を、InCoords(P(O))によって表される座標における入力画像Iの再サンプリングに等しくし得る。次いで、コンピューティングデバイスは、画像OにおけるPix番目のピクセルをP(O)に等しく設定し得る。
【0119】
ブロック1350において、コンピューティングデバイスは、Pixの値を1だけインクリメントし得る。すなわち、コンピューティングデバイスは、Pix=Pix+1とし得る。
【0120】
ブロック1360において、コンピューティングデバイスは、PixがNumPixより大きいか否かを決定し得る。PixがNumPixより大きいとコンピューティングデバイスが決定した場合、コンピューティングデバイスはブロック1370に進み得る。そうでなければ、コンピューティングデバイスは、PixがNumPix以下であると決定し得、ブロック1310に進み得る。
【0121】
ブロック1370において、コンピューティングデバイスは、画像Oが方法100の出力である場合、方法100を終了し得る。
【0122】
メッシュu、v、v′および/またはzのような1つ以上のメッシュを利用して画像Iのような画像をワープして画像Oのような出力画像を形成する他の技術も同様に可能である。
【0123】
図14は、例示的な実施形態に従った、2つの顔1420,1430を表す入力画像1410について、対応する出力画像1450において両方の顔が補正されるシナリオ1400を示す。シナリオ1400は、たとえばカメラを有するスマートフォンといった、カメラを備えたコンピューティングデバイスが、カメラを使用して入力画像1410を撮像することにより開始し得る。図14の上部に示すように、入力画像1410は、仕事環境における2人の人の画像である。したがって、入力画像1410は、2人の人の2つの顔1420,1430を表す。入力画像1410はさらに、仕事環境における天井の領域1440を表す。領域1440は、天井またはその近傍においてさまざまな角度にて一緒に現れる対象物を示す。
【0124】
シナリオ1400は、コンピューティングデバイスがカメラから入力画像1410を受け取り、上で論じた方法100の技術を使用して入力画像1410を補正し、その結果、出力画像1450を生成するように継続する。特に、入力画像1410の顔1420,1430は、方法100の文脈において上で論じたように、アフィン変換および/またはステレオ変換を使用して出力画像1450のそれぞれの顔1470,1480となるように補正される。たとえば、入力画像1410に表される顔1420,1430の各々は、出力画像1450のそれぞれの顔1470,1480において示されるように、より自然な形状を有するように回転および伸長(スケーリング)されている。
【0125】
さらに、出力画像1450を生成している間、入力画像1410の領域1440は補正されない。特に、入力画像1410の領域1440における直線は、出力画像1450の対応する領域1490において真っ直ぐのままである。さらに、入力画像1410の領域1440においてさまざまな角度で交差する線は、出力画像1450の領域1490において、同じさまざまな角度で交差する線として示されている。したがって、シナリオ1400は、コンピューティングデバイスが、入力画像1410の顔領域における直線および角度を除いて、入力画像1410と出力画像1450との間の直線を変更することなく、入力画像1410のような画像における顔を補正するために方法100を使用し得ること
を示す。
【0126】
図15は、例示的な実施形態に従った、4つの顔1520,1522,1524,1526を表す入力画像1510について、対応する出力画像1550において4つの顔のうち3つの顔が補正されるシナリオ1500を示す。シナリオ1500は、コンピューティングデバイスがカメラから入力画像1510を受け取ることにより開始する。図15の上部に示すように、入力画像1510は、仕事環境における少なくとも4人の画像である。したがって、入力画像1510は、少なくとも4人の人の少なくとも4つの顔1520,1522,1524,1526を表す。
【0127】
シナリオ1500は、コンピューティングデバイスが、上で論じた方法100の技術を使用して入力画像1510を補正し、その結果、出力画像1550を生成するように継続する。シナリオ1500では、顔1522は、少なくとも図1および図7の文脈において上で論じたしきい値サイズTSより小さい拡張顔ボックスを有する。したがって、コンピューティングデバイスは、対応する顔1572を有する出力画像1550を生成する間、顔1522を補正しない。さらに、入力画像1510における顔1520、1524および1526の拡張顔ボックスの各々は、しきい値サイズTSより大きい。シナリオ1500は、コンピューティングデバイスが、たとえば、出力画像1550を生成するために方法100の手順を使用することの部分として、アフィン変換および/またはステレオ変換を使用して入力画像1510のこれらの3つの顔1520,1524,1526のみを補正するように進む。
【0128】
入力画像1510の顔1520,1524,1526の補正は、対応する顔1572を有する出力画像1550を生成する間、たとえば3つの顔1520、1524、1526といった3つの顔が出力画像1550のそれぞれの顔1570,1574,1576になるように変換する。さらに、たとえば、入力画像1510に示される天井から吊り下げられた対象物の角度といった、入力画像1510における直線および直線間の交差角度(入力画像1510の顔領域における直線および角度を除く)は、出力画像1550において変更されない。したがって、シナリオ1500は、出力画像1550を生成することの部分として、入力画像1510(入力画像1510の顔領域における直線および角度の外側)における直線を変更することなく、すべての顔ではなくいくつかの顔を補正するための方法100の使用を示す。
【0129】
図16は、例示的な実施形態に従った、コンピューティングデバイス1610が、出力画像1550を生成することの部分として入力画像1510を補正するよう方法100を使用するシナリオ1600を示す。図16の上部は、コンピューティングデバイス1610が、カメラから入力画像1510を受け取り、次いで、入力画像1510および制御部1620を表示することによりシナリオ1600が開始することを示す。制御部1620は、「顔補正を適用」とラベル付けされたボタンを含む。制御部1620は、選択されると、コンピューティングデバイス1610に、たとえば出力画像1550といった出力画像を生成することの部分として、たとえば入力画像1510といった入力画像を補正するために方法100を使用させる。他のシナリオでは、制御部1620は、たとえばアイコン、ダイアログといった、ボタン以外のグラフィカルユーザインターフェイス(GUI)のグラフィカルオブジェクトによって表され得る。さらに他のシナリオでは、制御部1620を使用して制御される顔補正機能は、たとえば、キーボード上のキー、コマンドラインインターフェイスのコマンドといった1つ以上の非GUIオブジェクトを使用して制御され得る。
【0130】
シナリオ1600は、たとえば、マウスを使用して制御部1620をクリックすること、タッチスクリーン上の制御部1620に対応する位置を押すことといった、コンピュー
ティングデバイス1610のユーザが制御部1620を選択することによって進む。制御部1620が選択された後、コンピューティングデバイス1610は、少なくとも図1および図15の文脈においてより詳細に上で論じたように、出力画像1550を生成するよう方法100を使用する。出力画像1550を生成した後、シナリオ1600は、図16の下部に示されるように、コンピューティングデバイス1610が出力画像1550を表示するように継続する。出力画像1550において、入力画像1510の顔のすべてでなくいくつかは、入力画像1510における顔領域の直線および角度の外側の直線を変更することなく補正されている。
【0131】
いくつかのシナリオでは、入力画像1410、入力画像1510および/または他の入力画像を撮像するために使用されるカメラは、相対的に近接した位置からのあるシーンの撮像を容易にするために、広視野(WFOV)(または広角)レンズおよび/またはWFOVセンサを備え得る。
【0132】
例示的なデータネットワーク
図17は、例示的な実施形態に従った分散コンピューティングアーキテクチャ1700を示す。分散コンピューティングアーキテクチャ1700は、ネットワーク1706を介して、プログラマブルデバイス1704a,1704b,1704c,1704d,1704eと通信するように構成されるサーバデバイス1708,1710を含み得る。ネットワーク1706は、LAN、ワイドエリアネットワーク(WAN: wide area network
)、企業イントラネット、公衆インターネット、または、ネットワーク接続されたコンピューティングデバイス同士間の通信経路を提供するように構成される任意の他のタイプのネットワークに対応し得る。ネットワーク1706はさらに、1つ以上のLAN、WAN、企業イントラネットおよび/または公衆インターネットの組み合わせに対応し得る。
【0133】
図17は5つのプログラマブルデバイスのみを示しているが、分散アプリケーションアーキテクチャは、数十、数百、または数千のプログラマブルデバイスを提供してもよい。さらに、プログラマブルデバイス1704a,1704b,1704c,1704d,1704e(または任意の付加的なプログラマブルデバイス)は、通常のラップトップコンピュータ、デスクトップコンピュータ、ウェアラブルコンピューティングデバイス、モバイルコンピューティングデバイス、ヘッドマウントデバイス、ネットワーク端末、および、ワイヤレス通信デバイス(たとえば、スマートフォンまたは携帯電話)などといった任意の種類のコンピューティングデバイスであり得る。いくつかの実施形態では、プログラマブルデバイス1704a,1704b,1704cにより示されるように、プログラマブルデバイスは、ネットワーク1706に直接的に接続され得る。他の実施形態では、プログラマブルデバイス1704dによって示されるように、プログラマブルデバイスは、プログラマブルデバイス1704cのような関連付けられるコンピューティングデバイスを介してネットワーク1706に間接的に接続され得る。この例では、プログラマブルデバイス1704cは、プログラマブルデバイス1704dとネットワーク1706との間で電子通信を通すように、関連付けられたコンピューティングデバイスとして動作し得る。さらに他の実施形態では、プログラマブルデバイス1704eにおいて示されるように、コンピューティングデバイスは、たとえば、自動車、トラック、バス、ボートまたは船舶、飛行機などといった車両の部分であり得、および/または、車両内部に存在し得る。図17に示されていないさらに別の実施形態では、プログラマブルデバイスは、ネットワーク1706に直接的および間接的の両方で接続され得る。
【0134】
サーバデバイス1708,1710は、プログラマブルデバイス1704a~1704eによって要求されると、1つ以上のサービスを実行するように構成され得る。たとえば、サーバデバイス1708および/または1710は、プログラマブルデバイス1704a~1704eにコンテンツを提供し得る。コンテンツは、ウェブページ、ハイパーテキ
スト、スクリプト、コンパイルされたソフトウェアのようなバイナリデータ、画像、オーディオ、および/または、ビデオを含み得るが、これらに限定されない。コンテンツは、圧縮コンテンツおよび/または非圧縮コンテンツを含み得る。コンテンツは暗号化され得、および/または、非暗号化され得る。他のタイプのコンテンツも同様に可能である。
【0135】
別の例として、サーバデバイス1708および/または1710は、データベース、検索、計算、グラフィカル、オーディオ、ビデオ、ワールドワイドウェブ/インターネット利用、および/または他の機能のためのソフトウェアへのアクセスをプログラマブルデバイス1704a~1704eに提供し得る。サーバデバイスの多くの他の例も同様に可能である。
【0136】
コンピューティングデバイスアーキテクチャ
図18は、例示的な実施形態に従った、例示的なコンピューティングデバイス1800の機能ブロック図である。特に、図18に示されるコンピューティングデバイス1800は、入力画像200、画像マスク300、ワーピングメッシュ400、最適化メッシュ500、出力画像600、コンピューティングデバイス1610、分散コンピューティングアーキテクチャ1700、プログラマブルデバイス1704a,1704b,1704c,1704d,1704e、ネットワーク1706、および/もしくは、サーバデバイス1708,1710の少なくとも1つの機能を実行するように構成され得、ならびに/または、方法100、シナリオ1400、シナリオ1500、シナリオ1600および/もしくは方法1900に関連する少なくとも1つの機能を実行するように構成され得る。
【0137】
コンピューティングデバイス1800は、ユーザインターフェイスモジュール1801と、ネットワーク通信インターフェイスモジュール1802と、1つ以上のプロセッサ1803と、データストレージ1804と、1つ以上のセンサ1820とを含み得、これらのすべては、システムバス、ネットワークまたは他の接続メカニズム1805を介して一緒になるようにリンクされ得る。
【0138】
ユーザインターフェイスモジュール1801は、外部ユーザ入力/出力デバイスへデータを送信するように動作可能であり得、および/または、外部ユーザ入力/出力デバイスからデータを受信するように動作可能であり得る。たとえば、ユーザインターフェイスモジュール1801は、タッチスクリーン、コンピュータマウス、キーボード、キーパッド、タッチパッド、トラックボール、ジョイスティック、カメラ、音声認識モジュールおよび/または他の同様のデバイスといったユーザ入力デバイスとの間でデータを送信および/または受信するように構成され得る。ユーザインターフェイスモジュール1801はさらに、1つ以上の陰極線管(CRT: cathode ray tube)、液晶ディスプレイ、発光ダイオード(LED: light emitting diode)、デジタル光処理(DLP: digital light processing)技術を使用するディスプレイ、プリンタ、電球、および/または、現在公知であるかもしくは後に開発される他の同様のデバイスといったユーザディスプレイデバイスに出力を提供するように構成され得る。ユーザインターフェイスモジュール1801はさらに、スピーカ、スピーカジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホン、および/または他の同様のデバイスなどのように可聴出力を生成するように構成され得る。ユーザインターフェイスモジュール1801はさらに、振動ならびに/またはコンピューティングデバイス1800とのタッチおよび/もしくは物理的接触によって検出可能な他の出力といった、触覚出力を生成し得る1つ以上の触覚デバイスを有するように構成され得る。いくつかの実施形態では、ユーザインターフェイスモジュール1801は、コンピューティングデバイス1800を利用するためのグラフィカルユーザインターフェイスを提供するために使用され得る。
【0139】
ネットワーク通信インターフェイスモジュール1802は、ネットワークを介して通信
するように構成可能な1つ以上のワイヤレスインターフェイス1807および/または1つ以上の有線インターフェイス1808を含み得る。ワイヤレスインターフェイス1807は、ブルートゥース(登録商標)トランシーバ、Zigbee(登録商標)トランシーバ、Wi-Fi(登録商標)トランシーバ、WiMAX(登録商標)トランシーバ、および/または、ワイヤレスネットワークを介して通信するように構成可能な他の同様のタイプのワイヤレストランシーバといった1つ以上のワイヤレス送信機、受信機および/またはトランシーバを含み得る。有線インターフェイス1808は、イーサネット(登録商標)トランシーバ、ユニバーサルシリアルバス(USB: Universal Serial Bus)トランシーバ、または、ツイストペアワイヤ、同軸ケーブル、光ファイバリンクもしくは有線ネットワークへの同様の物理的接続を介して通信するように構成可能な同様のトランシーバといった1つ以上の有線送信機、受信機および/またはトランシーバを含み得る。
【0140】
いくつかの実施形態では、ネットワーク通信インターフェイスモジュール1802は、信頼でき、セキュアで、および/または、認証された通信を提供するように構成され得る。本明細書において記載される各通信について、信頼できる通信(すなわち、メッセージ送達の保証)を確実にするための情報が、おそらくメッセージヘッダおよび/またはフッタの部分として提供され得る(たとえば、パケット/メッセージシーケンシング情報、エンカプシュレーションヘッダおよび/またはフッタ、サイズ/時間情報、ならびに、巡回冗長検査(CRC: cyclic redundancy check)および/またはパリティ検査値(parity check value)といった送信照合情報)。通信は、1つ以上の暗号プロトコルおよび/ま
たはアルゴリズムを使用してセキュアにされ(たとえば、エンコードもしくは暗号化され)、および/または、復号化/デコードされ得る。当該暗号プロトコルおよび/またはアルゴリズムの例としては、データ暗号化標準(DES: Data Encryption Standard)、高度暗号化標準(AES: Advanced Encryption Standard)、リベスト・シャミア・エーデルマン(RSA: Rivest-Shamir-Adelman)アルゴリズム、ディフィー・ヘルマン(Diffie-Hellman)アルゴリズム、セキュアソケットレイヤー(SSL: Secure Sockets Layer
)もしくはトランスポートレイヤーセキュリティ(TLS: Transport Layer Security)といったセキュアソケットプロトコル、および/または、デジタルシグネチャーアルゴリズム(DSA: Digital Signature Algorithm)が挙げられるが、これらに限定されない
。通信をセキュアに(次いで、復号化/デコード)するために、他の暗号プロトコルおよび/またはアルゴリズムが、同様に、または、本明細書に列挙したものに加えて使用され得る。
【0141】
1つ以上のプロセッサ1803は、1つ以上の汎用プロセッサおよび/または1つ以上の専用プロセッサ(たとえば、デジタル信号プロセッサ、グラフィック処理ユニット、特定用途向け集積回路など)を含み得る。1つ以上のプロセッサ1803は、データストレージ1804に含まれるコンピュータ読取可能プログラム命令1806および/または本明細書において記載されるような他の命令を実行するように構成され得る。
【0142】
データストレージ1804は、1つ以上のプロセッサ1803のうちの少なくとも1つによって読み取りおよび/またはアクセスされ得る1つ以上のコンピュータ読取可能記憶媒体を含み得る。1つ以上のコンピュータ読取可能記憶媒体は、1つ以上のプロセッサ1803のうちの少なくとも1つと全体的にまたは部分的に統合され得る、光学メモリ、磁気メモリ、有機メモリもしくは他のメモリ、または、ディスクストレージといった揮発性および/または不揮発性ストレージコンポーネントを含み得る。いくつかの実施形態では、データストレージ1804は、単一の物理デバイス(たとえば、1つの光学メモリ、磁気メモリ、有機メモリもしくは他のメモリ、または、ディスクストレージユニット)を使用して実現され得るが、他の実施形態では、データストレージ1804は、2つ以上の物理デバイスを使用して実現され得る。
【0143】
データストレージ1804は、コンピュータ読取可能プログラム命令1806およびおそらく付加的なデータを含み得る。いくつかの実施形態では、データストレージ1804は、本明細書において記載される方法、シナリオおよび技術の少なくとも部分、ならびに/または、本明細書において記載されるデバイスおよびネットワークの機能の少なくとも部分を実行するために必要とされるストレージをさらに含み得る。
【0144】
いくつかの実施形態では、コンピューティングデバイス1800は、1つ以上のセンサ1820を含み得る。センサ1820は、コンピューティングデバイス1800の環境における状態を測定し、その環境に関するデータを提供するように構成され得る。たとえば、センサ1820は、(i)他の対象物および/またはデバイスを識別する識別センサと、(ii)コンピューティングデバイス1800の位置および/または動きを測定するセンサと、(iii)コンピューティングデバイス1800の環境を示すデータを取得する環境センサと、(iv)コンピューティングデバイス1800に関して作用する1つ以上の力(例えば慣性力および/またはG力)を測定する力センサとのうちの1つ以上を含み得る。識別センサの例としては、無線周波数識別(RFID: Radio Frequency Identification)リーダ、近接センサ、1次元バーコードリーダ、2次元バーコード(たとえば
、クイックレスポンス(QR: Quick Response)コード)リーダ、および、レーザトラ
ッカが挙げられるがこれらに限定されない。識別センサは、RFIDタグ、バーコード、QRコード(登録商標)、ならびに/または、読み取られるとともに少なくとも識別情報を提供するように構成される他のデバイスおよび/もしくはオブジェクトといったような識別子を読み取るように構成され得る。コンピューティングデバイス1800の位置および/または動きを測定するセンサの例としては、チルトセンサ、ジャイロスコープ、加速度計、ドップラーセンサ、グローバルポジショニングシステム(GPS: Global Positioning System)デバイス、ソナーセンサ、レーダデバイス、レーザ変位センサおよびコンパスが挙げられるがこれらに限定されない。環境センサの例としては、赤外線センサ、光学センサ、光センサ、カメラ、バイオセンサ、容量センサ、タッチセンサ、温度センサ、ワイヤレスセンサ、無線センサ、動きセンサ、マイクロフォン、サウンドセンサ、超音波センサおよび/または煙センサが挙げられるが、これらに限定されない。力センサの例としては、1つ以上の次元における力、トルク、重力(ground force)、摩擦を測定する1つ以上のセンサ、ならびに/または、ZMPおよび/もしくはZMPの位置を識別するゼロモーメントポイント(ZMP: zero moment point)センサが挙げられるが、これらに限定されない。センサ1820の多くの他の例も同様に可能である。
【0145】
動作の例示的な方法
図19は、例示的な実施形態に従った方法1900のフローチャートである。方法1900は、コンピュータによって実現される方法であり得る。たとえば、方法1900は、コンピューティングデバイス1800のようなコンピューティングデバイスによって実行され得る。
【0146】
図19は、方法1900がブロック1910において開始し得ることを示す。ブロック1910において、少なくとも図1図2図7図8図14図15および図16の文脈において上で論じたように、コンピューティングデバイスは、画像における第1の対象領域に対応する第1の画像エリアを決定し得る。
【0147】
いくつかの例では、少なくとも図1図2図7図8図14図15および図16の文脈において上で論じたように、第1の対象領域は、第1の人間の顔を表し得る。他の例では、少なくとも図14図15および図16の文脈において上で論じたように、画像における第1の対象領域に対応する第1の画像エリアを決定することは、カメラから画像を取得することを含み得る。
【0148】
さらに他の例では、少なくとも図1図2図7および図8の文脈において上で論じたように、第1の対象領域は第1の顔を表し得、第1の画像エリアを決定することは、第1の顔について第1の顔ボックスを決定することと、第1の顔ボックスが第1の顔を表す画像のすべてのピクセルを囲むかどうかを決定することと、第1の顔ボックスが第1の顔を表す画像のすべてのピクセルを囲むと決定した後、第1の画像エリアとして第1の顔ボックスを使用することとを含み得る。
【0149】
さらに他の例では、少なくとも図1図2図7および図8の文脈において上で論じたように、第1の画像エリアを決定することは、第3の対象領域について第2の顔ボックスを決定することと、第2の顔ボックスが、第3の対象領域において第3の顔を表す画像のすべてのピクセルを囲まないかどうかを決定することと、第2の顔ボックスが、第3の顔を表す画像のすべてのピクセルを囲まないことを決定した後、第3の顔を表す画像のすべてのピクセルを含むように第2の顔ボックスを拡張することと、拡張された第2の顔ボックスを、第3の顔に対応する画像エリアとして使用することとを含み得る。
【0150】
ブロック1920において、少なくとも図1図4および図9の文脈において上で論じたように、コンピューティングデバイスは、画像についてのワーピングメッシュを決定し得る。
【0151】
いくつかの例では、少なくとも図1図7および図9の文脈において上で論じたように、画像についてのワーピングメッシュを決定することは、第1の画像エリアがしきい値画像エリアよりも大きい面積を有するか否かを決定することと、第1の画像エリアがしきい値画像エリアより大きい面積を有すると決定した後、ワーピングメッシュを決定することとを含み得る。
【0152】
他の例では、少なくとも図1図9および図10の文脈において上で論じたように、少なくとも第1の画像エリアの1つ以上の顔関連変換は、第1の画像エリアの回転、第1の画像エリアの平行移動、および/または、第1の画像エリアのスケーリングを含み得、画像についてワーピングメッシュを決定することは、画像について、第3の複数の頂点を含む第3のメッシュを決定することと、第3のメッシュに基づいてワーピングメッシュを決定することとを含み、第3のメッシュに基づいてワーピングメッシュを決定することは、少なくとも、第3のメッシュの1つ以上の辺を決定することと、第3のメッシュの1つ以上の辺の各辺について、所定の数の付加的な頂点を第3のメッシュの辺に加えることと、所定の数の付加的な頂点を第3のメッシュの辺に加えた後、第3のメッシュの辺に関連付けられ第3のメッシュの境界頂点に関連付けられる第3のメッシュの境界を決定することと、第3のメッシュの境界頂点の次元を画像の境界に垂直になるように決定することとによって行われる。
【0153】
ブロック1930において、少なくとも図1図5および図9の文脈において上で論じたように、コンピューティングデバイスは、第1の画像エリアに関連付けられるワーピングメッシュの第1の部分を決定し得る。
【0154】
ブロック1940において、少なくとも図1図9、および図10に関連して上で論じたように、コンピューティングデバイスは、ワーピングメッシュについてのコスト関数を決定し得、ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第1の部分に関連付けられる第1のコストであって、画像において表されるような第1の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第1の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む第1のコストを決定することと、ワーピングメッシュに関連付けられる第2のコストであって、少なくとも1つ以上の顔関連変換によって修正される画像のエッジの直線性を保存するための1つ以上のエッジ関連
変換のコストを含む第2のコストを決定することとによって行われる。
【0155】
いくつかの例では、少なくとも図1図9および図10の文脈において上で論じたように、ワーピングメッシュについてのコスト関数を決定することは、ワーピングメッシュの第2の部分に関連付けられる付加的な第1のコストを決定することをさらに含み得、付加的な第1のコストは、第2の対象領域の1つ以上の幾何学的歪みを補正するよう、少なくとも第2の画像エリアの1つ以上の顔関連変換に関連付けられるコストを含む。
【0156】
他の例では、少なくとも図10の文脈において上で論じたように、ワーピングメッシュは、複数の頂点を含み得、ワーピングメッシュに関連付けられる第2のコストを決定することは、画像のエッジに関連付けられるワーピングメッシュの各頂点について頂点毎のエッジコストを割り当てることと、ワーピングメッシュの境界に関連付けられるワーピングメッシュの各頂点について境界コストを割り当てることとを含み得る。これらの例のいくつかでは、少なくとも図10の文脈において上で論じたように、画像のエッジに関連付けられるワーピングメッシュの各頂点について頂点毎のエッジコストを割り当てることは、ワーピングメッシュの少なくとも第1のエッジ頂点に関連付けられる画像の第1のエッジについて第1のエッジ正則化項を決定することと、画像の第1のエッジについて第1のエッジ曲げ項を決定することと、第1のエッジ正則化項および第1のエッジ曲げ項に基づいて、第1のエッジ頂点について頂点毎のエッジコストを決定することとを含み得る。これらの例の他の例において、少なくとも図10の文脈において上で論じたように、ワーピングメッシュの境界に関連付けられるワーピングメッシュの各頂点について境界コストを割り当てることは、ワーピングメッシュの第1の境界頂点についての境界コスト値を決定することを含み得、第1の境界頂点は、ワーピングメッシュの第1の境界に関連付けられており、境界コスト値は、第1の境界頂点とワーピングメッシュの境目との間の距離に基づく。
【0157】
さらに他の例では、少なくとも図9の文脈において上で論じたように、ワーピングメッシュの第1の部分に関連付けられる第1のコストを決定することは、第1の変換を使用して第1の画像エリアを第1の空間にマッピングすることと、第2の変換を使用して第1の画像エリアを第2の空間にマッピングすることと、第1の画像エリアについて、第2の空間の面積に対する第1の空間の面積の比に基づく第1のアスペクト比を決定することと、第1のアスペクト比に基づいて、ワーピングメッシュの第1の部分に関連付けられる第1のコストを決定することとを含み得る。これらの例のいくつかでは、少なくとも図9の文脈で上で議論したように、第1の変換は透視変換を含み得、第2の変換はステレオ変換を含み得る。これらの例の他の例において、少なくとも図11の文脈において上で論じたように、ワーピングメッシュは、複数の頂点を含み得、ワーピングメッシュの第1の部分に関連付けられる第1のコストを決定することは、ワーピングメッシュの第1の部分における第1の頂点の第1のコストを、第1の頂点での第1の変換に関連付けられる第1の変換値と、第1の頂点での第1の変換に関連付けられる第2の変換値との補間に関連付けられる値に初期化することを含み得る。
【0158】
ブロック1950において、少なくとも図1図5図10および図11の文脈において上で論じたように、コンピューティングデバイスは、ワーピングメッシュについてのコスト関数の最適化に基づいて、最適化メッシュを決定し得る。
【0159】
いくつかの例では、少なくとも図10および図11の文脈において上で論じたように、コスト関数の最適化は、コスト関数の最小化を含み得、コスト関数の最適化に基づいて、最適化メッシュを決定することは、ワーピングメッシュに適用されるコスト関数の最小化を実行することによって最適化メッシュを決定することと、最適化メッシュの左の境目の頂点のコストのうちの最大のものとして、左部最大コストを決定することと、最適化メッ
シュの右の境目の頂点のコストのうちの最小のものの右部最小コストを決定することと、最適化メッシュの上部境目の頂点のコストのうちの最大のものとして上部最大コストを決定することと、最適化メッシュの底部境目の頂点のコストのうちの最小のものの底部最小コストを決定することと、左部最大コスト、右部最小コスト、上部最大コストおよび底部最小コストに基づいて、最適化メッシュを修正することとを含む。
【0160】
これらの例のいくつかでは、少なくとも図11の文脈において上で論じたように、左部最大コスト、右部最小コスト、上部最大コストおよび底部最小コストに基づいて、最適化メッシュを修正することは、画像の幅と、右部最小コストと左部最大コストとの間の差とに基づいて、画像についての幅スケールを決定することと、画像の高さと、底部最小コストと上部最大コストとの間の差とに基づいて、画像についての高さスケールを決定することと、幅スケールおよび高さスケールに基づいて、最適化メッシュの数学的スケーリングを実行することとを含み得る。
【0161】
ブロック1960において、少なくとも図1図6図12図13図14図15および図16の文脈において上で論じたように、コンピューティングデバイスは、最適化メッシュに基づいて画像の第1の画像エリアを修正し得る。いくつかの例では、少なくとも図1図12、および図13の文脈において上で論じたように、最適化メッシュに基づいて、画像の第1の画像エリアを修正することは、最適化メッシュのサンプリングを計算することと、最適化メッシュのサンプリングに基づいて、少なくとも画像の第1の画像エリアを修正することとを含み得る。他の例では、少なくとも図1および図13の文脈において上で論じたように、画像は複数のピクセルを含み得、最適化メッシュに基づいて、画像の第1の画像エリアを修正することは、最適化メッシュをサンプリングすることによって、複数のサンプリングされた頂点を含むサンプリングされたメッシュを決定することと、複数のピクセルのうちの特定のピクセルについて、特定のピクセルを修正することとを含み得、特定のピクセルを修正することは、少なくとも、特定のピクセルに近接する複数のサンプリングされた頂点の1つ以上の近接頂点を決定することと、1つ以上の近接頂点に基づいて、複数のピクセルのうちの再サンプリングされたピクセルについての座標を決定することと、再サンプリングされたピクセルについての座標に基づいて、複数のピクセルのうちの1つ以上のピクセルをサンプリングすることによって、再サンプリングされたピクセルについてのピクセル値を決定することと、再サンプリングされたピクセルについてのピクセル値に基づいて、特定のピクセルを修正することとによって行われる。
【0162】
いくつかの例では、少なくとも図1図7図14図15および図16の文脈において上で論じたように、方法1900は、画像における第2の対象領域の位置に対応し、第1の画像エリアとは異なる第2の画像エリアを決定することと、第2の画像エリアに関連付けられるワーピングメッシュの第2の部分を決定することとをさらに含み得る。
【0163】
いくつかの例では、コンピューティングデバイスが提供され得る。コンピューティングデバイスは、1つ以上のプロセッサと、1つ以上のコンピュータ読取可能媒体とを含む。1つ以上のコンピュータ読取可能媒体は、コンピュータ読取可能命令を格納し得、コンピュータ読取可能命令は、1つ以上のプロセッサによって実行されると、コンピューティングデバイスに、方法1900を含む機能を実行させる。
【0164】
他の例では、コンピューティングデバイスが提供され得る。コンピューティングデバイスは、方法1900を実行するための手段を含む。
【0165】
さらに他の例では、製造物が提供され得る。製造物は、コンピュータ読取可能命令を格納した1つ以上のコンピュータ読取可能媒体を含み得、コンピュータ読取可能命令は、コンピューティングデバイスの1つ以上のプロセッサによって実行されると、コンピューテ
ィングデバイスに、方法1900を含む機能を実行させる。これらの例のいくつかでは、1つ以上のコンピュータ読取可能媒体は、1つ以上の一時的でないコンピュータ読取可能媒体を含み得る。
【0166】
上記の詳細な説明は、添付の図面を参照して、開示されるシステム、デバイスおよび方法のさまざまな特徴および機能を記載している。図面において、文脈が別の態様を示していなければ、同様の記号は典型的には同様のコンポーネントを識別する。詳細な説明、図面および請求の範囲に記載される例示的な実施形態は、限定を意図していない。本明細書に提示される主題の精神または範囲から逸脱することがなければ、他の実施形態が利用され得、他の変更が行われ得る。本開示の局面は、本明細書において一般的に記載されるとともに図に示されるように、多種多様な異なる構成で配置、置換、組み合わせ、分離、および設計され得、そのすべては本明細書において明示的に企図されることが容易に理解されるであろう。
【0167】
図面におけるラダー図、シナリオおよびフローチャートのいずれかまたはすべてに関して、本明細書において論じられるように、各ブロックおよび/または通信は、例示的な実施形態に従った情報の処理および/または情報の送信を表し得る。代替的な実施形態は、これらの例示的な実施形態の範囲内に含まれる。これらの代替的な実施形態では、たとえば、ブロック、送信、通信、要求、応答、および/またはメッセージとして記載される機能は、関係する機能に依存して、図示または論じられた順序とは異なる順序で実行され得る、当該順序は、実質的に同時または逆の順序を含む。さらに、より多いまたはより少ないブロックおよび/または機能が、本明細書において論じられるラダー図、シナリオ、およびフローチャートのいずれかとともに使用されてもよく、これらのラダー図、シナリオ、およびフローチャートは、部分的または全体的に、互いに組み合わせられてもよい。
【0168】
情報の処理を表すブロックは、本明細書において記載される方法または技術の特定の論理機能を実行するように構成され得る回路に対応し得る。代替的または付加的には、情報の処理を表すブロックは、(関連するデータを含む)プログラムコードのモジュール、セグメント、または部分に対応し得る。プログラムコードは、当該方法または技術において特定の論理機能またはアクションを実現するためにプロセッサによって実行可能な1つ以上の命令を含み得る。プログラムコードおよび/または関連するデータは、ディスクもしくはハードドライブを含むストレージデバイスまたは他の記憶媒体のような任意のタイプのコンピュータ読取可能媒体に格納され得る。
【0169】
コンピュータ読取可能媒体はさらに、レジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ(RAM: random access memory)のような、短期間の間、データを格納する一時的でないコンピュータ読取可能媒体のような一時的でないコンピュータ読取可能媒体を含み得る。コンピュータ読取可能媒体はさらに、たとえば、リードオンリメモリ(ROM: read only memory)、光学または磁気ディスク、コンパクトディスクリードオンリメモリ(CD-ROM: compact-disc read only memory)のような二次的ま
たは永続的長期ストレージといった、より長期間、プログラムコードおよび/またはデータを格納する一時的でないコンピュータ読取可能媒体を含み得る。コンピュータ読取可能媒体は、任意の他の揮発性または不揮発性ストレージシステムであってもよい。コンピュータ読取可能媒体は、たとえば、コンピュータ読取可能記憶媒体または有形のストレージデバイスと考えられ得る。
【0170】
さらに、1つ以上の情報伝送を表すブロックは、同じ物理デバイス内のソフトウェアモジュールおよび/またはハードウェアモジュール間の情報伝送に対応し得る。しかしながら、他の情報伝送は、異なる物理デバイスにおけるソフトウェアモジュールおよび/またはハードウェアモジュール間で行われ得る。
【0171】
上で参照したアプローチの変形例は、当業者には明らかであろう。たとえば、上記の記載は、画像における顔の歪みに対する補正の特定の開示を提供するが、当該アプローチは、他の対象領域または対象物にも適用されてもよい。したがって、上記開示において、(たとえば、「顔領域(facial region)」または「顔変換(facial transformation)」というフレーズにおける)形容詞「顔(facial)」が言及される場合、当業者は、そのような形容詞が必要とされない代替的なアプローチが採用され得ることを理解するであろう。同様に、「顔関連コスト」、「顔関連変換」または他の「顔関連」特徴への言及は、代替的な実現例では、「対象物関連」または「領域関連」としてより一般的に考えられ得る。
【0172】
さまざまな局面および実施形態が本明細書に開示されているが、他の局面および実施形態が当業者には明白であろう。本明細書に開示されるさまざまな局面および実施形態は、説明目的のために提供されるものであり、限定することを意図するものではなく、真の範囲は、添付の請求の範囲によって示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19