JPWO2021247169A5 - - Google Patents
Download PDFInfo
- Publication number
- JPWO2021247169A5 JPWO2021247169A5 JP2022529861A JP2022529861A JPWO2021247169A5 JP WO2021247169 A5 JPWO2021247169 A5 JP WO2021247169A5 JP 2022529861 A JP2022529861 A JP 2022529861A JP 2022529861 A JP2022529861 A JP 2022529861A JP WO2021247169 A5 JPWO2021247169 A5 JP WO2021247169A5
- Authority
- JP
- Japan
- Prior art keywords
- factor
- exponential function
- picture
- processor
- current picture
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Description
本発明は、一連の先進なビデオ符号化技術に関し、より具体的には、時間フィルタリングの実装に関する。
関連出願の相互参照
本願は、2020年6月3日に出願された米国仮出願第63/034042号及び2021年4月26日に出願された米国出願第17/240376号の優先権を主張し、両者の全ての開示内容は、参照により本明細書に組み込まれるものとする。
本願は、2020年6月3日に出願された米国仮出願第63/034042号及び2021年4月26日に出願された米国出願第17/240376号の優先権を主張し、両者の全ての開示内容は、参照により本明細書に組み込まれるものとする。
AOMedia Video 1(AV1)は、インターネット上での映像配信を目的として設計されたオープンかつロイヤリティフリーな映像符号化フォーマットである。AV1は、半導体産業、ビデオ・オン・デマンドプロバイダ、ビデオコンテンツプロデューサー、ソフトウェア開発会社、及びウェブブラウザ開発主体を含む、2015年に設立されたコンソーシアムである、Alliance for Open Media(AOMedia)によって、VP9の後継として開発された。
Libaomは、AV1のリファレンス実装である。スケーラブルビデオ技術AV1(SVT-AV1)は、インテルが2019年2月に最初にリリースしたオープンソースのエンコーダ及びデコーダを含む。
符号化中にテストされる多数の符号化モード及び変換タイプとは対照的に、時間フィルタリングプロセスがブロックごとに1回しか実行されないため、時間フィルタリングにかかる合計時間は、合計符号化時間のごく一部である。しかしながら、リアルタイムエンコーダに取り込まれると、ほとんどの符号化モードは、テストされないか又は早期決定プロセスを使用してスキップされるが、時間フィルタリングは、以前とほぼ同じ時間かかり、現在、合計時間の大部分となっている。時間フィルタリングプロセスでは、かかる時間のほとんどは、同一位置に配置された画素の重みの浮動小数点計算に由来する。計算には、時間がかかる指数関数の値を見つけることも含まれる場合がある。
従来の重み計算には多くの浮動小数点計算が含まれるため、エンコーダのハードウェア実装は、非常に高価で非効率的である。
本開示の実施形態は、上記の問題及び/又は他の問題に対する解決策を提供することができる。
1つ以上の実施形態によれば、エンコーダが実行する方法が提供される。この方法は、現在のピクチャに時間フィルタを適用するステップであって、少なくとも1つの第1の因子を持つ分子と、少なくとも1つの第2の因子を持つ分母と、を持つ指数を含む指数関数を、前記指数関数の前記指数を固定小数点数として計算すること又は少なくとも1つのルックアップテーブルを使用することにより取得するステップと、前記指数関数にスケール関数を乗算することにより少なくとも1つの隣接ピクチャの重みを取得するステップと、前記現在のピクチャのサンプル値及び前記少なくとも1つの隣接ピクチャの前記重みに基づいて、前記現在のピクチャのフィルタリング済みサンプル値を取得するステップと、前記現在のピクチャの前記サンプル値を前記フィルタリング済みサンプル値に置き換えるステップと、を含むステップを含む。この方法は、前記時間フィルタが適用された後に、前記現在のピクチャを符号化するステップをさらに含む。
一実施形態によれば、前記指数関数を取得するステップは、前記指数関数の前記指数を前記固定小数点数として計算するステップを含む。
一実施形態によれば、前記固定小数点数を計算するステップは、前記固定小数点数を2nビット(nは整数である)として表すステップを含む。
一実施形態によれば、前記固定小数点数を計算するステップは、前記少なくとも1つの第1の因子又は前記少なくとも1つの第2の因子のうちの1つの因子の浮動小数点数表示を、2の累乗を有するスケール因子でスケーリングするステップを含む。
一実施形態によれば、前記指数関数を取得するステップは、前記少なくとも1つのルックアップテーブルを使用するステップを含む。
一実施形態によれば、前記少なくとも1つのルックアップテーブルは、第1のルックアップテーブル及び第2のルックアップテーブルを含み、前記第1のルックアップテーブルは、前記指数関数の整数部を含み、前記第2のルックアップテーブルは、前記指数関数の小数部を含む。
一実施形態によれば、前記少なくとも1つのルックアップテーブルは、前記指数関数の固定小数点数を含む。
一実施形態によれば、この方法は、前記スケール関数の因子を固定小数点表示に変換するステップ、をさらに含み、前記少なくとも1つの隣接ピクチャの前記重みを取得するステップは、前記スケール関数の前記固定小数点表示に前記指数関数を乗算するステップを含む。
一実施形態によれば、この方法は、前記現在のピクチャの画素のうちの各々の画素に対して、前記現在のピクチャの前記フィルタリング済みサンプル値を取得するステップをそれぞれ含む複数の反復のための画素ごとのループを実行するステップと、前記画素ごとのループの前記複数の反復を実行する前に、前記画素ごとに変化しない前記スケール関数又は前記指数関数のうちの1つの因子に基づいて、固定小数点表示に変換するステップと、をさらに含む。
一実施形態によれば、前記指数の前記分子の前記少なくとも1つの第1の因子は、前記少なくとも1つの隣接ピクチャの動き推定誤差を含み、前記指数の前記分母の前記少なくとも1つの第2の因子は、量子化パラメータを含み、前記スケール関数は、少なくとも1つの第3の因子を持つ分子と、少なくとも1つの第4の因子を持つ分母と、を含み、前記少なくとも1つの第3の因子は、前記現在のピクチャのノイズレベルを含み、かつ、前記少なくとも1つの第4の因子は、前記現在のピクチャからの前記少なくとも1つの隣接ピクチャのピクチャ順計算距離を含む。
1つ以上の実施形態によれば、システムが提供される。このシステムは、コンピュータコードを記憶する少なくとも1つのメモリと、前記コンピュータコードにアクセスし、前記コンピュータコードの指示に従って動作するように構成された少なくとも1つのプロセッサと、を含む。前記コンピュータコードは、前記少なくとも1つのプロセッサに、現在のピクチャに時間フィルタを適用させるように構成された時間フィルタコードであって、前記少なくとも1つのプロセッサに、少なくとも1つの第1の因子を持つ分子と、少なくとも1つの第2の因子を持つ分母と、を持つ指数を含む指数関数を、前記指数関数の前記指数を固定小数点数として計算すること又は少なくとも1つのルックアップテーブルを使用することにより取得させるように構成された指数関数取得コードと、前記少なくとも1つのプロセッサに、前記指数関数にスケール関数を乗算することにより少なくとも1つの隣接ピクチャの重みを取得させるように構成された重み取得コードと、前記少なくとも1つのプロセッサに、前記現在のピクチャのサンプル値及び前記少なくとも1つの隣接ピクチャの前記重みに基づいて、前記現在のピクチャのフィルタリング済みサンプル値を取得させるように構成されたフィルタリング済みサンプル値取得コードと、前記少なくとも1つのプロセッサに、前記現在のピクチャの前記サンプル値を前記フィルタリング済みサンプル値に置き換えさせるよう構成されたサンプル値置き換えコードと、を含む、時間フィルタコードを含む。前記コンピュータコードは、前記少なくとも1つのプロセッサに、前記時間フィルタを適用した後に、前記現在のピクチャを符号化させるように構成された符号化コードを、さらに含んでもよい。
一実施形態によれば、前記指数関数取得コードは、前記少なくとも1つのプロセッサに、前記指数関数の前記指数を前記固定小数点数として計算させるように構成される。
一実施形態によれば、前記指数関数取得コードは、前記少なくとも1つのプロセッサに、前記固定小数点数を2nビット(nは整数である)として表させるように構成される。
一実施形態によれば、前記指数関数取得コードは、前記少なくとも1つのプロセッサに、前記少なくとも1つの第1の因子又は前記少なくとも1つの第2の因子のうちの1つの因子の浮動小数点数表示を、2の累乗を有するスケール因子でスケーリングさせるように構成される。
一実施形態によれば、前記指数関数取得コードは、前記少なくとも1つのプロセッサに、前記少なくとも1つのルックアップテーブルを使用して、前記指数関数を取得させるように構成される。
一実施形態によれば、前記少なくとも1つのルックアップテーブルは、第1のルックアップテーブル及び第2のルックアップテーブルを含み、前記第1のルックアップテーブルは、前記指数関数の整数部を含み、前記第2のルックアップテーブルは、前記指数関数の小数部を含む。
一実施形態によれば、前記少なくとも1つのルックアップテーブルは、前記指数関数の固定小数点数を含む。
一実施形態によれば、前記コンピュータコードは、前記少なくとも1つのプロセッサに、前記スケール関数の因子を固定小数点表示に変換させるように構成された変換コードを、さらに含み、前記重み取得コードは、前記少なくとも1つのプロセッサに、前記スケール関数の前記固定小数点表示に前記指数関数を乗算することにより前記少なくとも1つの隣接ピクチャの前記重みを取得させるように構成される。
一実施形態によれば、前記コンピュータコードは、前記フィルタリング済みサンプル値取得コードを含み、前記少なくとも1つのプロセッサに、前記現在のピクチャの画素のうちの各々の画素に対して、前記現在のピクチャの前記フィルタリング済みサンプル値を取得するステップをそれぞれ含む複数の反復のための画素ごとのループを実行させるように構成されたループコードと、前記少なくとも1つのプロセッサに、前記画素ごとのループの前記複数の反復を実行する前に、前記画素ごとに変化しない前記スケール関数又は前記指数関数のうちの1つの因子に基づいて、固定小数点表示に変換させるように構成された変換コードと、をさらに含む。
1つ以上の実施形態によれば、コンピュータコードを記憶する非一時的なコンピュータ可読媒体が提供される。前記コンピュータコードは、少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、少なくとも1つの第1の因子を持つ分子と、少なくとも1つの第2の因子を持つ分母と、を持つ指数を含む指数関数を、前記指数関数の前記指数を固定小数点数として計算すること、又は、少なくとも1つのルックアップテーブルを使用することにより取得させ、前記指数関数にスケール関数を乗算することにより少なくとも1つの隣接ピクチャの重みを取得させ、現在のピクチャのサンプル値及び前記少なくとも1つの隣接ピクチャの前記重みに基づいて、前記現在のピクチャのフィルタリング済みサンプル値を取得させ、前記現在のピクチャの前記サンプル値を前記フィルタリング済みサンプル値に置き換えさせることにより、前記現在のピクチャに時間フィルタを適用させるように構成される。前記コンピュータコードは、前記少なくとも1つのプロセッサに、前記時間フィルタを適用させた後に、前記現在のピクチャを符号化させるように構成されてもよい。
開示する主題のさらなる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになろう。
一実施形態に係る通信システムの簡略化されたブロック図の概略図である。
一実施形態に係る通信システムの簡略化されたブロック図の概略図である。
一実施形態に係るデコーダの簡略化されたブロック図の概略図である。
一実施形態に係るエンコーダの簡略化されたブロック図の概略図である。
一実施形態に係るコンピュータコードの図である。
実施形態を実装することに適するコンピュータシステムの図である。
本開示では、ブロックという用語は、予測ブロック、符号化ブロック又は符号化ユニット(CU)を意味してもよい。
図1は、本開示の一実施形態に係る通信システム(100)の簡略化されたブロック図を示す。システム(100)は、ネットワーク(150)を介して相互に接続された少なくとも2つの端末(110、120)を含んでもよい。データの単方向送信の場合、第1の端末(110)は、ネットワーク(150)を介して、もう1つの端末(120)に送信するために、ローカル位置でビデオデータを符号化することができる。第2の端末(120)は、ネットワーク(150)から、もう1つの端末の符号化されたビデオデータを受信し、符号化されたデータを復号し、復元されたビデオデータを表示することができる。単方向データ送信は、媒体供給用途などで一般的である可能性がある。
図1は、例えば、ビデオ会議中に発生する符号化されたビデオの双方向送信をサポートするために設けられる第2の対の端末(130、140)を示す。データの双方向送信の場合、各端末(130、140)は、ネットワーク(150)を介して、もう1つの端末に送信するために、ローカル位置で取り込まれたビデオデータを符号化することができる。各端末(130、140)はまた、もう1つの端末によって送信された符号化されたビデオデータを受信し、符号化されたデータを復号し、復元されたビデオデータをローカル表示デバイスに表示することができる。
図1において、端末(110~140)は、サーバ、パーソナルコンピュータ、及びスマートフォン、及び/又は任意の他のタイプの端末として示さてもよい。例えば、端末(110~140)は、ラップトップコンピュータ、タブレットコンピュータ、媒体プレーヤー、及び/又は専用のビデオ会議機器であってもよい。ネットワーク(150)は、例えば、有線及び/又は無線通信ネットワークを含む、端末(110~140)の間で符号化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(150)は、回線交換及び/又はパケット交換チャネルにおいてデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又はインターネットを含む。本議論の目的のために、ネットワーク(150)のアーキテクチャ及びトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない可能性がある。
図2は、開示する主題の用途の例として、ストリーミング環境におけるビデオエンコーダ及びデコーダの配置を示す。開示する主題は、例えば、ビデオ会議、デジタルTV、及びCD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
図2に示されるように、ストリーミングシステム(200)は、ビデオソース(201)及びエンコーダ(203)を含む、取込みサブシステム(213)を含んでもよい。ビデオソース(201)は、例えば、デジタルカメラであってもよく、非圧縮のビデオサンプルストリーム(202)を作成するように構成されてもよい。符号化されたビデオビットストリームと比較すると、非圧縮のビデオサンプルストリーム(202)は、大きいデータ量を提供する可能性があり、カメラ(201)に結合されたエンコーダ(203)によって処理することができる。エンコーダ(203)は、以下でより詳細に説明されるように、開示する主題の態様を可能にするか又は実装するために、ハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができる。サンプルストリームと比較すると、符号化されたビデオビットストリーム(204)は、小さいデータ量を有する可能性があり、将来の使用のためにストリーミングサーバ(205)に記憶することができる。1つ以上のストリーミングクライアント(206)は、ストリーミングサーバ(205)にアクセスして、符号化されたビデオビットストリーム(204)のコピーであり得るビデオビットストリーム(209)を検索することができる。
一実施形態では、ストリーミングサーバ(205)は、メディアアウェアネットワーク要素(MANE)として機能してもよい。例えば、ストリーミングサーバ(205)は、潜在的に異なるビットストリームを、1つ以上のストリーミングクライアント(206)に合わせるために、符号化されたビデオビットストリーム(204)を取り除くように構成されてもよい。一実施形態では、MANEは、ストリーミングシステム(200)においてストリーミングサーバ(205)とは別に設置されてもよい。
ストリーミングクライアント(206)は、ビデオデコーダ(210)及び表示装置(212)を含むことができる。ビデオデコーダ(210)は、例えば、符号化されたビデオビットストリーム(204)の着信コピーである、ビデオビットストリーム(209)を復号し、表示装置(212)又は別のレンダリングデバイス(図示せず)上でレンダリングすることができる、発信ビデオサンプルストリーム211を作成することができる。いくつかのストリーミングシステムでは、ビデオビットストリーム(204、209)は、特定のビデオ符号化/圧縮規格に従って符号化することができる。このような規格の例は、ITU-T勧告H.265を含むが、これに限定されない。開発されているのは、バーサタイルビデオコーディング(VVC)として一般的に知られているビデオ符号化規格である。本開示の実施形態は、VVCの文脈が使用されてもよい。
図3は、本開示の一実施形態に係る表示装置(212)に取り付けられたビデオデコーダ(210)の例示的な機能ブロック図を示す。
ビデオデコーダ(210)は、チャネル(312)、受信機(310)、バッファメモリ(315)、エントロピーデコーダ/パーサ(320)、スケーラ/逆変換ユニット(351)、イントラ予測ユニット(352)、動き補償予測ユニット(353)、アグリゲータ(355)、ループフィルタユニット(356)、参照ピクチャメモリ(357)及び現在のピクチャメモリ(358)を含んでもよい。少なくとも1つの実施形態では、ビデオデコーダ(210)は、集積回路、一連の集積回路、及び/又は他の電子回路を含んでもよい。また、ビデオデコーダ(210)は、関連するメモリを備えた1つ以上のCPU上で実行されるソフトウェアで部分的又は完全に具体化されてもよい。
この実施形態及び他の実施形態では、受信機(310)は、デコーダ(210)によって復号されるべき1つ以上の符号化ビデオシーケンスを受信してもよく、各符号化ビデオシーケンスの復号は、他の符号化ビデオシーケンスから独立している。符号化ビデオシーケンスは、符号化されたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る、チャネル(312)から受信されてもよい。受信機(310)は、それぞれの使用エンティティ(図示せず)に転送されてもよい、他のデータ、例えば、符号化オーディオデータ及び/又は補助データストリームとともに、符号化されたビデオデータを受信することができる。受信機(310)は、符号化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(315)は、受信機(310)とエントロピーデコーダ/パーサ(320)(以降の「パーサ」)との間に結合されてもよい。受信機(310)が、十分な帯域幅及び可制御性を有する記憶/転送装置から、又は等時性同期ネットワークからデータを受信する際に、バッファメモリ(315)は、必要とされないか又は小さくてもよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(315)は、必要になる場合があり、比較的大きくすることができ、適応性のサイズにすることができる。
ビデオデコーダ(210)は、エントロピー符号化ビデオシーケンスからシンボル(321)を再構築するパーサ(320)を含んでもよい。これらのシンボルのカテゴリには、デコーダ(210)の動作を管理するために使用される情報と、図2に示すように、デコーダに結合される表示装置(212)などのレンダリングデバイスを制御するための潜在的情報と、が含まれる。レンダリングデバイスのための制御情報は、補足強化情報(SEI)メッセージ又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってもよい。パーサ(320)は、受信された、符号化ビデオシーケンスに対して解析/エントロピー復号を行うことができる。符号化ビデオシーケンスの符号化は、ビデオ符号化技術又は規格に従うことができ、可変長符号化、ハフマン符号化、文脈依存を有するか又は有しない算術符号化などを含む、当業者の既知の様々な原理に従うことができる。パーサ(320)は、グループに対応する少なくとも1つのパラメータに基づいて、符号化ビデオシーケンスから、ビデオデコーダにおける画素の少なくとも1つのサブグループのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(320)は、符号化ビデオシーケンスから変換係数、量子化器パラメータ値、動きベクトルなどのような情報を抽出することもできる。
パーサ(320)は、シンボル(321)を作成するために、バッファメモリ(315)から受信されたビデオシーケンスに対してエントロピー復号/解析動作を実行することができる。
シンボル(321)の再構築は、符号化されたビデオピクチャ又はその一部(例えば、インター及びイントラピクチャ、インター及びイントラブロック)のタイプ及び他の要因に応じて、複数の異なるユニットに関連することができる。どのようなユニットに関連するか、及び、どのように関連するかは、パーサ(320)によって、符号化ビデオシーケンスから解析されたサブグループ制御情報によって制御できる。パーサ(320)と以下の複数のユニットとの間のそのようなサブグループ制御情報のフローは、明瞭にするために図示されていない。
既に述べた機能ブロックに加えて、デコーダ210は、以下に説明するように、いくつかの機能ユニットに概念的に細分できる。商業的制約で動作する実際の実装操作では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的には互いに統合できる。しかしながら、開示する主題を説明する目的のために、以下の機能ユニットへの概念的な細分は適切である。
1つのユニットは、スケーラ/逆変換ユニット(351)であってもよい。スケーラ/逆変換ユニット(351)は、量子化された変換係数と、どのような変換を使用するかと、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報とを、パーサ(320)からシンボル(321)として受信する。スケーラ/逆変換ユニット(351)は、アグリゲータ(355)に入力できるサンプル値を含むブロックを出力することができる。
いくつかの場合では、スケーラ/逆変換ユニット(351)の出力サンプルは、イントラ符号化ブロック、すなわち、以前に再構築されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構築された部分からの予測情報を使用することができるブロックに関係することができる。このような予測情報は、イントラピクチャ予測ユニット(352)によって提供されてもよい。いくつかの場合では、イントラピクチャ予測ユニット(352)は、現在のピクチャメモリ(358)からの現在の(部分的に再構築された)ピクチャから取り出された、周囲の既に再構築された情報を使用して、再構築中のブロックと同じサイズ及び形状のブロックを生成する。アグリゲータ(355)は、いくつかの場合では、サンプルごとに基づいて、イントラ予測ユニット(352)が生成した予測情報を、スケーラ/逆変換ユニット(351)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(351)の出力サンプルは、インター符号化された、潜在的に動き補償されたブロックに関係することができる。このような場合、動き補償予測ユニット(353)は、参照ピクチャメモリ(357)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(321)に従って動き補償した後で、出力サンプル情報を生成するように、これらのサンプルは、アグリゲータ(355)によって、スケーラ/逆変換ユニット(351)の出力に追加することができる(この場合、残差サンプル又は残差信号と呼ばれる)。動き補償予測ユニット(353)が予測サンプルを取り出すときの参照ピクチャメモリ(357)内のアドレスは、動きベクトルによって制御することができる。動きベクトルは、例えば、X、Y、及び参照ピクチャ成分を有し得る、シンボル(321)の形態で動き補償予測ユニット(353)に利用可能であってもよい。動き補償は、サブサンプルの正確な動きベクトルが使用中であるときに、参照ピクチャメモリ(357)から取り出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
アグリゲータ(355)の出力サンプルは、ループフィルタユニット(356)において様々なループフィルタリング技術によって採用されてもよい。ビデオ圧縮技術は、符号化ビデオビットストリームに含まれ、パーサ(320)からのシンボル(321)としてループフィルタユニット(356)に利用可能になるパラメータによって制御することができ、そして、符号化ピクチャ又は符号化ビデオシーケンスの(デコード順で)前の部分の復号中に取得されたメタ情報に応じるとともに、以前に再構築されループフィルタリングされたサンプル値に応じることもできる、インループフィルタ技術を含むことができる。
ループフィルタユニット(356)の出力は、表示装置(212)などのレンダリングデバイスへ出力できるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(357)に記憶できる、サンプルストリームであり得る。
特定の符号化ピクチャは、完全に再構築されると、将来の予測のために参照ピクチャとして使用することができる。符号化ピクチャが完全に再構築され、符号化ピクチャが(例えば、パーサ(320)によって)参照ピクチャとして識別されると、現在の参照ピクチャは、参照ピクチャメモリ(357)の一部になることができ、そして、後続の符号化ピクチャの再構築を開始する前に、新しい現在のピクチャメモリを再割り当てることができる。
ビデオデコーダ(210)は、例えばITU-T Rec.H.265などのような規格において文書化され得る所定のビデオ圧縮技術に従って、復号動作を実行することができる。符号化ビデオシーケンスは、ビデオ圧縮技術文書又は規格、特に、その中のプロファイル文書で指定されるように、符号化ビデオシーケンスがビデオ圧縮技術又は規格の構文に従うという意味で、使用されているビデオ圧縮技術又は規格によって指定された構文に従うことができる。いくつかのビデオ圧縮技術又は規格とのコンプライアンスのために、符号化ビデオシーケンスの複雑さは、ビデオ圧縮技術又は規格のレベルによって定義された範囲内にあってもよい。いくつかの場合では、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、いくつかの場合では、仮想参照デコーダ(HRD)仕様及び符号化ビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(310)は、符号化されたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、符号化ビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切に復号し、かつ/あるいは、元のビデオデータをより正確に再構築するためにビデオデコーダ(210)によって使用されてもよい。追加のデータは、例えば、時間的、空間的又はSNR拡張層、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態にすることができる。
図4は、本開示の一実施形態に係るビデオソース(201)に関連しているビデオエンコーダ(203)の例示的な機能ブロック図を示す。
ビデオエンコーダ(203)は、例えば、ソースコーダ(430)であるエンコーダ、符号化エンジン(432)、(ローカル)デコーダ(433)、参照ピクチャメモリ(434)、予測器(435)、送信機(440)、エントロピーコーダ(445)、コントローラ(450)及びチャネル(460)を含んでもよい。
エンコーダ(203)は、エンコーダ(203)で符号化されるビデオ映像を撮影することができるビデオソース(201)(エンコーダの一部ではない)からビデオサンプルを受信することができる。
ビデオソース(201)は、エンコーダ(203)によって符号化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、・・・)、任意の色空間(例えば、BT.601 Y CrCB、RGB、・・・)、及び任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供することができる。メディアサービスシステムでは、ビデオソース(201)は、以前に準備されたビデオを記憶する記憶装置であってもよい。ビデオ会議システムでは、ビデオソース(201)は、ローカル画像情報をビデオシーケンスとして撮影するカメラであってもよい。ビデオデータは、順番に見られるときに動きが与えられる複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことができる。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明では、サンプルを中心に説明する。
一実施形態によれば、エンコーダ(203)は、リアルタイムで、又はアプリケーションが要求する任意の他の時間制約の下で、ソースビデオシーケンスのピクチャを符号化し、符号化ビデオシーケンス(443)に圧縮することができる。適切な符号化速度を実施することは、コントローラ(450)の機能の1つである。コントローラ(450)は、以下で説明されるように、他の機能ユニットも制御し、他のユニットに機能的に結合されてもよい。明瞭にするために、結合は図示されていない。コントローラ(450)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、・・・)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(450)の他の機能が特定のシステム設計に最適化されたビデオエンコーダ(203)に関係する場合があるため、当業者であれば、これらの機能を容易に識別することができる。
一部のビデオエンコーダは、当業者が「符号化ループ」として容易に認識できるもので動作する。過度に簡略化した説明として、符号化ループは、ソースコーダ(430)(符号化対象となる入力ピクチャ及び参照ピクチャに基づくシンボルの作成を担当する)の符号化部分と、エンコーダ(203)に埋め込まれた(ローカル)デコーダ(433)と、から構成され得る。この(ローカル)デコーダ(433)は、シンボルを再構築してサンプルデータを作成し、そして、シンボルと符号化ビデオビットストリームとの間の圧縮が特定のビデオ圧縮技術で無損失である場合に、(リモート)デコーダもサンプルデータを作成する。再構築されたサンプルストリームは、参照ピクチャメモリ(434)に入力されてもよい。シンボルストリームの復号により、デコーダの位置(ローカル又はリモート)に関係なくビット正確な結果が得られるため、参照ピクチャメモリのコンテンツもローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えれば、エンコーダの予測部分は、復号中に予測を使用するときに、デコーダが「見る」とまったく同じサンプル値を参照ピクチャサンプルとして「見る」。この参照ピクチャの同期性の基本原理(及び、例えば、チャネル誤差に起因して同期性を維持できない場合にドリフトが生じること)は、当業者の既知のものである。
「ローカル」デコーダ(433)の動作は、前文で図3に関連して既に詳細に説明された、ビデオデコーダ(210)などの「リモート」デコーダの動作と同様であり得る。しかしながら、シンボルが使用可能であり、エントロピーコーダ(445)及びパーサ(320)による符号化ビデオシーケンスへのシンボルの符号化/復号が無損失である可能性があるため、チャネル(312)、受信機(310)、バッファメモリ(315)、及びパーサ(320)を含むデコーダ(210)のエントロピー復号部分は、ローカルデコーダ(433)では完全に実装されない場合がある。
これで分かるように、デコーダに存在する解析/エントロピー復号以外の如何なるデコーダ技術も、対応するエンコーダに実質的に同一の機能的形態で、必ず存在する必要がある。このため、開示する主題は、エンコーダ動作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
その動作の一部として、ソースコーダ(430)は、「参照フレーム」として指定されたビデオシーケンスからの1つ以上の以前に符号化されたフレームを参照して、入力フレームを予測的に符号化する、動き補償予測符号化を実行してもよい。このようにして、符号化エンジン(432)は、入力フレームの画素ブロックと、入力フレームへの予測基準として選択され得る参照フレームの画素ブロックとの差異を符号化する。
ローカルビデオデコーダ(433)は、ソースコーダ(430)で作成されたシンボルに基づいて、参照フレームとして指定され得るフレームの符号化ビデオデータを復号することができる。符号化エンジン(432)の動作は、有利なことには、非可逆プロセスであってもよい。符号化ビデオデータがビデオデコーダ(図4に示されていない)で復号され得るとき、再構築されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(433)は、ビデオデコーダによって参照フレームに対して実行され得る復号プロセスを再現し、再構築された参照フレームを参照ピクチャメモリ(434)に記憶させることができる。このようにして、エンコーダ(203)は、遠端ビデオデコーダによって取得される、再構築された参照フレームと共通するコンテンツ(送信エラー無し)を有する再構築された参照フレームのコピーをローカルに記憶することができる。
予測器(435)は、符号化エンジン(432)の予測検索を実行することができる。つまり、符号化対象となる新しいフレームについて、予測器(435)は、(候補の参照画素ブロックとしての)サンプルデータ、又は参照ピクチャの動きベクトル、ブロック形状など、新しいピクチャの適切な予測基準として機能し得る特定のメタデータを参照ピクチャメモリ(434)で検索することができる。予測器(435)は、適切な予測基準を見つけるために、サンプルブロック/画素ブロックごとに動作することができる。いくつかの場合では、予測器(435)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(434)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
コントローラ(450)は、例えば、ビデオデータを符号化するために使用されるパラメータ及びサブグループパラメータの設定を含む、ビデオエンコーダ(203)の符号化動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(445)でエントロピー符号化できる。エントロピーコーダは、例えば、ハフマン符号化、可変長符号化、算術符号化などの当業者の既知の技術に従って、シンボルを無損失で圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスに変換する。
送信機(440)は、符号化されたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る、通信チャネル(460)を介した送信の準備のために、エントロピーコーダ(445)によって作成された符号化ビデオシーケンスをバッファリングすることができる。送信機(440)は、ビデオエンコーダ(203)からの符号化ビデオデータを、送信されるべき他のデータ、例えば、符号化オーディオデータ及び/又は補助データストリーム(ソースは示されていない)とマージすることができる。
コントローラ(450)は、エンコーダ(203)の動作を管理することができる。符号化中に、コントローラ(450)は、各符号化ピクチャに特定の符号化ピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得る符号化技術に影響を及ぼす可能性がある。例えば、ピクチャは、イントラピクチャ(Iピクチャ)、予測ピクチャ(Pピクチャ)、双方向予測ピクチャ(Bピクチャ)として割り当てられることが多い。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のいかなるフレームを使用せずに符号化及び復号され得るものであってもよい。一部のビデオコーデックは、例えば、独立したデコーダリフレッシュ(IDR)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者であれば、Iピクチャの変形及びそれらのそれぞれの用途及び特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測により、符号化及び復号され得るものであってもよい。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測により、符号化及び復号され得るものであってもよい。同様に、多重予測ピクチャは、単数のブロックの再構築のために2つを超えた参照ピクチャ及び関連メタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ、4×4、8×8、4×8、又は16×16サンプルのブロック)に空間的に細分され、ブロックごとに符号化され得る。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当てによって決定された他の(既に符号化された)ブロックを参照して、予測的に符号化され得る。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、或いは、同一のピクチャの既に符号化されたブロックを参照して、予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャの画素ブロックは、1つの以前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して、非予測的に符号化されてもよい。Bピクチャのブロックは、1つ又は2つの以前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して、予測的に符号化されてもよい。
ビデオエンコーダ(203)は、ITU-T勧告H.265.などの所定のビデオ符号化技術又は規格に従って符号化動作を実行することができる。その動作中、ビデオエンコーダ(203)は、入力ビデオシーケンスの時間的及び空間的冗長性を利用する予測符号化動作を含む、様々な圧縮動作を実行することができる。したがって、符号化ビデオデータは、使用されるビデオ符号化技術又は規格によって指定された構文に従う場合がある。
一実施形態では、送信機(440)は、符号化されたビデオとともに追加のデータを送信してもよい。ビデオエンコーダ(203)は、このようなデータを符号化ビデオシーケンスの一部として含んでもよい。追加のデータは、時間的/空間的/SNR拡張層、冗長なピクチャやスライスなどの他の形態での冗長データ、補足強化情報(SEI)メッセージ、ビデオユーザビリティ情報(VUI)パラメータセットフラグメントなどを含んでもよい。
時間フィルタリングは、隣接フレームとの時間的冗長性を使用して、現在フレームのノイズを除去しようとする技術である。時間フィルタリングは、多用途ビデオ符号化、及び(JVET-O0549で記載されるように)バーサタイルビデオコーディング(VVC)コーデックのテストモデルであるテストモデル6(VTM6)、並びに、AV1コーデコーデック用のエンコーダであるLibaom及びSVT-AV1に適用される。フィルタの正確な実装は、エンコーダ間で異なる。
モード決定中に、エンコーダは、各ブロックのレート*ラムダ+歪みメトリックを最小化しようとする場合がある。
現在のピクチャの後に同一の後続のピクチャが続く場合、現在のピクチャの符号化ブロックをスキップすることができる。この場合、レート*ラムダ+2*歪みを最小化することができる。VTMは、時間層ごとに異なる量子化パラメータ(QP)値を設定することによりランダムアクセス(RA)に近似する。
次のピクチャがわずかに異なるだけである場合、符号化ブロックは、依然としてスキップされる可能性が高い。この場合、レート*ラムダ+歪み1+歪み2を最小化することができる。2つの歪みを別々に計算するのではなく、符号化ブロックと2つのピクチャの元のバージョンの平均との間の歪みを計算することができる。これは、一時的にフィルタリングされた元のピクチャを使用する動機の1つである。元の画像が異なる場合には、第1のピクチャの復号されたサンプル値が第2のピクチャに再利用される可能性がなくなるため、フィルタ強度が急激に低下する可能性がある。
エンコーダにおける時間フィルタの一般的な適用プロセスは、以下の通りであり得る。
ステップ1では、エンコーダがピクチャを読み取る。
ステップ2では、ピクチャが符号化階層で十分に低い場合、ピクチャを符号化する前にフィルタリングする。そうでない場合は、ピクチャをフィルタリングせずに符号化する。
ステップ3では、時間フィルタを現在フレームに適用すると決定した場合、動き推定及び動き補償法を隣接ピクチャに適用する。このステップの目的は、各隣接フレーム内の、現在ブロックに最も近いものを見つけることである。
ステップ4では、各隣接フレームから全ての類似ブロックを収集すると、元のピクチャの全てのサンプル値を、次の式(1)を使用して符号化する前に、エンコーダによってフィルタリング済みサンプル値Inに置き換える。
IOは、元のサンプル値であり、Ir(i)は、動き補償後の隣接ピクチャiの同一位置のサンプル値であり、Wr(i,a)は、利用可能な隣接ピクチャの数がaである場合の隣接ピクチャiの重みである。
重みWr(i,a)は、エンコーダにより、以下の式(2)を用いて算出される。
eは、指数定数であってもよい。ΔI(i)は、以下の式(3)を用いて算出される。
関数fは、ΔIに基づいて指数の因子を計算し、正確な関数は、実装によって異なる。xn及びxdは、重みを修正する他の因子であり、ローカル平均ME誤差などの他の画素レベルの特性に依存してもよいか又はQPのようなブロック/フレームレベルの特性に依存してもよい。最後に、sは、最終的な重み計算のためのスケール因子である。
時間フィルタの実装は、上記のように実行できるが、実装の詳細が異なる場合がある。実装は、主に次の点で異なる。
(A)適用可能なフレーム:実装は、ピクチャグループ(GOP)階層の下位層に時間フィルタリングを適用することができるが、それが決定される方法にはわずかな変動がある。例えば、VTMでは、ピクチャ順序カウント(POC)%8==0を持つランダムアクセス(RA)ピクチャと、POC%4==0の低遅延(LD)ピクチャをフィルタリングする。全イントラ(AI)ピクチャをフィルタリングしない。また、Libaom及びSVT-AV1では、全てのキーフレーム及びALTREFフレームを時間的にフィルタリングする。
(B)参照フレームの数:時間フィルタリングプロセスに使用される隣接フレームの数は、エンコーダごとに異なる場合がある。VTMは、RA符号化条件下で4つのフレームを使用し、LD符号化構成で2つの参照フレームを使用することがある。libaom及びSVTエンコーダは、構成可能な参照フレームの数を有する。しかしながら、デフォルト値は7つの参照フレームに設定されてもよい。
(C)使用されるブロックのサイズ:VTMは、動き推定(ME)、動き補償(MC)、及びフィルタリングプロセスを8×8ブロック基底で実行する一方、libaom及びSVTは、このプロセスを32×32ブロック基底で実行することがある。デコーダは、ME誤差が大きすぎると検出した場合、Libaom及びSVTの両方は、16×16レベルの処理に切り替わることがある。
(D)動き推定:実装は、階層的動き推定レベルの数、サブサンプリングされた参照フレーム及び現在フレームから検索を開始するか否か、動き推定が実行された最小の小数画素、及び動き補償に使用されるフィルタ、という面で異なる場合がある。
(E)重み計算方法:平均化前に同一位置に配置された各画素に割り当てられた重みは、実装が異なる可能性がある主要な領域である。重み計算は、様々な因子の関数で行うことができる。現在画素の動き推定誤差は、実装で一般的に使用される因子であり、結果の重みを変更するためにさらに多くの因子を使用することができる。例えば、VVCでは、現在フレームのME誤差及びQPを使用して、重みを決定してもよい。Libaomでは、現在画素の周囲のウィンドウのME誤差、現在フレームのノイズレベル、及び動きベクトルの大きさを使用して、重みを決定してもよい。SVT-AV1では、現在画素の周辺のウィンドウのME誤差及び現在フレームのノイズレベルを使用して、重みを決定してもよい。
また、使用される因子の違いにもかかわらず、実装は、以下の式(4)を使用して重みを決定してもよい。
この式で使用される項は、既に前述されている。少なくとも1つの因子(例えば、画素のME誤差/現在画素の周辺のウィンドウの平均ME誤差)が画素ごとに異なるため、各画素の重みは、一意であり、繰り返し計算する必要がある場合がある。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わせて使用されてもよい。さらに、本開示の各実施形態(例えば、方法、エンコーダ、及びデコーダ)は、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されるプログラムを実行する。本開示の実施形態は、時間フィルタリングの態様を、以上及び以下に説明されるように実装してもよい。
本開示の実施形態は、本開示に記載されている、時間フィルタリングのための技術だけでなく、以下に説明されるような指数計算を含む任意の方法のための技術を実装してもよい。
本開示の実施形態は、重みwを算出するための重み導出式を実装してもよい。重みwを算出するための重み導出式の一般式は、以下の式(5)のように示され、式中、eは指数定数であり、sn1、sn2、sd1、sd2、xn1、xn2、xd1、xd2は実数である。実施形態によって、因子の数が変化する可能性がある。例えば、一実施形態では、この式は、sn1、sd1、xn1、xd1、のみを含む。別の実施形態では、この式は、sn1、sn2、sn3、sd1、sd2、sd3、xn1、xn2、xn3、xd1、xd2、xd3を含んでもよい。
このような一般式を有する理由は、以下の通りである。
(A)指数の分子の項(例えば、xn1、xn2、..)は、大きくなると、計算される最終的な重みを減少させる因子である。例えば、このような因子の1つは、動き推定誤差である可能性がある。動き推定誤差が大きい場合、重みを小さくする必要があるため、動き推定誤差に関連する因子が分子に配置される。このような因子が複数存在する可能性があるため、一般式の分子には複数の因子が存在する可能性がある。
(B)指数の分母の項(例えば、xd1、xd2、..)は、大きくなると、計算される最終的な重みを増加させる因子である。例えば、このような因子の1つは、量子化パラメータ(QP)である可能性がある。量子化パラメータ(QP)が大きい場合、重みを小さくする必要があるため、QP因子に関連するパラメータが分母に配置される。このような因子が複数存在する可能性があるため、一般式の分母には複数の因子が存在する可能性がある。
(C)分子の項sn1、sn2..には、最終的なスケール因子が含まれ得る。指数関数が1未満の値になる可能性があるため、最終的な重みをスケーリングすることができ、固定小数点精度で動作するための、スケーリングを実行する必要がある場合がある。これらの項には、計算される最終的な重みに線形に影響を与える可能性のあるパラメータも含まれ得る。例えば、1つのパラメータは、フィルタリングされるフレームのノイズレベルである可能性があり、ノイズの量が多いほど、重みが比例して増加する可能性がある。このようなパラメータは複数存在する可能性があり、スケール因子も分子に含まれているため、一般式の分子には複数の因子が含まれる場合がある。
(D)分母の項sd1、sd2..は、最終的な重みに逆の影響を与える可能性のある因子を含み得る。このような因子は、例えば、現在フレームからの参照フレームのPOC距離を含んでもよい。このような場合、POC距離が大きいほど、参照フレームに割り当てられる重みは低くなる。このようなパラメータが複数存在する可能性があるため、一般式の分母には複数の因子が含まれる場合がある。
実施形態によれば、エンコーダは、浮動小数点数ではなく、固定小数点数として指数関数の指数(例えば、項xn1、xn2..及びxd1、xd2..)を計算してもよい。
一実施形態によれば、固定小数点表示は、2
n (nは整数である)ビットを使用して表されてもよい、値nは、固定小数点数が2
n をオーバーフローしないように選択してもよい。
別の実施形態では、固定小数点表示は、下部の浮動小数点数がスケール因子による除算によって取得されるように、スケール因子を使用してもよい。スケーリング動作を単純な二値論理シフト演算で実行することができるように、さらにスケール因子を2の累乗になるように選択してもよい。例えば、スケール因子は、25に等しくてもよい。浮動小数点数xn1は、xn1_fixed=xn1×25を計算し、それを最も近い整数に丸めることにより、固定小数点数として書き込んでもよい。xn2と別の整数xn2の乗算は、(xn1_fixed×xn2)>>5として実行されてもよい。
一実施形態では、下部の浮動小数点数を取得するためのスケールアップ及びスケールダウンが値の精度を著しく低下させないように、スケール因子を選択してもよい。
別の実施形態では、固定小数点表示を取得するための浮動小数点のスケールアップ動作及び上記固定小数点表示での計算の実行が、エンコーダの性能を著しく低下させないように、スケール因子を選択してもよい。例えば、指数関数の指数の計算に使用される各因子(例えば、平均動き推定誤差、フレームのノイズレベル、及び動きベクトルの大きさ)自体を固定小数点表示に変換してもよい。
実施形態によれば、エンコーダは、上記計算を使用する代わりに、ルックアップテーブルを使用して、指数関数を取得してもよい。
一実施形態によれば、einteger+fraction=einteger×efractionであるため、入力値の小数部用のルックアップテーブル及び入力値の整数部用のルックアップテーブルである2つのルックアップテーブルを使用して、指数関数を計算してもよい。
一実施形態では、ルックアップテーブルは、浮動小数点数を適切にスケーリングすることによって導出される固定小数点数を含んでもよい。
一実施形態では、exは、等価的に2x.log2eに変換され、さらに、2intege2fractionとして書き込まれてもよい。ルックアップテーブルを使用して2fraction部を計算し、そして論理シフト演算を用いて2intege部を取得してもよい。
一実施形態では、ルックアップ動作の単一命令/複数データ(SIMD)実装を効率的に実行できるように、ルックアップテーブルに記憶される値は、それぞれNビット幅以下であってもよい。例えば、Nは8に等しくてもよく、アドバンストベクトル拡張(AVX)及びアドバンストベクトル拡張2(AVX2)の命令セットに対してSIMDルックアップを効率的に実行することができる。
一実施形態では、ルックアップ動作のSIMD実装を効率的に実行できるように、ルックアップテーブルのサイズは、N個の値以下であってもよい。例えば、Nは、16に等しくてもよく、AVX及びAVX2の命令セットに対してSIMDルックアップを効率的に実行することができる。
実施形態によれば、エンコーダは、所与の同一位置に配置された画素の最終的な重みを取得するために指数関数で乗算/除算される値sn1、sn2..及びsd1、sd2..を、浮動小数点数を回避するために、乗算の前に固定小数点数に変換してもよい。値が変換される計算中の小数点は、最終的なパフォーマンスを変化させることができる。
一実施形態では、浮動小数点数の固定小数点表示への変換に使用されるスケール因子は、スケーリング動作を単純な二値論理シフト演算で実行することができるように、2の累乗であってもよい。
一実施形態では、テーブルから値をルックアップした後の更なる乗算を必要としないように、値sn1、sn2..及びsd1、sd2..を指数関数のためのルックアップテーブルに直接的に組み込んでもよい。一例として、ルックアップテーブルの既存の値に因子
を乗算することにより、ルックアップテーブルへの組み込みを実行することができる。一例では、sn1、sn2..及びsd1、sd2..を組み込んだ後に、ルックアップテーブルの値を固定小数点数に変換してもよい。
実施形態によれば、エンコーダは、sn1、sn2..及びsd1、sd2..の間の不変値を乗算/除算することにより不変値の有効値を計算した後、不変値を固定小数点に変換してもよい。固定小数点数は、後で画素ごとの重み計算中に固定小数点に変換されず、各画素の重み計算中に直接的に使用されてもよい。値が変換される計算中の小数点は、最終的なパフォーマンスを変化させることができる。これらの値を画素ごとのループ以外に固定小数点に変換すると、冗長な計算が節約されるため、より効率的になる。
一実施形態では、画素のブロックに対して一定である指数関数の指数(xn1、xn2..及びxd1、xd2..)の因子のサブセットを事前に計算し、それらの合成値を記憶してもよい。画素あたりの重みを計算する場合、xn1、xn2..及びxd1、xd2..のそれぞれを乗算/除算せず、画素ごとに変化するものだけを、不変因子の合計値で乗算/除算してもよい。
一実施形態では、浮動小数点数の固定小数点表示への変換に使用されるスケール因子は、スケーリング動作を単純な二値論理シフト演算で実行することができるように、2の累乗であってもよい。
一実施形態では、xn1、xn2..及びxd1、xd2..の間の不変因子を乗算/除算することにより不変因子の有効値を計算した後、不変因子を固定小数点に変換してもよい。固定小数点数は、後で画素ごとの重み計算中に固定小数点に変換されず、各画素の重み計算中に直接的に使用されてもよい。値が変換される計算中の小数点は、最終的なパフォーマンスを変化させることができる。これらの値を画素ごとのループ以外で固定小数点に変換すると、冗長な計算が節約されるため、より効率的になる。
本開示の実施形態は、少なくとも1つのプロセッサと、コンピュータコードを記憶するメモリと、を含んでもよい。コンピュータコードは、上記少なくとも1つのプロセッサによって実行されると、上記少なくとも1つのプロセッサに、本開示の実施形態の機能を実行させるように構成されてもよい。エンコーダ(又はデコーダ)は、少なくとも1つのプロセッサ及びメモリを含んでもよい。エンコーダ(又はデコーダ)は、本明細書で記載される実施形態の機能を実行してもよい。
例えば、図5を参照して、本開示のエンコーダ(500)は、少なくとも1つのプロセッサと、コンピュータコードを記憶するメモリと、を含んでもよい。コンピュータ命令は、時間フィルタコード(510)及び符号化コード(520)を含んでもよい。
時間フィルタコード(510)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、現在のピクチャに時間フィルタを適用するように構成されてもよい。一例として、時間フィルタコード(510)は、指数関数取得コード(511)、スケール関数取得コード(512)、重み取得コード(513)、フィルタリング済みサンプル値取得コード(514)、及びサンプル値置き換えコード(515)を含んでもよい。
指数関数取得コード(511)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、少なくとも1つの第1の因子を持つ分子(例えば、xn1、xn2..)と、少なくとも1つの第2の因子を持つ分母(例えば、xd1、xd2..)と、を持つ指数を含む指数関数を、指数関数の指数を固定小数点数として計算すること、及び/又は、少なくとも1つのルックアップテーブルを使用することにより取得させるように構成されてもよい。
スケール関数取得コード(512)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、少なくとも1つの第3の因子を持つ分子(例えば、sd1、sd2..)と、少なくとも1つの第4の因子を持つ分母(例えば、sn1、sn2..)と、を持つ指数を含むスケール関数を、スケール関数の因子を固定小数点数として計算すること、及び/又は、少なくとも1つのルックアップテーブルを使用することにより取得させるように構成されてもよい。
重み取得コード(513)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、指数関数にスケール関数を乗算する(例えば、式(5)を参照)ことにより少なくとも1つの隣接ピクチャの重みを取得させるように構成されてもよい。
フィルタリング済みサンプル値取得コード(514)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、現在のピクチャのサンプル値及び少なくとも1つの隣接ピクチャの重みに基づいて、現在のピクチャのフィルタリング済みサンプル値を取得させるように構成されてもよい。
サンプル値置き換えコード(515)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、現在のピクチャのサンプル値をフィルタリング済みサンプル値に置き換えさせるよう構成されてもよい。
実施形態によれば、時間フィルタコード(510)は、現在のピクチャの画素のうちの各画素に、指数関数取得コード(511)、スケール関数取得コード(512)、重み取得コード(513)、フィルタリング済みサンプル値取得コード(514)、及びサンプル値置き換えコード(515)の1つ以上を全体的又は部分的に反復的に実行させるように構成されるループコードを含んでもよい。1つ以上の実施形態によれば、指数関数取得コード(511)及びスケール関数取得コード(512)のうちの1つ以上は、指数関数及び/又はスケール関数の値を浮動小数点表示から固定小数点表示に変換する変換コードを含んでもよく、変換コードは、ループコードの内部又は外部に含まれてもよい。
符号化コード(520)は、本開示の1つ以上の実施形態を参照して説明したように、少なくとも1つのプロセッサに、時間フィルタを適用した後に現在のピクチャを符号化させるように構成されてもよい。
1つ以上の実施形態によれば、コンピュータコードは、本開示の実施形態を参照して説明したように、少なくとも1つのプロセッサに、1つ以上のルックアップテーブルを取得させるように構成されたルックアップテーブルコード(530)を、さらに含んでもよい。例えば、実施形態によれば、ルックアップテーブルコード(530)は、少なくとも1つのプロセッサに、ルックアップテーブルを受信させ、かつ/あるいは、その中に値を含むルックアップテーブルを構築させるように構成されてもよい。
以上で説明された本開示の実施形態の技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つ以上のコンピュータ可読媒体に物理的に記憶することができる。例えば、図6は、開示する主題の実施形態を実装することに適したコンピュータシステム(900)を示す。
コンピュータソフトウェアは、コンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって、アセンブリ、コンパイル、リンクの対象となり得る任意の適切な機械コード若しくはコンピュータ言語、又は同様のメカニズムを使用して符号化されて、直接的に実行できるか、又は、解釈、マイクロコード実行などを介して実行できる命令を備えるコードを作成することができる。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータ又はその構成要素上で実行することができる。
コンピュータシステム(900)について、図6に示される構成要素は、実際に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能の範囲に関するいかなる限定も示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(900)の例示的な実施形態で示される構成要素のうちのいずれか1つ又は組み合わせに関する任意の依存性又は必要性を有するとして解釈されるべきではない。
コンピュータシステム(900)は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(図示せず)を通じて、1人以上の人間ユーザーによる入力に応答することができる。ヒューマンインタフェースデバイスは、音声(スピーチ、音楽、環境音など)、画像(スキャンされた画像、静止画像カメラから取得した写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接的に関連しない特定の媒体を取り込むために使用することもできる。
入力ヒューマンインタフェースデバイスは、キーボード(901)、マウス(902)、トラックパッド(903)、タッチスクリーン(910)、データグローブ、ジョイスティック(905)、マイクロフォン(906)、スキャナ(907)、カメラ(908)のうちの1つ以上(それぞれ1つのみが図示されている)を含んでもよい。
コンピュータシステム(900)は、また、特定のヒューマンインタフェース出力デバイスを含んでもよい。このようなヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通じて、1人以上の人間ユーザーの感覚を刺激することができる。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイスを含んでもよい(例えば、タッチスクリーン(910)、データグローブ又はジョイスティック(905)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)。例えば、このようなデバイスは、音声出力デバイス(スピーカー(909)、ヘッドホン(図示せず)など)、視覚出力デバイス(各々がタッチスクリーン入力機能を有するか又は有さず、各々が触覚フィードバック機能を有するか又は有さず、いくつかがステレオグラフィック出力などの手段を介して2次元の視覚出力又は3次元以上の出力を出力できるCRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(910)、仮想現実眼鏡(図示せず)、ホログラフィック表示装置、及びスモークタンク(図示せず))、及びプリンタ(図示せず)であってもよい。
コンピュータシステム(900)は、また、ヒューマンアクセス可能な記憶装置と、それらに関連する媒体、例えば、CD/DVDを有するCD/DVD ROM/RW920若しくは同様な媒体(921)、サムドライブ(922)、及び、リムーバブルハードドライブ若しくはソリッドステートドライブ(923)を含む光媒体、テープやフロッピー(登録商標)ディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなど、を含むことができる。
当業者、はまた、ここに開示された主題に関連して使用される「コンピュータ可読媒体」という用語が、送信媒体、搬送波、又は他の一時的な信号を含まないことを理解すべきである。
コンピュータシステム(900)は、また、1つ以上の通信ネットワークへのインタフェースを含むことができる。ネットワークは、例えば、無線、有線、光学的であり得る。ネットワークは、さらに、ローカル、ワイドエリア、メトロポリタン、車両用及び産業用、リアルタイム、遅延耐性ネットワークなどにすることができる。ネットワークの例は、イーサネット(登録商標)、無線LANなどのローカルエリアネットワークと、GSM、3G、4G、5G、LTEなどを含むセルラーネットワークと、ケーブルTV、衛星TV、地上波放送TVを含むTV有線又は無線ワイドエリアデジタルネットワークと、CANBusなどを含む車両用及び産業用ネットワークと、を含む。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(949)(例えば、コンピュータシステム(900)のUSBポート、以下に説明するように、一般にシステムバスに接続することによってコンピュータシステム900のコアに集積されるもの(例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェース))に接続された外部ネットワークインタフェースアダプタを必要とする。これらのネットワークのいずれかを使用して、コンピュータシステム(900)は、他のエンティティと通信することができる。このような通信は、例えば、ローカル又はワイドエリアデジタルネットワークを使用して、他のコンピュータシステムに対して、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、CANbusから特定のCANbusデバイスへ)、又は双方向であってもよい。このような通信は、クラウドコンピューティング環境(955)への通信を含むことができる。上記のように、特定のプロトコルとプロトコルスタックをこれらのネットワークとネットワークインタフェースの各々に使用することができる。
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能な記憶装置、及びネットワークインタフェース(954)は、コンピュータシステム(900)のコア(940)に接続することができる。
コア(940)は、1つ以上の中央処理装置(CPU)(941)、グラフィックス処理装置(GPU)(942)、フィールドプログラマブルゲートアレイ(FPGA)(943)の形態の専用プログラマブル処理装置、及び特定のタスクのためのハードウェアアクセラレータ(944)などを含むことができる。これらのデバイスは、リードオンリメモリ(ROM)(945)、ランダムアクセスメモリ(946)、及びユーザーがアクセスできない内部ハードドライブ、SSDなどの内部大容量記憶装置(947)に、システムバス(948)を介して接続されてもよい。一部のコンピュータシステムでは、システムバス(948)は、1つ以上の物理プラグの形態でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺デバイスは、コアのシステムバス(948)に直接的に接続されてもよく、周辺バス(949)を介して接続されてもよい。周辺バスのアーキテクチャには、PCI、USBなどを含む。グラフィックアダプタ950は、コア940に含まれてもよい。
CPU(941)、GPU(942)、FPGA(943、)及びアクセラレータ(944)は、組み合わせて、前述のコンピュータコードを構成できる、特定の命令を実行することができる。そのコンピュータコードは、ROM(945)又はRAM(946)に記憶することができる。過渡的なデータは、RAM(946)に記憶することもでき、また、恒久的なデータは、例えば、内部大容量記憶装置(947)に記憶することができる。CPU(941)、GPU(942)、大容量記憶装置(947)、ROM(945)、RAM(946)などのうちの1つ以上と密接に関連付けることができるキャッシュメモリを使用して、任意のメモリデバイスに対する高速記憶及び検索を可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものであってもよく、コンピュータソフトウェア分野の当業者によく知られている利用可能な種類のものであってもよい。
限定ではなく、あくまでも一例として、アーキテクチャ(900)、具体的には、コア(940)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ以上の有形のコンピュータ可読媒体に具体化されたソフトウェアを実行した結果として、機能を提供することができる。このようなコンピュータ可読媒体は、コア内部大容量記憶装置(947)又はROM(945)などの、非一時的な性質のコア(940)の特定の記憶装置以外に、以上に説明したようにユーザーがアクセス可能な大容量記憶装置に関連付けられる媒体であってもよい。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶でき、コア(940)によって実行することができる。コンピュータ可読媒体は、特定の需要に応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(940)、具体的には、その中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(946)に記憶されたデータ構造を定義すること、及び、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を、実行させることができる。加えて又は代替として、コンピュータシステムは、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行するためにソフトウェアの代わりに又はソフトウェアと一緒に動作することができる回路(例えば、アクセラレータ(944))に配線されるか又は他の方法で具体化されたロジックの結果として、機能を提供することができる。ソフトウェアへの参照は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ可読媒体への参照は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、又はその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
本開示は、いくつかの非限定的で例示的な実施形態を記載しているが、本開示の範囲内に入る代替、置換、及び様々な代替等価物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、開示の原理を具体化するために、その精神及び範囲内にある多数のシステム及び方法を考案することができることが理解されたい。
Claims (20)
- エンコーダが実行する方法であって、
現在のピクチャに時間フィルタを適用するステップと、
前記時間フィルタを適用した後に前記現在のピクチャを符号化するステップと、を含み、
前記現在のピクチャに時間フィルタを適用するステップは、
少なくとも1つの第1の因子を持つ分子と、少なくとも1つの第2の因子を持つ分母と、を持つ指数を含む指数関数を、前記指数関数の前記指数を固定小数点数として計算すること又は少なくとも1つのルックアップテーブルを使用することにより、取得するステップと、
前記指数関数にスケール関数を乗算することにより、少なくとも1つの隣接ピクチャの重みを取得するステップと、
前記現在のピクチャのサンプル値及び前記少なくとも1つの隣接ピクチャの前記重みに基づいて、前記現在のピクチャのフィルタリング済みサンプル値を取得するステップと、
前記現在のピクチャの前記サンプル値を前記フィルタリング済みサンプル値に置き換えるステップと、を含み、
前記指数の前記分子の前記少なくとも1つの第1の因子は、前記少なくとも1つの隣接ピクチャの動き推定誤差を含み、
前記指数の前記分母の前記少なくとも1つの第2の因子は、量子化パラメータを含む、
方法。 - 前記指数関数を取得するステップは、
前記指数関数の前記指数を前記固定小数点数として計算するステップ、を含む、
請求項1に記載の方法。 - 前記固定小数点数を計算するステップは、
前記固定小数点数を2nビット(nは整数である)として表すステップ、を含む、
請求項2に記載の方法。 - 前記固定小数点数を計算するステップは、
前記少なくとも1つの第1の因子又は前記少なくとも1つの第2の因子のうちの1つの因子の浮動小数点数表示を、2の累乗を有するスケール因子でスケーリングするステップ、を含む、
請求項2に記載の方法。 - 前記指数関数を取得するステップは、
前記少なくとも1つのルックアップテーブルを使用するステップ、を含む、
請求項1に記載の方法。 - 前記少なくとも1つのルックアップテーブルは、第1のルックアップテーブル及び第2のルックアップテーブルを含み、
前記第1のルックアップテーブルは、前記指数関数の冪指数の整数部に対応し、
前記第2のルックアップテーブルは、前記指数関数の冪指数の小数部に対応している、
請求項1に記載の方法。 - 前記少なくとも1つのルックアップテーブルは、前記指数関数の固定小数点数を含む、
請求項5に記載の方法。 - 前記方法は、さらに、
前記スケール関数の因子を固定小数点表示に変換するステップ、を含み、
前記少なくとも1つの隣接ピクチャの前記重みを取得するステップは、
前記スケール関数の前記固定小数点表示に前記指数関数を乗算するステップ、を含む、
請求項1に記載の方法。 - 前記方法は、さらに、
前記現在のピクチャの画素のうちの各々の画素に対して、複数の反復のための画素ごとのループを実行するステップであり、前記複数の反復のそれぞれは、前記現在のピクチャの前記フィルタリング済みサンプル値を取得する、ステップと、
前記画素ごとのループの前記複数の反復を実行する前に、前記画素ごとに変化しない前記スケール関数又は前記指数関数のうちの1つの因子に基づいて、前記フィルタリング済みサンプル値を固定小数点表示に変換するステップと、を含む、
請求項1に記載の方法。 - 前記スケール関数は、少なくとも1つの第3の因子を持つ分子と、少なくとも1つの第4の因子を持つ分母と、を含み、
前記少なくとも1つの第3の因子は、前記現在のピクチャのノイズレベルを含み、かつ、
前記少なくとも1つの第4の因子は、前記現在のピクチャからの前記少なくとも1つの隣接ピクチャのピクチャ順計算距離を含む、
請求項1に記載の方法。 - コンピュータコードを記憶する少なくとも1つのメモリと、
前記コンピュータコードにアクセスし、前記コンピュータコードの指示に従って動作するように構成された少なくとも1つのプロセッサと、
を含む、システムであって、
前記コンピュータコードは、
前記少なくとも1つのプロセッサに、現在のピクチャに時間フィルタを適用させるように構成された、時間フィルタコードと、
前記少なくとも1つのプロセッサに、前記時間フィルタを適用した後に前記現在のピクチャを符号化させるように構成された、符号化コードと、を含み、
前記時間フィルタコードは、
前記少なくとも1つのプロセッサに、少なくとも1つの第1の因子を持つ分子と、少なくとも1つの第2の因子を持つ分母と、を持つ指数を含む指数関数を、前記指数関数の前記指数を固定小数点数として計算すること又は少なくとも1つのルックアップテーブルを使用することにより、取得させるように構成された、指数関数取得コードと、
前記少なくとも1つのプロセッサに、前記指数関数にスケール関数を乗算することにより、少なくとも1つの隣接ピクチャの重みを取得させるように構成された重み取得コードと、
前記少なくとも1つのプロセッサに、前記現在のピクチャのサンプル値及び前記少なくとも1つの隣接ピクチャの前記重みに基づいて、前記現在のピクチャのフィルタリング済みサンプル値を取得させるように構成された、フィルタリング済みサンプル値取得コードと、
前記少なくとも1つのプロセッサに、前記現在のピクチャの前記サンプル値を前記フィルタリング済みサンプル値に置き換えさせるよう構成された、サンプル値置き換えコードと、を含み、
前記指数の前記分子の前記少なくとも1つの第1の因子は、前記少なくとも1つの隣接ピクチャの動き推定誤差を含み、
前記指数の前記分母の前記少なくとも1つの第2の因子は、量子化パラメータを含む、
システム。 - 前記指数関数取得コードは、前記少なくとも1つのプロセッサに、
前記指数関数の前記指数を前記固定小数点数として計算させるように構成される、
請求項11に記載のシステム。 - 前記指数関数取得コードは、前記少なくとも1つのプロセッサに、
前記固定小数点数を2nビット(nは整数である)として表させるように構成される、
請求項12に記載のシステム。 - 前記指数関数取得コードは、前記少なくとも1つのプロセッサに、
前記少なくとも1つの第1の因子又は前記少なくとも1つの第2の因子とのうちの1つの因子の浮動小数点数表示を、2の累乗を有するスケール因子でスケーリングさせるように構成される、
請求項12に記載のシステム。 - 前記指数関数取得コードは、前記少なくとも1つのプロセッサに、
前記少なくとも1つのルックアップテーブルを使用して、前記指数関数を取得させるように構成される、
請求項11に記載のシステム。 - 前記少なくとも1つのルックアップテーブルは、第1のルックアップテーブル及び第2のルックアップテーブルを含み、
前記第1のルックアップテーブルは、前記指数関数の冪指数の整数部に対応し、
前記第2のルックアップテーブルは、前記指数関数の冪指数の小数部に対応している、
請求項11に記載のシステム。 - 前記少なくとも1つのルックアップテーブルは、前記指数関数の固定小数点数を含む、
請求項15に記載のシステム。 - 前記コンピュータコードは、さらに、
前記少なくとも1つのプロセッサに、前記スケール関数の因子を固定小数点表示に変換させるように構成された、変換コード、を含み、
前記重み取得コードは、前記少なくとも1つのプロセッサに、
前記スケール関数の前記固定小数点表示に前記指数関数を乗算することにより、前記少なくとも1つの隣接ピクチャの前記重みを取得させるように構成される、
請求項11に記載のシステム。 - 前記コンピュータコードは、さらに、
前記少なくとも1つのプロセッサに、前記現在のピクチャの画素のうちの各々の画素に対して、複数の反復のための画素ごとのループを実行させるように構成されたループコードであり、前記複数の反復のそれぞれは、前記現在のピクチャの前記フィルタリング済みサンプル値を取得する、ループコードと、
前記少なくとも1つのプロセッサに、前記画素ごとのループの前記複数の反復を実行する前に、前記画素ごとに変化しない前記スケール関数又は前記指数関数のうちの1つの因子に基づいて、固定小数点表示に変換させるように構成された変換コードと、を含む、
請求項11に記載のシステム。 - 複数の命令を含むコンピュータプログラムであって、
前記命令が、コンピュータのプロセッサによって実行されると、
前記コンピュータに、請求項1~10のいずれか一項に記載の方法を実行させる、
コンピュータプログラム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063034042P | 2020-06-03 | 2020-06-03 | |
US63/034,042 | 2020-06-03 | ||
US17/240,376 US11343495B2 (en) | 2020-06-03 | 2021-04-26 | Methods of simplification of temporal filtering |
US17/240,376 | 2021-04-26 | ||
PCT/US2021/029603 WO2021247169A1 (en) | 2020-06-03 | 2021-04-28 | Methods of simplification of temporal filtering |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023505652A JP2023505652A (ja) | 2023-02-10 |
JPWO2021247169A5 true JPWO2021247169A5 (ja) | 2023-10-27 |
Family
ID=78818251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022529861A Pending JP2023505652A (ja) | 2020-06-03 | 2021-04-28 | 時間フィルタリングを簡素化する方法、並びにそのシステム、及びコンピュータプログラム |
Country Status (6)
Country | Link |
---|---|
US (2) | US11343495B2 (ja) |
EP (1) | EP4026251A4 (ja) |
JP (1) | JP2023505652A (ja) |
KR (1) | KR20220070476A (ja) |
CN (1) | CN114788182A (ja) |
WO (1) | WO2021247169A1 (ja) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6215908B1 (en) * | 1999-02-24 | 2001-04-10 | Intel Corporation | Symmetric filtering based VLSI architecture for image compression |
US7895250B2 (en) * | 2005-05-25 | 2011-02-22 | Qualcomm Incorporated | Fixed point integer division techniques for AC/DC prediction in video coding devices |
US8483277B2 (en) | 2005-07-15 | 2013-07-09 | Utc Fire & Security Americas Corporation, Inc. | Method and apparatus for motion compensated temporal filtering using split update process |
JP4354520B2 (ja) * | 2006-11-30 | 2009-10-28 | パナソニック株式会社 | 符号化装置 |
US7957589B2 (en) * | 2007-01-25 | 2011-06-07 | Qualcomm Mems Technologies, Inc. | Arbitrary power function using logarithm lookup table |
WO2010014760A1 (en) | 2008-08-01 | 2010-02-04 | Zoran Corporation | Video encoder with an integrated temporal filter for denoising |
WO2010088465A1 (en) | 2009-02-02 | 2010-08-05 | Gentex Corporation | Improved digital image processing and systems incorporating the same |
US8144253B2 (en) * | 2009-07-21 | 2012-03-27 | Sharp Laboratories Of America, Inc. | Multi-frame approach for image upscaling |
US9462163B2 (en) * | 2009-10-10 | 2016-10-04 | Ittiam Systems (P) Ltd. | Robust spatiotemporal combining system and method for video enhancement |
CN103026707B (zh) * | 2010-07-21 | 2016-11-09 | 杜比实验室特许公司 | 使用用于视频编码的高级运动模型的参考处理 |
US20130195177A1 (en) * | 2010-09-28 | 2013-08-01 | Samsung Electronics Co., Ltd. | Method and device for the transformation and method and device for the reverse transformation of images |
CN106095353B (zh) * | 2011-12-06 | 2019-04-09 | 杜比实验室特许公司 | 改进不同显示能力之间基于感知照度非线性的图像数据交换的装置和方法 |
US20140052767A1 (en) * | 2012-08-15 | 2014-02-20 | Universidade De Santiago De Compostela | Apparatus and architecture for general powering computation |
US9235392B2 (en) * | 2014-01-22 | 2016-01-12 | Nvidia Corporation | System, method, and computer program product for improved power efficiency during program code execution |
EP3560204A4 (en) | 2016-12-23 | 2019-12-04 | Telefonaktiebolaget LM Ericsson (publ) | DERINGING FILTER FOR VIDEO CODING |
-
2021
- 2021-04-26 US US17/240,376 patent/US11343495B2/en active Active
- 2021-04-28 WO PCT/US2021/029603 patent/WO2021247169A1/en unknown
- 2021-04-28 CN CN202180005523.3A patent/CN114788182A/zh active Pending
- 2021-04-28 EP EP21816875.5A patent/EP4026251A4/en active Pending
- 2021-04-28 JP JP2022529861A patent/JP2023505652A/ja active Pending
- 2021-04-28 KR KR1020227013647A patent/KR20220070476A/ko active Search and Examination
-
2022
- 2022-01-05 US US17/569,108 patent/US20220132112A1/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7098746B2 (ja) | 並行処理による履歴ベースの動きベクトル予測のための方法並びのその装置とコンピュータプログラム | |
JP7169372B2 (ja) | デコーダ側の動きベクトルの導出及び精緻化の改良 | |
JP7413577B2 (ja) | ビデオ符号化/復号化の方法及び装置 | |
JP7295289B2 (ja) | 高速dst-7 | |
CN113557728B (zh) | 视频编解码方法和装置 | |
JP7362876B2 (ja) | 簡略化された最確モードリスト生成スキーム | |
KR20200125733A (ko) | 비디오 코딩을 위한 방법 및 장치 | |
JP7457170B2 (ja) | サブブロックに基づく時間的動きベクトル予測のための方法並びにその機器及びコンピュータプログラム | |
JP7427814B2 (ja) | ビデオ符号化及び復号の方法及び装置並びにコンピュータプログラム | |
US20200152240A1 (en) | Method and system for video processing and signaling in transitional video scene | |
JP2023545829A (ja) | イントラ予測モード向けのエントロピーコーディングのための方法、装置、及びコンピュータプログラム | |
CN110611818B (zh) | 视频编解码方法、装置、计算机设备以及存储介质 | |
US11343495B2 (en) | Methods of simplification of temporal filtering | |
US11909956B2 (en) | DNN-based cross component prediction | |
JP7495563B2 (ja) | マルチラインイントラ予測のためのモードリストを生成する方法、並びにその装置及びコンピュータプログラム | |
RU2782436C1 (ru) | Способ и устройство для эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео | |
US20230291905A1 (en) | Method and apparatus for adaptive multi-hypothesis probability model for arithmetic coding | |
JPWO2021247169A5 (ja) | ||
KR20230170964A (ko) | 향상된 복합 인터-인트라 예측 모드 | |
JP2023126585A (ja) | マルチラインイントラ予測のためのモードリストを生成する方法、並びにその装置及びコンピュータプログラム |