(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-30
(54)【発明の名称】パレットテーブル導出への適用による並列ヒストグラム計算
(51)【国際特許分類】
H04N 19/593 20140101AFI20221122BHJP
H04N 19/46 20140101ALI20221122BHJP
【FI】
H04N19/593
H04N19/46
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022515123
(86)(22)【出願日】2020-09-30
(85)【翻訳文提出日】2022-05-02
(86)【国際出願番号】 IB2020059176
(87)【国際公開番号】W WO2021064613
(87)【国際公開日】2021-04-08
(32)【優先日】2019-09-30
(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)【発明者】
【氏名】ウェイ ガオ
(72)【発明者】
【氏名】ヤン リウ
(72)【発明者】
【氏名】クリスタル ヨンーピャン ソウ
(72)【発明者】
【氏名】ハイボー リウ
(72)【発明者】
【氏名】エドワード エイ. ハロルド
(72)【発明者】
【氏名】イン ルオ
(72)【発明者】
【氏名】イハブ アメール
(72)【発明者】
【氏名】ガボール シネス
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159PP16
5C159RC14
5C159UA02
5C159UA33
(57)【要約】
パレットテーブル導出への適用により並列ヒストグラム計算を実行するシステム、装置及び方法が開示される。エンコーダは、画素のブロックの画素成分値ビットの第1の部分についての第1のヒストグラムを計算する。次いで、エンコーダは、第1のヒストグラムから第1の数の最高画素総数ビンを選択する。また、エンコーダは、ブロックの画素成分値ビットの第2の部分についての第2のヒストグラムを計算する。エンコーダは、第2のヒストグラムから第2の数の最高画素総数ビンを選択する。第3のヒストグラムは、第1の数及び第2の数のビンに割り当てられたビットの連結から計算され、最高画素総数ビンは、第3のヒストグラムから選択される。パレットテーブルは、第3のヒストグラムから選択されたそれらの最高画素総数ビンに基づいて導出され、画素のブロックは、パレットテーブルを使用して符号化される。
【選択図】
図10
【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに結合されたエンコーダと、を備え、
前記エンコーダは、
画素のブロックの所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することと、
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することと、
前記所与数の最頻発生値からパレットテーブルを導出することと、
前記パレットテーブルに基づいて、前記画素のブロックの前記所与の画素成分を符号化することと、
を行うように構成されている、
システム。
【請求項2】
前記画素のブロックの前記所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することは、
前記画素のブロックの前記所与の画素成分の第1のビットのサブセットについての第1のヒストグラムを計算することと、
前記画素のブロックの前記所与の画素成分の第2のビットのサブセットについての第2のヒストグラムを計算することであって、前記第1のビットのサブセットは、前記第2のビットのサブセットと重ならない、ことと、を含む、
請求項1のシステム。
【請求項3】
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することは、
前記第1のヒストグラムから最高画素総数を有する第1のビンのセットを選択し、前記第2のヒストグラムから最高画素総数を有する第2のビンのセットを選択することと、
第3のビンのセットについての第3のヒストグラムを計算することであって、前記第3のビンのセットの各ビンは、前記第1のビンのセットからの第1のビンに割り当てられたビットと、前記第2のビンのセットからの第2のビンに割り当てられたビットとの連結に対応する、ことと、
前記第3のビンのセットのうち最高画素総数を有する第4のビンのセットを選択することであって、前記第4のビンのセットに割り当てられた画素成分値は、前記画素のブロックの前記所与の画素成分についての前記所与数の最頻発生値である、ことと、を含む、
請求項2のシステム。
【請求項4】
前記第1のビットのサブセット及び前記第2のビットのサブセットの組み合わせは、前記所与の画素成分の全体を含む、
請求項1のシステム。
【請求項5】
前記所与の画素成分は、Nビットを有し、
前記第1のビットのサブセットは、前記所与の画素成分のN/2最上位ビットを含み、
前記第2のビットのサブセットは、前記所与の画素成分のN/2最下位ビットを含み、
Nは、正の偶数の整数である、
請求項1のシステム。
【請求項6】
前記所与の画素成分は、赤画素成分、緑画素成分又は青画素成分であり、
前記ブロックは、画素又はビデオフレームの一部である、
請求項1のシステム。
【請求項7】
前記所与の画素成分は、ルミナンス画素成分又はクロミナンス画素成分であり、
前記ブロックは、画素又はビデオフレームの一部である、
請求項1のシステム。
【請求項8】
エンコーダが、画素のブロックの所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することと、
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することと、
前記所与数の最頻発生値からパレットテーブルを導出することと、
前記パレットテーブルに基づいて、前記画素のブロックの前記所与の画素成分を符号化することと、を含む、
方法。
【請求項9】
前記画素のブロックの前記所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することは、
前記画素のブロックの前記所与の画素成分の第1のビットのサブセットについての第1のヒストグラムを計算することと、
前記画素のブロックの前記所与の画素成分の第2のビットのサブセットについての第2のヒストグラムを計算することであって、前記第1のビットのサブセットは、前記第2のビットのサブセットと重ならない、ことと、を含む、
請求項8の方法。
【請求項10】
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することは、
前記第1のヒストグラムから最高画素総数を有する第1のビンのセットを選択し、前記第2のヒストグラムから最高画素総数を有する第2のビンのセットを選択することと、
第3のビンのセットについての第3のヒストグラムを計算することであって、前記第3のビンのセットの各ビンは、前記第1のビンのセットからの第1のビンに割り当てられたビットと、前記第2のビンのセットからの第2のビンに割り当てられたビットとの連結に対応する、ことと、
前記第3のビンのセットのうち最高画素総数を有する第4のビンのセットを選択することであって、前記第4のビンのセットに割り当てられた画素成分値は、前記画素のブロックの前記所与の画素成分についての前記所与数の最頻発生値である、ことと、を含む、
請求項9の方法。
【請求項11】
前記第1のビットのサブセット及び前記第2のビットのサブセットの組み合わせは、前記所与の画素成分の全体を含む、
請求項8の方法。
【請求項12】
前記所与の画素成分は、Nビットを有し、
前記第1のビットのサブセットは、前記所与の画素成分のN/2最上位ビットを含み、
前記第2のビットのサブセットは、前記所与の画素成分のN/2最下位ビットを含み、
Nは、正の偶数の整数である、
請求項8の方法。
【請求項13】
前記所与の画素成分は、赤画素成分、緑画素成分又は青画素成分であり、
前記ブロックは、画素又はビデオフレームの一部である、
請求項8の方法。
【請求項14】
前記所与の画素成分は、ルミナンス画素成分又はクロミナンス画素成分であり、
前記ブロックは、画素又はビデオフレームの一部である、
請求項8の方法。
【請求項15】
画素のブロック及びプログラム命令を記憶するメモリと、
前記メモリに結合されたプロセッサと、を備え、
前記プログラム命令は、
画素のブロックの所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することと、
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することと、
前記所与数の最頻発生値からパレットテーブルを導出することと、
前記パレットテーブルに基づいて、前記画素のブロックの前記所与の画素成分を符号化することと、
を前記プロセッサに実行させる、
装置。
【請求項16】
前記画素のブロックの前記所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算することは、
前記画素のブロックの前記所与の画素成分の第1のビットのサブセットについての第1のヒストグラムを計算することと、
前記画素のブロックの前記所与の画素成分の第2のビットのサブセットについての第2のヒストグラムを計算することであって、前記第1のビットのサブセットは、前記第2のビットのサブセットと重ならない、ことと、を含む、
請求項15の装置。
【請求項17】
前記複数のヒストグラムに基づいて、前記画素のブロックの前記所与の画素成分についての所与数の最頻発生値を識別することは、
前記第1のヒストグラムから最高画素総数を有する第1のビンのセットを選択し、前記第2のヒストグラムから最高画素総数を有する第2のビンのセットを選択することと、
第3のビンのセットについての第3のヒストグラムを計算することであって、前記第3のビンのセットの各ビンは、前記第1のビンのセットからの第1のビンに割り当てられたビットと、前記第2のビンのセットからの第2のビンに割り当てられたビットとの連結に対応する、ことと、
前記第3のビンのセットのうち最高画素総数を有する第4のビンのセットを選択することであって、前記第4のビンのセットに割り当てられた画素成分値は、前記画素のブロックの前記所与の画素成分についての前記所与数の最頻発生値である、ことと、を含む、
請求項16の装置。
【請求項18】
前記第1のビットのサブセット及び前記第2のビットのサブセットの組み合わせは、前記所与の画素成分の全体を含む、
請求項15の装置。
【請求項19】
前記所与の画素成分は、Nビットを有し、
前記第1のビットのサブセットは、前記所与の画素成分のN/2最上位ビットを含み、
前記第2のビットのサブセットは、前記所与の画素成分のN/2最下位ビットを含み、
Nは、正の偶数の整数である、
請求項15の装置。
【請求項20】
前記所与の画素成分は、赤画素成分、緑画素成分又は青画素成分であり、
前記ブロックは、画素又はビデオフレームの一部である、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
ビデオデータの圧縮性を高めるために、いくつかのビデオ圧縮標準技術(例えば、HEVC(high efficiency video coding)標準技術、AV1(Alliance for Open Media video 1)コーディング標準技術)においてパレットコーディングが使用される。パレットコーディングは、候補パレットレベルを判定するようにヒストグラムを計算及び分類することを含む。パレットテーブル導出のためにヒストグラム計算に必要な記憶のサイズは、画素ビット深度と共に指数関数的に高まる。本明細書で使用される「パレットテーブル」という用語は、複数のエントリを記憶したデータ構造として定義され、各エントリは、画素成分値にマッピングするインデックスを記憶する。8ビット、10ビット及び12ビットのビデオについて、ヒストグラムビン(histogram bins)の必要とされる数は、従来のパレットコーディング技術に対して、256、1024及び4096である。
【発明の概要】
【0002】
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良好に理解することができる。
【図面の簡単な説明】
【0003】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図3】コンピュータにより生成されたスクリーンコンテンツ画像及び対応する画素分布の図である。
【
図4】メモリに結合されたエンコーダの一実施形態のブロック図である。
【
図5】一実施形態による、所与のブロックについてのサンプルヒストグラムを示す図である。
【
図6】一実施形態による、画素の所与のブロックについての間引きした(decimated)サンプルヒストグラムを示す図である。
【
図7】一実施形態による、最上位の間引きした候補ビンの選択を示す図である。
【
図9】メモリ効率的にパレットテーブルモード符号化を実行する方法の一実施形態を示す一般化されたフローチャートである。
【
図10】パレットテーブル生成のための複数のヒストグラムを計算する方法の一実施形態を示す一般化されたフローチャートである。
【
図11】パレットテーブル導出の一部としてヒストグラムを並列に生成する方法の一実施形態を示す一般化されたフローチャートである。
【
図12】パレットテーブルを使用してビデオ/画像ブロックを符号化する方法の一実施形態を示す一般化されたフローチャートである。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解を提供するために、多数の詳細が示される。しかしながら、当業者は、それらの特定の詳細無しに様々な実施形態が実施されてもよいことを認識すべきである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令、及び、技術が詳細に示されていない。説明を簡潔及び明確にするために、図に示す要素は、必ずしも同じ縮尺で描かれていない。例えば、いくつかの要素の寸法は、他の要素に対して誇張されてもよい。
【0005】
パレットテーブル導出への適用により並列ヒストグラム計算を実行する様々なシステム、装置及び方法が本明細書で開示される。一実施形態では、エンコーダは、画像又はビデオフレームのブロックの画素成分値(すなわち、色値)のビットの第1の部分についての第1のヒストグラムを計算する。次いで、エンコーダは、第1のヒストグラムから第1の数の最高画素総数ビン(highest pixel count bins)を選択する。また、エンコーダは、ブロックの画素成分値ビットの第2の部分についての第2のヒストグラムを計算し、エンコーダは、第2のヒストグラムから第2の数の最高画素総数ビンを選択する。一実施形態では、第2のヒストグラムは、第1のヒストグラムと並列に計算される。第3のヒストグラムは、第1の数のビンに割り当てられたビットと、第2の数のビンに割り当てられたビットとの連結から計算され、最高画素総数ビンは、第3のヒストグラムから選択される。パレットテーブルは、第3のヒストグラムから選択された最高画素総数ビンに基づいて導出され、ブロックは、パレットテーブルを使用して符号化される。並列マルチヒストグラムアプローチを使用することによって、従来のパレットテーブル導出技術と比較して、メモリ要件が低減する。
【0006】
一実施形態では、並列演算のために、所与の画素成分のビットが2つのグループに分割される。「m」最上位ビット(MSB)は、第1のグループを形成し、「n」最下位ビット(LSB)は、第2のグループを形成し、「m」及び「n」は、正の整数である。第1のヒストグラムは、「m」MSBに対して計算され、次いで、第1のヒストグラムからの最上位ビンが選択される。第2のヒストグラムは、「n」LSBに対して計算され、次いで、第2のヒストグラムからの最上位ビンが選択される。第3のヒストグラムは、第2のヒストグラムからの最上位ビンに割り当てられたビットと第1のヒストグラムからの最上位ビンに割り当てられたビットとの連結に対して計算される。例えば、「101」が第1のヒストグラムからの最上位ビンに割り当てられており、「001」が第2のヒストグラムからの最上位ビンに割り当てられている場合、第3のヒストグラムは、ビン「101001」を含む。この例では、所与の画素成分が6ビットの画素ビット深度を有することが想定される。他の実施形態では、他の画素ビット深度が使用されてもよい。第3のヒストグラムは、第1のヒストグラムからの最上位ビンと第2のヒストグラムからの最上位ビンとの全ての置換を含む。第3のヒストグラムからの最上位ビンは、パレットテーブル導出のために選択及び使用される。「m」及び「n」の値について、選択される最上位ビンの数、及び、計算される最上位ビンの数は、柔軟であり、実施形態に応じて変化してもよいことに留意されたい。それらの値は、単純なハードウェア実施形態と性能との間のトレードオフに基づいて調整される。
【0007】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともエンコーダ105と、プロセッサ(複数可)110と、入力/出力(I/O)インタフェース120と、バス125と、メモリデバイス(複数可)130と、を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含んでもよく、及び/又は、コンピューティングシステム100は、異なるように構成されてもよい。一実施形態では、エンコーダ105は、ビデオコーデック実装するための論理要素及び/又は処理要素を含む。ビデオコーデックは、圧縮されていないビデオストリームを符号化し、及び/又は、圧縮されたビデオストリームを復号する。一実施形態では、ビデオコーデックは、1つ以上のビデオ圧縮標準技術に従って動作する。本明細書で使用される「エンコーダ」及び「ビデオコーデック」という用語は、ビデオ/画像デコーダ、ビデオ/画像エンコーダ、又は、ビデオコーデックを指してもよいことに留意されたい。エンコーダ105は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを表す。エンコーダ105が、プロセッサ(複数可)110とは異なる別のユニットとして示されているが、エンコーダ105の一部又は全体がプロセッサ(複数可)110上で実行されてもよいし、プロセッサ(複数可)110上に実装されてもよいことを理解されたい。
【0008】
プロセッサ(複数可)110は、任意の数及びタイプのプロセシングユニット(例えば、セントラルプロセシングユニット(CPU)、グラフィックプロセシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))を表す。一実施形態では、エンコーダ105に関連する処理の一部は、プロセッサ(複数可)110によって実行される。メモリデバイス(複数可)130は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)130におけるメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、又は、強誘電体ランダムアクセスメモリ(FeRAM)等を含んでもよい。メモリデバイス(複数可)130は、エンコーダ105及びプロセッサ(複数可)110によってアクセス可能である。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI-X(PCI-Extended)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺デバイスがI/Oインタフェース120に結合されてもよい。そのような周辺デバイスは、(限定されないが)ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、及び、ネットワークインタフェースカード等を含む。
【0009】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、グラフィックカード、システムオンチップ、集積回路、ストリーミングデバイス、ウェアラブルデバイス、これらのデバイス若しくはシステムの一部、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスの何れかであってもよいし、これらの一部であってもよい。コンピューティングシステム100の構成要素の数は、実施形態毎に変化することに留意されたい。例えば、他の実施形態では、
図1に示す数よりも多い又は少ない構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成されている。
【0010】
図2を参照すると、画像205及び対応する画素分布210の図が示されている。
図2に示す画像205は、画像処理において試験画像として広く使用される公知のレナ画像である。この64×64のレナ画像205についての画素分布210が、
図2の下部に示されている。画素分布210は、画像205内の画素が異なる画素値にわたってどのように分布するかを示す。画素分布210に示すような連続した色調を有することは、カメラによってキャプチャされた自然画像又はビデオフレームに対して一般的である。
【0011】
図3を参照すると、コンピュータにより生成されたスクリーンコンテンツ画像305及び対応する画素分布310の図が示されている。画像305は、コンピュータにより生成されたスクリーンショットの一例であり、画素分布310は、比較的少数の画素レベル(すなわち、画素成分値)にわたって画素の狭い分布がどのように存在するかを示す。画素分布に示すように、画像305は、制限された少数の区別可能な色を含む。これは、コンピュータにより生成されたスクリーンコンテンツにおいて一般的なタイプの分布であり、そこのようなタイプのコンピュータにより生成された画像について、パレットコーディングは、高圧縮比を達成するために効率的な符号化方法である。コンピュータにより生成されたスクリーンショット以外の他のタイプの画像についても、パレットコーディングが有効である。
【0012】
図4を参照すると、メモリ430に結合されたエンコーダ405の一実施形態のブロック図が示されている。一実施形態では、エンコーダ405は、ビニングコントローラ415と、選択ユニット420と、パレットテーブル生成ユニット425と、を有する制御ロジック410を含む。別の実施形態では、エンコーダ405は、プログラム命令を実行するプロセッサによって実装されており、この実施形態では、ビニングコントローラ415と、選択ユニット420と、パレットテーブル生成ユニット425とは、制御ロジックではなくプログラム命令によって実装される。他の実施形態では、ビニングコントローラ415と、選択ユニット420と、パレットテーブル生成ユニット425とは、ハードウェア及びソフトウェアの組み合わせを使用して実装される。
【0013】
エンコーダ405は、任意の数及びタイプのメモリデバイスを表すメモリ430に結合されている。一実施形態では、メモリ430は、エンコーダ405によって符号化されるビデオフレームを記憶する。ビデオブロック435は、このビデオフレームの1つのブロックを表す。ビデオブロック435を符号化するために使用される技術は、ビデオフレームの他のブロックに対して、及び、ビデオシーケンス内の他のビデオフレームに対して使用されてもよい。或いは、ビデオブロック435は、画像の単一のブロックであってもよい。一実施形態では、ビデオブロック435は、複数の画素成分値としてメモリ430に記憶される。符号化処理の一部として、ビニングコントローラ415は、ビデオブロック435の画素成分値の第1のビットのサブセットから、第1のビットグループヒストグラム440Aを生成する。一実施形態では、第1のビットのサブセットは、画素成分値のいくつかの数のMSBである。一実施形態では、ビニングコントローラ415は、個別の画素成分(例えば、赤、緑、青)毎に個別の第1のビットグループヒストグラム440Aを生成する。第1のビットグループヒストグラム440Aを生成するために、ビニングコントローラ415は、第1のビットのサブセットについての異なる取り得るビット値の全てに対応する複数のビンを定義する。次に、ビニングコントローラ415は、ビデオブロック435からの何個の画素成分値が各ビンに収まるかを集計する。例えば、一実施形態では、ビニングコントローラ415は、ビデオブロック435の画素成分値を取り出し、次いで、ビニングコントローラ415は、その対応するビンに各画素成分値を割り当てる。一実施形態では、各ビンは、各ビンに画素が割り当てられる毎に増分するカウンタを使用して実装される。
【0014】
一実施形態では、第1のビットグループヒストグラム440Aの各ビンは、所与の数のMSBに対応する画素成分値の範囲を表す。所与の数のMSBは、実施形態に応じて変化してもよい。例えば、一実施形態では、第1のビットグループヒストグラム440Aの各ビンは、画素成分値毎に8ビットの合計からの4つのMSBに対応する範囲を表す。第1のビットグループヒストグラム440Aのビンを生成するために総数未満のビットを使用することによって、第1のビットグループヒストグラム440Aをメモリ430に記憶するための記憶要件が低減する。例えば、8ビットからの4つのMSBが第1のビットグループヒストグラム440Aを生成するために使用される場合、8ビット全てが使用された場合の256ビンと比較して、16個のビンのみが生成される。この例では、各画素成分値は、値の4つのMSBに基づいて、ビニングコントローラ415によってその各々のビンに割り当てられる。
【0015】
第1のビットグループヒストグラム440Aが生成され、メモリ430に記憶された後に、第1のビットグループヒストグラム440Aのビンは、選択ユニット420によって分類される。例えば、ビンは、何個の画素値が各ビンに収まるかに基づいて、最高から最低に分類される。次いで、選択ユニット420は、最高画素値を有する所与の数のビンを選択する。例えば、一実施形態では、選択ユニット420は、最高画素値を有する8個のビンを選択する。他の実施形態では、選択ユニット420は、第1のビットグループヒストグラム440A内のビンの全てにわたって最高画素総数(すなわち、最高数の画素値)を有する他の数のビンを選択する。第1のビットグループヒストグラム440Aを計算することと並列に、第2のビットグループヒストグラム440Bは、画素成分値第2のビットのサブセットに対して生成される。例えば、一実施形態では、第2のビットグループヒストグラム440Bを計算するために、4つのLSBが使用される。第1のビットグループヒストグラム440Aと同様に、第2のビットグループヒストグラム440Bのビンは、何個の画素値が各ビンに収まるかに従って分類される。次いで、最上位ビンは、画素値総数に従って選択される。選択される最上位ビンの数は、実施形態に応じて変化する。一実施形態では、最上位8ビットは、選択ユニット420によって第2のビットグループヒストグラム440Bから選択される。
【0016】
一実施形態では、第1のビットグループヒストグラム440Aから選択された最上位ビンは、第2のビットグループヒストグラム440Bから選択された最上位ビンと組み合わされ、組み合わされたビットグループヒストグラム440Cを生成するために使用される。例えば、一実施形態では、第1のビットグループヒストグラム440Aから最上位ビンに割り当てられたMSBは、組み合わされたビットグループヒストグラム440Cのビンを形成するために、第2のビットグループヒストグラム440Bから最上位ビンに割り当てられたLSBと連結される。各ビンに収まる画素の数が集計され、次いで、画素総数に関して、最上位ビンが選択される。それらの最上位ビンは、パレットテーブル450を導出するためにパレットテーブル生成ユニット425によって使用され、パレットテーブル450は、ビデオブロック435を符号化して、符号化されたブロック455を生成するために使用される。いくつかのケースでは、自然の(すなわち、コンピュータにより生成されていない)ビデオフレームにおいて一般的に見られるように多数のビンにわたって画素値の分布が広がる場合、エンコーダ405は、ビデオブロック435に対してパレットモード符号化を使用しないと決定する。実施形態に応じて、パレットモード符号化を使用しないとの決定は、第1のビットグループヒストグラム440Aが生成された後、第2のビットグループヒストグラム440Bが生成された後、又は、組み合わされたビットグループヒストグラム440Cが生成された後に行われてもよい。それらのヒストグラム440A~440Cのうちの1つ以上の分析は、パレットモード符号化がビデオブロック435に対して適切であるかどうかを判定することができる。パレットモード符号化が使用されないケースでは、ビデオブロック435を符号化するために、様々な他のタイプの従来の符号化技術のうち何れかが使用されてもよい。
【0017】
上述した処理は、ビデオフレームの全体又はその一部に対して実行されてもよいことに留意されたい。また、ビデオフレーム全体に対して生成されたパレットテーブルは、ビデオストリーム内の後続のビデオフレームを符号化するために使用されてもよい。また、別の実施形態では、ビデオブロック435は、画像のブロックであってもよいことに留意されたい。制御ロジック410をビニングコントローラ415、選択ユニット420及びパレットテーブル生成ユニット425に区画化することは、一実施形態を示すに過ぎないことに留意されたい。別の実施形態では、単一の制御ユニットは、ビニングコントローラ415、選択ユニット420及びパレットテーブル生成ユニット425の機能を実行してもよい。他の実施形態では、制御ロジック410を個別のユニットに区画化する他の方式が展開されてもよい。
【0018】
一実施形態では、符号化されたブロック455は、符号化されたバージョンのパレットテーブル450と、パレットテーブル450にビデオブロック435の画素をマッピングするインデックス値を有するカラーインデックスマップと、を含む。パレットテーブル450は、ビデオブロック435の画素成分を符号化するための任意の数のパレットテーブルを表す。例えば、一実施形態では、パレットテーブル450は、赤成分についての第1のテーブルと、緑成分についての第2のテーブルと、青成分についての第3のテーブルと、を含む。別の実施形態では、パレットテーブル450は、異なる画素成分の組み合わせを表す単一のテーブルである。生成されたカラーインデックスマップは、任意の適切な符号化技術を使用して符号化されてもよい。例えば、個々のインデックス値は、一実施形態では、ランレングス符号化技術を使用して符号化される。個々のインデックス値を符号化する他の方式が可能であり、企図される。
【0019】
図5を参照すると、所与のブロックについてのサンプルヒストグラム500の一実施形態が示されている。ヒストグラム500は、64個の取り得る画素レベルに対応する64個の異なるビンを有するヒストグラムの一例である。本明細書で使用される「ヒストグラム」という用語は、画像/フレームの所与のブロックについての各画素成分値の発生頻度として定義される。ブロックが、実施形態に応じて変化するコーディングユニットのサイズを有する、「コーディングユニット」としてより一般的に呼ばれ得ることに留意されたい。一実施形態では、コーディングユニットは、画素の8×8のブロックである。別の実施形態では、コーディングユニットは、画像/フレーム全体である。他の実施形態では、コーディングユニットは、画素の他のサイズ及び/又は配列であってもよい。説明のために、ヒストグラム500の例示的な分布が示されている。Y軸は、対応する画素レベルを有する所与のブロック内の画素数を測定する。この説明のために、所与のブロックが複数の画素を有し、各画素が1つ以上のチャネル(例えば、赤、緑、青)の各々についての数値を有することが想定される。
【0020】
ヒストグラム500を生成するために、64個の個別のビンについての記憶が必要とされる。画素成分毎に他の数のビットを有する他のヒストグラムについて、取り得る画素レベル毎にヒストグラムを生成する場合に、他の数のビンが必要とされる。例えば、10ビットの画素成分の場合、1024個の記憶ビンが必要である。12ビットの画素成分の場合、4096個の記憶ビンが必要である。画素成分レベル(すなわち、画素ビット深度)毎のビットの数が増加するにつれて、記憶要件が指数関数的に増加する。しかしながら、本明細書で提示される技術により、高ビット深度ビデオについてのヒストグラムを生成するための記憶要件が実質的に低減する。
【0021】
図6を参照すると、画素の所与のブロックについての間引きしたサンプルヒストグラム600の一実施形態の図が示されている。
図6の説明は、
図5のヒストグラム500の説明の続きである。ヒストグラム600は、各ビンが複数の画素成分レベルを包含することを除いて、ヒストグラム500に示す画素成分レベルにわたる画素の同一の分布を含む。したがって、ヒストグラム600は、各画素のビットのサブセットのみを評価することによって、低減した数のビンを有する。
【0022】
ヒストグラム600に示すように、各矩形は、4個のビンの集合である中間ビンである。この例では、ヒストグラム600は、画素成分値の4最上位ビット(MSB)を評価する。4つのMSBのみを使用することは、16個のビンの合計に対応する。これは、64個のビン(
図5のヒストグラム500の場合)の記憶要件を、ヒストグラム600についての16個のビンに低減させることをサポートする。他の実施形態では、第1のヒストグラムは、他の数のMSBを評価してもよい。一実施形態では、第1のヒストグラム600が、MSBに対して生成されているが、第2のヒストグラム(図示省略)が、LSBに対して生成される。
【0023】
図7を参照すると、サンプルヒストグラムからの最上位の間引きした候補ビンの選択の一実施形態の図が示されている。
図7の説明は、
図6のヒストグラム600の説明の続きである。ヒストグラム600に示すような画素MSBのサブセットに基づいて候補ビンを生成した後に、最高画素総数を有する最上位の4個の候補ビンが選択される。それらの4個の選択された間引きした候補ビン705A~705Dが、ヒストグラム700内の棒グラフとして示されている。最上位の4個の間引きした候補ビン705A~705Dの選択は、一実施形態を示しているに過ぎないことを理解されたい。他の実施形態では、別の数(例えば、2、8)の最上位の間引きした候補ビンが、間引きしたヒストグラムから選択されてもよい。一実施形態では、最上位の4個の間引きした候補ビン705A~705Dが第1のヒストグラムに対して選択されると共に、最上位の4個の間引きした候補ビンが第2のヒストグラムに対して選択される。次に、2つのヒストグラムからのそれらの最上位ビンは、第3のヒストグラムを形成するよう組み合わされる。次いで、パレットテーブルを導出するために、第3のヒストグラムからの最上位ビンが選択及び使用される。
【0024】
図8を参照すると、画素成分800のビットの一実施形態の図が示されている。画素成分800は、ソース画像又はビデオフレームの特定の色空間についての異なる色値の1つを記憶するための任意の数のビットを表す。例えば、一実施形態では、赤、緑及び青(RGB)色空間内の画像についての画素毎の赤色値、緑色値及び青色値を符号化するために、画素成分800の3つの個別のインスタンスが使用される。代わりに、別の実施形態では、画素成分800の3つの別個のインスタンスは、(YUV)色空間内の画素毎のルミナンス値及びクロミナンス値を記憶する。他の実施形態では、画素成分800は、他のタイプの色空間内の画素の各画素成分値を符号化することができる。より一般的に、画素成分800は、色空間へのインデックスと呼ばれてもよい。
【0025】
一実施形態では、第1のヒストグラムは、画素成分800のグループ1ビットを使用して、画像/フレームの画素ブロックに対して計算されると共に、画素成分800のグループ2ビットを排除する。図示するように、グループ1ビットが6ビットを含むが、これは一実施形態を示しているに過ぎないことを理解されたい。最上位候補ビンは、実施形態に応じて変化して選択される最上位候補ビンの数により、第1のヒストグラムから選択される。第1のヒストグラムが計算されることと並列に、第2のヒストグラムは、画素成分800のグループ2ビットを使用して、画素ブロックに対して計算されると共に、画素成分800のグループ1ビットを排除する。図示するように、グループ2ビットが6ビットを含むが、これは一実施形態を示しているに過ぎないことを理解されたい。第1のヒストグラムと同じように、最上位候補ビンは、実施形態に応じて変化して選択される最上位候補ビンの数により、第2のヒストグラムから選択される。
【0026】
次に、第3のヒストグラムは、第1のヒストグラム及び第2のヒストグラムの間に選択されたそれらの最上位候補ビンに対してのみであるが、画素成分800のビットの全てを使用して計算される。第1のヒストグラムから選択された各ビンは、第3のヒストグラムのビンを生成するために、第2のヒストグラムからのビンと組み合わされる。第3のヒストグラムからの最上位ビンは、パレットテーブルを導出するために選択及び使用される。このパレットテーブルは、画像/ビデオブロックを符号化するために使用される。
【0027】
図9を参照すると、メモリ効率的にパレットテーブルモード符号化を実行する方法900の一実施形態が示されている。説明のために、この実施形態におけるステップ及び
図10~
図12のステップが順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が同時に実行されてもよいし、図示した順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法900を実施するように構成されている。
【0028】
エンコーダは、画像又はビデオフレームの画素のブロックの所与の画素成分の異なるビットのサブセットについての複数のヒストグラムを計算する(ブロック905)。ブロック905を実施する方法の例は、
図10の方法1000及び
図11の方法1100において説明する。ブロック905を実施するための他の技術も採用されてもよい。次に、エンコーダは、複数のヒストグラムに基づいて、画素のブロックの所与の画素成分についての所与の数の最頻発生画素成分値を識別する(ブロック910)。次いで、エンコーダは、所与の数の最頻発生画素成分値からパレットテーブルを導出する(ブロック915)。次に、エンコーダは、パレットテーブルに基づいて、画素のブロックの所与の画素成分を符号化する(ブロック920)。ブロック920の後に、方法900は終了する。方法900が、画素のブロックの別の画素成分(例えば、ルミナンス、クロミナンス)毎に繰り返されてもよいことに留意されたい。方法900は、画像/フレームの他のブロックに対し、及び、ビデオシーケンスの後続のビデオフレーム対して繰り返されてもよい。
【0029】
図10を参照すると、パレットテーブル生成のための複数のヒストグラムを計算する方法1000の一実施形態が示されている。エンコーダは、画素のブロックの所与の画素成分の第1のビットのサブセットについての第1のヒストグラムを計算する(ブロック1005)。一実施形態では、所与の画素成分は、赤画素成分、緑画素成分又は青画素成分であり、ブロックは、RGB色空間において表される。別の実施形態では、所与の画素成分は、ルミナンス画素成分又はクロミナンス画素成分であり、ブロックは、YCbCr色空間において表される。更なる実施形態では、所与の画素成分は、2つ以上の画素成分の組み合わせである。例えば、一実施形態では、所与の画素成分は、赤成分に対して8ビット、緑成分に対して8ビット、青成分に対して8ビットの24ビット値である。他の実施形態では、所与の画素成分は、画素のブロックを表す他のタイプの値を記憶することができる。
【0030】
エンコーダは、画素のブロックの所与の画素成分の第2のビットのサブセットについての第2のヒストグラムを計算し、第1のサブセットは、第2のサブセットとは重ならない(ブロック1010)。例えば、一実施形態では、各画素が12ビット値で表される場合、第1のビットのサブセットは、12ビット値の6最上位ビット(MSB)であり、第2のビットのサブセットは、12ビット値の6最下位ビット(LSB)である。他の実施形態では、第1のサブセット及び第2のサブセットは、画素成分値の他の数のビットに対応してもよい。一実施形態では、ブロック1005,1010は、並列に実行される。
【0031】
次に、エンコーダは、第1のヒストグラムからの最高画素総数を有する第1のビンのセットを選択する(ブロック1015)。また、エンコーダは、第2のヒストグラムからの最高画素総数を有する第2のビンのセットを選択する(ブロック1020)。次いで、エンコーダは、第3のビンのセットについての第3のヒストグラムを計算し、第3のビンのセットの各ビンは、第1のビンのセットからの第1のビンに割り当てられたビットと、第2のビンのセットからの第2のビンに割り当てられたビットと、の連結に対応する(ブロック1025)。第3のビンのセットは、第1のビンのセットと第2のビンのセットの全ての取り得る組み合わせを含む。例えば、第1のビンのセットが8個のビンを含み、第2のビンのセットが8個のビンを含む場合、第3のビンのセットは、64個のビンを含む。言い換えると、第1のビンのセットからの各ビンは、第3のビンのセットを生成するために、第2のビンのセットからの各ビンと連結される。次に、エンコーダは、第3のヒストグラムからの第3のビンのセットの中で最高画素総数を有する第4のビンのセットを選択する(ブロック1030)。第4のビンのセットに含まれるビンの数は、実施形態に応じて変化してもよい。次いで、エンコーダは、第4のビンのセットに割り当てられた画素成分値からパレットテーブルを導出する(ブロック1035)。次に、エンコーダは、パレットテーブルに基づいて、画素のブロックの所与の画素成分を符号化する(ブロック1040)。ブロック1040の後に、方法1000は終了する。方法1000が画像又はビデオフレームの画素のブロック毎に繰り返されてもよいことに留意されたい。
【0032】
図11を参照すると、パレットテーブル導出の一部としてヒストグラムを並列に生成する方法1100の一実施形態が示されている。エンコーダは、画像又はビデオフレームのブロックに対してMSBグループ及びLSBグループに画素成分値ビットを分割する(ブロック1105)。ブロックがより一般的に「コーディングユニット」と呼ばれ得ることに留意されたい。コーディングユニットのサイズ(例えば、8×8のブロック)は、実施形態に応じて変化してもよい。別の実施形態では、コーディングユニットは、画像又はビデオフレーム全体である。他の実施形態では、コーディングユニットは、画像の様々な他の部分であり、又は、コーディングユニットは、複数の画像(例えば、ビデオシーケンスのビデオフレーム)に対応してもよい。
【0033】
次に、エンコーダは、MSBグループについてのヒストグラムを計算すると共に(ブロック1110)、LSBグループについてのヒストグラムを並列に計算する(ブロック1115)。各ビンは、ビンに割り当てられたビットの部分に整合するそれらの画素成分値を含む。例えば、一実施形態では、画素成分値のビット幅は8であり、MSB部分は4ビットであり、第1のビンにはビット「1111」が割り当てられ、第2のビンにはビット「1110」が割り当てられる等である。この実施形態では、「11111111」、「11111110」、「11111101」、「11111100」、「11111011」、「11111010」、「11111001」、「11111000」、「11110111」、「11110110」、「11110101」、「11110100」、「11110011」、「11110010」、「11110001」、「11110000」の画素成分値が第1のビンに割り当てられる。また、「11101111」、「11101110」、「11101101」、「11101100」、「11101011」、「11101010」、「11101001」、「11101000」、「11100111」、「11100110」、「11100101」、「11100100」、「11100011」、「11100010」、「11100001」、「11100000」の画素成分値が第2のビンに割り当てられる。このパターンは、MSBグループヒストグラムの他のビンに対して続く。LSBグループの画素成分値は、同様の方法でLSBグループヒストグラムのビンに割り当てられてもよい。
【0034】
次いで、エンコーダは、MSBグループヒストグラムから最上位8個のビンを選択し(ブロック1120)、エンコーダは、LSBグループヒストグラムから最上位8個のビンを選択する(ブロック1125)。他の実施形態では、エンコーダは、MSBグループヒストグラム及びLSBグループヒストグラムから他の数の最上位(すなわち、最高画素総数)ビンを選択してもよい。本明細書で使用される「ビン」という用語は、特定のビット割り当てに整合する画素成分値を有するコーディングユニットからの画素の集合として定義される。MSBグループヒストグラム及びLSBグループヒストグラムについて、所与のビンについての各々の特定のビット割り当ては、画素成分値のビット幅未満であるいくつかのビットを含む。
【0035】
ブロック1120,1125の後に、エンコーダは、64個のビンの組み合わされたヒストグラムを形成するために、8個のMSBビンと8個のLSBビンとを組み合わせる(ブロック1130)。次に、エンコーダは、組み合わされたヒストグラムから最上位8個のビンを選択する(ブロック1135)。他の実施形態では、エンコーダは、組み合わされたヒストグラムから他の数の最上位ビンを選択する。次いで、エンコーダは、最上位8個のビンからパレットテーブルを導出する(ブロック1140)。ブロック1140の後に、方法1100は終了する。
【0036】
図12を参照すると、パレットテーブルを使用してビデオ/画像ブロックを符号化する方法1200の一実施形態が示されている。エンコーダは、並列ヒストグラム生成処理及び/又は階層ヒストグラム生成処理を使用して、ブロック内の所与の数の最頻発生画素成分値を識別する(ブロック1205)。ブロック内の所与の数の最頻発生画素成分値(すなわち、最高位色)を識別するために並列ヒストグラム生成処理及び/又は階層ヒストグラム生成処理を使用する異なる例は、方法1000,1100(
図10~11の)において説明されている。それらの方法又は他の同様の方法は、ブロック1205を実施するために使用されてもよい。所与の数は、実施形態に応じて変化する値を有する任意の適切な整数値(例えば、8、16、32)であってもよい。
【0037】
次に、エンコーダは、所与の数の最頻発生画素成分値に基づいて、パレットテーブルを選択する(ブロック1210)。一実施形態では、パレットテーブルは、3ビットによりテーブルへのインデックスが符号化されることを可能にする、7個の最頻発生画素成分値を含み、8番目のインデックスは、パレットテーブル内の何れの値にもマッピングしないエスケープ画素に対して使用される。他の実施形態では、パレットテーブルは、他の数の最頻発生画素成分値についての他の数のエントリを有する。一実施形態では、各画素成分(例えば、ルミナンス、クロミナンス)は、それ自身のパレットテーブルを有する。別の実施形態では、単一のパレットテーブルは、個別の画素成分の代表的な組み合わせとして生成される。更なる実施形態では、パレットテーブルは、単一の画素成分(例えば、赤)に対して生成され、次いで、他の画素成分(例えば、青、緑)と共有され、又は、他の画素成分により修正される。上記の代替例が可能であり、企図される。
【0038】
次いで、パレットテーブル内のエントリに画素のブロックをマッピングするインデックス値によりカラーインデックスマップが生成される(ブロック1215)。例えば、一実施形態では、ブロック内の各画素は、ブロック内の画素毎のインデックスを含むカラーインデックスマップにより、パレットテーブルへのインデックスに変換される。画素がパレットテーブルに含まれない値を有する場合、画素は、エスケープ画素として符号化されてもよく、画素の実際の値は、カラーインデックスマップ又は個別の構造に含まれてもよい。次に、パレットテーブル及びカラーインデックスマップは、ブロックの表現として符号化される(ブロック1220)。パレットテーブルを符号化し、カラーインデックスマップを符号化するための様々な符号化技術の何れかが使用されてもよい。次いで、符号化されたパレットテーブル及びカラーインデックスマップは、記憶され、及び/又は、受信機に伝達される(ブロック1225)。ブロック1225の後に、方法1200は終了する。方法1200が単に画像/フレームのブロックではなく画像又はビデオフレームの全体を符号化するためにも使用され得ることを理解されたい。
【0039】
符号化されたパレットテーブル及びカラーインデックスマップを受信機に送信することを含む実施形態について、受信機は、符号化されたパレットテーブル及びカラーインデックスマップからブロックを再生成するために、上記ステップを反転させるデコーダを含む。次に、再生成されたブロックは、ディスプレイに送られてもよい。一実施形態では、この処理は、ビデオシーケンスの各ビデオフレームのブロックに対して繰り返されてもよい。代わりに、符号化されたパレットテーブルは、第1のビデオフレーム全体に対して送信されてもよく、次いで、いくつかの数の後続のビデオフレームは、このパレットテーブルを再使用してもよい。後続のビデオフレームについて、ビデオフレームについてのカラーインデックスマップのみが受信機に送信される。更なる実施形態では、フレームのブロックに対して生成された符号化されたパレットテーブルは、フレームの他のブロック及び/又は他のフレームのブロックに対して再使用される。いくつかのケースでは、所与のブロックについてのパレットテーブルは、別のブロックに対応するパレットテーブルから駆動される。例えば、一実施形態では、所与のブロックについてのパレットテーブルを生成するために、隣接ブロックのパレットテーブルにデルタパレットテーブル(すなわち、差分パレットテーブル)が適用される。以前に使用されたパレットテーブルから新たなパレットテーブルを導出する他の方法が可能であり、企図される。
【0040】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、そのようなプログラム命令は、高水準プログラミング言語によって表される。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書き込まれる。そのようなプログラム命令は、C言語等の高水準プログラミング言語によって表される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0041】
上述した実施形態は、実施形態の非限定的な例示に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになる。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。
【国際調査報告】