Progresywna jakość JPEG w porównaniu do normalnego JPEG?

10

Próbuję przekonwertować niektóre pliki BMP do formatu JPEG o najwyższej jakości (Q = 100), dopóki nie uświadomię sobie, że jest tutaj opcja „Progresywna”.

Jeden z moich plików BMP ma 2,9 MB. Po konwersji do formatu JPEG bez progresywnego nowy rozmiar pliku to 338,2 KB, a przy progresywnym nowy rozmiar pliku spada tylko do 283,2 KB.

Czytałem artykuł w Wikipedii o tym, do czego służy ten progresywny JPEG, ale moje obawy dotyczą porównania do normalnego JPEG, jakość progresywnego JPEG pogorszy się, czy będą one takie same?

Teiv
źródło
Wątpię, by wydajność była problemem, ale dodam do problemu ładowania strony: chociaż progresywne jest dobre w przypadku niewielkich obrazów, które są częścią projektu, takich jak różne skórki, ramki i tła, źle jest w przypadku obrazów ładunkowych, takich jak jako duże zdjęcia. Istnieje sposób, aby lepiej zoptymalizować wrażenia użytkownika dzięki standardowemu ładowaniu od góry do dołu, wykorzystując fakt, że miniatury znajdują się już w pamięci podręcznej przeglądarki: Projekt strony internetowej rozciąga buforowaną miniaturę za ładowanym obrazem. Jest to znacznie szybsze i ładniejsze niż postrzępiony wynik progresywnego JPEG.
Zdenek

Odpowiedzi:

9

Jest tu kilka fajnych postów , które wydają się opisywać, dlaczego kompresja progresywna może być lepsza i wydaje się, że sprowadza się to do tego, że w Progressive JPEG skompresowane dane są porządkowane bardziej wydajnie, a blokowe dane obrazu i szum są oddzielane i kompresowane osobno .

Podkreśliłem poniżej ważne elementy, które opisują to lepiej niż kiedykolwiek mogłem.

W rezultacie spodziewałbym się, że progresywny JPEG to lepsza kompresja, ale nie znacząca zmiana jakości obrazu.

Progresywny JPEG ma dwie różne funkcje kodowania:

  1. Wybór spektralny
  2. Sukcesywne zbliżanie

To, co opisujesz, to tylko pierwsza funkcja (najpierw DC, potem AC). Jest to jednak druga cecha, która jest głównym powodem odmiennej wydajności kodowania progresywnego JPEG. Przy sukcesywnej aproksymacji najpierw przechowujesz wyższe bity współczynników (niska precyzja, zgrubny obraz), a następnie niższe bity (wysoka precyzja, szczegółowy obraz). Na zwykłych obrazach szum jest skoncentrowany na niższych bitach. Dlatego koder Huffmana może być bardziej wydajny w kodowaniu symboli w wyższym zakresie bitów, w którym występuje mniej szumów. W ten sposób sukcesywne kodowanie aproksymacyjne oddziela szum od obrazu, i to jest powód lepszej wydajności kodowania (szum jest trudny do skompresowania).

Im więcej szumów (szczegółów) ma obraz, tym lepsza wydajność kodowania progresywnego JPEG. Im mniej szumów (rozmazań) ma obraz, tym lepsza wydajność kodowania JPEG sekwencyjnego (bez progresywnego).

Należy pamiętać, że większość koderów progresywnych JPEG używa kombinacji kodowania Spectral Selection i kodowania sukcesywnego przybliżania. Dla lepszej wydajności kodowania istotna jest głównie sukcesywna aproksymacja. Możesz spróbować znaleźć optymalne parametry sukcesywnej aproksymacji (punkt, w którym należy oddzielić precyzję - Ah / Al w standardzie JPEG) dla swojej klasy obrazów. Na przykład czasami znajdowałem optymalny punkt Al = 4 dla moich obrazów (4 dolne bity oddzielnie kodowane).

Mokubai
źródło
2

Zaletą progresywnego JPEG jest to, że jeśli obraz jest oglądany w locie podczas jego przesyłania, można bardzo szybko zobaczyć przybliżenie do całego obrazu, ze stopniową poprawą jakości w miarę oczekiwania; jest to o wiele ładniejsze niż powolne wyświetlanie obrazu od góry do dołu. Wadą jest to, że każde skanowanie zajmuje tyle samo obliczeń, aby wyświetlić je jako cały podstawowy plik JPEG.

Obraz powinien być dokładnie taki sam, do wyświetlenia potrzeba jedynie więcej przetwarzania.

Źródło

SOMN
źródło