(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-10
(45)【発行日】2023-07-19
(54)【発明の名称】動きベクトルを活用した空間ブロックレベルのピクセルアクティビティ抽出の最適化
(51)【国際特許分類】
H04N 19/102 20140101AFI20230711BHJP
H04N 19/136 20140101ALI20230711BHJP
H04N 19/176 20140101ALI20230711BHJP
H04N 19/189 20140101ALI20230711BHJP
H04N 19/503 20140101ALI20230711BHJP
【FI】
H04N19/102
H04N19/136
H04N19/176
H04N19/189
H04N19/503
(21)【出願番号】P 2022092933
(22)【出願日】2022-06-08
(62)【分割の表示】P 2021515032の分割
【原出願日】2019-09-19
【審査請求日】2022-06-10
(32)【優先日】2018-09-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】メーディ サイーディ
(72)【発明者】
【氏名】ボリス イバノビッチ
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2015/012253(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
回路を備える装置であって、
前記回路は、
ビデオストリームの新たなビデオフレームを受信することと、
前記新たなビデオフレームのブロックのピクセルサンプルと、基準ビデオフレームのブロックのピクセルサンプルと、の間の差を決定することと、
前記差が第1の閾値を超えていると判別したことに応じて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティを計算することと、
を行うように構成されている、
装置。
【請求項2】
前記回路は、
前記差が第2の閾値未満であると判別したことに基づいて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を、前記基準ビデオフレームの前記ブロックのピクセルアクティビティと等しく設定するように構成されている、
請求項1の装置。
【請求項3】
前記回路は、
前記差が、前記第1の閾値よりも小さい前記第2の閾値よりも大きく、前記第1の閾値未満であると判別したことに基づいて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定することによって、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を生成するように構成されている、
請求項2の装置。
【請求項4】
前記回路は、前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定するために、
伝達関数を使用して前記差を補正係数にマッピングすることと、
前記補正係数に基づいて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティを更新することと、
を行うように構成されている、
請求項3の装置。
【請求項5】
前記新たなビデオフレームの前記ブロックのピクセルサンプルと、前記基準ビデオフレームの前記ブロックのピクセルサンプルと、の間の差は、ピクセルサンプル間の差分絶対値和を含む、
請求項1の装置。
【請求項6】
メモリに結合されたエンコーダを備え、
前記回路は、
前記ピクセルアクティビティに基づいて符号化ブロックを生成するために、前記新たなビデオフレームの前記ブロックのピクセルアクティビティを前記エンコーダに送信するように構成されている、
請求項1の装置。
【請求項7】
前記回路は、
前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの位置の変化を表す動きベクトルを用いて、前記基準ビデオフレームの前記ブロックを識別するように構成されている、
請求項1の装置。
【請求項8】
前記動きベクトルは、前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの水平及び垂直変位を含み、
前記差は、前記新たなビデオフレームの前記ブロックと、前記基準ビデオフレームの他のブロックと、の間の差よりも小さい、
請求項7の装置。
【請求項9】
回路を備える制御ロジックが、ビデオストリームの新たなビデオフレームを受信することと、
前記回路が、前記新たなビデオフレームのブロックのピクセルサンプルと、基準ビデオフレームのブロックのピクセルサンプルと、の間の差を決定することと、
前記回路が、前記差が第1の閾値を超えていると判別したことに応じて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティを計算することと、を含む、
方法。
【請求項10】
前記差が第2の閾値未満であると判別したことに応じて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を、前記基準ビデオフレームの前記ブロックのピクセルアクティビティと等しく設定することをさらに含む、
請求項9の方法。
【請求項11】
前記差が、前記第1の閾値よりも小さい前記第2の閾値よりも大きく、前記第1の閾値未満であると判別したことに応じて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定することによって、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を生成することをさらに含む、
請求項10の方法。
【請求項12】
前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定するために、
伝達関数を使用して前記差を補正係数にマッピングすることと、
前記補正係数に基づいて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティを更新することと、をさらに含む、
請求項11の方法。
【請求項13】
前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの位置の変化を表す動きベクトルを用いて、前記基準ビデオフレームの前記ブロックを識別することをさらに含む、
請求項9の方法。
【請求項14】
前記動きベクトルは、前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの水平及び垂直変位を含み、
前記差は、前記新たなビデオフレームの前記ブロックと、前記基準ビデオフレームの他のブロックと、の間の差よりも小さい、
請求項13の方法。
【請求項15】
符号化されたビットストリームを、ネットワークを介して伝送するように構成されたサーバを備えるシステムであって、
前記サーバは、
ビデオストリームの基準ビデオフレームを記憶するように構成されたメモリと、
前記メモリに結合された回路と、を備え、
前記回路は、
前記ビデオストリームの新たなビデオフレームを受信することと、
前記新たなビデオフレームのブロックのピクセルサンプルと、前記基準ビデオフレームのブロックのピクセルサンプルと、の間の差を決定することと、
前記差が第1の閾値を超えていると判別したことに応じて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティを計算することと、
を行うように構成されている、
システム。
【請求項16】
前記回路は、
前記差が第2の閾値未満であると判別したことに基づいて、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を、前記基準ビデオフレームの前記ブロックのピクセルアクティビティと等しく設定するように構成されている、
請求項15のシステム。
【請求項17】
前記回路は、
前記差が、前記第1の閾値よりも小さい前記第2の閾値よりも大きく、前記第1の閾値未満であると判別したことに基づいて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定することによって、前記新たなビデオフレームの前記ブロックのピクセルアクティビティの推定値を生成するように構成されている、
請求項16のシステム。
【請求項18】
前記回路は、前記基準ビデオフレームの前記ブロックのピクセルアクティビティから推定するために、
伝達関数を使用して前記差を補正係数にマッピングすることと、
前記補正係数に基づいて、前記基準ビデオフレームの前記ブロックのピクセルアクティビティを更新することと、
を行うように構成されている、
請求項17のシステム。
【請求項19】
前記回路は、
前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの位置の変化を表す動きベクトルを用いて、前記基準ビデオフレームの前記ブロックを識別するように構成されている、
請求項15のシステム。
【請求項20】
前記動きベクトルは、前記基準ビデオフレームの前記ブロックと比較した、前記新たなビデオフレームの前記ブロックの水平及び垂直変位を含み、
前記差は、前記新たなビデオフレームの前記ブロックと、前記基準ビデオフレームの他のブロックと、の間の差よりも小さい、
請求項19のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
様々なアプリケーションが、画像又はビデオコンテンツの符号化及び復号化を実行する。例えば、ビデオトランスコーディング、デスクトップ共有、クラウドゲーミング、ゲーミング観戦は、コンテンツの符号化及び復号化に対するサポートを含むアプリケーションの一部である。ブロック内のピクセルアクティビティの計算は、一般的に、異なるビデオ処理アルゴリズム及び分析アルゴリズムで実行される。例えば、ブロックレベルのピクセルアクティビティを使用して、一部のアプリケーションで画像内のテクスチャタイプを決定することができる。ブロックの例は、高効率ビデオコーディング(HEVC)規格で使用されるコーディングツリーブロック(CTB)、又は、H.264規格で使用されるマクロブロックを含む。他のタイプの規格で使用される他のタイプのブロックも考えられる。
【0002】
画像又はビデオフレームのブロックのピクセルアクティビティを計算するために、異なる方法を使用することができる。例えば、一実施形態では、フレームのブロック毎に、グレイレベル共起行列(GLCM)が計算される。GLCMデータは、ブロック内でピクセル輝度の異なる変動が発生する頻度を示す。GLCMデータは、距離d及び角度θのピクセルについて計算することができる。別の実施形態では、所定のブロックについて2次元(2D)空間平均勾配が計算される。この勾配は、垂直及び水平のエッジをキャプチャすることができる。さらなる実施形態では、ウェーブレット変換や他のタイプの変換が、所定のブロックのアクティビティパラメータを測定するために使用される。したがって、本明細書で使用する場合、「ピクセルアクティビティメトリック」、「ピクセルアクティビティ(pixel activity)」又は「ピクセルアクティビティ(pixel activities)」という用語は、ブロックのGLCM、勾配、ウェーブレット変換、又は、他のメトリック若しくは要約統計量として定義される。「ピクセルアクティビティ」及び「ブロックレベルのピクセルアクティビティ」という用語は、本明細書において互換的に使用することができることに留意されたい。場合によって、ピクセルアクティビティは、行列を用いて表される。他の場合、ピクセルアクティビティは、1つ以上の値を使用して表される。
【0003】
ビデオの各フレームのブロック毎にブロックレベルのピクセルアクティビティを計算することは、使用されるアクティビティメトリックのタイプに応じて、時間がかかる、及び/又は、不要な電力を消費する計算となる場合がある。例えば、ピクセルの共起関係を最初から計算するには、ブロック内の全てのピクセルのピクセル対を評価する必要がある。このタイプの計算には、フレーム全体の処理が必要になる。並列計算を実行することが可能である場合もあるが、処理需要は依然として高い。
【0004】
添付の図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0005】
【
図1】コンテンツを符号化及び復号化するためのシステムの一実施形態のブロック図である。
【
図3】ビデオフレームのシーケンスに対する動きベクトルのセットの一実施形態のブロック図である。
【
図4】動きベクトルを利用して空間ブロックレベルのピクセルアクティビティ抽出の最適化を実施する方法の一実施形態を示す一般化されたフロー図である。
【
図5】新たなフレームのブロックのブロックレベルのピクセルアクティビティを生成する方法の別の実施形態を示す一般化されたフロー図である。
【
図6】ピクセルアクティビティメトリック生成スキームを決定する方法の一実施形態を示す一般化されたフロー図である。
【
図7】ビデオシーケンスの連続フレーム及び対応する動きベクトルの一実施形態を示すブロック図である。
【
図8】異なるブロックメトリック粒度レベルを有するフレームの一実施形態のブロック図である。
【
図9】異なる粒度でピクセルアクティビティメトリックを計算する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0006】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細無しに様々な実施形態を実施し得ることを認識すべきである。場合によっては、本明細書で説明されるアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0007】
空間ブロックレベルのピクセルアクティビティ抽出の最適化技術を実施するためのシステム、装置及び方法が本明細書に開示される。一実施形態では、システムは、エンコーダと、エンコーダに結合された制御ロジックと、を含む。一実施形態では、制御ロジックは、動き推定データを使用して、ピクセルアクティビティの不必要且つ高価な計算を回避する。本実施形態では、制御ロジックは、ピクセルアクティビティの近似値を計算する。例えば、一実施形態では、制御ロジックは、基準フレームについて計算された局所的な動きベクトル及びブロックレベルのピクセルアクティビティを使用して、新たなフレームのブロックのピクセルアクティビティの推定値を生成する。本明細書で使用される「基準フレーム」という用語は、ビデオストリームの1つ以上の将来のフレームを定義及び/又は符号化するために使用されるビデオストリームのフレームとして定義される。一実施形態では、制御ロジックは、ブロック単位で新たなフレームを処理する。一実施形態では、ピクセルアクティビティは、新たなフレームのブロックについて計算された勾配である。別の実施形態では、ピクセルアクティビティは、新たなフレームのブロックのテクスチャ分析を含む。他の実施形態では、ピクセルアクティビティは、様々な要約統計量又は他の数学的量(例えば、平均、最大値、分散)の何れかを含む。
【0008】
一実施形態では、制御ロジックは、新たなフレームのブロックと、基準フレームの対応するブロックと、の差(つまり、差のコストの総計)を計算し、基準フレームの対応するブロックは、動きベクトルによって識別される。差(又は「誤差」)が第1の閾値未満である場合、制御ロジックは、新たなフレームのブロックのピクセルアクティビティを再計算するのではなく、基準フレームの対応するブロックからピクセルアクティビティをコピーする。誤差が第1の閾値以上であるが第2の閾値未満である場合、制御ロジックは、動き推定データを使用して、基準フレームの対応するブロックのピクセルアクティビティから推定(extrapolate)して、新たなフレームのブロックのピクセルアクティビティの推定値を生成する。そうでなく、誤差が第2の閾値以上である場合、制御ロジックは、従来のアプローチを使用して、新たなフレームのブロックのピクセルアクティビティを計算する。
【0009】
図1を参照すると、コンテンツを符号化及び復号化するためのシステム100の一実施形態のブロック図が示されている。システム100は、サーバ105と、ネットワーク110と、クライアント115と、ディスプレイ120と、を含む。他の実施形態では、システム100は、ネットワーク110を介してサーバ105に接続された複数のクライアントを含み、複数のクライアントは、サーバ105によって生成された同じビットストリーム又は異なるビットストリームを受信する。また、システム100は、複数のクライアントのために複数のビットストリームを生成する2つ以上のサーバ105を含む場合もある。
【0010】
一実施形態では、システム100は、ビデオコンテンツの符号化及び復号化を実施する。様々な実施形態では、ビデオゲームアプリケーション、クラウドゲーミングアプリケーション、仮想デスクトップインフラストラクチャアプリケーション、又は、画面共有アプリケーション等の様々なアプリケーションが、システム100によって実施される。他の実施形態では、システム100は、他のタイプのアプリケーションを実行する。一実施形態では、サーバ105は、ビデオ又は画像のフレームをレンダリングし、フレームのブロックのピクセルアクティビティメトリックを生成し、フレームをビットストリームに符号化し、次いで、符号化されたビットストリームを、ネットワーク110を介してクライアント115に伝送する。クライアント115は、符号化されたビットストリームを復号化し、ビデオ又は画像のフレームを生成してディスプレイ120又はディスプレイコンポジタに送る。
【0011】
一実施形態では、サーバ105は、ピクセルアクティビティメトリックを最初から計算するのではなく、フレームのブロックのピクセルアクティビティメトリックの推定値を生成する。例えば、フレームfにおけるブロック(i,j)を、ブロック(f,i,j)として示す。一実施形態では、ピクセルアクティビティメトリックは、基準フレーム(f1)内のブロック(f1,i,j)について利用可能である。一実施形態では、動きベクトルは、現在のフレームf内の全てのブロックについて計算される。動き推定データを計算する1つの方法は、基準画像内の基準ブロックのピクセルサンプルと、現在の画像内の別の候補ブロックとの間の差分絶対値和(SAD)を決定することである。現在のブロックの候補は、「検索領域」内の複数の位置であり、その各々は、dx及びdyの水平及び垂直変位を有する。動き推定は、検索領域内で最小のSADを有するベクトル(dx,dy)を見つける。この場合、SADは、「コスト」と呼ばれる。他のコスト関数も考えられる。基準画像は、現在の画像と異なる画像(時間的)であってもよいし、同じ画像(空間的)であってもよい。動きベクトルMV(dx,dy,i,j,C)は、ブロックi及びjのdx変位及びdy変位を有し、コストCを有する動きベクトルを表す。ブロック(i,j,f)のピクセルアクティビティメトリックは、ブロック(i-dx,j-dy,f1)のピクセルアクティビティメトリックに基づいて計算される。ここで、f1は、動きベクトル(dx,dy,i,j,C)を有する基準フレームである。
【0012】
一実施形態では、C<閾値1である場合、2つのブロックは類似しており、新たなブロックのピクセルアクティビティメトリックは、基準フレーム内の関連するブロックのピクセルアクティビティメトリックとして推定される。C≧閾値1及びC<閾値2の場合、2つのブロックは類似しているが、いくつかの違いがある。この場合、要件に応じて、伝達関数を使用してコストCを補正係数にマッピングする。補正係数は、基準ブロックのピクセルアクティビティメトリックを更新して、現在のブロックのピクセルアクティビティメトリックの推定値を生成するために使用される。代わりに、動き推定コスト及び基準ブロックのピクセルアクティビティメトリックを含むいくつかの情報を収集して、新たなブロックのピクセルアクティビティメトリックを計算するために、機械学習ソリューションが使用される。C>閾値2の場合、2つのブロックは異なっており、そのブロックのピクセルアクティビティメトリックは最初から計算される。
【0013】
ネットワーク110は、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、広域エリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換網、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、若しくは、他のタイプのネットワークを含む、任意のタイプのネットワーク又はネットワークの組み合わせを表す。LANの例は、イーサネット(登録商標)ネットワーク、光ファイバ分散データインタフェース(FDDI)ネットワーク、及び、トークンリングネットワークを含む。様々な実施形態では、ネットワーク110は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/若しくはソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/若しくはソフトウェア、ルータ、リピータ、スイッチ、グリッド、並びに/又は、他の構成要素を含む。
【0014】
サーバ105は、ビデオ/画像フレームをレンダリングし、フレームをビットストリームに符号化するためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、サーバ105は、1つ以上のサーバの1つ以上のプロセッサで実行される1つ以上のソフトウェアアプリケーションを含む。また、サーバ105は、ネットワーク通信機能、1つ以上の入出力装置、及び/又は、他の構成要素を含む。サーバ105のプロセッサ(複数可)は、任意の数及びタイプ(例えば、グラフィックスプロセッシングユニット(GPU)、中央演算処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))のプロセッサを含む。プロセッサ(複数可)は、プロセッサ(複数可)によって実行可能なプログラム命令を記憶する1つ以上のメモリデバイスに結合されている。同様に、クライアント115は、ビットストリームを復号化し、フレームをディスプレイ120に送るためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、クライアント115は、1つ以上のコンピューティングデバイスの1つ以上のプロセッサで実行される1つ以上のソフトウェアアプリケーションを含む。様々な実施形態では、クライアント115は、コンピューティングデバイス、ゲームコンソール、モバイル機器、ストリーミングメディアプレーヤ、又は、他のタイプのデバイスである。
【0015】
図2を参照すると、ビデオのフレームを符号化するためのサーバ200のソフトウェア構成要素の一実施形態のブロック図が示されている。他の実施形態では、サーバ200は、他の構成要素を含み、及び/又は、
図2に示されている以外の他の適切な方法で構成されることに留意されたい。ビデオの新たなフレーム205は、インタフェース208上でサーバ200によって受信され、動きベクトルユニット210、制御ロジック220及びエンコーダ230に結合される。実施形態に応じて、インタフェース208は、バスインタフェース、メモリインタフェース、又は、通信ファブリック及び/若しくは他のタイプ(複数可)のデバイス(複数可)への相互接続である。動きベクトルユニット210、制御ロジック220及びエンコーダ230の各々は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装されている。動きベクトルユニット210は、新たなフレーム205と基準フレーム207との比較に基づいて、新たなレーム205のブロックの動きベクトル215を生成する。一実施形態では、基準フレーム207は、メモリ240に記憶される。メモリ240は、符号化プロセスに関連するデータ及び/又は命令を記憶するための任意の数及びタイプのメモリ又はキャッシュデバイス(複数可)を表す。
【0016】
動きベクトル215は、制御ロジック220及びエンコーダ230に提供される。制御ロジック220は、動きベクトル215に基づいて、基準フレームで計算されたピクセルアクティビティ222から、推定されたピクセルアクティビティ225を生成する。例えば、一実施形態では、制御ロジック220は、ブロック単位で新たなフレーム205を処理する。制御ロジック220は、ブロック毎に、ブロックと、対応する動きベクトル215によって識別された基準フレーム207の対応するブロックと、の間の差分コストの計算された和を取得する。ブロックの差分コストの和が第1の閾値未満である場合、制御ロジック220は、ブロックの推定されたピクセルアクティビティ225を、基準フレーム207の対応するブロックに対する、以前に計算されたピクセルアクティビティ222として生成する。
【0017】
ブロックの差分コストの和が第1の閾値以上であるが第2の閾値未満である場合、制御ロジック220は、ブロックの動きベクトル215に基づいて、基準フレーム207の対応するブロックのピクセルアクティビティ222から推定(extrapolating)することによって、ブロックの推定されたピクセルアクティビティ225を生成する。例えば、一実施形態では、制御ロジック220は、伝達関数を使用して、差分コストの和を、基準フレーム207からの対応するブロックのピクセルアクティビティ222を更新するのに使用される補正係数にマッピングする。基準フレーム207からの対応するブロックからの更新されたピクセルアクティビティは、次に、新たなフレーム205のブロックの推定されたピクセルアクティビティ225として使用される。一実施形態では、伝達関数は、ルックアップテーブルを使用して適用される。ブロックの差分コストの和が第2の閾値以上である場合、制御ロジック220は、従来の技術を使用して、ブロックのピクセルアクティビティを最初から生成する。
【0018】
図3を参照すると、ビデオフレーム305A~305Dのシーケンスに対する動きベクトル315A~315Cのセットの一実施形態のブロック図が示されている。フレーム305A~305Dは、ビデオシーケンスの連続フレームを表す。ボックス310Aは、フレーム305A内のピクセルの個々のブロックを表す。また、ボックス310Aは、マクロブロックとも呼ばれる。矢印315Aは、ビデオシーケンスがフレーム305Aから305Bに移動するときのボックス310A内の画像の既知の動きを表す。矢印315Aによって示される既知の動きは、動きベクトルによって定義することができる。動きベクトル315A~315Cは、後続のフレームにおけるボックス310の動きの方向を示すが、別の実施形態では、動きベクトルは、画像の動きと反対の方向を示すように定義される場合があることに留意されたい。例えば、いくつかの圧縮規格では、マクロブロックに関連する動きベクトルは、基準フレーム内のそのブロックのソースを指す。基準フレームは、時間的に前後する場合がある。動きベクトルは、いくつかの実施形態において、エントロピーを表す場合があることにも留意されたい。
【0019】
一実施形態では、ボックス310B~310Dは、動きベクトル315A~315Cを使用して、後続のフレームで追跡することができる。例えば、動きベクトル315Aは、フレーム305Aのボックス310Aと比較した、フレーム305Bのボックス310Bの位置の変化を示す。同様に、動きベクトル315Bは、フレーム305Bのボックス310Bと比較した、フレーム310Cのボックス310Cの位置の変化を示す。また、動きベクトル315Cは、フレーム305Cのボックス310Cと比較した、フレーム310Dのボックス310Dの位置の変化を示す。別の実施形態では、動きベクトルは、所定のフレームから以前のフレームに戻るブロックの逆方向の動きを追跡するために定義される。
【0020】
一実施形態では、エンコーダが、新たなフレームのブロックについて様々なピクセルアクティビティメトリックを生成する必要がある場合、エンコーダは、以前のフレームの対応するブロックの以前に計算されたピクセルアクティビティメトリックに基づいて、ピクセルアクティビティメトリックの推定値を生成する。一実施形態では、エンコーダは、動きベクトル315A~315Cを使用して、以前のフレームの何れの対応するブロックが新たなフレームの所定のブロックと一致するのかを識別する。次に、エンコーダは、新たなフレームのブロックのピクセルアクティビティメトリックの推定値を生成するのに役立てるために、以前のフレームの識別されたブロックについて以前に計算されたピクセルアクティビティメトリックを使用する。一実施形態では、エンコーダは、以前に計算されたピクセルアクティビティメトリックを、補正無しに、新たなフレームのブロックのピクセルアクティビティメトリックの推定値として使用する。別の実施形態では、エンコーダは、伝達関数を使用して差分コストの和又はブロック間の任意の他のコストを補正係数にマッピングすることによって、以前に計算されたピクセルアクティビティメトリックから推定(extrapolate)する。次に、補正係数は、新たなフレームのブロックのピクセルアクティビティメトリックの推定値を生成するために、以前に計算されたピクセルアクティビティに適用される。
【0021】
図4に参照すると、動きベクトルを利用して空間ブロックレベルのピクセルアクティビティ抽出の最適化を実施する方法400の一実施形態が示されている。説明のために、本実施形態のステップ及び
図5~
図6のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。また、必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法400を実施するように構成されている。
【0022】
動きベクトルユニットは、1つ以上の基準フレームの対応するブロックと比較して、ビデオストリームの新たなフレームのブロックの差分コスト絶対値和を計算する(ブロック405)。一実施形態では、コストは、差分コスト絶対値和である。他の実施形態では、コストは、新たなフレームのブロックと、1つ以上の基準フレームの対応するブロックと、から計算された他のタイプのコスト又は誤差である。一実施形態では、動きベクトルユニットは、エンコーダの一部であり、エンコーダは、制御ロジックも含む。一実施形態では、エンコーダは、少なくとも1つのメモリデバイスに結合された少なくとも1つのプロセッサを備えるシステム上に実装される。一実施形態では、エンコーダは、クラウドコンピューティング環境の一部であるサーバ上に実装される。動きベクトルユニットは、基準フレーム(複数可)の対応するブロックとの比較に基づいて、新たなフレームのブロックの動きベクトルを生成する(ブロック410)。エンコーダ制御ロジックは、新たなフレームのブロックのコスト及び動きベクトルを受信する(ブロック415)。
【0023】
また、制御ロジックは、基準フレーム(複数可)のブロックの以前に計算されたブロックレベルのピクセルアクティビティも受信する(ブロック420)。次に、制御ロジックは、新たなフレームのブロックのコスト及び動きベクトルに基づいて、並びに、基準フレーム(複数可)のブロックの以前に計算されたブロックレベルのピクセルアクティビティに基づいて、新たなフレームのブロックのブロックレベルのピクセルアクティビティの推定値を生成する(ブロック425)。ブロック425の後に、方法400は終了する。ブロック425を実行するための実施形態の一例は、
図5の説明において以下により詳細に説明される。様々な実施形態では、新たなフレームのブロックのブロックレベルのピクセルアクティビティは、新たなフレームを分類するための、及び/又は、新たなフレームのさらなる分析を実行するための、新たなフレームの符号化に役立つ。一実施形態では、新たなフレームのブロックのブロックレベルのピクセルアクティビティを使用して、新たなフレームを複数のカテゴリのうち何れかに分類し、新たなフレームに何れのタイプのオブジェクトが存在するのかを識別し、及び/又は、他のアクションを実行する。
【0024】
図5を参照すると、新たなフレームのブロックのブロックレベルのピクセルアクティビティを生成する方法500の一実施形態が示されている。エンコーダ制御ロジックは、符号化する新たなフレームを受信する(ブロック505)。エンコーダ制御ロジックは、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装される。制御ロジックは、ブロック単位で新たなフレームを分析する(ブロック510)。この説明のために、制御ロジックが、符号化する新たなフレームを受信した場合、動き推定データ(例えば、動きベクトル)及びコストは、新たなフレームのブロックについて既に計算されていると仮定する。動き推定データ又はコストが計算されていない実施形態では、制御ロジックは、符号化する新たなフレームを受信したことに応じて、これらの値を計算する。実施形態に応じて、任意のタイプのコストを計算することができる。
【0025】
新たなフレームのブロック毎にブロックのコストが第1の閾値未満である場合(条件付きブロック515:yes)、制御ロジックは、1つ以上の基準フレームの対応するブロックの以前に計算されたピクセルアクティビティに等しいものとして、ブロックのピクセルアクティビティの推定値を推定する(ブロック520)。ブロックのコストが第1の閾値以上である場合(条件付きブロック515:no)、制御ロジックは、ブロックのコストが第2の閾値未満であるかどうかを判別する(条件付きブロック525)。ブロックのコストが第2の閾値未満である場合(条件付きブロック525:yes)、制御ロジックは、ブロックの動き推定データに基づいて、基準フレーム(複数可)の対応するブロックの以前に計算されたピクセルアクティビティから推定(extrapolating)することによって、ブロックのピクセルアクティビティの推定値を生成する(ブロック530)。ブロックのコストが第2の閾値以上である場合(条件付きブロック525:no)、制御ロジックは、基準フレーム(複数可)の対応するブロックの以前に計算されたピクセルアクティビティ、及び、ブロックの動き推定データとは関係無く、ブロックのピクセルアクティビティを計算する(ブロック535)。言い換えると、制御ロジックは、ブロック535において、従来の方法でブロックのピクセルアクティビティを最初から計算する。ブロック520,530,535の後に、方法500は終了する。
【0026】
図6を参照すると、ピクセルアクティビティメトリック生成スキームを決定する方法600の一実施形態が示されている。エンコーダは、1つ以上の基準フレームの対応するブロックと比較して、新たなフレームのブロックのコストのヒストグラムを生成する(ブロック605)。少なくとも所定の割合のブロックが閾値を超えるコストを有する場合(条件付きブロック610:yes)、エンコーダは、従来の方法で、新たなフレームのブロックのピクセルアクティビティメトリックを計算する(ブロック615)。所定の割合及び閾値の値は、実施形態によって異なる。所定の割合未満のブロックが閾値を超えるコストを有する場合(条件付きブロック610:no)、エンコーダは、基準フレーム(複数可)の以前に計算されたピクセルアクティビティメトリック、コスト、及び、新たなフレームのブロックの動きベクトルに基づいて、新たなフレームのブロックのピクセルアクティビティメトリックの推定値を生成する(ブロック620)。ブロック620を実行する一例は、
図5に関連する説明において説明されている。ブロック615,620の後に、方法600は終了する。
【0027】
図7を参照すると、ビデオストリームの連続フレーム及び対応する動きベクトルの一実施形態のブロック図が示されている。いくつかの実施形態では、ピクセルアクティビティメトリックは、任意の基準ブロックについて利用できない場合がある。例えば、アクティビティは、マクロブロック粒度においてのみ利用可能であり、これは、i及びjが整数である場合に、位置(16×i,16×j)における基準ブロックのみが利用可能であることを意味し得る。16ピクセル×16ピクセルのブロックサイズの例は、一実施形態を示すに過ぎないことに留意されたい。他の実施形態では、マクロブロック又はコーディングユニットは、他のサイズを有する場合がある。他の動きベクトルの場合、ピクセルアクティビティメトリックの値の推定値は、誤差が許容できる場合に、1つ以上のピクセルの元となるブロックに基づいて推定することができる。特定のケースでは、1つ以上のピクセルは、1つのブロックが元となるであろう。他のケースでは、1つ以上のピクセルは、最大4つのブロックが元となるであろう。
図7に示す例では、1つ以上のピクセルは、2つのブロックが元となっている。
【0028】
時間「t-2」及び「t-1」における2つの連続ビデオフレーム705,710が
図7に示されている。時間「t-2」におけるビデオフレーム705内では、ブロック(0,2,t-2)がピクセルアクティビティメトリックA
0,2を有しており、ブロック(1,2,t-2)がピクセルアクティビティメトリックA
1,2を有している。時間「t-1」におけるビデオフレーム710内では、ブロック(1,2,t-1)がピクセルアクティビティメトリックN
1,2を有している。一実施形態では、フレーム705の一致するピクセルと比較されたブロック(1,2,t-1)のコストが第1の閾値未満である場合、動きベクトル715の一致は、僅差の一致(close match)と考えられるので、以下の推定方法を使用することができる。この説明のために、ブロック(0,2,t-2)は、そのピクセルのw
0パーセントがブロック(1,2,t-1)に寄与し、ブロック(1,2,t-2)は、そのピクセルのw
1パーセントがブロック(1,2,t-1)に寄与すると仮定する。考えられる誤差は、w
0及びw
1の最大値に反比例する。考えられる誤差に基づいて、単に推定値を生成するのではなく、アクティビティの計算を必要とするブロックを決定することができる。一実施形態では、推定値は、A
0,2若しくはA
1,2の高い方、又は、w
0+w
1=1である場合に、N
1,2=w
0×A
0,2+w
1×A
1,2等の補間であってもよい。
【0029】
場合によっては、候補推定領域を、考えられる誤差に関わらずに随時計算することができる。例えば、候補推定領域は、ランダムに生成された値xがランダムな閾値を超える場合に、計算することができる。これは、推定されたピクセルアクティビティメトリックが実際の信号から大きくずれないことを確実にするためである。1つのシナリオでは、ランダムな閾値が.9に設定されており、これは、ピクセルアクティビティメトリックの実際の計算が90%省略されることを意味する。より高い精度が必要とされる場合には、ランダムな閾値の値を低減することができる。
【0030】
図8を参照すると、異なるブロックメトリック粒度レベルを有するフレームの一実施形態のブロック図が示されている。離散勾配等の多くのピクセルアクティビティメトリックが、領域上で累積される。一実施形態では、これらのピクセルアクティビティメトリックは、より細かい粒度でメトリックを記憶することによって、合計領域テーブルを記憶することによって、又は、特定の数学的特性(例えば、同次(homogeneous)、加法的(additive))を有するメトリックの高速計算を可能にする他の加速データ構造(acceleration data structures)を使用することによって、高速推定のために構造化される。これらのデータ構造から適切な値を集約することによって、推定値が迅速に計算される。例えば、低メトリック粒度フレーム810の領域830のピクセルアクティビティメトリックは、高メトリック粒度フレーム805の領域815A~815Dのピクセルアクティビティメトリックを互いに加算することによって、推定される。領域815B,815Dによって含まれる余分な領域が有意でないと考えられるので、この推定値は許容される(つまり、誤差が許容されるものとして計算される)。同様に、領域815A,815Cのすぐ隣で欠落した領域も有意でないと考えられる。追加の精度が必要とされる場合、追加の必要とされる領域及び不要な領域でのメトリックの寄与度を計算及び調整することによって、補正が行われる。
【0031】
高メトリック粒度フレーム805の推定値が十分に正確でないと考えられる場合、推定値を補正することができる。例えば、一実施形態では、拡大
図820に示す補正825Aは、対応するマーク領域におけるメトリックの寄与度について計算される。別の補正825Bが、対応するマーク領域におけるメトリックの寄与度について計算される。次に、基準ブロックのピクセルアクティビティメトリックが、補正825Aを加え、補正825Bを差し引いた領域815A~815Dのメトリックを互いに加算することによって推定される。この例では、必要とされる補正は、水平オフセットによって生じる誤差に起因する。異なる位置合わせにより、垂直オフセット誤差を処理するために補正が必要とされる場合がある。或いは、他の位置合わせの場合、垂直オフセットと水平オフセットの両方について調整するために補正が必要とされる場合がある。
【0032】
図9を参照すると、異なる粒度でピクセルアクティビティメトリックを計算する方法900の一実施形態が示されている。エンコーダは、基準フレームのブロックのピクセルアクティビティメトリックを第1の粒度で計算する(ブロック905)。エンコーダは、新たなフレームのブロックのピクセルアクティビティメトリックの推定値を第2の粒度で生成し、第1の粒度は、第2の粒度よりも細かい粒度であり、推定値は、基準フレームのブロックのピクセルアクティビティメトリックに基づいて生成される(ブロック910)。第2の粒度で新たなフレームのブロックのピクセルアクティビティメトリックの推定値を生成することの一部として、エンコーダは、動きベクトルに基づいて、新たなフレームの各ブロックに対応する基準フレームの複数のブロックを識別する(ブロック915)。次に、エンコーダは、新たなフレームのブロック毎に、基準フレームから複数のブロックのピクセルアクティビティメトリックを合計することによって、ピクセルアクティビティメトリックの累積推定値を生成する(ブロック920)。ブロック920の後に、方法900は終了する。
【0033】
様々な実施形態では、本明細書で説明した方法及び/又はメカニズムを実施するために、ソフトウェアアプリケーションのプログラム命令が使用される。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令は、高水準プログラミング言語によって表されている。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ形式、中間形式、又は、他の形式にコンパイルされる。或いは、ハードウェアの動作及び設計を記述するプログラム命令が生成される。このようなプログラム命令は、C言語等の高水準プログラミング言語で表される。或いは、Verilog等のハードウェア設計言語(HDL)が用いられる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体に記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセスされ、プログラムを実行するためにコンピューティングシステムにプログラム命令を提供する。一般的に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0034】
上述した実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するように解釈されることが意図される。