Kompresowanie wielu podobnych dużych obrazów?

17

Mam do czynienia z dużym archiwum zdjęć satelitarnych Ziemi, z których każde zostało wykonane w odległości 15 minut na tym samym obszarze, dlatego są do siebie bardzo podobne. Dwa ciągłe wyglądają tak: wprowadź opis zdjęcia tutaj

Algorytmy wideo bardzo dobrze kompresują wiele podobnych obrazów. Jednak te obrazy są zbyt duże dla wideo (10848x10848), a użycie koderów wideo usunęłoby metadane obrazów, więc wyodrębnienie ich i przywrócenie metadanych byłoby kłopotliwe, nawet jeśli dostanę koder wideo do pracy z tak dużymi obrazami.

Aby wykonać kilka testów, zmniejszyłem 96 zdjęć jednego dnia do 1080x1080 pikseli, łącznie 40,1 MB, i wypróbowałem inną kompresję z następującymi wynikami:

  1. zip: 39,8 MB
  2. rar: 39,8 MB
  3. 7z: 39,6 MB
  4. tar.bz2: 39,7 MB
  5. zpaq v7.14: 38,3 MB
  6. fp8 v2: 32,5 MB
  7. paq8pxd v45: 30,9 MB

Trzy ostatnie mają znacznie lepiej wykorzystać kontekst i rzeczywiście działać lepiej niż tradycyjna kompresja, ale współczynnik kompresji jest wciąż dość słaby w porównaniu z wideo mp4, które może zabrać go do 15 MB lub nawet mniej, zachowując jakość obrazu.

Jednak żaden z algorytmów używanych przez te narzędzia do kompresji nie wydaje się wykorzystywać podobieństwa obrazów, podobnie jak kompresja wideo. W rzeczywistości, używając packJPG , które kompresują każdy obraz osobno, cały zestaw spada do 32,9 MB, całkiem blisko fp8 i paq8pxd, ale bez korzystania z podobieństw między obrazami (ponieważ każdy obraz jest kompresowany indywidualnie).

W innym eksperymencie obliczyłem w Matlabie różnicę między dwoma obrazkami powyżej i wygląda to tak:

wprowadź opis zdjęcia tutaj

Kompresja obu oryginalnych obrazów (219,5 + 217,0 = 436,5 kB łącznie) za pomocą fp8 sprowadza je do 350,0 kB (80%), ale kompresja jednego z nich i obrazu różnicy (jako plik jpg o tej samej jakości i przy użyciu 122,5 kB), powoduje w pliku 270,8 kB (62%), więc ponownie (jak wynika z porównania mp4 i packJPG), fp8 nie wydaje się zbytnio wykorzystywać podobieństw. Nawet skompresowany za pomocą rar, jeden obraz plus różnica są lepsze niż fp8 na oryginalnych obrazach. W takim przypadku rar obniża go do 333,6 kB (76%).

Myślę, że musi istnieć dobre rozwiązanie kompresji dla tego problemu, ponieważ mogę przewidzieć wiele aplikacji. Oprócz mojego szczególnego przypadku, wydaje mi się, że wielu profesjonalnych fotografów ma wiele podobnych zdjęć z powodu zdjęć sekwencyjnych, zdjęć poklatkowych itp. Wszystkie przypadki, które skorzystałyby na takiej kompresji.

Ponadto nie wymagam bezstratnej kompresji, przynajmniej nie dla danych obrazu (metadane muszą zostać zachowane).

Więc ... Czy istnieje metoda kompresji, która wykorzystuje podobieństwa między skompresowanymi obrazami?

Dwa obrazy powyższego testu można pobrać tutaj , a 96 zdjęć z pierwszego testu tutaj .

Camilo Rada
źródło
1
Doceniamy więcej opinii od osób, które wstrzymały pytanie. Uważam, że pytanie jest wystarczająco ogólne i można na nie odpowiedzieć bez wskazywania na konkretny produkt, ale na metodę, algorytm lub technikę.
Camilo Rada,
1
Galeria orzechowego (nie głosować do końca), ale Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?i Is there a updated/maintained version of the fp8 utility?prawdopodobnie linie obrażania. Porównaj to z np Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?. Ostrość jest prawdopodobnie znacznie inna. Pytanie o oprogramowanie jest prawdopodobnie i tak zbędne, ponieważ konkretne oprogramowanie (jeśli dotyczy) prawie na pewno zostanie wymienione w każdej udzielonej odpowiedzi.
Anaksunaman,
1
Zgadzam się. I zrobione. Powodzenia. =)
Anaksunaman,
2
„Za duży na wideo”? Nie jestem pewien, czy się z tym zgadzam. Niektóre kodeki mają bardzo wysokie lub nieograniczone maksymalne rozdzielczości. Nie próbujesz zbudować oglądalnego filmu, po prostu skompresuj niektóre obrazy statyczne. Czy możesz zakodować metadane jako napisy lub inne dane?
benshepherd
1
Aby dodać do listy aplikacji, potrzebowałbym tego do przechowywania oryginalnych ramek projektu poklatkowego, które otrzymają dodatkowe części w przyszłości. Obecne obrazy JPG o rozdzielczości 10 000 x 4K zajmują 25 GB miejsca, a złożony z nich MP4 zajmuje tylko 85 MB.
Akseli Palén

Odpowiedzi:

6

Nie znam konkretnego oprogramowania, które to robi, ale są pewne badania na ten temat. Na przykład zobacz artykuły Kompresowanie zestawów podobnych obrazów Samy Ait-Aoudii, Abdelhalima Gabisa, Aminy Naimi i Kompresowanie zestawów podobnych obrazów za pomocą hybrydowego modelu kompresji Jiann-Der Lee, Shu-Yen Wan, Chemg-Min Ma, Rui -Feng Wu.

Na bardziej praktycznym poziomie możesz rozszerzyć technikę odejmowania, na przykład pisząc skrypt, który używa ImageMagick do obliczenia różnicy między kolejnymi obrazami, zapisując wynik jako plik JPEG (lub skompresowany plik PNG, jeśli chcesz, aby był bezstratny). Otrzymasz jeden obraz podstawowy i zestaw skompresowanych obrazów „delta”, które powinny być znacznie mniejsze. Aby obliczyć różnicę za pomocą ImageMagick:

convert image2.png image1.png -compose MinusSrc -composite -depth 24 -define png:compression-filter=2 -define png:compression-level=9 -define png:compression-strategy=1 difference-2-1.png

Aby ponownie obliczyć, dodając ponownie:

convert image1.png difference-2-1.png -compose Plus -composite image2-reconstructed.png

(Możesz zrobić to samo za pomocą jpg zamiast i zaoszczędzić dużo miejsca).

Marco Pantaleoni
źródło
Wygląda na to, że nie zarządza to przepełnieniem. Mam kilka podobnych obrazów w bardzo różnych kolorach, a zatem mam trochę artefaktów na ponownie obliczonych obrazach, albo używając Minus / Plus lub Odejmij / Dodaj.
Adrien Clerc