(57)【要約】      （修正有）【課題】ビデオ符号化の効率を改善するイントラ予測プロセスを提供する。【解決手段】Ｈ．２６４／ＡＶＣは、予測される対象ブロック１１０１の直上に配置された水平境界内の参照ピクセル１１０２と、対象ブロックの直左に配置された垂直境界内の参照ピクセル１１０３とを使用する。水平境界ピクセルの配列と垂直境界ピクセルの配列から少なくともいくつかのピクセルが取り出される。その後、取り出されたピクセルを他方の境界ピクセルに追加して、他方の境界ピクセルの配列を拡張する。イントラ予測は、境界ピクセルの拡張された配列だけに基づいて実行される。【選択図】図１１Ａ
2020099085.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデコーダのプロセッサによって実行されるビデオ復号方法であって、
対象ブロックの直上に配置された水平境界ピクセルの配列が記憶された第１のメモリから、前記対象ブロックの画面内予測の予測方向に基づき、少なくともいくつかのピクセルを取り出すステップと、
前記対象ブロックの直左に配置された垂直境界ピクセルの連続した配列を形成するために、当該垂直境界ピクセルの配列における最上部に相当する端部へ、取り出されたピクセルを追加するステップと、
前記垂直境界ピクセルの配列が記憶された第２のメモリに、追加されたピクセルを記憶して、前記第２のメモリに記憶された前記垂直境界ピクセルの配列を拡張するステップと、
前記第２のメモリに記憶された、追加されたピクセルを含む拡張後の前記垂直境界ピクセルの配列だけを参照画素として用いて、前記対象ブロックのイントラ予測を実行するステップと、
を備えるビデオ復号方法。
【請求項２】
コンピュータシステムのプロセッサと、前記プロセッサにより実行されるプログラムを記憶したプログラム記憶部と、を備えるビデオデコーダであって、
前記プロセッサは、
対象ブロックの直上に配置された水平境界ピクセルの配列が記憶された第１のメモリから、前記対象ブロックの画面内予測の予測方向に基づき、少なくともいくつかのピクセルを取り出す処理と、
前記対象ブロックの直左に配置された垂直境界ピクセルの連続した配列を形成するために、当該垂直境界ピクセルの配列における最上部に相当する端部へ、取り出されたピクセルを追加する処理と、
前記垂直境界ピクセルの配列が記憶された第２のメモリに、追加されたピクセルを記憶して、前記第２のメモリに記憶された前記垂直境界ピクセルの配列を拡張する処理と、
前記第２のメモリに記憶された、追加されたピクセルを含む拡張後の前記垂直境界ピクセルの配列だけを参照画素として用いて、前記対象ブロックのイントラ予測を実行する処理と、
を実行する構成とされた、
ビデオデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ符号化に関し、特に、同じビデオフレームに属する先に符号化され復号されたピクセルを使用してサンプルブロックを予測する、フレーム内予測に関する。
【背景技術】
【０００２】
圧縮されていない状態では、デジタルビデオシーケンス（例えば一連のフレーム）内のフレームの各々のデジタルビデオデータは膨大な量になる。コンピュータネットワークを介して非圧縮デジタルビデオを送信することは、帯域幅制限のため、ほとんどのアプリケーションで実現可能ではない。加えて、非圧縮デジタルビデオは、大量の記憶空間を必要とする。デジタルビデオデータは、記憶要件を引き下げるために、また帯域幅要件を引き下げるために、通常は何らかの方式で符号化される。
【０００３】
デジタルビデオを符号化するための１つの技法は、フレーム間予測、即ちインター予測である。インター予測は、異なるフレーム間で時間をおいて出現する類似のパターンを利用してビデオデータを圧縮する。一般に、時間的に隣接するビデオフレームは、実質的に類似するピクセルブロックを含む。インター予測を利用した符号化プロセスにおいては、１つのフレーム内のピクセルのブロックの動きを、別のフレーム内の類似ピクセルのブロックに関連付ける動きベクトルを定義する。したがって、システムは、ピクセルのブロックを２回符号化する必要はなく、代わりに、ピクセルブロックを１回符号化し、定義された動きベクトルを利用して、他のピクセルブロックを予測することができる。
【０００４】
デジタルビデオを符号化するための別の技法は、フレーム内予測、即ちイントラ予測と呼ばれる。イントラ予測は、他のフレーム内のピクセルを参照することなく、フレーム又はフレームの一部を符号化する。イントラ予測は、フレーム内において距離を置いて存在する類似のピクセルブロックを利用する。一般に、空間的に隣接するピクセルブロックは類似の属性を有するので、隣接するブロック間の空間的相関を参照することによって、符号化プロセスの効率が改善される。隣接ブロックで使用される予測モードに基づいて対象ブロックを予測するのに、この相関を利用することができる。
【発明の概要】
【０００５】
本発明は、ビデオ符号化の効率を改善する独特なイントラ予測プロセスを提供する。Ｈ．２６４／ＡＶＣは、予測される対象ブロックの直上に配置された水平境界内の参照ピクセルと、対象ブロックの直左に配置された垂直境界内の参照ピクセルとを使用する。本発明では、水平境界ピクセルの配列又は垂直境界ピクセルの配列から少なくともいくつかのピクセルが取り出される。その後、取り出されたピクセルを他方の境界ピクセルに追加して、他方の境界ピクセルの配列を拡張する。イントラ予測は、境界ピクセルの拡張された配列だけに基づいて実行される。本発明の一実施形態では、垂直境界ピクセルから少なくともいくつかのピクセルが取り出され、水平境界ピクセルに追加されて、水平境界ピクセルの配列を拡張する。
【０００６】
本発明は、参照ピクセルの取り出しを水平境界から行うのか、それとも垂直境界から行うのか選択する判定プロセスを不要にすることができる。本発明は、予測方向と交差する垂直境界の位置を計算する反復プロセス（除法演算を含んでいる）も不要にすることができる。これらのプロセスを不要にすることで、単一命令複数データ（ＳＩＭＤ：Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）アーキテクチャ上でイントラ予測プロセスを実施することが可能になり、それによって、ビデオ符号化の計算効率が改善する。
【０００７】
本発明による一実施形態では、
【数１】
2020099085.tif 000003
によって垂直ピクセルが指定される（垂直ピクセル識別子）。この識別子を利用して垂直境界ピクセルの中から少なくともいくつかのピクセルが取り出される。ここで、ｓｉｚｅは、予測される対象ブロックのサイズを表し、ａｎｇｌｅは、予測方向を表し、ｃｏｌは、−１からａｎｇｌｅまで１ずつデクリメントされるカウンタである。取り出されたピクセルは、水平ピクセル識別子［ｃｏｌ］によって識別される位置で水平ピクセルに追加される。
【０００８】
別の実施形態では、垂直境界ピクセルから少なくともいくつかのピクセルを取り出すとき、ＩｎｖＡｎｇｌｅを
【数２】
2020099085.tif 000004
から計算する。ここで、Ｎは、２の整数乗である。その後、［ｃｏｌ×ＩｎｖＡｎｇｌｅ＞＞ｌｏｇ２Ｎ］によって計算される垂直ピクセル識別子を使用して、垂直境界ピクセルの中から少なくともいくつかのピクセルが取り出される。取り出されたピクセルは、水平ピクセル識別子［ｃｏｌ］によって識別される位置で水平ピクセルに追加される。
【０００９】
別の実施形態では、ａｎｇｌｅの値に関連付けられたＩｎｖＡｎｇｌｅの値を列挙するルックアップテーブルから、ＩｎｖＡｎｇｌｅが獲得される。
【００１０】
別の実施形態では、垂直ピクセル識別子［ｒｏｗ］を使用して、垂直境界ピクセルの中からピクセルが識別される。ここで、ｒｏｗは、０からｓｉｚｅまで１ずつインクリメントされるカウンタである。取り出されたピクセルは、水平ピクセル識別子［ｉｎｔ＋１］によって識別される位置で水平ピクセルに追加される。ここで、ｉｎｔは、予測方向と交差するピクセルの位置を整数値で表現する。
【００１１】
本発明はまた、水平境界ピクセルの配列又は垂直境界ピクセルの配列から少なくともいくつかのピクセルが取り出されるイントラ予測操作を実行する、エンコーダ及びデコーダを提供する。その後、取り出されたピクセルが、他方の境界ピクセルに追加されて、他方の境界ピクセルの配列を拡張する。イントラ予測は、拡張された境界ピクセルの配列だけに基づいて実行される。
【図面の簡単な説明】
【００１２】
【図１】本発明を実施できる例示的なハードウェアアーキテクチャを示すブロック図である。
【図２】本発明を適用できるビデオエンコーダの概観を示すブロック図である。
【図３】本発明を適用できるビデオデコーダの概観を示すブロック図である。
【図４】本発明の一実施形態によるエンコーダの機能モジュールを示すブロック図である。
【図５】本発明の実施形態のイントラ予測モジュールによって実行されるイントラ予測プロセスを示すフローチャートである。
【図６】本発明の一実施形態によるデコーダの機能モジュールを示すブロック図である。
【図７】Ｈ．２６４／ＡＶＣでサポートされるＩｎｔｒａ＿４ｘ４予測モードを説明する予測方向を示す図である。
【図８】文書番号ＪＣＴ−ＶＣ  Ａ１１９において提案される予測方向を示す図である。
【図９】図７に示される予測方向の１つに沿って予測ブロックを生成する、ＪＣＴ−ＶＣ  Ａ１１９において提案される、プロセスを示すフローチャートである。
【図１０】本発明の一実施形態に従って実行される簡素化されたイントラ予測のプロセスを示すフローチャートである。
【図１１Ａ】予測ブロックと水平及び垂直境界ピクセルの配列とを示す概略図である。
【図１１Ｂ】垂直境界ピクセルを用いて拡張された水平境界ピクセルの配列を示す概略図である。
【図１２】本発明の一実施形態に従って実行される水平境界ピクセルの配列を拡張するプロセスを示すフローチャートである。
【図１３】水平境界ピクセルの配列を拡張する別の実施形態を示すフローチャートである。
【図１４】本発明の別の実施形態に従って実行される簡素化されたイントラ予測のプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１３】
図１は、本発明を実施できるコンピュータ１００の例示的なハードウェアアーキテクチャを示している。図１に示されるハードウェアアーキテクチャは、本発明の実施形態を実施するビデオエンコーダとビデオデコーダの両方に共通して使用することができる。コンピュータ１００は、ローカルインタフェース１０７を介して通信可能に結合される、プロセッサ１０１、メモリ１０２、記憶デバイス１０５、及び、１つ又は複数の入出力（Ｉ／Ｏ）デバイス１０６（又は周辺装置）を含む。ローカルインタフェース１０７は、例えば、当該技術分野で知られているような、１つ若しくは複数のバス接続、又は、他の有線若しくは無線の接続とすることができるが、これらに限定されない。
【００１４】
プロセッサ１０１は、ソフトウェア、特にメモリ１０２に記憶されたソフトウェアを実行するためのハードウェアデバイスである。プロセッサ１０１は、任意のカスタムメイド若しくは市販のプロセッサ、中央処理装置（ＣＰＵ）、コンピュータ１００に関連するいくつかのプロセッサ間の補助プロセッサ、（マイクロチップ若しくはチップセットの形態を取る）半導体ベースのマイクロプロセッサ、又は一般にソフトウェア命令を実行するための任意のデバイスとすることができる。
【００１５】
メモリ１０２は、揮発性メモリ要素（例えば、ランダムアクセスメモリ（ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのＲＡＭ））と不揮発性メモリ要素（例えば、ＲＯＭ、ハードドライブ、テープ、ＣＤＲＯＭなど）のいずれか一方又は両方の組み合わせを含むことができる、コンピュータ可読媒体を含む。さらに、メモリ１０２は、電子、磁気、光、及び／又は他のタイプの記憶媒体を含むことができる。コンピュータ可読媒体は、命令実行システム、装置、又はデバイスが使用するプログラム、又はそれらに関連したプログラムを記憶、伝達、伝搬、又は輸送できる任意の手段とすることができる。メモリ１０２は分散アーキテクチャを有することができ、その場合、様々なコンポーネントは互いに遠く離れて配置されるが、プロセッサ１０１によってアクセスできる。
【００１６】
メモリ１０２内のソフトウェア１０３は、１つ又は複数の別個のプログラムを含むことができ、その各々は、以下で説明されるような、コンピュータ１００の論理機能を実施するための実行可能命令の順序付けられたリストを含む。図１の例では、メモリ１０２内のソフトウェア１０３は、本発明によるコンピュータ１００のビデオ符号化又はビデオ復号機能を具現化するする。加えて、必ずしも必要ではないが、メモリ１０２は、オペレーティングシステム（Ｏ／Ｓ）１０４を含むことが可能である。基本的に、オペレーティングシステム１０４は、コンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイル及びデータ管理、メモリ管理、並びに、通信制御及び関連サービスを提供する。
【００１７】
コンピュータ１００の記憶デバイス１０５は、１つのタイプ又は多くの異なるタイプの記憶デバイスとすることができ、固定型記憶デバイス又はポータブル記憶デバイスを含む。一例として、記憶デバイス１０５は、磁気テープ、ディスク、フラッシュメモリ、揮発性メモリ、又は異なる記憶デバイスとすることができる。加えて、記憶デバイス１０５は、セキュアデジタルメモリカード又は他の任意の着脱可能記憶デバイス１０５とすることができる。
【００１８】
Ｉ／Ｏデバイス１０６は、例えば、タッチスクリーン、キーボード、マウス、スキャナ、マイクロフォン、又は他の入力デバイスなどの、しかしそれらに限定されない、入力デバイスを含むことができる。さらに、Ｉ／Ｏデバイス１０６は、例えば、ディスプレイ、又は他の出力デバイスなどの、しかしそれらに限定されない、出力デバイスを含むこともできる。さらに、Ｉ／Ｏデバイス１０６は、例えば、（別のデバイス、システム、若しくはネットワークにアクセスするための）変復調器（モデム）、無線周波数（ＲＦ）、ワイヤレス、若しくは他のトランシーバ、電話インタフェース、ブリッジ、ルータ、又は入力と出力の両方として機能する他のデバイスなどの、しかしそれらに限定されない、入力と出力の両方を介して通信するデバイスを含むことができる。
【００１９】
当業者によってよく知られているように、ビデオ圧縮は、ビデオシーケンス内の冗長情報を除去することによって達成される。多くの異なるビデオ符号化規格が存在し、それらの例として、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６１、Ｈ．２６３、及びＨ．２６４／ＡＶＣがある。本発明は特定のビデオ符号化規格いすれにも限定的に適用されるものではないが、本発明は、参照により本明細書に組み込まれるＨ．２６４／ＡＶＣ規格の例を使用し、以下に説明する。Ｈ．２６４／ＡＶＣは、最新のビデオ符号化規格であり、ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１、及びＨ．２６３などのこれまでの符号化規格と比べて、著しい性能改善を達成する。
【００２０】
Ｈ．２６４／ＡＶＣでは、ビデオの各フレーム又はピクチャは、いくつかのスライスに分解することができる。次に、スライスは、マクロブロックと呼ばれる１６×１６ピクセルのブロックに分割され、次に、マクロブロックは、８×１６、１６×８、８×８、４×８、８×４、最小では４×４ピクセルのブロックにさらに分割することができる。Ｈ．２６４／ＡＶＣによってサポートされるスライスには５つのタイプがある。Ｉスライスでは、すべてのマクロブロックが、イントラ予測を使用して符号化される。Ｐスライスでは、マクロブロックは、イントラ予測又はインター予測を使用して符号化することができる。Ｐスライスは、マクロブロック当たりただ１つの動き補償予測（ＭＣＰ：ｍｏｔｉｏｎ  ｃｏｍｐｅｎｓａｔｅｄ  ｐｒｅｄｉｃｔｉｏｎ）信号を使用することを可能にする。Ｂスライスでは、マクロブロックは、イントラ予測又はインター予測を使用して符号化することができる。予測当たり２つのＭＣＰ信号を使用することができる。ＳＰスライスは、Ｐスライスを異なるビデオストリーム間で効率的に切り換えることを可能にする。ＳＩスライスは、ランダムアクセス又はエラー回復を行うためのもので、ＳＰスライスに完全に対応しているが、イントラ予測だけを使用する。
【００２１】
図２は、本発明を適用できるビデオエンコーダの概観を示している。図示されるブロックは、メモリ１０２内のソフトウェア１０３を実行するプロセッサ１０１によって実現される機能モジュールを表す。ビデオフレームのピクチャ２００が、ビデオエンコーダ２０１に供給される。ビデオエンコーダは、マクロブロック２００Ａを単位として、ピクチャ２００を処理する。各マクロブロックは、ピクチャ２００のいくつかのピクセルを含む。各マクロブロック上で、変換係数への変換が実行され、それに続いて、変換係数レベルへの量子化が実行される。さらに、イントラ予測又はインター予測を使用して、符号化ステップをピクセルデータに対して直接的に実行せず、ピクセルデータの差分に対して実行して、予測ピクセル値を得る。それによって、小さな値がより容易に圧縮される。
【００２２】
エンコーダ２０１は、スライス毎に多くのシンタックス要素を生成し、シンタックス要素は、それぞれのスライスのマクロブロックの符号化バージョンを生成する。変換係数レベル、又はスキップされる変換係数レベルを示す有意性マップ（ｓｉｇｎｉｆｉｃａｎｃｅ  ｍａｐ）など、変換係数の符号化に関連する、シンタックス要素内のすべての残差データ要素は、残差データシンタックス要素と呼ばれる。これらの残差データシンタックス要素に加えて、エンコーダ２０１によって生成されるシンタックス要素は、各マクロブロックをどのように符号化するかに関する情報と、どのように復号しなければならないかに関する情報をそれぞれ含んだ制御情報シンタックス要素を含む。言い換えると、シンタックス要素は、２つのカテゴリに分けることができる。第１のカテゴリである制御情報シンタックス要素は、例えば、マクロブロックタイプ、サブマクロブロックタイプ、及び空間タイプと時間タイプ両方の予測モードについての情報、並びにスライスベース及びマクロブロックベースの制御情報に関する要素を含む。第２のカテゴリでは、量子化変換係数のブロック内のすべての有意係数の位置と、量子化ステップに対応するレベルを単位として表される有意係数の値とを示す有意性マップなど、すべての残差データ要素が、組み合わされ、残差データシンタックス要素になる。
【００２３】
エンコーダ２０１は、スライス毎にシンタックス要素を符号化し、算術符号を生成する、エントロピコーダを備える。スライスについての算術符号を生成する場合、エントロピコーダは、ビデオ信号ビットストリーム内のシンタックス要素のデータ値の間の統計的依存性を利用する。エンコーダ２０１は、ピクチャ２００のスライスについての符号化ビデオ信号を、図３に示されるビデオデコーダ３０１に出力する。
【００２４】
図３は、本発明を適用できるビデオデコーダの概観を示している。同様に、図示されるブロックは、メモリ１０２内のソフトウェア１０３を実行するプロセッサ１０１によって実現される機能モジュールを表す。ビデオデコーダ３０１は、符号化ビデオ信号を受信し、最初に信号をエントロピ復号して、シンタックス要素に戻す。デコーダ３０１は、マクロブロックを順々に、その後、スライスを順々に処理して、ピクチャ３００内のピクセルからなるピクチャサンプル３００Ａを再構成するために、シンタックス要素を使用する。
【００２５】
図４は、ビデオエンコーダ２０１の機能モジュールを示している。これらの機能モジュールは、メモリ１０２内のソフトウェア１０３を実行するプロセッサ１０１によって実現される。入力ビデオピクチャは、クロミナンス（「クローマ」）及びルミナンス（「ルーマ」）など（例えば、色相、彩度、及び色値など、他の成分も可能である）、元の色の成分を表すサンプル点によって定義される自然な（非圧縮の）ビデオイメージのフレーム又はフィールドである。入力ビデオピクチャは、ピクチャ色のルーマ成分の１６×１６ピクセルから成る正方形のピクチャ領域を各々が表す、マクロブロック４００に分割される。入力ビデオピクチャは、ピクチャ色の２つのクローマ成分の各々についての８×８ピクセルを各々が表す、マクロブロックにも区分される。一般的なエンコーダ操作では、入力されるマクロブロックは、インター予測又はイントラ予測を使用して、時間的又は空間的に予測することができる。しかし、本願発明の説明の目的のため、マクロブロック４００は、すべてＩスライスタイプのマクロブロックであり、イントラ予測だけが行われると仮定する。
【００２６】
イントラ予測は、イントラ予測モジュール４０１において達成され、その動作が、以下で詳細に説明される。イントラ予測モジュール４０１は、先に符号化及び再構成が行われ、フレームメモリ４０３に記憶された、近隣ブロックの水平及び垂直境界ピクセルから、予測ブロック４０２を生成する。対象ブロック４００と予測ブロック４０２の間の差である予測ブロック４０２の残差４０４は、ビデオ符号化分野の当業者に知られた方法及び技法を使用して、変換／量子化モジュール４０５において変換され、スケーリングされ、量子化される。その後、量子化変換係数４０６は、エントロピ符号化モジュール４０７においてエントロピ符号化され、符号化ビデオ信号４０８として（イントラ予測に関する他の情報と一緒に）送信される。
【００２７】
ビデオエンコーダ２０１は、対象ブロックにおいてイントラ予測を実行するために、復号の機能性を有する。復号の機能性として、逆量子化／逆変換モジュール４０９を備え、逆量子化／逆変換モジュール４０９は、量子化変換係数４０６に対して逆量子化及び逆変換を実行して、復号予測残差４１０を生成し、復号予測残差４１０は、予測ブロック４０２に加算される。復号予測残差４１０と予測ブロック４０２の合算が、再構成ブロック４１１であり、再構成ブロック４１１は、フレームメモリ４０３に記憶され、次の対象ブロック４００を符号化するための予測ブロック４０２を生成するために、イントラ予測モジュール４０１によってフレームメモリ４０３から読み出され、使用される。
【００２８】
図５は、イントラ予測モジュール４０１によって実行されるプロセスを示すフローチャートである。Ｈ．２６４／ＡＶＣ規格によれば、イントラ予測は、先に符号化され及びその後復号された近隣ブロックの境界ピクセル（「参照ピクセル」）を補間して、複数の予測モードの下で対象ブロック４００の各ピクセルを予測することを含む。予測モードは、正の整数番号０、１、２、…によって識別され、各々は、対象ブロック４００内の特定のピクセルを予測するための異なる命令又はアルゴリズムに関連付けられる。イントラ予測モジュール４０１は、それぞれの予測モードの下でイントラ予測を実行し、異なる予測ブロックを生成する。フルサーチ（「ＦＳ」）アルゴリズムの下では、生成された予測ブロックの各々が、対象ブロック４００と比較されて、予測残差４０４を最小化する、又はより小さな予測残差４０４を生成する最適予測モードを予測モードの中から見つける。最適予測モードを識別する情報は、圧縮され、他の制御情報シンタックス要素とともにデコーダ３０１に送信される。
【００２９】
各予測モードは、予測のおおよその方向、すなわち、水平上方、垂直、及び対角線左下方の語によって呼ばれる。予測方向は、図７に示されるような矢印を備えた図を用いて表現される角度方向によって、図式的に記述することができる。このタイプの図では、各矢印は、予測方向又は予測モードを表していると見なすことができる。予測モードに対応する角度は、対象ピクセルを予測するために使用される参照ピクセルの加重平均位置から対象ピクセル位置に向かう方向とおおよその関係がある。予測モードは、どの予測方向とも関連せず、したがって、図に他の予測モードのようには図式的に記述できない、ＤＣ予測モードを含む。ＤＣ予測モードでは、予測ブロック４０２の各ピクセルが参照ピクセルの平均値に一律に設定されるように、予測ブロック４０２が生成される。
【００３０】
図５に戻ると、ステップ５０１において、予測モードが初期化される。その後、ステップ５０２において、予測モードがＤＣ予測を示しているかどうかが判定される。ＤＣ予測を示している場合、フローはステップ５０３に進み、ステップ５０３において、ＤＣ予測ブロック４０２が、参照ピクセルの平均値を用いて生成される。予測モードがＤＣ予測を示していない場合、ステップ５０４において、予測モードに関連付けられた命令又はアルゴリズムに従って、予測ブロック４０２が生成されるが、そのプロセスは、以下で詳細に説明される。ステップ５０３又はステップ５０４の後、フローはステップ５０５に進み、予測モードのすべてについて予測ブロックが生成されたかどうかが判定される。予測モードのすべての下でイントラ予測が実行された場合、フローはステップ５０６に進む。すべてにおいて実行されていない場合、ステップ５０７において、予測モードがインクリメントされ、フローはステップ５０２に戻る。ステップ５０６において、生成された予測ブロックの各々が対象ブロック４００と比較されて、予測残差４０４を最小化する最適予測モードが決定される。
【００３１】
図６は、ビデオデコーダ３０１の機能モジュールを示している。これらの機能モジュールは、メモリ１０２内のソフトウェア１０３を実行するプロセッサ１０１によって実現される。最初に、エンコーダ２０１からの符号化ビデオ信号は、エントロピデコーダ６００によって受信され、エントロピ復号が施されて量子化変換係数６０１に戻される。量子化変換係数６０１は、逆量子化／逆変換モジュール６０２によって逆量子化及び変換されて、予測残差６０３が生成される。エンコーダ２０１によって選択された予測モードが、イントラ予測モジュール６０４に通知される。選択された予測モードに従って、イントラ予測モジュール６０４は、先に復号され、フレームメモリ６０６に記憶された近隣ブロックの境界ピクセルを使用して、図５のステップ５０２、５０３、５０４で実行されたプロセスと類似したイントラ予測プロセスを実行して、予測ブロック６０５を生成する。予測ブロック６０５は、予測残差６０３に加算されて、復号ビデオ信号のブロック６０７が復号される。復号されたブロック６０７は、次のブロックの予測で使用するために、フレームメモリ６０６に記憶される。
【００３２】
予測モード（ＤＣ予測モードを除く）の１つの下で予測ブロックを生成するために、イントラ予測モジュール４０１及び６０４によって実行されるステップ５０４のプロセスについての以下に詳細に説明する。Ｈ．２６４／ＡＶＣは、Ｉｎｔｒａ＿４ｘ４予測、Ｉｎｔｒａ＿８×８予測、及びＩｎｔｒａ＿１６×１６予測をサポートする。Ｉｎｔｒａ＿４ｘ４予測は、通常、ピクチャ内に重要な細部が存在する場合に使用される。Ｉｎｔｒａ＿４ｘ４予測は、１つのマクロブロック内の１６個の４×４ルーマブロックを個々に予測する。Ｉｎｔｒａ＿４ｘ４予測は、１つのＤＣ予測モードを含む、９つの予測モードの下で実行される。Ｉｎｔｒａ＿４ｘ４予測がそれに沿って実行される空間予測方向が、図７に示されている。Ｉｎｔｒａ＿８×８予測は、１つのＤＣ予測モードを含む、９つの予測モードの下で実行される。Ｉｎｔｒａ＿１６×１６予測は、１つのＤＣ予測モードを含む、４つの予測モードの下で実行される。
【００３３】
最近の研究により、予測方向の数を増加させれた、又は予測モードの数を増加させれば、一般に、ビデオ符号化における圧縮効率が改善することが判っている。例えば、ともに参照により本明細書に組み込まれる、ビデオ符号化共同研究部会（ＪＣＴ−ＶＣ：Ｊｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）に提出された文書番号ＪＣＴ−ＶＣ  Ａ１１９（「Ａｎｇｕｌａｒ  Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ」）及びＪＣＴ−ＶＣ  Ａ１２４（「Ａｒｂｉｔｒａｒｙ  Ｄｉｒｅｃｔｉｏｎ  Ｉｎｔｒａ」）を参照されたい。予測方向の数の増加することは、利用可能な予測方向の角度間隔の数が増加することを意味する。したがって、これにより予測ブロック候補の数も増加する。予測ブロック候補の数を増加させることにより、単純に、符号化される対象ブロックとほぼ同じ予測ブロックを得る可能性を高めることができる。図８は、文書番号ＪＣＴ−ＶＣ  Ａ１１９において提案される予測方向を示す図である。図８では、参照ピクセルは、１７個の水平ピクセルと１７個の垂直ピクセルとから成り、左上隅のピクセルは、水平境界と垂直境界の両方に共通である。したがって、８×８ブロックにおいて予測ピクセルを生成するために、３３個の異なる予測方向が利用可能である。ＪＣＴ−ＶＣ  Ａ１２４は、予測されるブロックのサイズに応じて予測方向の数が調整される、任意方向イントラ予測を提案している。
【００３４】
図９は、図８に示される予測方向の１つに沿って予測ブロックを生成する、ＪＣＴ−ＶＣ  Ａ１１９において提案される、プロセスを示すフローチャートである。説明を容易にするため、プロセスについての以下の説明では、いくつかのアルゴリズムは簡略化されて説明されている。また、プロセスは、主に垂直の予測方向に沿ったイントラ予測に限定して説明されている。主に水平の予測方向に沿ったイントラ予測は、ＪＣＴ−ＶＣ  Ａ１１９によって提供されるソフトウェアにおいて示されるように、図９に示されるプロセスを用いて対称的に実施することができる。図８は予測される８×８ブロックを示しているが、図９に示されるプロセスは、異なる構成に配置された様々な数のピクセルに適用されるように拡張可能である。例えば、予測されるブロックは、４×４配列のピクセルを含むことができる。予測ブロックは、８×８配列のピクセル、１６×１６配列のピクセル、又はより大きな配列のピクセルを含むこともできる。正方形配列と長方形配列の両方を含む他のピクセル構成も、予測ブロックを構成することができる。
【００３５】
図９のステップ９００において、対象ブロックのそれぞれ直上及び直左に存在する、水平境界及び垂直境界における参照ピクセルが、先に符号化及びその後復号され、図４に示されるメモリ４０３などのフレームメモリに記憶された近隣ブロックから読み取られる。水平境界からのピクセルは、「ｒｅｆＨ」と呼ばれるメモリ領域に記憶される。垂直境界からのピクセルは、「ｒｅｆＶ」と呼ばれる別のメモリ領域に記憶される。図８に戻ると、参照ピクセルは、８×８ブロックの左上隅のピクセル位置に原点を有する座標系における座標によって識別される。したがって、水平境界ピクセルは、ｐ［ｘ，ｙ］によって表される座標を有し、ｘ＝０，１，…，１６、ｙ＝０である。垂直境界ピクセルは、ｐ［ｘ，ｙ］によって表される座標を有し、ｘ＝０、ｙ＝０，−１，−２，…，−１６である。
【００３６】
メモリ領域ｒｅｆＨに記憶される水平境界ピクセルは、論理アドレス（ｘ）、ｘ＝０，１，…，１６によって識別され、同様に、メモリ領域ｒｅｆＶに記憶される垂直境界ピクセルは、論理アドレス（ｙ）、ｙ＝０，−１，−２，…，−１６によって識別され、各ピクセルは、それが読み取られた座標の数値を有するアドレスに記憶されると仮定する。したがって、図８に水平ピクセル及び垂直ピクセルが図式的に表されているように、メモリ領域ｒｅｆＨ及びｒｅｆＶは、直線的に互いに直交して延びていると考えることができ、各々は、２×ｓｉｚｅ＋１の長さを有する。ここで、「ｓｉｚｅ」は、対象ブロックのサイズを表すパラメータである。ｓｉｚｅは、４、８、１６…など、２の整数乗に等しい値を有すると仮定される。Ｈ．２６４／ＡＶＣのセクション8.3.2.2.1で説明されているようなローパスフィルタを、ｒｅｆＨ及びｒｅｆＶ内のピクセルに任意選択的に適用することができる。
【００３７】
ステップ９０１において、「ｒｏｗ」と呼ばれるカウンタが、ゼロ（「０」）に設定される。カウンタｒｏｗは、０からｓｉｚｅまでの値を取り、予測ブロック内における予測ピクセルの行位置を表す。ステップ９０２において、「ｐｏｓ」と呼ばれるパラメータが、ａｎｇｌｅ×（ｒｏｗ＋１）によって計算される。ａｎｇｌｅは、固定小数点表現の分数を有するパラメータである。そのため、ａｎｇｌｅは、整数部と小数部から形成され、小数部は、固定数の２進数から成る。ａｎｇｌｅは、図８に示される予測方向の１つを表す。例えば、「ａｎｇｌｅ＝−ｓｉｚｅ」は、図８における座標［ｘ＝０，ｙ＝０］を通過する予測方向を識別する。正の値を有するａｎｇｌｅは、水平境界だけと交差する予測方向を識別し、一方、負の値を有するａｎｇｌｅは、水平境界と垂直境界の両方と交差する予測方向を識別する。ａｎｇｌｅは、使用するのが望ましい予測方向の数によって決定される範囲内で変化する。ＪＣＴ−ＶＣ  Ａ１２４で提案されたように、使用される予測方向の数は、予測されるブロックのサイズに従って決定することができる。以下の説明では、ａｎｇｌｅは、「−ｓｉｚｅ」から「ｓｉｚｅ」までの範囲内で変化する分数値を取ると仮定される。ａｎｇｌｅの範囲限界は他の値を用いても定義できることに留意されたい。
【００３８】
ａｎｇｌｅ同様、パラメータｐｏｓも、整数部と小数部から成り、ｐｏｓの小数部は、固定された数の２進数から成る。ここで上述したようにａｎｇｌｅの範囲限界はｓｉｚｅの値に設定されている。これによれば、固定された数はａｎｇｌｅの範囲限界の底が２の対数に等しい。即ち、ｌｏｇ２＿ｓｉｚｅによって表すことができる。ｐｏｓは、水平境界とａｎｇｌｅによって表される予測方向とが交差する位置を識別する。ステップ９０２に戻ると、演算「ｐｏｓ＞＞ｌｏｇ２＿ｓｉｚｅ」は、ｐｏｓの整数部を識別し、ｐｏｓの整数部は、パラメータ「ｉｎｔ」に記憶され、演算「ｐｏｓ＆（ｓｉｚｅ−１）」は、ｐｏｓの小数部を識別し、ｐｏｓの小数部は、パラメータ「ｆｒａｃ」に記憶される。演算子「＞＞」は、２進数の算術右シフトを意味する。演算子「＆」は、ビット毎の「ａｎｄ」演算を求める。
【００３９】
ステップ９０３において、ａｎｇｌｅがゼロ（「０」）以上の値を有するかどうかが判定される。ａｎｇｌｅがゼロ以上の値を有する場合、フローはステップ９０４に進む。さもなければ、フローはステップ９１３に進む。ゼロ以上のａｎｇｌｅは、水平境界内に配置された参照ピクセル、即ちｒｅｆＨに記憶された参照ピクセルだけを用いて予測ブロック内の予測ピクセルを導出することができることを意味する。他方、ゼロよりも小さいａｎｇｌｅは、予測ブロック内の予測ピクセルを導出するために、垂直境界内に配置された参照ピクセル即ちはｒｅｆＶに記憶された参照ピクセルが必要とされることを意味する。
【００４０】
ステップ９０４において、ｆｒａｃがゼロでないかどうかが判定される。ｆｒａｃがゼロでない場合、フローはステップ９０５に進む。ｆｒａｃがゼロである場合、フローはステップ９０６に進む。ゼロに等しいｆｒａｃは、予測ブロック内の予測ピクセルを、水平境界内の参照ピクセルから直接的にコピーできることを示唆する。非ゼロｆｒａｃは、予測方向が非整数位置で水平境界と交差し、予測ブロック内の予測ピクセルを導出するために、２つ以上の参照ピクセルの補間が必要とされることを示唆する。
【００４１】
ステップ９０５において、「ｃｏｌ」と呼ばれるカウンタが、ゼロ（「０」）に設定される。カウンタｃｏｌは、ｒｅｆＨ内の参照ピクセルをアドレッシングするために使用される。ステップ９０７において、「ｉｎｔ＋ｃｏｌ＋１」と「ｉｎｔ＋ｃｏｌ＋２」によって識別される２つの参照ピクセルが、ｒｅｆＨから取り出される。これら２つの参照ピクセルは、予測ピクセルｖを導出するために、加重平均され、即ちｆｒａｃを用いて補間される。具体的には、「ｉｎｔ＋ｃｏｌ＋１」によって識別されるｒｅｆＨ内の参照ピクセルには、「ｓｉｚｅ−ｆｒａｃ」が乗算され、パラメータａに記憶される。「ｉｎｔ＋ｃｏｌ＋２」によって識別されるｒｅｆＨ内の参照ピクセルには、「ｆｒａｃ」が乗算され、パラメータｂに記憶される。その後、パラメータａ及びｂは加算され、ｓｉｚｅ、すなわち（ｓｉｚｅ−ｆｒａｃ）＋ｆｒａｃによって除算される。ｓｉｚｅによる除算は、ｌｏｇ２＿ｓｉｚｅ回の右シフトで置き換えることができる。導出された予測ピクセルｖは、特定の予測方向の下での対象ブロックのための予測ブロックを表す、「ｐｒｅｄ」と呼ばれるメモリ領域の配列に記憶される。ｐｒｅｄ内の各メモリ領域は、パラメータｒｏｗ及びｃｏｌによって識別される。その後、ｃｏｌは、ステップ９０８において、１だけインクリメントされ、ステップ９０９において、ｓｉｚｅと比較される。ｃｏｌがｓｉｚｅよりも小さい限り、ステップ９０７及びステップ９０８が繰り返される。ｃｏｌがｓｉｚｅと等しくなったとき、フローはステップ９２０に進む。
【００４２】
ステップ９０４において、ｆｒａｃがゼロであると判定された場合、ステップ９０６において、カウンタｃｏｌが、ゼロに設定される。ステップ９１０において、予測ピクセルｖが、ｒｅｆＨ（ｉｎｔ＋ｃｏｌ＋１）から直接的にコピーされ、その後、ｐｒｅｄ内の対応するメモリ領域に記憶される。その後、ｃｏｌは、ステップ９１１において、１だけインクリメントされ、ステップ９１２において、ｓｉｚｅと比較される。ｃｏｌがｓｉｚｅよりも小さい限り、ステップ９１０及びステップ９１１が繰り返される。ｃｏｌがｓｉｚｅと等しくなったとき、フローはステップ９２０に進む。
【００４３】
ステップ９０３に戻ると、ゼロよりも小さいａｎｇｌｅは、予測ブロック内の予測ピクセルを導出するために、ｒｅｆＶからの参照ピクセルを必要とする。ステップ９１３において、カウンタｃｏｌが、ゼロに設定される。その後、ステップ９１４において、「ｉｎｔ＋ｃｏｌ＋１」がゼロよりも低いかどうかが判定され、ゼロ以上の「ｉｎｔ＋ｃｏｌ＋１」は、予測ブロック内の予測ピクセルを導出するために、ｒｅｆＨに記憶された参照ピクセルだけにまだ依存できることを意味し、フローはステップ９１５に進む。ステップ９１５で実行されるプロセスは、ステップ９０７のプロセスと同様であり、その説明はここでは繰り返さない。その後、ｃｏｌは、ステップ９１６において、１だけインクリメントされ、ステップ９１７において、ｓｉｚｅと比較される。ｃｏｌがｓｉｚｅよりも小さい限り、ステップ９１４、ステップ９１５、及びステップ９１６が繰り返される。ｃｏｌがｓｉｚｅと等しくなったとき、フローはステップ９２０に進む。
【００４４】
ステップ９１４において、「ｉｎｔ＋ｃｏｌ＋１」がゼロよりも小さいと判定された場合、予測ブロック内の予測ピクセルを導出するために、ｒｅｆＶに記憶された参照ピクセルが必要とされる。ステップ９１８において、最初に、垂直境界と予測方向が交差する位置が決定される。ステップ９１８において、位置はｐｏｓ２によって表される。ステップ９０２では、ｐｏｓ、すなわち、水平境界と予測方向が交差する位置は、「ａｎｇｌｅ×（ｒｏｗ＋１）」によって決定されることに留意されたい。ａｎｇｌｅが水平差と垂直差の比を表すことを考慮して、垂直境界と予測方向が交差する位置を決定するために、「ａｎｇｌｅ×（ｒｏｗ＋１）」の代わりに、「ａｎｇｌｅ−１×（ｃｏｌ＋１）」が計算される。上で仮定したように、ａｎｇｌｅは、−ｓｉｚｅからｓｉｚｅまでの範囲内にある（−ｓｉｚｅ≦ａｎｇｌｅ≦ｓｉｚｅ）。したがって、ａｎｇｌｅとｓｉｚｅの間の比αは、
【数３】
2020099085.tif 000005
によって定義される。その場合、ａｎｇｌｅ−１は、
【数４】
2020099085.tif 000006
によって定義される。そのため、ステップ９１８において、ｐｏｓ２は、以下のように、
ｓｉｚｅの２乗にｃｏｌ＋１を乗算し、その後、ａｎｇｌｅの絶対値で除算することで決定される。
【数５】
2020099085.tif 000007
【００４５】
ｐｏｓ同様、ｐｏｓ２は、整数部と小数部から形成される、固定小数点表現の分数を有する。小数部は、ｌｏｇ２＿ｓｉｚｅによって決定される数の２進数から成る。ｐｏｓ２の整数部は、パラメータｉｎｔ２に記憶され、ｐｏｓ２の小数部は、パラメータｆｒａｃ２に記憶される。ステップ９１９において、「ｉｎｔ２＋ｒｏｗ＋１」と「ｉｎｔ２＋ｒｏｗ＋２」によって識別される２つの参照ピクセルが、ｒｅｆＶから取り出される。これら２つの参照ピクセルは、予測ピクセルｖを導出するために、加重平均され、即ちｆｒａｃ２を用いて補間される。具体的には、ｒｅｆＶ（ｉｎｔ２＋ｒｏｗ＋１）からの参照ピクセルには、「ｓｉｚｅ−ｆｒａｃ２」が乗算され、パラメータａに記憶される。ｒｅｆＶ（ｉｎｔ２＋ｒｏｗ＋２）からの参照ピクセルには、「ｆｒａｃ２」が乗算され、パラメータｂに記憶される。その後、パラメータａ及びｂは加算され、ｓｉｚｅによって除算され、又はｌｏｇ２＿ｓｉｚｅだけ右シフトされる。導出された予測ピクセルｖは、ｐｒｅｄの対応するメモリ領域に記憶される。ステップ９１７において、ｃｏｌがｓｉｚｅに等しくなるまで、ステップ９１４、ステップ９１８、ステップ９１９、及びステップ９１６が繰り返される。
【００４６】
ステップ９２０において、ｒｏｗが１だけインクリメントされる。ステップ９２１において、ｒｏｗがｓｉｚｅよりも小さいかどうかが判定される。ｒｏｗがｓｉｚｅよりも小さい限り、予測ブロック内の予測ピクセルを導出するために、ステップ９０２からのステップが繰り返される。ステップ９２１において、ｒｏｗがｓｉｚｅと等しくなったときに、フローは終了する。
【００４７】
上述したように、予測ブロック候補の数を増加させると、符号化効率が改善する。一方で、予測ブロック候補の数を増加させると、計算作業負荷も増加する。したがって、予測ブロック候補の数を増加させ、それによって、符号化効率を改善するために、予測ブロック候補を生成するプロセスを検討して、さらにプロセスの効率を改善する必要がある。図９に示されるプロセスを検討すると、２つの計算ボトルネックがあることが判る。第１の計算ボトルネックは、ループ内で繰り返される、ステップ９１４の比較及び分岐操作である。第２の計算ボトルネックは、やはりループ内で繰り返される、ステップ９１８の除算操作である。
【００４８】
昨今は、単一命令複数データ（ＳＩＭＤ）を使用して効率的なコンピューティングが可能である。ＳＩＭＤでは、複数の処理要素を備えるコンピュータが、複数のデータに対して同じ操作を同時に実行することが可能である。しかし、ＳＩＭＤアーキテクチャは、通常、ループ内における除算及び計算／分岐の実施をサポートしてない。したがって、ステップ９０７及びステップ９１０から開始するループは、ＳＩＭＤを用いて実施するのに十分なロバスト性を有するけれども、ループ内にはステップ９１４及びステップ９１８が含まれるので、図９に示されるプロセスを実施するために、ＳＩＭＤアーキテクチャを使用することができない。したがって、本発明の目的は、図９に示されるプロセスから計算上のボトルネックを取り除き、典型的なＳＩＤＭアーキテクチャが、図８に示される予測方向のすべてに沿って、並列処理を実施することを可能にする、簡素化されたイントラ予測を提供することである。
【００４９】
図１０は、図５のステップ５０４におけるプロセスを実施する際に、図９のプロセスを置き換えるように設計された、本発明の一実施形態による簡素化されたイントラ予測のプロセスを示すフローチャートである。図１０では、ステップ９００、９０１、９０２、９０４、９０５、９０６、９０７、９０８、９０９、９１０、９１１、９１２、９２０、９２１など、図９で実行されるのと同じプロセスステップは、図９で使用されるのと同じステップ番号によって識別される。これら共通のステップについての説明は、ここでは繰り返さない。ステップ１０００及びステップ１００１が、図１０のプロセスに特有のステップである。図９に示されるプロセスとの比較から明らかなように、図１０のプロセスは、ステップ９０３の比較ステップと、ａｎｇｌｅがゼロよりも小さいときに実行される、ステップ９０３から左に分岐したステップのすべてとを除去しており、それによって、ステップ９１４及びステップ９１８の計算上のボトルネックを除去している。
【００５０】
追加されたステップ１０００及びステップ１００１において、ａｎｇｌｅが−１以上であるかどうかが判定される。ａｎｇｌｅが−１以上である場合、予測ブロック内の予測ピクセルを生成するには、水平境界内に配置された参照ピクセルがあれば十分であり、垂直境界内の参照ピクセルは必要とされない。他方、ａｎｇｌｅが−１よりも小さい場合、予測ブロック内の予測ピクセルを生成するために、垂直境界内の参照ピクセルが必要とされる。ステップ１００１では、ｒｅｆＶに記憶されたピクセルの少なくともいくつかを使用して、ｒｅｆＨに記憶された参照ピクセルが負の方向に拡張される。図１１Ａ及び図１１Ｂは、ステップ１００１で実行されるｒｅｆＨの拡張を示す概略図である。図１１Ａでは、ｒｅｆＨに記憶される参照ピクセル１１０２は、対象ブロック１１０１の上に配置された水平境界からのものである。ｒｅｆＶに記憶される参照ピクセル１１０３は、対象ブロック１１０１の左に配置された垂直境界からのものである。図１１Ｂに示されるように、図１０のステップ１００１の後、ｒｅｆＶ内の参照ピクセルのいくつかが、ｒｅｆＨにコピーされ、ｒｅｆＨは、負の方向に拡張された拡張部１１０４を有する。
【００５１】
図１２は、ステップ１００１で実行されるプロセスの詳細を示すフローチャートである。ステップ１２０１において、カウンタｃｏｌが、−１に設定される。ｃｏｌは、ｒｅｆＨの拡張部のアドレスを識別するために使用される。ステップ１２０２において、ｒｅｆＨの拡張部にコピーされるｒｅｆＶ内の参照ピクセルは、
【数６】
2020099085.tif 000008
によって識別される。上の式における除算は整数除算であり、式の結果は整数である。この式は、図９に示されるステップ９１８のプロセスと同様に機能する。ステップ９１８において、ｐｏｓ２の整数値は、
【数７】
2020099085.tif 000009
によって計算される。ｌｏｇ２＿ｓｉｚｅ回の右シフトはｓｉｚｅによる除算と等価である。
【００５２】
ステップ１２０３において、ｃｏｌが１だけデクリメントされる。その後、ステップ１２０４において、ｃｏｌがａｎｇｌｅと等しいかどうかが判定される。ｃｏｌがａｎｇｌｅと等しくない場合、フローはステップ１２０２に戻る。ｃｏｌがａｎｇｌｅと等しくなるまで、ステップ１２０２及びステップ１２０３が繰り返される。したがって、参照ピクセルは、昇順、又は垂直境界の最上部から最下部に向かってｒｅｆＶから読み取られ、やはり降順、又は水平境界の右から左に向かってｒｅｆＨにコピーされる。また、ｒｅｆＶ内の必ずしもすべてのピクセルが、ｒｅｆＨにコピーされるわけではない。最上部から予測方向の交差部までの範囲内に配置された参照ピクセルだけが、ｒｅｆＶからｒｅｆＨにコピーされる。
【００５３】
図１０に戻ると、ステップ９０２から開始するプロセスは、図９からコピーしたものであり、図９のステップ９０３の比較ステップから右に分岐する予測ピクセルを生成するためのステップを含む。しかし、予測ピクセルを生成するための図１０のステップは、拡張されたｒｅｆＨ（図１１Ｂの部分１１０２と部分１１０４の総和）を使用し、一方、図９の対応するステップは、元のｒｅｆＨ（図１１Ａの部分１１０２）を使用することに留意されたい。ｒｅｆＨは負の方向に拡張されているので、図９においてステップ９０３から左に分岐する、ｒｅｆＶに記憶された参照ピクセルを使用するように特に設計された別個のイントラ予測操作は、ａｎｇｌｅの符号に係わらず必要とされない。
【００５４】
図１３は、ｒｅｆＶの参照ピクセルを使用して、ｒｅｆＨを拡張するためのプロセスの別の実施形態を示している。図１１Ａ、図１１Ｂ及び図１２に示されるプロセスは、図９に示されるステップ９１４及びステップ９１８のボトルネックステップを除去し、したがって、イントラ予測プロセスの効率を改善することが期待される。図１３に示されるプロセスは、参照ピクセルをｒｅｆＶからｒｅｆＨにコピーするためのループから、図１２のステップ１２０２で実行される除法演算を除去する。ループから除法演算を除去することによって、図１３に示されるプロセスは、イントラ予測プロセスの効率をさらに改善することが期待される。
【００５５】
図１３に示されるプロセスは、図１２のステップ１２０２をステップ１３０１及び１３０２で置き換える。ステップ１３０２は、参照ピクセルをｒｅｆＶからｒｅｆＨにコピーするためのループの内側にあり、一方、ステップ１３０１は、ループの外側にある。ステップ１３０１は、「ＩｎｖＡｎｇｌｅ」と呼ばれる新しいパラメータを導入する。ＩｎｖＡｎｇｌｅは、
【数８】
2020099085.tif 000010
によって定義される。２５６による乗算は、８回の左シフトと等価であり、「ｓｉｚｅ／ａｎｇｌｅ」の演算から得られるすべてのビットが、ｒｅｆＶの参照ピクセルを識別する計算に係わることを保証する。ステップ１３０２では、ｒｅｆＨの拡張部にコピーされるｒｅｆＶの参照ピクセルのアドレスが、
【数９】
2020099085.tif 000011
によって識別される。「ｃｏｌ×ＩｎｖＡｎｇｌｅ」の結果は、ステップ１３０１で実行された左シフト演算を取り消すために、８だけ右シフトされる。ステップ１３０２における右シフト演算は、「ｃｏｌ×ＩｎｖＡｎｇｌｅ」の結果の端数を切り捨てるように機能することに留意されたい。最も近い整数に丸めるために、右シフト演算を実行する前に、丸めオフセットである１２８を「ｃｏｌ×ＩｎｖＡｎｇｌｅ」の結果に加算することができる。数「２５６」は一例にすぎず、ステップ１３０１は、その数が「ｓｉｚｅ／ａｎｇｌｅ」の演算の結果であるすべてのビットを保存するのに十分な大きさである限り、別のオフセット数、好ましくは２の整数乗を採用できることに留意されたい。例えば、ステップ１３０１において、数は、２５６の代わりに、６４とすることができ、ステップ１３０２における右シフトの回数は、８回の代わりに、６回である。６４が採用された場合、丸めオフセットは３２としなければならない。
【００５６】
ステップ１３０１で実行される計算は、計算作業負荷をさらに低減させるために、検索操作で置き換えることができる。言い換えると、ａｎｇｌｅの値に関連付けられたＩｎｖＡｎｇｌｅの値を記憶するルックアップテーブルが準備される。以下に提供される表１は、ステップ１３０１における検索のための例示的なテーブルである。
【表１】
2020099085.tif 000012
上の表では、ｓｉｚｅは８であり、ａｎｇｌｅは４から８までの整数値を取ると仮定される。しかし、ｓｉｚｅは８に限定されず、４及び１６などの別の値を取ることもできる。また、ａｎｇｌｅは、上で定義されたように、固定小数点表現の分数とすることができる。
【００５７】
参照ピクセルが、図１２のステップ１２０２又は図１３のステップ１３０２において、ｒｅｆＶからｒｅｆＨにコピーされる場合、参照ピクセルは、予測ブロック内に存在し得るエイリアシングを低減させるために、ローパスフィルタを通過することができる。ローパスフィルタの強度は、ａｎｇｌｅの値に応じて様々とすることができる。例えば、ａｎｇｌｅが−ｓｉｚｅに等しい場合、弱いローパスフィルタリングを適用することができ、ａｎｇｌｅが−２に等しい場合、強いローパスフィルタリングを適用することができる。
【００５８】
上で説明したように、ｒｅｆＶの参照ピクセルの必ずしもすべてがｒｅｆＨにコピーされるわけではない。ｒｅｆＶの参照ピクセルの必ずしもすべてがコピーされるわけではないので、ピクセルがコピーされるときに、いくつかの情報が失われる。情報の喪失を緩和するため、ｒｅｆＨ及びｒｅｆＶが、先に符号化及び再構成されたブロックからのピクセルばかりでなく、２つの隣接するピクセルを補間することによって生成される、２つの隣接する再構成ピクセルの間の１つのピクセルも含むように、ｒｅｆＨ及びｒｅｆＶの参照ピクセルの解像度を２倍にすることができる。補間ピクセルを生成するために、２つの隣接するピクセルを単純に平均することができる。補間プロセスは、参照ピクセルが図９のステップ９００において読み取られたときに実行することができる。ｒｅｆＨ及びｒｅｆＶにおいてピクセルの解像度が２倍にされた場合、図９のステップ９０７、９１０、９１５、９１９、及び図１０のステップ１００１において実行される、ｒｅｆＨ及びｒｅｆＶに記憶される参照ピクセルのアドレスの識別をスケーリングする必要がある。例えば、ステップ９０７、９１０、９１５において実行される「ｉｎｔ＋ｃｏｌ＋１」は、「ｉｎｔ＋２×ｃｏｌ＋２」に変更する必要がある。ステップ９０７、９１０、９１５において実行される「ｉｎｔ＋ｃｏｌ＋２」は、「ｉｎｔ＋２×ｃｏｌ＋３」に変更する必要がある。ステップ９１９において実行される「ｉｎｔ２＋ｒｏｗ＋１」及び「ｉｎｔ２＋ｒｏｗ＋２」は、それぞれ「ｉｎｔ２＋２×ｒｏｗ＋２」及び「ｉｎｔ２＋２×ｒｏｗ＋３」に変更する必要がある。
【００５９】
別の実施形態では、図１２のステップ１２０２のプロセスは、コピープロセスをさらに簡略化するために、「ｒｅｆＨ［ｃｏｌ］←ｒｅｆＶ［−ｃｏｌ］」に単純に変更することができる。予測の精度を低下させるものの、この実施形態は、イントラ予測操作を最も簡素化することができる。
【００６０】
図１１Ｂは、ｒｅｆＨに追加される拡張部１１０４を示している。拡張部１１０４は、ｒｅｆＶからの参照ピクセルを用いて形成する必要はない。拡張部１１０４は、拡張部１１０４の位置と空間的に対応する、先に復号されたブロックの領域に属するピクセルを用いて形成することができる。図１１Ｂでは、負の方向に拡張されるので、拡張ｒｅｆＨ（部分１１０２及び部分１１０４）は、（−ｓｉｚｅ＋１）から（２×ｓｉｚｅ）までの範囲にわたる。拡張ｒｅｆＨの範囲は、拡張ｒｅｆＨ内の参照ピクセルをアドレッシングするときに、適切なオフセットを追加することによって、０から（３×ｓｉｚｅ−１）までの範囲に再スケーリングすることができる。ｒｅｆＶの範囲を再スケーリングする場合も同じことが言える。
【００６１】
別の実施形態では、ａｎｇｌｅの範囲限界は、自由に選択することができる。上述の実施形態では、ａｎｇｌｅは−ｓｉｚｅからｓｉｚｅまでの範囲内（−ｓｉｚｅ≦ａｎｇｌｅ≦ｓｉｚｅ）の値を取ると仮定される。言い換えると、上述の実施形態では、ａｎｇｌｅの範囲限界は、対象ブロックのｓｉｚｅを用いて定義される。ｌｏｇ２＿ｒａｎｇｅｌｉｍｉｔが正の整数であり、式「ｒａｎｇｅｌｉｍｉｔ＝１＜＜ｌｏｇ２＿ｒａｎｇｅｌｉｍｉｔ」が成り立つように、範囲限界を２の整数乗を用いて定義することがやはり好ましいが、ａｎｇｌｅの範囲限界は、対象ブロックのｓｉｚｅとは独立に定義できることに留意されたい。ｒａｎｇｅｌｉｍｉｔのための適切な大きさの数を選択することによって、多数の予測方向を確立し、十分に広い角度間隔を取るａｎｇｌｅの値によって表すことができる。
【００６２】
ａｎｇｌｅの範囲限界が、対象ブロックのｓｉｚｅとは独立に定義される場合、ステップ９０９、９１２、９１７、９２１を除き、図９及び図１０に現れるｓｉｚｅは、ｒａｎｇｅｌｉｍｉｔで置き換える必要があり、ｌｏｇ２＿ｓｉｚｅは、ｌｏｇ２＿ｒａｎｇｅｌｉｍｉｔで置き換える必要がある。図１０のステップ１０００において実行される比較「ａｎｇｌｅ≧−１」も、「ａｎｇｌｅ×ｓｉｚｅ／ｒａｎｇｅｌｉｍｉｔ≧−１」又は「ａｎｇｌｅ×ｓｉｚｅ≧−ｒａｎｇｅｌｉｍｉｔ」で置き換える必要がある。さらに、図１２及び図１３のステップ１２０２及びステップ１３０１に現れるｓｉｚｅは、ｒａｎｇｅｌｉｍｉｔで置き換える必要があり、ステップ１２０４において実行される比較「ｃｏｌ＝ａｎｇｌｅ？」は、「ｃｏｌ＝ａｎｇｌｅ×ｓｉｚｅ／ｒａｎｇｅｌｉｍｉｔ？」で置き換える必要がある。
【００６３】
ａｎｇｌｅの範囲限界としてｒａｎｇｅｌｉｍｉｔが導入される場合、（上で提供された）表１は、以下のように変更することができる。
【表２】
2020099085.tif 000013
表２では、ｒａｎｇｅｌｉｍｉｔは、３２に設定される。ａｎｇｌｅ＊は、「ｒａｎｇｅｌｉｍｉｔ×ｔａｎ（（π／４）×（ａｎｇｌｅ／８））」の整数近似に等しく、ここで、ａｎｇｌｅ＝４、５、６、７、８である。ＩｎｖＡｎｇｌｅは、「２５６×ｒａｎｇｅｌｉｍｉｔ／ａｎｇｌｅ＊」に等しい。表２の値はすべて、切り上げによって導出される整数である。切り上げを行う代わりに、数値の端数を切り捨てることもできる。以下で提供される表３では、ＩｎｖＡｎｇｌｅは、「３２×ｒａｎｇｅｌｉｍｉｔ／ａｎｇｌｅ＊」に等しい。「２５６」の代わりに「３２」が使用されるので、予測の精度は、表２の精度よりも必然的に低い。
【表３】
2020099085.tif 000014
【００６４】
図１４は、図１０に示されるプロセスをさらに簡略化する別の実施形態を示すフローチャートである。参照ピクセルをｒｅｆＶからｒｅｆＨにコピーする図１０に示されるプロセスは、フローがメイン予測ループに入る前に実行されるが、図１４に示されるコピープロセスは、メイン予測ループの内側で実行される。また、図１４に示されるプロセスでは、変数ＩｎｖＡｎｇｌｅが除去されている。図１４に示されるステップ９００、９０２、９２１は、図１０の対応するステップからのものである。
【００６５】
ステップ１４０１において、カウンタｌａｓｔＩｎｔが、−１に初期化される。ｌａｓｔＩｎｔは、ｒｅｆＨに追加された最終ピクセルのインデックスを表す。ステップ９０２において、ｐｏｓが、ａｎｇｌｅ×（ｒｏｗ＋１）によって計算される。上で説明したように、ｐｏｓは、境界とａｎｇｌｅによって表される予測方向との交差の位置を識別する。図９の文脈では、ステップ９０２は、水平境界とａｎｇｌｅによって表される予測方向との交差の位置を識別するｐｏｓを生成する。さらに、ステップ９０２では、ｐｏｓの整数部がｉｎｔに記憶され、ｐｏｓの小数部が「ｆｒａｃ」に記憶される。ステップ１４０２において、ｉｎｔがｌａｓｔＩｎｔよりも小さいかどうかが判定される。ｉｎｔがｌａｓｔＩｎｔよりも小さい場合、ｒｏｗによって識別されるｒｅｆＶの参照ピクセルが、ｒｅｆＨの「ｉｎｔ＋１」によって識別されるアドレスにコピーされる。ステップ１４０４は、図９及び図１０に示されるステップ９０４、９０５、９０６、９０７、９０８、９０９、９１０、９１１、９１２から成り、それらの説明はここでは繰り返さない。ステップ１４０５において、ｉｎｔがｌａｓｔＩｎｔにコピーされる。ｉｎｔをｌａｓｔＩｎｔにコピーする操作は、ステップ１４０５の代わりに、ステップ１４０３において実行することができる。
【００６６】
ステップ１４０３におけるコピー操作は、ステップ１２０２及びステップ１３０２においてコピーされるのと同じピクセルのコピーをもたらし、これらのステップでは、切り捨てが使用される。ステップ１４０３は、ステップ９０２において計算された小数部ｆｒａｃが、ｒａｎｇｅｌｉｍｉｔ＋（ａｎｇｌｅ＞＞１）によって定義されるオフセットよりも大きいという条件が成り立つ場合に、ステップ１４０３において「ｒｏｗ」の代わりに「ｒｏｗ＋１」を使用することによって、最も近い整数に丸めるように変更することができる。ａｎｇｌｅは−ｖｅであり、ｆｒａｃは＋ｖｅであることに留意されたい。「ｒｏｗ＋１」の使用は、切り上げをもたらす。ｒｏｗを条件付きで１だけインクリメントするため、３２ビット算術では、「ｏｆｆｓｅｔ−ｆｒａｃ」の右シフトは、ｆｒａｃがｏｆｆｓｅｔよりも大きい場合は、−１をもたらし、それ以外の場合は、０をもたらすことを前提して、ステップ１４０３において実行されるプロセスは、ｒｅｆＨ［ｉｎｔ＋１］←ｒｅｆＶ［ｒｏｗ−（（ｏｆｆｓｅｔ−ｆｒａｃ）＞＞３１）］に変更される。したがって、アドレス識別子「ｒｏｗ−（（ｏｆｆｓｅｔ−ｆｒａｃ）＞＞３１）」は、ｆｒａｃがｏｆｆｓｅｔよりも大きい場合は、「ｒｏｗ＋１」になり、それ以外の場合は、「ｒｏｗ」になる。ｏｆｆｓｅｔがｒａｎｇｅｌｉｍｉｔになるように設定される場合、「ｏｆｆｓｅｔ−ｆｒａｃ」は常に正であり、したがって、丸めは行われない。
【００６７】
図１４に示されるプロセスを実施する、Ｃ＋＋プログラミング言語で開発したソースコードが、以下に示されている。ソースコードは、http://hevc.kw.bbc.co.uk/svn/jctvc.al24/tags/0.7から入手可能なＪＣＴ−ＶＣによって開発されたＴＭｕＣ  ０．７ソフトウェアの部分であるTComPrediction.cppファイル内に見出される、TComPrediction::xPredIntraAng関数から変更したものである。
【数１０】
2020099085.tif 000015
【数１１】
2020099085.tif 000016
【数１２】
2020099085.tif 000017
【数１３】
2020099085.tif 000018
【数１４】
2020099085.tif 000019
【００６８】
上述の説明を読んだ後では、本発明の多くの代替形態及び変更形態が、当業者に明白になることは疑いないが、例によって示され、説明された特定の実施形態はいずれも、限定的なものと見なされることは決して意図していない。したがって、様々な実施形態の細部についての言及は、特許請求の範囲を限定することを意図しておらず、特許請求の範囲それ自体が、本発明に必須と見なされる特徴をもっぱら列挙する。
【図１】
2020099085.tif 000020
【図２】
2020099085.tif 000021
【図３】
2020099085.tif 000022
【図４】
2020099085.tif 000023
【図５】
2020099085.tif 000024
【図６】
2020099085.tif 000025
【図７】
2020099085.tif 000026
【図８】
2020099085.tif 000027
【図９】
2020099085.tif 000028
【図１０】
2020099085.tif 000029
【図１１Ａ】
2020099085.tif 000030
【図１１Ｂ】
2020099085.tif 000031
【図１２】
2020099085.tif 000032
【図１３】
2020099085.tif 000033
【図１４】
2020099085.tif 000034