IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特許7582576算術エンコーディング及びデコーディングにおける末尾ビットの操作
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】算術エンコーディング及びデコーディングにおける末尾ビットの操作
(51)【国際特許分類】
   H04N 19/13 20140101AFI20241106BHJP
【FI】
H04N19/13
【請求項の数】 28
(21)【出願番号】P 2023548750
(86)(22)【出願日】2021-04-26
(65)【公表番号】
(43)【公表日】2024-03-11
(86)【国際出願番号】 RU2021000172
(87)【国際公開番号】W WO2022231451
(87)【国際公開日】2022-11-03
【審査請求日】2023-09-22
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】シチェフ、マキシム ボリソヴィチ
(72)【発明者】
【氏名】ソロカ、アンドレイ
(72)【発明者】
【氏名】アルシナ、エレナ アレクサンドロヴナ
(72)【発明者】
【氏名】イコニン、セルゲイ ユリエビッチ
【審査官】松元 伸次
(56)【参考文献】
【文献】特表2016-508331(JP,A)
【文献】特開2020-017993(JP,A)
【文献】米国特許出願公開第2021/0092454(US,A1)
【文献】特開2018-198447(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
入力データをビットストリームに算術エンコーディングするための方法であって、
前記入力データをコーディング済みビット及び末尾ビットに算術エンコーディングする段階;
前記ビットストリームに前記コーディング済みビットを含める段階;
算術エンコーディングされた前記入力データの区間の最小値及び最大値を決定する段階;
連続する末尾ビットであり、
決定された前記最大値を表す第1最上位ビットMSB内において、決定された前記最小値を表す第2MSB内と同一の値を有する
先行末尾ビットの量を決定する段階;及び
前記先行末尾ビットの決定された前記量の指示、及び
前記先行末尾ビット
を前記ビットストリームに含める段階
を備える方法。
【請求項2】
前記先行末尾ビットの前記量、NumTrailingBitsが、
NumTrailingBits=CLZ((LOW+RANGE-1)XOR LOW)
によって決定され、
CLZ()は、先行0の数であり、LOWは、前記区間の前記最小値であり、RANGEは、前記区間のレンジである、
請求項1に記載の方法。
【請求項3】
前記先行末尾ビットの前記量の前記指示は、前記ビットストリーム内において、前記コーディング済みビット及び前記先行末尾ビットに先行する、請求項1または2に記載の方法。
【請求項4】
前記ビットストリームに含める前記段階の前に、前記先行末尾ビットに対して、1の値を有する1ビットが後部に付加される、請求項1から3のいずれか一項に記載の方法。
【請求項5】
算術エンコーディングする前記段階、区間の最小値及び最大値を決定する前記段階、及び、先行末尾ビットの量を決定する前記段階は、第1サブストリーム及び第2サブストリームについて別個に実行され、結果として、第1コーディング済みビット、第2コーディング済みビット、第1先行末尾ビット、及び第2先行末尾ビットを生じさせ;
前記方法は、前記第1先行末尾ビット及び前記第2先行末尾ビットが後に続く前記第1コーディング済みビット及び前記第2コーディング済みビットを前記ビットストリームに挿入する段階を備える、
請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記第1コーディング済みビットの長さを示す第1長さ指示、及び、前記第2コーディング済みビットの長さを示す第2長さ指示と共に、前記第1コーディング済みビット及び前記第2コーディング済みビットを前記ビットストリームに多重化する段階を更に備える、請求項5に記載の方法。
【請求項7】
前記第1長さ指示は、前記ビットストリーム内において、前記第1コーディング済みビットに先行し、
前記第2長さ指示は、前記ビットストリーム内において、前記第2コーディング済みビットに先行する、
請求項6に記載の方法。
【請求項8】
前記第2長さ指示は、前記ビットストリーム内において前記第1コーディング済みビットに先行する、請求項7に記載の方法。
【請求項9】
前記第2先行末尾ビットの前記量の前記指示は、前記ビットストリーム内において、前記第1コーディング済みビットに先行する、請求項8に記載の方法。
【請求項10】
ビットストリーム長をバイトの予め定められた量の整数倍と一致させるようにアラインするために、予め定められた値を有するビットで、前記第1コーディング済みビット、前記第2コーディング済みビット、前記第1先行末尾ビット、及び、前記第2先行末尾ビットを含む前記ビットストリームをパディングする段階を更に備える、請求項5から9のいずれか一項に記載の方法。
【請求項11】
前記算術エンコーディングは、第1算術エンコーダを用いて前記第1サブストリームをエンコーディングすること、及び、第2算術エンコーダを用いて前記第2サブストリームをエンコーディングすることを含み、
前記第1算術エンコーダ及び前記第2算術エンコーダを用いる前記算術エンコーディングは、少なくとも部分的に並列に実行される、
請求項5から10のいずれか一項に記載の方法。
【請求項12】
前記算術エンコーディングはレンジエンコーディングである、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記算術エンコーディングの間に、前記区間の現在の最小値及び前記現在の最大値が予め構成されたサイズのメモリに格納され;
前記コーディング済みビットを前記ビットストリームに含める前記段階は、安定ビットのうちのビットの予め定義された量を前記メモリから前記ビットストリームに移動させる段階を含み;
前記安定ビットは、前記現在の最小値及び前記現在の最大値の2進表現のMSBにおいて同一の値を有する連続ビットである、
請求項11に記載の方法。
【請求項14】
前記算術エンコーディングの間に、前記先行末尾ビットの量、及び、前記安定ビットのうちのビットの予め定義された量の間の差が、予め定義された閾値より下である場合に;
末尾コーディング済みビットは、前記安定ビットのうちのビットの予め定義された量まで0が後に続く、1の値を有する1ビットを後部に付加することによって、前記先行末尾ビットから生成され;
前記末尾コーディング済みビットは、前記コーディング済みビットを前記ビットストリームに含める前記段階の前に、前記コーディング済みビットに含められ;
0の先行末尾ビットの指示が前記ビットストリームに含められる、
請求項13に記載の方法。
【請求項15】
ビットストリームからデータを算術デコーディングするための方法であって、
先行末尾ビットの量の指示を前記ビットストリームから抽出する段階;
複数のコーディング済みビットを前記ビットストリームから抽出する段階;
抽出された、前記先行末尾ビットの前記量の前記指示によって指定された前記先行末尾ビットを前記ビットストリームから抽出する段階;
抽出された前記先行末尾ビットに、末尾ビットの予め定められた最大長までの0を後部に付加する段階を含む、前記末尾ビットを決定する段階;及び
前記コーディング済みビット及び決定された前記末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることにより、前記データを取得する段階
を備える方法。
【請求項16】
前記末尾ビットを決定する前記段階は、前記末尾ビットの前記予め定められた最大長までの0が後に続く、1の値を有する1ビットで、抽出された前記先行末尾ビットの後部に付加することから成る、請求項15に記載の方法。
【請求項17】
前記先行末尾ビットの前記量の前記指示は、前記ビットストリーム内において、前記コーディング済みビット及び前記先行末尾ビットに先行する、請求項15または16に記載の方法。
【請求項18】
前記方法は、
第1先行末尾ビット及び第2先行末尾ビットが後に続く第1コーディング済みビット及び第2コーディング済みビットを前記ビットストリームから抽出する段階、
前記第1コーディング済みビット及び前記第1先行末尾ビットは第1サブストリームを形成する段階、
前記第2コーディング済みビット及び前記第2先行末尾ビットは第2サブストリームを形成する段階;
前記第1サブストリームについて第1末尾ビットを決定する段階、
前記第2サブストリームについて第2末尾ビットを決定する段階、
前記第1コーディング済みビット及び決定された前記第1末尾ビットを含む第1ビットによって表される第1のコーディング済みの値を算術デコーディングする段階;及び
前記第2コーディング済みビット及び決定された前記第2末尾ビットを含む第2ビットによって表される第2のコーディング済みの値を算術デコーディングする段階、
を備える、請求項15から17のいずれか一項に記載の方法。
【請求項19】
前記第1コーディング済みビットの長さを示す第1長さ指示、及び、前記第2コーディング済みビットの長さを示す第2長さ指示と共に、前記第1コーディング済みビット及び前記第2コーディング済みビットを前記ビットストリームから抽出する段階を更に備える、請求項18に記載の方法。
【請求項20】
前記第1長さ指示は、前記ビットストリーム内において前記第1コーディング済みビットに先行し、
前記第2長さ指示は、前記ビットストリーム内において前記第2コーディング済みビットに先行する、
請求項19に記載の方法。
【請求項21】
前記第2長さ指示は、前記ビットストリーム内において前記第1コーディング済みビットに先行する、請求項20に記載の方法。
【請求項22】
前記第2先行末尾ビットの前記量の前記指示は、前記ビットストリーム内において前記第1コーディング済みビットに先行する、請求項21に記載の方法。
【請求項23】
前記第1コーディング済みビット、前記第2コーディング済みビット、前記第1先行末尾ビット、及び前記第2先行末尾ビットを抽出した後に、前記ビットストリームの残りのビットを破棄する段階を更に備える、請求項18から22のいずれか一項に記載の方法。
【請求項24】
前記算術デコーディングは、第1算術デコーダを用いて前記第1サブストリームをデコーディングすること、及び、第2算術デコーダを用いて前記第2サブストリームをデコーディングすることを含み、
前記第1算術デコーダ及び前記第2算術デコーダを用いる前記算術デコーディングは、少なくとも部分的に並列に実行される、
請求項18から23のいずれか一項に記載の方法。
【請求項25】
前記算術デコーディングはレンジデコーディングである、請求項15から24のいずれか一項に記載の方法。
【請求項26】
1又は複数のプロセッサ上で実行されるときに、請求項1から25のいずれか一項に記載の方法の段階を前記1又は複数のプロセッサに実行させるコード命令を含み、非一時的媒体に格納されるコンピュータプログラム。
【請求項27】
入力データをビットストリームに算術エンコーディングするための装置であって、
前記入力データをコーディング済みビット及び末尾ビットに算術エンコーディングすること;
前記コーディング済みビットを前記ビットストリームに含めること、
算術エンコーディングされた前記入力データの区間の最小値及び最大値を決定すること;
連続末尾ビットであり、
決定された前記最大値を表す第1MSB内において、決定された前記最小値を表す第2MSB内と同一の値を有する
先行末尾ビットの量を決定すること;及び
前記先行末尾ビットの決定された前記量の指示、及び、
前記先行末尾ビット
を前記ビットストリームに含めること
を行うよう構成されている処理回路を備える装置。
【請求項28】
ビットストリームからデータを算術デコーディングするための装置であって、
先行末尾ビットの量の指示を前記ビットストリームから抽出すること;
複数のコーディング済みビットを前記ビットストリームから抽出すること;
抽出された前記先行末尾ビットの前記量の前記指示によって指定される前記先行末尾ビットを前記ビットストリームから抽出すること;
抽出された前記先行末尾ビットに、末尾ビットの予め定められた最大長までの0を付加することを含む、前記末尾ビットを決定すること;及び
前記コーディング済みビット及び決定された前記末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることによって、前記データを取得すること
を行うよう構成されている処理回路を備える装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は算術エンコーディング及びデコーディングに関する。特に、本開示は、末尾ビットの操作、特に、ビットストリーム内へのそれらの包含、及び、ビットストリームからのパースに関する。
【背景技術】
【0002】
ビデオコーディング(ビデオエンコーディング及びデコーディング)は、広範な範囲のデジタルビデオ用途、例えば、デジタルテレビ放送、インターネット及びモバイルネットワークを通じたビデオ伝送、ビデオチャット、ビデオ会議DVD、及びブルーレイディスクなどのリアルタイム会話用途、ビデオコンテンツ取得及び編集システム、モバイルデバイスビデオ記録、及び、セキュリティ用途のカムコーダにおいて使用される。
【0003】
1990年のH.261規格におけるブロックベースハイブリッドビデオコーディング手法の開発以来、新しいビデオコーディング技法及びツールが開発され、新しいビデオコーディング規格の基礎を形成した。ほとんどのビデオコーディング規格の目標の1つは、画質を犠牲にすることなく、以前のものと比較してビットレートの減少を達成することであった。更なるビデオコーディング規格は、MPEG-1ビデオ、MPEG-2ビデオ、VP8、VP9、AV1、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンスドビデオコーディング(AVC)、ITU-T H.265、高効率ビデオコーディング(HEVC)、ITU-T H.266、バーサタイルビデオコーディング(VVC)、及び、これらの規格の拡張、例えば、スケーラビリティ及び/又は3次元(3D)拡張などを含む。
【0004】
比較的短いビデオを描画するのであっても、必要とされるビデオデータの量は、かなりのものであり得、その結果、限定的な帯域幅容量を有する通信ネットワークを介してデータがストリーミングされるか又は別の形で通信されることになる場合に困難が生じる場合がある。従って、ビデオデータは一般に、現代の遠隔通信ネットワークを介して通信される前に圧縮される。ビデオのサイズは、メモリリソースが限定的である場合があるので、ビデオがストレージデバイス上に保存される場合にも問題となり得る。ビデオ圧縮デバイスは、しばしば、ソースにおけるソフトウェア及び/又はハードウェアを使用して、伝送又は保存の前にビデオデータをコーディングし、それによりデジタルビデオイメージを表現するのに必要なデータの量を低減させる。その後、圧縮データは、デスティネーションにおいて、ビデオデータをデコーディングするビデオ解凍デバイスによって受信される。限定的なネットワークリソース及び増大し続ける高ビデオ品質の需要に鑑みて、画像品質をほとんど又は全く犠牲にせずに圧縮比を改善する、改善された圧縮及び解凍技法が望まれている。
【0005】
ビデオのエンコーディング及びデコーディングは、例えば、H.264/AVC、HEVC(H.265)、VVC(H.266)、又は他のビデオコーディング技術に適合する標準的なビデオエンコーダ及びデコーダによって実行され得る。また、ビデオコーディング又はその一部がニューラルネットワークによって実行され得る。
【0006】
任意のエンコーディング又はデコーディング又は静止画像又はイメージ、又は、ニューラルネットワークの特徴チャネルなどの他のソース信号において、エントロピーコーディングが広く使用されてきた。特に、算術コーディングは、より新しいコーディング手法において重要性を獲得してきた。従って、エントロピーコーディングの効率を改善することが望ましいことがあり得る。
【発明の概要】
【0007】
本開示の実施形態は、データをビットストリームに算術エンコーディングする、及び、データをビットストリームから算術デコーディングするための装置及び方法を提供し、ビットストリームは、コーディング済みビット及び先行末尾ビットを含む。
【0008】
本発明の実施形態は、独立請求項の特徴によって定義され、実施形態の更なる有利な実装は、従属請求項の特徴によって定義される。
【0009】
実施形態によれば、入力データをビットストリームに算術エンコーディングするための方法が提供され、方法は、入力データをコーディング済みビット及び末尾ビットに算術エンコーディングする段階;ビットストリームにコーディング済みビットを含める段階;算術エンコーディングされた入力データの区間の最小値及び最大値を決定する段階;連続する末尾ビットであり、決定された最大値を表す第1最上位ビットMSB内において、決定された最小値を表す第2MSB内と同一の値を有する先行末尾ビットの量を決定する段階;及び、ビットストリームに、先行末尾ビットの決定された量の指示、及び先行末尾ビットを含める段階を備える。
【0010】
完全末尾ビットではなく先行末尾ビットをビットストリームに含めることは、ビットストリーム内のビットの量を低減し得、従って、例えば、同一品質でレートを低減する。言い換えれば、決定された(残りの末尾ビット無しの)先行末尾ビットだけでも、レンジ区間を定義するのに十分であり、従って、残りの末尾ビットは、ビットストリームに含まれる必要がなく、先行末尾ビットの示された量に基づいてデコーダで再構築され得る。これにより、品質を低下させることなくレートを節約し得る。
【0011】
実装例によれば、方法は段階を備え、ここで、先行末尾ビットの量NumTrailingBitsが、NumTrailingBits=CLZ((LOW+RANGE-1)XOR LOW)によって決定され、CLZ()は、先行0の数であり、LOWは、区間の最小値であり、RANGEは、区間のレンジである。
【0012】
先行末尾ビットの量は、例えば、最も近いバイト境界に丸めるのではなく、厳密に決定され得る。これにより、ビットストリーム内のビットの量が更に低減され得る。
【0013】
例えば、先行末尾ビットの量の指示は、ビットストリーム内において、コーディング済みビット及び先行末尾ビットに先行する。
【0014】
ビットストリーム内においてコーディング済みビット及び先行末尾ビットに先行する先行ビットの量の指示は、ビットストリーム全体をバッファリングすることなく、ビットストリームからの効率的な抽出を可能にし得る。
【0015】
実装例において、ビットストリームに含める前に、先行末尾ビットに対して、1の値を有する1ビットが後部に付加される。
【0016】
そのような手法は、1値ビットを除去する代わりに使用され得る。詳細な説明において言及されるように、現在、ビデオコーデックなどのいくつかの既知のコーデックにおいて、1値ビットはビットストリームにおいて示される。
【0017】
特に、算術エンコーディングする段階、区間の最小値及び最大値を決定する段階、及び、先行末尾ビットの量を決定する段階は、第1サブストリーム及び第2サブストリームについて別個に実行され、結果として、第1コーディング済みビット、第2コーディング済みビット、第1先行末尾ビット、及び第2先行末尾ビットを生じさせ;方法は、第1先行末尾ビット及び第2先行末尾ビットが後に続く第1コーディング済みビット及び第2コーディング済みビットをビットストリームに挿入する段階を備える。
【0018】
2つの別個のサブストリームに対する方法のそのような独立の適用は、並列化のための必須条件を提供する。
【0019】
例えば、方法は、第1コーディング済みビットの長さを示す第1長さ指示、及び、第2コーディング済みビットの長さを示す第2長さ指示と共に、第1コーディング済みビット及び第2コーディング済みビットをビットストリームに多重化する段階を更に備える。
【0020】
ビットストリームにおけるサブストリームの長さを示すことにより、異なるサイズを有するサブストリームを提供することが可能となり、従って、より柔軟なビットストリーム構成を達成することを助け得る。
【0021】
実装例において、第1長さ指示は、ビットストリーム内において第1コーディング済みビットに先行し、第2長さ指示は、ビットストリーム内において第2コーディング済みビットに先行する。
【0022】
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示をバッファリングすることを必要としない、サブストリームの即時エンコーディング又はデコーディングが可能であることであり得る。
【0023】
例えば、第2長さ指示は、ビットストリーム内において、第1コーディング済みビットに先行する。
【0024】
コーディング済みビットの前に連結された長さ指示を提供することにより、ビットストリームの個々の一部のより速い抽出を可能にし得る。
【0025】
例えば、第2先行末尾ビットの量の指示は、ビットストリーム内において第1コーディング済みビットに先行する。
【0026】
そのようなビットストリーム構造は、ビットストリームの個々の一部の更により速い抽出を可能にし、ビットストリームを並列デコーディングに対してより好適なものにする。
【0027】
実装例において、方法は更に、ビットストリーム長をバイトの予め定められた量の整数倍と一致させるようにアラインするために、予め定められた値を有するビットで、第1コーディング済みビット、第2コーディング済みビット、第1先行末尾ビット、及び、第2先行末尾ビットを含むビットストリームをパディングする段階を更に備える。
【0028】
そのような手法は、例えば、ネットワーク適応層ユニット又は他のパケットへのカプセル化など、更なる処理のために適切にアラインされたビットストリームを提供し得る。
【0029】
更に、算術エンコーディングは、第1算術エンコーダを用いて第1サブストリームをエンコーディングすること、及び、第2算術エンコーダを用いて第2サブストリームをエンコーディングすることを含み、第1算術エンコーダ及び第2算術エンコーダを用いる算術エンコーディングは、少なくとも部分的に並列に実行される。
【0030】
上で言及されたように、少なくとも2つのサブストリームに対してエンコーディング方法を別個に実行することが可能であることにより、並列エンコーディングが可能になる。これは、エンコーディング効率の改善を促進することを助け得る。
【0031】
実装例において、算術エンコーディングはレンジエンコーディングである。
【0032】
レンジエンコーディングは、限定されたレジスタ又は一般に高速メモリサイズを有するハードウェア及びソフトウェアアーキテクチャに特に好適であり得る。
【0033】
例えば、算術エンコーディング中に、区間の現在の最小値及び現在の最大値は予め構成されたサイズのメモリに格納され;コーディング済みビットをビットストリームに含めることは、安定ビットのうちのビットの予め定義された量をメモリからビットストリーム内に移動させることを含み;安定ビットは、現在の最小値及び現在の最大値の2進表現のMSBにおいて同一の値を有する連続ビットである。
【0034】
部分的に1ビットより大きいコーディング済みビットを出力することにより、より効率的なソフトウェア及び/又は実装を提供し得る。
【0035】
実装例において、算術エンコーディング中に、先行末尾ビットの量は、安定ビットのうちのビットの予め定義された量に近く;末尾コーディング済みビットは、安定ビットのうちのビットの予め定義された量まで0が後に続く、1の値を有する1ビットを後部に付加することによって、先行末尾ビットから生成され;末尾コーディング済みビットは、コーディング済みビットをビットストリームに含める前にコーディング済みビットに含められ;0の先行末尾ビットの指示がビットストリームに含められる。
【0036】
従って、末尾ビットの量の指示と共に多くの先行末尾ビットをシグナリングする労力の増加が回避され得る。代わりに、より多くのコーディング済みビットを有し、0先行末尾ビットをシグナリングするためのシグナリングの労力は低減され得る。
【0037】
実施形態によれば、ビットストリームからデータを算術デコーディングするための方法が提供され、方法は、先行末尾ビットの量の指示をビットストリームから抽出する段階;複数のコーディング済みビットをビットストリームから抽出する段階;抽出された、先行末尾ビットの量の指示によって指定された先行末尾ビットをビットストリームから抽出する段階;抽出された先行末尾ビットに、末尾ビットの予め定められた最大長までの0を後部に付加する段階を含む、末尾ビットを決定する段階;及び、コーディング済みビット及び決定された末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることにより、上記データを取得する段階を備える。
【0038】
先行末尾ビットからの末尾ビットの再構築は、ビットストリーム内のより小さい量のビットを使用することによって、コーディング済みビット及び末尾ビットからのデコーディングを提供する。
【0039】
例えば、末尾ビットを決定する段階は、末尾ビットの予め定められた最大長までの0が後に続く、1の値を有する1ビットで、抽出された先行末尾ビットの後部に付加することから成る。
【0040】
この手法は、算術エンコーダの完全な出力を再構築することを可能にし、これにより、特に適切な入力を算術デコーダに提供する。
【0041】
実装例において、先行末尾ビットの量の指示は、ビットストリーム内において、コーディング済みビット及び先行末尾ビットに先行する。
【0042】
このビットストリーム構造は、ビットストリームからのより効率的な抽出を提供し得る。
【0043】
実装例において、方法は、第1先行末尾ビット及び第2先行末尾ビットが後に続く第1コーディング済みビット及び第2コーディング済みビットをビットストリームから抽出する段階、第1コーディング済みビット及び第1先行末尾ビットは第1サブストリームを形成する段階、第2コーディング済みビット及び第2先行末尾ビットは第2サブストリームを形成する段階;第1サブストリームについて第1末尾ビットを決定する段階、第2サブストリームについて第2末尾ビットを決定する段階、第1コーディング済みビット及び決定された第1末尾ビットを含む第1ビットによって表される第1のコーディング済みの値を算術デコーディングする段階;及び、第2コーディング済みビット及び決定された第2末尾ビットを含む第2ビットによって表される第2のコーディング済みの値を算術デコーディングする段階を備える。
【0044】
2つの別個のサブストリームに対する方法のそのような独立の適用は、より効率的なデコーディングプロセスをもたらし得、並列化のための必須条件を提供する。
【0045】
例えば、方法は、第1コーディング済みビットの長さを示す第1長さ指示、及び、第2コーディング済みビットの長さを示す第2長さ指示と共に、第1コーディング済みビット及び第2コーディング済みビットをビットストリームから抽出する段階を更に備える。
【0046】
ビットストリームにおけるサブストリームの長さを示すことにより、異なるサイズを有するサブストリームを提供することが可能となり、従って、より柔軟なビットストリーム構成をもたらし得る。
【0047】
実装例において、第1長さ指示は、ビットストリーム内において第1コーディング済みビットに先行し、第2長さ指示は、ビットストリーム内において第2コーディング済みビットに先行する。
【0048】
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示をバッファリングすることを必要とすることなく、サブストリームの即時デコーディングを可能にすることであり得る。これにより、処理フローを促進することが達成され得る。
【0049】
例えば、第2長さ指示は、ビットストリーム内において、第1コーディング済みビットに先行する。
【0050】
コーディング済みビットの前に連結された長さ指示を提供することにより、ビットストリームの個々の一部のより速い抽出を可能にし得る。
【0051】
例えば、第2先行末尾ビットの量の指示は、ビットストリーム内において第1コーディング済みビットに先行する。
【0052】
そのようなビットストリーム構造は、ビットストリームの個々の一部のより速い抽出の更なる可能性を提供する。
【0053】
実装例において、方法は更に、第1コーディング済みビット、第2コーディング済みビット、第1先行末尾ビット、及び第2先行末尾ビットを抽出した後に、ビットストリームの残りのビットを破棄する段階を備える。
【0054】
そのような手法は、例えば、ネットワーク適応層ユニット又は他のパケットへのカプセル化など、更なる処理のために適切にアラインされたビットストリームを提供し得る。
【0055】
例えば、算術デコーディングは、第1算術デコーダを用いて第1サブストリームをデコーディングすること、及び、第2算術デコーダを用いて第2サブストリームをデコーディングすることを含み、第1算術デコーダ及び第2算術デコーダを用いる算術デコーディングは、少なくとも部分的に並列に実行される。
【0056】
サブストリームの並列デコーディングは、全ビットストリームのより速いデコーディングをもたらし得る。
【0057】
実装例において、算術デコーディングはレンジデコーディングである。
【0058】
レンジエンコーディングは、限定されたレジスタ又は一般に高速メモリサイズを有するハードウェア及びソフトウェアアーキテクチャに特に好適であり得る。
【0059】
実装例において、コンピュータプログラムは、非一時的媒体に格納され、1又は複数のプロセッサ上で実行されるとき、上で説明された方法のいずれかの段階を1又は複数のプロセッサに実行させるコード命令を含む。
【0060】
実施形態によれば、入力データをビットストリームに算術エンコーディングするための装置が提供され、装置は、入力データをコーディング済みビット及び末尾ビットに算術エンコーディングすること;コーディング済みビットをビットストリームに含めること;算術エンコーディングされた入力データの区間の最小値及び最大値を決定すること;連続末尾ビットであり、決定された最大値を表す第1MSB内において、決定された最小値を表す第2MSB内と同一の値を有する先行末尾ビットの量を決定すること;及び、先行末尾ビットの決定された量の指示、及び、先行末尾ビットをビットストリームに含めることを行うよう構成されている処理回路を備える。
【0061】
実施形態によれば、ビットストリームからデータを算術デコーディングするための装置が提供され、装置は、先行末尾ビットの量の指示をビットストリームから抽出すること;複数のコーディング済みビットをビットストリームから抽出すること;抽出された先行末尾ビットの量の指示によって指定される先行末尾ビットをビットストリームから抽出すること;抽出された先行末尾ビットに、末尾ビットの予め定められた最大長までの0を付加することを含む、末尾ビットを決定すること;及び、コーディング済みビット及び決定された末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることによって、上記データを取得することを行うよう構成されている処理回路を備える。
【0062】
装置は、上で説明された方法の利点を提供する。
【0063】
発明は、ハードウェア(HW)及び/又はソフトウェア(SW)において、又は、それらの任意の組み合わせにおいて実装され得る。また、HWベースの実装は、SWベースの実装と組み合わされ得る。
【0064】
1又は複数の実施形態の詳細は、添付図面及び以下の説明に記載されている。本明細書、図面、及び特許請求の範囲から、他の特徴、目的、及び利点が明らかになるであろう。
【図面の簡単な説明】
【0065】
以下では、本発明の実施形態が、添付の図及び図面を参照して、より詳細に説明される。
【0066】
図1】算術コーディングを用いる、2個のシンボルを有するアルファベットを使用するメッセージのエンコーディングを図示する概略図である。
【0067】
図2】8個のシンボルを有するアルファベットを使用するメッセージの算術(レンジ)コーディングの第1段階の概略図である。
【0068】
図3】8個のシンボルを有するアルファベットを使用するメッセージの算術(レンジ)コーディングの第2段階の概略図である。
【0069】
図4】8個のシンボルを有するアルファベットを使用するメッセージの算術(レンジ)コーディングの第3段階の概略図である。
【0070】
図5】8個のシンボルを有するアルファベットを使用するメッセージの算術(レンジ)コーディングの第4段階の概略図である。
【0071】
図6】8個のシンボルを有するアルファベットを使用するメッセージの算術(レンジ)コーディングの最終段階の概略図である。
【0072】
図7A】2進数として表現される、コーディング段階中のレンジの最小及び最大の値を図示する概略図である。
図7B】2進数として表現される、コーディング段階中のレンジの最小及び最大の値を図示する概略図である。
図7C】2進数として表現される、コーディング段階中のレンジの最小及び最大の値を図示する概略図である。
図7D】2進数として表現される、コーディング段階中のレンジの最小及び最大の値を図示する概略図である。
【0073】
図8】例示的な算術デコーディングを図示する概略図である。
【0074】
図9】例示的なエンコーディング方法を図示するフロー図である。
【0075】
図10】例示的なデコーディング方法を図示するフロー図である。
【0076】
図11】画像エンコーディングにおいていくつかの実施形態の算術エンコーディングを採用することを図示するブロック図である。
【0077】
図12】画像デコーディングにおいていくつかの実施形態の算術エンコーディングを採用することを図示するブロック図である。
【0078】
図13】入力データのチャネルを単一ストリームにエンコーディングする単一エンコーダの概略図である。
【0079】
図14】入力データのチャネルをサブストリームにエンコーディングし、サブストリームをビットストリームに連結するマルチコアエンコーダの概略図である。
【0080】
図15】入力データのチャネルをサブストリームにインターリーブ及びエンコーディングし、サブストリームをビットストリームに連結するマルチコアエンコーダの概略図である。
【0081】
図16】同一の先行末尾ビットの決定を図示する概略図である。
【0082】
図17】長さ指示、コーディング済みビット、及び先行末尾ビットを含むビットストリームの概略図である。
【0083】
図18】入力データから同一サイズのチャネルを取得するための前処理、及び、インターリーブ及びエンコーディングされたサブストリームを形成するシャッフルプロセスの概略図である。
【0084】
図19】本発明の実施形態を実装するよう構成されているビデオコーディングシステムの例を示すブロック図である。
【0085】
図20】本発明の実施形態を実装するよう構成されているビデオコーディングシステムの別の例を示すブロック図である。
【0086】
図21】エンコーディング装置又はデコーディング装置の例を図示するブロック図である。
【0087】
図22】エンコーディング装置又はデコーディング装置の別の例を図示するブロック図である。
【発明を実施するための形態】
【0088】
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様又は本発明の実施形態を使用することができる特定の態様を例示として示す添付の図面を参照する。本発明の実施形態は他の態様で用いられてよく、図面に示されていない構造上又は論理上の変更を含んでよいことが理解される。したがって、以下の詳細な説明は、限定の意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【0089】
例えば、説明された方法に関連する開示は、方法を実行するように構成された対応するデバイス又はシステムにも当てはまり得、逆もまた同様であることが理解される。例えば、1又は複数の特定の方法の段階が説明される場合、対応するデバイスが、説明された1又は複数の方法の段階を実行するための1又は複数のユニット(例えば、1又は複数の段階を実行する1つのユニット、又は、複数の段階の1又は複数を各々実行する複数のユニット)、例えば機能ユニットを、そのような1又は複数のユニットが図において明示的に説明又は図示されていない場合でも、含み得る。一方、例えば、特定の装置が1又は複数のユニット、例えば、機能ユニットに基づいて説明された場合、対応する方法が1又は複数のユニットの機能を実行する1つの段階(例えば、1又は複数のユニットの機能を実行する1つの段階、又は、複数のユニットのうちの1又は複数の機能を各々実行する複数の段階)を、そのような1又は複数の段階が図において明示的に説明または図示されていない場合でも、含み得る。更に、本明細書に記載の様々な例示的な実施形態及び/又は態様の特徴は、特に明記しない限り、互いに組み合わせることができることが理解される。
【0090】
ビデオコーディングは典型的には、ビデオ又はビデオシーケンスを形成する一連の画像の処理を意味する。画像という用語の代わりに、フレーム又はイメージという用語が、ビデオコーディングの分野での同義語として使用されてもよい。ビデオコーディングは、ビデオエンコーディングとビデオデコーディングの2つの部分を含む。ビデオエンコーディングは、ソース側で実行され、典型的には、元のビデオ画像を(例えば、圧縮により)処理して、(より効率的な保存及び/又は伝送のために、)ビデオ画像を表すために必要とされるデータの量を低減することを含む。ビデオデコーディングは、デスティネーション側で実行され、典型的には、ビデオ画像を再構築するために、エンコーダと比較して逆の処理を含む。ビデオ画像(又は後で説明する一般的な画像)の「コーディング」に言及する実施形態は、ビデオ画像の「エンコーディング」及び「デコーディング」の両方に関連すると理解されるべきである。エンコーディング部分とデコーディング部分との組み合わせは、コーデック(コーディング及びデコーディング)とも称される。
【0091】
無損失ビデオコーディングの場合は、元のビデオ画像を再構築でき、すなわち、再構築されたビデオ画像は、元のビデオ画像と同一品質を有する(保存又は伝送中に伝送エラー又は他のデータ損失が無いと想定する)。有損失ビデオコーディングの場合は、例えば、量子化による更なる圧縮を実行して、ビデオ画像を表現するデータの量を低減する。ビデオ画像はデコーダで完全に再構築することができない、すなわち、再構築されたビデオ画像の品質は、元のビデオ画像の品質と比較して低い又は悪い。
【0092】
算術エンコーディング
エントロピーコーディングは、典型的には、無損失コーディングとして採用される。算術コーディングは、メッセージを表す区間(レンジ)内の2進実数としてメッセージをエンコーディングするエントロピーコーディングの一種である。本明細書において、メッセージという用語は、シンボルのシーケンスを指す。シンボルは、シンボルの予め定義されたアルファベットから選択される。例えば、アルファベットは、2つの値0及び1から成ることがあり得る。したがって、そのようなアルファベットを使用するメッセージは、ビットのシーケンスである。シンボル(0及び1)は、相互に異なる頻度でメッセージ内に発生し得る。言い換えれば、シンボル確率は不均一であり得る。実際に、分布が均一でないほど、一般的にエントロピーコーディング、特に算術コーディングによって達成可能な圧縮が高くなる。算術コーディングは、アルファベットの各シンボルについてシンボル確率を指定する、先験的確率モデルを使用する。
【0093】
アルファベットはバイナリである必要はない。むしろ、アルファベットは、例えば0~7の8個の値から成り得る。一般的に、任意のサイズを有する任意のアルファベットが使用され得る。典型的には、アルファベットは、コーディング済みデータの値レンジによって与えられる。
【0094】
メッセージを表す区間は、メッセージがコーディングされるアルファベットシンボルの確率に従って初期レンジを分離することによって取得される。
【0095】
例えば、現在の区間を最初の初期区間[0,1)とする。メッセージの各シンボルについて、以下2つの段階が実行される。
1)可能なアルファベットシンボルの各々について1つとなるように、現在の区間を部分区間に細分化する。シンボルの部分区間のサイズは、(シンボルソースの)確率モデルに従ってシンボルがメッセージにおける次のシンボルである推定確率に比例する。
2)メッセージにおいて次に実際に発生するシンボルに対応する部分区間を選択し、選択された部分区間を新しい現在の区間にする。
【0096】
第3段階として、現在の区間を他のすべての可能な区間から区別するために十分なビットが出力される。この段階は既に、段階1及び2におけるエンコーディング中に、又は、メッセージ全体のエンコーディングの後に実行され得る。メッセージの全部のシンボルについて段階1)及び2)を繰り返した後に取得される区間の長さは、メッセージにおけるシンボルの特定のシーケンスの確率でもある、個別のシンボルの確率の積に明らかに等しい。
【0097】
理論上、算術コーダは、0から1の区間を再帰的に分離して任意の長さのメッセージをエンコーディングし、結果として、区間が徐々に小さくなる。実際には、システムは、有限のビット深度によって限定され、離散値のみが表現可能である。従って、区間が小さいほど、より高い精度の算術が必要となるであろう。また、メッセージ全体が読み取られるまで、出力は生成されない。これらの問題の両方に対する解決策は、いくつかのビットを、分かったらすぐに出力し、各出力ビットの現在の区間の長さを2倍にし、区間の(まだ)未知の部分のみを反映するようにすることであり得る。実際には、算術は、浮動小数点数又は厳密な有理数ではなく、十分に長い整数において、現在の区間を格納することによって行われ得る。
【0098】
区間[0,1)ではなく、有限レンジの整数、例えば0~255使用する、実際の使用のために改善された算術コーダの変形は、レンジコーダと称される。このレンジは、アルファベットシンボルの確率に従って分離される。これらの確率に従って全部のアルファベットシンボルを記述するべく、残りのレンジが小さくなり過ぎた場合、レンジは再正規化され得る。
【0099】
本明細書において採用される用語に関して、現在の区間は、その最小値(LOWとして示される)及びその最大値(HIGHとして示される)によって与えられる。区間の長さは、RANGEとして示される。一般的に、HIGH=LOW+RANGEであり、RANGEは、最小サイズの(区別可能な)部分区間の数で表現される。シンボルをエンコーディングするための最小レンジはBOTTOMである。この最小レンジは、もっとも可能性の低いシンボルでも少なくとも1の有効レンジを有することを確実にする。言い換えれば、BOTTOMは、全部のアルファベットシンボルに対応する区別可能な区間にレンジをなお分割できることを確実にするために、アルファベットシンボル及びそれらの確率に基づいて決定され得る設計パラメータである。
【0100】
HIGH位置は、初期最大レンジをカバーするためにいくつのビットが必要であるかを示す。BOTTOM位置は、別のシンボルをエンコーディングするための最小レンジをカバーするためにいくつのビットが必要であるかを示す。HIGH位置及び予め定められたTOP位置の間のビットの量は、ビットストリームにストリーミング(挿入)され得、コーディング済みビットになるビットの最小部分に対応する。
【0101】
図1は、算術コーディングの例示的な手順を概略的に図示する。コーディングされるメッセージは、2つの可能なシンボルA及びBを有するアルファベットにおいて提供される、アルファベットのシンボル{A,B}は、確率P(A)=2/3及びP(B)=1/3を有する。エンコーディングされるメッセージは、AABAと読める。
【0102】
最初はLOW=0であるので(段階0において、low=0)、段階0は、ここでHIGHに対応する長さRange 110を有する初期区間を示す。Rangeの下半分において、Range内の数の2進表現の先行ビットは、1 111であり、一方、Rangeの上半分において、先行ビットは0 112である。言い換えれば、初期レンジの上半分に属する、段階のいずれかにおける現在の区間は、第1先行ビット0を有し、一方、初期レンジの下半分に属する現在の区間は、第1先行ビット1を有する。ここで、例えば、初期レンジ内の任意の数(コード値)は、8ビットによって表現可能であると想定すると、レンジは0~255であり、その結果、HIGH=255である。
【0103】
段階1において、Rangeは、確率に従って、第1シンボルAをエンコーディングするために分割される。この例において、初期区間は、サイズ1/3 122(シンボルBに対応する)及び2/3 121(シンボルAに対応する)の合計レンジサイズを有する2つの区間に分離される。確率に従う分割は、初期区間が、アルファベットにおけるシンボルの数(ここでは、2つのシンボルA及びB)に等しい数の部分区間に分離されることを意味し、区間のサイズは、区間によって表されるシンボルのそれぞれの確率に比例する。メッセージシンボルAに対応する上側部分区間Range=P(A)*Rangeは次に、次の段階のための現在の区間として選択される。
【0104】
段階2において、シンボルAのレンジRange 120は、確率に従って分割される。次のメッセージシンボルはAである。メッセージA 131を記述する残りのRange=P(A)*Rangeは、ビット0でエンコーディングされるRangeの上半分内に完全に存在するので、ビット0をエンコーディング済みのビットストリームに追加することが実行される。この特定の実装例において、ビットはできるだけ早くビットストリームに追加され、分解能を2倍にするために再正規化140が実行される。ここで現在の最大レンジは、段階0の初期レンジの上半分である。この現在の最大レンジの上半分は、ビット0に割り当てられ、現在の最大レンジの下半分は、ビット1に割り当てられる。
【0105】
段階3におけるメッセージA 141はまだ明確にエンコーディングできない。なぜなら、Rangeがビット1(現在の最大レンジの対応する下半分)及びビット0(現在の最大レンジの対応する上半分)に重なり、従って、キャリー150が実行されるからである。何もストリーミングされない(どのビットもビットストリームに含められない)。Rangeは、アルファベットのシンボルの確率に従って段階4において分割される。
【0106】
ここで、エンコーディングされるメッセージは、A 151と読める。Rangeはなお、両方の可能なビットに重なり、エンコーディングされる更なるシンボルが無いので、段階5及び6において、ファイナライズ160が実行される。これは、メッセージAABAについて明確なコード0011を作成するために実行される複数の再正規化を含む。
【0107】
図2から7は、アルファベットの8個のシンボル220{0,1,2,3,4,5,6,7}が、標準正規分布についての確率密度関数PDF230に従う確率を有する、レンジエンコーダについての例を示す。シンボルは、累積分布関数CDF240によって、レンジ上にマッピングされる。エンコーディングされるメッセージは、4420と読める。エンコーディングについての最大開始レンジHIGHは、この例において、255のコード値に対応する8ビットによって表される。シンボルをエンコーディングするための最小レンジは、この例において、BOTTOM=16である。この最小レンジは、もっとも可能性の低いシンボル「0」及び「7」でも、累積分布関数が適用されるとき、少なくとも1の有効レンジをなお有することを確実にする。例えば、正規分布は、8個のシンボルあたりの最小区間の以下の数、すなわち、1,1,2,3,4,2,2,1をもたらす。
【0108】
図2は、初期レンジ210 Range=HIGH=255=1111 1111.bであることを図示し、ここで、bは、数の2進表現であり、ガウシアン確率密度関数PDF230に従って、アルファベットのシンボル220上にマッピングされる。Rangeの区分化は、累積分布関数CDF240から取得される。これは、エンコーディングされるメッセージの第1シンボル、すなわち「4」が、下端点250Low=71=0100 0111.b、及び、Range=128に対応する、除外される上端点260=Low+Range=199=1100 0111.bを有する区間におけるコード値のいずれかによって表されることを示唆する。合計=定数=16 270は、1/16の動作精度を示唆する。これは、もっとも可能性の低いシンボルに割り当てられるサブレンジが現在のレンジの1/合計=1/16であることを示す。合計270は累積分布関数によって決定される。
【0109】
この区間の2進表現は、HIGH、TOP、及びBOTTOM位置の指示と共に図7Aにおいて示される。HIGH位置740は、初期最大レンジ(この場合8)をカバーするためにいくつのビットが必要であるかを示す。BOTTOM位置760は、別のシンボルをエンコーディングするための最小レンジ(この場合4)をカバーするためにいくつのビットが必要であるかを示す。HIGH位置740及び予め定められたTOP位置750の間のビットの量は、ビットストリームにストリーミング(挿入)され得、その後コーディング済みビットになるビットの最小部分に対応する。図1を参照して上で説明される算術コーディングについては、HIGH位置740及びTOP位置750の間に1ビットのみがある。この例のレンジコーディングについては、HIGH位置740及びTOP位置750の間に2ビットがある。図7A、(及び図7B~7D)において、区間720a~dの最小値及び区間710a~dの最大値は、バイナリで表される。これは実際には、現在の区間、従って、エンコーディングの現在の結果を格納することを目的として使用される2つのレジスタに対応し得る。
【0110】
図3において、累積分布関数CDF340は、Low=71から開始するRange=128に適用され、アルファベット220のシンボルをレンジ上にマッピングする。メッセージの次のシンボルは「4」である。これは、メッセージ44を表す新しい現在の区間350~360をもたらす。図7Bに示されるこの区間は、新しい下限(現在の最小値)720b Low=106=0110 1010.b及び新しい上限(現在の最大値)710b Low+Range=170=1010 1010.bを有する。新しいRange 320は64に等しい。
【0111】
図4及び図7Cは、エンコーディング手順の次の段階を示す。Range 320はなお、BOTTOMより大きいので、このレンジは、累積分布関数440に従って再び分割される。これにより、シンボル2について、Low=111 =0110 1111.bのLow値720c、及び、Range=4 410が生じる。従って、メッセージ442は、Low~Low+Range=115=0111 0011.b 710cのレンジによって表される。
【0112】
HIGH及びTOP位置の間の2ビット730は等しいので、それらは、コーディング済みビットとしてストリーム731に出力され得る。図7Dを参照されたい。
【0113】
図5は、Range=4 410がBOTTOM=16より小さく、従って、再正規化手順が必要であるので、レンジ上へのシンボルの適切なマッピングが可能でないことを図示する。図7Dは、新しいRangeがBOTTOMより大きい又はそれに等しくなるまで、全部のビット表現が左にシフトされることを示す。従って、それが新しいRange=(4<<2)=16 610に到達する。新しい上限710eが、2回の左シフトの後に、現在のもの710dから取得される。既にストリームLow=188=1011 1100.b 720dの一部である、2つのコーディング済みビットを除いて、同一のシフトがLowに適用される。
【0114】
ここで、メッセージ442は、444=01 1011 1100.b及び460=01 1100 1100.bの間の値のいずれかによってエンコーディングされる。
【0115】
図6は、最後のシンボル「0」のエンコーディングを示す。確率分布は、区間のより低い値Low=188=1011 1100.b 650及びRange=1 620を生じさせる。エンコーディングされるシンボルが更に無いので、Low及びRangeは、(コーディング済みビットと共に)エンコーディングメッセージを表す末尾ビットのレンジ区間を記述する。一般的に、区間からの任意の値が、区間を、ひいては、コーディング済みメッセージ(シンボルのシーケンス)も表すために使用され(ビットストリームに含まれ)得る。従って、末尾ビットは、この最終レンジ区間から恣意的に選択され得る。本例において、Range=1 620は、末尾ビットについての単一の値、すなわち、Low=188=1011 1100.b 650を生じさせる。従って、メッセージ4420は、末尾ビットをコーディング済みビットに付加することによってエンコーディングされ、結果として、コーディング済みの値444=01 1011 1100.bがもたらされる。
【0116】
算術デコーディング
図8は、例示的なデコーディングプロセスを示す。デコーダは、コーディング済みの値(ビット)を順次に受信する。受信されたコーディング済みの値820は、全Range=HIGH=255 810内にある。確率分布関数は、デコーダ側において既知であり、従って、累積分布関数830によるレンジ上へのシンボル220のマッピングは既知である。デコーダは、このマッピングの逆を知らないので、従って、シンボルの決定には検索プロセスが必要である。デコーダは、もっとも可能性の高いシンボル「4」を選択することによって、エンコーディングされたシンボルについての第1推測を行い840、このシンボルに対応するレンジのLow値841を計算し、受信されたコーディング済みの値820がこのLow値841より高いかどうかをチェックする。
【0117】
受信されたコーディング済みの値820は、第1推測840のLow値841より小さいので、次の推測850は、レンジ内のより低い値にマッピングされるシンボル、すなわちシンボル「0」、「1」、「2」、又は「3」の1つである。シンボルの残りの区間の概ね中央においてLow値を選択することは、より速いデコーディングプロセスをもたらす。なぜなら、正確なシンボルを取得するために必要な段階が少ないからである。この例において、比較のために選択される次のLow値851はシンボル「2」に対応する。
【0118】
シンボル「2」のテストは、受信されたコーディング済みの値が、シンボル「2」をエンコーディングするレンジのLow851より高いことを生じさせる。従って、受信されたコーディング済みの値は、シンボル「2」又は「3」を表し得る。最終チェック860は、「3」に対応するレンジのLow値861が、コーディング済みの値820より高いことを明らかにする。そのために、受信されたコーディング済みの値820はシンボル「2」としてデコーディングされる。
【0119】
複数のチャネルのエントロピーコーディング
図13は、単一エンコーダ1320のスキームを示す。ここで、用語「単一エンコーダ」は、エンコーダが直列に動作する、すなわち、入力を並列ではなく順次にエンコーディングするという事実を指す。入力データは、複数のチャネル1310から成り得る、又は、それらを含み得る。従って、この例示的エンコーディングプロセスにおいて、チャネルの各々の部分は、順次にエンコーディングされる。チャネル1330の各々からの第1部分サイズの部分がエンコーディングされ(異なるチャネルからの同一の第1サイズの部分の多重化をもたらす)、続いて、チャネル1340の各々からの第2部分サイズの部分がエンコーディングされる(異なるチャネルからの同一の第2サイズの部分の多重化をもたらす)。最後の部分のエンコーディング後にエンコーダに残る末尾ビット1350は、主な単一ストリームの後部に付加される。
【0120】
単一(又はシングルコア)エントロピーエンコーダにおいて、コーディングの最後に1つのファイナライズ段階のみがあり、アラインされたバイトにするためにストリームは0ビットによってパディングされる。余分な数ビットをシグナリングすることに問題は無い。しかしながら、そのようなエンコーディングを並列化すること、また、それに対応して、デコーディングを並列化することは難しい。
【0121】
図14は、並列(例えばマルチコア)エンコーダ1420の例示的スキームを示す。入力データチャネル1410の各々は、コーディング済みビット1430~1433及び末尾ビット1440~1443を含む個々のサブストリームにエンコーディングされ得る。サブストリーム1450の長さはシグナリングされる。
【0122】
並列処理実装において、ビットストリームは、最終段階において連結される複数のサブストリームから成る。サブストリームの各々はファイナライズされる必要がある。この理由は、1つのサブストリームのエンコーディングが(従って、デコーディングも)、別の1又は複数のサブストリームの前のエンコーディング(又はデコーディング)を必要としないように、サブストリームが互いに独立してエンコーディングされるからである。
【0123】
エントロピーエンコーディング、特に算術エンコーディングのファイナライズは、末尾ビットの1又は複数をビットストリームにエンコーディングすること、及び/又は、最も近いバイト境界、又は、ビットの予め定義された量の境界までパディングすることを含み得る。しかしながら、複数のサブストリームが並列にエンコーディングされるとき、パディングは、大量の無意味なパディングビットの含有をもたらし得る。この問題は、各スレッドにおける末尾ビットの数が最も近いバイト境界に丸められない場合に解決され得るが、上位先行ビットは、末尾ビットの間で決定され、それらの量はビットストリーム内で指定される。
【0124】
これは図15に例示的に示され、ここで、末尾ビット1540~1543は、コーディング済みデータ1530~1533の後に直接的に、ビットストリーム1570に追加される。末尾ビット1560の長さは、ビットストリーム1570にも含まれる。この例示的実施形態におけるマルチコアエンコーダは、複数の入力データチャネル1510の部分を、当該部分を複数のサブストリームにエンコーディングする前に、多重化し、場合によりシャッフルする。
【0125】
サブストリームを生成するための完全な部分多重化は、サブストリームのエンコーディング前に形成される必要がないことに留意されたい。反対に、エントロピーエンコーダは、異なるチャネルから部分を部分ごとに直接受信し、それらを処理してサブストリームにし得る。シャッフルという用語は、多重化内(また、結果として、多重化をエンコーディングした後のサブストリーム内)の部分のシーケンス(順序)を指す。
【0126】
入力データチャネルは、ニューラルネットワークによっていくつかのデータを処理することによって取得されるチャネルを指し得る。例えば、入力データは、ニューラルネットワークの出力チャネル又は潜在表現チャネルなどの特徴チャネルであり得る。実装例において、ニューラルネットワークは、ディープニューラルネットワーク、及び/又は、畳み込みニューラルネットワーク、又は同様のものであり得る。ニューラルネットワークは、(静止又は動画)画像を処理するように訓練され得る。処理は、画像エンコーディング及び再構築、又は、物体認識、分類、セグメンテーション又は同様のものなどのコンピュータビジョンについてのものであり得る。一般的に、本開示は、任意の特定の種類のタスク又はニューラルネットワークに限定されない。本開示は、ニューラルネットワークのチャネルのエンコーディング及びデコーディングに容易に適用可能であるが、それは、そのような適用に限定されない。むしろ、本開示は、概してデータの任意のソースとして理解される、複数のチャネルから来る任意の種類のデータをエンコーディングするために適用可能である。また、チャネルは、ソースデータの前処理によって提供され得る。
【0127】
図18は、異なるサイズを有する、Ch0、Ch1、Ch2、及びCh3によって示される、入力データチャネル1810の前処理を、それらの対応する確率分布1820(ProbCh0、ProbCh1、ProbCh2、及びProbCh3として示される)と共に例示的に示す。ここでのサイズという用語は、チャネルのビット、シンボル、又は要素の数(量)を指す。一般的に、ニューラルネットワークチャネルなどのチャネルは、縦及び水平などのより多くの次元を有し得るが、これらは典型的には、チャネル要素について直列的に(順次に)実行されるエントロピーコーディングにおいて役割を果たさない。エントロピーコーディング及びチャネルタイプに応じて、エンコーディングは、チャネルビット、チャネルシンボル、又は一般的に、チャネル要素に基づき得る(例えば、確率モデルが提供され得る)。しかしながら、本開示はまた、チャネルを1より多くの次元の同一サイズの新しいチャネルに分離することに適用可能であり得る。
【0128】
異なるサイズのこれらの入力チャネル1810は、事前処理され、同一サイズ1830のチャネルが取得される。従って、必要なサイズより大きい入力チャネルは分離され得る1812。図18から分かるように、例えば、チャネルの少なくとも1つ(ここでは、2つのチャネルCh1及びCh2)は、2つのチャネル(例えば、ch0a及びch0b、並びに、ch2a及びch2b)に分離される。分離は、任意の想定される方式で生じ得る。例えば、チャネルがn個に分割される(nは、連続する部分より大きい整数である)。代替的に、部分は連続せず、むしろ、チャネルからの各シンボル又は各k個のシンボルを、1つの又は新しいチャネルに繰り返し割り当てる(チャネル部分を新しいチャネルにインターリーブする)ことによって形成される。
【0129】
分離されるチャネルCh0及びCh2の対応する確率分布は、同一サイズの新しいチャネルch0a、ch0b、ch2a、及びch2bに適合される。言い換えれば、新しいチャネル(例えば、ch0a及びch0b)は、それらが導き出された元のチャネル(例えば、Ch0)の分布とは異なる分布を有し得る。
【0130】
チャネル(例えば、Ch3)が、上記同一サイズより小さい場合、それは、0 1813でパディングされ得、結果として、分離後に同一サイズの新しいチャネルをもたらす。代替的に、パディングは、分離後に実行され得る。例えば、分離チャネルの最後の部分が同一サイズより小さい場合、それは、図18に示されるように0でパディングされ得る。しかしながら、パディングは、最後の新しいチャネルのみで行われる必要はなく、より多くの新しいチャネルに挿入され得、例えば、新しいチャネルの間に分散される。
【0131】
例えば、チャネル(Ch0及びCh2など)がn個の新しいチャネルに分離されるが、nによって割り切れない(例えば、図18の場合、2によって割り切れない)サイズを有し得る。そのような場合、チャネル(Ch0又はCh2)からのデータのみを用いて同一サイズのn個のチャネルを形成することが可能でない。この問題を克服するべく、当該チャネル又はn個の新しいチャネルのうちの1又は複数は、パディングされ得る。いくつかの実装例において、パディングについての追加の理由があり得ることに留意されたい。例えば、チャネル(Ch0又はCh2)からのデータは、ビットを基礎とするのではなく、例えば、バイト又はシンボルなどのシンボル又は他のサイズを基礎として、新しいチャネル(ch0a、ch0b、ch2a、及びch2b)に分離され得る。そこで、ビットの単位ではなく、シンボルの単位のチャネルサイズが、nによって割り切れる必要がある。
【0132】
0によるパディングは単に1つの例示的な選択肢である。パディングは、任意の値のビット又はシンボルによって実行され得る。それは、チャネルビット又はシンボル、又は同様のものの反復によってパディングされ得る。
【0133】
デコーダ側において、新しいチャネルはデコーディングされる。異なるサイズのチャネル(例えばCh0及びCh2)を形成するべく、パディングは、デコーダ側で除去されるものとする。これを達成するべく、デコーダは、これらの前処理段階に関する情報を必要とする。例えば、デコーダは、異なるサイズのチャネルのサイズの知識に基づいてパディングを除去するよう構成されている。例えば、チャネルサイズは、規格によって定義され得るか、又は、サイド情報又は同様のものによって構成され得る。前処理段階に関する情報はまた、新しいチャネルのサイズを含み得る。
【0134】
前処理に続いて、同一サイズのチャネルの各々は部分に分割される。第1段階において、第1サイズの部分1840は、チャネルの各々から取得され、(場合によっては対応する分布を有する)これらの部分は多重化される。この多重化は、第1サブストリーム1530へのエントロピーエンコーディングである。更に、それぞれのチャネルからの第2サイズの部分1841は多重化され、その後、第2サブストリーム1531にエンコーディングされる。第1サイズ及び第2サイズは同一であり得るか、又は、異なり得る。エントロピーエンコーディングは、第1サブストリーム1530を生成するために、及び、第2サブストリーム1531を生成するために、別個に実行される。上で言及されたように、チャネル部分は、それぞれの確率モデルサイド情報と共に多重化され得る。例示的な実施形態において、そのようなサイド情報は、超事前分布サブネットワークを有する、変形自動エンコーダによって取得された超事前分布に対応し得る。しかしながら、確率モデルが、チャネル部分と共に多重化されたサイド情報として提供される必要がない実施形態及び実装があり得る。例えば、確率モデルは、前にエンコーディング及び/又はデコーディングされたデータ又は同様のものに基づいて、コンテキスト適合方式で更新され得る。
【0135】
各チャネルを別個にエンコーディングするのではなく、異なるチャネルからの部分を多重化及びエンコーディングすることにより、完全なサブストリームをより速く生じさせる、及び/又は、個々のサブストリームの長さを制御する、例えば、サブストリームのより均一な長さを取得する可能性を提供する。これにより、複数のサブストリームについて並列にエントロピーエンコーディング及び/又はエントロピーデコーディングを実行する可能性が開かれる。
【0136】
本開示は、同一サイズの部分のみ、又は、第1サイズ及び第1サイズとは異なる第2サイズの部分を提供することに限定されない。加えて、他のサイズ、例えば、第3サイズ1842及び/又は第4サイズ1843の部分が第1サブストリーム又は第2サブストリームに含まれ得る。この第3サイズは、第1サイズ又は第2サイズに等しいことがあり得る。これは、図18において図示され、ここで、第iチャネルchは、4個の部分、すなわち、部分.i0、部分.i1、部分.i2、及び部分.i3に分割される。同一サイズの部分における全部のチャネルを分割し、次に、異なるチャネルからの部分を含むサブストリームを形成することによって、サブストリームサイズが制御され得る。これは動的区分化と称され得る。
【0137】
例えば、個々のサブストリームは、より多くの部分を含むことよって、それらの長さを延長でき、所望の長さになお調節できる。第1サブストリーム及び第2サブストリームを形成するための部分の多重化は、同一サイズを有し得るが、エントロピーエンコーディングの後に、第1サブストリーム及び第2サブストリームは異なるサイズを有し得る。従って、例えば、多重化に含める部分のサイズ及び/又は数を構成することによって、サブストリームサイズを適合してそれらの相違を低減することが望ましいことがあり得る。例えば、より長い個々のサブストリームが少ない場合、より少ない長さ指示がシグナリングされる必要があるか、又は、より少ないパディングが必要とされる。
【0138】
エントロピーエンコーディングは算術エンコーディング又はレンジエンコーディングであり得る。これらの場合において、エンコーディングは、コーディング済みビット1530~1533及び(存在する場合)末尾ビット1540~1543をもたらす。これらの末尾ビットは、最後の部分のエンコーディング後のエンコーダのステータスである。本開示は、コーディング済みビット及び末尾ビットをビットストリームに別個に組み込むことに限定されないことに留意されたい。全部のビットをビットストリームにコーディング済みビットとして出力するエンコーダがあり得る。独立のエンコーディング及びデコーディングに基づく本サブストリームは、そのようなエンコーダ及びデコーダにも適用可能である。
【0139】
サブストリームは、それぞれのサブストリームの長さを示すサブストリーム長指示1550と共にビットストリーム1570に多重化される。
【0140】
図15に示されるように)実施形態において、サブストリーム長指示1550は、ビットストリーム1570内においてそれぞれのサブストリームに先行する。加えて、第2サブストリーム長指示はまた、第1サブストリーム1530に先行し得、すなわち、複数のサブストリーム長指示は連結され、複数のサブストリームの前にビットストリーム1570に含まれる。複数のサブストリームは、例えば、1つの画像又は画像部分、又は、予め定められた数の画像、又は、チャネルデータの別のコンテナに関連する、チャネルから生成されたサブストリームの一部又は全部であり得る。複数のものにサブストリームがいくつ含まれるかも、構成可能であり得るか、又は、同一サイズのチャネルの数に対応し得るが対応する必要はない予め定義された数に固定され得る。
【0141】
加えて、末尾ビットは、長さ指示と共にシグナリングされ得る。各サブストリームに末尾ビット、すなわち第1末尾ビット及び第2末尾ビットがある。従って、第1末尾ビット長指示及び第2末尾ビット長指示がビットストリーム1570に含まれ得る。末尾ビット長指示1560は、ビットストリーム1570内においてそれらのそれぞれのサブストリームに先行し得る。第2末尾ビット長指示はまた、第1サブストリーム1530に先行し得る。従って、連結された末尾ビット長指示1560は、第1サブストリーム1530に先行する。サブストリーム長指示及び末尾ビット長指示の順序は、予め定義され、その結果、エンコーダ及びデコーダの両方は、適合的にビットストリームを形成及びパースすることが可能である。
【0142】
これらの長さ指示の全部をビットストリームに含めることにより、個々のサブストリーム及び/又は末尾ビットのパディングを回避する。特に、いくつかの実装において、パディングは、複数のサブストリームの後に実行され得、対応する指示は、ビットストリームに含まれ得る。しかしながら、ビット又はシンボルの特定のラスタへのそのようなアライメントを必要としないビットストリーム構造又はプロトコルがあり得るので、本開示は、パディングを必要としない。
【0143】
複数のサブストリームについての指示を集中させることに代えて、実施形態において、第1サブストリーム1540の末尾ビットは、第1サブストリーム1530に続くビットストリームに含められ得、第2サブストリーム1541の末尾ビットは、ビットストリーム1570内において第2サブストリーム1531に続き得る。このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示のバッファリングを必要とすることなく、サブストリームの即時エンコーディング又はデコーディングを可能にすることであり得る。更に、第1末尾ビット1540は第2サブストリーム1531に続き得る。
【0144】
バイト、ワード、又はダブルワード、又は同様のものなど、ビットの予め定められた量の整数倍と一致するようにビットストリーム長をアラインするべく、上記の例示的実施形態のいずれかのように構築されたビットストリーム1570は、パディングされ得る。そのような手法は、例えば、ネットワーク適応層ユニット又は他のパケットへのカプセル化などの更なる処理のために適切にアラインされたビットストリームを提供し得る。
【0145】
複数のチャネル1510のデータは、例えばビットであるシンボルから成る。第1サブストリーム1530に含まれる全部の部分、及び、第2サブストリーム1531に含まれる全部の部分は、これらのシンボルの整数K倍であり得、Kは1より大きい。
【0146】
サブストリームサイズのより均一な分布を達成するべく、部分はシャッフルされ得る。シャッフルは、図18を参照して既に言及された。それは、エンコーディング及びデコーディング側で同期的に実行される部分のインターリーブに対応し、すなわち、エンコーディング及びデコーディング側で同一の規則を使用して、エンコーディング及びデコーディングの間の適合性を確実にする。シャッフル方法は、予め定義された方法のセットから選択され、その後、第1サイズの部分及び第2サイズの部分の順序を指定するために適用される。部分1860(例えば、部分0a0、部分0b0、部分1a0、部分2a0、部分2b0、及び部分3a0)は同期的にシャッフルされる。図18における例示的スキームは、部分の巡回置換1850を示す。また、それぞれの部分に関連付けられた、対応する確率分布1861(例えば、Prob prt.0a0、Prob prt.0b0、Prob prt.1a0、Prob prt.2a0、Prob prt.2b0及びProb prt.3a0)は、エントロピーコーディング(例えば算術コーディング)のために適用される。従って、部分及び関連付けられた確率部分(モデル)は、同期的にシャッフルされるものとみなされ得る。
【0147】
シャッフル(及び、場合により、シャッフル方法選択)は、エンコーディングされる部分に対して繰り返し実行され得、エンコーディングされた第1サブストリーム及びエンコーディングされた第2サブストリームの間、一般的に、サブストリーム間の長さの差を経時的に低減する。したがって、シャッフル方法は、現在の(例えば、第1又は第2)サブストリームの長さ、及び、過去のサブストリームの長さに基づく統計値の間の差、及び/又は、現在のサブストリームの長さ、及び、過去のサブストリームの長さに基づく統計値の間の差を考慮し得る。そのようなシャッフル方法は、部分の任意の恣意的なシャッフル1852、すなわち、任意の可能な並び替えをもたらし得る。
【0148】
これは、過去のサブストリームの長さの分布を取得するべく、過去のサブストリームの統計測定を収集することを含み得る。この分布は、エンコーダ及びデコーダ側上で同時に取得及び使用され得る。なぜなら、両方の側が以前に同一のサブストリームを処理したからである。
【0149】
統計値は例えば、過去及び/又は現在のサブストリームの長さの推定された平均値、中央値、最小値、又は最大値、又は、サブストリームの長さの増大の速度、又は、サブストリームの長さの減少の速度、又は、それらの組み合わせ、又は、別の統計測定(推定量)に基づき得る。
【0150】
エントロピーエンコーディングが算術エンコーディングである場合、シャッフル方法はまた、算術エンコーディングプロセスにおいてレンジ区間の現在の状態を考慮し得る。
【0151】
レンジ区間の現在の状態はまた、サブストリーム長の詳細情報を提供し得、特定のチャネルに基づくサブストリームの増大の速度の推定を考慮し得る。特に、レンジ区間の現在の状態が小さいとき、それは、サブストリーム長がより大きいことの指示であり、逆も同様である。そのような増大の推定に基づいて、適切なシャッフル方法が選択され得る。
【0152】
上で言及されたように、適切なシャッフルは、以下の例において図示されるように、いくつかの利点を提供し得る。ここで、シャッフルはチャネルの循環ローテーション(巡回置換)であり得ると想定する。この例では、サブストリームサイズ(ここでは長さとも称される)の増大の速度がそれぞれ異なる3個のチャネルCh1、Ch2、Ch3がある。サブストリームは、Ch1からの部分あたり10バイト、Ch2からの部分あたり2バイト、Ch3からの部分あたり20バイト増大する。従って、まず3つの部分を並列にサブストリームS1、S2、及びS3にシャッフル無しでエンコーディングした後に、以下のストリーム長が達成される:
各チャネルからの第1部分 が、Ch1、Ch2、及びCh3の順序で、シャッフル無しでエンコーディングされる。この結果、S1、S2、及びS3のそれぞれについて、3つのそれぞれ並列の10、2、20バイトのストリームサイズがもたらされる。
第2部分がCh1、Ch2、及びCh3の同一順序で、シャッフル無しでエンコーディングされる場合、3個のチャネルの各々からの第2部分を含めた後に、20、4、及び40バイトの並列ストリームサイズが達成される。
第3部分がCh1、Ch2、及びCh3の同一順序で、シャッフル無しでエンコーディングされる場合、3個のチャネルの各々からの第3部分を含めた後に、30、6、及び60の並列ストリームサイズが取得される。
【0153】
この例において分かるように、並列サブストリームは、長さが大きく異なる。これは、いくつかの適用に対して望ましくないことがあり得る。この状況を改善するべく、シャッフルが実行され得る。特に、各チャネルから部分が取得される順序が変更され得る。
【0154】
同一の増大速度を有する、上で言及されるものと同一のチャネルCh1、Ch2、及びCh3を想定し得る。チャネル順序Ch1、Ch2、Ch3の循環シフトによるシャッフルが実行される場合、以下の結果がもたらされる。
第1部分が、ここで上の例と同一順序で3個のチャネルから取得される。すなわち、順序はCh1、Ch2、Ch3である。この結果、10、2、及び20バイトの同一の並列ストリームサイズがもたらされる。
第2部分が、シャッフルされた順序で、特に、循環シフト(右に1シフト)された順序、Ch3、Ch1、及びCh2で取得される。この結果、30、12、及び22バイトのそれぞれのストリームサイズがもたらされる。これらのストリームサイズは、前の段階からの長さ10、2及び20バイトのストリームに、シャッフルされたチャネルに対応する20、10、及び2のサイズを追加することによって取得される。見て分かるように、第2部分の後に、30、12及び22をシャッフルした後のサイズは、20、4、及び40バイトをシャッフルしない前の例からのサイズより低い変動を示す。
第3部分が、この例では、繰り返される右への巡回シフトによって、再びシャッフルされた順序で取得され、結果として、チャネルCh2、Ch3、及びCh1の順序になる。結果として得られる、3つの並列ストリームのストリームサイズは32、32、及び32である。このサイズは、先行する段階(第2部分の追加)のストリームサイズ30、12及び22バイトに、それぞれ2、20及び10バイトを更に追加する結果である。見て分かるように、第2シャッフルの後に、(上で説明されるサブストリームに対応する)並列ストリームの長さが均等化される。
【0155】
実際の適用において、増大はそこまで容易ではなく、正確に推定可能でないことがあり得る。特に、必ずしも上の例のように定常でない。それでも、シャッフルは、サブストリーム長(サイズ)の均等化を改善し得る。それを行うべく、増大の速度の推定がパフォーマンスに寄与し得る。上で説明されるように、(エンコーディングされた)サブストリームの増大は、前にコーディングされた(デコーディングされた)部分又はサブストリームに基づいて推定され得る。しかしながら、レンジ区間の現在の状態によって、更により近い指示が提供され得る。レンジ区間が大きい場合、サブストリームの長さがより小さく、増大の速度への寄与が低いことが示される。レンジ区間が小さい場合、サブストリームのより大きい長さが示され、これは、増大の速度へのより大きい寄与に対応する。言い換えれば、レンジ区間の長さは、ストリームの増大の速度に反比例する。比例は必ずしも線形でない。
【0156】
したがって、エンコーディング及びデコーディングの間に、シャッフル機構が適用され得る。シャッフルは、上で説明されたものと同様であり得る。例えば、k番目のチャネルにおける各チャネルからの第k部分をエンコーディング(又はデコーディング)した後に、各チャネルからの第(k+1)部分が、(k-1)番目のチャネルにおいてエンコーディングされる。実装例において、(k+1)番目は、k番目を巡回シフトすることによってk番目から取得される。巡回シフトは、右又は左であり得る。それは、シフトが1チャネルである場合に有利であり得る。しかしながら、本開示は、それに限定されず、シフトのステップは1とは異なり得る。上で既に言及されたように、シャッフル順序はまた、具体的に選択されシグナリングされ得る。
【0157】
別の例示的実施形態において、より大きい長さ及びより高い増大速度を有するサブストリームにエンコーディングされるチャネルの部分は、より小さい長さ及びより低い増大速度を有するサブストリームにエンコーディングされるチャネルの部分と交換、すなわちシャッフルされ得る。特に、方法は、サブストリームの長さ、及び、サブストリームの長さの増大の速度を決定し得る。この決定の結果に基づいて、方法は部分をシャッフルする。上の例に関して、これは、チャネルCh2及びチャネルCh3の交換に対応する。この交換は、より高い増大の速度(部分あたり20バイト)に寄与するCh3からの部分を、より小さい長さのサブストリームS2にエンコーディングする。より小さい増大の速度(部分あたり5バイト)に寄与するCh2からの部分は、より大きい長さのサブストリームS3にエンコーディングされる。これは、S2の増大の増加、及び、S3の増大の低減をもたらす。従って、エンコーディングされたサブストリームの間の長さの上で言及された差は低減され得る。実際の適用において、増大は、上の例のように必ずしも定常でないことがあり得る。
【0158】
第1サブストリーム1530及び第2サブストリーム1531へのエントロピーエンコーディングは、例えば、図14及び15におけるマルチコアエンコーダ1420、1520の1つによって並列に実行され得る。いくつかの実装において、エントロピーエンコーディングの一部のみが並列に実行され得る。
【0159】
デコーディング方法は、第1サブストリーム1530及び第2サブストリーム1531を多重化部分にエントロピーデコーディングすることを伴う。エントロピーデコーディングは、第1及び第2サブストリームについて別個に実行され得る。複数のチャネル1810は、第1サイズの部分1840及び第2サイズの部分1841を逆多重化することから取得され得る。第1サイズ及び第2サイズは同一であり得る。同一サイズ1620のチャネルは、異なるサイズ1810の複数のチャネルを取得するために後処理され得る。この後処理は、分離されたチャネルを追加(連結)することを伴う。0でパディングされたチャネルは、入力データを取得するべく、クリッピングされ、すなわち、パディングが除去される。これらの段階に関する情報は同一サイズのチャネルに含まれ得る。任意のサイズのチャネルは、ニューラルネットワークの出力チャネル又は潜在表現チャネルであり得る。
【0160】
エントロピーデコーディングは、例えば、上の算術エンコーディングのセクションにおいて説明されるような、算術デコーディング又はレンジデコーディングであり得る。しかしながら、サブストリームの形成に関する本開示は、算術エンコーダ及びデコーダの適用に限定されない。むしろ、任意のエントロピーコーディング及び/又はランレングスコーディング、又は同様のものは、チャネルデータに適用され得る。エントロピーコーディングは、コンテキスト適合性であり得る。これらの実施形態は、上で説明されたエンコーディング例に対応する。
【0161】
サブストリームは、第1サブストリームの長さを示す第1サブストリーム長指示、及び、第2サブストリームの長さを示す第2サブストリーム長指示と共にビットストリーム1570から抽出される。例えば、サブストリームは、サブストリームの長さ指示が抽出前に分かっているときに抽出され得る。
【0162】
従って、サブストリーム長指示1550は、ビットストリーム1570において、それらのそれぞれのサブストリームに先行し得る。加えて、第2サブストリーム長指示はまた、第1サブストリーム1530に先行し得る。
【0163】
サブストリームの前の連結された長さ指示をシグナリングすることによって、デコーダは、サブストリームを同時に抽出し得る。
【0164】
第1末尾ビットの長さを示す第1末尾ビット長指示及び第2末尾ビットの長さを示す第2末尾ビット長指示は、ビットストリーム1570から抽出され得る。末尾ビット長指示1560は、ビットストリーム1570内においてそれらのそれぞれのサブストリームに先行し得る。第2末尾ビット長指示はまた、第1サブストリーム1530に先行し得る。
【0165】
第1サブストリーム1540の末尾ビットは、第1サブストリーム1530に続くビットストリームに含まれ得、第2サブストリーム1541の末尾ビットは、ビットストリーム1570内の第2サブストリーム1531に続き得る。更に、第1末尾ビット1540は第2サブストリーム1531に続き得る。
【0166】
複数のチャネル1510のデータは、ビットであり得るシンボルから成る。第1サブストリーム1530からデコーディング及び逆多重化された全部の部分、及び、第2サブストリーム1531からデコーディング及び逆多重化された全部の部分は、これらのシンボルの整数K倍であり得、Kは1より大きい。
【0167】
第1サブストリーム長指示、第2サブストリーム長指示、第1末尾ビット長指示、第2末尾ビット長指示、第1サブストリーム1530、第2サブストリーム1531、第1末尾ビット1541、及び第2末尾ビット1541の抽出の後に、残りのビットがあり得る。最後の末尾ビットの抽出後にビットストリーム1570に残されたビットは、例えばネットワーク適応層ユニット又は他のパケットへのカプセル化などの更なる処理のために適切にアラインされたビットストリームを提供するべく、ビットストリーム全体1570をパディングして予め定められた数のビットの整数に一致させた結果である。残りのビットは破棄され得る。
【0168】
エンコーディングプロセスにおける部分の多重化の間に、適用されるシャッフル方法があり得る。例えば、この方法は、ビットストリームに含まれる制御情報内においてシグナリングされる。従って、デコーダは、ビットストリームからシャッフル方法指示をパースし得る。指示は、例えば、規格によって定義され得る、又は、規格に従って構成可能でありビットストリームにおいてシグナリング可能であり得るシャッフル方法のリストに対するインデックスであり得、場合によりシャッフル方法指示自体より頻度が低い。
【0169】
従って、シャッフル方法は、予め定義されたシャッフル方法の設定から決定され、第1サイズの部分1840及び第2サイズの部分1841の逆多重化に適用され得る。シャッフル方法は、サブストリーム内の部分の順序を指定する。加えて、シャッフル方法はまた、部分の長さが変動し得る実装例におけるサブストリームの部分の長さを定義し得る。いくつかの実施形態において、部分の長さは、チャネルにわたって、及び/又は、サブストリームにわたって同一であり得る。
【0170】
エントロピーデコーディングは、例えばマルチコアデコーダによって並列に実行され得る。加えて、エントロピーデコーディングの一部のみが並列に実行され得る。
【0171】
末尾ビットの操作
図9は、入力データをビットストリーム1750に算術コーディングするための例示的な方法を図示するフロー図である。エンコーディング済みのビットストリーム1750の例が図17に与えられる。
【0172】
方法は、エンコーダによって使用される初期レンジS910を初期化し得る。例えば、そのような初期レンジは、上に説明されるように、図2における初期レンジ210に対応し得る。エンコーディングは、エンコーディングされるメッセージの第1シンボルで開始し、メッセージの全部のシンボルを進み、コーディング済みビットを取得する。
【0173】
段階S920において、例えば図2から7を参照して説明されるように、メッセージからの現在のシンボルが算術コーディングを用いてコーディングされる。
【0174】
コーディングループS920~S950の後に、コーディング済みビットがビットストリーム1570に含まれる。しかしながら、エンコーダのステータスを示す末尾ビットがレジスタ内になお残る。末尾ビットを記述する区間は、最後のシンボルをエンコーディングしてコーディング済みビット1730~1731をストリーミングした後に残る現在のレンジである。コーディング済みビット1730~1731と共に算術コーディング済みデータを形成する末尾ビットは一般的に、この区間から恣意的に選択され得る。
【0175】
しかしながら、末尾ビットは、先行末尾ビット内の末尾の0の量を最大化するように選択され得る。これらの末尾の0は、ビットストリーム1750に含まれないことがあり得、従って、クリッピングされ得る。
【0176】
この区間の決定された最小及び最大値S960は、同一である最上位ビットMSBの量を含み得る。これらの同一の先行ビットは、連続する末尾ビットであり、すなわち、それらは継続的な末尾ビットのセットを形成する。これらの先行末尾ビット1740~1741の量は決定され得るS970。
【0177】
これらの同一の先行ビット及び先行末尾ビットの決定された量の指示は、ビットストリームに含められ得るS980。
【0178】
先行末尾ビットの量NumTrailingBitsは以下のように決定される。NumTrailingBits=CLZ((LOW+RANGE-1)XOR LOW)、ここで、CLZ()は、先行0の数であり、LOWは、区間の最小値であり、RANGEは、区間のレンジである。XORは、排他的論理ORの演算を示す。
【0179】
同一の先行ビット1740~1741及びそれらの量の決定についての例が図16において図示される。最後のシンボルをエンコーディングし、コーディング済みビット1730~1731をビットストリーム1750に含めた後に、エンコーダ内に16の末尾ビットが残っている。末尾ビットは、現在の最小値1610Low=1123及び現在の区間1620のレンジRange=67によって表される。図16において、これらの値は2進表現で与えられる。現在の最大値1630High-1=(Low+Range-1)=(1123+67-1)は、現在の最小値1610及び現在のレンジ1620から決定される。(High-1) XOR Low 1640は、LOW1610及びHIGH-1 1630におけるビットが同一である位置に0ビットをもたらし、そうでなければビット1をもたらす。
【0180】
この値1640内の先行0は、末尾ビット内の同一の先行ビットを示す。従って、先行0の数CLZ()は、CLZ((low +range-1)XOR low)=8をもたらす。
【0181】
この例では、8個の同一の先行ビットがある。現在の区間内の末尾ビット1650は、Low及びHigh-1において異なる第1ビットの後の全部のビットを0にすることによって、Low及びHigh-1の間の値として選択され、従って、0b.0000.0100.1000.0000 1650が生じる。
【0182】
上で言及されたように、末尾の0 1680は、Low及びHigh-1において異なる第1ビットであるビット1 1670と共にクリッピングされ得る。なぜなら、このビットは常に1であり、シグナリングされる必要がないからである。従って、この例における先行末尾ビット1660は、8ビット0000 0100によって形成される。
【0183】
先行0の決定された数は、先行ビットの量の指示に含まれる。この指示は、ビットストリーム1750内において、コーディング済みビット1730~1731及び先行末尾ビット1740~1741に先行する1720。
【0184】
しかしながら、先行末尾ビット1740~1741は、先行末尾ビット1660のすぐ後に追加される値1のビット1670と共にビットストリーム1570に含められ得る。この後部に付加されたビットは、Low及びHigh-1において異なる第1ビットである。先行末尾ビット1720の量の指示は、この場合、追加ビット1を含む。
【0185】
算術コーディングのための方法は、複数のサブストリーム上で別個に実行され得る。例示的な実施形態が図14において与えられる。上で説明された方法は、例示的に、第1サブストリーム及び第2サブストリームに適用され、第1コーディング済みビット1430a、第2コーディング済みビット1431、第1先行末尾ビット1440a、及び第2先行末尾ビット1441を生じさせる。第1先行末尾ビット1740及び第2先行末尾ビット1741が後に続く第1コーディング済みビット1730及び第2コーディング済みビット1731をビットストリーム1750に挿入することによって、ビットストリーム1750が、図17に概略的に図示されるこれらのピースから形成される。第1先行末尾ビット1740は、第2のコーディング済みビット1731のすぐ後に続き、パディングは必要ない。
【0186】
第1及び第2サブストリームから形成されるビットストリーム1750はまた、第1コーディング済みビット1710及び第2コーディング済みビット1711の長さ指示を含み得る。これらの第1及び第2長さ指示1710~1711はそれぞれ、ビットストリーム1750内においてコーディング済みビット1730~1731に先行し得る。
【0187】
加えて、第2長さ指示1711はまた、第1コーディング済みビット1730に先行し得る。これは図17において例示的に示される。長さ指示1710~1711は、コーディング済みビット1730~1731の各々について連結され、コーディング済みビット1730~1731の前のビットストリームに含められる。
【0188】
第2先行末尾ビットの量の指示1721は、ビットストリーム1750内において第1コーディング済みビット1730に先行し得る。図17における例は、第1コーディング済みビット1730~1731がすぐ後に続く、連結された指示1720~1721を含む。
【0189】
例えばワード又はダブルワードであり得る、バイトの予め定められた量の整数倍と一致させるようにビットストリーム長をアラインするために、上の例示的な実施形態のいずれかのように共に繋がれたビットストリーム1750はパディングされ得る。
【0190】
第1及び第2サブストリームの算術エンコーディングは、例えば、図14及び15におけるマルチコアエンコーダ1420、1520の1つによって、並列に実行され得る。いくつかの実装において、算術エンコーディングの一部のみが並列に実行され得る。
【0191】
上で言及されたように、算術エンコーディングの方法は、レンジコーディングとして実現され得る。このレンジコーディングは、予め定義された合計レンジを有し得;メモリの予め構成されたサイズは、合計レンジを表すビットの数(合計レンジのlog_2)に等しいか、又は、それより大きい。
【0192】
メモリは、現在のレンジ区間の最小値及び最大値を保持し得る。例えば、有限のレジスタにおけるそのような最小値は、図7A図7Dにおける2進表現720cに対応し得、有限のレジスタにおけるそのような最大値は、2進表現710cを有し得る。エンコーディングループの1又は複数の反復の後に、安定ビットがあり得、これは、現在の最小値及び現在の最大値の2進表現のMSBにおいて同一の値を有する連続ビットである。これらの安定ビットの予め定められた量は、メモリからビットストリームに移動させられる。これは例えば、図7A図7DにおけるHIGH及びTOP位置の間の2ビットに対応する。実装例において、HIGH及びTOP位置の間に16ビットがあり得る。本発明は、これらの例のいずれかに限定されない。
【0193】
先行末尾ビットの量、及び、HIGH及びTOP位置の間の安定ビットのうちのビットの予め定義された量の間の差が予め定義された閾値より下であることが起こり得、例えば、HIGH及びTOP位置の間に16ビット、及び、15の先行末尾ビットがあり得る。この場合、先行末尾ビットをコーディング済みビットに含めることがより効率的である。したがって、末尾コーディング済みビットが先行末尾ビットから生成される。ビット1 1670が先行末尾ビット1660に追加される必要があり、ビットは、安定ビットの予め定義された数に到達するように、0でパディングされ得る。従って、末尾ビットの量の指示を伴う、多くの先行末尾ビットの高コストのシグナリングが回避される。例えば、15の先行末尾ビットの量をシグナリングするために、少なくとも4ビットが必要である。代わりに、より多くのコーディング済みビットを有し、0の先行末尾ビットをシグナリングすることは、より低コストであり得る。例えば、頻繁に発生する場合には、それらは効率的にエンコーディングされ得る。
【0194】
上で言及された、予め定義された閾値は、例えば、HIGH及びTOP位置の間のビットの量、及び、先行末尾ビットの長さを示すために使用されるシグナリングの量を考慮して、経験的に決定され得る。
【0195】
図10は、ビットストリーム1750からのデータの算術デコーディングのための例示的方法を図示するフロー図である。デコーダは、ビットストリームを受信し得S1010、そこからコーディング済みビットの長さの指示が抽出され得るS1020。コーディング済みビット1730~1731は、ビットストリームから抽出され、継続的にデコーディングされるS1040~S1060。全部のコーディング済みビットがデコーディングされるとき、先行末尾ビット1740~1741は、またビットストリームから抽出され得るS1030、それらの量の指示1720~1721に従って抽出されるS1070。先行末尾ビット1660から、完全末尾ビット1650は、デコーディングされるべく復元される必要があるS1080。先行末尾ビット1660は、末尾ビットの予め定義された最大長まで0でパディングされる。復元された末尾ビットはデコーディングされ得るS1090。
【0196】
別の実装例では、利用可能なメモリが十分ある場合、デコーディングの前にサブストリーム全体が形成され得る。コーディング済みビット及び先行末尾ビットはビットストリームから抽出される。末尾ビットは、上で説明されたように復元され得る。サブストリームについてのコーディング済みビット及び決定された末尾ビット。サブストリーム全体はその後デコーディングされる。
【0197】
しかしながら、本発明は、これらの実装例のいずれかに限定されない。
【0198】
末尾ビット1650内の同一の先行ビット1660の後に続くビット1 1670がシグナリングされなかった場合、それは、末尾ビットの決定プロセスに含まれる必要がある。ビット1 1670は、パディング1680の前の先行末尾ビット1660に付加される。
【0199】
先行末尾ビットの量の指示1720~1721は、ビットストリーム1750内において、先行末尾ビット1740~1741だけでなく、コーディング済みビット1730~1731にも先行し得る。
【0200】
算術デコーディングのための方法はまた、複数のサブストリーム上で別個に実行され得る。デコーディングのために個々のサブストリームを復元するべく、第1先行末尾ビット1740及び第2先行末尾ビット1741が後に続く第1コーディング済みビット1730及び第2コーディング済みビット1731が抽出される。第1コーディング済みビット1730及び第1先行末尾ビット1740は第1サブストリームを形成し、第2コーディング済みビット1731及び第2先行末尾ビット1741は第2サブストリームを形成する。各サブストリームについて、末尾ビットは、単一のサブストリームについて、上で説明されたように決定される。各サブストリームは個別にデコーディングされる。
【0201】
第1コーディング済みビット1730及び第2コーディング済みビット1731は、第1長さ指示1710及び第2長さ指示1720と称される、それらのそれぞれの長さについての指示と共に抽出され得る。
【0202】
コーディング済みビット1710の第1長さ指示は、ビットストリーム1750内において第1コーディング済みビット1730に先行し得、第2長さ指示1711は第2コーディング済みビット1731に先行する。加えて、第2長さ指示1711はまた、第1コーディング済みビット1730に先行し得る。
【0203】
第2末尾ビットの量の指示1721はまた、第1コーディング済みビット1730に先行し得る。
【0204】
第1コーディング済みビット1730、第2コーディング済みビット1731、第1先行末尾ビット1740、及び第2先行末尾ビット1741の抽出後、破棄され得る残りのビットがあり得る。最後の末尾ビットの抽出の後にビットストリーム1750に残るビットは、ビットの予め定められた数の整数と一致させるためにビットストリーム全体1750をパディングした結果である。
【0205】
算術デコーディングは、例えばマルチコアデコーダによって並列に実行され得る。加えて、算術デコーディングの一部のみが並列に実行され得る。
【0206】
算術デコーディングの方法は、レンジコーディングとして実現され得る。
【0207】
本開示の算術コーディングは、ニューラルネットワークの特徴マップのエンコーディング、又は、従来の画像(静止又はビデオ)エンコーディング及びデコーディングに容易に適用され得る。ニューラルネットワークは任意の目的のために、特に、画像(静止又は動画)のエンコーディング及びデコーディング、又は、モーションフロー又はモーションベクトル又は他のパラメータなどの画像関連データのエンコーディング及びデコーディングのために使用され得る。ニューラルネットワークはまた、イメージの分類、深度検出、セグメンテーションマップ決定、身分証の物体認識、又は同様のものなどの、コンピュータビジョンの適用のために使用され得る。
【0208】
上のセクションにおいて説明される複数のチャネルのエントロピーコーディングの方法は、本セクションにおいて説明される末尾ビットの操作と組み合わされ得る。第1及び第2サブストリームはそれぞれ、多重化及びエンコーディングされた部分を含む第1及び第2コーディング済みビットによって形成される。「複数のチャネルのエントロピーコーディング」において参照される末尾ビットは、先行エンコーダステータスビットである先行末尾ビットに対応し得る。先行エンコーダステータスビットの決定された量は、末尾ビット長指示において示される。
【0209】
画像コーディング内の実装
1つの可能なデプロイメントが図11及び12に見られ得る。
【0210】
図11は、本願の技法を実装するように構成されている例示のビデオエンコーダ20の概略ブロック図を示している。図11の例において、ビデオエンコーダ20は、入力201(又は入力インタフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、ループフィルタユニット220と、デコーディング済み画像用バッファ(DPB)230と、モード選択ユニット260と、エントロピーエンコーディングユニット270と、出力272(又は出力インタフェース272)とを備える。エントロピーコーディング270は、上で説明されたような算術コーディング方法又は装置を実装し得る。
【0211】
モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、及び区分化ユニット262を含み得る。インター予測ユニット244は、動き推定ユニット及び動き補償ユニット(図示せず)を含み得る。図11に示されるようなビデオエンコーダ20はまた、ハイブリッドビデオコーデックによるハイブリッドビデオエンコーダ又はビデオエンコーダと称され得る。
【0212】
エンコーダ20は、例えば、入力201を介して、画像17(又は画像データ17)、例えば、ビデオ又はビデオシーケンスを形成する一連の画像のうちの画像を受信するように構成されてよい。受信された画像又は画像データは、前処理済みの画像19(又は前処理済みの画像データ19)であってもよい。簡潔さのために、以下の説明では画像17が参照される。(特に、ビデオコーディングにおいて、現在の画像を他の画像、例えば、同じビデオシーケンス、すなわち、現在の画像も含むビデオシーケンスの以前にエンコーディングされた及び/又はデコーディングされた画像と区別するために、)画像17は、現在の画像又はコーディングされる画像とも称され得る。
【0213】
(デジタル)画像は、強度値を持つサンプルの2次元アレイ又はマトリックスであるか、それとみなされ得る。アレイ内のサンプルは、画素(画像要素の省略形)又はペルとも称され得る。アレイ又は画像の水平及び垂直方向(又は軸)におけるサンプルの数により、画像のサイズ及び/又は解像度が定まる。色の表現のために、典型的には、3つの色成分が使用される。すなわち、画像は、3つのサンプルアレイとして表され得るか、又はそれらを含み得る。RGB形式又は色空間では、画像は対応する赤、緑、青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各画素は典型的には、ルミナンス及びクロミナンス形式又は色空間、例えば、Y(場合によっては、代わりにLも用いられる)により示されるルミナンス成分と、Cb及びCrにより示される2つのクロミナンス成分とを含むYCbCrで表される。ルミナンス(又は略して、ルマ)成分Yは、明るさ又は(例えば、グレースケール画像でのような)グレーレベルの強度を表し、一方、2つのクロミナンス(又は略して、クロマ)成分Cb及びCrは、色度成分又は色情報成分を表す。したがって、YCbCr形式の画像は、ルミナンスサンプル値(Y)のルミナンスサンプルアレイと、クロミナンス値(Cb及びCr)の2つのクロミナンスサンプルアレイとを含む。RGB形式の画像は、YCbCr形式へ換算又は変換されてよく、逆も同様であり、この処理は、色変換又は色換算としても知られている。画像がモノクロである場合、この画像は、ルミナンスサンプルアレイのみを含み得る。したがって、画像は例えば、単色形式のルマサンプルのアレイ、又は、4:2:0、4:2:2、及び、4:4:4のカラーフォーマットであるルマサンプルのアレイ、及び、クロマサンプルの2つの対応するアレイであり得る。
【0214】
ビデオエンコーダ20の実施形態は、画像17を複数の(典型的には非重複)画像ブロック203に区分化するように構成されている画像区分化ユニット(図11には示されない)を備え得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)又はコーディングツリーブロック(CTB)又はコーディングツリーユニット(CTU)(H.265/HEVC及びVVC)とも称され得る。画像区分化ユニットは、ビデオシーケンスの全ての画像とブロックサイズを定義する対応するグリッドとに同じブロックサイズを使用するか、画像間又は画像のサブセット又はグループ間でブロックサイズを変更し、各画像を対応するブロックに区分化するように構成されてよい。AVCという略称は、アドバンスドビデオコーディングを表す。
【0215】
更なる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つ、いくつか、又は全てのブロックを直接受信するように構成されてよい。画像ブロック203は、現在の画像ブロック又はコーディングされる画像ブロックとも称され得る。
【0216】
画像17と同様にここでも、画像ブロック203は、画像17よりも寸法が小さいが、強度値(サンプル値)を持つサンプルの2次元アレイ又はマトリックスであるか、又は、それとみなすことができる。言い換えると、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合にはルマアレイ、又は、カラー画像の場合にはルマアレイ又はクロマアレイ)、又は、3つのサンプルアレイ(例えば、カラー画像17の場合には1つのルマアレイ及び2つのクロマアレイ)、又は、適用されるカラーフォーマットに応じた任意の他の数及び/又は種類のアレイを含み得る。ブロック203の水平及び垂直方向(又は軸)におけるサンプルの数により、ブロック203のサイズが定まる。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、又は変換係数のM×Nアレイであってよい。
【0217】
図11に示すようなビデオエンコーダ20の実施形態は、画像17をブロック毎にエンコーディングするように構成され得、例えば、エンコーディング及び予測は、ブロック203毎に実行される。
【0218】
図11に示されるようなビデオエンコーダ20の実施形態は更に、スライス(ビデオスライスとも称される)を使用して画像を区分化及び/又はエンコーディングするよう構成され得、ここで、画像は、1又は複数のスライス(典型的には重複無し)を使用して区分化又はエンコーディングされ得、各スライスは、1又は複数のブロック(例えばCTU)を含み得る。
【0219】
図11に示されるようなビデオエンコーダ20の実施形態は更に、タイルグループ(ビデオタイルグループとも称される)及び/又はタイル(ビデオタイルとも称される)を使用して画像を区分化及び/又はエンコーディングするよう構成され得、ここで、画像は、1又は複数のタイルグループ(典型的には重複無し)を使用して区分化又はエンコーディングされ得、各タイルグループは、例えば、1又は複数のブロック(例えばCTU)又は1又は複数のタイルを含み得、ここで、各タイルは、例えば、矩形形状であり得、1又は複数のブロック(例えば、CTU)、例えば、完全又は部分的ブロックを含み得る。
【0220】
図12は、この本願の技法を実装するように構成されているビデオデコーダ30の例を示している。ビデオデコーダ30は、例えばエンコーダ20によりエンコーディングされたエンコーディング済み画像データ21(例えば、エンコーディング済みのビットストリーム21)を受信して、デコーディングされた画像331を取得するように構成される。エンコーディング済み画像データ又はビットストリームは、エンコーディング済み画像データをデコーディングするための情報、例えば、エンコーディング済みのビデオスライス(及び/又はタイルグループ又はタイル)の画像ブロック及び関連するシンタックス要素を表すデータを含む。
【0221】
エントロピーデコーディングユニット304は、ビットストリーム21(又は一般にエンコーディング済み画像データ21)をパースし、例えば、エンコーディング済み画像データ21にエントロピーデコーディングを実行して、例えば量子化係数309及び/又はデコーディングされたコーディングパラメータ(図12には図示せず)、例えば、インター予測パラメータ(例えば、参照画像インデックス及び動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、及び/又は他のシンタックス要素のいずれか又は全てを取得するように構成されている。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関して記載されたエンコーディングスキームに対応するデコーディングアルゴリズム又はスキームを適用するように構成されてよい。エントロピーデコーディングユニット304は、インター予測パラメータ、イントラ予測パラメータ、及び/又は他のシンタックス要素をモード適用ユニット360に、また他のパラメータをデコーダ30の他のユニットに提供するように更に構成されてよい。ビデオデコーダ30は、シンタックス要素をビデオスライスレベル及び/又はビデオブロックレベルで受信し得る。スライス及びそれぞれのシンタックス要素に追加的に、又は代替的に、タイルグループ及び/又はタイル、ならびに、それぞれのシンタックス要素が受信及び/又は使用され得る。エントロピーデコーディングは、上で言及された算術デコーディング方法又は装置のいずれかを実装し得る。
【0222】
再構築ユニット314(例えば、加算器又は合算器314)は、再構築された残差ブロック313を予測ブロック365に加算し、例えば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、サンプル領域における再構築されたブロック315を取得するように構成されてよい。
【0223】
図12に示されるようなビデオデコーダ30の実施形態は、スライス(ビデオスライスとも称される)を使用して画像を区分化及び/又はデコーディングするよう構成され得、ここで、画像は、1又は複数のスライス(典型的には重複無し)を使用して区分化又はデコーディングされ得、各スライスは、1又は複数のブロック(例えばCTU)を含み得る。
【0224】
図12に示されるようなビデオデコーダ30の実施形態は、タイルグループ(ビデオタイルグループとも称される)及び/又はタイル(ビデオタイルとも称される)を使用して画像を区分化及び/又はデコーディングするよう構成され得、ここで、画像は、1又は複数のタイルグループ(典型的には重複無し)を使用して区分化又はデコーディングされ得、各タイルグループは、例えば、1又は複数のブロック(例えばCTU)又は1又は複数のタイルを含み得、ここで、各タイルは、例えば、矩形形状であり得、1又は複数のブロック(例えば、CTU)、例えば、完全又は部分的ブロックを含み得る。
【0225】
ビデオデコーダ30の他の変形を、エンコーディング済み画像データ21をデコーディングするのに用いることができる。例えば、デコーダ30は、ループフィルタリングユニット320なしに、出力ビデオストリームを生成できる。例えば、非変換ベースデコーダ30は、特定のブロック又はフレームのための逆変換処理ユニット312なしに、残差信号を直接的に逆量子化できる。別の実装において、ビデオデコーダ30は、単一のユニットへと組み合わされた逆量子化ユニット310及び逆変換処理ユニット312を有し得る。
【0226】
エンコーダ20及びデコーダ30において、現在の段階の処理結果は、更に処理されて、その後、次の段階に出力されてよいことが理解されるべきである。例えば、補間フィルタリング、動きベクトル導出又はループフィルタリングの後、補間フィルタリング、動きベクトル導出又はループフィルタリングの処理結果に対して、Clip又はシフトなどのさらなる演算が実行され得る。
【0227】
ハードウェア及びソフトウェアにおける実装
ハードウェア及びソフトウェアにおけるいくつかのの更なる実装が以下で説明される。
【0228】
図19~22を参照して上で説明されたエンコーディングデバイスのいずれかは、入力データをコーディング済みビット及び先行末尾ビットに算術エンコーディングすることを実行するための手段を提供し得る。これらの例示的なデバイスのいずれかにおける処理回路は、入力データをエンコーディングするように、及び、上で説明された方法に従ってコーディング済みビットの最後のビットをエンコーディングした後に、エンコーダステータスの先行末尾ビットを決定するよう構成されている。
【0229】
図19~22のいずれかにおけるデコーディングデバイスは、デコーディング方法を実行するように適合された処理回路を含み得る。上で説明された方法は、それらのそれぞれの量の指示と共にコーディング済みビット及び先行末尾ビットを抽出することを含む。末尾ビットは、先行末尾ビットから再構築され、それらは、データを取得するために、コーディング済みビットと共にデコーディングされ得る。
【0230】
まとめると、方法及び装置は、データをビットストリームにエンコーディングし、データをビットストリームからデコーディングすることが説明されている。方法は、エンコーディングプロセスの末尾ビット内に、関連する上位ビットのみを含めることによってビットストリームの長さを低減することが可能である。これらの先行末尾ビットの量は決定され、最低の量を有する末尾ビットが構築され得る。先行末尾ビットの量の指示はビットストリームに含められる。したがって、パディングは必要なく、結果として、シグナリングされる必要があるビットが少なくなる。
【0231】
実施形態によれば、同一サイズの複数のチャネルのデータをビットストリームにエントロピーエンコーディングするためのエンコーディング方法が提供され、方法は、複数のチャネルのうちのチャネルの各々からの第1サイズの部分を多重化し、その後、第1サイズの多重化部分を第1サブストリームにエンコーディングする段階;複数のチャネルのうちのチャネルの各々からの第2サイズの部分を多重化し、その後、第2サイズの多重化部分を第2サブストリームにエンコーディングする段階を含み;ここで、エンコーディングは、独立に実行される、第1サブストリーム及び第2サブストリームへのエントロピーエンコーディングである。
【0232】
各チャネルを別個にエンコーディングするのではなく、異なるチャネルからの部分を多重化及びエンコーディングすることにより、完全なサブストリームをより速く生じさせる、及び/又は、個々のサブストリームの長さを制御する、例えば、サブストリームのより均一な長さを取得する可能性を提供する。これにより、複数のサブストリームについて並列にエントロピーエンコーディング及び/又はエントロピーデコーディングを実行する可能性が開かれる。
【0233】
実装例において、エンコーディング方法は更に、異なるサイズの複数のチャネルのデータを前処理して同一サイズの上記複数のチャネルを取得する段階を含む、同一サイズの複数のチャネルを生成する段階を備える。
【0234】
任意のサイズのチャネルから同一サイズのチャネルを取得する選択肢は、異なる種類の入力データに対する方法の適用性を提供する。
【0235】
例えば、エンコーディング方法は更に、第1サブストリーム及び第2サブストリームを、第1サブストリームの長さを示す第1サブストリーム長指示、及び、第2サブストリームの長さを示す第2サブストリーム長指示と共に、ビットストリームに多重化する段階を備える。
【0236】
ビットストリームにおけるサブストリームの長さを示すことにより、異なるサイズを有するサブストリームを提供することが可能となり、従って、より柔軟なビットストリーム構成をもたらし得る。
【0237】
例示的な実施形態において、第1サブストリーム長指示は、ビットストリーム内において第1サブストリームに先行し、第2サブストリーム長指示は、ビットストリーム内において第2サブストリームに先行する。
【0238】
この特徴は、個々のサブストリームを抽出するべく、全ビットストリームをバッファリングする必要性を回避する。
【0239】
例えば、第2サブストリーム長指示は、ビットストリーム内において、第1サブストリームに先行する。
【0240】
第1サブストリームの前の連結された長さ指示を含む、このビットストリーム構造は、ビットストリームからのサブストリームのより効率的な抽出を提供し得る。
【0241】
実装例において、エントロピーエンコーディングは算術エンコーディングである。
【0242】
算術エンコーディングは、レートの低減に寄与し得る効率的なエントロピーコーディングである。
【0243】
実装例において、エンコーディング方法は更に、第1サブストリーム及び第2サブストリームを、第1サブストリームの第1末尾ビットの長さを示す第1末尾ビット長指示、及び、第2サブストリームの第2末尾ビットの長さを示す第2末尾ビット長指示と共に、ビットストリームに多重化する段階を備える。
【0244】
最後の部分をエンコーディングした後のエンコーダのステータスである末尾ビットは、サブストリームとは別個にシグナリングされ得る。これは、末尾ビットの追加的処理の可能性を提供する。
【0245】
例えば、第1末尾ビット長指示は、ビットストリーム内において第1サブストリームに先行し、第2末尾ビット長指示は、ビットストリーム内において第2サブストリームに先行する。
【0246】
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示をバッファリングすることを必要としない、サブストリームの即時エンコーディングの可能性であり得る。
【0247】
例えば、第2末尾ビット長指示は、ビットストリーム内において、第1サブストリームに先行する。
【0248】
そのようなビットストリーム構造は、ビットストリームの個々の一部のより速い抽出のための更なる可能性を提供する。
【0249】
実装例において、エンコーディング方法は更に、第1サブストリームに続くビットストリームに第1末尾ビットを付加する段階、及び、第2サブストリームに続くビットストリームに第2末尾ビットを付加する段階を備える。
【0250】
このビットストリーム構造は、別のサブストリームの抽出無しで、第1サブストリーム及び対応する末尾ビットをデコーディングすることを可能にする。
【0251】
例えば、第1末尾ビットは、ビットストリーム内において、第2サブストリームの後に続く。
【0252】
そのようなビットストリーム構造は、ビットストリームから末尾ビットを抽出する前に、個々のサブストリームのデコーディングを開始することを可能にする。
【0253】
実装例において、エンコーディング方法は更に、バイトの予め定められた量の整数倍と一致させるようにビットストリーム長をアラインするために、第1サブストリーム長指示、第2サブストリーム長指示、第1末尾ビット長指示、第2末尾ビット長指示、第1サブストリーム、第2サブストリーム、第1末尾ビット、及び第2末尾ビットを含むビットストリームを、予め定められた値を有するビットでパディングする段階を備える。
【0254】
この実装は、例えば、ネットワーク適応層ユニット又は他のパケットへのカプセル化など、更なる処理のために適切にアラインされたビットストリームを提供し得る。
【0255】
例えば、第1サイズは第2サイズに等しい。
【0256】
同一サイズの部分を使用する結果、より効率的なパフォーマンスが生じ得る。なぜなら、例えば、ハードウェア及びソフトウェア実装に好適なメモリユニットが使用され得るからである。
【0257】
実装例において、第1サブストリームに含まれる全部の部分、及び、第2サブストリームに含まれる全部の部分は、複数のチャネルの上記データのシンボルの整数K倍であり、Kは1より大きい。
【0258】
そのような手法は、ソフトウェア及び/又はハードウェアにおける効率的な実装を提供し得る。
【0259】
例えば、シンボルはビットである。
【0260】
実装例において、エンコーディング方法は更に、第1サイズの部分及び第2サイズの部分を多重化するためのシャッフル方法を選択し、その後に適用する段階を備え、ここで、シャッフル方法は、予め定義されたシャッフル方法のセットから選択され、第1サイズの部分及び第2サイズの部分の順序を指定する。
【0261】
サブストリームサイズのより均一な分布を達成するべく、部分はシャッフルされ得る。
【0262】
例えば、シャッフル方法は、第1サイズの部分に関して、第2サイズの部分の巡回置換を実行する。
【0263】
そのようなシャッフル方法により、より均一な長さのサブストリームが容易に実装され得る。
【0264】
例えば、エンコーディング方法は、繰り返し実行され、ここで、シャッフル方法は、現在の第1サブストリームの長さ、及び、過去の第1サブストリームの長さに基づく統計値の間の差、及び/又は、現在の第2サブストリームの長さ、及び、過去の第2サブストリームの長さに基づく統計値の間の差に従って選択される。
【0265】
シャッフルは、エンコーディングされる部分に対して繰り返し実行され得、サブストリームの間の長さの差が経時的に低減する。
【0266】
例えば、統計値は、推定される平均値、中央値、最小値、最大値、又は増大速度の少なくとも1つに基づく。
【0267】
これらの統計は、シャッフル、従って、サブストリームサイズを制御するための好適な手段を提供し得る。加えて、これは、ストリーミングプロセス中のより均一な負荷を可能にし得る。
【0268】
実装例において、エントロピーエンコーディングは算術エンコーディングであり、シャッフル方法は、算術エンコーディングにおけるレンジ区間の現在の状態に従って選択される。
【0269】
この方法は、算術エンコーダの区間の現在のレンジの値が、エンコーディングのための予め定められた最小レンジに近いかどうかを考慮し得る。これにより、エンコーディング中の再正規化を回避し得る。
【0270】
実装例において、エントロピーエンコーディングは、第1エントロピーエンコーダを用いて第1サブストリームを生成し、第2エントロピーエンコーダを用いて第2サブストリームを生成することを含み、第1エントロピーエンコーダ及び第2エントロピーエンコーダを用いるエントロピーエンコーディングは、少なくとも部分的に並列に実行される。
【0271】
サブストリームの並列エンコーディングの結果、全ビットストリームのより速いエンコーディングがもたらされ得る。
【0272】
例えば、チャネルは、ニューラルネットワークの出力チャネル又は潜在表現チャネルである。
【0273】
ニューラルネットワークは典型的には、同一サイズ又は少なくとも固定サイズのチャネルを提供し、これにより、これらのチャネルに対して、上記の実施形態及び例を特に好適にし、より容易に適用可能にする。
【0274】
実装例において、エントロピーエンコーディングは算術エンコーディングであり、第1サブストリーム又は第2サブストリームへの多重化部分のエンコーディングのための方法は、多重化部分をコーディング済みビット及びエンコーダステータスビットに算術エンコーディングする段階、ここで、コーディング済みビットは、サブストリームを形成する;算術エンコーディングされた入力データ区間の最小値及び最大値を決定する段階;連続するエンコーダステータスビットである、決定された最大値を表す第1最上位ビットMSB内において、決定された最小値を表す第2MSB内と同一の値を有する先行末尾ビットの量を決定する段階、ここで、末尾ビットは先行エンコーダステータスビットである;末尾ビット長指示内の先行エンコーダステータスビットの決定された量を示す段階を備える。
【0275】
完全末尾ビットではなく先行末尾ビットをビットストリームに含めることにより、ビットストリーム内のビットの量を低減し得、従って、レートを低減し、例えば、同一品質で、シグナリングされるビットの量、レートを低減する。
【0276】
例えば、先行エンコーダステータスビットNumTrailingBitsの量は、NumTrailingBits=CLZ((LOW+RANGE-1)XOR LOW)によって決定され、CLZ()は、先行0の数であり、LOWは、区間の最小値であり、RANGEは、区間のレンジである。
【0277】
先行末尾ビットの量は、例えば最も近いバイト境界に丸められるのではなく、厳密に決定され得、これにより、ビットストリーム内のビットの量が更に低減し得る。
【0278】
実装例において、ビットストリームに含める前に、先行エンコーダステータスビットに対して、1の値を有する1ビットが後部に付加される。
【0279】
そのような手法は、1値ビットを除去するために代替的に使用され得る通常の慣行に従い得る。
【0280】
例えば、算術エンコーディング中に、区間の現在の最小値及び現在の最大値は予め構成されたサイズのメモリに格納され;コーディング済みビットをビットストリームに含めることは、安定ビットのうちのビットの予め定義された量をメモリからビットストリーム内に移動させることを含み;安定ビットは、現在の最小値及び現在の最大値の2進表現のMSBにおいて同一の値を有する連続ビットである。
【0281】
2つの別個のサブストリームに対する、方法のそのような独立の適用は、並列化のための必須条件を提供する。
【0282】
実装例において、算術エンコーディング中に、先行エンコーダステータスの量、及び、安定ビットのうちのビットの予め定義された量の間の差が、予め定義された閾値より下である場合;末尾コーディング済みビットは、安定ビットのうちのビットの予め定義された量まで0が後に続く1の値を有する1ビットを後部に付加することによって、先行エンコーダステータスビットから生成され;末尾コーディング済みビットは、コーディング済みビットをビットストリームに含める前に、コーディング済みビットに含められ;0の先行エンコーダステータスビットの指示がビットストリームに含められる。
【0283】
従って、末尾ビットの量の指示を共に伴う多くの先行末尾ビットの高コストのシグナリングが回避され得る。代わりに、より多くのコーディング済みビットを有し、0の先行末尾ビットをシグナリングすることは、より低コストであり得る。
【0284】
実装例において、算術エンコーディングはレンジエンコーディングである。
【0285】
レンジエンコーディングは、限定されたレジスタ又は一般に高速メモリサイズを有するハードウェア及びソフトウェアアーキテクチャに特に好適であり得る。
【0286】
実施形態によれば、ビットストリームを同一サイズの複数のチャネルのデータにエントロピーデコーディングするためのデコーディング方法が提供され、方法は、第2サブストリームとは独立に第1サブストリームをエントロピーデコーディングする段階;第1サブストリーム及び第2サブストリームからの第1サイズの部分及び第2サイズの部分を同一サイズの複数のチャネルに逆多重化する段階を備える。
【0287】
各チャネルを別個にエンコーディングするのではなく、異なるチャネルからの部分を多重化及びエンコーディングすることにより、より均一な長さのサブストリームをデコーディングする可能性を提供する。これは、複数のサブストリームについて並列にエントロピーデコーディングを実行する可能性を切り開く。
【0288】
例えば、デコーディング方法は更に、同一サイズの複数のチャネルを後処理して、異なるサイズの複数のチャネルのデータを取得する段階を含む。
【0289】
同一サイズのチャネルから任意のサイズのチャネルのデータを取得する選択肢は、異なる種類のデータに対する方法の適用を提供する。
【0290】
実装例において、デコーディング方法は更に、第1サブストリームの長さを示す第1サブストリーム長指示、及び、第2サブストリームの長さを示す第2サブストリーム長指示と共に、第1サブストリーム及び第2サブストリームをビットストリームから抽出する段階を含む。
【0291】
ビットストリームにおけるサブストリームの長さを示すことにより、異なるサイズを有するサブストリームを提供することが可能となり、従って、より柔軟なビットストリーム構成をもたらし得る。
【0292】
例示的な実装例において、第1サブストリーム長指示は、ビットストリーム内において第1サブストリームに先行し、第2サブストリーム長指示は、ビットストリーム内において第2サブストリームに先行する。
【0293】
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示をバッファリングすることを必要としない、サブストリームの即時エンコーディング又はデコーディングの可能性であり得る。
【0294】
例えば、第2サブストリーム長指示は、ビットストリーム内において、第1サブストリームに先行する。
【0295】
サブストリームの前に連結された長さ指示を提供することは、ビットストリームの個々の一部のより速い抽出を可能にし得る。
【0296】
実装例において、エントロピーデコーディングは算術デコーディングである。
【0297】
算術エンコーディングは、レートの低減に寄与し得る効率的なエントロピーコーディングである。
【0298】
実装例において、デコーディング方法は更に、第1サブストリーム及び第2サブストリームを、第1サブストリームの第1末尾ビットの長さを示す第1末尾ビット長指示、及び、第2サブストリームの第2末尾ビットの長さを示す第2末尾ビット長指示と共に、ビットストリームから抽出する段階を備える。
【0299】
ビットストリームにおけるサブストリームの長さを示すことにより、異なるサイズを有するサブストリームを提供することが可能となり、従って、より柔軟なビットストリーム構成をもたらし得る。
【0300】
例えば、第1末尾ビット長指示は、ビットストリーム内において第1サブストリームに先行し、第2末尾ビット長指示は、ビットストリーム内において第2サブストリームに先行する。
【0301】
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指示をバッファリングすることを必要としない、サブストリームの即時デコーディングの可能性であり得る。
【0302】
例えば、第2末尾ビット長指示は、ビットストリーム内において、第1サブストリームに先行する。
【0303】
そのようなビットストリーム構造は、ビットストリームの個々の一部のより速い抽出のための更なる可能性を提供する。
【0304】
実装例において、第1末尾ビットは、ビットストリーム内において第1サブストリームの後に続き、第2末尾ビットは、ビットストリーム内において第2サブストリームの後に続く。
【0305】
このビットストリーム構造は、別のサブストリームの抽出無しで、第1サブストリーム及び対応する末尾ビットをデコーディングすることを可能にする。
【0306】
例えば、第1末尾ビットは、ビットストリーム内において、第2サブストリームの後に続く。
【0307】
そのようなビットストリーム構造は、ビットストリームから末尾ビットを抽出する前に、個々のサブストリームのデコーディングを開始することを可能にする。
【0308】
実装例において、第1サイズは、第2サイズに等しい。
【0309】
同一サイズの部分を使用する結果、より効率的なパフォーマンスが生じ得る。なぜなら、例えば、ハードウェア及びソフトウェア実装に好適なメモリユニットが使用され得るからである。
【0310】
例えば、第1サブストリームに含まれる全部の部分、及び、第2サブストリームに含まれる全部の部分は、複数のチャネルの上記データのシンボルの整数K倍であり、Kは1より大きい。
【0311】
そのような手法は、ソフトウェア及び/又はハードウェアにおける効率的な実装を提供し得る。
【0312】
例えば、シンボルはビットである。
【0313】
実装例において、エンコーディング方法は更に、第1サブストリーム長指示、第2サブストリーム長指示、第1末尾ビット長指示、第2末尾ビット長指示、第1サブストリーム、第2サブストリーム、第1末尾ビット、及び第2末尾ビットを抽出した後に、ビットストリームの残りのビットを破棄する段階を備える。
【0314】
そのような手法は、例えば、ネットワーク適応層ユニット又は他のパケットへのカプセル化など、更なる処理のために適切にアラインされたビットストリームを提供し得る。
【0315】
実装例において、デコーディング方法は更に、第1サイズの部分及び第2サイズの部分の逆多重化のためのシャッフル方法を決定及び適用する段階を備え、ここで、シャッフル方法は、予め定義されたシャッフル方法のセットのうちの1つであり、第1サイズの部分及び第2サイズの部分の順序を指定する。
【0316】
サブストリームサイズのより均一な分布を達成するべく、部分はシャッフルされ得る。
【0317】
例えば、シャッフル方法の決定は、ビットストリームに含まれる制御情報に基づく。
【0318】
デコーダ側で部分を正確にシャッフルするべく、エンコーダ側で使用されるシャッフル方法は、ビットストリーム内においてシグナリングされ得る。
【0319】
実装例において、エントロピーデコーディングは、第1エントロピーデコーダを用いて第1サブストリームをデコーディングすること、及び、第2エントロピーデコーダを用いて第2サブストリームをデコーディングすることを含み、第1エントロピーデコーダ及び第2エントロピーデコーダを用いたエントロピーデコーディングは少なくとも部分的に並列に実行される。
【0320】
サブストリームの並列デコーディングは、全ビットストリームのより速いデコーディングをもたらし得る。
【0321】
例えば、チャネルは、ニューラルネットワークの出力チャネル又は潜在表現チャネルである。
【0322】
ニューラルネットワークは典型的には、同一サイズ又は少なくとも固定サイズのチャネルを提供し、これにより、これらのチャネルに対して、上記の実施形態及び例を特に好適にし、より容易に適用可能にする。
【0323】
実装例において、エントロピーデコーディングは算術デコーディングであり、第1サブストリーム又は第2サブストリームから多重化部分をデコーディングするための方法は、末尾ビット長指示からの先行エンコーダステータスビットの量を抽出する段階、ここで、サブストリームはコーディング済みビットを含み、末尾ビットは先行エンコーダステータスビットである;エンコーダステータスビットの予め定められた最大長まで、抽出された先行エンコーダステータスビットに0を後部に付加することを含む、エンコーダステータスビットを決定する段階;及び、コーディング済みビット及び決定されたエンコーダステータスビットを含むビットから多重化部分を算術デコーディングする段階を備える。
【0324】
先行エンコーダステータスビットからの末尾ビットの再構築は、ビットストリーム内のより小さい量のビットを使用することによって、コーディング済みビット及び末尾ビットからのデコーディングを提供する。
【0325】
例えば、エンコーダステータスビットの決定は、抽出された先行エンコーダステータスビットに対して、1の値の1ビットを、それに続けて、エンコーダステータスビットの予め定められた最大長まで0を後部に付加することから成る。
【0326】
この手法は、算術エンコーダの完全な出力を再構築することを可能にし、従って、適切な入力を算術デコーダに提供する。
【0327】
実装例において、算術デコーディングはレンジデコーディングである。
【0328】
レンジエンコーディングは、限定されたレジスタ又は一般に高速メモリサイズを有するハードウェア及びソフトウェアアーキテクチャに特に好適であり得る。
【0329】
実装例において、コンピュータプログラムは、非一時的媒体に格納され、1又は複数のプロセッサ上で実行されるとき、上で説明された方法のいずれかの段階を1又は複数のプロセッサに実行させるコード命令を含む。
【0330】
実施形態によれば、同一サイズの複数のチャネルのデータをビットストリームにエントロピーエンコーディングするための装置は、複数のチャネルのうちのチャネルの各々からの第1サイズの部分を多重化し、その後、第1サイズの多重化部分を第1サブストリームにエンコーディングすること;複数のチャネルのうちのチャネルの各々からの第2サイズの部分を多重化し、その後、第2サイズの多重化部分を第2サブストリームにエンコーディングすることを行うよう構成されている処理回路を備え、ここで、エンコーディングは、独立に実行される、第1サブストリーム及び第2サブストリームへのエントロピーエンコーディングである。
【0331】
実施形態によれば、ビットストリームを同一サイズの複数のチャネルのデータへエントロピーデコーディングするための装置は、第2サブストリームから独立に第1サブストリームをエントロピーデコーディングし、第1サブストリーム及び第2サブストリームからの第1サイズの部分及び第2サイズの部分を同一サイズの複数のチャネルに逆多重化するよう構成される処理回路を備える。装置は、上に説明された方法の利点を提供する。
【0332】
図19~22を参照して上で説明されたエンコーディングデバイスのいずれかは、チャネルの各々からの第1サイズの部分の多重化、及び、チャネルの各々からの第2サイズの部分の多重化を実行するための手段を提供し得る。これら例示的なデバイスのいずれかにおける処理回路は、その後、多重化部分をサブストリームにエンコーディングし、第1サブストリーム及び第2サブストリームへのこのエントロピーコーディングを独立に実行するよう構成されている。
【0333】
図19~22のいずれかにおけるデコーディングデバイスは、デコーディング方法を実行するように適合された処理回路を含み得る。上で説明されるような方法は、第2サブストリームから独立して第1サブストリームをエントロピーデコーディングする段階、及び、第1サブストリーム及び第2サブストリームからの第1サイズの部分及び第2サイズの部分を複数のチャネルのデータに逆多重化する段階を備える。
【0334】
まとめると、方法及び装置は、データをビットストリームにエンコーディングし、データをビットストリームからデコーディングすることが説明されている。方法は、並列エンコーディング及びデコーディングを効率的に実行することが可能であり、サブストリームのパディングを回避し、従って、ビットストリーム内のビットの量を低減する。入力データチャネルの部分は多重化され、サブストリームにエンコーディングされる。多重化中に、より均一な長さのサブストリームを取得するべくシャッフル方法が適用される。サブストリーム内のビットの量は、エンコーディングプロセスの末尾ビット内に、関連する上位ビットのみを含めることによって更に低減され得る。
【0335】
ビデオコーディングシステム10の以下の実施形態において、ビデオエンコーダ20及びビデオデコーダ30は、上で言及された図11及び12、又は、ニューラルネットワークベースのエンコーダ及びデコーダなどの他のエンコーダ及びデコーダを参照して、図19及び20に基づいて説明される。
【0336】
図19は、コーディングシステム10、例えば、この本願の技法を利用し得るビデオコーディングシステム10(又は略してコーディングシステム10)の例を図示する概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(又は略してエンコーダ20)及びビデオデコーダ30(又は略してデコーダ30)は、本願において説明される様々な例に従って技法を実行するように構成され得るデバイスの例を表す。
【0337】
図19に示されるように、コーディングシステム10は、例えば、エンコーディング済み画像データ13をデコーディングするためにデスティネーションデバイス14に対してエンコーディング済み画像データ21を提供するよう構成されるソースデバイス12を含む。
【0338】
ソースデバイス12は、エンコーダ20を備え、加えて、すなわち任意選択で、画像ソース16と、プリプロセッサ(又は前処理ユニット)18、例えば画像プリプロセッサ18と、通信インタフェース又は通信ユニット22とを備えてよい。
【0339】
画像ソース16は、任意の種類の画像捕捉デバイス、例えば、現実世界の画像を捕捉するカメラ、及び/又は、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション化画像を生成するコンピュータグラフィックプロセッサ、又は、現実世界の画像、コンピュータ生成画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)、及び/又はそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得及び/又は提供する任意の種類の他のデバイスを含むか又はそれらのデバイスであってよい。画像ソースは、上述の画像のいずれかを格納する任意の種類のメモリ又はストレージであってよい。
【0340】
プリプロセッサ18及び前処理ユニット18によって実行される処理と区別するように、画像又は画像データ17は、生画像又は生画像データ17とも称され得る。
【0341】
プリプロセッサ18は、(生)の画像データ17を受信するとともに、画像データ17に対して前処理を実行して、前処理済みの画像19又は前処理済みの画像データ19を取得するように構成されている。プリプロセッサ18により実行される前処理は、例えば、トリミング、カラーフォーマット換算(例えば、RGBからYCbCrへのもの)、色補正又はノイズ除去を含み得る。前処理ユニット18は任意選択的なコンポーネントであってよいことが理解できる。
【0342】
ビデオエンコーダ20は、前処理済みの画像データ19を受信し、エンコーディング済み画像データ21を提供するよう構成されている(更なる詳細は、例えば、図11に基づいて上で説明された)。
【0343】
ソースデバイス12の通信インタフェース22は、通信チャネル13を介して、エンコーディング済み画像データ21を受信するとともに、エンコーディング済み画像データ21(又はその任意の更なる処理バージョン)を、保存又は直接の再構築のために、別のデバイス、例えばデスティネーションデバイス14又は任意の他のデバイスに送信するよう構成されてよい。
【0344】
デスティネーションデバイス14は、デコーダ30(例えばビデオデコーダ30)を備え、加えて、すなわち任意選択で、通信インタフェース又は通信ユニット28と、ポストプロセッサ32(又は後処理ユニット32)と、ディスプレイデバイス34とを備えてよい。
【0345】
デスティネーションデバイス14の通信インタフェース28は、エンコーディング済み画像データ21(又はその任意の更なる処理バージョン)を、例えばソースデバイス12から直接又は任意の他のソース、例えばストレージデバイス、例えばエンコーディング済み画像データストレージデバイスから受信するとともに、エンコーディング済み画像データ21をデコーダ30に提供するように構成されている。
【0346】
通信インタフェース22及び通信インタフェース28は、ソースデバイス12とデスティネーションデバイス14との間で、直接的な通信リンク、例えば、直接的な有線又は無線接続を介して、又は、任意の種類のネットワーク、例えば、有線又は無線ネットワーク又はそれらの任意の組み合わせ、又は、任意の種類のプライベート及びパブリックネットワーク又はそれらの任意の種類の組み合わせを介して、エンコーディング済み画像データ21又はエンコーディング済みのデータを送信又は受信する(13)ように構成されてよい。
【0347】
通信インタフェース22は、例えば、エンコーディング済み画像データ21を適切な形式に、例えばパケットにパッケージ化する、及び/又は、通信リンク又は通信ネットワークを介した伝送のための任意の種類の伝送エンコーディング又は処理を用いて、エンコーディング済み画像データを処理するように構成されてよい。
【0348】
通信インタフェース22のカウンターパートをなす通信インタフェース28は、例えば、伝送されたデータを受信するとともに、任意の種類の対応する送信デコーディング又は処理及び/又はデパッケージングを用いて伝送データを処理して、エンコーディング済み画像データ21を取得するように構成されてよい。
【0349】
通信インタフェース22及び通信インタフェース28の両方は、ソースデバイス12からデスティネーションデバイス14を指す図19における通信チャネル13の矢印によって示される一方向性通信インタフェースとして、又は、双方向性通信インタフェースとして構成され得、例えばメッセージを送信及び受信し、例えば接続をセットアップし、通信リンク及び/又はデータ伝送、例えばエンコーディング済み画像データ伝送に関する任意の他の情報を確認及び交換するよう構成され得る。
【0350】
デコーダ30は、エンコーディング済み画像データ21を受信し、デコーディング済み画像データ31又はデコーディング済み画像31を提供するよう構成される(更なる詳細は、例えば図12に基づいて上で説明された)。
【0351】
デスティネーションデバイス14のポストプロセッサ32は、デコーディングされた画像データ31(再構築された画像データとも呼ばれる)、例えばデコーディング済み画像31を後処理して、後処理済みの画像データ33、例えば後処理済みの画像33を取得するように構成されている。後処理ユニット32により実行される後処理は、例えば、デコーディングされた画像データ31を、例えば、ディスプレイデバイス34による表示のために準備する目的で、例えば、カラーフォーマット換算(例えば、YCbCrからRGBへのもの)、色補正、トリミング又は再サンプリング又は任意の他の処理を含んでよい。
【0352】
デスティネーションデバイス14のディスプレイデバイス34は、画像を例えばユーザ又は視聴者に表示するために、後処理済みの画像データ33を受信するように構成されている。ディスプレイデバイス34は、再構築された画像を表すための任意の種類のディスプレイ、例えば、一体型又は外付けのディスプレイ又はモニタであってもよく、これを備えてもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタル光プロセッサ(DLP)、又は任意の種類の他のディスプレイを含んでよい。
【0353】
図19は、ソースデバイス12及びデスティネーションデバイス14を別個のデバイスとして示しているが、デバイスの実施形態は、両方又は両方の機能、ソースデバイス12又は対応する機能及びデスティネーションデバイス14又は対応する機能も含み得る。そのような実施形態では、ソースデバイス12又は対応する機能及びデスティネーションデバイス14又は対応する機能は、同じハードウェア及び/又はソフトウェアを用いて、又は別個のハードウェア及び/又はソフトウェア又はそれらの任意の組み合わせにより実装され得る。
【0354】
説明に基づいて当業者には明らかとなるように、異なるユニットの機能、又は、図19に示されるソースデバイス12及び/又はデスティネーションデバイス14内の機能の存在及び(厳密な)分離は、実際のデバイスと適用に応じて変動し得る。
【0355】
エンコーダ20(例えばビデオエンコーダ20)又はデコーダ30(例えばビデオデコーダ30)又はエンコーダ20及びデコーダ30の両方は、1又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、専用ビデオコーディング、又は、それらの任意の組み合わせなど、図20に示されるような処理回路を介して実装され得る。エンコーダ20は、図11のエンコーダ20及び/又は本明細書に記載の任意の他のエンコーダシステム又はサブシステムに関連して説明される様々なモジュールを具現するために処理回路46を介して実装されてよい。デコーダ30は、図12のデコーダ30及び/又は本明細書において説明される任意の他のデコーダシステム又はデコーダサブシステムに関連して説明される様々なモジュールを具現化するために、処理回路46を介して実装され得る。処理回路は、後で説明されるような様々な演算を実行するように構成され得る。図22に示されるように、これらの技法が部分的にソフトウェア内に実装される場合、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読記憶媒体に格納してよく、1又は複数のプロセッサを用いてハードウェア内の命令を実行して、本開示の技法を実行し得る。ビデオエンコーダ20及びビデオデコーダ30のいずれかは、例えば図20に示されるように、単一デバイスにおいて、組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0356】
ソースデバイス12及びデスティネーションデバイス14は、任意の種類のハンドヘルド又はステーショナリデバイス、例えば、ノートブック又はラップトップコンピュータ、携帯電話、スマートフォン、タブレット又はタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバ又はコンテンツ配信サーバ等)、ブロードキャスト受信機デバイス、ブロードキャスト送信機デバイス等を含む、広範な範囲のデバイスのいずれかを備えてよく、オペレーティングシステムを用いない又は任意の種類のオペレーティングシステムを用いてよい。いくつかの場合、ソースデバイス12及びデスティネーションデバイス14は、無線通信用に備え付けられ得る。したがって、ソースデバイス12及びデスティネーションデバイス14は、無線通信デバイスであってよい。
【0357】
いくつかの場合において、図19に図示されるビデオコーディングシステム10は単に例であり、本願の技法は、エンコーディング及びデコーディングデバイスの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディング又はビデオデコーディング)に適用し得る。他の例において、データは、ローカルメモリから取得される、又はネットワークを介してストリーミングされる等である。ビデオエンコーディングデバイスは、データをメモリにエンコーディング及び格納してよく、及び/又は、ビデオデコーディングデバイスは、データをメモリから取得してデコーディングしてよい。いくつかの例において、エンコーディング及びデコーディングは、互いに通信しないが、単にデータをメモリへエンコーディングし、及び/又は、メモリからデータを取得及びデコーディングするデバイスにより実行される。
【0358】
説明の便宜上、本発明の実施形態は、例えば、高効率ビデオコーディング(HEVC)又はバーサタイルビデオコーディング(VVC)の参照ソフトウェア、ITU-Tビデオコーディングエキスパートグループ(VCEG)及びISO/IECモーションピクチャエキスパートグループ(MPEG)のビデオコーディングに関するジョイントコラボレーションチーム(JCT-VC)によって開発された次世代ビデオコーディング規格を参照することによって、本明細書に記載される。当業者であれば、本発明の実施形態がHEVC又はVVCに限定されないことを理解するであろう。
【0359】
図21は、本開示の実施形態に係るビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書において説明される本開示の実施形態を実装するのに好適である。実施形態において、ビデオコーディングデバイス400は、図19のビデオデコーダ30などのデコーダ又は図19のビデオエンコーダ20などのエンコーダであり得る。
【0360】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(又は、入力ポート410)及び受信器ユニット(Rx)420と、データを処理するためのプロセッサ、ロジックユニット、又は中央処理装置(CPU)430と、データを送信するための送信器ユニット(Tx)440及び出口ポート450(又は出力ポート450)と、データを保存するためのメモリ460とを備える。ビデオコーディングデバイス400は、光信号又は電気信号の出口又は入口のために、入口ポート410、受信器ユニット420、送信器ユニット440及び出口ポート450に結合された光/電気(OE)コンポーネント及び電気/光(EO)コンポーネントも備え得る。
【0361】
プロセッサ430は、ハードウェア及びソフトウェアによって実装される。プロセッサ430は、1又は複数のCPUチップ、(例えば、マルチコアプロセッサとしての)コア、FPGA、ASIC及びDSPとして実装され得る。プロセッサ430は、入口ポート410、受信器ユニット420、送信器ユニット440、出口ポート450、及びメモリ460と通信する。プロセッサ430は、コーディングモジュール470を含む。コーディングモジュール470は、上述の開示される実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング操作を実装、処理、準備又は提供する。したがって、コーディングモジュール470を含むことで、ビデオコーディングデバイス400の機能に対する実質的な改善が提供され、ビデオコーディングデバイス400の異なる状態への変換をもたらす。代替的に、コーディングモジュール470は、メモリ460に格納されてプロセッサ430により実行される命令として実装される。
【0362】
メモリ460は、1又は複数のディスク、テープドライブ、及びソリッドステートドライブを備えてよく、プログラムが実行のために選択された場合に係るプログラムを保存するとともに、プログラムの実行中に読み取られる命令及びデータを保存するために、オーバフローデータストレージデバイスとして使用されてよい。メモリ460は例えば、揮発性及び/又は非揮発性であり得、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、及び/又は、スタティックランダムアクセスメモリ(SRAM)であり得る。
【0363】
図22は、例示的な実施形態に従って、図19からのソースデバイス12及びデスティネーションデバイス14のいずれか又は両方として使用され得る装置500の簡略的なブロック図である。
【0364】
装置500におけるプロセッサ502は、中央処理装置とすることができる。代替的に、プロセッサ502は、現存するか又は今後開発される、情報を操作又は処理できる任意の他のタイプのデバイス又は複数のデバイスであってよい。開示される実装は、示されているような単一のプロセッサ、例えばプロセッサ502を用いて実施され得るが、速度及び効率上の利点は、1つよりも多くのプロセッサを用いて実現され得る。
【0365】
装置500におけるメモリ504は、実装において、リードオンリメモリ(ROM)デバイス又はランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の好適なタイプのストレージデバイスが、メモリ504として用いられ得る。メモリ504は、バス512を用いてプロセッサ502によりアクセスされるコード及びデータ506を含み得る。メモリ504は、オペレーティングシステム508及びアプリケーションプログラム510を更に含んでよく、アプリケーションプログラム510は、本明細書において説明される方法をプロセッサ502が実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、上で説明された算術コーディングを使用してエンコーディング及びデコーディングすることを含む、本明細書に説明される方法を実行するビデオコーディングアプリケーションを更に含むアプリケーション1~Nを含み得る。
【0366】
装置500は、ディスプレイ518等の、1又は複数の出力デバイスも備えることができる。ディスプレイ518は、一例において、ディスプレイと、タッチ入力を検知するように動作可能なタッチセンサ式要素とを組み合わせたタッチセンサ式ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に結合され得る。
【0367】
単一のバスとして本明細書に示したが、装置500のバス512は、複数のバスから構成することができる。更に、セカンダリストレージ514は、装置500の他のコンポーネントに直接的に結合されてもよく、ネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合されたユニット又は複数のメモリカードなどの複数のユニットを備えてよい。従って、装置500は、多種多様な構成で実装することができる。
【0368】
本発明の実施形態は主にビデオコーディングに基づいて説明されてきたが、コーディングシステム10、エンコーダ20、及びデコーダ30(及びそれに対応してシステム10)の実施形態ならびに本明細書に記載の他の実施形態はまた、静止画像処理又はコーディング、すなわち、ビデオコーディングのようにいずれかの先行する又は連続する画像とは無関係の個々の画像の処理又はコーディングのために構成され得ることに留意されたい。一般的に、画像処理コーディングが単一の画像17に限定される場合、インター予測ユニット244(エンコーダ)及び344(デコーダ)のみが利用可能ではないことがある。ビデオエンコーダ20及びビデオデコーダ30の全ての他の機能(ツール又は技術とも称される)は、静止画像処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分化262/362、イントラ予測254/354、及び/又はループフィルタリング220、320ならびにエントロピーコーディング270及びエントロピーデコーディング304に等しく用いられ得る。
【0369】
例えばエンコーダ20及びデコーダ30の実施形態、並びに、例えばエンコーダ20及びデコーダ30を参照して本明細書に記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装されてよい。ソフトウェアに実装される場合、これらの機能は、コンピュータ可読媒体に格納されてもよく、通信媒体を介して1又は複数の命令又はコードとして送信され、ハードウェアベース処理ユニットにより実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、又は、例えば通信プロトコルに従った、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、又は、(2)信号又は搬送波等の通信媒体に対応してよい。データ記憶媒体は、本開示において説明された技法の実装のための命令、コード及び/又はデータ構造を取得するために1又は複数のコンピュータ又は1又は複数のプロセッサによりアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0370】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気ストレージデバイス、フラッシュメモリ、又は命令又はデータ構造の形態で所望のプログラムコードを格納するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。また、任意の接続が、適宜コンピュータ可読媒体と称される。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、又は赤外線、電波及びマイクロ波などの無線技術を用いて、ウェブサイト、サーバ又は他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、電波及びマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号又は他の一時的媒体を含まないが、代わりに、非一時的な有形のストレージ媒体を対象とすることを理解されたい。本明細書において用いられるようなディスク(disk及びdisc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク及びブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再現するが、ディスク(disc)は、データをレーザで光学的に再現する。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0371】
命令は、1又は複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又は他の等価な集積又はディスクリート論理回路等の、1又は複数のプロセッサによって実行されてよい。したがって、本明細書において用いられる「プロセッサ」という用語は、前述の構造のいずれか、又は本明細書において説明された技法の実装に好適な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書において説明された機能は、エンコーディング及びデコーディングのために構成された専用のハードウェアモジュール及び/又はソフトウェアモジュール内で提供されてもよく、又は、組み合わされたコーデックに組み込まれてもよい。また、本技法は、1又は複数の回路又はロジック要素において完全に実装することができる。
【0372】
本開示の技法は、無線ハンドセット、集積回路(IC)又はICのセット(例えば、チップセット)を含む、多種多様なデバイス又は装置において実装してよい。様々なコンポーネント、モジュール又はユニットが、開示されている技法を実行するように構成されたデバイスの機能態様を強調するために本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上述したように、好適なソフトウェア及び/又はファームウェアと連動して、様々なユニットがコーデックハードウェアユニットにして組み合わされるか、又は、上述したように、1又は複数のプロセッサを含む相互運用ハードウェアユニットの集合によって提供されてよい。
(他の可能な項目)
(項目1)
入力データをビットストリーム(1750)に算術エンコーディングするための方法であって、
前記入力データをコーディング済みビット(1730~1731)及び末尾ビットに算術エンコーディングする段階;
前記ビットストリーム(1750)に前記コーディング済みビット(1730~1731)を含める段階(S940);
算術エンコーディングされた前記入力データの区間の最小値(1610)及び最大値(1630)を決定する段階(S960);
連続する末尾ビットであり、
決定された前記最大値(1630)を表す第1最上位ビットMSB内において、決定された前記最小値(1610)を表す第2MSB内と同一の値を有する
先行末尾ビットの量を決定する段階(S970);及び
前記先行末尾ビットの決定された前記量の指示(1720~1721)、及び
前記先行末尾ビット(1740~1741)
を前記ビットストリーム(1750)に含める段階(S980)
を備える方法。
(項目2)
前記先行末尾ビット(1740~1741)の前記量、NumTrailingBitsが、
NumTrailingBits=CLZ((LOW+RANGE-1)XOR LOW)
によって決定され、
CLZ()は、先行0の数であり、LOWは、前記区間の前記最小値(1610)であり、RANGEは、前記区間のレンジ(1620)である、
項目1に記載の方法。
(項目3)
前記先行末尾ビットの前記量の前記指示(1720~1721)は、前記ビットストリーム内において、前記コーディング済みビット(1730~1731)及び前記先行末尾ビット(1740~1741)に先行する、項目1または2に記載の方法。
(項目4)
前記ビットストリームに含める前記段階の前に、前記先行末尾ビット(1660)に対して、1の値を有する1ビット(1670)がポストペンドされる、項目1から3のいずれか一項に記載の方法。
(項目5)
算術エンコーディングする前記段階、区間の最小値及び最大値を決定する前記段階(S960)、及び、先行末尾ビットの量を決定する前記段階(S970)は、第1サブストリーム及び第2サブストリームについて別個に実行され、結果として、第1コーディング済みビット(1730)、第2コーディング済みビット(1731)、第1先行末尾ビット(1740)、及び第2先行末尾ビット(1741)を生じさせ;
前記方法は、前記第1先行末尾ビット(1740)及び前記第2先行末尾ビット(1741)が後に続く前記第1コーディング済みビット(1730)及び前記第2コーディング済みビット(1731)を前記ビットストリームに挿入する段階を備える、
項目1から4のいずれか一項に記載の方法。
(項目6)
前記第1コーディング済みビット(1730)の長さを示す第1長さ指示(1710)、及び、前記第2コーディング済みビット(131)の長さを示す第2長さ指示(1711)と共に、前記第1コーディング済みビット(1730)及び前記第2コーディング済みビット(1731)を前記ビットストリーム(1750)に多重化する段階を更に備える、項目5に記載の方法。
(項目7)
前記第1長さ指示(1710)は、前記ビットストリーム(1750)内において、前記第1コーディング済みビット(1730)に先行し、
前記第2長さ指示(1711)は、前記ビットストリーム(1750)内において、前記第2コーディング済みビット(1731)に先行する、
項目6に記載の方法。
(項目8)
前記第2長さ指示(1711)は、前記ビットストリーム(1750)内において前記第1コーディング済みビット(1730)に先行する、項目7に記載の方法。
(項目9)
前記第2先行末尾ビットの前記量の前記指示(1721)は、前記ビットストリーム(1750)内において、前記第1コーディング済みビット(1730)に先行する、項目8に記載の方法。
(項目10)
ビットストリーム長をバイトの予め定められた量の整数倍と一致させるようにアラインするために、予め定められた値を有するビットで、前記第1コーディング済みビット(1730)、前記第2コーディング済みビット(1731)、前記第1先行末尾ビット(1740)、及び、前記第2先行末尾ビット(1741)を含む前記ビットストリーム(1750)をパディングする段階を更に備える、項目5から9のいずれか一項に記載の方法。
(項目11)
前記算術エンコーディングは、第1算術エンコーダを用いて前記第1サブストリームをエンコーディングすること、及び、第2算術エンコーダを用いて前記第2サブストリームをエンコーディングすることを含み、
前記第1算術エンコーダ及び前記第2算術エンコーダを用いる前記算術エンコーディングは、少なくとも部分的に並列に実行される、
項目5から10のいずれか一項に記載の方法。
(項目12)
前記算術エンコーディングはレンジエンコーディングである、項目1から11のいずれか一項に記載の方法。
(項目13)
前記算術エンコーディングの間に、前記区間の現在の最小値(720a~d)及び前記現在の最大値(710a~d)が予め構成されたサイズのメモリに格納され;
前記コーディング済みビットを前記ビットストリームに含める前記段階は、安定ビット(730)のうちのビットの予め定義された量を前記メモリから前記ビットストリームに移動させる段階を含み;
前記安定ビット(730)は、前記現在の最小値(720a~d)及び前記現在の最大値(710a~d)の2進表現のMSBにおいて同一の値を有する連続ビットである、
項目11に記載の方法。
(項目14)
前記算術エンコーディングの間に、前記先行末尾ビットの量、及び、前記安定ビット(730)のうちのビットの予め定義された量の間の差が、予め定義された閾値より下である場合に;
末尾コーディング済みビットは、前記安定ビット(730)のうちのビットの予め定義された量まで0が後に続く、1の値を有する1ビット(1670)をポストペンドすることによって、前記先行末尾ビット(1660)から生成され;
前記末尾コーディング済みビットは、前記コーディング済みビットを前記ビットストリームに含める前記段階の前に、前記コーディング済みビットに含められ;
0の先行末尾ビットの指示が前記ビットストリームに含められる、
項目13に記載の方法。
(項目15)
ビットストリーム(1750)からデータを算術デコーディングするための方法であって、
先行末尾ビットの量の指示(1720~1721)を前記ビットストリーム(1750)から抽出する段階(S1030);
複数のコーディング済みビット(1730~1731)を前記ビットストリーム(1750)から抽出する段階(S1040);
抽出された、前記先行末尾ビットの前記量の前記指示(1720~1721)によって指定された前記先行末尾ビット(1740~1741)を前記ビットストリーム(1750)から抽出する段階(S1070);
抽出された前記先行末尾ビットに、前記末尾ビットの予め定められた最大長までの0をポストペンドする段階を含む、末尾ビットを決定する段階(S1080);及び
前記コーディング済みビット及び決定された前記末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることにより、前記データを取得する段階
を備える方法。
(項目16)
前記末尾ビット(1650)を決定する前記段階は、前記末尾ビットの前記予め定められた最大長までの0(1650)が後に続く、1の値を有する1ビット(1670)で、抽出された前記先行末尾ビットにポストペンドすることから成る、項目15に記載の方法。
(項目17)
前記先行末尾ビットの前記量の前記指示(1720~1721)は、前記ビットストリーム(1750)内において、前記コーディング済みビット(1730~1731)及び前記先行末尾ビット(1740~1741)に先行する、項目15または16に記載の方法。
(項目18)
前記方法は、第1先行末尾ビット(1740)及び第2先行末尾ビット(1741)が後に続く第1コーディング済みビット(1730)及び第2コーディング済みビット(1731)を前記ビットストリーム(1750)から抽出する段階を備え、
前記第1コーディング済みビット(1730)及び前記第1先行末尾ビット(1740)は第1サブストリームを形成し、
前記第2コーディング済みビット(1731)及び前記第2先行末尾ビット(1741)は第2サブストリームを形成し;
前記第1サブストリームについて第1末尾ビットを決定し、
前記第2サブストリームについて第2末尾ビットを決定し、
前記第1コーディング済みビット及び決定された前記第1末尾ビットを含む第1ビットによって表される第1のコーディング済みの値を算術デコーディングし;
前記第2コーディング済みビット及び決定された前記第2末尾ビットを含む第2ビットによって表される第2のコーディング済みの値を算術デコーディングする、
項目15から17のいずれかに記載の方法。
(項目19)
前記第1コーディング済みビットの長さを示す第1長さ指示(1710)、及び、前記第2コーディング済みビットの長さを示す第2長さ指示(1711)と共に、前記第1コーディング済みビット(1730)及び前記第2コーディング済みビット(1731)を前記ビットストリーム(1750)から抽出する段階を更に備える、項目18に記載の方法。
(項目20)
前記第1長さ指示(1710)は、前記ビットストリーム内において前記第1コーディング済みビット(1730)に先行し、
前記第2長さ指示(1711)は、前記ビットストリーム内において前記第2コーディング済みビット(1731)に先行する、
項目19に記載の方法。
(項目21)
前記第2長さ指示(1711)は、前記ビットストリーム(1750)内において前記第1コーディング済みビット(1730)に先行する、項目20に記載の方法。
(項目22)
前記第2先行末尾(1712)ビットの前記量の前記指示は、前記ビットストリーム(1750)内において前記第1コーディング済みビット(1730)に先行する、項目21に記載の方法。
(項目23)
前記第1コーディング済みビット(1730)、前記第2コーディング済みビット(1731)、前記第1先行末尾ビット(1740)、及び前記第2先行末尾ビット(1741)を抽出した後に、前記ビットストリーム(1750)の残りのビットを破棄する段階を更に備える、項目18から22のいずれか一項に記載の方法。
(項目24)
前記算術デコーディングは、第1算術デコーダを用いて前記第1サブストリームをデコーディングすること、及び、第2算術デコーダを用いて前記第2サブストリームをデコーディングすることを含み、
前記第1算術デコーダ及び前記第2算術デコーダを用いる前記算術デコーディングは、少なくとも部分的に並列に実行される、
項目18から23のいずれか一項に記載の方法。
(項目25)
前記算術デコーディングはレンジデコーディングである、項目15から24のいずれか一項に記載の方法。
(項目26)
1又は複数のプロセッサ上で実行されるときに、項目1から25のいずれか一項に記載の方法の段階を前記1又は複数のプロセッサに実行させるコード命令を含み、非一時的媒体に格納されるコンピュータプログラム。
(項目27)
入力データをビットストリームに算術エンコーディングするための装置であって、
前記入力データをコーディング済みビット及び末尾ビットに算術エンコーディングすること;
前記コーディング済みビット(1730~1731)を前記ビットストリーム(1750)に含めること、
算術エンコーディングされた前記入力データの区間の最小値(1610)及び最大値(1630)を決定すること;
連続末尾ビットであり、
決定された前記最大値(1630)を表す第1MSB内において、決定された前記最小値(1610)を表す第2MSB内と同一の値を有する
先行末尾ビット(1740~1741)の量を決定すること;及び
前記先行末尾ビットの決定された前記量の指示(1720~1721)、及び、
前記先行末尾ビット(1730~1731)
を前記ビットストリーム(1750)に含めること
を行うよう構成されている処理回路を備える装置。
(項目28)
ビットストリーム(1750)からデータを算術デコーディングするための装置であって、
先行末尾ビットの量の指示(1720~1721)を前記ビットストリーム(1750)から抽出すること;
複数のコーディング済みビット(1730~1731)を前記ビットストリーム(1750)から抽出すること;
抽出された前記先行末尾ビットの前記量の前記指示(1720~1721)によって指定される前記先行末尾ビット(1740~1741)を前記ビットストリーム(1750)から抽出すること;
抽出された前記先行末尾ビットに、前記末尾ビットの予め定められた最大長までの0を付加することを含む、末尾ビットを決定すること;
前記コーディング済みビット及び決定された前記末尾ビットを含むビットによって表されるコーディング済みの値を算術デコーディングすることによって、前記データを取得すること
を行うよう構成されている処理回路を備える装置。
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図7D
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22