映像圧縮技術 H265| HEVC のReference Codeで、エンコードをしてみます。
Refernceo Codeは、H264|AVCの規格を作った団体が作ったエンコーダ/デコーダになります。
ソフトウェアは、以下のサイトで入手可能です。
https://hevc.hhi.fraunhofer.de/
Refernceo Codeは、H264|AVCの規格を作った団体が作ったエンコーダ/デコーダになります。
ソフトウェアは、以下のサイトで入手可能です。
https://hevc.hhi.fraunhofer.de/
HEVCのソフトウェアの場所になります。
Tagのバージョンで確認したいので、
のバージョンで評価してみます。
ソースコードをダウンロードしてきます。
svn co https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-16.9/
次にビルドします。
cd HM-16.9/build/linux
make
でビルドができます。ビルドできるとbinのディレクトリにエンコーダとデコーダができます。
ls
TAppDecoderStatic TAppEncoderStatic
次にエンコードするための、データを用意する。
のサイトのsccoerのCIFのデータを使用する。
エンコーダが読み取れるデータ形式のyuv420pの形式で変更する。fffmpegを使用する。
./ffmpeg -i soccer_cif.y4m -f rawvideo -pix_fmt yuv420p -r 29.97 soccer.yuv
できたsccoer.yuvをエンコードする。
./TAppEncoderStatic -i ./soccer_cif.yuv -wdt 352 -hgt 288 --InputBitDepth=8 --OutputBitDepth=8 -fr 29.97 -f 300 -c ../cfg/encoder_randomaccess_main.cfg
結果、生成されるファイルは、encoder_randomaccess_main.cfgに書かれているstr.binというHEVCのファイルが生成されました。
次にデコードを行います。
./TAppDecoderStatic -b str.bin -o soccer_output.yuv
デコードは300フレームだと1秒程度で終わります。デコードした結果は、soccer_output.yuvとして生成される。画質の評価は、ffmpegを使用する。エンコード前の画像とエンコード後の画像をPSNRで測定する。
./ffmpeg -f rawvideo -vcodec rawvideo -s 352x288 -pix_fmt yuv420p -i soccer_cif.yuv -f rawvideo -vcodec rawvideo -s 352x288 -pix_fmt yuv420p -i soccer_output.yuv -filter_complex psnr -an -f null -
PSNRの結果になります。PSNRは数字が大きい方が画像が良いです。32ぐらいであればほぼ圧縮したことに気づきそうです。
PSNR y:32.967432 u:41.087718 v:42.676378 average:34.453736 min:32.372377 max:39.883238
ファイルサイズは、45619200 byte → 248766 byteと大幅に削減されています。
1枚目だけ、画像を確認します。
オリジナル画像
H265|HEvcエンコード後の画像
若干圧縮されているのがわかりそうです。
自分でビルドしたTAppEncoderStatic とTAppDecoderStatic添付します。Linux上で動作すると思います。
コメント
コメントを投稿