/ / Kann ich eine bestimmte Bildzeile mit libjpeg lesen? - c, jpeg, libjpeg

Kann ich eine bestimmte Bildzeile mit libjpeg lesen? - c, jpeg, libjpeg

Mit libjpeg möchte ich, wenn möglich, eine Zeile aus der Mitte eines JPEG-Bildes lesen, ohne alle vorhergehenden Zeilen zu lesen. Kann das gemacht werden?

Antworten:

2 für die Antwort № 1

Die Antwort ist mit ziemlicher Sicherheit "Ja, das kannst du, aber es wird mehr Aufwand erfordern als du willst".

Ein JPEG-Bild ist ein Strom von Markern, die enthaltenentweder Informationen global für das gesamte komprimierte Bild oder Informationen in Bezug auf bestimmte Teile des Bildes. Die Komprimierung funktioniert, indem das Bild in Farbebenen zerlegt wird, wobei möglicherweise Farbräume auf einen Bereich geändert werden, in dem die Farbinformation heruntergesampelt werden kann, und innerhalb jeder Ebene, die auf 8 · 8 Pixelblöcken arbeitet.

Zum Beispiel ist es möglich, a zu drehenkomprimiertes Bild um 90 Grad, wenn es so dimensioniert ist, dass es nur aus ganzen Blöcken besteht, indem nur die Basisblöcke und die Koeffizienten innerhalb jedes Blocks transponiert werden; d.h. ohne Dekomprimieren, Drehen des realen Bildes und erneutes Komprimieren.

In Anbetracht dessen würde Ihr Ansatz sein, dieMarkerstream auf dem Weg in die Bibliothek, wobei alle für das Bild globalen Marker übergeben werden, alle auf die Bildgröße bezogenen Marker geändert werden und Marker mit Koeffizienten, die außerhalb des Beschneidungsrechtecks ​​liegen, gelöscht werden.

Sie müssen das Ergebnis wahrscheinlich weiter zuschneiden, wenn die Einschränkung des Zuschneidens auf vollständige Basisblöcke zu grob ist.

Was mir nicht klar ist, ist, ob es welche gibtechter Gewinn über die Alternative, die Ergebnisse zu beschneiden, wie es aus der Bibliothek kommt. Die Bibliothek ist in hohem Maße konfigurierbar, sodass Sie eine unkomprimierte Datenverbraucherfunktion bereitstellen können, die alle Pixel außerhalb des Beschneidungsrechtecks ​​verwirft und nur die Pixel speichert, die Sie behalten möchten.


Verwandte Fragen


Kommentare (0)

Einen Kommentar hinzufügen