(57)【要約】本開示は、例えば、画素ブロックの画素値に基づいて分散を直接計算するのではなく、ビデオの基準フレームの画素ブロックの分散に基づいてビデオのフレーム内の画素ブロックの分散を決定するための技術に関する。本技術は、現在のフレーム内の画素ブロックの動きベクトルを識別することを含み、当該動きベクトルは、基準フレーム内の画素ブロックを示している。また、本技術は、動きベクトルに関連するコストを決定することと、当該コストを第１閾値及び第２閾値と比較することと、を含む。本技術は、第１閾値及び第２閾値とのコストの比較と、基準フレームの画素ブロックの分散と、に基づいて、現在のフレームの画素ブロックの分散を決定することを含む。【選択図】図６
2020500448.tif 000002
【特許請求の範囲】
【請求項１】
画素ブロックの分散を決定する方法であって、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第２画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを決定することであって、前記コストは、前記画素ブロックと前記第２画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含む、
方法。
【請求項２】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値を下回ることを判別することと、
前記コストが前記第１閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第２画素ブロックの分散と等しいと判別することと、を含む、
請求項１の方法。
【請求項３】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値を上回るが第２閾値を下回ることを判別することと、
前記コストが前記第１閾値を上回るが前記第２閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が、前記基準フレームの前記第２画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む、
請求項１の方法。
【請求項４】
前記相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている、
請求項３の方法。
【請求項５】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値及び第２閾値を上回ることを判別することと、
前記コストが前記第１閾値及び前記第２閾値の両方を上回ることを判別したことに応じて、前記画素ブロックの画素に基づいて前記画素ブロックの分散を直接決定することと、を含む、
請求項１の方法。
【請求項６】
前記分散を決定することは、
前記画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第１閾値及び第２閾値の両方を上回ることを判別することと、
前記所定数のブロックのコストが前記第１閾値及び前記第２閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、前記現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む、
請求項１の方法。
【請求項７】
前記画素ブロックに関する前記動きベクトルを識別することは、
サーチエリア内の前記基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、
前記サーチエリア内の前記基準フレームの各画素ブロックのコストを決定することと、
決定されたコストのうち最低のコストを識別することと、
前記決定されたコストのうち最低のコストに関連する前記動きベクトル候補を、前記画素ブロックに関する前記動きベクトルとして識別することと、を含む、
請求項１の方法。
【請求項８】
前記各画素ブロックのコストを決定することは、
平均絶対差法又は平均二乗誤差法を前記画素ブロックの画素に適用することを含む、
請求項７の方法。
【請求項９】
前記基準フレームは、前記画素ブロックが存在する現在のフレームの前又は後のフレームを含む、
請求項１の方法。
【請求項１０】
画素ブロックの分散を決定するコンピュータシステムであって、
プロセッサと、
前記プロセッサによって実行されると、前記プロセッサにステップを実行させる命令を記憶するメモリと、を備え、
前記ステップは、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第２画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを決定することであって、前記コストは、前記画素ブロックと前記第２画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含む、
コンピュータシステム。
【請求項１１】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値を下回ることを判別することと、
前記コストが前記第１閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第２画素ブロックの分散と等しいと判別することと、を含む、
請求項１０のコンピュータシステム。
【請求項１２】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値を上回るが第２閾値を下回ると判別することと、
前記コストが前記第１閾値を上回るが前記第２閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が、前記基準フレームの前記第２画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む、
請求項１０のコンピュータシステム。
【請求項１３】
前記相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている、
請求項１２のコンピュータシステム。
【請求項１４】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値及び第２閾値を上回ることを判別することと、
前記コストが前記第１閾値及び前記第２閾値の両方を上回ることを判別したことに応じて、前記画素ブロックの画素に基づいて前記画素ブロックの分散を直接決定することと、を含む、
請求項１０のコンピュータシステム。
【請求項１５】
前記分散を決定することは、
前記画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第１閾値及び第２閾値の両方を上回ることを判別することと、
前記所定数のブロックのコストが前記第１閾値及び前記第２閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、前記現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む、
請求項１０のコンピュータシステム。
【請求項１６】
前記画素ブロックに関する前記動きベクトルを識別することは、
サーチエリア内の前記基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、
前記サーチエリア内の前記基準フレームの各画素ブロックのコストを決定することと、
決定されたコストのうち最低のコストを識別することと、
前記決定されたコストのうち最低のコストに関連する前記動きベクトル候補を、前記画素ブロックに関する前記動きベクトルとして識別することと、を含む、
請求項１０のコンピュータシステム。
【請求項１７】
前記各画素ブロックのコストを決定することは、
平均絶対差法又は平均二乗誤差法を前記画素ブロックの画素に適用することを含む、
請求項１６のコンピュータシステム。
【請求項１８】
前記基準フレームは、前記画素ブロックが存在する現在のフレームの前又は後のフレームを含む、
請求項１０のコンピュータシステム。
【請求項１９】
プロセッサによって実行されると、前記プロセッサに、画素ブロックの分散を決定する方法を実行させる命令を記憶するコンピュータ可読記憶媒体であって、
前記方法は、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第２画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを決定することであって、前記コストは、前記画素ブロックと前記第２画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含む、
コンピュータ可読記憶媒体。
【請求項２０】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第１閾値を下回ることを判別することと、
前記コストが前記第１閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第２画素ブロックの分散と等しいと判別することと、を含む、
請求項１９のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１６年１０月１３日に出願された米国特許出願第１５／２９２，７５７号の利益を主張し、この内容は、本明細書に十分に記載されているかのように、言及したことによって本明細書に組み込まれる。
【背景技術】
【０００２】
分散マップ（画像の画素ブロックに対して決定された分散のマップ）は、画像及びビデオ処理において多くの用途がある。このような用途には、例えば、画像又はビデオサイズの変更、圧縮等が含まれる。しかしながら、分散を決定することは、通常、計算集約的な動作である。この事実は、分散の決定を必要とする分析が一般的に比較的遅いことを意味する。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【０００４】
【図１】本開示の態様が実装される例示的なデバイスのブロック図である。
【図２】一例による、画像を示す図である。
【図３】一例による、ブロック内の画素を示す図である。
【図４】一例による、現在の画像フレームの１つ以上のブロックの分散を決定するためにビデオの画像に適用される動きベクトル技術を示す図である。
【図５】回帰分析の一例を示すグラフである。
【図６】一例による、「コスト」（基準フレームのブロックに対する類似度）に基づいて分散値を決定する方法のフロー図である。
【発明を実施するための形態】
【０００５】
本開示は、例えば、画素ブロックの画素値に基づいて分散を直接計算するのではなく、ビデオの基準フレームの画素ブロックの分散に基づいてビデオのフレーム内の画素ブロックの分散を決定するための技術に関する。本技術は、現在のフレーム内の画素ブロックの動きベクトルを識別することを含み、当該動きベクトルは、基準フレーム内の画素ブロックを示している。一例では、動きベクトルは、以前に使用された画像処理データ（（例えば、画像圧縮、ビデオプロセッサ等のために）分散の決定以外の目的で決定された動きベクトルを既に含む）から識別される。別の例では、動きベクトルは、本明細書に記載の技術によって直接識別される。また、本技術は、動きベクトルに関連するコストを決定することと、当該コストを第１閾値及び第２閾値と比較することと、を含む。コストが第１閾値を下回る場合、現在のフレーム内の画素ブロックは、動きベクトルによって示された基準フレーム内の画素ブロックと十分に類似しているとみなされ、基準フレームの画素ブロックの分散（既に決定されたもの）は、現在のフレーム内の画素ブロックの分散として使用される。
【０００６】
コストが第１閾値と第２閾値との間にある場合には、相関関数によって変更された基準フレームの画素ブロックの分散が、現在のフレームの画素ブロックの分散として使用される。現在のフレームの画素ブロックのコストが第２閾値を上回る場合には、基準フレームの画素ブロックの分散を使用することが信頼できないとみなされ（「推定された分散」が信頼できないとみなされ）、現在のフレームの画素ブロックの分散が、（例えば、本明細書で提供される分散を計算する式によって）直接決定される。上記の技術は、現在のフレームの全ての画素ブロックに使用される。信頼できない推定された分散を有する現在のフレームの画素ブロックの数が第３閾値を上回る場合、（例えば、ビデオ内でシーン変化が発生したため）分散推定技術があまりにも信頼できないとみなされ、現在のフレームの画素ブロック毎の分散は、代わりに、現在のフレームの各画素ブロックの画素値から直接決定される。
【０００７】
図１は、本開示の態様が実装される例示的なデバイス１００の例のブロック図である。デバイス１００は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージデバイス１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４をオプションで含むことができる。デバイス１００は、図１に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【０００８】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコア（各プロセッサコアは、ＣＰＵ若しくはＧＰＵであってもよい）のうち１つ以上を含む。メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２から離れて配置されてもよい。メモリ１０４は、揮発性メモリ又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ若しくはキャッシュ等）を含む。
【０００９】
ストレージデバイス１０６は、固定ストレージ又はリムーバブルストレージ（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ）を含む。入力デバイス１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、又は、バイオメトリックスキャナのうち１つ以上を含む。出力デバイス１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、又は、アンテナのうち１つ以上を含む。
【００１０】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信することを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信することを可能にする。
【００１１】
ネットワークインタフェースカード（ＮＩＣ）１１８は、コンピュータネットワークを介した他のデバイスへのインタフェースを提供する。ＮＩＣ１１８は、イーサネット（登録商標）、ｗｉ‐ｆｉ（登録商標）、ＩｎｆｉｎｉＢａｎｄ又は他のプロトコル等のネットワークプロトコルを介して外部デバイスと通信するように構成されている。アクセラレータ１１６は、処理タスクを受け入れて実行するように構成された１つ以上のデバイスを含む。これらのデバイスは、グラフィックス処理装置（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＰＩＭ（processing-in-memory）チップ、特定用途向け集積回路（ＡＳＩＣ）又は他のデバイスのうち１つ以上を含む。
【００１２】
画像プロセッサ１２０は、２つの異なる形態で示されている。第１形態では、画像プロセッサ１２０は、図示するように、メモリ１０４に記憶され、プロセッサ１０２上で実行されるソフトウェアである。第２形態では、画像プロセッサは、出力ドライバ１１４内に存在するハードウェアグラフィックスエンジンの少なくとも一部である。他の形態では、画像プロセッサ１２０は、ソフトウェア要素及びハードウェア要素の組み合わせであり、ハードウェアは、例えば出力ドライバ１１４内に存在し、ソフトウェアは、例えばプロセッサ１０２上で実行される。
【００１３】
画像プロセッサ１２０は、分析用の入力画像を受信し、当該画像を分析し、出力画像を含み得る分析結果を生成する。画像プロセッサ１２０が実行するタスクでは、入力画像内の一連のブロックの各々の分散値を決定する。概念的には、分散は、ブロックの画素が互いにどの程度類似しているかを示す。単色の画素ブロックは非常に低い分散を有し、異なる画素色のモザイクは非常に高い分散を有する。分散値は、画像プロセッサ１２０又はデバイス１００の別の部分によって実行されるいくつかの異なる画像処理技術において使用することができる。したがって、画像プロセッサ１２０は、分散を使用して１つ以上の画像処理技術を実行することができる。
【００１４】
図２は、一例による、画像２００を示す図である。画像２００は、分析用及び／又は（例えば、出力デバイス１１０に含まれてもよい）スクリーンでの表示用の画像データである。画像２００は、画像２００の分散を決定するために画像プロセッサ１２０によって処理される画像である。図２に示す画像２００は、図示するように格子状に配置された一連の画素ブロック２０２を含む。各画素ブロック２０２は、同じサイズであり、同じ数の画素を含む。本明細書で説明する分散を決定する技術は、図２の画像２００等の画像内の各ブロック２０２の分散値を決定する。
【００１５】
図３は、一例による、ブロック２０２内の画素３０２を示す図である。図３に示すブロック２０２は、幅Ｘの画素と、高さＹの画素とを有し、したがって、Ｎ＝Ｘ×Ｙの画素を有する。一例では、ブロック２０２の分散は、以下のように決定される。
【数１】
2020500448.tif 000003
【００１６】
上記の式において、「μ」は、ブロック内の全ての画素の算術平均である。「ｐｉｘｅｌｉ」は、画素毎の代表的な色値又は輝度値である。例えば、画素がＹＵＶ色空間で表される場合、使用される画素値はＹ（輝度）値である。画素がＲＧＢ色空間で表される場合、Ｒ（赤）、Ｇ（緑）、Ｂ（青）の何れかの成分を「ｐｉｘｅｌｉ」として使用することができる。したがって、ブロックの分散は、各画素値と平均画素値との差の２乗の合計を、画素数（Ｎ）−１で除算したものに等しい。分散を直接決定することは、平方根演算及び除算を含むので、数学的に集中的（mathematically intensive）である。したがって、分散の直接計算を必要としない、フレームの１つ以上のブロック２０２の分散を決定する技術が本明細書で提供される。具体的には、これらの技術は、動きベクトル技術を使用して、「基準フレーム」（基準フレームは、例えば直前のフレーム等の他のフレームであってもよい）内のブロックの分散に基づいて、特定のフレーム内のブロック２０２の分散を推定する。
【００１７】
図４は、一例による、現在の画像フレームの１つ以上のブロック２０２の分散を決定するためにビデオの画像に適用される動きベクトル技術を示す図である。一例では、画像プロセッサ１２０は、この動きベクトル技術を使用して、分散を決定するための動きベクトルを決定する。或いは、画像プロセッサ１２０は、例えば画像圧縮、ビデオ分析等の異なる目的で既に決定された動きベクトルを取得する。
【００１８】
動きベクトル技術は、現在のフレーム（すなわち、分析中のフレーム）内のブロック２０２毎に「動きベクトル」４０７を決定することを含む。動きベクトル４０７は、特定の画素のブロック２０２がビデオの２つのフレーム間で移動した「距離」を表す。より具体的には、動きベクトル４０７は、現在のフレームにおいてブロックの画素が移動した基準フレーム内のブロックを示す。基準フレームは、現在のフレーム以外のフレームであり、例えば、直前のフレーム又は現在のフレームの前の他のフレームであってもよい。いくつかの例では、後のフレームが基準フレームとなる。
【００１９】
一例では、ブロックは、空と芝生との間のエッジ（an edge between a sky and a lawn）を示す画素を含む。前のフレーム（基準フレーム）では、エッジの画素は、座標７，９を有するブロックに存在していた。現在のフレームでは、エッジの画素は、座標８，１０を有するブロックに存在する。現在のフレーム内の座標８，１０を有するブロックに関する動きベクトルは−１，−１であり、この動きベクトルは、座標８，１０を有するブロックから座標７，９を有するブロックを示している。動きベクトル技術は、通常、ブロックの分散の決定に直接関係しない目的に使用されるが、ブロックの分散を決定するために動きベクトル４０７を使用する新たな技術が本明細書で提案される。
【００２０】
図４には、現在のフレームと基準フレームとのオーバーレイ４００が示される。オーバーレイ４００は、２つのフレームのブロックがオーバーレイ４００内に示されるという意味でオーバーレイである。これらの２つのフレームは、現在のフレーム及び基準フレームである。現在のフレームの唯一のブロックは、現在のブロック４０２である。他の全てのブロック２０２は、基準フレームのブロックである。
【００２１】
現在のブロック４０２に関する動きベクトル４０７の決定は、複数の動きベクトル候補４０６毎にコストを決定することを含む。現在のブロック４０２に関する動きベクトル４０７を決定することは、動きベクトル候補４０６毎のコストが決定されると、全ての決定されたコストのうち最低のコストを識別することを含む。全ての動きベクトル候補４０６のうち最低のコストを有する動きベクトル候補４０６は、現在のブロック４０２に関する動きベクトルとみなされる。換言すれば、動きベクトル候補４０６は、基準フレームと現在のフレームとの間での現在のブロック４０２の画素の移動距離を表すと考えられる。動きベクトルに関連するコストは、現在のブロック４０２に関するコストとみなされる。動きベクトル候補４０６等の動きベクトルは、（画素３０２単位ではなく）ブロック２０２単位で定義される。したがって、（１，１）として示される動きベクトルは、現在のブロック４０２の１つ上のブロック２０２であって１つ右のブロック２０２であるブロック２０２を指す。（正又は負等の符号と上又は下等の方向との相関は任意であり、任意の相関を使用することができる。）
【００２２】
図４のサーチエリア４０４内にいくつかの動きベクトル候補４０６が示されている。サーチエリア４０４は、画像プロセッサ１２０が、最低コストを有する動きベクトル候補４０６を検索する画像の一部である。「コスト」は、現在のブロック４０２と、特定の動きベクトル候補４０６によって示されるブロック２０２との間の「類似性」の尺度として考えることができる。画像プロセッサ１２０は、サーチエリア４０４内の異なるブロック２０２を示す動きベクトル候補４０６の各々に関するコストを決定し、最低コストを有する動きベクトル候補４０６を識別する。一例では、サーチエリア４０４は、垂直ブロック範囲及び水平ブロック範囲によって定義される。この例では、サーチエリア４０４は、現在のブロック４０２から水平ブロックに等しい水平距離内、及び、現在のブロック４０２から垂直ブロック範囲に等しい垂直距離内に全てのブロック２０２を含むように定義される。
【００２３】
図４には、２つの動きベクトル候補４０６しか示されていないが、これは明瞭にするためだけのものであることに留意されたい。動作中、画像プロセッサ１２０は、サーチエリア４０４及び基準フレーム内の全てのブロック２０２に関する動きベクトル候補４０６を識別し、かかる動きベクトル候補４０６の各々に関するコストを識別し、最低コストを有する基準フレーム内のブロック２０２を検出することによって、現在のブロック４０２に関する動きベクトル４０７を識別する。このブロック２０２を示す動きベクトル候補４０６は、現在のブロック４０２に関する動きベクトル４０７である。さらに、コスト（分析された全てのコストのうち「最低コスト」）は、現在のブロック４０２に割り当てられたコストとなる。現在のブロック４０２のこのコストは、現在のブロック４０２の画素が、サーチエリア４０４内の基準フレームの最も類似したブロック２０２の画素とどの程度類似しているかを示す。また、基準フレーム内であるが現在のブロック４０２と同じ位置のブロックを示す動きベクトル候補４０６は、現在のブロック４０２に関する動きベクトル４０７を決定する際に検索されることに留意されたい。かかる動きベクトル候補４０６は、基準フレームと現在のフレームとの間で現在のブロック４０２の画素の動きがないものと関連付けられる。
【００２４】
ブロック２０２のコストを決定するのに使用可能な多くの技術が存在する。１つの例は、平均絶対差（mean absolute difference）法である。平均絶対差法では、以下の式に従ってコストが決定される。
【数２】
2020500448.tif 000004
式中、Ｃｉｊは、ブロック内の位置ｉ，ｊにおける現在のブロック４０２の画素であり、Ｒｉｊは、コストが決定されるブロック２０２内の対応する画素である。
【００２５】
別の例は、平均二乗誤差（mean squared error）法である。平均二乗誤差法では、以下の式に従ってコストが決定される。
【数３】
2020500448.tif 000005
式中、平均絶対差法と同様に、Ｃｉｊは、ブロック内の位置ｉ，ｊにおける現在のブロック４０２の画素であり、Ｒｉｊは、コストが決定されるブロック２０２内の対応する画素である。直接的な分散の決定に関する「ｐｉｘｅｌｉ」と同様に、Ｃｉｊ又はＲｉｊの値は、画素がＹＵＶ色空間で表される場合には輝度値であってもよいし、画素がＲＧＢ色空間で表される場合には赤、緑、青の何れかの成分であってもよい。ブロック２０２のコストを決定するために、他の技術的に実現可能な技術が代わりに使用されてもよい。
【００２６】
画像プロセッサ１２０は、現在のブロック４０２に関する動きベクトル４０７及びコストを決定した後に、これらのアイテムを処理して、現在のブロック４０２の分散を取得する。より具体的には、画像プロセッサ１２０は、コストを分析して、３つの動作のうち何れの動作が現在のブロック４０２の分散を取得するのに使用されるかを決定する。コストが第１閾値を下回る場合、第１動作が発生する。第１動作は、現在のブロック４０２に関する動きベクトル４０７によって示されるブロック２０２の分散を、現在のブロック４０２の分散として使用することである。概念的に、これは、次のように考えることができる。現在のブロック４０２のコストが十分に低い場合、動きベクトル４０７によって示されるブロック２０２は、現在のブロック４０２と非常に類似しているとみなされる。したがって、現在のブロック４０２の分散は、動きベクトル４０７によって示されるブロック２０２の分散と同じであると想定することができる。これが発生するときの１つの状況は、画像内に動きが全くない場合である。かかる状況では、現在のブロック４０２は、動きベクトルによって示されるブロック２０２の分散と同じであり、コストは０又は０に近い。
【００２７】
現在のブロック４０２のコストに基づいて分散を決定する第２動作は、コストが第１閾値を上回るが第２閾値を下回る場合に発生する。この場合、画像プロセッサ１２０は、分散を、動きベクトル４０７によって示されるブロック２０２の分散の倍数として決定する。倍数は、０〜１の範囲である。いくつかの例では、倍数は、相関関数によって決定されるように、コストと共に変動する。相関関数を決定する技術については、以下に説明する。
【００２８】
現在のブロック４０２のコストに基づいて分散を決定する第３動作は、コストが第２閾値を上回る場合に発生する。この場合、現在のブロック４０２と動きベクトル４０７によって示されるブロック２０２とはあまりにも類似していないとみなされ、現在のブロック４０２は、「信頼できない予測された分散」を有するとみなされる。この場合、画像プロセッサ１２０は、基準画像の別のブロック２０２に基づくのではなく、現在のブロック４０２の画素の値から直接、現在のブロック４０２の分散を決定する。一例では、画像プロセッサ１２０は、図３に関連して提供された式を使用して、分散を直接決定する。
【数４】
2020500448.tif 000006
【００２９】
画像プロセッサ１２０は、上述した動きベクトル技術を使用して、現在のフレーム内のブロック毎の動きベクトル４０７及びコストを決定する。信頼できない予測された分散を有する現在のフレーム内のブロックの数が第３閾値を上回る場合、画像プロセッサ１２０は、シーン変化が生じたと判別する（換言すれば、現在のフレーム内のあまりに多くのブロックが基準フレームの他のブロック２０２とかなり類似していない場合、画像プロセッサ１２０は、シーン変化が生じたと判別する）。シーン変化が生じた場合、画像プロセッサ１２０は、現在のフレームの任意のブロックの分散を基準フレームのブロック２０２の分散に基づかせる代わりに、現在のフレームの全てのブロックの分散を直接計算する。画像プロセッサ１２０が現在のフレームの全てのブロックの分散を直接計算する理由は、シーン変化の境界に亘って分散の誤差が広がるのを回避するためである。
【００３０】
いくつかの例では、相関関数、第１閾値、第２閾値及び第３閾値は、校正データとして画像プロセッサ１２０にハードコーディングされる。別の例では、何れか又は全ての校正データは、校正手順において校正システムによって決定される。一例では、校正システムは、機械学習技術を用いて校正データを決定する。一例では、校正システムは、プロセッサと、プロセッサによって実行される命令を記憶するメモリと、を含むコンピュータ等の標準的なコンピュータで実行されるソフトウェアであり、命令は、校正システムの動作をプロセッサに実行させる。別の例では、校正システムは、特定用途集積回路として具体化され、又は、本明細書に記載された動作を実行するための他の技術的に実現可能なシステムとすることができる。
【００３１】
機械学習技術の一例は、回帰分析である。図５は、回帰分析の一例を示すグラフ５００である。校正システムは、校正データの相関関数を検出するように回帰分析を適用するために、１つ以上のトレーニングビデオを入力データとして受信する。校正システムは、各トレーニングビデオの各フレーム内の全てのブロックの分散を、（例えば、図３に関連して説明した式に従って）直接決定する。また、校正システムは、各ビデオのフレーム毎に何れの基準フレームを使用するかを決定する（一例では、任意のフレームの基準フレームは、直前のフレームである）。校正システムは、各フレームのブロック毎のコストを決定する。上述したように、任意の特定のフレームの任意の特定のブロックのコストは、基準フレームに関連している。次に、校正システムは、ブロック毎に「分散乗数」のセットを生成し、コストに対する分散乗算をプロットする。ｘ軸上にプロットされた分散乗数は、フレーム内のブロックの実際の分散と、コストが計算された基準フレーム内の対応するブロックの実際の分散と、の間の乗算関係である。グラフ５００は、分散乗数対コストの例示的なプロットであり、各データ点は、単一のブロックに対応しており、単一のブロックに関する分散倍数及びコストによって定義される。
【００３２】
校正システムは、このデータがプロットされた後に、曲線をプロットデータに当てはめる。結果として得られる曲線は、相関関数として機能する。換言すれば、データに当てはめられた曲線は、画像プロセッサ１２０によって相関関数として使用される。曲線をプロットデータに当てはめるための技術的に実現可能な技術（例えば、曲線をデータに当てはめるための任意の非線形回帰技術）を使用することができる。分散乗数をコストに相関させるための他の技術的に実現可能な機械学習技術を使用することができる。
【００３３】
第１閾値５０２は、上述したように、分散乗数が１に等しく設定される閾値である。第２閾値５０４は、これを超えると、予測された分散が、信頼できない予測された分散であると画像プロセッサ１２０によって判別される閾値である。（これらの閾値は、上記の第１閾値及び第２閾値である）。これらの閾値の各々は、画像プロセッサ１２０の動作における誤差の量を制限するように設定することができる。より具体的には、校正システムは、相関関数が決定された後に、第１閾値５０２及び第２閾値５０４を任意の値に設定し、上述した分散計算技術をテストデータに適用して、予測された分散値を取得し、（例えば、図３に関連して説明した式と同様に直接的な計算によって決定された）予測された分散値と実際の分散値との間の誤差を決定する。この誤差が、望ましくないとみなされる誤差率を上回る場合、校正システムは、第１閾値５０２をより低く設定するか、第２閾値５０４をより高く設定するか、第１閾値５０２をより低く設定することと第２閾値５０４をより高く設定することとの両方を行う。校正システムは、誤差が所望の割合になるかこれを下回るまで、この処理を繰り返す。同様に、いくつかの例では、第３閾値は、上述した分散計算技術を１つ以上のビデオに適用し、誤差割合を検出し、満足な誤差割合が達成されるまで第３閾値を変更することによって決定される。
【００３４】
いくつかの例では、画像プロセッサ１２０は、校正データの複数のセットを記憶し、各セットは、異なる「タイプ」のビデオ用に記憶され、「タイプ」は、ビデオのコンテンツのタイプを指す。いくつかの例示的なビデオタイプは、ネイチャービデオ、アクションムービー、ニュースビデオ、トークショービデオ等を含む。いくつかの例では、各ビデオは、タイプ識別子でタグ付けされており、これにより、画像プロセッサ１２０は、何れの校正データのセットを使用するかを決定することができる。
【００３５】
いくつかの例では、相関関数が使用されない。代わりに、動きベクトルによって示されるブロック２０２の分散は、現在のブロック４０２のコストに基づいて使用されるか、使用されないかの何れかである。換言すれば、相関関数が使用されるコスト値の範囲が縮小されて存在しなくなるように、第１閾値は第２閾値と等しい。動きベクトルによって示されるブロック２０２の分散が使用される場合には、コストが第１閾値及び第２閾値の何れかを下回っており、又は、画像プロセッサ１２０が現在のブロック４０２の分散を直接決定する場合には、コストが第１閾値及び第２閾値を上回っている。
【００３６】
図６は、一例による、「コスト」（基準フレームのブロックに対する類似度）に基づいて分散値を決定する方法６００のフロー図である。図１〜図５に関連して示され説明されたシステムに関して説明するが、任意の技術的に実現可能な順序で方法を実行するように構成された任意のシステムが本開示の範囲内に含まれることを理解されたい。
【００３７】
方法６００はステップ６０２で開始し、画像プロセッサ１２０は、現在のブロックに関する動きベクトル及びコストを決定する。一例では、画像プロセッサ１２０は、例えば、上述した動きベクトル技術を使用することによって、動きベクトルを直接決定する。より具体的には、画像プロセッサ１２０は、サーチエリアを識別し、サーチエリア内の基準フレーム内の全てのブロックを識別し、サーチエリア内の基準フレーム内の全てのブロックのコストを決定し、決定されたコストのうち最低コストを識別することによって、現在のブロックに関する動きベクトル及びコストを直接決定する。最低コストは、現在のブロックのコストであり、最低コストに関連する動きベクトルは、現在のブロックの動きベクトルである。動きベクトルを決定する別の例では、画像プロセッサ１２０は、画像圧縮、ビデオ分析等の異なる目的のために既に決定された動きベクトルを取得する。
【００３８】
ステップ６０４において、画像プロセッサ１２０は、ブロックのコストが第１閾値を下回るかどうかを判別する。第１閾値は、動きベクトルに関連するブロックが現在のブロックと十分に類似していると判別され、当該ブロックの分散を現在のブロックの分散として使用することができると判別されるレベルを下回るレベルを表している。したがって、コストが第１閾値を下回る場合、方法６００はステップ６０６に進み、画像プロセッサ１２０は、決定された動きベクトルに関連するブロックの分散を、現在のブロックの分散として使用する。方法６００は、ステップ６０６の後にステップ６０８に進む。
【００３９】
ステップ６０４において、コストが第１閾値を上回ると画像プロセッサ１２０が判別した場合、方法６００はステップ６１０に進む。ステップ６１０において、画像プロセッサ１２０は、コストが第１閾値を上回るが第２閾値を下回るかどうかを判別する。第２閾値は、これを超えると、予測された分散が信頼できないものとみなされるレベルである（コストがあまりに高いため、コストに関連するブロックが現在のブロックとあまりにも異なっていることを意味する）。コストが第１閾値を上回るが第２閾値を下回る場合、方法６００はステップ６１２に進み、画像プロセッサ１２０は、上述した相関関数を、動きベクトルによって示されるブロックの分散に適用して、現在のブロックの分散を取得する。方法６００は、ステップ６１２の後にステップ６０８に進む。
【００４０】
ステップ６１０において、コストが第１閾値を上回るが第２閾値を下回ると画像プロセッサ１２０が判別しない場合には、コストが第２閾値を上回っており、方法はステップ６１４に進む。ステップ６１４において、画像プロセッサ１２０は、現在のブロックの予測された分散が信頼できないと判別し、図３に関連して上述した式等を用いて、現在のブロックの分散を直接決定する。方法は、ステップ６１４の後にステップ６０８に進む。
【００４１】
ステップ６０８において、画像プロセッサ１２０は、現在のフレーム内に分析するための別のブロックが存在するかどうかを判別する。別のブロックが存在する場合、方法６００はステップ６０２に戻り、別のブロックが存在しない場合、方法６００はステップ６１６に進む。ステップ６１６において、現在のフレームの全てのブロックが分析され、方法６００は、信頼できない予測された分散を有するブロックの数が第３閾値を上回るかどうかを判別する。信頼できない予測された分散を有するブロックの数が第３閾値を上回る場合、方法６００はステップ６２０に進み、信頼できない予測された分散を有するブロックの数が第３閾値を下回る場合、方法６００はステップ６１８に進み、方法６００は終了する。ステップ６２０において、画像プロセッサ１２０は、ステップ６０６又はステップ６１２の何れかで決定された分散の代わりに、現在のフレームの全てのブロックに関して直接決定された分散を使用する。方法は、ステップ６２０の後にステップ６１８に進む。
【００４２】
決定されたブロックの分散について多くの用途が存在する。１つの例は、ビデオ安定化である。ビデオ安定化の目的は、ビデオ内の不要なカメラモーションを除去することである。ビデオスタビライザ（一例では、画像プロセッサ１２０の一部である）は、ビデオ内のブロック２０２の動きベクトルを識別することによって、ビデオ内の不要なモーションが発生する方法を識別する。より具体的には、ビデオ安定化が実行される任意のフレームに対して、画像プロセッサ１２０は、フレーム内の様々なブロックの動きベクトルを決定する。動きベクトルは、基準フレームに対するカメラの推定された動きを示す。次に、画像プロセッサ１２０は、基準フレームに対するカメラの推定された動きに基づいて現在のフレームを変更することによって、現在のフレームを修正することができる。画像プロセッサ１２０は、カメラの推定された動きを決定する際に特定の動きベクトルを使用するが、他の動きベクトルを避ける。より具体的には、低い分散を有するブロック２０２は、かかるブロックの変化が一般的にノイズに支配されるので、不正確な動きベクトルの影響を受ける。このため、画像プロセッサ１２０は、決定されたブロック２０２の分散を使用して、何れの動きベクトルを無視するかを決定する。画像プロセッサ１２０は、任意の技術的に実現可能な方法（例えば、手動）で設定可能な特定の閾値を下回る分散を有するブロック２０２の動きベクトルを無視する。
【００４３】
別の例は、ビデオ又は画像のサイズ変更である。画像サイズ変更に関する１つの技術は、シームカービングである。（例えば、「コンテンツを意識した画像サイズの変更に関するシームカービング（Seam Carving for Content-Aware Image Resizing）」を参照されたい。）シームカービングは、重要ではないとみなされた画像の一部を除去する。いくつかの例では、ブロックは、ブロックの分散に基づいて重要ではないと判別される。低い分散を有するブロックは、重要ではないとみなされる。分散を使用することができる方法のさらに別の例は、非可逆ビデオ圧縮である。非可逆ビデオ圧縮では、低い分散を有するブロックは、より高い程度で又は非可逆的な方法で圧縮することができ、高い分散を有するブロックは、より少ない程度で又は可逆的な方法で圧縮することができる。
【００４４】
画像のブロックの分散を決定するために本明細書で説明した動作の一部又は全てと、分散を使用することができる方法に関して説明した動作の一部又は全てとは、画像プロセッサ１２０によって実行される。
【００４５】
本明細書で説明した技術は、ビデオのフレームの分散を決定するための有利な技術を提供する。より具体的には、本技術は、動きベクトルによって示された基準フレーム内のブロックの分散、又は、当該分散の変更されたバージョンの何れかを使用して、動きベクトルに基づいて分散を決定する。既存の分散を使用すると、分散の決定に必要な計算量を少なくし、分散の決定に必要な時間を短縮することができる。
【００４６】
画素ブロックの分散を決定する例示的な方法が提供される。この方法は、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第２画素ブロックに関連付けられている。また、この方法は、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第２画素ブロックとの間の類似度を示す。さらに、この方法は、コストに基づいて画素ブロックの分散を決定することを含む。
【００４７】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を下回ることを判別することと、コストが第１閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第２画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を上回るが第２閾値を下回ることを判別することと、コストが第１閾値を上回るが第２閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第２画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【００４８】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値及び第２閾値を上回ることを判別することと、コストが第１閾値及び第２閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【００４９】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第１閾値及び第２閾値の両方を上回ることを判別することと、所定数のブロックのコストが第１閾値及び第２閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【００５０】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素ブロックのコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【００５１】
画素ブロックの分散を決定する例示的なコンピュータシステムが提供される。コンピュータシステムは、プロセッサと、プロセッサによって実行されると、プロセッサにステップを実行させる命令を記憶するメモリと、を備える。ステップは、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第２画素ブロックに関連付けられている。また、ステップは、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第２画素ブロックとの間の類似度を示す。さらに、ステップは、コストに基づいて画素ブロックの分散を決定することを含む。
【００５２】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を下回ることを判別することと、コストが第１閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第２画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を上回るが第２閾値を下回ることを判別することと、コストが第１閾値を上回るが第２閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第２画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【００５３】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値及び第２閾値を上回ることを判別することと、コストが第１閾値及び第２閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【００５４】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第１閾値及び第２閾値の両方を上回ることを判別することと、所定数のブロックのコストが第１閾値及び第２閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【００５５】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素ブロックのコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【００５６】
プロセッサによって実行されると、プロセッサに、画素ブロックの分散を決定する方法を実行させる命令を記憶する非一時的なコンピュータ可読記憶媒体が提供される。この方法は、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第２画素ブロックに関連付けられている。また、この方法は、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第２画素ブロックとの間の類似度を示す。さらに、この方法は、コストに基づいて画素ブロックの分散を決定することを含む。
【００５７】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を下回ることを判別することと、コストが第１閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第２画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値を上回るが第２閾値を下回ることを判別することと、コストが第１閾値を上回るが第２閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第２画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【００５８】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第１閾値及び第２閾値を上回ることを判別することと、コストが第１閾値及び第２閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【００５９】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第１閾値及び第２閾値の両方を上回ることを判別することと、所定数のブロックのコストが第１閾値及び第２閾値を上回ること判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【００６０】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素のコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【００６１】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【００６２】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（このような命令は、コンピュータ可読媒体に記憶することが可能である）の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の形態を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００６３】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体が含まれる。
【図１】
2020500448.tif 000007
【図２】
2020500448.tif 000008
【図３】
2020500448.tif 000009
【図４】
2020500448.tif 000010
【図５】
2020500448.tif 000011
【図６】
2020500448.tif 000012
【国際調査報告】
2020500448.tif 000013
2020500448.tif 000014