web-dev-qa-db-ja.com

低ビット深度のグレースケール画像に最適な画像圧縮?

ファイルサイズができるだけ小さくなるように、多くの(最大2,500)小さい(300x200ピクセル)グレースケール画像を圧縮しようとしています。現在、私のビット深度は4(16シェードのグレー)です。画像ソースは遠隔地にある監視カメラであり、非常に遅い衛星接続を介して画像を送信する必要があります。 ImageMagickを使用して、画像を4ビット深度の非圧縮グレースケールTIFに変換しています。各画像の非圧縮サイズは約41KBです。これらの画像のうち1,500枚を7Zipで3MBに圧縮できます。これは、約95%の削減です。 zpaqの設定も試してみましたが、それでも3MBより小さくすることはできません。これは小さいように思えますが、衛星接続はkbpsの速度であり、放送時間は分単位で支払います。

これは監視カメラなので、画像間で画像があまり変わらないので、ffmpegでH.264ビデオに変換してみましたが、ファイルサイズがさらに大きくなっています(H.264がサポートしていないためだと思います)グレースケールなので、RGBはまだ存在します)。

より良い結果をもたらす可能性のあるzpaqのより良い設定、または他のアイデアはありますか?

前もって感謝します

3
bdoyle159

多くの場合、圧縮するための最良の方法をアルゴリズムに選択させる方がよいでしょう。 インデックスカラー圧縮 シャープなエッジの画像に適しています。写真画像は、JPEGやMPEGなどの標準によってより適切に圧縮されます。

FFmpegと作成したプールのビデオを使用してH.264圧縮をテストしました。まず、ビデオをグレースケール、300x200ピクセル、2fpsに変換しました。そこで、ビデオの00:12:30を使用して1,500フレームを取得しました。私は以下を入手しました:

ffmpeg -i input.mp4 -c:v libx264 -crf 30 crf30.mp4

ファイルサイズ:5.7 MB
ビットレート:60.7 Kbps
フレーム例:
enter image description here

ffmpeg -i input.mp4 -c:v libx264 -crf 40 crf40.mp4

ファイルサイズ:1.6 MB
ビットレート:17.2 Kbps
フレーム例:
enter image description here

ffmpeg -i input.mp4 -c:v libx264 -crf 45 crf45.mp4

ファイルサイズ:768.5 kB
ビットレート:7998 bps
フレーム例:
enter image description here

2
Marco