(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-02-08
(54)【発明の名称】コンテキストと特徴に基づくビデオエンコードの事前解析のビットバジェッティング
(51)【国際特許分類】
H04N 19/115 20140101AFI20230201BHJP
H04N 19/136 20140101ALI20230201BHJP
【FI】
H04N19/115
H04N19/136
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022534254
(86)(22)【出願日】2020-12-04
(85)【翻訳文提出日】2022-07-25
(86)【国際出願番号】 IB2020061528
(87)【国際公開番号】W WO2021111406
(87)【国際公開日】2021-06-10
(32)【優先日】2019-12-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】メーディ サイーディ
(72)【発明者】
【氏名】ボリス イバノビッチ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159PP14
5C159RC12
5C159RC14
5C159TA46
5C159TA60
5C159TB08
5C159TC38
5C159TD15
5C159UA02
5C159UA05
(57)【要約】
コンテキスト及び特徴に基づくビデオエンコードの事前解析におけるビットバジェッティング用のシステム、装置及び方法が開示されている。プリエンコーダは、ビデオフレームを受信し、フレームの各ブロックを評価していくつかのコンテキストインジケータの存在を確認する。コンテキストインジケータには、記憶色、テキスト、被写界深度及び他の特定のオブジェクトを含むことができる。検出されたコンテキストインジケータごとに係数が生成され、他の係数と加算されて、ブロックの最終的な重要度の値が生成される。画像の定義された部分のみが重要であると見なされるように、係数を調整することができる。ブロックの最終的な重要度の値は、ブロックのビットバジェットを決定するために使用される。ブロックビットバジェットはエンコーダに提供され、ブロックの符号化に使用される量子化パラメータ等に影響を与えるために使用される。
【選択図】
図9
【特許請求の範囲】
【請求項1】
装置であって、
プリエンコーダと、
エンコーダと、を備え、
前記プリエンコーダは、
符号化されるフレームを受信することであって、前記フレームは複数のブロックを含む、ことと、
各ブロック内の指定されたコンテキストインジケータの有無に基づいて、各ブロックの重要度の値を生成することと、
前記ブロックに対して生成された重要度の値に少なくとも部分的に基づいて、各ブロックにビットバジェットを割り当てることと、
を行うように構成されており、
前記エンコーダは、
前記ブロックに割り当てられた前記ビットバジェットを満たすように各ブロックを符号化するように構成されている、
装置。
【請求項2】
前記プリエンコーダは、
前記フレーム全体を通した各コンテキストインジケータの希少性を決定することと、
検出された各コンテキストインジケータの希少性に基づいて、各ブロックの重要度の値を調整することと、
を行うように構成されている、
請求項1の装置。
【請求項3】
前記複数のコンテキストインジケータは、記憶色、テキスト及び標識を含む、
請求項1の装置。
【請求項4】
前記プリエンコーダは、前記ブロック内で検出された各コンテキストインジケータに割り当てられたスコアに基づいて、各ブロックの重要度の値を生成するように構成されている、
請求項1の装置。
【請求項5】
前記プリエンコーダは、前記ブロック内の第2のコンテキストインジケータを検出したことに応じて、第1のコンテキストインジケータに割り当てられた第1のスコアを調整するように構成されている、
請求項4の装置。
【請求項6】
前記プリエンコーダは、前記フレームの前記複数のブロックにおいて検索される複数のコンテキストインジケータを指定するテーブルにアクセスするように構成されている、
請求項1の装置。
【請求項7】
前記プリエンコーダは、
第1のアプリケーションに対応する第1の複数のコンテキストインジケータを指定する第1のテーブルを受信することと、
前記第1のアプリケーションが、符号化される第1のフレームを生成することに応じて、前記第1のフレームにおいて前記第1の複数のコンテキストインジケータを検索することと、
第2のアプリケーションに対応する第2の複数のコンテキストインジケータを指定する第2のテーブルを受信することと、
前記第2のアプリケーションが、符号化される第2のフレームを生成することに応じて、前記第2のフレームにおいて前記第2の複数のコンテキストインジケータを検索することと、
を行うように構成されている、
請求項1の装置。
【請求項8】
方法であって、
プリエンコーダが、符号化されるフレームを受信することであって、前記フレームは複数のブロックを含む、ことと、
各ブロック内の指定されたコンテキストインジケータの有無に基づいて、各ブロックの重要度の値を生成することと、
前記ブロックに対して生成された重要度の値に少なくとも部分的に基づいて、各ブロックにビットバジェットを割り当てることと、
エンコーダが、前記ブロックに割り当てられた前記ビットバジェットを満たすように各ブロックを符号化することと、を含む、
方法。
【請求項9】
前記フレーム全体を通した各コンテキストインジケータの希少性を決定することと、
検出された各コンテキストインジケータの希少性に基づいて、各ブロックの重要度の値を調整することと、を含む、
請求項8の方法。
【請求項10】
前記複数のコンテキストインジケータは、記憶色、テキスト及び標識を含む、
請求項8の方法。
【請求項11】
前記ブロック内で検出された各コンテキストインジケータに割り当てられたスコアに基づいて、各ブロックの重要度の値を生成することを含む、
請求項8の方法。
【請求項12】
前記ブロック内の第2のコンテキストインジケータを検出したことに応じて、第1のコンテキストインジケータに割り当てられた第1のスコアを調整することを含む、
請求項11の方法。
【請求項13】
前記フレームの前記複数のブロックにおいて検索される複数のコンテキストインジケータを指定するテーブルにアクセスすることを含む、
請求項8の方法。
【請求項14】
第1のアプリケーションに対応する第1の複数のコンテキストインジケータを指定する第1のテーブルを受信することと、
前記第1のアプリケーションが、符号化される第1のフレームを生成することに応じて、前記第1のフレームにおいて前記第1の複数のコンテキストインジケータを検索することと、
第2のアプリケーションに対応する第2の複数のコンテキストインジケータを指定する第2のテーブルを受信することと、
前記第2のアプリケーションが、符号化される第2のフレームを生成することに応じて、前記第2のフレームにおいて前記第2の複数のコンテキストインジケータを検索することと、を含む、
請求項8の方法。
【請求項15】
システムであって、
メモリと、
前記メモリに結合されたプリエンコーダと、を備え、
前記プリエンコーダは、
符号化されるフレームを受信することであって、前記フレームは複数のブロックを含む、ことと、
各ブロック内の指定されたコンテキストインジケータの有無に基づいて、各ブロックの重要度の値を生成することと、
前記ブロックに対して生成された重要度の値に少なくとも部分的に基づいて、各ブロックにビットバジェットを割り当てることと、
前記ビットバジェットをエンコーダに伝達して、前記ブロックに割り当てられた前記ビットバジェットを満たすように各ブロックを符号化させることと、
を行うように構成されている、
システム。
【請求項16】
前記プリエンコーダは、
前記フレーム全体を通した各コンテキストインジケータの希少性を決定することと、
検出された各コンテキストインジケータの希少性に基づいて、各ブロックの重要度の値を調整することと、
を行うように構成されている、
請求項15のシステム。
【請求項17】
前記複数のコンテキストインジケータは、記憶色、テキスト及び標識を含む、
請求項15のシステム。
【請求項18】
前記プリエンコーダは、前記ブロック内で検出された各コンテキストインジケータに割り当てられたスコアに基づいて、各ブロックの重要度の値を生成するように構成されている、
請求項15のシステム。
【請求項19】
前記プリエンコーダは、前記フレームの前記複数のブロックにおいて検索される複数のコンテキストインジケータを指定するテーブルにアクセスするように構成されている、
請求項15のシステム。
【請求項20】
前記プリエンコーダは、
第1のアプリケーションに対応する第1の複数のコンテキストインジケータを指定する第1のテーブルを受信することと、
前記第1のアプリケーションが、符号化される第1のフレームを生成することに応じて、前記第1のフレームにおいて前記第1の複数のコンテキストインジケータを検索することと、
第2のアプリケーションに対応する第2の複数のコンテキストインジケータを指定する第2のテーブルを受信することと、
前記第2のアプリケーションが、符号化される第2のフレームを生成することに応じて、前記第2のフレームにおいて前記第2の複数のコンテキストインジケータを検索することと、
を行うように構成されている、
請求項15のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
様々なアプリケーションは、画像又はビデオコンテンツの符号化及び復号を実行する。例えば、ビデオトランスコーディング、デスクトップ共有、クラウドゲーミング、ゲーミング観戦は、コンテンツの符号化及び復号に対するサポートを含むアプリケーションのうちいくつかである。エンコーダには、通常、所定のビデオストリームを符号化する際にエンコーダが達成しようとしているターゲットビットレートがある。ターゲットビットレートは、所定のビデオストリームの符号化バージョンの各フレームのターゲットビットサイズに大まかに変換される。例えば、一実施形態では、ターゲットビットレートはビット/秒(例えば、3メガビット/秒(Mbps))で指定され、ビデオシーケンスのフレームレートはフレーム/秒(fps)(例えば、60fps、24fps)で指定される。この例では、好ましいビットレートをフレームレートで割って、符号化ビデオフレームの好ましいビットサイズを計算する。ここで、ビットレートの軌道が線形であると仮定する。線形でない場合は、同様の手法を使用して、符号化フレームの好ましいビットサイズを概算することができる。
【0002】
各ビデオフレームは、通常、複数のブロックに分割される。ブロックの例は、高効率ビデオコーディング(HEVC)規格と使用するためのコーディングツリーブロック(CTB)又はH.264規格と使用するためのマクロブロックを含む。他のタイプのビデオ及び画像圧縮規格で使用する他のタイプのブロックも考えられる。エンコーダは、符号化されているブロックの測定されたプロパティ(例えば、詳細レベル、コントラスト等)に基づいて、フレームの各ブロックがどのように符号化されるかを調整することができる。ただし、フレームのコンテンツがほぼ均一である場合、1つのブロックに使用される調整をフレーム全体に適用することは好ましくない。例えば、エンコーダは、非常に詳細なブロックに高いビットバジェットを割り当てることを決定することができる。ただし、ほとんどのブロックが非常に詳細である場合、エンコーダはバジェット内の使用可能なビットをすぐに使い果す。自然のシーン(森、草等)もビデオゲームも、画像全体又は画像の大部分が詳細及び/又は均一である代表的な例である。
【0003】
添付図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解し得る。
【図面の簡単な説明】
【0004】
【
図1】コンテンツを符号化及び復号するためのシステムの一実施形態のブロック図である。
【
図3】テーブルに結合されたプリエンコーダの一実施形態のブロック図である。
【
図4】複数の検出器を備えたプリエンコーダの一実施形態のブロック図である。
【
図5】重要度テーブルを生成するプリエンコーダの一実施形態のブロック図である。
【
図6】ビットバジェットテーブルを生成するプリエンコーダの一実施形態のブロック図である。
【
図7】プリエンコーダによって解析されているフレームの1つの可能な例を示す図である。
【
図8】プリエンコーダによって解析されているフレームの1つの可能な例を示す図である。
【
図9】ブロックごとのビットバジェットを生成するプリエンコーダ用の方法の一実施形態を示す一般化されたフロー図である。
【
図10】フレーム全体のコンテキストインジケータの希少性に基づいてフレームのブロックのコンテキストインジケータ係数を調整する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細を用いないで、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書で説明する手法を不明瞭にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令、及び、技術が詳細に示していない。説明を簡潔及び明瞭にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0006】
コンテキスト及び特徴に基づくビデオエンコードの事前解析におけるビットバジェッティング用のシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、ビデオストリームを符号化するためのプリエンコーダ及びエンコーダを含む。一実施形態では、プリエンコーダは、ビデオフレームを受信し、フレームの各ブロックを評価していくつかのコンテキストインジケータの存在を確認する。ブロックの階調(graduality)は、事前に定義されてもよいし、適応的に設定されてもよい。各ブロックに対して、プリエンコーダは、複数の異なるタイプのコンテキストインジケータのうち何れかがブロックに存在するか否かを決定する。コンテキストインジケータには、記憶色、テキスト、被写界深度、及び、他の特定のオブジェクトを含むことができるが、これらに限定されない。検出されたコンテキストインジケータごとに係数が生成され、他の係数と加算されて、ブロックの最終的な重要度の値が生成される。係数は、画像の定義された部分のみが重要であると見なされるように調整され、重要であると見なされるブロックには、使用可能なビットバジェット全体の特定の割合が割り当てられる。ブロックの最終的な重要度の値は、他のブロックの最終的な重要度の値も考慮しながら、ブロックのビットバジェットに影響を与えるために使用される。ブロックビットバジェットはエンコーダに提供され、ブロックの符号化に使用される量子化パラメータ等に影響を与えるために使用される。注意すべきこととして、コンテキストインジケータに基づくビットバジティングを1つ以上の他の手法と組み合わせて、フレームのブロックに使用される全体的なビットバジェットを決定することができる。一実施形態では、エンコーダは、プリエンコーダによってブロックに割り当てられたビットバジェットに基づいて各ブロックを符号化する際に使用する量子化強度(例えば、量子化パラメータ(QP))を選択する。
【0007】
図1を参照すると、コンテンツを符号化及び復号するためのシステム100の一実施形態のブロック図が示されている。システム100は、サーバ105と、ネットワーク110と、クライアント115と、ディスプレイ120と、を含む。他の実施形態では、システム100は、ネットワーク110を介してサーバ105に接続される複数のクライアントを含むことができ、複数のクライアントは、サーバ105によって生成される同一のビットストリーム又は異なるビットストリームを受信する。また、システム100は、複数のクライアントのために複数のビットストリームを生成する1つ以上のサーバ105を含むことができる。
【0008】
一実施形態では、システム100は、ビデオコンテンツを符号化及び復号する。様々な実施形態では、ビデオゲームアプリケーション、クラウドゲームアプリケーション、仮想デスクトップインフラストラクチャアプリケーション、自動運転車アプリケーション、オンラインストリーミングアプリケーション、画面共有アプリケーション、又は、他のタイプのアプリケーション等の様々なアプリケーションがシステム100によって実行される。一実施形態では、サーバ105は、ビデオ又は画像フレームをレンダリングし、次いで、フレームを符号化ビットストリームに符号化する。一実施形態では、サーバ105は、符号化プロセスを管理するためのプリエンコーダ及びエンコーダを含む。プリエンコーダは、本明細書では「事前解析ユニット」と呼ばれることもある。
【0009】
一実施形態では、プリエンコーダは、フレームのブロックを解析して、コンテキストインジケータを検出する。本明細書で使用される場合、「コンテキストインジケータ」は、システムによって実行されている特定のアプリケーションに対して知覚的に重要であると見なされる特徴として定義される。一実施形態では、コンテキストインジケータには、標識、テキスト、顔、体、日常のオブジェクト(車、街路、街灯等)、記憶色等の特徴が含まれる。本明細書で使用される場合、「記憶色」は、フレームに提示されるシーンに関連する見慣れた色として定義される。「記憶色」の一例は、肌色である。他の実施形態では、他のアプリケーションは、他のタイプのコンテキストインジケータを有することができる。
【0010】
ブロックごとに、ブロック内で検出されたコンテキストインジケータと、コンテキストインジケータに割り当てられたスコアに基づいて、重要度の値が生成される。重要度の値は、検出されたコンテキストインジケータの希少性等の1つ以上の他の変数に基づいて適宜調整される。プリエンコーダは、ブロックに対して生成された重要度の値に基づいて、各ブロックにビットバジェットを割り当てる。一実施形態では、ブロックの重要度の値は、全てのブロックに割り当てられたビットの総数が、ターゲットビットレートを満たす符号化ビットストリームに基づいて計算されたビットサイズ範囲内にあるようにスケーリングされる。次に、エンコーダは、プリエンコーダによってブロックに割り当てられたビットバジェットに一致するようにブロックをエンコードする。一実施形態では、エンコーダは、ブロックを符号化するために使用される量子化パラメータ(QP)を調整して、符号化ブロックが割り当てられたビットバジェットの閾値量内に収まるようにする。符号化ビットストリームが生成された後、サーバ105は、符号化ビットストリームを、ネットワーク110を介してクライアント115に伝達する。クライアント115は、符号化ビットストリームを復号し、ビデオ又は画像フレームを生成してディスプレイ120又はディスプレイコンポジタに送る。
【0011】
ネットワーク110は、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換網、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、又は、他のタイプのネットワークを含む、任意のタイプのネットワーク又はネットワークの組み合わせを表す。LANの例は、イーサネット(登録商標)ネットワーク、ファイバ分散データインタフェース(FDDI)ネットワーク、及び、トークンリングネットワークを含む。様々な実施形態では、ネットワーク110は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/又はソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/又はTCP/IPソフトウェア、ルータ、リピータ、スイッチ、グリッド、及び/又は、他の構成要素を含む。
【0012】
サーバ105は、ビデオ/画像フレームをレンダリングし、これらのフレームをビットストリームに符号化するためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、サーバ105は、1つ以上のサーバの1つ以上のプロセッサ上で実行する1つ以上のソフトウェアアプリケーションを含む。また、サーバ105は、ネットワーク通信機能、1つ以上の入出力デバイス、及び/又は、他の構成要素を含む。サーバ105のプロセッサ(複数可)には、任意の数及びタイプのプロセッサ(グラフィックスプロセッシングユニット(GPU)、中央処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等)が含まれる。プロセッサ(複数可)は、プロセッサ(複数可)によって実行可能なプログラム命令を記憶する1つ以上のメモリデバイスに結合されている。同様に、クライアント115は、ビットストリームを復号し、フレームをディスプレイ120に送るためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、クライアント115は、1つ以上のコンピューティングデバイスの1つ以上のプロセッサ上で実行される1つ以上のソフトウェアアプリケーションを含む。様々な実施形態では、クライアント115は、コンピューティングデバイス、ゲームコンソール、モバイルデバイス、ストリーミングメディアプレーヤー、又は、他のタイプのデバイスである。
【0013】
図2を参照すると、ビデオのフレームを符号化するためのサーバ200の構成要素の一実施形態のブロック図が示されている。ビデオの新しいフレーム210は、サーバ200によって受信され、プリエンコーダ220及びエンコーダ230に提供される。プリエンコーダ220及びエンコーダ230の各々は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装される。様々な実施形態では、プリエンコーダ220及び/又はエンコーダ230を実装するためのソフトウェア命令は、メモリ240に記憶される。メモリ240は、任意の数及びタイプのメモリデバイスを表す。一実施形態では、プリエンコーダ220は、新しいフレーム210のブロックの解析に基づいて、新しいフレーム210のブロックのブロックビットバジェット225を生成する。一実施形態では、レートコントローラ232は、現在のバジェット条件(即ち、軌道上のバジェット軌道)に基づいて、プリエンコーダによって生成されたブロックビットバジェット225を調整する。次に、エンコーダ230は、符号化ビットストリーム235を生成する際に、符号化ブロックが割り当てられたブロックビットバジェット225を満たすか又は厳密に近似するように符号化パラメータを調整する。一実施形態では、サーバ200の構成要素は、(
図1の)サーバ105内に含まれる。注意すべきこととして、他の実施形態では、サーバ200は、他の構成要素を含み、及び/又は、
図2に示す以外の他の適切な方法で構成される。
【0014】
一実施形態では、プリエンコーダ220は、ブロック単位で新しいフレーム210を処理する。各ブロックに対して、プリエンコーダ220は、何れのコンテキストインジケータがブロックに存在するかを決定する。一実施形態では、コンテキストインジケータは、標識、テキスト及び記憶色を含む。他の実施形態では、プリエンコーダ220は、他のタイプのコンテキストインジケータを検索する。プリエンコーダ220は、ブロック内で検出されたコンテキストインジケータに基づいて、ブロックの相対的な重要度の値を生成する。次に、重要度の値を使用して、エンコーダ230に伝達されるブロックビットバジェット225を生成する。別の実施形態では、プリエンコーダ220は、提案されたビットバジェットをレートコントローラ232に提供し、次に、レートコントローラ232は、提案されたビットバジェットを調整して、新しいフレーム210のブロックを符号化するために使用される最終的なビットバジェットを生成する。さらなる実施形態では、プリエンコーダ220は、重要度の値をレートコントローラ232に伝達し、次に、レートコントローラ232は、それらの重要度の値に基づいてビットバジェットをブロックに割り当てる。
【0015】
様々な実施形態では、プリエンコーダ220及びレートコントローラ232は、様々な異なる方法で連携して、新しいフレーム210のブロックを符号化するために使用される最終的なビットバジェットを決定する。一実施形態では、プリエンコーダ220は、レートコントローラ232がブロックビットバジェット225への調整を実行することなく、ブロックビットバジェット225をブロックに割り当てる。別の実施形態では、プリエンコーダ220は、ブロックビットバジェット225をブロックに割り当て、次に、これらのブロックビットバジェット225は、現在のバジェット条件に基づいてレートコントローラ232によって改良される。さらなる実施形態では、レートコントローラ232はビットバジェットを生成し、プリエンコーダ220は、特定の個々のブロックのビットバジェットへの調整に関するガイダンスを提供する。他の実施形態では、他のテクノロジーは、高速モーション、異なる動きベクトルを有する領域等の特定の状況で人間の視覚システムがうまく認識できない効果に基づいて、ビットバジェットに影響を与えることができる。
【0016】
一実施形態では、エンコーダ230は、ブロックに割り当てられたビットバジェットに基づいて、新しいフレーム210の各ブロックを符号化するために使用される量子化強度を決定する。他の実施形態では、エンコーダ230は、ブロックに割り当てられたビットバジェットに基づいて新しいフレーム210の各ブロックを符号化する際に使用される他の設定を調整する。一実施形態では、量子化強度は、量子化パラメータ(QP)を指す。本明細書内でQPという用語が使用されている場合、この用語は、任意のタイプのコーディング規格と共に使用される他のタイプの量子化強度設定に適用されることを意図していると理解すべきである。所定のブロックを符号化する場合、エンコーダ230はQPを選択し、その結果、ブロックのビットサイズは、プリエンコーダ220によって計算されたビットバジェットに厳密に一致する。プリエンコーダ220によってブロックに割り当てられたビットバジェットを一致させることにより、エンコーダ230は、符号化ビットストリーム235の所望のビットレートを満たすことができる。
【0017】
図3を参照すると、テーブル310に結合されたプリエンコーダ305の一実施形態のブロック図が示されている。プリエンコーダ305は、符号化されているフレームの個々のブロックのビットバジェットの生成に影響を与える様々な設定を指定する任意の数のテーブル310に結合される。例えば、コンテキストインジケータテーブル310Aは、高い値を有し、これらのコンテキストインジケータのうち何れかを含むフレームのブロックの相対的な重要度を高める複数のコンテキストインジケータを指定する。また、コンテキストインジケータテーブル310Aは、各コンテキストインジケータに適用するスコアを含む。あるいは、別の実施形態では、フレーム内で検出された各コンテキストインジケータに適用するスコアを指定するために、個別のスコアリングテーブルがテーブル310に含まれる。
【0018】
記憶色テーブル310Bは、これらの記憶色のうち1つの画素の閾値量を超える量を含むフレームのブロックの相対的な重要度を高める特定の記憶色を識別する。例えば、一実施形態では、肌色は、記憶色テーブル310Bの1つのバージョンにおいて記憶色として識別される。別の実施形態では、青空は、記憶色テーブル310Bの別のバージョンにおいて記憶色として識別される。他のタイプの記憶色は、他の実施形態でも指定することができる。また、記憶色テーブル310Bは、記憶色が第1の属性の存在下でより多くの値を有することができ、及び/又は、記憶色が第2の属性の存在下でより少ない値を有することができることを指定することができる。例えば、一実施形態では、肌色は、フレームの明るい領域でより多い値を有する。また、一実施形態では、肌色は、動きの速い領域でより少ない値を有する。別の実施形態では、被写界深度の影響を受ける場合、草及び樹木はそれほど重要ではない。記憶色の相対値に影響を与える属性の他の例が可能であり、考えられる。
【0019】
一実施形態では、ホストコンピューティングシステム(例えば、
図1のシステム100)によって実行される各アプリケーションは、プリエンコーダ305のために新しいセットのテーブル310をロードする。例えば、自動運転車アプリケーションは、自動運転車アプリケーションの実行中にキャプチャされたフレームを解析する際にプリエンコーダ305によって使用される第1セットのテーブル310をロードする。また、ビデオゲームアプリケーションは、ビデオゲームアプリケーションによってレンダリングされたフレームを解析する際にプリエンコーダ305によって使用される第2セットのテーブルをロードする。また、ビデオゲームストリーミングアプリケーションは、ビデオゲームストリーミングアプリケーションによってストリーミングされているフレームを解析する際にプリエンコーダ305によって使用される第3セットのテーブルをロードする。他のタイプのアプリケーションも、生成及び/又はキャプチャされるフレームのタイプに最適化されたプリエンコーダ305用の特定のセットのテーブル310をロードすることができる。また、単一のアプリケーションは、ビデオコンテンツがフェーズごとに変化する際に、アプリケーションの異なるフェーズに対して異なるセットのテーブル310をロードすることができる。
【0020】
例えば、ビデオゲームアプリケーション又は映画では、ビデオゲーム又は映画の第1のシーンに対して第1のテーブルがロードされる。第1のシーンは、他のタイプのコンテキストインジケータよりも重要であると見なされる特定のタイプのコンテキストインジケータを有することができる。次に、第2のシーンでは、第2のテーブルには、新しいセットのコンテキストインジケータがロードされる。このテーブルのリロードは、ビデオゲーム又は映画の後続のシーンで続行することができる。別の実施形態では、自動運転車アプリケーションは、現在の状況に応じて異なるテーブルをロードする。例えば、車両が比較的高速で走行している高速道路を走行している際に、コンテキストインジケータの第1のテーブルがロードされる。又は、住宅地又は学校の近くにおいて、コンテキストインジケータの第2のテーブルがロードされる。自動運転車が他の状況(例えば、駐車場、高速道路ランプ、燃料補給ステーション、充電ステーション、料金所等)にある場合に、他のテーブルをロードすることができる。ユースケースシナリオ(駐車場又は高速道路の検出等)を検出するには、既知の手法を使用することができる。この手法は、GPSデータとビデオ解析からのデータの解析等の異なる解析の組み合わせにすることができる。
【0021】
図4を参照すると、複数の検出器415A~415Nを備えたプリエンコーダ410の一実施形態のブロック図が示されている。一実施形態では、プリエンコーダ410は、フレーム405を受信し、フレーム405で事前解析プロセスを実行する。
図4に示すように、プリエンコーダ410は、複数の検出器415A~415Nを含む。注意すべきこととして、検出器415A~415Nは、検出器の論理表現であり、検出器415A~415Nは、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせを使用して実装される。例えば、一実施形態では、各検出器415A~415Nは、訓練されたニューラルネットワークであり、各訓練されたニューラルネットワークは、特定のタイプのコンテキストインジケータを検出するように設計される。また、いくつかの実施形態では、単一の検出器が複数の検出器415A~415Nの機能を実行できることを理解すべきである。例えば、別の実施形態では、単一の訓練されたニューラルネットワークが複数の異なるタイプのコンテキストインジケータを検出するように設計される。
【0022】
一実施形態では、各検出器415A~415Nは、フレーム405のブロックを解析して、ブロックが対応するコンテキストインジケータを含むか否かを決定する役割を果たす。例えば、第1の検出器415Aはフレーム405のブロック内の標識を検索し、第2の検出器415Bはフレーム405のブロック内のテキストを検索し、第3の検出器415Nはフレーム405のブロック内の記憶色を検索する。他の実施形態では、検出器415A~415Nは、フレーム405のブロック内の他のタイプのコンテキストインジケータを検索することができる。検出器415A~415Nを使用してフレーム405を事前解析した後、プリエンコーダ410は、フレーム405のどのブロックで何れのコンテキストインジケータが発見されたかを記録するために結果テーブル420を生成する。例えば、一実施形態では、結果テーブル420は、フレーム405の各ブロックの行を含み、結果テーブル420の各列は、特定の検出器415A~415Nに対応する。
【0023】
結果テーブル420は、フレーム405の事前解析フェーズの結果の一例を表す。結果テーブル420に示すように、ブロック405Aは、列415A及び415Nに「No」を有し、列415Bに「Yes」を有する。これは、フレーム405のブロック405Aが、検出器415Bに対応するコンテキストインジケータを含むが、検出器415A及び415Nに対応するコンテキストインジケータを含むことが発見されなかったことを示す。また、ブロック405B~405Cのエントリも結果テーブル420に示されている。結果テーブル420は、結果テーブルの一例を単に示していることを理解すべきである。他の実施形態では、結果テーブル420は、他の適切な方法で構造化することができる。例えば、別の実施形態では、結果テーブル420は、Yes又はNoではなく、各フィールドに重要度の値又はメトリックを含むことができる。また、別のテーブル又はマトリックスを結果テーブル420に適用して、Yes及びNoの値を重要度の値に変換することができる。次に、重要度の値は、プリエンコーダ410又はエンコーダ(図示省略)によって対応するビットバジェットに変換することができる。場合によっては、プリエンコーダ410は、ケースバイケースで、あるコンテキストインジケータの存在が別のコンテキストインジケータの存在下で発見される場合に重要度の値を増減するために、結果テーブル420の列を相互相関させる。
【0024】
図5を参照すると、フレームのブロックの重要度テーブル530を生成するプリエンコーダ520の一実施形態のブロック図が示されている。一実施形態では、プリエンコーダは、
図4に関連して上述したように、フレームのブロックの結果テーブル505を生成する。次に、プリエンコーダ520は、スコアリングテーブル(複数可)510から検索された値を結果テーブル505の値と組み合わせることによって、重要度テーブル530を生成する。例えば、一実施形態では、結果テーブル505の各行は、複数のフィールドを有し、各フィールドは、対応するコンテキストインジケータの存在又は不在をそれぞれ示すために「Yes」又は「No」を含む。このタイプの結果テーブルの例は、(
図4の)結果テーブル420として示されている。
【0025】
一実施形態では、スコアリングテーブル(複数可)510は、所定のブロックのエントリの列の各「Yes」値に適用するスコアフィールド545を含む。次に、スコアを合計して、重要度テーブル530のブロック500A~500Cについて示される重要度の値を生成する。一実施形態によるスコアリングテーブル510の一例が、
図5の下部に拡張された形で示されている。一実施形態では、コンテキストインジケータごとに1行があり、エントリフィールド535、コンテキストインジケータフィールド540、スコアフィールド545は別々の列にあり、このコンテキストインジケータフィールド550が存在する場合にはスコアが増加し、このコンテキストインジケータフィールド555が存在する場合にはスコアが減少する。
【0026】
一実施形態では、このコンテキストインジケータがフィールド550で指定されたコンテキストインジケータの存在下にある場合、フィールド540で指定されたコンテキストインジケータに適用されるスコアを増加させる必要がある。例えば、フレームの明るい領域で記憶色が発見される場合、フィールド545のスコアを増加させる必要がある。フィールド545を増加させる量は、固定量(例えば、10%)であってもよいし、別の実施形態では、フィールド545を増加させる量は、テーブル510の列で指定されてもよい。また、フィールド540で指定されたコンテキストインジケータがフィールド550で指定されたコンテキストインジケータの存在下にある場合には、スコアを減少させる必要がある。例えば、動きの閾値量を超えるフレームの領域で記憶色が発見された場合、記憶色に対してフィールド545のスコアを減少させる必要がある。スコアを減少させる量は、テーブル510で指定された固定量であってもよいし、他の方法で指定された量であってもよい。
【0027】
ブロック500A~500Cは、プリエンコーダ520によって解析されているフレームのブロックを表す。一実施形態では、重要度テーブル530はエンコーダ(例えば、
図2のエンコーダ230)に提供される。エンコーダは、ブロックに対応する重要度テーブル530の値に基づいて、フレームの各ブロックにビットバジェットを割り当てる。例えば、所定のブロックの重要度テーブル530の値が高いほど、所定のブロックに割り当てられるビットバジェットが高くなる。
【0028】
図6を参照すると、ビットバジェットテーブル630を生成するプリエンコーダ620の一実施形態のブロック図が示されている。一実施形態では、プリエンコーダ620は、重要度テーブル(例えば、重要度テーブル530)を生成するのではなく、結果テーブル605及びスコアリングテーブル(複数可)610に基づいてビットバジェットテーブル630を生成する。次に、ビットバジェットテーブル630が、対応するフレームを符号化する際にブロックごとのビットバジェットを満たすようにブロックを符号化するエンコーダ(例えば、
図2のエンコーダ230)に提供される。ビットバジェットテーブル630は、
図5で説明した重要度テーブル530と同じ方法で生成される。図示するように、ブロック600A~600Cの各々には、重要度の値に基づいて対応するビット数が割り当てられる。場合によっては、プリエンコーダ620は、最初に重要度テーブルを生成し、次に重要度テーブルを使用してビットバジェットテーブル630を生成する。別の実施形態では、プリエンコーダ620は、エンコーダに重要度テーブルを提供し、次に、エンコーダは、重要度テーブルに基づいてビットバジェットテーブル630を生成する。
【0029】
図7を参照すると、一実施形態に従ってプリエンコーダによって解析されているフレーム700の例が示されている。フレーム700は、プリエンコーダによって解析されているビデオフレームの例を表すものである。この説明のために、プリエンコーダは、標識及びテキスト等のコンテキストインジケータを検索していると仮定される。一実施形態では、ホストコンピューティングシステムは、自動運転車アプリケーションを実行している。別の実施形態では、ホストコンピューティングシステムはビデオゲームアプリケーションを実行している。他の実施形態では、フレーム700と同様のフレームを生成可能な他のタイプのホストアプリケーションを実行することができる。
【0030】
図7に示すように、フレーム700は、標識705、710及び715を含む。一実施形態では、プリエンコーダによる解析の第1のステップにおいて、標識705、710及び715は、標識として識別され、またテキストを有するものとして識別されるため、より高い重要度が与えられる。ただし、フレーム700の希少性解析は、標識及び/又はテキストを含むブロックの数が多いため、標識705、710及び715の重要度の減少をもたらすであろう。さらなる解析は、焦点が合っている標識705に基づいて、標識705に最も高い重要度を割り当てる。他の標識710と715の焦点が合っていない場合、それらの重要度スコアが低下する。
【0031】
標識705~715の外側の領域には、樹木と道路が含まれる。樹木のあるフレーム700の領域はビジーである(即ち、空間周波数が比較的高い)と見なされるため、これにより、従来のアルゴリズムでは、これらの領域のブロックに比較的高い重要度と比較的大きなビットバジェットが割り当てられる。ただし、ユーザがフレーム700の何処に注意を向ける可能性が高いかという点では、樹木は標識705~715ほど重要ではない。したがって、樹木を含むブロックを符号化するために使用されるビットバジェットのビット数が少ないため、樹木の詳細度が低くなり、ユーザが認識したり気づいたりすることがほとんどない。したがって、標識705~715を含むブロックに対してより多くのビットを使用する方が適切な手法である。しかしながら、標識705~715の重要度は同じではないため、
図4~
図6で説明する手法を使用して、標識705を含むブロックには標識710~715を含むブロックよりも高い重要度が割り当てられる。このより高い重要度は、これらのブロックがエンコーダによって符号化される際に、標識705を含むブロックへのより大きなビットバジェット割り当てに変換される。
【0032】
図8を参照すると、一実施形態に従ってプリエンコーダによって解析されているフレーム800の例が示されている。フレーム800は、プリエンコーダによって解析されているビデオフレームの例を表すものである。図示するように、フレーム800のほとんどは樹木と葉で構成される。これらの特徴は、葉及び枝等の色の変化が頻繁に発生するため、「ビジー」として検出される傾向がある。その結果、一般的なエンコーダは、樹木及び葉を含むブロックに多数のビットを割り当てる。ただし、フレーム800の場合、これは、ユーザが見ている可能性が高い場所に基づいたビットの誤割り当てになる。ユーザの注意は、標識805に集中する可能性が高い。一実施形態では、標識805は、3つの個別のコンテキストインジケータの基準を満たし、第1の基準は標識であり、第2の基準はテキストを含み、第3の基準は焦点が合っている。したがって、プリエンコーダ(例えば、
図2のプリエンコーダ220)が、本明細書に記載の技術を使用してフレーム800を解析する場合、標識805を含むブロックには比較的高い重要度が割り当てられ、フレーム800に割り当てられたビットバジェットの比較的高いシェアを受ける。
【0033】
図9を参照すると、ブロックごとのビットバジェットを生成するプリエンコーダ用の方法900の一実施形態が示されている。説明のために、本実施形態のステップ及び
図10のステップが順番に示されている。しかしながら、注意すべきこととして、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステム又は装置の何れも、方法900を実施するように構成されている。
【0034】
プリエンコーダは、符号化されるフレームを受信する(ブロック905)。プリエンコーダは、ブロック単位でフレームを解析して、各ブロックに存在するコンテキストインジケータを決定する(ブロック910)。コンテキストインジケータは、実施形態によって異なる。一実施形態では、プリエンコーダは、1つ以上の訓練されたニューラルネットワークを使用して、ブロック内の異なるコンテキストインジケータを検出する。次に、プリエンコーダは、指定されたコンテキストインジケータの有無、及び、各コンテキストインジケータに割り当てられたスコアに基づいて、各ブロックの相対的な重要度の値を生成する(ブロック915)。一実施形態では、コンテキストインジケータは、ホストシステムによって実行されている特定のアプリケーションに固有の第1のテーブルで識別される。一実施形態では、各コンテキストインジケータに関連付けられたスコアは、ホストシステムによって実行されている特定のアプリケーションに固有の第2のテーブルに記憶される。次に、プリエンコーダは、1つ以上の他の変数に基づいて重要度の値を調整する(ブロック920)。例えば、他の変数は、フレーム全体内の特定のコンテキストインジケータの希少性、ブロックの被写界深度、及び/又は、他の要因を含むことができる。
【0035】
次に、プリエンコーダにより、ブロックに割り当てられたビットバジェットが各ブロックの重要度の値の影響を受ける(ブロック925)。一実施形態では、プリエンコーダは、各ブロックの重要度の値に基づいてビットバジェットを計算し、ブロックに割り当てる。別の実施形態では、プリエンコーダは、レートコントローラ及び/又はエンコーダに重要度の値を提供し、レートコントローラ及び/又はエンコーダは、各ブロックの重要度の値に基づいてビットバジェットを計算し、ブロックに割り当てる。次に、エンコーダは、ブロックに割り当てられたビットバジェットを満たすようにブロックをエンコードする(ブロック930)。一実施形態では、エンコーダは、所定のブロックに割り当てられたビットバジェットに基づいて、所定のブロックを符号化するために使用される量子化パラメータ(QP)を調整する。他の実施形態では、エンコーダは他のパラメータを調整して、特定のブロックに割り当てられたビットバジェットに一致するか、それに近似するビット数で所定のブロックを符号化する。ブロック930の後に、方法900を終了する。注意すべきこととして、方法900は、フレームのブロックがどのように符号化されるかに影響を与えるビットバジェット又は重要度の値を生成するための1つ以上の他の技術と組み合わせて使用することができる。
【0036】
図10を参照すると、フレーム全体のコンテキストインジケータの希少性に基づいてフレームのブロックのコンテキストインジケータ係数を調整する方法1000の一実施形態が示されている。プリエンコーダは、フレームの所定のブロックで第1のコンテキストインジケータを検出する(ブロック1005)。実施形態に応じて、第1のコンテキストインジケータは、標識、テキスト、記憶色、又は、他のコンテキストインジケータである。次に、プリエンコーダは、第1のコンテキストインジケータがフレームの他のブロックで検出されたか否かを決定する(ブロック1010)。次に、プリエンコーダは、フレームの他のブロックにおける第1のコンテキストインジケータの発生回数に比例又は反比例する所定のブロックの係数を生成する(ブロック1015)。反比例の場合、フレーム内で第1のコンテキストインジケータが検出される頻度が低いほど、所定のブロックに対して生成される係数値が高くなる。次に、プリエンコーダは、所定のブロックに対して生成された合計スコアに係数を追加する(ブロック1020)。一実施形態では、合計スコアは、所定のブロックの重要度の値として使用される。次に、合計スコアを使用して、所定のブロックのビットバジェットを計算する(ブロック1025)。ブロック1025の後、方法1000を終了する。注意すべきこととして、方法1000は、フレームの各ブロックだけでなく、複数のコンテキストインジケータの各コンテキストインジケータに対して実行することができる。
【0037】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、本明細書で説明する方法及び/又はメカニズムを実施するために使用される。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態において、そのようなプログラム命令は、高水準のプログラミング言語によって表現される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書かれる。このようなプログラム命令は、C等の高水準のプログラミング言語によって表現される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体のうち何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0038】
上述した実施形態が、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するように解釈されることが意図される。
【国際調査報告】