Beste Bildkomprimierung für niedrige Bittiefe, Graustufenbilder?

1745
bdoyle159

Ich versuche, viele (bis zu 2.500) kleine (300x200 px) Graustufenbilder zu komprimieren, damit die Dateigröße so klein wie möglich ist. Derzeit ist meine Bittiefe 4 (16 Graustufen). Die Bildquelle ist eine Überwachungskamera an einem entfernten Ort, und wir müssen Bilder über eine sehr langsame Satellitenverbindung senden. Ich verwende ImageMagick, um Bilder in unkomprimierte Graustufen-TIFs mit einer Tiefe von 4 Bit zu konvertieren. Die unkomprimierte Größe jedes Bildes beträgt etwa 41 KB. Ich bin in der Lage, 1.500 dieser Bilder mit 7zip auf 3 MB zu komprimieren, was etwa einer Reduzierung von 95% entspricht. Ich habe auch mit Einstellungen auf zpaq herumgespielt, kann aber immer noch nicht kleiner als 3 MB sein. Ich weiß, dass dies klein erscheint, aber die Satellitenverbindung ist wieder mit kbps Geschwindigkeit und wir zahlen pro Minute für die Sendezeit.

Da es sich um eine Überwachungskamera handelt, ändern sich die Bilder nicht viel zwischen Bildern. Daher habe ich auch versucht, ffmpeg in ein H.264-Video zu konvertieren. Die Dateigröße ist jedoch noch größer (ich glaube, das liegt daran, dass H.264 dies nicht unterstützt Graustufen, RGB ist also noch vorhanden).

Gibt es bessere Einstellungen für zpaq, die bessere Ergebnisse oder andere Ideen liefern könnten?

Danke im Voraus

2
Welchen Befehl haben Sie mit ffmpeg versucht? Gyan vor 6 Jahren 0
`ffmpeg -i img% 04d.tif -vf fps = 30 -c: v libx264 -pix_fmt yuv420p out.mp4` bdoyle159 vor 6 Jahren 0

1 Antwort auf die Frage

0
Marco

Es ist oft besser, den Algorithmus wählen zu lassen, wie er am besten komprimiert. Die indizierte Farbkomprimierung ist für scharfkantige Bilder geeignet. Fotografische Bilder werden durch Standards wie JPEG und MPEG besser komprimiert.

Ich habe die H.264-Komprimierung mit FFmpeg und einem von mir erstellten Video des Swimmingpools getestet. Zuerst habe ich das Video in Graustufen, 300x200 Pixel und 2 Bilder pro Sekunde konvertiert. Also habe ich 00:12:30 des Videos verwendet, um 1.500 Frames zu erhalten. Ich habe folgendes erhalten:

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

Dateigröße: 5,7 MB
Bitrate: 60,7 Kbps
Beispielframe:

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

Dateigröße: 1,6 MB
Bitrate: 17,2 Kbps
Beispielbild:

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

Dateigröße: 768,5 kB
Bitrate: 7998 bps
Beispielframe:

Vielen Dank! Ich ging mit einem ähnlichen Ansatz vor, konvertierte die Bilder jedoch zunächst mit Imagemagick in 8-Bit-Graustufen und packte sie dann mit ffmpeg in ein Video. Ich habe nicht die Befehle, die ich vor mir verwendet habe, aber ich habe eine 2-Pass-Kodierung verwendet, um das Video mit 25 Kbit / s zu kodieren. Ich bin mit den Ergebnissen von rund 200 KB pro Video zufrieden. bdoyle159 vor 6 Jahren 0