2016-07-19 10 views
2

のFPGA実装では、標準quantisationおよびhuffman tablesを使用しています。FPGA上のMotion JPEG用のハフマンテーブルの生成

質問:

は、我々はその場でハフマンテーブルを生成することはできますか。

フレームが入力として与えられると、FPGAのブロックは、frameの対応するhuffman tablesを生成する必要があります。

blockは、いくつかの今後のフレームが同様のものになるため、いつかリラックスすることができます。

私はすでにvitter algorithm(動的ハフマン符号化)を行っています。しかし、それがハードウェア効率的であるとは思わない。

すでにFPGA上に実装されている人や、実装している人から、もっと多くのアイデアが得られれば助かります。このような

何か:事前に

tables = huffmantables(frame) 
// wait for some frames 

感謝!!

答えて

0

私のアドバイスは:あなたはそうではありません。代わりに標準的なハフマンテーブルを使用してください。最適ではないかもしれませんが、それほど悪くはありません。

ハフマンテーブルの作成は、プロセッサのタスクです。ハードウェアに優しいアルゴリズムが存在しない限り、ハフマンテーブルを構築するためにソフトコアのマイクロコントローラを配置することが最も効率的な実装である可能性があります。

本当に必要かどうかを確認するためのテストを行うことをおすすめします。最適なテーブルを使用することから得られるPSNRのdBはどれくらいですか?それとも圧縮率はいくらですか?私は、標準的なテーブルがジェネリックMJPEGのために十分であり、複雑な最適なものよりも小さなコアを選択したことがわかりました。

+0

私は標準のテーブルを使用しており、圧縮率は良好です。私はいくつかの研究論文を読んで、動的テーブルを使って圧縮率を2倍にできることを示唆しています。私は最適なテーブルをまだ使用していません。 あなたのアドバイスとして、私はまず '最適化されたハフマンテーブル 'を試し、'圧縮率 'をチェックします。 「Cr」と「Y」のすべての「ハフマンROM」のハードコーディングが本当に好きではありません。標準データは、各画素値に対して割り当てられた確率を提供しない。 ピクセルの確率でリソースを共有すると非常に役に立ちます。私はそれらをどこにも見つけません。 – vikram9866

+1

エンコードする内容と量子化テーブルによって異なります。暗いイメージをエンコードする場合、Yの値が低いほど確率が高くなります。利用率が一定の場合は、サンプルビデオを分析してください。そうでなければ、私はJPEGやMPEG2のような別のビデオ規格の標準テーブルを使用します。プロフェッショナルなビデオフォーマットの中には、ハーフマンテーブル(DNxHDのようなもの)を固定しているものもあります。あなたはもっとうまくいくかもしれませんが、適応型エントロピーコーディングを使った新しいフォーマットは複雑さを減らしてより良い仕事をします...それを行う前に本当に価値があることを確かめてください!単純にする! –

関連する問題