本発明のいくつかの実施形態の一態様は、フレームまたはその一部のブロックを符号化するために変換係数のセットを生成するための方法および/またはシステムに関するものであり、符号化は特定の選択された回転対称マスクに基づきブロックを分割することによって得られる2つの相補的部分上で実行される。これらの方法および/またはシステムは、画質を著しく落とすことなく、ブロックの圧縮率を改善することによって、ブロックを記憶し、および/または送信するために必要なサイズ(たとえば、ビット数)を低減する。画質低減は、本明細書で説明されている方法なしで標準的な方法を使用して画質低減に対する事前定義された許容可能な限度内にあり、および/またはそれに類似しており、たとえば、画質を定義するための客観的尺度としてピーク信号対雑音比(PSNR)が使用され得る。
本明細書で説明されているように、フレームまたは画像という用語は、フレームの一部または画像の一部を指す。変換係数は、フレーム(および/または画像)全体について、および/またはフレーム(および/または画像)の一部について計算されるものとしてよく、たとえば、変換係数は、たとえば、圧縮標準によって定義されているフレームの一部分であるスライスおよび/またはタイルについて計算される。
これらの方法および/またはシステムは、ブロックに対する好適な回転対称マスクを選択し、マスクに基づきブロックを2つの相補的部分に分割し、それらの部分の各々から一対の回転対称ブロックを生成し、回転対称ブロックのうちの一方または両方に対する変換係数を計算することにより、ブロックを符号化するためのエンコーダを備える。
これらの方法および/またはシステムは、変換係数を復号し、ブロックを再構成するためのデコーダを備える。変換係数は、回転対称ブロックの対を再構成するように復号される。この対の各メンバーは、2つの相補的部分のうちのそれぞれ一方に変換されて戻される(たとえば、逆変換計算に基づき)。これら2つの相補的部分は接続され戻されて一緒にされブロックを形成するが、これは回転対称マスクによってガイドされる。
明確にするために、エンコーダの詳細がここで説明される。各説明されている符号化機能および/または構造について、対応する復号機能および/または構造が暗示されている。簡潔にし、明確にするために、符号化機能および/または構造要素に対応する復号機能および/または構造要素は説明から省略されている。
適宜、マスクは、ブロックを、ブロック全体の圧縮と比較して、またはブロックに対する標準的な分割方法の圧縮と比較してより圧縮率の高い2つの相補的部分に分割するように選択される(たとえば、4つの正方形、たとえば、高効率ビデオ符号化(HEVC)および/またはH.265標準で定義されているように)。
適宜、マスクは、ブロックの画像内の1つまたは複数の視覚的特徴に基づきブロックを分割するように選択される。ブロックは、視覚的特徴、たとえば、ブロックを横切って示されている傾いた線またはエッジによって分離された異なるタイプのコンテンツを含み得る。マスクは、ブロックがその視覚的特徴と異なる配置で分割されるときに形成されるのと比べて各々互いにより均一である(すなわち、各々コンテンツのタイプのうちの1つを一般的に示す)2つの相補的部分を生成するように実質的に視覚的特徴に沿ってブロックを、たとえば、HEVC標準によって指定されているように4つの等しいブロックに分割するものとしてよい。
適宜、異なるブロックに対して異なるマスクが選択される。マスクは、たとえば、ブロック内のコンテンツに基づき、ブロックに対して独立して選択され得る。各ブロックの圧縮は、カスタマイズされたマスク選択によって改善される。
各それぞれのブロックに適用される各それぞれのマスクは、それぞれのブロックについて計算された変換係数のセットに関連付けられる。たとえば、各ブロックに使用されるマスクは、計算された変換係数とともに送信され、および/またはどのマスク(たとえば、可能なマスクのライブラリからの)が変換係数に関連付けられていることを指示する信号が送信される。
マスクは、回転対称であるという特性を有する。適宜、マスクは、ブロックの形状、および分割がブロックの中心に関してブロックの180度回転の下で不変であるように2つの相補的部分へのブロックの分割を定義する。マスクは、バイナリマスク(本明細書で説明されているような)であってよい。回転対称は、好適な直交変換方法、たとえば、2D離散コサイン変換(DCT)を使用して直交変換係数の計算を2次元で行うことを可能にする。直交変換係数は、非直交変換係数に比べてより効率的に圧縮される。
2つの相補的部分の各1つは、ブロックのそれぞれの部分内の元の画像コンテンツの2次元トポロジーを保持し、同じ画像の再構成を可能にする。
本発明の少なくとも1つの実施形態を詳しく説明する前に、本発明が、その応用例において、以下の説明で述べられ、および/または図面および/または例に示されている構造の詳細および構成要素および/または方法の配置構成に必ずしも制限されないことは理解されるであろう。本発明は、他の実施形態を利用することができるか、またはさまざまな仕方で実施されるか、または実行され得る。
本発明は、システム、方法、および/またはコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令が収められているコンピュータ可読ストレージ媒体(またはメディア)を備え得る。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、たとえば、限定はしないが、電子ストレージデバイス、磁気ストレージデバイス、光学式ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、または前記デバイスの任意の適当な組合せであり得る。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータ用ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラム可能リードオンリーメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピィディスク、および前記の任意の好適な組合せを含む。本明細書で使用されているような、コンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波(たとえば、光ファイバーケーブルを通過する光パルス)、または電線を通して伝送される電気信号など、本質的に一時的信号であると解釈されるべきでない。
本明細書で説明されているコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータもしくは外部ストレージデバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含み得る。各コンピューティング/処理デバイスにおけるネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、Smalltalk、C++、または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの伝統的な手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはソースコードもしくはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行してもよいし、部分的にユーザのコンピュータ上で実行してもよいし、独立型ソフトウェアパッケージとして実行してもよいし、一部はユーザのコンピュータ上で、一部はリモートコンピュータ上で実行するか、または完全にリモートコンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されるか、または接続は、外部コンピュータに対して(たとえば、インターネットサービスプロバイダを用いてインターネットを介して)行われてもよい。いくつかの実施形態において、たとえば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む、電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによってコンピュータ可読プログラム命令を実行し得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図解および/またはブロック図を参照しつつ本明細書において説明されている。フローチャートおよび/またはブロック図の各ブロック、ならびにフローチャートおよび/またはブロック図中のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることは理解されるであろう。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて機械を生成して、その命令が、そのコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されて、フローチャートおよび/またはブロック図の1つまたは複数のブロックに指定される機能/作用を実施するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに特定の方式で機能することを指令することができるコンピュータ可読ストレージ媒体にも記憶されるものとしてよく、それにより、命令が記憶されているコンピュータ可読ストレージ媒体は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて指定されている機能/活動の態様を実装する命令を含む製造品を含む。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに指定されている機能/活動を実装するように、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップが実行されコンピュータ実装プロセスを生成することを引き起こすように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにもロードされ得る。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、または命令の一部を表するものとしてよく、これは指定された論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替的実装において、ブロック中に記載されている機能は、図示されている順序と違う順序で実行され得る。たとえば、連続して示されている2つのブロックは、実際には、実質的に同時に実行され得るか、またはそれらのブロックは、関連する機能に応じて、逆順に実行され得ることもある。ブロック図および/またはフローチャート図解の各ブロック、ならびにブロック図および/またはフローチャート図解中のブロックの組合せは、指定された機能もしくは活動を実行するか、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースのコンピュータシステムによって実装され得ることにも留意されたい。
次に、本発明のいくつかの実施形態による、フレーム内のブロックを符号化するための変換係数のセットを生成するための方法のフローチャートである図1への参照がなされている。本発明のいくつかの実施形態による、フレーム内のブロックを符号化するための変換係数のセットを生成するように適合されているメディアエンコーダ202の変換部分のブロック図である図2への参照もなされる。図2のメディアエンコーダは、図1の方法の1つまたは複数のブロックを実行するように構成される。図2のメディアエンコーダによって実行される図1の方法は、たとえば、図12A〜図12Iを参照しつつ説明されているように、画質を著しく下げることなく、ビデオおよび/または静止画フォーマットのデジタル画像の圧縮性能を改善する。エンコーダ202は、係数デコーダとして、説明されている符号化機能に加えて、または説明されている符号化機能の代わりに働き得ることに留意されたい。復号機能は、説明されている符号化機能に基づくが、明確にし、簡潔にするために省略されている。
明確にし、簡潔にするために、メディアエンコーダ202は、変換係数(本明細書において説明されているような)の計算のための要素および/または方法を参照しつつ説明されていることに留意されたい。メディアエンコーダ202は、他の符号化コンポーネント、たとえば、図10の画像エンコーダ/デコーダ1004を含み、かつ/またはそれらと通信するものとしてよい。
メディアエンコーダ202は、プロセッサ204によって実行されるプログラム命令を記憶する1つまたは複数のメモリ206(または他のタイプのコンピュータ可読ストレージ媒体)と通信する1つまたは複数のプロセッサ204を備える。メモリ206は、本明細書で説明されているように、処理中に使用するためにデータを記憶することができる。メディアエンコーダ202は、画像データ圧縮のための既存のハードウェアと統合されているチップ、画像データ圧縮を改善するための既存のデバイスに差し込む別のボックス、またはこれらの組合せとして既存の画像データ圧縮ソフトウェアプログラム内に実装されているソフトウェアモジュールとして実装され得る。プロセッサ204は、並列処理技術に基づく方法のステップを実行することができ、単一のプロセッサが使用されるものとしてよく、および/またはプロセッサは、リモートに配置され得る。並列処理は、ブロックを分割する最良のマスクを選択するために回転対称マスクの事前定義済みのセットにおけるさまざまな候補マスクに対して使用され得る。メモリ206のうちの1つまたは複数がリモートに配置され得る。
メディアエンコーダ202は、画像および/またはビデオの圧縮のために効率を改善し、および/またはリソース要求条件(たとえば、メモリおよび/またはプロセッサ)を低減することによってシステム性能を改善する。
102において、フレームおよび/またはブロックが受信される。メディアエンコーダ202は、フレーム210および/またはフレームのブロックを受信するように適合されている入力データインターフェース208に結合される。フレーム210は、静止デジタル画像として、または複数のフレームを含むビデオの一部として受信され得る。フレーム210が、ビデオから受信されるときに、画像間圧縮技術は、本明細書で説明されているように適用され得る。
メディアエンコーダ202は、フレーム内のパーティションに区切られたブロックを指定するように適合される。適宜、ブロックデジグネータモジュール212Aは、メディアエンコーダ202が本明細書で説明されているように指定を実行するためのプログラム命令を含む。
フレームは、たとえば、ビデオおよび/または静止画像標準、たとえば、HEVC、動画専門家グループ(MPEG)、および合同静止画専門家グループ(JPEG)に基づき複数のブロックに分割され得る。
ブロックは、標準サイズ、たとえば、64×64ピクセル、32×32ピクセル、16×16ピクセル、8×8ピクセル、4×4ピクセル、または他のサイズを有し得る。
ブロックは、正方形(L×Lピクセル)または矩形(M×Nピクセル)であってよい。
ブロックは、輝度および/または彩度データを表し得る。
104において、回転対称マスクが選択される。マスクセレクタモジュール212Bは、メディアエンコーダ202が本明細書で説明されているようにマスク選択を実行するためのプログラム命令を含む。
適宜、回転対称マスクは、マスクのブロックの中心に関して次数2(ときには本明細書においてC2と称され、回転対称が360/2=180度について成り立つことを示す)の回転対称を有する。
次に、本発明のいくつかの実施形態による、回転対称マスクのいくつかの例の概略図、たとえば、直角台形302、直角三角形304、矩形306、および正方形308を示す図3への参照がなされる。
次に再び図1を参照すると、メディアエンコーダは、ブロックとしてのサイズおよび形状を有する多次元空間内の複数の異なる回転対称を定義する複数の回転対称マスクから指定されたブロックに対する回転対称マスクを選択するように適合されている。
次に、本発明のいくつかの実施形態による、フレーム406内のブロック404に対する特定の回転対称マスク402の選択を図示する概略図である図4への参照がなされている。フレーム406は、家の画像を含む。ブロック404は、家の屋根の一部、および空の別の部分を含む。マスク402は、特定の圧縮プリファレンス尺度(たとえば、速度歪み)および/または空を家から最もよく隔てる視覚的特徴境界および/またはエッジに基づき複数の利用可能なマスク410のセットから選択される。非選択マスクの視覚的検査で明らかになるように、他のマスクのうちのどれかを適用した結果、マスク402を使用した場合と比較して、空のより多くの部分が屋根部分の中に含まれ、屋根のより多くの部分が空部分に含まれることになる。マスク402によるブロック404の分割は、標準的なパーティション408による、または別のマスクによるブロック全体404の圧縮と比較して画像データ圧縮を改善する。
次に図2に戻って参照すると、回転対称マスクは、回転対称マスクライブラリ212Fに記憶され、適宜メモリ206に記憶され、プロセッサ204と通信する別のコンピュータ可読ストレージ媒体に記憶されている複数のマスクから選択され得る。
ライブラリ212Fは、回転対称マスクの複数の異なるライブラリを記憶し得る。各ライブラリは、ブロックのサイズおよび/または形状に基づき得る。たとえば、サイズ16×16ピクセルのブロックのマスクに対する1つのライブラリ、およびサイズ8×8ピクセルに対する別のライブラリ。
適宜、異なる回転対称マスクは、ブロックとしてのサイズおよび形状を有する正方形のマスク(すなわち、L×Lピクセル)である。代替的に、異なる回転対称マスクは、ブロックとしてのサイズおよび形状を有する矩形のマスク(すなわち、M×Nピクセル)である。
回転対称マスクは、矩形または正方形の対向するエッジを結ぶ線を定義し、対応する矩形または正方形のブロックを2つの2D鏡像相補的部分に分割するように適合されている。異なる線は、2次元鏡像条件に基づき定義され得る。線は、直線状または他の形態、たとえば、階段状または他の任意の形状であってよい。線は、0から359度までの任意の角度またはその一部で傾斜しているものとしてよい。2D鏡像特性は、ブロックの効率的な圧縮を実現する。
次に、本発明のいくつかの実施形態による、回転対称マスクを定義するためのピクセル2D鏡像を示す概略図である図5Aから図5Cへの参照がなされる
図5Aは、一般的な2D鏡像概念を示している。サイズ8ピクセル×8ピクセルのブロック502は、例示を目的として図示されている。領域Aおよび領域Bは、ブロック502の真ん中を通って水平に位置決めされた仮想線504によって分離される。領域Aおよび領域Bにおいて同じ数を有するピクセルは、互いの2D鏡像である。ピクセル2D鏡像は、M×Nの矩形に対して一般化されるものとしてよく、ピクセル(m,n)が領域A内にあるときに、ピクセル(M-1-m,N-1-n)は領域B内にある。
2D鏡像概念は、異なるサイズの他の正方形または矩形のブロックに適用され得ることは理解されるであろう。2D鏡像概念は、異なる傾斜で、たとえば、垂直に引かれた他の仮想線について示されるものとしてよく、領域AおよびBは、ブロック502の真ん中を通って垂直に位置決めされた仮想線によって定義され、分離されることは理解されるであろう。
ブロック502の対向するエッジを結び、ブロック502の中心点を交差する複数の異なる線は、図5Bおよび図5Cに示されているように、回転対称マスクライブラリを形成するように適合される。各個別の線は、個別のマスクを定める。各線は、ブロック502を2つの相補的部分領域Aと領域Bとに分割する。
適宜、異なる回転対称マスクは、それぞれの行列によって定義される(たとえば、各ピクセル位置は、行列内の位置によって表される)。各行列は、領域AおよびBの異なる仕切りを定義し、たとえば、2次元空間の対向するエッジを結ぶ線を定義し、2次元空間を2つの相補的部分に分割する。
他の次元の空間、たとえば、3次元、4次元、またはそれ以上の次元の空間が使用されてもよいことに留意されたい。回転対称マスクは、それぞれの多次元空間、たとえば、平面を分割して3次元空間を分割するように定義される。
線がサンプルの位置を通るときに、フルサンプルが領域Aに割り当てられ、領域Bから取り除かれ得るので、サブサンプリングの必要はないことに留意されたい。計算リソース(たとえば、プロセッサおよび/またはメモリ)は、たとえば、各それぞれの領域について計算の完全なセットを実行する代わりに、領域Aへの追加および領域Bからの除去によって削減され得る。
次に、本発明のいくつかの実施形態による、回転対称マスクライブラリのいくつかの例を示す図6A〜図6Cへの参照がなされる。図6Aは、サイズ32×32ピクセルのブロックを分割するためのマスクのライブラリの一例である。図6Bは、サイズ16×16ピクセルのブロックを分割するためのマスクのライブラリの一例である。図6Cは、サイズ8×8ピクセルのブロックを分割するためのマスクのライブラリの一例である。
図6A〜図6Cの回転対称マスクライブラリは、傾斜した線に基づいており、この線はブロックを2つの台形領域に分割し、これらの領域はマスクの暗領域602(たとえば、青色)とマスクの明領域(604)(たとえば、赤色)によって表される。ライブラリ内の各マークは、線のわずかに異なる傾斜を有する。それとともに、すべてのマスクは、ブロック内で傾斜した線のすべての異なる順列を定義する。傾斜した切断された線に基づき、サイズL×Lの正方形を区切るために2×(L-1)の異なる仕方がある。
図6Bにおいて、マスク606Aおよび606Bは、それらを通る平行線を有し、これはマスク606Aおよび606Bを32個のマスクのセットから除去することを表し、前の段落における式に基づき30個のマスクのセットを形成する。2つのマスクは、鏡像対称により既存のマスクのダブルであり、したがって、生成されたセットから除去され得る。同様に、図6Cにおいて、2つのダブルマスクは、平行線とともに示され、これは冗長マスクをそのセットから除去することを表す。
適宜、異なる回転対称マスクの各々(1つまたは複数のライブラリとして記憶され得る)は、階層配置構成にマップされる。階層配置構成は、最良のマスクを識別するための処理時間および/またはリソースを減らすことができる。
各ライブラリは、独立してマップされるものとしてよく、各それぞれのライブラリのマスクは、階層配置構成にマップされ得る。代替的に、1つまたは複数のライブラリは、同じ階層配置構成に基づき一緒にマップされる。各ライブラリ内のマスクは、同じ共通階層配置構成に基づきマップされる。
マスクのセットは、分離したバラバラのセクションに分割される。階層配置構成は、2次元空間のエッジに関する線の角度に従うものとしてよく、たとえば、階層配置構成は、図6A〜図6Cの線を、たとえば、0〜60度、61〜120度、および121〜180度のグループにマップするものとしてよい。階層配置構成は、線が対称的および/または非対称的であるときに、181〜240度、241〜300度、および301〜360度をマップするために継続し得る。階層配置構成は、層化されてもよく、たとえば、0〜60度のグループは、0〜15、16〜30、31〜45、および46〜60度のグループにさらに細分される。
次に本発明のいくつかの実施形態による、階層配置構成をグラフで示す概略図である図7への参照がなされる。
分割された円702は、マスクライブラリ706に対する階層配置構成の一例をグラフで示している。ライブラリ706は、図6Bを参照しつつ説明されているように、サイズ16×16のブロックに対する傾斜した線のマスクを含む。円702は、領域704A〜704Hに分割され、各々45度の線の傾斜を表す。階層配置構成は、傾斜した線マスクの対称性により簡素化され、セクタ704Aを704Eと一緒にグループ化し(セクタ708Cとして示されている)、セクタ704Bを704Fと一緒にグループ化し(セクタ708Bとして示されている)、セクタ704Cを704Gと一緒にグループ化し(セクタ708Aとして示されている)、セクタ704Dを704Hと一緒にグループ化する(セクタ708Dとして示されている)。各セクタ708A〜708Dは、それぞれの角度範囲内に線傾斜角度が収まる8または7個のマスクを含む。
適宜、メディアエンコーダは、階層配置構成に従って定義されている順序で異なる回転対称マスクのうちの少なくともいくつかの繰り返しマスク選択で回転対称マスクを選択するように適合されている。たとえば、図7を参照すると、式22.5+45kによって定義されている中心角度を有する4つの代表的パーティション708A〜708Dの間で探索が実行され、ただし、k=0、1、2、3、であり、スパンは45度である。セクションは、好適な関数、たとえば、最小速度歪み尺度によって計算される最低コストに基づき選択され得る。選択されたセクション内のマスクは、同様の仕方で選択され得る。階層配置構成が、追加のレベルを含むときに、マスクが識別されるまで繰り返し方式で追加のレベルが探索され得る。
次に、本発明のいくつかの実施形態による、回転対称マスクの生成および/または表現を示す概略図である図8への参照がなされる。適宜、マスクのライブラリが、マスクを含むブロック内の異なる順列に基づき生成される。
例示的な目的に関して、サイズL×Lのブロックに対するマスク生成が説明されるが、これはM×Nの場合に拡張され得る。マスクは、左上隅から始まって、ブロックの中心の方へ進むようにして生成され得る。移動の組合せは、2D鏡像化され、それにより、ブロックの中心から右下までの残りのマスクパターンを取得し得る。
マスクは、移動毎に2進表現によって表され得る。各移動は、水平(すなわち、左から右)または垂直(すなわち、上から下)のいずれかであり、1(たとえば、1ステップ右へ)または0(たとえば、1ステップ下)で表される。バイナリマスク表現は、そのまま送信されるか、またはさらに圧縮され得る。2進表現は、たとえば、エンコーダからデコーダへの、マスクの効率的な(すなわち、プロセッサおよび/またはメモリリソース利用に関して)伝送を実現する。
セット内の各順列は、合計2×Lの移動によって定義され得る。
マスク802は、2進パターン804によって表される。マスク806は、2進パターン808によって表される。
次に、本発明のいくつかの実施形態による、ブロックを分割するために回転対称マスクおよび/またはマスクライブラリを選択するためのコンピュータを用いた方法のリスト(たとえば、フローチャート)である図9への参照がなされる。マスクおよび/またはマスクライブラリは、選択されるのではなく、および/または選択されることに加えて、ブロックに基づき(たとえば、予め、および/または動的に)生成され得る。メディアエンコーダ202は、方法の1つまたは複数のブロックを実行するように適合される。方法の1つまたは複数のブロックは、マスク選択のために実行され得る。ブロックは、任意の順序で、および/または同時に実行され得る。
本明細書で説明されている選択の1つまたは複数の方法(順次および/または並列に、適宜組み合わせて実行される)は、マスクのライブラリ内の特定のマスクの選択に対する基準として使用され得る。代替的に、またはそれに加えて、選択の方法は、複数のマスクライブラリから特定のマスクライブラリを、および/またはライブラリからマスクのサブセットを最初に選択するために使用され得る。この特定のマスクは、選択されたライブラリおよび/または選択されたサブセットから選択され得る。ステップ毎のおよび/または階層的な選択は、各ステップにおける選択に対してセットのサイズを縮小することによって探索範囲を絞り込み、選択のためのリソースおよび/または計算を節減することができる。
候補マスクのより大きいセットからではなくライブラリ(またはマスクサブセット)からマスクを選択することで、デコーダに選択されたマスクをシグナリングし、および/または計算複雑度および/またはメモリリソースおよび/またはプロセッサリソースを低減するために使用される符号化されるビットの数を減らす。
適宜、902において、ライブラリおよび/またはマスクは、ブロックのサイズおよび/または形状に基づき選択される。マスクは、本明細書で説明されているように選択されたライブラリ内から選択され得る。
代替的に、またはそれに加えて、904において、メディアエンコーダは、限定しないが、ブロック、スライス、タイル、フレーム、およびシーケンスのリストに含まれるうちの1つまたは複数に対する圧縮プリファレンスに基づき複数の回転対称マスクおよび/またはマスクライブラリから回転対称マスクおよび/またはマスクライブラリを選択するように適合される。
圧縮プリファレンスは、特定のマスクが適用されるときにブロックの圧縮性能を定義する1つまたは複数のパラメータを含む。圧縮プリファレンスは、マスク毎におよび/またはマスクライブラリ毎に定義され得る。
圧縮プリファレンスは、たとえば、マスクおよび/またはライブラリに対するすでに収集されている統計データに基づき、推定され得る。代替的に、圧縮プリファレンスは、たとえば、候補マスクのうちの1つまたは複数をブロックに適用することによって計算され得る。
圧縮プリファレンスは、圧縮パラメータがいくつかのトレードオフ、たとえば、画質の低下と引き換えにサイズを縮小することを伴うときにマスク選択を助けることができる。
圧縮プリファレンスは、次のうちの1つまたは複数から、個別に、または組み合わせて選択される。
*圧縮複雑度プリファレンス:マスクに基づき圧縮を実行するための処理リソース、たとえば、計算回数、プロセッサリソース、および/またはメモリリソースに関係する尺度。この尺度は、方法を実行する特定のコンピュータに依存し得る。
*圧縮品質プリファレンス(たとえば、画像歪み):マスクに基づく圧縮は、不可逆オペレーションであり、その結果、ブロックの画質は低下する。画質低下は、人間の目で見て視覚的に認識できる場合もできない場合もある。圧縮品質プリファレンスは、マスクに基づく圧縮による情報の喪失に関係する尺度、たとえば、ピーク信号対雑音比(PSNR)、および/または構造的類似性(SSIM)に基づき決定され得る。
*圧縮サイズプリファレンス:選択されたマスクに基づく圧縮後のブロックのサイズ(たとえば、ビット数)。
適宜、メディアエンコーダは、ブロック圧縮複雑度、ブロック圧縮サイズ、およびブロック圧縮品質に対するプリファレンスからなる群のメンバーに従って回転対称マスクライブラリを自動的に生成するように適合される。生成されたマスクライブラリは、知られている圧縮プリファレンス基準を有し、これはライブラリを容易に、および/または素早く選択することを可能にする。生成されたライブラリ内のマスクの数は、可能なすべての順列を生成する場合よりも小さいものとしてよいが、それは圧縮基準を満たすマスクのみが含まれるからである。
各マスクは、圧縮プリファレンスに関連付けられる、たとえば、記憶される、マッチングされる、および/または圧縮プリファレンス値でタグ付けされるものとしてよい。各マスクは、圧縮複雑度プリファレンス、圧縮品質プリファレンス、および/または圧縮サイズプリファレンスを計算するための1つまたは複数の尺度に関連付けられ得る。
適宜、異なる回転対称マスクの各1つは、それぞれのマスクのサイズおよび形状を有する例示的なブロック上でそれぞれのマスクを適用する計算複雑度を示す推定複雑度尺度に関連付けられる。推定複雑度尺度がより低いマスクは、必要とするリソース(たとえば、プロセッサおよび/またはメモリ)がより少ないと推定される。推定される結果に基づくマスク選択は、システム効率を改善し、および/またはより少ないリソースを利用する。
適宜、異なる回転対称マスクの各1つは、それぞれのマスクのサイズおよび形状を有する例示的なブロック上でそれぞれのマスクを適用することから生じる計算歪みレベルを示す推定歪み尺度に関連付けられる。推定歪み尺度は、たとえば、画像のより高い圧縮も引き起こす視覚的に区別できない圧縮歪みレベルを有するマスクを選択するために、不可逆圧縮トレードオフに基づきマスクを選択する際に役立つ。推定歪み尺度がより低いマスクは、ターゲットの圧縮歪みレベルを達成しながら必要とするリソース(たとえば、プロセッサおよび/またはメモリ)がより少ないと推定される。
適宜、メディアエンコーダは、ブロックに対する圧縮プリファレンスに基づき回転対称マスクを選択するように適合される。適宜、圧縮プリファレンスは、圧縮複雑度プリファレンス、圧縮品質プリファレンス、および圧縮サイズプリファレンスのうちの1つまたは複数から選択される。
代替的に、またはそれに加えて、906において、マスク選択は、受信されたフレームを含む前処理されたビデオデータに基づく。ビデオデータの前処理は、メディアエンコーダ、メディアエンコーダに接続されている別のコンピュータ、またはメディアエンコーダから独立している別のコンピュータ(たとえば、リモートに配置されている)によって実行され得る。前処理されたデータは、フレームとは無関係に、および/またはフレームとともにメディアエンコーダに送信され得る(たとえば、フレームにタグ付けされる)。
前処理は、ビデオのフレームのコンテンツの1つまたは複数の識別された特徴、たとえば、ピクセルパターンの統計的分布、エッジ、ピクセル強度、およびピクセル色に基づくものとしてよい。ビデオデータは、前処理の結果に基づき事前分類され得る。分類は、マスクおよび/またはマスクライブラリの選択を可能にするように識別された特徴に基づき得る。事前分類されたビデオデータは、システム性能を改善するが、それは、マスクが、より効率的に、および/または分類に基づきより少ないリソースを使用して選択され得るからである。
適宜、メディアエンコーダは、ビデオデータの分類に基づき、複数の候補回転対称マスクおよび/またはマスクライブラリから回転対称マスクおよび/またはマスクライブラリを選択するように適合される。たとえば、前処理は、ビデオが多数の直線を有するフレーム、たとえば、家、自動車、または他の人工的構造物の画像を含んでいることを識別し得る。ビデオデータは、直線を含んでいるとして分類され得る。直線(すなわち、異なる角度)のマスクライブラリが選択され得る。別の例では、前処理は、ビデオが多数の曲線を有するフレーム、たとえば、木、枝、および地形の画像を含んでいることを識別し得る。ビデオデータは、曲線を含んでいるとして分類され得る。曲線のマスクライブラリ(すなわち、曲線の離散化に基づく階段状の線が選択され得る)。
コンテンツの前処理は、本明細書で説明されているように、予測に基づき符号化するための情報を提供し得る。
適宜、メディアエンコーダは、前処理されたビデオデータに基づき回転対称マスクおよび/またはマスクライブラリを自動的に生成するように適合される。異なる回転対称マスクは、1つまたは複数の圧縮パラメータ、すなわち、圧縮複雑度プリファレンス、圧縮サイズプリファレンス、および/または圧縮品質プリファレンスの前処理の結果による異なる回転対称マスクのマスクリポジトリから選択され得る。圧縮パラメータは、ビデオデータから事前計算され得る。
ビデオデータの前処理は、エンコーダの性能を改善し得る。リソースを大量に消費する計算は、圧縮のときではなく、事前に実行され得る。マスク選択のための基準として使用されるデータは、圧縮プロセスにおいてマスク選択計算を実行する代わりに、ブロック圧縮プロセスにおいてより高速なマスク選択を可能にするように、すぐに使えるようになっているものとしてよい。
代替的に、またはそれに加えて、908において、メディアエンコーダは、変換プロセスの結果、および/または2つの相補的部分のうちの少なくとも一方に適用される変換プロセスの結果の推定に基づき回転対称マスクを選択するように適合される。結果および/または推定される結果に基づくマスク選択は、システム効率を改善し、および/またはより少ないリソースを利用する。
変換プロセスの結果は、変換プロセスの後の相補的部分のうちの一方または両方のサイズ(たとえば、特定の閾値よりも高い変換係数の絶対値の数および/または総和)を含み得る。結果として変換プロセスの後のその部分の最小サイズをもたらすマスクが選択され得る。サイズは、両方の部分のサイズの総和などの、一方または両方の部分について計算され得る。
変換プロセスの結果の推定は、変換プロセスへの入力である残差データの絶対差総和(SAD)を含み得る。
変換プロセスの結果の推定は、残差データの水平および/または垂直方向に沿った一階、二階、および/または高階微分の絶対値の総和を含み得る。
推定は、同じマスクを使用してすでに符号化されている部分からの値に基づき得る。
変換プロセスの結果は、知られている変換プロセス、たとえば、圧縮標準によって定義されている変換プロセスによって推定され得る。
代替的に、またはそれに加えて、910において、メディアエンコーダは、回転対称ブロックの対の少なくとも1つのメンバーに対する変換係数に適用される量子化プロセスおよび/またはエントロピー符号化プロセスの結果および/または結果の推定に基づき回転対称マスクを選択するように適合される。
結果として量子化および/またはエントロピー符号化プロセスの後に部分の最小サイズをもたらすマスク、たとえば、量子化の後の非ゼロ係数の数、および/または生成されたビットにおけるサイズが、それぞれ、選択され得る。サイズは、両方の部分のサイズの総和などの、一方または両方の部分について計算され得る。
推定は、同じマスクを使用してすでに量子化および/またはエントロピー符号化されている部分からの値に基づき得る。
代替的に、またはそれに加えて、912において、メディアエンコーダは、ブロック内のピクセル値のパターンに従って回転対称マスクを選択するように適合される。ピクセル値のパターンは、ブロックから、たとえば、境界および/またはエッジを特定するための方法などの画像セグメント分割方法によって、たとえば、強度閾値化、エッジ検出、または他の好適な方法に基づき、抽出され得る。ピクセル値のパターンは、ブロック内の識別された線の方向、および/または線(もしくは曲線)のパターンを含み得る。抽出されたピクセルパターンは、特定の対称マスクに、たとえば、ブロックの識別された線と同じ方向および/またはパターンを有するマッチングマスクなどの、抽出されたピクセルパターンに最もよく類似しているパターンを持つマスクを識別する最低費用関数に基づき、マッチングされ得る。ピクセル値のパターンに基づく選択は、各それぞれの部分内のピクセルが互いに類似する、たとえば、類似する強度および/または色を有する2つの相補的部分を生み出す。
たとえば、図4を再び参照すると、ブロック404内の屋根と空との間のエッジは、エッジ検出方法に基づき抽出される。検出されたエッジは、費用関数に基づきマスク402にマップされる。マスク402内のパターンは、マスクライブラリからの、抽出されたエッジに最もよく類似しているパターンである。
代替的に、またはそれに加えて、914において、回転対称マスクは、特定の回転マスクが処理されているブロックのサイズおよび/または形状を有する例示的なブロックに適用されるときに送信されるビットの数を示す推定速度尺度に基づき選択される。ビットの数は少なければ少ないほど、特定のマスクによる圧縮がより効率的になる。異なる回転対称マスクの各1つは、マスクがサイズおよび形状を有する例示的なブロックに適用されるときに送信されるビットの数を示す推定速度尺度に関連付けられる。
速度尺度は、各マスクとともに記憶されるものとしてよく、推定速度尺度値に基づきマスクの素早い選択を可能にする。速度尺度は、実行時に再計算される代わりに、マスク毎に予め計算されてよく、それによって、選択に必要な計算を減らす。速度尺度は、ブロックの前のサンプルの平均(または他の尺度)に基づく事前定義されたブロックであってよい、例示的なブロックに基づき計算されるものとしてよい。例示的なブロックは、処理されるブロックの類似性に基づき、たとえば、費用関数に基づき、ブロックのライブラリから選択され得る。
代替的に、またはそれに加えて、916において、メディアエンコーダは、統計的分類子に基づき回転対称マスクを選択するように適合される。統計的分類子は、異なる回転対称マスクのうちの少なくともいくつかを適用した結果をログにとるトレーニングセットの分析によって生成される。結果(加重されてよい)は、たとえば、圧縮性能測定基準(たとえば、サイズ、複雑度、品質)、プロセッサリソース利用度、メモリ利用度を含み得る。統計的分類子は、複数の異なる所望の結果を含む結果の予測に基づきマスクの選択を改善し得る。
トレーニングセットは、システムによって処理された実際のフレームの履歴に基づき取得され得る。代替的に、トレーニングセットは、処理されることになっているフレームのタイプの予測に基づき取得されるものとしてよく、たとえば、自然のチャネルは、自然のビデオで分類子をトレーニングするものとしてよい。
分類の結果は、分類子をさらにトレーニングし更新するための入力として使用され得る。
統計的分類子は、教師あり学習方法および/または教師なし学習方法に基づきトレーニングされ得る。
分類子は、ブロック内のピクセルを2つのグループのうちの一方に分類するために、ブロックそれ自体に適用され得る。2つのグループは、回転対称マスクの回転対称制約に基づき分割され得る。マスクは、ブロック内の2つのグループの配置構成をマッチングするように選択される。2つの相補的部分の各部分は、それぞれのグループからのマスクインクルードピクセルを使用してブロックの分割から生じる。
代替的に、またはそれに加えて、918において、メディアエンコーダは、ブロックの空間的および/または時間的隣接ブロックから抽出されたコンテンツに基づき回転対称マスクを選択するように適合される。近傍は、画像内および/または画像間ブロックであってよい。空間的ブロックは、ブロックに関して1つまたは複数もしくはすべての方向のブロックの近傍であってよい。時間的隣接ブロックは、前のフレーム(たとえば、時間的に前)および/またはその後のフレーム(たとえば、時間的に後)内の隣接ブロックからのものとしてよい。ブロックは、直接近傍であり得るか、またはブロック(またはフレーム)を2個以上離して配置されてもよい。予測因子として使用される類似のピクセルパターンを含む隣接ブロックは、システム性能を改善し、および/またはより少ないリソースを必要とする。
適宜、近傍は、すでに処理されているブロックを含む。以前に処理されたブロックは、現在処理されているブロックに対するマスクの選択のための予測因子として使用され得る。適宜、回転対称マスクの選択は、ブロックの空間的および/または時間的隣接ブロックに関連付けられている情報に基づき実行される。適宜、空間的および/または時間的隣接ブロックに関連付けられている情報は、予測に関係する。たとえば、情報は、処理されている現在のブロックと近傍のうちの1つまたは複数との間の差を小さくするためのデータを含むものとしてよく、冗長情報は除外される。マスクは、差分データに基づき選択され得る。
適宜、抽出されるコンテンツは、空間的および/または時間的隣接ブロック内のピクセル値のパターンに従う。隣接ブロックのピクセルパターンは、現在のブロック内のマスクの選択のための予測因子として働き得る。たとえば、ピクセルパターンは、屋根と空との間の境界および/またはエッジを含む(図4を参照しつつ説明されているように)。屋根と空との間のエッジは、引き続きいくつかの隣接ブロックを横切る。
予測因子に基づく符号化は、システム効率を改善し、および/またはより少ないリソースを利用する。
次に図1を再び参照すると、106において、ブロックは、回転対称マスクに基づき2つの相補的部分に分割されている。適宜、ブロックスプリッタモジュール212Cは、メディアエンコーダ202が本明細書で説明されているようにブロック分割を実行するためのプログラム命令を含む。
108において、2つの相補的部分のうちの1つを各々有する一対の回転対称ブロックが生成される。適宜、対生成器モジュール212Dは、メディアエンコーダ202が本明細書で説明されているように対生成を実行するためのプログラム命令を含む。
メディアエンコーダは、2つの相補的部分のうちの一方およびブロックのサイズおよび/または形状を有するブロックを形成するために追加される別の部分に基づき回転対称ブロックの対の各メンバーを生成するように適合される。
適宜、追加される部分は、回転対称ブロックが構成される際にもとになる部分の2D鏡像である。
適宜、追加される部分は、回転対称ブロックが構成される際にもとになる部分の2D鏡像であるが、負の符号が追加されている。この場合、回転対称ブロックは、2つの反対称部分を含む。
適宜、追加される部分は、事前定義されたシーケンス、たとえばすべてゼロのパッディングを含む。
適宜、追加される部分は、回転対称ブロックが構成される際にもとになる部分の180度回転に基づき生成される。
適宜、追加される部分の次元は、相補的部分の次元、たとえば、2次元に基づく。
回転対称ブロックの生成される対の各メンバーは、選択されたマスクに基づき主対角線または他の切断線パターンの周りで2D鏡像になっている値を有する行列によって表される。
110において、回転対称ブロックの対の一方または両方のメンバーに対する1つまたは複数の変換係数が計算される。適宜、変換係数は、回転対称ブロックの各1つについて計算される。適宜、係数計算モジュール212Eは、メディアエンコーダ202が本明細書で説明されているように変換係数計算を実行するためのプログラム命令を含む。
変換係数の計算は、1つまたは複数の標準ベースの計算方法に基づき、1つまたは複数の符号化技術に基づき、および/または専用の方法に基づき実行され得る。符号化技術の一例は、2次元離散コサイン変換(DCT)を含み、これは、たとえば、各次元に沿って適用される2つの分離可能な高速DCTに基づき計算されるものとしてよく、たとえば、回転対称ブロックが、行列として表されるときに、2D-DCTは、行に沿って次いで列に沿って、または列に沿って次いで行に沿って計算され得る。変換方法の他の例は、2D離散サイン変換(DST)、ならびに鏡像条件を維持する他の直交および/または直交変換方式を含み、たとえば、以下のとおりである。
Tp,q(M-m-1,N-n-1)=(-1)(p+q)Tp,q(m,n)、
ただし、{Tp,q(m,n)}は、2D変換ベースであり、(m,n)はピクセル位置であり、m=0,1,...,M-1、n=0,1,...,N-1であり、pおよびqは、空間周波数であり、p=0,1,...,M-1であり、q=0,1,...,N-1であり、p+qは、対称の場合および反対称の場合についてそれぞれ偶数または奇数である。
標準ベースの符号化技術の一例は、整数変換および/または逆変換に対するHEVCおよび/またはH.265標準である。
適宜、係数の直交変換セットは、2D鏡像部分が負の符号とともに追加されるときに2つの相補的部分のうちの各1つについて計算される(すなわち、反対称)。変換係数の計算のための対称変換関数および反対称変換関数に対するセットは、異なり得る。変換係数を計算するときに、それぞれの対称または反対称変換関数が使用される。
適宜、メディアエンコーダは、回転対称マスクのそれぞれの部分に適合された1つまたは複数の空間的予測因子を使用して変換係数を符号化するように適合される。変換は、予測ブロックについて、予測ベクトルについて、予測誤差について、および/または予測残差について計算され得る。予測残差は、処理されている回転対称ブロック内の部分と対応する予測ブロックとの間の差に基づき時間的および/または空間的ブロック(すなわち、画像間および/または画像内ブロック)について計算され得る。
適宜、メディアエンコーダは、回転対称マスクのそれぞれの部分に適合された1つまたは複数の時間的予測因子を使用して変換係数を符号化するように適合される。代替的に、またはそれに加えて、メディアエンコーダは、それぞれの対応する部分に関係する空間的予測因子を使用して回転対称ブロックの各々の変換係数を符号化するようにさらに適合される。代替的に、またはそれに加えて、メディアエンコーダは、それぞれの対応する部分に関係する運動ベクトルを使用して回転対称ブロックの対の各々の変換係数を符号化するようにさらに適合される。運動ベクトルは、時間的予測を計算するために使用され得る。
変換係数は、すべての変換係数に対する1つの方法、異なる変換係数(または変換係数のセット)に対する異なる方法、および/または方法の組合せに基づき計算され得ることに留意されたい。
適宜、メディアエンコーダは、回転対称マスクに適合されたエントロピーコンテキストモデルを使用して変換係数を符号化するように適合される。エントロピーコンテキストモデルは、たとえば、ハフマン符号化および/または算術符号化に基づき、可逆データ圧縮により変換係数を符号化するために、選択されたマスクの知識に基づき定義され得る。マスクのエントロピー特性は、予めエンコーダに知られているので、より単純な符号が計算され得る。
エントロピーコンテキストモデルは、専用設計モデル、および/または標準ベースのモデル、たとえば、H.265のCABAC/HEVC, H.264/MPEG-4または他の標準などのコンテキスト適応2値算術符号化(CABAC)方式であってよい。
112において、計算された変換係数は、さらなる処理、ストレージへの保存、および/または伝送のために用意される。適宜、メディアエンコーダ202に結合されている出力入力インターフェース214は、本明細書で説明されているように、計算された変換係数216を供給するように適合される。
適宜、114において、ブロック102〜112は、フレーム内の他のブロックについて繰り返される。ブロック102〜112は、他のフレームについて繰り返され得る。特定のフレームのブロックが並列で処理され得ることに留意されたい。
次に、本発明のいくつかの実施形態による、係数エンコーダ/デコーダ1002を組み込んでいる画像データ圧縮および復元のための例示的なシステム1000のブロック図である図10への参照がなされる。エンコーダ/デコーダ1002は、図2を参照しつつ説明されているようなメディアエンコーダ202の変換部分、エンコーダ202の変更形態(たとえば、プロセッサ204なし、別のエンコーダ/デコーダのプロセッサを使用する)、および/または図1の方法の別の実装を含み得る。システム1000内にエンコーダ1002を組み込むことは、画像および/またはビデオの符号化効率を改善し、これはたとえば、圧縮性能を改善すること、プロセッサリソース要求条件、送信機/受信機要求条件、および/またはメモリ要求条件を低減することによってシステム1000の全体的性能を改善する。エンコーダ1002をシステム1000内に統合することで、画質を高め、画像解像度を高め、および/または同じリソースを使用して処理される画像の数を増やすことができる。
係数エンコーダ/デコーダ1002は、デジタル画像および/またはビデオに関連付けられているデバイスおよび/またはシステム内に、たとえば、デジタルカメラ内に、テレビ(たとえば、ハイビジョンテレビ)内に、デジタルカムコーダー内に、テレビ放送ユニット内に、スマートフォン(または他のモバイルデバイス)内に、ウェブブラウザ内に、画像および/またはビデオを視聴し、および/または編集するためのコンピュータソフトウェア内に、ネットワークデバイス内に(ネットワーク性能を改善するために)、リアルタイム変換アプリケーション(たとえば、ビデオチャット、ビデオ会議、およびテレプレゼンスシステム)内に実装され得る。エンコーダ/デコーダ1002の実装は、リソース要求条件(たとえば、メモリ)を引き下げる、たとえば、より多くの画像および/またはビデオをメモリ上に保存できるようにする、より高い画質および/または解像度の画像および/またはビデオを保存できるようにする、各画像および/またはビデオのサイズを縮小し、それによりネットワーク接続で画像および/またはビデオの伝送を高速化できるようにすることによってデバイスおよび/またはシステムの性能を改善し得る。
エンコーダ/デコーダ1002は、圧縮および/または復元によって画像および/またはビデオを符号化し、および/または復号するように構成されている画像エンコーダ/デコーダ1004と統合される。エンコーダ/デコーダ1004は、標準(たとえば、HVEC、MPEG-4、JPEG)に基づき、および/または1つもしくは複数の専用プロトコルに基づき得る。係数エンコーダ/デコーダ1002は、画像エンコーダ/デコーダ1004と、たとえば、エンコーダ/デコーダ1004のハードウェア内に組み込まれるチップまたは他のハードウェア要素として、エンコーダ/デコーダ1004内に差し込まれるチップまたは他のハードウェア要素として、外部ソフトウェアモジュールとして、エンコーダ/デコーダ1004のコード内に組み込まれたソフトウェアモジュールとして、および/またはこれらの組合せとして統合され得る。
画像エンコーダ/デコーダ1004は、符号化および/または復号コンポーネント、たとえば、量子化(たとえば、量子化モジュールによる)、係数スキャン(たとえば、係数スキャンモジュールによる)、エントロピー符号化(たとえば、エントロピー符号化モジュールによる)、画像内および/または画像間予測(たとえば、予測モジュールによる)のうちの1つまたは複数を含み得る。
システム1000は、たとえば、画像生成器1008から、送信機/受信機1010から(たとえば、ネットワークインターフェース、テレビジョンケーブル、ワイヤレストランシーバ)、および/または画像を記憶しているメモリ1012から、1つまたは複数の画像を受信するように構成されている、画像エンコーダ/デコーダ1004に結合されているデータインターフェース1006を備える。
受信された画像は、画像エンコーダ/デコーダ1004によって処理され、変換係数は図1および/または図2を参照しつつ説明されているような1つまたは複数の画像フレームの1つまたは複数のブロックについて生成される。
圧縮された画像は、メモリ1012に記憶され、および/または送信機/受信機1010を使用して伝送され得る。
復号されるときに、画像は、メモリ1012上の記憶ストレージから取り出され、および/または送信機/受信機1010から受信され得る。復号は、画像エンコーダ/デコーダ1004によって行われ、本明細書で説明されているように係数エンコーダ/デコーダ1002によって変換係数の復号が行われる。復号された画像は、ディスプレイ1014上に表示され、送信機受信機1010によって伝送され、および/またはメモリ1012上に記憶され得る。
次に、本発明のいくつかの実施形態による、変換係数のセットからフレーム内にブロックを再構成するための方法のフローチャートである図11への参照がなされている。図11の方法は、図1の方法に基づき、その方法に対して相補的である。図1の方法は、ブロックを変換することを示しており、これは図11の方法に基づく逆変換である。図11の方法は、メディアデコーダの逆変換部分として働くように構成されているメディアエンコーダの図2の変換部分202によって実行され得る。逆変換は、それぞれ変換モジュールによって、および/または逆変換処理コンポーネントのうちの1つまたは複数を実行するように構成されている他のモジュールによって実行され得る。
1102において、回転対称ブロックの対の1つまたは複数のメンバーを表す変換係数が受信される。いくつかの場合において、係数のない1つまたは複数の回転対称ブロックが受信され、および/または受信されない場合があり(たとえば、係数のないブロックはスキップされ得る)、たとえば、回転対称ブロックを表す変換係数を表さない信号が受信され得ることに留意されたい。代替的に、またはそれに加えて、いくつかの場合において、ブロック全体についてただ1つの係数が受信されることに留意されたい(たとえば、DC係数)。
関連付けられている選択された回転対称マスクを表す信号は、受信されるか、または故意に受信されなかったときに知られているとみなされ得る(たとえば、マスクは予測因子の指示から推論される)。回転対称マスクは、フレームの復号されたブロックとしてのサイズおよび/または形状を有する多次元空間内の回転対称を定義する。
1104において、回転対称ブロックの対は、受信された変換係数に基づき計算される。回転対称ブロックの対の各メンバーは、2つの相補的部分のうちの一方を含む。
1106において、2つの相補的部分の各部分は、回転対称ブロックの対の各それぞれのメンバーから抽出される。
1108において、2つの相補的部分からブロックが再構成される。再構成は、回転対称マスクに基づきガイドされ得る。代替的に、ブロックは、マスクなしでそれらの部分から再構成され、正方形または矩形のブロックを形成することに基づきガイドされ、たとえば、パズルピースのように2つの部分を繋ぎ合わせる。
適宜、ブロックは、フレーム内で指定される。
1112において、さらなる処理、記憶のために復号されたブロックが用意され、および/または伝送される。フレームは、再構成されたブロックから再構成されるものとしてよい。フレームは、画面に、たとえば、ビデオの一部として表示され得る。
次に、本明細書で説明されている方法および/またはシステムを実行した実験的結果の画像およびグラフを含む図である図12A〜図12Iへの参照がなされる。このグラフは、圧縮標準に基づく方法を使用する画像データ圧縮に関して、本明細書において説明されているシステムおよび/または方法を使用する性能の改善を示している。これらの実験は、フレーム内符号化方法を使用する個別のフレームに基づく。
これらの実験は、次のように実行される。
各YUVビデオシーケンスからの1つのフレームが取得される。さまざまなフレームサイズが使用され、これは、共通中間フォーマット(CIF)、1/4-CIF(QCIF)、および高解像度(HD)を含む、異なる標準によって定義されている。各フレームは、8×8、16×16、および32×32ピクセルのサイズを含む、均一にパーティションに区切られ固定されたN×Nサイズのブロックにされる。
マスク選択および適用に対して、2×(N-1)の異なる線配向を含む回転対称マスクライブラリが生成される。
整数変換、スケーリング、および量子化方式は、H.265標準に基づき適用される。
係数スキャンは、変換係数のN×N行列を変換係数の4×4の部分行列に細分することによって実行される。係数スキャンは、ゼロ係数をスキップしながら各4×4行列においてジグザグスキャンを使用して実行される。
変換係数は、H.264 CAVLC標準に基づき符号化され、これは予測モード、マスクタイプ、およびMBtype(本明細書では選択された符号化されたブロックとして定義される(すなわち、標準N×Nブロックまたは本明細書で説明されているように2つの相補的部分に分割されたブロック))に対する信号も定義した。
N×Nブロックに対するブロックイントラ予測は、4つのモード、すなわち、垂直(V)、水平(H)、DC(すなわち、フラット)(D)、および平面(P)に基づく。回転対称ブロックの対の符号化メンバーは、別個の、および/または共通のイントラ予測因子に基づく。共通イントラ予測因子は、4つのイントラモード、すなわち、V、H、D、およびPを含む。別個のイントラ予測因子は、4つのイントラモードの組合せの順列、VV、VH、...、およびPPに基づく16個のイントラモードを含む。
標準N×N符号化方法に基づき特定のブロックを符号化するかどうか、または回転対称マスクを適用し回転対称ブロック(本明細書で説明されているような)の対を符号化するかどうかを決定することは、SSE+lambda*Bitsとして定義されている速度歪み(RD)費用関数に基づいており、ここで、SSEは、再構成されたブロックと入力ブロックとの間の平方誤差の総和を表し、lambdaは、量子化パラメータ(Qp)に依存する項を表し、Bitsは、シグナリングビットを含むブロック内の符号化されたビットの数を表す。符号化決定は、また、非ゼロ係数のパーセンテージに基づくようにもされた(PerNZ Coeffによってグラフにおいて表される)。
結果は、次のように要約される。
同じPSNRに対する最大15%までのビットレートの削減が示されている。35個のQCIFシーケンスフレームについて、サイズ16×16のブロックに分割されると、35〜45dBのPSNR範囲に対してビットレートの約7%の平均的削減が得られた。サイズ16×16のブロックに分割される、10個のより大きいサイズのシーケンスフレームについて、約7.5%の平均削減が達成された。
図12Aは、本明細書で説明されている実験の一部として本明細書で説明されているシステムおよび/または方法により処理される画像(たとえば、フレーム)の一例である。画像は、akiyo.cifという名前のCIFシーケンスの10番目のフレームに対応する。CIFフレームは、サイズ352×288ピクセルを有する。フレームは、正方形N×Nブロックに基づき均一にパーティション区切られてブロックにされ、ただしN=16ピクセルである(例示的ブロックは、1202で表されている)。フレームは、Qp=30を使用して符号化される。2(N-1)=30の異なる線配向を含む回転対称マスクライブラリは、ブロックを分割するためのマスクの選択の基準をもたらす。選択されたマスクを線配向と関連付けているブロックが図に示されており、たとえば、マスク1204を有するブロックである。多くの場合において、マスク線は、ブロック内のエッジに従う。マスクが選択されなかったブロックは、単一のN×Nブロックとして符号化され、マスクなしの画像、たとえば、ブロック1202内に示された。
図12B〜図12Iのグラフは、図12Aの処理に基づく実験結果を含む。
図12Bは、同じ客観的画質レベル(PSNRで表されている)で、標準N×N変換ブロックを使用して図12Aの符号化画像上で、符号化するための2つの相補的部分にブロックを分割するようにマスクが選択されたときの図12Aのフレーム全体に対するビットレートに関する改善を示すグラフである。グラフは、ビットレート改善のパーセントをPSNRの関数として示している。本明細書で説明されているシステムおよび/または方法を使用する図12Aの画像について10%を超えるビットレートの改善が達成されたことに留意されたい。
図12Cは、同じ客観的画質レベル(PSNRで表されている)で、標準N×N変換ブロックを使用して図12Aの符号化画像上で、符号化するための2つの相補的部分にブロックを分割するようにマスクが選択されたときの図12Aのフレーム全体に対する非ゼロ毎の(PerNZ)係数に関する改善を示すグラフである。量子化の後の非ゼロである変換係数の数は、変換係数を符号化するための符号化されたビットの数を推定するために使用される。非ゼロ係数尺度は、シグナリングビットのオーバーヘッドを含まない(たとえば、予測モード、マスク選択モード、およびMBタイプ)ことに留意されたい。グラフは、本明細書で説明されているシステムおよび/または方法を使用して約15%の非ゼロ変換係数のパーセンテージに関する改善を示している。
図12Dは、C2処理方式およびN×N処理方式に対する、ビットレートの関数としてY-PSNRを示すグラフである。C2処理方式は、変換ブロックに対する2つの相補的部分のマスク選択および生成のいずれかに基づき本明細書で説明されている方法および/またはシステムであるか、または標準方法を使用してN×Nブロックを符号化する。マスクベースの符号化またはN×Nブロックベースの符号化の選択は、各マスクベースのパーティションおよび各N×Nブロックに関連付けられている特定の尺度に基づく。N×N処理方式は、単一のN×Nブロックとして各ブロックを符号化する標準方法に基づく。グラフは、C2方法が、同じビットレートに対して改善された画質を表す、同じPSNR値に対する、N×N方法よりも低いビットレートを達成したことを示している。
図12Eは、C2方法およびN×N方法に基づく、フレーム全体に対する非ゼロ変換係数のパーセントの関数としてY-PSNRを示すグラフである。グラフは、非ゼロ変換係数の同じパーセンテージに対する改善された画質を表す、同じPSNRに対する非ゼロ変換係数のより低いパーセンテージに関する、C2方法(すなわち、本明細書で説明されているシステムおよび/または方法)に基づく改善された圧縮性能を示している。
図12Fは、N×Nの標準的な場合に対するイントラ予測モードの適用の頻度を示すヒストグラムである。x軸では、1は予測なしを表し、2は垂直予測を表し、3は水平予測を表し、4はDC予測を表し、5は平面予測を表す。
図12Gは、16個の別々の予測因子モードに対する、本明細書において説明されている方法および/またはシステムのC2方式に対するイントラ予測モードの適用の頻度を示すヒストグラムであり、1は予測なしを表し、2はVV予測を表し、3はVH予測を表し、4はVD予測を表し、5はVP予測を表し、6はHV予測を表し、...、17はPP予測を表す。
図12Hは、30個の回転対称マスクのライブラリの各マスクの適用の頻度を示すヒストグラムである。
図12Iは、Qpの関数としての3つの変数の比を示すグラフである。
線1214は、C2方法が画像のブロックに対する標準のN×N方法の上で選択されたブロックのパーセンテージを示す。たとえば、Qp=30において、フレーム内のブロックの約35%が、C2方法に基づき(マスク選択および2つの相補的部分の符号化に基づき)符号化されているが、残り(約65%)は、単一の16×16ブロックとして符号化された。
線1212は、C2方法に基づき符号化されたフレームのビットのパーセンテージを示す。たとえば、Qp=30において、フレーム内のビットの約45%は、C2方法に基づき符号化された。
線1210は、C2方法を使用して符号化されたフレームの非ゼロ毎の変換係数のパーセンテージを示す。たとえば、Qp=30において、フレーム内の非ゼロ毎の変換係数の45%超は、C2方法を使用して符号化された。
本発明のさまざまな実施形態の説明は、例示を目的として提示されているが、網羅的であること、または開示されている実施形態に制限されることを意図されていない。多くの修正形態および変更形態は、説明されている実施形態の範囲および精神から逸脱することなく当業者には明らかであろう。本明細書で使用されている用語は、実施形態の原理、市場に見られる技術に勝る実用用途または技術的改善を最もよく説明するか、または他の当業者が本明細書で開示されている実施形態を理解できるように選択された。
本出願から成熟する特許の存続期間中に、多くの関連する画像エンコーダおよび/または画像デコーダが開発されることが予想され、エンコーダという用語の範囲は、そのようなすべての新しい技術を先験的に含むことが意図されている。
本明細書で使用されているように、「約」という語は、±10%を指す。
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、およびそれらの活用形は、「限定はしないが含む」ことを意味する。この言い回しは、「〜からなる」および「本質的に〜からなる」という言い回しを包含する。
「本質的に〜からなる」という語句は、組成または方法が、追加の材料および/またはステップを含むが、追加の材料および/またはステップが請求されている組成または方法の基本的な、および新規性のある特性を実質的に変えない場合に限ることを意味する。
本明細書の英語原文で使用されているように、英文中の単数形の「a」、「an」、および「the」は、文脈上明らかに他の意味に解すべき場合を除き、複数の指示対象を含む。たとえば、「化合物」または「少なくとも1つの化合物」という言い回しは、その混合物を含めて、複数の化合物を含み得る。
「例示的な」という単語は、本明細書では、「一例、事例、または例示として使用する」ことを意味するために使用される。「例示的な」として記述される実施形態は、必ずしも、他の実施形態よりも好ましい、または有利であると解釈される、および/または他の実施形態から特徴の組み込みを除外する、ことをしない。
「適宜」という言い回しは、本明細書では、「いくつかの実施形態において提供され、他の実施形態では提供されない」ことを意味するために使用される。本発明の特定の実施形態は、このような特徴が食い違うことがない限り複数の「オプションの」特徴を含み得る。
本出願全体を通して、本発明のさまざまな実施形態が、範囲形式で提示され得る。範囲形式の説明は、単に簡潔にするための便宜上のものであり、本発明の範囲に対する柔軟性のない制限として解釈されるべきでないことは理解されるであろう。したがって、範囲の説明は、特に開示されているすべての可能な部分範囲さらにはその範囲内の個別の数値を有するものとして考えられるべきである。たとえば、1から6までのなどの範囲の説明は、1から3まで、1から4まで、1から5まで、2から4まで、2から6まで、3から6までなどの特に開示されている部分範囲、さらには、その範囲内の個別の数、たとえば、1、2、3、4、5、および6を有すると考えられるべきである。これは、範囲の広さに関係なく適用される。
数値範囲が、本明細書で指示されている場合には、必ず、指示された範囲内に引用される数(分数または整数)を含めることが意図されている。第1の指示する数と第2の指示する数と「の間の範囲にある/範囲」および第1の指示する数「から」第2の指示する数「までの範囲にある/範囲」という言い回しは、本明細書では交換可能に使用され、第1および第2の指示された数と、それらの間のすべて分数および整数とを含むことが意図されている。
わかりやすくするために、別々の実施形態の背景状況において説明されている、本発明のいくつかの特徴も、単一の実施形態において組み合わせて実装され得ることは理解されるであろう。逆に、簡潔にするため、単一の実施形態の背景状況において説明されている、本発明のさまざまな特徴も、別々に、または適当な部分組合せで、または本発明の他の説明されている実施形態において適切なように提供され得る。さまざまな実施形態の背景において説明されているいくつかの特徴は、実施形態がこれらの要素がないと動作不能にならない限り、これらの実施形態の本質的な特徴と考えられるべきでない。
本発明は、その特定の実施形態と併せて説明されているけれども、多くの代替的形態、修正形態、および変更形態が、当業者には明らかであることは明白である。したがって、本発明は、付属の請求項の精神と広い範囲内に収まるすべてのそのような代替的形態、修正形態、および変更形態を包含することが意図されている。
本明細書で言及されているすべての刊行物、特許、および特許出願は、それぞれの個別の刊行物、特許、または特許出願が、参照により本明細書に組み込まれることが特に、また個別に指示されている場合と同じ範囲にわたって、その全体が参照により本明細書に組み込まれる。それに加えて、本出願における文献の引用または識別は、そのような文献が本発明への従来技術として利用可能であることを認めるものとして解釈されないものとする。節の見出しが使用される限り、これらは、必要な制限と解釈されるべきでない。