1

私は現在、最新の画像およびビデオ圧縮コーデックを拡張してパフォーマンスを向上させることに取り組んでいる大学院生です。現在、 BPG (Better Portable Graphics) と x265 (HEVC/H.265 実装) の修正に取り組んでいます。

私の現在のアプローチでは、追加のイントラ予測モードを追加して、上の CTU (コーディング ツリー ユニット) の 1 ピクセル行と CTU の左の 1 ピクセル列よりも多くの情報を利用できます。

私は自分のアプローチを実装し、イントラ予測モードを「35」と名付けました (BPG と hevc は 0 ~ 34 のモードを使用します)。現在のアプローチでは、イントラ予測モードを使用するたびに、2 つの追加の数値 (12 ビット) を格納する必要があります。これらの 2 つの数値をビットストリームに埋め込む (エンコード) ときと、ビットストリームから取得する (デコードする) ときに問題に直面しています。

BPG で提供される x265 パッケージのentropy.cppの関数codeIntraDirLumaAngを変更して、新しいイントラ予測モード 35 に遭遇したときに 2 つの追加の数値を書き込むようにしました。

私の一連の質問は次のとおりです。

1) より多くの予測モードがあり、さらに増加すると予想される場合、次のコード行を変更する必要があります。

encodeBinsEP(dir[j], 5); 

することが

encodeBinsEP(dir[j], 6);

2) デコーダーを実行すると、最初にモード 35 を格納する必要がある場所のインスタンスに遭遇しました。それを読み取ることができず、代わりにモード 26 を読み取ります。これは、hevc での Intra-Luma Pred-Dir の導出手順が原因だと思いますか? (正しく読み取れるように、新しいイントラ予測モードをビットストリームに正しく埋め込む方法についての入力はありますか)?

3) エンコードする 2 つの追加の数値の CABAC 状態で何かを行う必要がありますか? この新しい種類の情報を処理するための追加のコンテキストを作成しました。さらに定義した NUM_STATES_CTX 変数の値を設定する方法と、これら 2 つの数値を最適にエンコードするために CABAC を使用する方法についてのポインタをいただければ幸いです。

4

0 に答える 0