JP7125559B2 - ビットレート削減のためのビデオストリーム適応フィルタリング - Google Patents

ビットレート削減のためのビデオストリーム適応フィルタリング Download PDF

Info

Publication number
JP7125559B2
JP7125559B2 JP2021533618A JP2021533618A JP7125559B2 JP 7125559 B2 JP7125559 B2 JP 7125559B2 JP 2021533618 A JP2021533618 A JP 2021533618A JP 2021533618 A JP2021533618 A JP 2021533618A JP 7125559 B2 JP7125559 B2 JP 7125559B2
Authority
JP
Japan
Prior art keywords
candidate
video stream
bitstream
input video
copy
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.)
Active
Application number
JP2021533618A
Other languages
English (en)
Other versions
JP2022514505A (ja
Inventor
モハマド・イザディ
バリニードゥ・アドスミリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2022514505A publication Critical patent/JP2022514505A/ja
Application granted granted Critical
Publication of JP7125559B2 publication Critical patent/JP7125559B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

関連出願の相互参照
本開示は、その開示全体が参照により本明細書に組み込まれる、2018年12月24日に出願された米国仮出願第62/784,626号の利益を主張する。
デジタルビデオストリームは、一連のフレームまたは静止画像を使用してビデオを表し得る。デジタルビデオは、たとえば、ビデオ会議、高解像度ビデオエンターテインメント、ビデオ広告、またはユーザ生成ビデオの共有などを含む、様々なアプリケーションに使用することができる。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または記憶のために、コンピューティングデバイスの大量のコンピューティングまたは通信リソースを消費する可能性がある。ビデオストリーム内のデータ量を削減するために、符号化または復号技法を含む様々な手法が提案されている。
本開示の実装形態による、入力ビデオストリームを出力ビットストリームに符号化するための方法は、入力ビデオストリームの第1のコピーを参照ビットストリームに符号化するステップを備える。本方法は、参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、入力ビデオストリームと参照ビットストリームを比較するステップをさらに備える。本方法は、いくつかの候補フィルタの候補フィルタごとに、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの各フレームに候補フィルタを適用するステップと、入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化するステップと、候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、入力ビデオストリームと候補ビットストリームを比較するステップと、第1の歪み値と第2の歪み値との間の差に基づいて、および第1のビットレートと第2のビットレートとの間の差に基づいて、候補フィルタのコスト値を決定するステップとをさらに備える。本方法は、出力ビットストリームとして、コスト値のうちの最も低いものを有する候補フィルタに対応する候補ビットストリームを選択するステップをさらに備える。本方法は、出力ビットストリームを出力または記憶するステップをさらに備える。
本方法のいくつかの実装形態では、候補フィルタは、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される。
本方法のいくつかの実装形態では、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの所与のフレームに所与の候補フィルタを適用するステップは、所与のフレーム内の値を空間ドメインから周波数ドメインに変換するステップと、変換するステップの後、フィルタリングされた周波数ドメイン値を生成するために、所与の候補フィルタを所与のフレームの各ブロックに適用するステップと、フィルタリングされた周波数ドメイン値を周波数ドメインから空間ドメインに逆変換するステップとを備える。
本方法のいくつかの実装形態では、フィルタリングされた周波数ドメイン値を生成するためにフレームの各ブロックに所与の候補フィルタを適用するステップは、所与の候補フィルタを使用してフレームの重複するブロック領域をノイズ除去するステップを備える。
本方法のいくつかの実装形態では、重複するブロック領域は半分重複するブロック領域である。
本方法のいくつかの実装形態では、いくつかの候補フィルタの所与の候補フィルタのコスト値を決定するステップは、第1の歪み値と第2の歪み値との間の差に重みを適用することによって加重値を計算するステップと、第1のビットレートと第2のビットレートとの間の差から加重値を引くことによってコスト値を決定するステップとを備える。
本方法のいくつかの実装形態では、重みは第2の歪み値のターゲットに基づいて定義される。
本開示の実装形態による、入力ビデオストリームを出力ビットストリームに符号化するための装置は、メモリと、メモリに記憶された命令を実行するように構成されたプロセッサとを備える。本命令は、入力ビデオストリームの第1のコピーを参照ビットストリームに符号化するための命令を含む。本命令は、参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、入力ビデオストリームと参照ビットストリームを比較するための命令をさらに含む。本命令は、いくつかの候補フィルタの候補フィルタごとに、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの各フレームに候補フィルタを適用することと、入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化することと、候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、入力ビデオストリームと候補ビットストリームを比較することと、第1の歪み値と第2の歪み値との間の差に基づいて、および第1のビットレートと第2のビットレートとの間の差に基づいて、候補フィルタのコスト値を決定することとを行うための命令をさらに含む。本命令は、出力ビットストリームとして、コスト値のうちの最も低いものを有する候補フィルタに対応する候補ビットストリームを選択するための命令をさらに含む。本命令は、出力ビットストリームを出力または記憶するための命令をさらに含む。
本装置のいくつかの実装形態では、候補フィルタは、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される。
本装置のいくつかの実装形態では、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの所与のフレームに所与の候補フィルタを適用するための命令は、所与のフレーム内の値を空間ドメインから周波数ドメインに変換することと、変換することの後、フィルタリングされた周波数ドメイン値を生成するために、所与の候補フィルタを所与のフレームの各ブロックに適用することと、フィルタリングされた周波数ドメイン値を周波数ドメインから空間ドメインに逆変換することとを行うための命令を含む。
本装置のいくつかの実装形態では、フィルタリングされた周波数ドメイン値を生成するためにフレームの各ブロックに所与の候補フィルタを適用するための命令は、所与の候補フィルタを使用してフレームの重複するブロック領域をノイズ除去するための命令を含む。
本装置のいくつかの実装形態では、重複するブロック領域は半分重複するブロック領域である。
本装置のいくつかの実装形態では、いくつかの候補フィルタの所与の候補フィルタのコスト値を決定するための命令は、第1の歪み値と第2の歪み値との間の差に重みを適用することによって加重値を計算することと、第1のビットレートと第2のビットレートとの間の差から加重値を引くことによってコスト値を決定することとを行うための命令を含む。
本装置のいくつかの実装形態では、重みは第2の歪み値のターゲットに基づいて定義される。
本開示の実装形態による、入力ビデオストリームを出力ビットストリームに符号化するためのエンコーダは、入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することを備える動作を実行する。本動作は、参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、入力ビデオストリームと参照ビットストリームを比較することをさらに備える。本動作は、いくつかの候補フィルタの候補フィルタごとに、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの各フレームに候補フィルタを適用することと、入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化することと、候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、入力ビデオストリームと候補ビットストリームを比較することと、第1の歪み値と第2の歪み値との間の差に基づいて、および第1のビットレートと第2のビットレートとの間の差に基づいて、候補フィルタのコスト値を決定することとをさらに備える。本動作は、出力ビットストリームとして、コスト値のうちの最も低いものを有する候補フィルタに対応する候補ビットストリームを選択することをさらに備える。本動作は、出力ビットストリームを出力または記憶することをさらに備える。
本エンコーダのいくつかの実装形態では、候補フィルタは、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される。
本エンコーダのいくつかの実装形態では、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、入力ビデオストリームの第2のコピーの所与のフレームに所与の候補フィルタを適用することは、所与のフレーム内の値を空間ドメインから周波数ドメインに変換することと、変換することの後、フィルタリングされた周波数ドメイン値を生成するために、所与の候補フィルタを所与のフレームの各ブロックに適用することと、フィルタリングされた周波数ドメイン値を周波数ドメインから空間ドメインに逆変換することとを備える。
本エンコーダのいくつかの実装形態では、フィルタリングされた周波数ドメイン値を生成するためにフレームの各ブロックに所与の候補フィルタを適用することは、所与の候補フィルタを使用してフレームの重複するブロック領域をノイズ除去することを備える。
本エンコーダのいくつかの実装形態では、重複するブロック領域は半分重複するブロック領域である。
本エンコーダのいくつかの実装形態では、いくつかの候補フィルタの所与の候補フィルタのコスト値を決定することは、第1の歪み値と第2の歪み値との間の差に重みを適用することによって加重値を計算することと、第1のビットレートと第2のビットレートとの間の差から加重値を引くことによってコスト値を決定することとを備える。
本エンコーダのいくつかの実装形態では、重みは第2の歪み値のターゲットに基づいて定義される。
本開示のこれらおよび他の態様は、実装形態の以下の詳細な説明、添付の特許請求の範囲、および添付の図面に開示されている。
本明細書の説明は、以下に説明する添付の図面を参照しており、図面において、同様の参照番号は、いくつかの図全体を通して同様の部品を指す。
ビデオ符号化および復号システムの例の概略図である。 送信局または受信局を実装することができるコンピューティングデバイスの一例のブロック図である。 符号化され、続いて復号されるビデオストリームの例の図である。 本開示の実装形態によるエンコーダの例のブロック図である。 本開示の実装形態によるデコーダの例のブロック図である。 ビットレート削減のための適応フィルタリングを使用するビデオストリーム処理パイプラインの例のブロック図である。 適応フィルタリングを使用して出力ビットストリームを選択するために実行される動作の例のブロック図である。 適応フィルタリングを使用してビデオストリームを出力ビットストリームに符号化するための技法の例のフローチャート図である。 適応フィルタリングを使用してビデオストリームを出力ビットストリームに符号化するための技法の例のフローチャート図である。 候補フィルタに対して決定されたコスト値に基づいて出力ビットストリームを選択するための技法の例のフローチャート図である。
ビデオ圧縮方式は、それぞれの画像またはフレームをブロックなどのより小さい部分に分けること、および出力内のそれぞれのブロックに含まれる情報を制限するための技法を使用して、圧縮されたビットストリームを生成することを含み得る。制限された情報からソース画像を再作成するために、圧縮されたビットストリームを復号することができる。典型的なビデオ圧縮技法は、ビデオホスティングおよびサービングプラットフォームの送信コストを削減するなど、ビデオストリームのビットレートを削減することを含む。
しかしながら、ビデオストリームのビットレートを削減すると、品質が低下することが多く、したがって、後で解凍されたビデオストリームの品質は、圧縮技法を使用して処理された元のビデオストリームよりも低くなる。たとえば、ビデオストリームの圧縮中に、望ましくないブロッキングアーティファクトが発生する可能性がある。場合によっては、それらのブロッキングアーティファクトは、解凍後もビデオストリームに残ることがある。
場合によっては、ビデオ圧縮方式を使用して圧縮される前に、ビデオストリームに対して前処理を実行することができる。前処理を実行すると、固定ビットレートのビデオストリームのビデオ品質が向上したり、固定品質のビデオストリームのビットレートが最小化されたりする可能性がある。たとえば、前処理は、ビデオストリームを出力ビットストリームに符号化する前にビデオストリーム内のノイズを除去し、アーティファクト(たとえば、ブロッキング、バンディング、リンギング、一時的なちらつきなど)を削減するために、ビデオストリームにフィルタを適用することを含むことができる。しかしながら、そのようなフィルタベースの手法は、ビデオストリームの選択されたビットレートおよび/または選択された品質に依存する固定フィルタを使用した。したがって、ビデオストリームの前処理において使用される一般的な固定フィルタでは、ビットレートを最小化したり、品質を最大化したりすることはできない。
さらに、そのような固定フィルタによって使用されるパラメータは、ビデオストリームのフレーム内の画像ブロックのコンテンツに依存する。そのため、一般的な固定フィルタは、画像ブロックの均一な領域からアーティファクトを削除するよりも、ビデオエッジテクスチャからアーティファクトを削除する方が便利なことがよくある。しかしながら、固定フィルタパラメータを推定するための従来の手法では、ビデオストリームのフレーム内に望まない歪みが発生することが多く、また複雑で非線形な方法で圧縮プロセスに影響を与える可能性がある。
本開示の実装形態は、ビットレート削減のための適応フィルタリングを使用してビデオストリームを前処理することによって、これらのような問題に対処する。入力ビデオストリームの第1のコピーは、参照ビットストリームに符号化される。入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、いくつかの候補フィルタの各々が、入力ビデオストリームの第2のコピーの各フレームに適用される。フィルタリングされた第2のコピーは、候補ビットストリームに符号化される。候補フィルタのコスト値は、候補ビットストリームと参照ビットストリームとの間の歪み値とビットレートとの間の差に基づいて決定される。コスト値が最も低い候補フィルタに対応する候補ビットストリームが出力ビットストリームとして選択され、出力または記憶される。適応フィルタを使用して符号化前に入力ビデオストリームを処理すると、ビットレートが削減され、それによって圧縮、解凍、および他のパフォーマンスが向上する場合がある。
ビットレート削減のためのビデオストリーム適応フィルタリングのための技法のさらなる詳細を、それらを実装することができるシステムを最初に参照して、本明細書で説明する。図1は、ビデオ符号化および復号システム100の例の概略図である。送信局102は、たとえば、図2に記載されているようなハードウェアの内部構成を有するコンピュータであり得る。しかしながら、送信局102の他の実装形態が可能である。たとえば、送信局102の処理は、複数のデバイス間で分散することができる。
ネットワーク104は、ビデオストリームの符号化および復号のために、送信局102と受信局106とを接続することができる。具体的には、ビデオストリームは送信局102において符号化することができ、符号化されたビデオストリームは受信局106において復号することができる。ネットワーク104は、たとえば、インターネットであり得る。ネットワーク104はまた、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、セルラー電話ネットワーク、または、この例においては送信局102から受信局106にビデオストリームを転送する任意の他の手段であり得る。
一例では、受信局106は、図2に記載されているようなハードウェアの内部構成を有するコンピュータであり得る。しかしながら、受信局106の他の適切な実装形態が可能である。たとえば、受信局106の処理は、複数のデバイス間で分散することができる。
ビデオ符号化および復号システム100の他の実装形態が可能である。たとえば、実装形態はネットワーク104を省略することができる。別の実装形態では、ビデオストリームを符号化し、次いで、受信局106またはメモリを有する任意の他のデバイスに後で送信するために記憶することができる。一実施形態では、受信局106は、(たとえば、ネットワーク104、コンピュータバス、および/または何らかの通信経路を介して)符号化されたビデオストリームを受信し、後で復号するためにビデオストリームを記憶する。例示的な実装形態では、リアルタイムトランスポートプロトコル(RTP)が、ネットワーク104を介した符号化されたビデオの送信のために使用される。別の実装形態では、RTP以外のトランスポートプロトコル(たとえば、ハイパーテキスト転送プロトコルベース(HTTPベース)ビデオストリーミングプロトコル)が使用され得る。
ビデオ会議システムにおいて使用される場合、たとえば、送信局102および/または受信局106は、以下に説明するように、ビデオストリームの符号化と復号の両方を行う能力を含み得る。たとえば、受信局106は、復号および閲覧するために、ビデオ会議サーバ(たとえば、送信局102)から符号化されたビデオビットストリームを受信し、他の参加者によって復号および閲覧するために自分自身のビデオビットストリームをさらに符号化してビデオ会議サーバに送信するビデオ会議参加者であり得る。
いくつかの実装形態では、ビデオデータ以外のデータを符号化および復号するために、ビデオ符号化および復号システム100が代わりに使用され得る。たとえば、画像データを処理するために、ビデオ符号化および復号システム100を使用することができる。画像データは、画像からのデータのブロックを含み得る。そのような実装形態において、送信局102は画像データを符号化するために使用され得、受信局106は、画像データを復号するために使用され得る。
あるいは、受信局106は、送信局102から符号化または事前符号化された画像データを受信した後など、後で使用するために符号化された画像データを記憶するコンピューティングデバイスを表すことができる。さらなる代替として、送信局102は、たとえば、表示のために復号された画像データを受信局106に送信する前などに、画像データを復号するコンピューティングデバイスを表すことができる。
図2は、送信局または受信局を実装することができるコンピューティングデバイス200の一例のブロック図である。たとえば、コンピューティングデバイス200は、図1の送信局102および受信局106のうちの一方または両方を実装することができる。コンピューティングデバイス200は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または1つのコンピューティングデバイス、たとえば、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの形態であり得る。
コンピューティングデバイス200内のプロセッサ202は、従来の中央処理装置であり得る。あるいは、プロセッサ202は、現在存在する、または今後開発される情報を操作または処理することができる別のタイプのデバイスまたは複数のデバイスであり得る。たとえば、開示された実装形態は、図示されるように1つのプロセッサ(たとえば、プロセッサ202)で実施することができるが、速度および効率における利点は、複数のプロセッサを使用することによって達成することができる。
コンピューティングデバイス200内のメモリ204は、実装形態において、読取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであり得る。しかしながら、他の適切なタイプのストレージデバイスをメモリ204として使用することができる。メモリ204は、バス212を使用してプロセッサ202によってアクセスされるコードおよびデータ206を含むことができる。メモリ204は、オペレーティングシステム208およびアプリケーションプログラム210をさらに含むことができ、アプリケーションプログラム210は、プロセッサ202が本明細書に記載の技法を実行することを可能にする少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム210は、アプリケーション1からNを含むことができ、アプリケーション1からNは、本明細書に記載の技法を実行するビデオおよび/または画像コーディングアプリケーションをさらに含む。
コンピューティングデバイス200はまた、たとえば、モバイルコンピューティングデバイスとともに使用されるメモリカードであり得る、二次ストレージ214を含むことができる。ビデオ通信セッションは、大量の情報を含み得るので、それらは、全体的または部分的に二次ストレージ214に記憶され、処理のために必要に応じてメモリ204にロードされ得る。
コンピューティングデバイス200はまた、ディスプレイ218などの1つまたは複数の出力デバイスを含むことができる。ディスプレイ218は、一例では、タッチ入力を感知するように動作可能なタッチセンシティブ要素とディスプレイを組み合わせるタッチセンシティブディスプレイであり得る。ディスプレイ218は、バス212を介してプロセッサ202に結合することができる。ユーザがコンピューティングデバイス200をプログラムまたは他の方法で使用することを可能にする他の出力デバイスは、ディスプレイ218に加えて、またはディスプレイ218の代替として提供され得る。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ(LCD)、ブラウン管(CRT)ディスプレイ、または有機LED(OLED)ディスプレイなどの発光ダイオード(LED)ディスプレイを含む、様々な方法で実装することができる。
コンピューティングデバイス200はまた、画像感知デバイス220、たとえば、カメラ、またはコンピューティングデバイス200を操作するユーザの画像などの画像を感知することができる現在存在する、または今後開発される任意の他の画像感知デバイス220を含むか、またはそれらと通信することができる。画像感知デバイス220は、コンピューティングデバイス200を動作するユーザに向けられるように配置することができる。一例では、画像感知デバイス220の位置および光軸は、視野が、ディスプレイ218に直接隣接し、そこからディスプレイ218が見える領域を含むように構成することができる。
コンピューティングデバイス200はまた、音感知デバイス222、たとえば、マイクロフォン、またはコンピューティングデバイス200の近くの音を感知することができる現在存在する、または今後開発される任意の他の音感知デバイスを含むか、またはそれらと通信することができる。音感知デバイス222は、コンピューティングデバイス200を操作するユーザに向けられるように配置することができ、ユーザがコンピューティングデバイス200を操作している間にユーザによって発せられる音、たとえば、音声または他の発話を受信するように構成することができる。
図2は、コンピューティングデバイス200のプロセッサ202およびメモリ204が1つのユニットに統合されていることを示しているが、他の構成を利用することができる。プロセッサ202の動作は、直接あるいはローカルエリアまたは他のネットワークを介して結合することができる複数のマシン(個々のマシンは1つまたは複数のプロセッサを有することができる)に分散することができる。メモリ204は、ネットワークベースのメモリ、またはコンピューティングデバイス200の動作を実行する複数のマシンにおけるメモリなどの複数のマシンに分散することができる。
ここでは1つのバスとして示されているが、コンピューティングデバイス200のバス212は、複数のバスで構成することができる。さらに、二次ストレージ214は、コンピューティングデバイス200の他の構成要素に直接結合することができ、またはネットワークを介してアクセスすることができ、メモリカードなどの統合ユニットまたは複数のメモリカードなどの複数のユニットを備えることができる。したがって、コンピューティングデバイス200は、多種多様な構成で実装することができる。
図3は、符号化され、続いて復号されるビデオストリーム300の例の図である。ビデオストリーム300は、ビデオシーケンス302を含む。次のレベルにおいて、ビデオシーケンス302は、いくつかの隣接するフレーム304を含む。3つのフレームが隣接フレーム304として示されているが、ビデオシーケンス302は、任意の数の隣接フレーム304を含むことができる。次いで、隣接フレーム304は、個々のフレーム、たとえば、フレーム306にさらに細分することができる。
次のレベルにおいて、フレーム306は、一連の平面またはセグメント308に分割することができる。セグメント308は、たとえば、並列処理を可能にするフレームのサブセットであり得る。セグメント308はまた、ビデオデータを別々の色に分離することができるフレームのサブセットであり得る。たとえば、カラービデオデータのフレーム306は、輝度面および2つのクロミナンス面を含むことができる。セグメント308は、異なる解像度でサンプリングされ得る。
フレーム306がセグメント308に分割されるかどうかにかかわらず、フレーム306は、たとえば、フレーム306内の16×16ピクセルに対応するデータを含むことができるブロック310にさらに細分され得る。ブロック310はまた、ピクセルデータの1つまたは複数のセグメント308からのデータを含むように構成することができる。ブロック310はまた、4×4ピクセル、8×8ピクセル、16×8ピクセル、8×16ピクセル、16×16ピクセル、またはそれ以上などの任意の他の適切なサイズであり得る。特に断りのない限り、本明細書では、ブロックおよびマクロブロックという用語は交換可能に使用される。
図4は、エンコーダ400の例のブロック図である。エンコーダ400は、上記のように、メモリ、たとえば、メモリ204に記憶されたコンピュータソフトウェアプログラムを提供することなどによって、送信局102に実装することができる。コンピュータソフトウェアプログラムは、プロセッサ202などのプロセッサによって実行されると、送信局102に、図4に記載された方法でビデオデータを符号化させるマシン命令を含むことができる。エンコーダ400はまた、たとえば、送信局102に含まれる専用ハードウェアとして実装することができる。1つの特に望ましい実装形態では、エンコーダ400はハードウェアエンコーダである。
エンコーダ400は、ビデオストリーム300を入力として使用して符号化または圧縮されたビットストリーム420を生成するために、順方向パス(実線の接続線によって示される)において様々な機能を実行するための次のステージを有する:イントラ/インター予測ステージ402、変換ステージ404、量子化ステージ406、およびエントロピ符号化ステージ408。エンコーダ400はまた、将来のブロックの符号化のためにフレームを再構築するための再構築パス(点線の接続線によって示される)を含み得る。図4において、エンコーダ400は、再構築パスにおいて様々な機能を実行するための次のステージを有する:非量子化ステージ410、逆変換ステージ412、再構築ステージ414、およびループフィルタリングステージ416。ビデオストリーム300を符号化するために、エンコーダ400の他の構造的変形を使用することができる。
場合によっては、エンコーダ400によって実行される機能は、ビデオストリーム300のフィルタリング後に発生する可能性がある。すなわち、ビデオストリーム300は、エンコーダ400がビデオストリーム300を受信する前に、本開示の1つまたは複数の実装形態に従って前処理を受けることができる。あるいは、エンコーダ400自体は、イントラ/インター予測ステージ402におけるビデオストリーム300の処理の前など、図4に関して説明された機能を実行することに進む前に、ビデオストリーム300に対してそのような前処理を実行し得る。
前処理が実行された後、ビデオストリーム300が符号化のために提示されると、フレーム306などのそれぞれの隣接するフレーム304を、ブロックの単位で処理することができる。イントラ/インター予測ステージ402において、それぞれのブロックを、イントラフレーム予測(イントラ予測とも呼ばれる)またはインターフレーム予測(インター予測とも呼ばれる)を使用して符号化することができる。いずれの場合も、予測ブロックを形成することができる。イントラ予測の場合、予測ブロックは、以前に符号化および再構築された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックは、1つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
次に、予測ブロックは、残差ブロック(残差とも呼ばれる)を生成するために、イントラ/インター予測ステージ402において現在のブロックから引くことができる。変換ステージ404は、ブロックベースの変換を使用して残差を、たとえば、周波数ドメイン内の変換係数に変換する。量子化ステージ406は、量子化器の値または量子化レベルを使用して、変換係数を離散量子値に転換し、これは、量子化変換係数と呼ばれる。たとえば、変換係数を量子化器の値で除算して切り捨てることができる。
次いで、量子化された変換係数は、エントロピ符号化ステージ408によってエントロピ符号化される。次いで、エントロピ符号化された係数は、ブロックを復号するために使用される他の情報(たとえば、使用される予測のタイプ、変換タイプ、動きベクトル、量子化器の値などを示すために使用されるような構文要素を含み得る)とともに、圧縮されたビットストリーム420に出力される。圧縮されたビットストリーム420は、可変長符号化(VLC)または算術コーディングなどの様々な技法を使用してフォーマットすることができる。圧縮されたビットストリーム420はまた、符号化されたビデオストリームまたは符号化されたビデオビットストリームと呼ぶことができ、これらの用語は、本明細書では交換可能に使用される。
エンコーダ400およびデコーダ500(図5に関して以下で説明する)が、圧縮されたビットストリーム420を復号するために同じ参照フレームを使用することを保証するために、再構築パス(点線の接続線によって示される)を使用することができる。再構築パスは、微分残差ブロック(微分残差とも呼ばれる)を生成するために、非量子化ステージ410における量子化された変換係数の非量子化、および逆変換ステージ412における非量子化された変換係数の逆変換を含む、復号プロセス中(図5に関して以下に説明される)に行われる機能と同様の機能を実行する。
再構築ステージ414において、再構築されたブロックを作成するために、イントラ/インター予測ステージ402において予測された予測ブロックを微分残差に追加することができる。ブロッキングアーティファクトなどの歪みを削減するために、ループフィルタリングステージ416は、ループ内フィルタまたは他のフィルタを再構築されたブロックに適用することができる。ループフィルタリングステージ416において適用され得るフィルタの例は、限定されないが、AVC、HEVC、VP9、およびAV1におけるような非ブロック化フィルタ、AV1におけるような制約付き指向性エンハンスメントフィルタ、ならびにAV1におけるようなループ復元フィルタを含む。
エンコーダ400の他の変形は、圧縮されたビットストリーム420を符号化するために使用することができる。いくつかの実装形態では、非変換ベースのエンコーダは、特定のブロックまたはフレームの変換ステージ404なしで、残差信号を直接量子化することができる。いくつかの実装形態では、エンコーダは、量子化ステージ406および非量子化ステージ410を共通のステージに組み合わせることができる。
図5は、デコーダ500の例のブロック図である。デコーダ500は、たとえば、メモリ204に記憶されたコンピュータソフトウェアプログラムを提供することによって、受信局106に実装することができる。コンピュータソフトウェアプログラムは、プロセッサ202などのプロセッサによって実行されると、受信局106に、図5に記載された方法でビデオデータを復号させるマシン命令を含むことができる。デコーダ500はまた、たとえば、送信局102または受信局106に含まれるハードウェアに実装することができる。
デコーダ500は、上で論じたエンコーダ400の再構築パスと同様に、一例では、圧縮されたビットストリーム420から出力ビデオストリーム516を生成するための様々な機能を実行するための次のステージを含む:エントロピ復号ステージ502、非量子化ステージ504、逆変換ステージ506、イントラ/インター予測ステージ508、再構築ステージ510、ループフィルタリングステージ512、およびポストフィルタステージ514。圧縮されたビットストリーム420を復号するために、デコーダ500の他の構造的変形を使用することができる。
圧縮されたビットストリーム420が復号のために提示されると、圧縮されたビットストリーム420内のデータ要素を、量子化された変換係数のセットを生成するために、エントロピ復号ステージ502によって復号することができる。非量子化ステージ504は、量子化された変換係数を非量子化し(たとえば、量子化された変換係数に量子化器の値を掛けることによって)、逆変換ステージ506は、エンコーダ400において逆変換ステージ412によって作成されたものと同一であり得る微分残差を生成するために、非量子化された変換係数を逆変換する。圧縮されたビットストリーム420から復号されたヘッダ情報を使用して、デコーダ500は、エンコーダ400において(たとえば、イントラ/インター予測ステージ402において)作成されたものと同じ予測ブロックを作成するために、イントラ/インター予測ステージ508を使用することができる。
再構築ステージ510において、再構築されたブロックを作成するために予測ブロックを微分残差に追加することができる。ブロッキングアーティファクトを削減するために、ループフィルタリングステージ512を再構築されたブロックに適用することができる。ループフィルタリングステージ512において適用され得るフィルタの例は、限定されないが、AVC、HEVC、VP9、およびAV1におけるような非ブロック化フィルタ、AV1におけるような制約付き指向性エンハンスメントフィルタ、ならびにAV1におけるようなループ復元フィルタを含む。
再構築されたブロックには、他のフィルタリングを適用することができる。この例では、ブロッキング歪みを削減するために、ポストフィルタステージ514が再構築されたブロックに適用され、結果は、出力ビデオストリーム516として出力される。出力ビデオストリーム516はまた、復号されたビデオストリームと呼ぶことができ、これらの用語は、本明細書では交換可能に使用される。
デコーダ500の他の変形は、圧縮されたビットストリーム420を復号するために使用することができる。いくつかの実装形態では、デコーダ500は、ポストフィルタステージ514なしで出力ビデオストリーム516を生成することができる。
図6は、ビットレート削減のための適応フィルタリングを使用するビデオストリーム処理パイプライン600の例のブロック図である。パイプライン600は、エンコーダ、たとえば、図4に示されるエンコーダ400を含んでもよく、それに関連して使用されてもよい。パイプライン600の開始時に、入力ビデオストリーム602が受信される。入力ビデオストリーム602は、たとえば、図4に示されるビデオストリーム300であり得る。入力ビデオストリーム602は、第1のビデオストリームコピー604および第2のビデオストリームコピー606をもたらすようにコピーされる。最初に、第1のビデオストリームコピー604および第2のビデオストリームコピー606は、入力ビデオストリーム602の同一のコピーを表す。
パイプライン600の符号化ステージ608において、第1のビデオストリームコピー604は、参照ビットストリーム610に符号化される。符号化ステージ608は、第1のビデオストリームコピー604のデータが処理されるエンコーダ(たとえば、エンコーダ400)の1つまたは複数のステージを含み得る。たとえば、符号化ステージ608は、少なくとも予測ステージ、変換ステージ、量子化ステージ、およびエントロピコーディングステージ(たとえば、図4に示されるイントラ/インター予測ステージ402、変換ステージ404、量子化ステージ406、およびエントロピ符号化ステージ408)を含むことができる。
参照ビットストリーム610は、図4に示される符号化ステージから出力される圧縮されたビットストリーム420などの圧縮されたビットストリームである。第1のビデオストリームコピー604は、定義されたトランスコード設定、たとえば、一定の品質設定、一定のレートファクタ設定、またはその両方を使用して、参照ビットストリーム610に符号化される。参照ビットストリーム610の歪み値およびビットレートを決定するために、入力ビデオストリーム602および参照ビットストリーム610を比較することができる。歪み値は、入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することによって、入力ビデオストリームに導入された歪みの量の測定値を表す。ビットレートは、参照ビットストリームを送信するために使用される時間単位(たとえば、秒)あたりのビット数の測定値を表す。
参照ビットストリーム610の歪み値は、いくつかの誤差計算技法のうちの1つを使用して決定され得る。たとえば、歪み値は、ピーク信号対雑音(PSNR)測定値、平均二乗誤差(MSE)測定値、構造類似性指数(SSI)測定値、または異なる誤差計算技法を使用して決定された別の測定値であり得る。該当する場合、本明細書に開示されるPSNR、MSE、SSI、または他の歪み測定値は、従来の手法を使用して決定することができる。
第2のビデオストリームコピー606は、パイプライン600の適応フィルタリングステージ612において処理される。適応フィルタリングステージ612は、フィルタ適用ステージ614、符号化ステージ616、およびビットストリーム選択ステージ618を含む。フィルタ適用ステージ614および符号化ステージ616は、第2のビデオストリームコピー606の異なるコピーを候補ビットストリームに符号化するなど、いくつかの候補フィルタの各々に対して繰り返される動作を含み、候補ビットストリームの各々は、候補フィルタのうちの1つに対応し、それを使用して生成される。ビットストリーム選択ステージ618は、それらの候補ビットストリームのうちの1つを出力ビットストリーム620として選択するなど、候補ビットストリームが生成された後に実行される動作を含む。
フィルタ適用ステージ614において、候補フィルタは、第2のビデオストリームコピー606の各ビデオフレームに適用される。第2のビデオストリームコピー606の各ビデオフレームに候補フィルタを適用すると、第2のビデオストリームコピー606の少なくともいくつかのデータに変更が生じる。たとえば、候補フィルタを適用すると、第2のビデオストリームコピー606内にいくつかのぼやけたアーティファクトを導入することができる。別の例では、候補フィルタを適用すると、第2のビデオストリームコピー606内にある量のノイズを導入することができる。さらに別の例では、候補フィルタを適用すると、第2のビデオストリームコピー606内のいくつかまたはすべての画像オブジェクトの鮮明度を高めることができる。
候補フィルタは、サイズM×Nの2次元フィルタであり、MとNは同じ数でもよく、異なる数でもよい。候補フィルタの各々は、同じサイズであり得る。あるいは、候補フィルタのうちのいくつかは、他のものとは異なるサイズを有し得る。さらなる代替として、場合によっては、候補フィルタの各々が異なるサイズであり得る。
候補フィルタは、いくつかの係数を含む。候補フィルタの係数の特定の数は、候補フィルタのサイズによって異なる。たとえば、サイズ32×32のフィルタは、1024個の係数を含む。候補フィルタの各係数の値は、0から1までの範囲である。したがって、候補フィルタの係数の値は、第2のビデオストリームコピー606のビデオフレーム内のピクセル値に適用される平滑化の重みを表す。
候補フィルタのうちのいくつかまたはすべては、非線形最適化技法を使用して取得され得る。たとえば、候補フィルタのうちのいくつかまたはすべては、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの1つまたは複数を使用して取得され得る。あるいは、候補フィルタは、第2のビデオストリームコピー606に適用する候補フィルタを定義するリストから取得され得る。たとえば、ルックアップテーブル、オブジェクト表記ファイル、または他のデータソースは、使用する候補フィルタを示すことができる。
候補フィルタは、第2のビデオストリームコピー606の品質の低下を引き起こすために適用される。したがって、候補フィルタの適用後、結果として生じるフィルタリングされた第2のビデオストリームコピーは、第2のビデオストリームコピー606よりも低品質である。フィルタの適用によって引き起こされる品質の低下は、人間の閲覧者には知覚できない、または比較的知覚できないビデオデータに関連している可能性がある。
候補フィルタの各々は、第2のビデオストリームコピー606内のデータに対して行うことができる異なるタイプの変更に対応し得る。場合によっては、候補フィルタのうちの2つ以上が同じタイプの変化に対応し得るが、その大きさまたは程度は異なる。たとえば、第1および第2のフィルタは両方とも、ぼやけたアーティファクトの追加に対応し得、第1のフィルタは、第1のぼやけた量のアーティファクトを追加し、第2のフィルタは、第2のぼやけた量のアーティファクトを追加する。別の例では、第1のフィルタは、第2のビデオストリームコピー606の各ビデオフレームに第1の数のぼやけたアーティファクトを追加し得、第2のフィルタは、第2のビデオストリームコピー606の各ビデオフレームに第2の数のぼやけたアーティファクトを追加し得る。
符号化ステージ616において、候補フィルタを第2のビデオストリームコピー606に適用することによってフィルタリングされた第2のビデオストリームコピーが生成された後、フィルタリングされた第2のビデオストリームコピーが候補ビットストリームに符号化される。符号化ステージ616は、フィルタリングされた第2のビデオストリームコピーのデータが処理されるエンコーダ(たとえば、エンコーダ400)の1つまたは複数のステージを含み得る。たとえば、符号化ステージ616は、少なくとも予測ステージ、変換ステージ、量子化ステージ、およびエントロピコーディングステージ(たとえば、イントラ/インター予測ステージ402、変換ステージ404、量子化ステージ406、およびエントロピ符号化ステージ408)を含むことができる。
候補ビットストリームは、フィルタリングされた第2のビデオストリームコピーごとに生成される。候補ビットストリームは、圧縮されたビットストリーム420などの圧縮されたビットストリームである。フィルタリングされた第2のビデオストリームコピーは、定義されたトランスコード設定、たとえば、一定の品質設定、一定のレートファクタ設定、またはその両方を使用して、候補ビットストリームに符号化され得る。あるいは、フィルタリングされた第2のビデオストリームコピーは、対応する候補フィルタのトランスコード設定を使用して候補ビットストリームに符号化され得る。
ビットストリーム選択ステージ618において、候補ビットストリームが生成された後、それらの候補ビットストリームのうちの1つが出力ビットストリーム620として選択され、これは、たとえば、(たとえば、図5に示されるデコーダ500などのデコーダを使用して)さらなる処理のために出力または記憶され得る。出力ビットストリーム620は、候補ビットストリームの各々について決定されたコスト値に基づいて選択される。
候補ビットストリームのコスト値を決定するために、候補ビットストリームは、最初に、候補ビットストリームの歪み値およびビットレートを決定するなどのために、入力ビデオストリーム602と比較される。歪み値は、対応する候補フィルタを適用し、続いてフィルタリングされた第2のビデオストリームコピーを参照ビットストリームに符号化することによって第2のビデオストリームコピー606に導入された歪みの量の測定値を表す。ビットレートは、候補ビットストリームを送信するために使用される時間単位(たとえば、秒)あたりのビット数の測定値を表す。候補ビットストリームごとの歪み値は、PSNR、MSE、SSI、または別の歪み測定技法を使用して決定され得る。
候補ビットストリームの歪み値およびビットレートが決定された後、その候補ビットストリームのコスト値は、参照ビットストリーム610の歪み値と候補ビットストリームの歪み値との間の差に基づいて、さらに、参照ビットストリーム610のビットレートと候補ビットストリームのビットレートとの間の差に基づいて決定することができる。候補ビットストリームの各々についてコスト値が決定された後、コスト値の最も低いものを有する候補ビットストリームが出力ビットストリーム620として選択される。
600の他の変形は、入力ビデオストリーム602を出力ビットストリーム620に符号化するために使用され得る。本明細書で説明するように、候補ビットストリームは、候補フィルタを第2のビデオストリームコピー606に個別に適用し、次いで、結果として生じるフィルタリングされた第2のビデオストリームコピーを候補ビットストリームに個別に符号化することなどによって、反復的に生成され得る。しかしながら、いくつかの実装形態では、候補ビットストリームは、フィルタリングされた第2のビデオストリームコピーのすべてがフィルタ適用ステージ614によって生成された後に生成され得る。
たとえば、各候補フィルタを取得し、それを第2のビデオストリームコピー606に適用し、次いで、結果として生じるフィルタリングされた第2のビデオストリームコピーを候補ビットストリームに符号化する代わりに、フィルタ適用ステージ614は、候補フィルタのうちのいくつかまたはすべてについて、フィルタリングされた第2のビデオストリームコピーを生成することができる。フィルタ適用ステージ614がその処理を終了した後、符号化ステージ616は、フィルタリングされた第2のビデオストリームコピーの各々を受信し、それらの各々をそれぞれの候補ビットストリームに符号化することができる。
いくつかの実装形態では、フィルタ適用ステージ614、符号化ステージ616、またはビットストリーム選択ステージ618のうちの1つまたは複数は、適応フィルタリングステージ612の外部にあり得る。たとえば、適応フィルタリングステージは、候補フィルタを第2のビデオストリームコピー606の個々のコピーに適用することに限定され得る。そのような実装形態において、符号化ステージ616への入力は、適応フィルタリングステージ612の出力であり得る。
いくつかの実装形態では、パイプライン600は、ビットストリーム選択ステージ618とは別のコスト値決定ステージを含み得る。たとえば、コスト値決定ステージは、候補フィルタおよび対応する候補ビットストリームのコスト値を決定するなどのために、ビットストリーム選択ステージ618に関して上記の動作を実行することができる。コスト値決定ステージは、適応フィルタリングステージ612の一部であってもよく、パイプライン600における適応フィルタリングステージ612の後に発生してもよい。
いくつかの実装形態では、符号化ステージ608および符号化ステージ616は、パイプライン600の単一の符号化ステージによって置き換えられ得る。たとえば、符号化ステージは、第1のビデオストリームコピー604を入力として受信し、参照ビットストリーム610を出力することができる。同様に、符号化ステージは、フィルタ適用ステージ614によって生成されたフィルタリングされた第2のビデオストリームコピーを受信し、ビットストリーム選択ステージ618におけるさらなる処理などのために、候補ビットストリームを出力することができる。
図7は、適応フィルタリングを使用して出力ビットストリームを選択するために実行される動作の例のブロック図である。たとえば、図7に関して示され、説明される動作は、図6に示されるフィルタ適用ステージ614、符号化ステージ616、および/またはビットストリーム選択ステージ618のうちの1つまたは複数において実行される動作を表し得る。図7に関して示され、説明される動作は、出力ビットストリーム700として選択される候補ビットストリームを生成するために入力ビデオストリームのコピーを表すビデオストリームコピー702を使用することなどによって、入力ビデオストリームを出力ビットストリーム700に符号化するために実行される。たとえば、出力ビットストリーム700およびビデオストリームコピー702は、それぞれ、図6に示される出力ビットストリーム620および第2のビデオストリームコピー606であり得る。
処理の第1の部分は、変換ステージ704、候補フィルタ適用ステージ706、および逆変換ステージ708を含み、これらは、フィルタリングされたビデオストリームコピー710を生成するための動作を実行する。すなわち、処理の第1の部分は、フィルタリングされたビデオストリームコピー710を生成するために、候補フィルタをビデオストリームコピー702の各フレームに適用するために実行される。
ビデオストリームコピー702の所与のフレームについて、変換ステージ704において、フレームのブロックの各々は、空間ドメインから周波数ドメインに変換される。フレームの所与のブロックを変換することは、ブロック内のピクセル値に対して2次元の高速フーリエ変換などの変換を適用することを含む。ピクセル値が周波数ドメインに変換された後、候補フィルタ適用ステージ706において、フィルタリングされた周波数ドメイン値を生成するために、候補フィルタが適用される。次いで、フィルタリングされた周波数ドメイン値は、それらの値を空間ドメインに返すために、逆変換ステージ708において逆変換される。逆変換の出力は、フィルタリングされたビデオストリームコピー710である。
ビデオストリームコピー702の所与のフレームに候補フィルタを適用することは、フレームをサイズP×Qのいくつかの重複するブロックに分割することを含み、PおよびQは同じ数でもよく、異なる数でもよい。次いで、それらのブロック領域のノイズを除去するなどのために、候補フィルタがフレームの重複するブロック領域に適用される。重複するブロック領域の重複は、半分重複するか、4分の1重複するか、または別の量だけ重複する可能性がある。ノイズ除去フィルタは、ラスタ順または別の順序でフレームの重複するブロック領域に順次適用され得る。
たとえば、サイズ1,024×1,024のフレームとサイズ32×32のノイズ除去フィルタの場合、フィルタは、ピクセル位置[0、0]から[312、312]までのフレームのブロック領域に最初に適用される。ノイズ除去フィルタが適用されるフレームの次のブロック領域は、ピクセル位置[16、0]から[478、312]までである。これは、ピクセル位置[992、992]から[10,234、10,234]までのブロック領域における最終的な適用まで繰り返される。あるいは、ノイズ除去フィルタのサイズおよび/または隣接するブロック領域が重複する程度は、各ブロック領域によって変化し得る。たとえば、重複の程度は、それぞれの独立した方向において、0とN-1との間で変化するパラメータ値を有する特定のラグとして定義することができる。
処理の第2の部分は、フィルタリングされたビデオストリームコピー710が候補ビットストリーム714に符号化される、符号化ステージ712を含む。符号化ステージ712は、たとえば、図6に示される符号化ステージ616であり得る。たとえば、符号化ステージ712は、候補ビットストリーム714を生成するために、フィルタリングされたビデオストリームコピー710のデータを処理するための1つまたは複数の動作を実行することができる。
処理の第3の部分は、ビットストリーム比較ステージ716およびコスト値決定ステージ718を含む。ビットストリーム比較ステージ716において、候補ビットストリーム714の歪み値およびビットレートを決定するために、候補ビットストリーム714および入力ビデオストリームが比較される。コスト値決定ステージ718において、候補ビットストリーム714の(したがって、候補ビットストリーム714を生成するために使用される候補フィルタの)コスト値を決定するために、候補ビットストリーム714の歪み値およびビットレートが使用される。
たとえば、候補ビットストリーム714の(したがって、対応する候補フィルタの)コスト値は、以下のように計算することができる。
E(F)=B(T')-α(D(T')-D(T))
上式で、Fは候補フィルタであり、E(F)はコスト値であり、Tは参照ビットストリーム(たとえば、図6に示される参照ビットストリーム610)であり、T'は候補ビットストリーム714であり、B(T')はT'のビットレートであり、D(T')はT'について測定された歪み値であり、D(T)はT'について測定された歪み値であり、αは歪み値D(T')とD(T)の差に適用される重みである。αの値は、ビデオストリームコピー702のターゲットビットレートに基づいて定義され得る。たとえば、特定の歪み値をもたらすαの値は、経験的に識別され得る。
場合によっては、参照ビットストリームの歪み値と候補ビットストリーム714の歪み値との間の差は非線形であり得る。すなわち、それらの歪み値の間の差が顕著な品質またはビットレートの削減をもたらすかどうかは、差が含まれる歪み範囲に依存し得る。たとえば、それらの歪み値がそれぞれ30デシベルから45デシベルの間である場合、それらの間の差が最も明白になる。25デシベル未満の差は、ビデオストリームの外観に悪影響を与える重大な品質低下をもたらす可能性がある。50デシベルを超える差は、人間の閲覧者には知覚できないほどの品質向上をもたらす可能性がある。したがって、50デシベルを超えたまま歪み値を削減すると、より深いビットレート削減が可能になる。しかしながら、品質の差が50デシベル未満でますます明らかになるため、ビデオストリームの品質に影響を与えずにビットレートを削減する機会は少なくなる。
候補ビットストリーム714のコスト値が決定された後、そのコスト値が候補ビットストリームについてこれまでに計算された最低のコスト値であるかどうかについての決定が行われる。最低のコスト値である場合、候補ビットストリーム714は、最良の候補ビットストリームとして記憶される。最低のコスト値ではない場合、候補ビットストリーム714は破棄されるか、さもなければそれ以上使用されない。
たとえば、コスト値は、それぞれのN個の候補フィルタを使用して生成されたN個の候補ビットストリームに対して繰り返し決定され得る。所与の候補ビットストリームに対して所与のコスト値が決定された後、そのコスト値を、コスト値決定ステージ718によってこれまでに処理されたN~X個の候補ビットストリームに対して決定された最低のコスト値を表す記憶されたコスト値と比較することができる。所与のコスト値が記憶されたコスト値よりも低い場合、その候補ビットストリームは、以前に記憶された候補ビットストリームを置き換えるために記憶される。最終(すなわち、N番目の)候補ビットストリームが処理された後、記憶された候補ビットストリームが出力ビットストリーム700として選択される。
図7に示される処理の他の変形は、出力ビットストリーム700を選択するために使用され得る。いくつかの実装形態では、候補フィルタを取得するために、非線形最適化技法が使用され得る。たとえば、候補フィルタのうちのいくつかまたはすべては、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの1つまたは複数を使用して取得され得る。いくつかの実装形態では、候補フィルタを取得するために、非線形処理以外の最適化動作を使用することができる。たとえば、候補フィルタは、勾配距離関数、ラグランジュ関数、線形探索関数(たとえば、制限されたパラメータを使用する)などを使用して取得することができる。たとえば、線形探索関数を使用すると、αの値を0から1まで0.1または他の増分で段階的に増やすことができる。そのため、αの段階的な増分ごとに異なる候補ビットストリームを決定することができる。
次に、ビットレート削減のためのビデオストリーム適応フィルタリングのための技法のさらなる詳細について説明する。図8A~図8Bは、適応フィルタリングを使用してビデオストリームを出力ビットストリームに符号化するための技法800の例のフローチャート図である。図9は、候補フィルタに対して決定されたコスト値に基づいて出力ビットストリームを選択するための技法900の例のフローチャート図である。
技法800および/または技法900は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行され得るソフトウェアプログラムとして実装することができる。たとえば、ソフトウェアプログラムは、メモリ204または二次ストレージ214などのメモリに記憶され得、プロセッサ202などのプロセッサによって実行されると、コンピューティングデバイスに、技法800および/または技法900を実行させ得るマシン可読命令を含むことができる。技法800および/または技法900は、専用ハードウェアまたはファームウェアを使用して実装することができる。たとえば、ハードウェアコンポーネントは、技法800および/または技法900を実行するように構成される。上で説明したように、いくつかのコンピューティングデバイスは、複数のメモリまたはプロセッサを有し得、技法800および/または技法900において説明される動作は、複数のプロセッサ、メモリ、またはその両方を使用して分散することができる。
説明を簡単にするために、技法800および900は両方とも、本明細書において一連のステップまたは動作として描写および説明されている。しかしながら、本開示によるステップまたは動作は、様々な順序で、および/または同時に発生する可能性がある。さらに、本明細書に提示および記載されていない他のステップまたは動作が使用され得る。さらに、開示された主題に従って技法を実装するために、図示されたすべてのステップまたは動作が必要とされるわけではない。
まず図8A~図8Bを参照すると、適応フィルタリングを使用して入力ビデオストリームを出力ビットストリームに符号化するための技法800が示されている。802において、入力ビデオストリームの第1のコピーは、参照ビットストリームに符号化される。入力ビデオストリームの第1のコピーは、入力ビデオストリームの同一のコピーである。入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することは、入力ビデオストリームの第1のコピーのフレームに対して予測、変換、量子化、およびエントロピコーディング動作を実行するために、エンコーダ(たとえば、図4に示されるエンコーダ400)を使用することを含むことができる。
804において、参照ビットストリームの歪み値およびビットレートを決定するために、入力ビデオストリームおよび参照ビットストリームが比較される。歪み値は、入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することによって、入力ビデオストリームに導入された歪みの量の測定値を表す。ビットレートは、参照ビットストリームを送信するために使用される時間単位(たとえば、秒)あたりのビット数の測定値を表す。
806において、入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、候補フィルタが入力ビデオストリームの第2のコピーに適用される。入力ビデオストリームのフィルタリングされた第2のコピーの各々は、それを生成するために使用される単一の候補フィルタに対応する。候補フィルタを入力ビデオストリームの第2のコピーに適用することは、入力ビデオストリームの第2のコピーのフレームごとに、最初に、フレーム内の値を空間ドメインから周波数ドメインに変換することを含む。変換後、フィルタリングされた周波数ドメイン値を生成するために、候補フィルタがフレームの各ブロックに適用される。次いで、フィルタリングされた周波数ドメイン値は、周波数ドメインから空間ドメインに逆変換される。各フレームの逆変換された値は、入力ビデオストリームのフィルタリングされた第2のコピーの値を表す。入力ビデオストリームのフィルタリングされた第2のコピーは、候補フィルタのうちのいくつかまたはすべてに対して生成される。
808において、入力ビデオストリームのフィルタリングされた第2のコピーは、候補ビットストリームに符号化される。入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化することは、入力ビデオストリームのフィルタリングされた第2のコピーのフレームに対して予測、変換、量子化、およびエントロピコーディング動作を実行するために、エンコーダ(たとえば、図4に示されるエンコーダ400)を使用することを含むことができる。
810において、歪み値およびビットレートが、候補ビットストリームの各々について決定される。候補ビットストリームの歪み値およびビットレートは、候補ビットストリームを入力ビデオストリームと比較することによって決定される。歪み値は、対応する候補フィルタを適用し、続いて入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化することによって入力ビデオストリームに導入された歪みの量の測定値を表す。ビットレートは、候補ビットストリームを送信するために使用される時間単位(たとえば、秒)あたりのビット数の測定値を表す。
812において、コスト値は、候補ビットストリームの各々について、したがって、入力ビデオストリームの第2のコピーに適用される候補フィルタの各々について決定される。候補ビットストリームのコスト値は、参照ビットストリームの歪み値と候補ビットストリームの歪み値との間の差に基づいて、さらに、参照ビットストリームのビットレートと候補ビットストリームのビットレートとの間の差に基づいて決定される。具体的には、加重値は、参照ビットストリームの歪み値と候補ビットストリームの歪み値との間の差に重みを適用することによって計算される。次いで、候補ビットストリームのコスト値は、参照ビットストリームのビットレートと候補ビットストリームのビットレートとの間の差から加重値を引くことによって決定することができる。
814において、コスト値のうちの最も低いものを有する候補ビットストリームが、入力ビデオストリームの出力ビットストリームとして選択される。候補ビットストリームを反復することを含む、出力ビットストリームを選択するための実装形態および例は、図9に関して以下に説明される。
816において、出力ビットストリームが出力または記憶される。たとえば、出力ビットストリームは、ビットストリームを出力ビデオストリームに出力するために復号するなどのために、デコーダに送信され得る。別の例では、出力ビットストリームは、後で使用するなどのために記憶され得る。
いくつかの実装形態では、技法800に関して説明された動作のうちのいくつかまたはすべては、個々の候補フィルタに対して実行され、次いで、後続の候補フィルタに対して繰り返され得る。たとえば、候補フィルタを入力ビデオストリームの第2のコピーに適用することと、入力ビデオストリームのフィルタリングされた第2のコピーを候補ビットストリームに符号化することと、候補ビットストリームの歪み値およびビットレートを決定することと、候補ビットストリームのコスト値を決定することとを行うための動作は、候補フィルタごとに個別に繰り返し実行することができる。たとえば、X番目の候補ビットストリームのコスト値が決定された後、本技法は、次いで、入力ビデオストリームの第2のコピーにX+1番目の候補フィルタを適用することに進むことができ、以下同様である。
次に図9を参照すると、候補フィルタに対して決定されたコスト値に基づいて出力ビットストリームを選択するための技法900が示されている。902において、入力ビデオストリームのコピーが受信される。たとえば、入力ビデオストリームのコピーは、図7に示されるビデオストリームコピー702であり得る。入力ビデオストリームのコピーは、エンコーダにおいて受信された入力ビデオストリームのコピーを表し得る。入力ビデオストリームのコピーを受信することは、入力ビデオストリームのコピーを受信する適応フィルタリングステージ(たとえば、図6に示される適応フィルタリングステージ612)などの、エンコーダのコンピューティングの側面を含むことができる。
904において、N番目のフィルタが、入力ビデオストリームのコピーの各フレームに適用される。N番目のフィルタは、入力ビデオストリームのコピーをフィルタリングするために使用できるいくつかの候補フィルタのうちの1つである。入力ビデオストリームのコピーの各フレームにN番目のフィルタを適用することは、そのようなフレームごとに、所与のフレーム内の値を空間ドメインから周波数ドメインに変換することと、フィルタリングされた周波数ドメイン値を生成するために、所与の候補フィルタを所与のフレームの各ブロックに適用することと、次いで、フィルタリングされた周波数ドメイン値を周波数ドメインから空間ドメインに逆変換することとを含むことができる。
906において、入力ビデオストリームのコピーにN番目のフィルタを適用した後に生成された候補ビットストリームのコスト値が決定される。具体的には、N番目のフィルタが入力ビデオストリームのコピーに適用された後、結果として生じる入力ビデオストリームのフィルタリングされたコピーは、候補ビットストリームに符号化される(たとえば、図4に示されるエンコーダ400などのエンコーダを使用して)。次いで、候補ビットストリームの歪み値およびビットレートを決定するために、入力ビデオストリームと候補ビットストリームが比較される。次いで、コスト値は、候補ビットストリームに対して決定された歪み値およびビットレートと、参照ビットストリームに対して決定された歪み値およびビットレートとの間の差に基づいて決定される。
908において、N番目のフィルタの適用から生じるコスト値が、N個の候補フィルタを使用して生成された候補ビットストリームに対して決定された最低のコスト値であるかどうかに関して決定が行われる。たとえば、N~X番目の候補ビットストリームを生成するためにN~X番目のフィルタを適用することから生じる現在の最低コスト値は、バッファまたは他のデータストアに記憶され得る。N番目の候補ビットストリームのコスト値が最低のコスト値であるかどうかを決定することは、そのコスト値を記憶されたコスト値と比較することを含むことができる。N番目の候補ビットストリームのコスト値は、記憶されているコスト値よりも低い最低のコスト値である。
910において、N番目の候補ビットストリームのコスト値が最低のコスト値であるという決定に応答して、N番目の候補ビットストリームが記憶される。N番目の候補ビットストリームを記憶することは、以前にそこに記憶されたN~X番目の候補ビットストリームを置き換えるために、バッファまたは他のデータストアにN番目の候補ビットストリームを記憶することを含む。たとえば、N番目の候補ビットストリーム自体を記憶することができ、および/あるいはN番目の候補ビットストリームのインデックスまたは他のインジケータが記憶され得る。あるいは、912において、N番目の候補ビットストリームのコスト値が最低のコスト値ではないという決定に応答して、N番目の候補ビットストリームが破棄される。
914において、N番目のフィルタが検討のために利用可能なままである最後の候補フィルタであるかどうかについて決定が行われる。916において、N番目のフィルタが検討のために利用可能なままである最後の候補フィルタではないという決定に応じて、Nの値が1増加し、プロセスが繰り返される。あるいは、918において、N番目のフィルタが検討のために利用可能なままである最後の候補フィルタであるという決定に応答して、記憶された候補ビットストリームが出力ビットストリームとして選択される。たとえば、N番目のフィルタが最後の残りのフィルタであるという決定が行われる前にN番目の候補ビットストリームがバッファまたは他のデータストアに記憶されている場合、N番目の候補ビットストリームが出力ビットストリームとして選択される。
いくつかの実装形態では、技法900は、候補ビットストリームの1つまたは複数の態様をしきい値と比較することを含むことができる。たとえば、しきい値は、それぞれの候補フィルタの適用およびその後のフィルタリングされたビデオストリームコピーの候補ビットストリームへの符号化から生じる最大許容品質損失を表すことができる。別の例では、しきい値は、それぞれの候補フィルタの適用およびその後のフィルタリングされたビデオストリームコピーの候補ビットストリームへの符号化から生じる最大許容待ち時間を表すことができる。さらに別の例では、しきい値は、それぞれの候補フィルタの適用およびその後のフィルタリングされたビデオストリームコピーの候補ビットストリームへの符号化から生じる最大許容計算リソースコストを表すことができる。
そのような実装形態では、候補ビットストリームの1つまたは複数の態様(たとえば、その品質損失、待ち時間、および/またはその計算リソースコスト)がしきい値と比較される(たとえば、候補ビットストリームのコスト値が最低のコスト値であるかどうかを決定する前、または候補ビットストリームが最低のコスト値を有するという決定に応答して候補ビットストリームを記憶する前)。1つまたは複数の態様がしきい値を満たす場合(たとえば、それぞれの最大値を超えないことによって)、技法900は、候補ビットストリームの処理を続行するように進むことができる。しかしながら、それらの1つまたは複数の態様がしきい値を満たさない場合、候補ビットストリームは破棄されるか、さもなければそれ以上処理されない可能性がある。
上記の符号化および復号の態様は、符号化および復号技法のいくつかの例を示している。しかしながら、それらの用語が特許請求の範囲において使用されているように、符号化および復号は、データの圧縮、解凍、変換、あるいは任意の他の処理または変更を意味し得ることが理解されるべきである。
「例(example)」という言葉は、本明細書では、例、インスタンス、または例示として機能することを意味するために使用される。本明細書で「例」として説明される任意の態様または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるべきではない。むしろ、「例」という言葉の使用は、概念を具体的に提示することを意図している。本出願において使用される場合、「または(or)」という用語は、排他的な「または」ではなく、包括的な「または」を意味することを意図している。すなわち、別段の指定がない限り、または文脈によって別段の明確な指示がない限り、「XにはAまたはBが含まれる(X includes A or B)」という記述は、その自然な包括的順列のうちのいずれかを意味することを意図する。すなわち、XにAが含まれている場合、XにはBが含まれている場合、または、XにAとBの両方が含まれている場合、前述のいずれかの場合に「XにはAまたはBが含まれる」が満たされる。さらに、本出願および添付の特許請求の範囲において使用される冠詞「a」および「an」は、別段の指定がない限り、または文脈によって単数形を対象とすると明確な指示がない限り、一般に「1つまたは複数(one or more)」を意味すると解釈されるべきである。さらに、本開示全体での「実装形態(an implementation)」という用語または「1つの実装形態(one implementation)」という用語の使用は、そのように説明されない限り、同じ実装形態を意味することを意図するものではない。
送信局102および/または受信局106(ならびに、エンコーダ400およびデコーダ500を含む、そこに記憶され、および/またはそれによって実行されるアルゴリズム、方法、命令など)の実装形態は、ハードウェア、ソフトウェア、またはそれらの任意の組合せにおいて実現することができる。ハードウェアは、たとえば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラマブルロジックアレイ、光プロセッサ、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または任意の他の適切な回路を含むことができる。請求項において、「プロセッサ(processor)」という用語は、単独でまたは組み合わせて、前述のハードウェアのうちのいずれかを包含すると理解されるべきである。「信号(signal)」および「データ(data)」という用語は交換可能に使用される。さらに、送信局102および受信局106の部分は、必ずしも同じ方法で実装される必要はない。
さらに、一態様では、たとえば、送信局102または受信局106は、実行されると、本明細書に記載のそれぞれの方法、アルゴリズム、および/または命令のうちのいずれかを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを使用して実装することができる。さらに、または代わりに、たとえば、本明細書に記載の方法、アルゴリズム、または命令のうちのいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ/プロセッサを利用することができる。
送信局102および受信局106は、たとえば、ビデオ会議システム内のコンピュータ上に実装することができる。あるいは、送信局102は、サーバ上に実装することができ、受信局106は、ハンドヘルド通信デバイスなどの、サーバとは別のデバイス上に実装することができる。この場合、送信局102は、エンコーダ400を使用して、コンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。次に、通信デバイスは、デコーダ500を使用して、符号化されたビデオ信号を復号することができる。あるいは、通信デバイスは、通信デバイスにローカルに記憶されたコンテンツ、たとえば、送信局102によって送信されなかったコンテンツを復号することができる。他の適切な送信および受信実装形態方式が利用可能である。たとえば、受信局106は、ポータブル通信デバイスではなく、一般に静止したパーソナルコンピュータであり得、および/またはエンコーダ400を含むデバイスはまた、デコーダ500を含み得る。
さらに、本開示の実装形態の全部または一部は、たとえば、コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。コンピュータ使用可能またはコンピュータ可読媒体は、たとえば、任意のプロセッサによって、または任意のプロセッサに関連して使用するために、プログラムを具体的に含有、記憶、通信、または転送することができる任意のデバイスであり得る。媒体は、たとえば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
上記の実装形態および他の態様は、本開示の容易な理解を促進するために説明されており、本開示を限定するものではない。それどころか、本開示は、添付の請求項の範囲内に含まれる様々な修正および同等の取り決めをカバーすることを意図しており、その範囲は、そのようなすべての修正および同等の取り決めを包含するように、法律の下で許可される最も広い解釈を与えられるべきである。
100 ビデオ符号化および復号システム
102 送信局
104 ネットワーク
106 受信局
200 コンピューティングデバイス
202 プロセッサ
204 メモリ
206 データ
208 オペレーティングシステム
210 アプリケーションプログラム
212 バス
214 二次ストレージ
218 ディスプレイ
220 画像感知デバイス
222 音感知デバイス
300 ビデオストリーム
302 ビデオシーケンス
304 隣接フレーム
306 フレーム
308 セグメント
310 ブロック
400 エンコーダ
402 イントラ/インター予測ステージ
404 変換ステージ
406 量子化ステージ
408 エントロピ符号化ステージ
410 非量子化ステージ
412 逆変換ステージ
414 再構築ステージ
416 ループフィルタリングステージ
420 圧縮されたビットストリーム
500 デコーダ
502 エントロピ復号ステージ
504 非量子化ステージ
506 逆変換ステージ
508 イントラ/インター予測ステージ
510 再構築ステージ
512 ループフィルタリングステージ
514 ポストフィルタステージ
516 出力ビデオストリーム
600 ビデオストリーム処理パイプライン
602 入力ビデオストリーム
604 第1のビデオストリームコピー
606 第2のビデオストリームコピー
608 符号化ステージ
610 参照ビットストリーム
612 適応フィルタリングステージ
614 フィルタ適用ステージ
616 符号化ステージ
618 ビットストリーム選択ステージ
620 出力ビットストリーム
700 出力ビットストリーム
702 ビデオストリームコピー
704 変換ステージ
706 候補フィルタ適用ステージ
708 逆変換ステージ
710 フィルタリングされたビデオストリームコピー
712 符号化ステージ
714 候補ビットストリーム
716 ビットストリーム比較ステージ
718 コスト値決定ステージ
800 技法
900 技法

Claims (20)

  1. 入力ビデオストリームを出力ビットストリームに符号化するための方法であって、
    前記入力ビデオストリームの第1のコピーを参照ビットストリームに、エンコーダによって符号化するステップと、
    前記参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、前記入力ビデオストリームと前記参照ビットストリームを、前記エンコーダによって比較するステップと、
    いくつかの候補フィルタの候補フィルタごとに、
    前記入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの第2のコピーの各フレームに前記候補フィルタを、前記エンコーダによって適用するステップと、
    前記入力ビデオストリームの前記フィルタリングされた第2のコピーを候補ビットストリームに、前記エンコーダによって符号化するステップと、
    前記候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、前記入力ビデオストリームと前記候補ビットストリームを、前記エンコーダによって比較するステップと、
    前記第1の歪み値と前記第2の歪み値との間の差に基づいて、および前記第1のビットレートと前記第2のビットレートとの間の差に基づいて、前記候補フィルタのコスト値を、前記エンコーダによって決定するステップと、
    前記出力ビットストリームとして、前記コスト値のうちの最も低いものを有する前記候補フィルタに対応する前記候補ビットストリームを、前記エンコーダによって選択するステップと、
    前記出力ビットストリームを、前記エンコーダによって出力または記憶するステップと
    を備える、方法。
  2. 前記候補フィルタが、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される、請求項1に記載の方法。
  3. 前記入力ビデオストリームの前記フィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの前記第2のコピーの所与のフレームに所与の候補フィルタを適用するステップが、
    前記所与のフレーム内の値を空間ドメインから周波数ドメインに変換するステップと、
    変換する前記ステップの後、フィルタリングされた周波数ドメイン値を生成するために、前記所与の候補フィルタを前記所与のフレームの各ブロックに適用するステップと、
    前記フィルタリングされた周波数ドメイン値を前記周波数ドメインから前記空間ドメインに逆変換するステップと
    を備える、請求項1または2に記載の方法。
  4. 前記フィルタリングされた周波数ドメイン値を生成するために前記フレームの各ブロックに前記所与の候補フィルタを適用するステップが、
    前記所与の候補フィルタを使用して前記フレームの重複するブロック領域をノイズ除去するステップを備える、請求項3に記載の方法。
  5. 前記重複するブロック領域が半分重複するブロック領域である、請求項4に記載の方法。
  6. 前記いくつかの候補フィルタの所与の候補フィルタの前記コスト値を決定するステップが、
    前記第1の歪み値と前記第2の歪み値との間の差に重みを適用することによって加重値を計算するステップと、
    前記第1のビットレートと前記第2のビットレートとの間の差から前記加重値を引くことによって前記コスト値を決定するステップと
    を備える、請求項1から5のいずれか一項に記載の方法。
  7. 前記重みが前記第2の歪み値のターゲットに基づいて定義される、請求項6に記載の方法。
  8. 入力ビデオストリームを出力ビットストリームに符号化するための装置であって、
    メモリと、
    プロセッサとを備え、前記プロセッサが、
    前記入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することと、
    前記参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、前記入力ビデオストリームと前記参照ビットストリームを比較することと、
    いくつかの候補フィルタの候補フィルタごとに、
    前記入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの第2のコピーの各フレームに前記候補フィルタを適用することと、
    前記入力ビデオストリームの前記フィルタリングされた第2のコピーを候補ビットストリームに符号化することと、
    前記候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、前記入力ビデオストリームと前記候補ビットストリームを比較することと、
    前記第1の歪み値と前記第2の歪み値との間の差に基づいて、および前記第1のビットレートと前記第2のビットレートとの間の差に基づいて、前記候補フィルタのコスト値を決定することと、
    前記出力ビットストリームとして、前記コスト値のうちの最も低いものを有する前記候補フィルタに対応する前記候補ビットストリームを選択することと、
    前記出力ビットストリームを出力または記憶することと
    を行うために、前記メモリに記憶された命令を実行するように構成された、装置。
  9. 前記候補フィルタが、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される、請求項8に記載の装置。
  10. 前記入力ビデオストリームの前記フィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの前記第2のコピーの所与のフレームに所与の候補フィルタを適用するための前記命令が、
    前記所与のフレーム内の値を空間ドメインから周波数ドメインに変換することと、
    前記変換することの後、フィルタリングされた周波数ドメイン値を生成するために、前記所与の候補フィルタを前記所与のフレームの各ブロックに適用することと、
    前記フィルタリングされた周波数ドメイン値を前記周波数ドメインから前記空間ドメインに逆変換することと
    を行うための命令を含む、請求項8または9に記載の装置。
  11. 前記フィルタリングされた周波数ドメイン値を生成するために前記フレームの各ブロックに前記所与の候補フィルタを適用するための前記命令が、
    前記所与の候補フィルタを使用して前記フレームの重複するブロック領域をノイズ除去するための命令を含む、請求項10に記載の装置。
  12. 前記重複するブロック領域が半分重複するブロック領域である、請求項11に記載の装置。
  13. 前記いくつかの候補フィルタの所与の候補フィルタの前記コスト値を決定するための前記命令が、
    前記第1の歪み値と前記第2の歪み値との間の差に重みを適用することによって加重値を計算することと、
    前記第1のビットレートと前記第2のビットレートとの間の差から前記加重値を引くことによって前記コスト値を決定することと
    を行うための命令を含む、請求項8から12のいずれか一項に記載の装置。
  14. 前記重みが前記第2の歪み値のターゲットに基づいて定義される、請求項13に記載の装置。
  15. 入力ビデオストリームを出力ビットストリームに符号化するための動作を実行するエンコーダであって、前記動作が、
    前記入力ビデオストリームの第1のコピーを参照ビットストリームに符号化することと、
    前記参照ビットストリームの第1の歪み値と第1のビットレートとを決定するために、前記入力ビデオストリームと前記参照ビットストリームを比較することと、
    いくつかの候補フィルタの候補フィルタごとに、
    前記入力ビデオストリームのフィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの第2のコピーの各フレームに前記候補フィルタを適用することと、
    前記入力ビデオストリームの前記フィルタリングされた第2のコピーを候補ビットストリームに符号化することと、
    前記候補ビットストリームの第2の歪み値と第2のビットレートとを決定するために、前記入力ビデオストリームと前記候補ビットストリームを比較することと、
    前記第1の歪み値と前記第2の歪み値との間の差に基づいて、および前記第1のビットレートと前記第2のビットレートとの間の差に基づいて、前記候補フィルタのコスト値を決定することと、
    前記出力ビットストリームとして、前記コスト値のうちの最も低いものを有する前記候補フィルタに対応する前記候補ビットストリームを選択することと、
    前記出力ビットストリームを出力または記憶することと
    を備える、エンコーダ。
  16. 前記候補フィルタが、遺伝的アルゴリズム、勾配降下アルゴリズム、または別の非線形最適化技法のうちの少なくとも1つを使用して取得される、請求項15に記載のエンコーダ。
  17. 前記入力ビデオストリームの前記フィルタリングされた第2のコピーを生成するために、前記入力ビデオストリームの前記第2のコピーの所与のフレームに所与の候補フィルタを適用することが、
    前記所与のフレーム内の値を空間ドメインから周波数ドメインに変換することと、
    前記変換することの後、フィルタリングされた周波数ドメイン値を生成するために、前記所与の候補フィルタを前記所与のフレームの各ブロックに適用することと、
    前記フィルタリングされた周波数ドメイン値を前記周波数ドメインから前記空間ドメインに逆変換することと
    を備える、請求項15または16に記載のエンコーダ。
  18. 前記フィルタリングされた周波数ドメイン値を生成するために前記フレームの各ブロックに前記所与の候補フィルタを適用することが、
    前記所与の候補フィルタを使用して前記フレームの重複するブロック領域をノイズ除去することを備える、請求項17に記載のエンコーダ。
  19. 前記重複するブロック領域が半分重複するブロック領域である、請求項18に記載のエンコーダ。
  20. 前記いくつかの候補フィルタの所与の候補フィルタの前記コスト値を決定することが、
    前記第1の歪み値と前記第2の歪み値との間の差に重みを適用することによって加重値を計算することと、
    前記第1のビットレートと前記第2のビットレートとの間の差から前記加重値を引くことによって前記コスト値を決定することと
    を備え、
    前記重みが前記第2の歪み値のターゲットに基づいて定義される、請求項15から19のいずれか一項に記載のエンコーダ。
JP2021533618A 2018-12-24 2019-04-25 ビットレート削減のためのビデオストリーム適応フィルタリング Active JP7125559B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862784626P 2018-12-24 2018-12-24
US62/784,626 2018-12-24
PCT/US2019/029088 WO2020139414A1 (en) 2018-12-24 2019-04-25 Video stream adaptive filtering for bitrate reduction

Publications (2)

Publication Number Publication Date
JP2022514505A JP2022514505A (ja) 2022-02-14
JP7125559B2 true JP7125559B2 (ja) 2022-08-24

Family

ID=66857970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021533618A Active JP7125559B2 (ja) 2018-12-24 2019-04-25 ビットレート削減のためのビデオストリーム適応フィルタリング

Country Status (6)

Country Link
US (1) US20220078446A1 (ja)
EP (1) EP3884666A1 (ja)
JP (1) JP7125559B2 (ja)
KR (1) KR102668253B1 (ja)
CN (1) CN113170121A (ja)
WO (1) WO2020139414A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9248834B1 (en) 2014-10-02 2016-02-02 Google Inc. Predicting trajectories of objects based on contextual information
US11611770B2 (en) * 2020-10-14 2023-03-21 Tencent America LLC Method and apparatus for video coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030053709A1 (en) 1999-01-15 2003-03-20 Koninklijke Philips Electronics, N.V. Coding and noise filtering an image sequence
JP2006157084A (ja) 2004-11-25 2006-06-15 Canon Inc 画像符号化装置、画像符号化方法、及びコンピュータプログラム
WO2010123855A1 (en) 2009-04-20 2010-10-28 Dolby Laboratories Licensing Corporation Filter selection for video pre-processing in video applications

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748792A (en) * 1996-08-13 1998-05-05 Polaroid Corporation Large kernel filtering using a fixed-size block processor
US7450771B2 (en) * 2004-07-09 2008-11-11 National Taiwan University Pre-compression rate-distortion optimization method for JPEG 2000
CA2638465A1 (en) * 2007-08-01 2009-02-01 Jean-Yves Chouinard Learning filters for enhancing the quality of block coded still and video images
EP3395073A4 (en) * 2016-02-04 2019-04-10 Mediatek Inc. VIDEO ENCODING METHOD AND APPARATUS USING NON-LOCAL ADAPTIVE LOOP FILTERS

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030053709A1 (en) 1999-01-15 2003-03-20 Koninklijke Philips Electronics, N.V. Coding and noise filtering an image sequence
JP2006157084A (ja) 2004-11-25 2006-06-15 Canon Inc 画像符号化装置、画像符号化方法、及びコンピュータプログラム
WO2010123855A1 (en) 2009-04-20 2010-10-28 Dolby Laboratories Licensing Corporation Filter selection for video pre-processing in video applications

Also Published As

Publication number Publication date
WO2020139414A1 (en) 2020-07-02
KR102668253B1 (ko) 2024-05-21
KR20210089778A (ko) 2021-07-16
JP2022514505A (ja) 2022-02-14
US20220078446A1 (en) 2022-03-10
CN113170121A (zh) 2021-07-23
EP3884666A1 (en) 2021-09-29

Similar Documents

Publication Publication Date Title
KR102118573B1 (ko) 동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어
KR102097281B1 (ko) 이전의 프레임 잔차를 사용하는 모션 벡터 예측
US10798402B2 (en) Same frame motion estimation and compensation
US10277905B2 (en) Transform selection for non-baseband signal coding
US9641843B1 (en) Video coding using adaptive source variance based partitioning
WO2018169571A1 (en) Segmentation-based parameterized motion models
US10382767B2 (en) Video coding using frame rotation
CN110169059B (zh) 视频代码化的复合预测
US10009622B1 (en) Video coding with degradation of residuals
US20170302965A1 (en) Adaptive directional loop filter
JP7125559B2 (ja) ビットレート削減のためのビデオストリーム適応フィルタリング
US20240179352A1 (en) Restoration for video coding with self-guided filtering and subspace projection
US9210424B1 (en) Adaptive prediction block size in video coding
US10491923B2 (en) Directional deblocking filter
KR102335184B1 (ko) 복합 모션-보상 예측
US10110914B1 (en) Locally adaptive warped motion compensation in video coding
EP4264943A1 (en) Palette mode coding with designated bit depth precision

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210611

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220812

R150 Certificate of patent or registration of utility model

Ref document number: 7125559

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150