Zajmuję się problemem zmniejszenia przestrzeni dyskowej podczas przechowywania razem wielu obrazów JPEG jako jednego większego obrazu. Podstawową intuicją jest to, że obrazy mają pewne podobieństwa (takie jak te wykonane w tym samym miejscu lub w tym samym punkcie czasowym) i czy możemy wykorzystać to podobieństwo, aby zaoszczędzić miejsce?Kompresja obrazu JPEG
Ogólny przepływ jest: wejściowe JPG
Obrazy -> Każdy obraz przekształcony RGB
płytki obraz -> Reorganizacja podobnych RGB
płytki razem -> Ponownie przekształcić do formatu JPG
. Naturalnie, podczas pobierania obrazów, będziemy musieli wykonać proces reverse.
Użycie współczynnika DC komponentu Y jako miary podobieństwa w przypadku reorganizacji płytek pozwoliło uzyskać około 8% oszczędności miejsca na 10 obrazów. Kiedy robię to dla 100 zdjęć, oszczędności są zmniejszone do ~ 3%.
Jak uzyskać oszczędności płytek po reorganizacji - czyli jaka część procesu kodowania JPEG wykorzystuje tego obrazu płytek reorganizacji?
Zamiast współczynnika stałego składnika Y jest, są tam jakieś inne metryki można myśleć, że będą lepiej wykorzystywane przez kodowanie JPEG
Revised:
Czy istnieje jakiś inne format obrazu poza JPG, który może lepiej wykorzystać to podobieństwo podobieństwo podczas agregowania wielu obrazów? Na przykład PNG?
Dzięki, to ma wiele sensu! Używam libjpeg do kodowania i dekodowania. Ponieważ JPEG wykonuje DCT w obrębie makrobloków 8x8, podobieństwo pomiędzy płytkami (większe niż makrobloki) prawdopodobnie niewiele pomaga. Sądzę jednak, że współczynniki DCT sąsiednich makrobloków są względnie zakodowane i można to w pewnym stopniu poprawić poprzez reorganizację tej płytki. Poprawiłem moje pytanie - proszę spojrzeć. – user655617
Cieszę się, że mogę pomóc w wyjaśnieniu rzeczy. Tak, libjpeg jest referencyjną implementacją JFIF standardu JPEG. Nie pamiętam współczynników DCT z wykorzystaniem kodowania delta (wśród sąsiadujących makrobloków). AFAIR, każdy makroblok staje się pojedynczą macierzą współczynników 8x8, która jest następnie dziesiątkowana (podzielona w celu zmniejszenia liczby bitów potrzebnych do ich przechowywania - i tu dochodzi "strata" w stratnej kompresji) i odczytywana w zig -zag moda. Ta kolejność daje długie przebiegi 0s, które są efektywnie kompresowane poprzez kodowanie długości (zamiast 17 zer, przechowujemy 17, 0). –