(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-30
(45)【発行日】2022-10-11
(54)【発明の名称】画像のブロックの動きベクトルに基づく当該ブロックの分散の決定
(51)【国際特許分類】
H04N 19/14 20140101AFI20221003BHJP
【FI】
H04N19/14
(21)【出願番号】P 2019517385
(86)(22)【出願日】2017-09-19
(86)【国際出願番号】 CA2017051103
(87)【国際公開番号】W WO2018068129
(87)【国際公開日】2018-04-19
【審査請求日】2020-09-17
(32)【優先日】2016-10-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】メーディ サイーディ
【審査官】清山 昂平
(56)【参考文献】
【文献】特開2007-228519(JP,A)
【文献】特開平10-191360(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
画素ブロックの分散を決定する方法であって、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第2画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを
取得することであって、前記コストは、
前記動きベクトルを識別することによって事前に決定されており、前記画素ブロックと前記第2画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含
み、
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第1閾値を上回るが第2閾値を下回ることを判別することと、
前記コストが前記第1閾値を上回るが前記第2閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が、前記基準フレームの前記第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む、
方法。
【請求項2】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが
前記第1閾値を下回ることを判別することと、
前記コストが前記第1閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第2画素ブロックの分散と等しいと判別することと、を含む、
請求項1の方法。
【請求項3】
前記相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている、
請求項
1の方法。
【請求項4】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが
前記第1閾値及び
前記第2閾値を上回ることを判別することと、
前記コストが前記第1閾値及び前記第2閾値の両方を上回ることを判別したことに応じて、前記画素ブロックの画素に基づいて前記画素ブロックの分散を直接決定することと、を含む、
請求項1の方法。
【請求項5】
前記分散を決定することは、
前記画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが
前記第1閾値及び
前記第2閾値の両方を上回ることを判別することと、
前記所定数のブロックのコストが前記第1閾値及び前記第2閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、前記現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む、
請求項1の方法。
【請求項6】
前記画素ブロックに関する前記動きベクトルを識別することは、
サーチエリア内の前記基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、
前記サーチエリア内の前記基準フレームの各画素ブロックのコストを決定することと、
決定されたコストのうち最低のコストを識別することと、
前記決定されたコストのうち最低のコストに関連する前記動きベクトル候補を、前記画素ブロックに関する前記動きベクトルとして識別することと、を含む、
請求項1の方法。
【請求項7】
前記各画素ブロックのコストを決定することは、
平均絶対差法又は平均二乗誤差法を前記画素ブロックの画素に適用することを含む、
請求項
6の方法。
【請求項8】
前記基準フレームは、前記画素ブロックが存在する現在のフレームの前又は後のフレームを含む、
請求項1の方法。
【請求項9】
画素ブロックの分散を決定するコンピュータシステムであって、
プロセッサと、
前記プロセッサによって実行されると、前記プロセッサにステップを実行させる命令を記憶するメモリと、を備え、
前記ステップは、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第2画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを
取得することであって、前記コストは、
前記動きベクトルを識別することによって事前に決定されており、前記画素ブロックと前記第2画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含
み、
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第1閾値を上回るが第2閾値を下回ると判別することと、
前記コストが前記第1閾値を上回るが前記第2閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が、前記基準フレームの前記第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む、
コンピュータシステム。
【請求項10】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが
前記第1閾値を下回ることを判別することと、
前記コストが前記第1閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第2画素ブロックの分散と等しいと判別することと、を含む、
請求項
9のコンピュータシステム。
【請求項11】
前記相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている、
請求項
9のコンピュータシステム。
【請求項12】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが
前記第1閾値及び
前記第2閾値を上回ることを判別することと、
前記コストが前記第1閾値及び前記第2閾値の両方を上回ることを判別したことに応じて、前記画素ブロックの画素に基づいて前記画素ブロックの分散を直接決定することと、を含む、
請求項
9のコンピュータシステム。
【請求項13】
前記分散を決定することは、
前記画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが
前記第1閾値及び
前記第2閾値の両方を上回ることを判別することと、
前記所定数のブロックのコストが前記第1閾値及び前記第2閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、前記現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む、
請求項
9のコンピュータシステム。
【請求項14】
前記画素ブロックに関する前記動きベクトルを識別することは、
サーチエリア内の前記基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、
前記サーチエリア内の前記基準フレームの各画素ブロックのコストを決定することと、
決定されたコストのうち最低のコストを識別することと、
前記決定されたコストのうち最低のコストに関連する前記動きベクトル候補を、前記画素ブロックに関する前記動きベクトルとして識別することと、を含む、
請求項
9のコンピュータシステム。
【請求項15】
前記各画素ブロックのコストを決定することは、
平均絶対差法又は平均二乗誤差法を前記画素ブロックの画素に適用することを含む、
請求項
14のコンピュータシステム。
【請求項16】
前記基準フレームは、前記画素ブロックが存在する現在のフレームの前又は後のフレームを含む、
請求項
9のコンピュータシステム。
【請求項17】
プロセッサによって実行されると、前記プロセッサに、画素ブロックの分散を決定する方法を実行させる命令を記憶するコンピュータ可読記憶媒体であって、
前記方法は、
前記画素ブロックに関する動きベクトルを識別することであって、前記動きベクトルは、基準フレームの第2画素ブロックに関連付けられている、ことと、
前記画素ブロックのコストを
取得することであって、前記コストは、
前記動きベクトルを識別することによって事前に決定されており、前記画素ブロックと前記第2画素ブロックとの間の類似度を示す、ことと、
前記コストに基づいて前記画素ブロックの分散を決定することと、を含
み、
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが第1閾値を上回るが第2閾値を下回ると判別することと、
前記コストが前記第1閾値を上回るが前記第2閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が、前記基準フレームの前記第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む、
コンピュータ可読記憶媒体。
【請求項18】
前記コストに基づいて前記画素ブロックの分散を決定することは、
前記コストが
前記第1閾値を下回ることを判別することと、
前記コストが前記第1閾値を下回ることを判別したことに応じて、前記画素ブロックの分散が前記基準フレームの前記第2画素ブロックの分散と等しいと判別することと、を含む、
請求項
17のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2016年10月13日に出願された米国特許出願第15/292,757号の利益を主張し、この内容は、本明細書に十分に記載されているかのように、言及したことによって本明細書に組み込まれる。
【背景技術】
【0002】
分散マップ(画像の画素ブロックに対して決定された分散のマップ)は、画像及びビデオ処理において多くの用途がある。このような用途には、例えば、画像又はビデオサイズの変更、圧縮等が含まれる。しかしながら、分散を決定することは、通常、計算集約的な動作である。この事実は、分散の決定を必要とする分析が一般的に比較的遅いことを意味する。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【0004】
【
図1】本開示の態様が実装される例示的なデバイスのブロック図である。
【
図3】一例による、ブロック内の画素を示す図である。
【
図4】一例による、現在の画像フレームの1つ以上のブロックの分散を決定するためにビデオの画像に適用される動きベクトル技術を示す図である。
【
図6】一例による、「コスト」(基準フレームのブロックに対する類似度)に基づいて分散値を決定する方法のフロー図である。
【発明を実施するための形態】
【0005】
本開示は、例えば、画素ブロックの画素値に基づいて分散を直接計算するのではなく、ビデオの基準フレームの画素ブロックの分散に基づいてビデオのフレーム内の画素ブロックの分散を決定するための技術に関する。本技術は、現在のフレーム内の画素ブロックの動きベクトルを識別することを含み、当該動きベクトルは、基準フレーム内の画素ブロックを示している。一例では、動きベクトルは、以前に使用された画像処理データ((例えば、画像圧縮、ビデオプロセッサ等のために)分散の決定以外の目的で決定された動きベクトルを既に含む)から識別される。別の例では、動きベクトルは、本明細書に記載の技術によって直接識別される。また、本技術は、動きベクトルに関連するコストを決定することと、当該コストを第1閾値及び第2閾値と比較することと、を含む。コストが第1閾値を下回る場合、現在のフレーム内の画素ブロックは、動きベクトルによって示された基準フレーム内の画素ブロックと十分に類似しているとみなされ、基準フレームの画素ブロックの分散(既に決定されたもの)は、現在のフレーム内の画素ブロックの分散として使用される。
【0006】
コストが第1閾値と第2閾値との間にある場合には、相関関数によって変更された基準フレームの画素ブロックの分散が、現在のフレームの画素ブロックの分散として使用される。現在のフレームの画素ブロックのコストが第2閾値を上回る場合には、基準フレームの画素ブロックの分散を使用することが信頼できないとみなされ(「推定された分散」が信頼できないとみなされ)、現在のフレームの画素ブロックの分散が、(例えば、本明細書で提供される分散を計算する式によって)直接決定される。上記の技術は、現在のフレームの全ての画素ブロックに使用される。信頼できない推定された分散を有する現在のフレームの画素ブロックの数が第3閾値を上回る場合、(例えば、ビデオ内でシーン変化が発生したため)分散推定技術があまりにも信頼できないとみなされ、現在のフレームの画素ブロック毎の分散は、代わりに、現在のフレームの各画素ブロックの画素値から直接決定される。
【0007】
図1は、本開示の態様が実装される例示的なデバイス100の例のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。デバイス100は、
図1に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【0008】
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコア(各プロセッサコアは、CPU若しくはGPUであってもよい)のうち1つ以上を含む。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102から離れて配置されてもよい。メモリ104は、揮発性メモリ又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等)を含む。
【0009】
ストレージデバイス106は、固定ストレージ又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、又は、バイオメトリックスキャナのうち1つ以上を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、又は、アンテナのうち1つ以上を含む。
【0010】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。
【0011】
ネットワークインタフェースカード(NIC)118は、コンピュータネットワークを介した他のデバイスへのインタフェースを提供する。NIC118は、イーサネット(登録商標)、wi‐fi(登録商標)、InfiniBand又は他のプロトコル等のネットワークプロトコルを介して外部デバイスと通信するように構成されている。アクセラレータ116は、処理タスクを受け入れて実行するように構成された1つ以上のデバイスを含む。これらのデバイスは、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、PIM(processing-in-memory)チップ、特定用途向け集積回路(ASIC)又は他のデバイスのうち1つ以上を含む。
【0012】
画像プロセッサ120は、2つの異なる形態で示されている。第1形態では、画像プロセッサ120は、図示するように、メモリ104に記憶され、プロセッサ102上で実行されるソフトウェアである。第2形態では、画像プロセッサは、出力ドライバ114内に存在するハードウェアグラフィックスエンジンの少なくとも一部である。他の形態では、画像プロセッサ120は、ソフトウェア要素及びハードウェア要素の組み合わせであり、ハードウェアは、例えば出力ドライバ114内に存在し、ソフトウェアは、例えばプロセッサ102上で実行される。
【0013】
画像プロセッサ120は、分析用の入力画像を受信し、当該画像を分析し、出力画像を含み得る分析結果を生成する。画像プロセッサ120が実行するタスクでは、入力画像内の一連のブロックの各々の分散値を決定する。概念的には、分散は、ブロックの画素が互いにどの程度類似しているかを示す。単色の画素ブロックは非常に低い分散を有し、異なる画素色のモザイクは非常に高い分散を有する。分散値は、画像プロセッサ120又はデバイス100の別の部分によって実行されるいくつかの異なる画像処理技術において使用することができる。したがって、画像プロセッサ120は、分散を使用して1つ以上の画像処理技術を実行することができる。
【0014】
図2は、一例による、画像200を示す図である。画像200は、分析用及び/又は(例えば、出力デバイス110に含まれてもよい)スクリーンでの表示用の画像データである。画像200は、画像200の分散を決定するために画像プロセッサ120によって処理される画像である。
図2に示す画像200は、図示するように格子状に配置された一連の画素ブロック202を含む。各画素ブロック202は、同じサイズであり、同じ数の画素を含む。本明細書で説明する分散を決定する技術は、
図2の画像200等の画像内の各ブロック202の分散値を決定する。
【0015】
図3は、一例による、ブロック202内の画素302を示す図である。
図3に示すブロック202は、幅Xの画素と、高さYの画素とを有し、したがって、N=X×Yの画素を有する。一例では、ブロック202の分散は、以下のように決定される。
【数1】
【0016】
上記の式において、「μ」は、ブロック内の全ての画素の算術平均である。「pixeli」は、画素毎の代表的な色値又は輝度値である。例えば、画素がYUV色空間で表される場合、使用される画素値はY(輝度)値である。画素がRGB色空間で表される場合、R(赤)、G(緑)、B(青)の何れかの成分を「pixeli」として使用することができる。したがって、ブロックの分散は、各画素値と平均画素値との差の2乗の合計を、画素数(N)-1で除算したものに等しい。分散を直接決定することは、平方根演算及び除算を含むので、数学的に集中的(mathematically intensive)である。したがって、分散の直接計算を必要としない、フレームの1つ以上のブロック202の分散を決定する技術が本明細書で提供される。具体的には、これらの技術は、動きベクトル技術を使用して、「基準フレーム」(基準フレームは、例えば直前のフレーム等の他のフレームであってもよい)内のブロックの分散に基づいて、特定のフレーム内のブロック202の分散を推定する。
【0017】
図4は、一例による、現在の画像フレームの1つ以上のブロック202の分散を決定するためにビデオの画像に適用される動きベクトル技術を示す図である。一例では、画像プロセッサ120は、この動きベクトル技術を使用して、分散を決定するための動きベクトルを決定する。或いは、画像プロセッサ120は、例えば画像圧縮、ビデオ分析等の異なる目的で既に決定された動きベクトルを取得する。
【0018】
動きベクトル技術は、現在のフレーム(すなわち、分析中のフレーム)内のブロック202毎に「動きベクトル」407を決定することを含む。動きベクトル407は、特定の画素のブロック202がビデオの2つのフレーム間で移動した「距離」を表す。より具体的には、動きベクトル407は、現在のフレームにおいてブロックの画素が移動した基準フレーム内のブロックを示す。基準フレームは、現在のフレーム以外のフレームであり、例えば、直前のフレーム又は現在のフレームの前の他のフレームであってもよい。いくつかの例では、後のフレームが基準フレームとなる。
【0019】
一例では、ブロックは、空と芝生との間のエッジ(an edge between a sky and a lawn)を示す画素を含む。前のフレーム(基準フレーム)では、エッジの画素は、座標7,9を有するブロックに存在していた。現在のフレームでは、エッジの画素は、座標8,10を有するブロックに存在する。現在のフレーム内の座標8,10を有するブロックに関する動きベクトルは-1,-1であり、この動きベクトルは、座標8,10を有するブロックから座標7,9を有するブロックを示している。動きベクトル技術は、通常、ブロックの分散の決定に直接関係しない目的に使用されるが、ブロックの分散を決定するために動きベクトル407を使用する新たな技術が本明細書で提案される。
【0020】
図4には、現在のフレームと基準フレームとのオーバーレイ400が示される。オーバーレイ400は、2つのフレームのブロックがオーバーレイ400内に示されるという意味でオーバーレイである。これらの2つのフレームは、現在のフレーム及び基準フレームである。現在のフレームの唯一のブロックは、現在のブロック402である。他の全てのブロック202は、基準フレームのブロックである。
【0021】
現在のブロック402に関する動きベクトル407の決定は、複数の動きベクトル候補406毎にコストを決定することを含む。現在のブロック402に関する動きベクトル407を決定することは、動きベクトル候補406毎のコストが決定されると、全ての決定されたコストのうち最低のコストを識別することを含む。全ての動きベクトル候補406のうち最低のコストを有する動きベクトル候補406は、現在のブロック402に関する動きベクトルとみなされる。換言すれば、動きベクトル候補406は、基準フレームと現在のフレームとの間での現在のブロック402の画素の移動距離を表すと考えられる。動きベクトルに関連するコストは、現在のブロック402に関するコストとみなされる。動きベクトル候補406等の動きベクトルは、(画素302単位ではなく)ブロック202単位で定義される。したがって、(1,1)として示される動きベクトルは、現在のブロック402の1つ上のブロック202であって1つ右のブロック202であるブロック202を指す。(正又は負等の符号と上又は下等の方向との相関は任意であり、任意の相関を使用することができる。)
【0022】
図4のサーチエリア404内にいくつかの動きベクトル候補406が示されている。サーチエリア404は、画像プロセッサ120が、最低コストを有する動きベクトル候補406を検索する画像の一部である。「コスト」は、現在のブロック402と、特定の動きベクトル候補406によって示されるブロック202との間の「類似性」の尺度として考えることができる。画像プロセッサ120は、サーチエリア404内の異なるブロック202を示す動きベクトル候補406の各々に関するコストを決定し、最低コストを有する動きベクトル候補406を識別する。一例では、サーチエリア404は、垂直ブロック範囲及び水平ブロック範囲によって定義される。この例では、サーチエリア404は、現在のブロック402から水平ブロックに等しい水平距離内、及び、現在のブロック402から垂直ブロック範囲に等しい垂直距離内に全てのブロック202を含むように定義される。
【0023】
図4には、2つの動きベクトル候補406しか示されていないが、これは明瞭にするためだけのものであることに留意されたい。動作中、画像プロセッサ120は、サーチエリア404及び基準フレーム内の全てのブロック202に関する動きベクトル候補406を識別し、かかる動きベクトル候補406の各々に関するコストを識別し、最低コストを有する基準フレーム内のブロック202を検出することによって、現在のブロック402に関する動きベクトル407を識別する。このブロック202を示す動きベクトル候補406は、現在のブロック402に関する動きベクトル407である。さらに、コスト(分析された全てのコストのうち「最低コスト」)は、現在のブロック402に割り当てられたコストとなる。現在のブロック402のこのコストは、現在のブロック402の画素が、サーチエリア404内の基準フレームの最も類似したブロック202の画素とどの程度類似しているかを示す。また、基準フレーム内であるが現在のブロック402と同じ位置のブロックを示す動きベクトル候補406は、現在のブロック402に関する動きベクトル407を決定する際に検索されることに留意されたい。かかる動きベクトル候補406は、基準フレームと現在のフレームとの間で現在のブロック402の画素の動きがないものと関連付けられる。
【0024】
ブロック202のコストを決定するのに使用可能な多くの技術が存在する。1つの例は、平均絶対差(mean absolute difference)法である。平均絶対差法では、以下の式に従ってコストが決定される。
【数2】
式中、C
ijは、ブロック内の位置i,jにおける現在のブロック402の画素であり、R
ijは、コストが決定されるブロック202内の対応する画素である。
【0025】
別の例は、平均二乗誤差(mean squared error)法である。平均二乗誤差法では、以下の式に従ってコストが決定される。
【数3】
式中、平均絶対差法と同様に、C
ijは、ブロック内の位置i,jにおける現在のブロック402の画素であり、R
ijは、コストが決定されるブロック202内の対応する画素である。直接的な分散の決定に関する「pixel
i」と同様に、C
ij又はR
ijの値は、画素がYUV色空間で表される場合には輝度値であってもよいし、画素がRGB色空間で表される場合には赤、緑、青の何れかの成分であってもよい。ブロック202のコストを決定するために、他の技術的に実現可能な技術が代わりに使用されてもよい。
【0026】
画像プロセッサ120は、現在のブロック402に関する動きベクトル407及びコストを決定した後に、これらのアイテムを処理して、現在のブロック402の分散を取得する。より具体的には、画像プロセッサ120は、コストを分析して、3つの動作のうち何れの動作が現在のブロック402の分散を取得するのに使用されるかを決定する。コストが第1閾値を下回る場合、第1動作が発生する。第1動作は、現在のブロック402に関する動きベクトル407によって示されるブロック202の分散を、現在のブロック402の分散として使用することである。概念的に、これは、次のように考えることができる。現在のブロック402のコストが十分に低い場合、動きベクトル407によって示されるブロック202は、現在のブロック402と非常に類似しているとみなされる。したがって、現在のブロック402の分散は、動きベクトル407によって示されるブロック202の分散と同じであると想定することができる。これが発生するときの1つの状況は、画像内に動きが全くない場合である。かかる状況では、現在のブロック402は、動きベクトルによって示されるブロック202の分散と同じであり、コストは0又は0に近い。
【0027】
現在のブロック402のコストに基づいて分散を決定する第2動作は、コストが第1閾値を上回るが第2閾値を下回る場合に発生する。この場合、画像プロセッサ120は、分散を、動きベクトル407によって示されるブロック202の分散の倍数として決定する。倍数は、0~1の範囲である。いくつかの例では、倍数は、相関関数によって決定されるように、コストと共に変動する。相関関数を決定する技術については、以下に説明する。
【0028】
現在のブロック402のコストに基づいて分散を決定する第3動作は、コストが第2閾値を上回る場合に発生する。この場合、現在のブロック402と動きベクトル407によって示されるブロック202とはあまりにも類似していないとみなされ、現在のブロック402は、「信頼できない予測された分散」を有するとみなされる。この場合、画像プロセッサ120は、基準画像の別のブロック202に基づくのではなく、現在のブロック402の画素の値から直接、現在のブロック402の分散を決定する。一例では、画像プロセッサ120は、
図3に関連して提供された式を使用して、分散を直接決定する。
【数4】
【0029】
画像プロセッサ120は、上述した動きベクトル技術を使用して、現在のフレーム内のブロック毎の動きベクトル407及びコストを決定する。信頼できない予測された分散を有する現在のフレーム内のブロックの数が第3閾値を上回る場合、画像プロセッサ120は、シーン変化が生じたと判別する(換言すれば、現在のフレーム内のあまりに多くのブロックが基準フレームの他のブロック202とかなり類似していない場合、画像プロセッサ120は、シーン変化が生じたと判別する)。シーン変化が生じた場合、画像プロセッサ120は、現在のフレームの任意のブロックの分散を基準フレームのブロック202の分散に基づかせる代わりに、現在のフレームの全てのブロックの分散を直接計算する。画像プロセッサ120が現在のフレームの全てのブロックの分散を直接計算する理由は、シーン変化の境界に亘って分散の誤差が広がるのを回避するためである。
【0030】
いくつかの例では、相関関数、第1閾値、第2閾値及び第3閾値は、校正データとして画像プロセッサ120にハードコーディングされる。別の例では、何れか又は全ての校正データは、校正手順において校正システムによって決定される。一例では、校正システムは、機械学習技術を用いて校正データを決定する。一例では、校正システムは、プロセッサと、プロセッサによって実行される命令を記憶するメモリと、を含むコンピュータ等の標準的なコンピュータで実行されるソフトウェアであり、命令は、校正システムの動作をプロセッサに実行させる。別の例では、校正システムは、特定用途集積回路として具体化され、又は、本明細書に記載された動作を実行するための他の技術的に実現可能なシステムとすることができる。
【0031】
機械学習技術の一例は、回帰分析である。
図5は、回帰分析の一例を示すグラフ500である。校正システムは、校正データの相関関数を検出するように回帰分析を適用するために、1つ以上のトレーニングビデオを入力データとして受信する。校正システムは、各トレーニングビデオの各フレーム内の全てのブロックの分散を、(例えば、
図3に関連して説明した式に従って)直接決定する。また、校正システムは、各ビデオのフレーム毎に何れの基準フレームを使用するかを決定する(一例では、任意のフレームの基準フレームは、直前のフレームである)。校正システムは、各フレームのブロック毎のコストを決定する。上述したように、任意の特定のフレームの任意の特定のブロックのコストは、基準フレームに関連している。次に、校正システムは、ブロック毎に「分散乗数」のセットを生成し、コストに対する分散乗算をプロットする。x軸上にプロットされた分散乗数は、フレーム内のブロックの実際の分散と、コストが計算された基準フレーム内の対応するブロックの実際の分散と、の間の乗算関係である。グラフ500は、分散乗数対コストの例示的なプロットであり、各データ点は、単一のブロックに対応しており、単一のブロックに関する分散倍数及びコストによって定義される。
【0032】
校正システムは、このデータがプロットされた後に、曲線をプロットデータに当てはめる。結果として得られる曲線は、相関関数として機能する。換言すれば、データに当てはめられた曲線は、画像プロセッサ120によって相関関数として使用される。曲線をプロットデータに当てはめるための技術的に実現可能な技術(例えば、曲線をデータに当てはめるための任意の非線形回帰技術)を使用することができる。分散乗数をコストに相関させるための他の技術的に実現可能な機械学習技術を使用することができる。
【0033】
第1閾値502は、上述したように、分散乗数が1に等しく設定される閾値である。第2閾値504は、これを超えると、予測された分散が、信頼できない予測された分散であると画像プロセッサ120によって判別される閾値である。(これらの閾値は、上記の第1閾値及び第2閾値である)。これらの閾値の各々は、画像プロセッサ120の動作における誤差の量を制限するように設定することができる。より具体的には、校正システムは、相関関数が決定された後に、第1閾値502及び第2閾値504を任意の値に設定し、上述した分散計算技術をテストデータに適用して、予測された分散値を取得し、(例えば、
図3に関連して説明した式と同様に直接的な計算によって決定された)予測された分散値と実際の分散値との間の誤差を決定する。この誤差が、望ましくないとみなされる誤差率を上回る場合、校正システムは、第1閾値502をより低く設定するか、第2閾値504をより高く設定するか、第1閾値502をより低く設定することと第2閾値504をより高く設定することとの両方を行う。校正システムは、誤差が所望の割合になるかこれを下回るまで、この処理を繰り返す。同様に、いくつかの例では、第3閾値は、上述した分散計算技術を1つ以上のビデオに適用し、誤差割合を検出し、満足な誤差割合が達成されるまで第3閾値を変更することによって決定される。
【0034】
いくつかの例では、画像プロセッサ120は、校正データの複数のセットを記憶し、各セットは、異なる「タイプ」のビデオ用に記憶され、「タイプ」は、ビデオのコンテンツのタイプを指す。いくつかの例示的なビデオタイプは、ネイチャービデオ、アクションムービー、ニュースビデオ、トークショービデオ等を含む。いくつかの例では、各ビデオは、タイプ識別子でタグ付けされており、これにより、画像プロセッサ120は、何れの校正データのセットを使用するかを決定することができる。
【0035】
いくつかの例では、相関関数が使用されない。代わりに、動きベクトルによって示されるブロック202の分散は、現在のブロック402のコストに基づいて使用されるか、使用されないかの何れかである。換言すれば、相関関数が使用されるコスト値の範囲が縮小されて存在しなくなるように、第1閾値は第2閾値と等しい。動きベクトルによって示されるブロック202の分散が使用される場合には、コストが第1閾値及び第2閾値の何れかを下回っており、又は、画像プロセッサ120が現在のブロック402の分散を直接決定する場合には、コストが第1閾値及び第2閾値を上回っている。
【0036】
図6は、一例による、「コスト」(基準フレームのブロックに対する類似度)に基づいて分散値を決定する方法600のフロー図である。
図1~
図5に関連して示され説明されたシステムに関して説明するが、任意の技術的に実現可能な順序で方法を実行するように構成された任意のシステムが本開示の範囲内に含まれることを理解されたい。
【0037】
方法600はステップ602で開始し、画像プロセッサ120は、現在のブロックに関する動きベクトル及びコストを決定する。一例では、画像プロセッサ120は、例えば、上述した動きベクトル技術を使用することによって、動きベクトルを直接決定する。より具体的には、画像プロセッサ120は、サーチエリアを識別し、サーチエリア内の基準フレーム内の全てのブロックを識別し、サーチエリア内の基準フレーム内の全てのブロックのコストを決定し、決定されたコストのうち最低コストを識別することによって、現在のブロックに関する動きベクトル及びコストを直接決定する。最低コストは、現在のブロックのコストであり、最低コストに関連する動きベクトルは、現在のブロックの動きベクトルである。動きベクトルを決定する別の例では、画像プロセッサ120は、画像圧縮、ビデオ分析等の異なる目的のために既に決定された動きベクトルを取得する。
【0038】
ステップ604において、画像プロセッサ120は、ブロックのコストが第1閾値を下回るかどうかを判別する。第1閾値は、動きベクトルに関連するブロックが現在のブロックと十分に類似していると判別され、当該ブロックの分散を現在のブロックの分散として使用することができると判別されるレベルを下回るレベルを表している。したがって、コストが第1閾値を下回る場合、方法600はステップ606に進み、画像プロセッサ120は、決定された動きベクトルに関連するブロックの分散を、現在のブロックの分散として使用する。方法600は、ステップ606の後にステップ608に進む。
【0039】
ステップ604において、コストが第1閾値を上回ると画像プロセッサ120が判別した場合、方法600はステップ610に進む。ステップ610において、画像プロセッサ120は、コストが第1閾値を上回るが第2閾値を下回るかどうかを判別する。第2閾値は、これを超えると、予測された分散が信頼できないものとみなされるレベルである(コストがあまりに高いため、コストに関連するブロックが現在のブロックとあまりにも異なっていることを意味する)。コストが第1閾値を上回るが第2閾値を下回る場合、方法600はステップ612に進み、画像プロセッサ120は、上述した相関関数を、動きベクトルによって示されるブロックの分散に適用して、現在のブロックの分散を取得する。方法600は、ステップ612の後にステップ608に進む。
【0040】
ステップ610において、コストが第1閾値を上回るが第2閾値を下回ると画像プロセッサ120が判別しない場合には、コストが第2閾値を上回っており、方法はステップ614に進む。ステップ614において、画像プロセッサ120は、現在のブロックの予測された分散が信頼できないと判別し、
図3に関連して上述した式等を用いて、現在のブロックの分散を直接決定する。方法は、ステップ614の後にステップ608に進む。
【0041】
ステップ608において、画像プロセッサ120は、現在のフレーム内に分析するための別のブロックが存在するかどうかを判別する。別のブロックが存在する場合、方法600はステップ602に戻り、別のブロックが存在しない場合、方法600はステップ616に進む。ステップ616において、現在のフレームの全てのブロックが分析され、方法600は、信頼できない予測された分散を有するブロックの数が第3閾値を上回るかどうかを判別する。信頼できない予測された分散を有するブロックの数が第3閾値を上回る場合、方法600はステップ620に進み、信頼できない予測された分散を有するブロックの数が第3閾値を下回る場合、方法600はステップ618に進み、方法600は終了する。ステップ620において、画像プロセッサ120は、ステップ606又はステップ612の何れかで決定された分散の代わりに、現在のフレームの全てのブロックに関して直接決定された分散を使用する。方法は、ステップ620の後にステップ618に進む。
【0042】
決定されたブロックの分散について多くの用途が存在する。1つの例は、ビデオ安定化である。ビデオ安定化の目的は、ビデオ内の不要なカメラモーションを除去することである。ビデオスタビライザ(一例では、画像プロセッサ120の一部である)は、ビデオ内のブロック202の動きベクトルを識別することによって、ビデオ内の不要なモーションが発生する方法を識別する。より具体的には、ビデオ安定化が実行される任意のフレームに対して、画像プロセッサ120は、フレーム内の様々なブロックの動きベクトルを決定する。動きベクトルは、基準フレームに対するカメラの推定された動きを示す。次に、画像プロセッサ120は、基準フレームに対するカメラの推定された動きに基づいて現在のフレームを変更することによって、現在のフレームを修正することができる。画像プロセッサ120は、カメラの推定された動きを決定する際に特定の動きベクトルを使用するが、他の動きベクトルを避ける。より具体的には、低い分散を有するブロック202は、かかるブロックの変化が一般的にノイズに支配されるので、不正確な動きベクトルの影響を受ける。このため、画像プロセッサ120は、決定されたブロック202の分散を使用して、何れの動きベクトルを無視するかを決定する。画像プロセッサ120は、任意の技術的に実現可能な方法(例えば、手動)で設定可能な特定の閾値を下回る分散を有するブロック202の動きベクトルを無視する。
【0043】
別の例は、ビデオ又は画像のサイズ変更である。画像サイズ変更に関する1つの技術は、シームカービングである。(例えば、「コンテンツを意識した画像サイズの変更に関するシームカービング(Seam Carving for Content-Aware Image Resizing)」を参照されたい。)シームカービングは、重要ではないとみなされた画像の一部を除去する。いくつかの例では、ブロックは、ブロックの分散に基づいて重要ではないと判別される。低い分散を有するブロックは、重要ではないとみなされる。分散を使用することができる方法のさらに別の例は、非可逆ビデオ圧縮である。非可逆ビデオ圧縮では、低い分散を有するブロックは、より高い程度で又は非可逆的な方法で圧縮することができ、高い分散を有するブロックは、より少ない程度で又は可逆的な方法で圧縮することができる。
【0044】
画像のブロックの分散を決定するために本明細書で説明した動作の一部又は全てと、分散を使用することができる方法に関して説明した動作の一部又は全てとは、画像プロセッサ120によって実行される。
【0045】
本明細書で説明した技術は、ビデオのフレームの分散を決定するための有利な技術を提供する。より具体的には、本技術は、動きベクトルによって示された基準フレーム内のブロックの分散、又は、当該分散の変更されたバージョンの何れかを使用して、動きベクトルに基づいて分散を決定する。既存の分散を使用すると、分散の決定に必要な計算量を少なくし、分散の決定に必要な時間を短縮することができる。
【0046】
画素ブロックの分散を決定する例示的な方法が提供される。この方法は、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第2画素ブロックに関連付けられている。また、この方法は、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第2画素ブロックとの間の類似度を示す。さらに、この方法は、コストに基づいて画素ブロックの分散を決定することを含む。
【0047】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を下回ることを判別することと、コストが第1閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第2画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を上回るが第2閾値を下回ることを判別することと、コストが第1閾値を上回るが第2閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【0048】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値及び第2閾値を上回ることを判別することと、コストが第1閾値及び第2閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【0049】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第1閾値及び第2閾値の両方を上回ることを判別することと、所定数のブロックのコストが第1閾値及び第2閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【0050】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素ブロックのコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【0051】
画素ブロックの分散を決定する例示的なコンピュータシステムが提供される。コンピュータシステムは、プロセッサと、プロセッサによって実行されると、プロセッサにステップを実行させる命令を記憶するメモリと、を備える。ステップは、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第2画素ブロックに関連付けられている。また、ステップは、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第2画素ブロックとの間の類似度を示す。さらに、ステップは、コストに基づいて画素ブロックの分散を決定することを含む。
【0052】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を下回ることを判別することと、コストが第1閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第2画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を上回るが第2閾値を下回ることを判別することと、コストが第1閾値を上回るが第2閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【0053】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値及び第2閾値を上回ることを判別することと、コストが第1閾値及び第2閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【0054】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第1閾値及び第2閾値の両方を上回ることを判別することと、所定数のブロックのコストが第1閾値及び第2閾値を上回ることを判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【0055】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素ブロックのコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【0056】
プロセッサによって実行されると、プロセッサに、画素ブロックの分散を決定する方法を実行させる命令を記憶する非一時的なコンピュータ可読記憶媒体が提供される。この方法は、画素ブロックに関する動きベクトルを識別することを含み、動きベクトルは、基準フレームの第2画素ブロックに関連付けられている。また、この方法は、画素ブロックのコストを決定することを含み、コストは、画素ブロックと第2画素ブロックとの間の類似度を示す。さらに、この方法は、コストに基づいて画素ブロックの分散を決定することを含む。
【0057】
一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を下回ることを判別することと、コストが第1閾値を下回ることを判別したことに応じて、画素ブロックの分散が基準フレームの第2画素ブロックの分散と等しいと判別することと、を含む。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値を上回るが第2閾値を下回ることを判別することと、コストが第1閾値を上回るが第2閾値を下回ることを判別したことに応じて、画素ブロックの分散が、基準フレームの第2画素ブロックの分散に相関係数を乗じたものと等しいと判別することと、を含む。
【0058】
一例では、相関係数は、ビデオトレーニングデータに基づく相関関数に基づいている。一例では、コストに基づいて画素ブロックの分散を決定することは、コストが第1閾値及び第2閾値を上回ることを判別することと、コストが第1閾値及び第2閾値の両方を上回ることを判別したことに応じて、画素ブロックの画素に基づいて画素ブロックの分散を直接決定することと、を含む。
【0059】
一例では、分散を決定することは、画素ブロックが存在する現在のフレームの所定数のブロックの全てのコストが第1閾値及び第2閾値の両方を上回ることを判別することと、所定数のブロックのコストが第1閾値及び第2閾値を上回ること判別したことに応じて、各画素ブロックの画素値に基づいて、現在のフレームの全ての画素ブロックの分散を直接決定することと、を含む。
【0060】
一例では、画素ブロックに関する動きベクトルを識別することは、サーチエリア内の基準フレームの画素ブロックを示す動きベクトル候補のセットを識別することと、サーチエリア内の基準フレームの各画素ブロックのコストを決定することと、決定されたコストのうち最低のコストを識別することと、決定されたコストのうち最低のコストに関連する動きベクトル候補を、画素ブロックに関する動きベクトルとして識別することと、を含む。一例では、各画素のコストを決定することは、平均絶対差法又は平均二乗誤差法を画素ブロックの画素に適用することを含む。一例では、基準フレームは、画素ブロックが存在する現在のフレームの前又は後のフレームを含む。
【0061】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【0062】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の形態を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0063】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。