← Powrót do bloga

Test ImgZilla (3): Perspektywa fotografa, czy JPEG po kompresji nadaje się do obróbki?

Poprzednie artykuły dotyczyły oszczędności w GB i wartości pieniężnej. Ten tekst nie dotyczy rachunków, a odpowiada na jedno, co摄影师 naprawdę martwi: co dokładnie robi ImgZilla z JPEG-em, i jakie koszty poniesie się w Lightroom / Photoshop / Capture One z powodu tych zmian. Dane pochodzą z testu tej samej grupy 32 188 zdjęć z aparatu / telefonu...

Udostępnij

Poprzednie dwa artykuły to "oszczędności w GB i wartość pieniężna". Ten tekst nie dotyczy rachunków, a odpowiada na jedno, co fotografowie naprawdę martwią: co dokładnie robi ImgZilla z JPEG-em, i jakie koszty poniosą w Lightroom / Photoshop / Capture One z powodu tych zmian. Dane pochodzą z testu tej samej grupy 32 188 zdjęć z aparatu / telefonu, a także z porównania bajt po bajcie 200+ par plików.

1. Najpierw odpowiedz na najważniejsze pytanie: czy bity zostały obcięte

Najczęstsze obawy fotografów dotyczące „kompresji" to: czy moje 12 bit, 14 bit nie zostaną zmniejszone do 8 bit.

To nie jest właściwe pytanie. Najpierw należy rozdzielić dwie rzeczy:

  • Głębia bitowa (bit depth): ile bitów jest używanych do zapisu każdego kanału koloru. 8 bit = 256 poziomów na kanał, 14 bit = 16384 poziomów. Głębia bitowa decyduje o tym, jak bardzo można wstawić ciemne partie lub niebo w Lightroom przed pojawieniem się artefaktów kolorystycznych.
  • Gęstość pliku (bity na piksel / bpp): objętość pliku ÷ liczba pikseli. W poprzednim artykule to gęstość była podzielona na grupy – ona mierzy „ile bajtów na piksel" tej grafiki, to jest obiekt kompresji i jest to inna sprawa niż głębia bitowa.

ImgZilla kompresuje drugą rzecz (gęstość), nie zmienia pierwszej (głębia bitowa). Ponadto dla JPEG-u temat ten po prostu nie istnieje:

Próbkując 209 par oryginału / skompresowanych obrazów i czytając znaczniki SOF JPEG, dokładność przed i po kompresji to w 100% 8 bit.

Powód jest prosty – standardowy JPEG (baseline) jest zdefiniowany jako 8 bit na kanał. Zdjęcia wydobyte z aparatu w formacie JPEG nigdy nie miały 12 bit do dyspozycji, więc ImgZilla nie ma możliwości „obniżenia" tego poziomu.

Gdzie są dane 12 / 14 bit? Tylko w plikach RAW. A ImgZilla obsługuje formaty gif / png / jpg / jpeg / svg / heic / heif / webp / avifnie obejmuje żadnego formatu RAW (CR2, CR3, NEF, ARW, RAF, DNG nie są w tym zestawie, jeśli spróbujesz je wrzucić, zostaną zignorowane). Twój cyfrowy negatyw w ogóle nie wchodzi do jego procesu, co jest naturalnie bezpieczne.

Wniosek tego rozdziału: JPEG nie ma możliwości obniżenia głębi bitowej, 8 bit wejście, 8 bit wyjście; RAW nie jest dotknięty. Głębia bitowa nie jest tym, o co tutaj warto się martwić – prawdziwym problemem są dwa kolejne rozdziały.

2. A co właściwie się zmieniło: pełna, zniekształcająca rekompresja

ImgZilla nie robi „bezstratnej optymalizacji na oryginale", ale dekoduje i ponownie koduje obraz. Pełny proces:

Wczytaj JPEG
→ Dekoduj do pikseli 8 bit RGB
→ Przeconvertuj z powrotem do YCbCr
→ Ponownie zquantyfikuj według stałej tabeli kwantyzacji (skuteczna jakość ok. 70)
→ Ponownie oblicz optymalne tablice Huffmana
→ Wyjście jako JPEG progresywny (progressive)

Krok „ponowna kwantyzacja" jest zniekształcający. Im grubsza tabela kwantyzacji, tym więcej szczegółów odcieni pośrednich jest tracone i tym mniejszy plik. Sprawdźmy siłę tabeli kwantyzacji na próbkowanych plikach (suma kroków kwantyzacji, im większa liczba, tym twardsza kwantyzacja):

Siła tabeli kwantyzacji (mediana)
Oryginał z aparatu / telefonu 1858
Po kompresji ImgZilla 6852

Siła kwantyzacji to około 3,7 razy więcej niż na początku. To prawdziwa, druga kwantyzacja – nie jest to „przeorganizowanie bezstratne", to ponowne utrata informacji o wysokich częstotliwościach.

Dwie rzeczy nie zmieniły się:

  • Rozdzielczość pozostaje nienaruszona. Wszystkie 32 188 zdjęć mają pole dimensions_changed ustawione na false – ImgZilla nie skaluje, nie przycina, cała oszczędność objętości pochodzi z rekompresji.
  • Głębia bitowa nie zmieniła się (zobacz wyżej), 8 bit wejście, 8 bit wyjście.

Jedna rzecz się zmieniła, ale nie wpływa na jakość wizualną: wyjście to JPEG progresywny (oryginały są w 99% typu baseline). JPEG progresywny jest lepszy dla doświadczenia ładowania strony, nie ma żadnej ceny w jakości, a Lightroom / Photoshop / Capture One czytają go normalnie – jedynie bardzo stare oprogramowanie może nie go rozpoznać.

3. To, co najbardziej wpływa na obróbkę: próbkowanie chromatyczne zmuszone do 4:2:0

To jest najważniejsza informacja, jaką fotograf powinieneś poznać w tym artykule.

JPEG używa „próbkowania chromatycznego" do oszczędności miejsca – ludzkie oko jest bardziej wrażliwe na jasność niż na precyzję koloru, więc informacje chromatyczne mogą mieć niższą rozdzielczość niż jasność:

  • 4:4:4: kanał chromatyczny ma taką samą rozdzielczość jak jasność, informacje o kolorze są najbardziej kompletne.
  • 4:2:2: poziomo połowa rozdzielczości chromatycznej. Często używane w zdjęciach z wielu aparatów oraz niektórych telefonów.
  • 4:2:0: poziomo i pionowo połowa rozdzielczości chromatycznej, tylko 1/4 rozdzielczości jasności. Najbardziej powszechne JPEG, które były zoptymalizowane pod kątem objętości, używają tej formy.

Próbkując 209 par plików, sprawdźmy próbkowanie chromatyczne przed i po kompresji:

Próbkowanie chromatyczne Oryginał Po kompresji ImgZilla
4:4:4 1 0
4:2:2 128 (61%) 0
4:2:0 80 (38%) 209 (100%)

Po kompresji 100% to 4:2:0. W 61% przypadków zdjęcia spadły z 4:2:2 – poziomowa rozdzielczość chromatyczna została połowa, a proces ten jest nieodwracalny.

Jak to wpłynie na obróbkę

Zmniejszona rozdzielczość chromatyczna jest dla oka niewidoczna, jeśli zdjęcie nie jest edytowane. Problem pojawia się, gdy robie edycję:

  • Korekta kolorów / Separacja odcieni (Split Toning): zwiększanie nasycenia, manipulacja HSL, kolorystyka – na granicach pasm kolorystycznych zaczynają się pojawiać artefakty, szczególnie w przejściach jasności skóry, gradientach nieba do horyzontu w dużych obszarach płaskich.
  • Wybór kolorów / Maski / Kciuk (抠像): zakresy kolorów w Lightroom, paleta kolorów w Photoshopie, cięcie na tle zielonym – wszystkie te funkcje są zależne od precyzji krawędzi chromatycznych. Po przejściu na 4:2:0 krawędzie stają się szorstkie i ząbkowane.
  • Kolorowe kontury na wysokich kontrastach: czerwono-czarne teksty, neony, gałęzie w kontrastowym oświetleniu – 4:2:0 może pozostawić tutaj „przepływ" kolorów.

Efekt nakładania się

Skuteczna jakość ok. 70 + 4:2:0 to punkt pracy o charakterze „kompresyjnym". Zdjęcie wyjściowe z jakości 92 i 4:2:2 może wytrzymać znacznie większe korekty niż to samo zdjęcie po przejściu na jakość 70 i 4:2:0. Ponadto, jeśli edytujesz skompresowany plik i zapisujesz go ponownie – są to dwa razy zniekształcające procesy nakładające się na siebie.

Kiedy ta sprawa nie ma znaczenia

Jeśli twój oryginał jest już w formacie 4:2:0 (dużo średniej i niskiej klasy telefonów, starsze aparaty, oraz wszystkie zdjęcia zoptymalizowane pod strony internetowe), to ImgZilla nie wprowadza dodatkowej utraty w próbkowaniu chromatycznym – po prostu przybliża obraz do podobnego punktu pracy. To też powód, dla którego ten typ plików ma niski współczynnik kompresji (zobacz rozdział 6 o podziale na rozdzielczość: iPhone wydaje się oszczędzać tylko 70,7%, podczas gdy bardziej „tłuste" 12MP ogółem może oszczędzać 80%).

4. Metadane: EXIF / XMP / ICC są wszystkie tracone

ImgZilla domyślnie usuwa metadane. Porównując 209 par plików:

Metadane Oryginał zawierał Po kompresji zostaje
EXIF (parametry zdjęcia) 204 0
XMP (ocena / słowa kluczowe / prawa autorskie) 134 0
ICC (profil kolorów) 2 0

Szczegóły utraty:

  • EXIF: otwarcie, czas migawki, ISO, ogniskowa, model obiektywu, model aparatu, czas i GPS – wszystko zniknęło. To duży problem dla fotografów, którzy prowadzą biblioteki zdjęć, przeglądają parametry lub potrzebują informacji o prawach autorskich przyłączonych do pliku.
  • Znacznik orientacji (EXIF Orientation): ten znacznik jest wyróżniony, ponieważ bezpośrednio wpływa na wyświetlanie. Wiele aparatów i starych telefonów nie obraca pikseli fizycznie przy fotografowaniu, tylko zapisuje znacznik. Gdy znacznik zostanie usunięty, pionowe zdjęcia w niektórych programach mogą być wyświetlane poziomo – ponowne kodowanie libjpeg nie obróci pikseli za Ciebie. Współczesne flagowe telefony już zazwyczaj obracają fizycznie i oznaczają to, więc nie są dotknięte; ale jeśli używasz aparatu lub starszego urządzenia, przed kompresją warto to sprawdzić.
  • XMP: gwiazdki, flagi, słowa kluczowe, tytuły, oświadczenia o prawach autorskich w Lightroom / Bridge – jeśli są zapisane w pliku XMP (nie w pliku zewnętrznym ani w bazie katalogu), po kompresji są tracone.
  • Profil kolorów ICC: w tym zestawie próbek prawie nie ma osadzonych profili ICC (w większości bez etykiety sRGB), więc w tym teście ta kwestia nie została zidentyfikowana. Ale jeśli Twoje wyjście to Display P3 lub Adobe RGB, osadzony profil ICC zostanie usunięty, a odtwarzacz będzie musiał interpretować kolory jako sRGB, co sprawi, że kolory będą matowe lub przesunięte. W przepływie pracy z dużą gamą trzeba uważać na tę kwestię.

W ustawieniach jest opcja „zachować metadane", ale jeśli metadane są dla Ciebie ważne, najbezpieczniejszym rozwiązaniem jest: nie kompresuj zdjęć wymagających zachowania metadanych w miejscu – zapisz oryginały.

5. Kiedy te koszty można zaakceptować

Podsumowując trzy poprzednie punkty: ImgZilla kompresuje JPEG w ten sposób: 8 bit bez zmian, rozdzielczość bez zmian, próbkowanie chrom. spada do 4:2:0, jakość spada do około 70, metadane są czyste, w zamian za to objętość spada średnio o 76,8%.

Wymiana ta opłaca się w następujących scenariuszach:

  • Wysyłka klientowi miniatur do podglądu, portfolio na stronie, zgłoszenia do mediów społecznościowych. Te pliki będą ponownie kompresowane przez platformę, więc 4:2:0 + jakość 70 jest niemal niewidoczna dla oka, a objętość może być obcięta o 3/4 – szybkie wgrywanie, szybkie ładowanie, niższe rachunki za serwery i CDN (to obliczono w poprzednich artykułach).
  • Archiwalne JPEG, które zostały odrzucone podczas selekcji i nie będą już edytowane. Zachowane do celów archiwalnych.
  • Wysyłanie zdjęć przez WeChat / e-mail, przesyłanie materiałów współpracownikom – czas transmisji drastycznie się skraca w zależności od objętości.

Warunkiem jest jednak: najpierw sprawdź to sam za pomocą wbudowanego okna porównania (⌘D). ImgZilla wyświetli oryginał i skompresowany obraz obok siebie, można powiększyć do poziomu pikseli i porównać punkt po punkcie. Dla osób wrażliwych na jakość, nie wierz w stwierdzenia „nie widać różnicy" – sam popatrz na 100% to, co jest dla Ciebie najważniejsze – skóra, niebo, krawędzie włosów.

6. Kiedy nie należy używać ImgZilla do kompresji

  • Jeśli planujesz duże korekty w Lightroom / Photoshop / Capture One – szczególnie jeśli masz tylko JPEG, bez RAW. Każdy procent edycji i kompromisów jest tu cenny, nie trać go wcześniej. Zachowaj oryginał i kompresuj wersję do wyjścia dopiero po zakończeniu pracy.
  • Jeśli potrzebujesz zachować EXIF / prawa autorskie / GPS / słowa kluczowe do katalogowania.
  • Jeśli dostarczasz obrazy w gamie Display P3 / Adobe RGB – profil ICC zostanie usunięty.
  • Twoje pliki RAW – nie są przez to dotknięte (ImgZilla ich nie dotyka), ale nie oczekuj, że to narzędzie pomoże skrócić RAW, to nie jest jego działanie.

W jednym zdaniu: ImgZilla nadaje się do kompresji „wyjściowych plików", nie „środków pośrednich, które nadal będą edytowane".

7. Dodatek danych: to 32 188 zdjęć JPEG z aparatu / telefonu

To ten sam zestaw próbek co w poprzednich artykułach, 16 podkatalogów, bez filtrowania, kompresja w miejscu.

Ogółem

Objętość Względem oryginału
Oryginał z aparatu / telefonu 99,9 GB
Po kompresji ImgZilla 23,1 GB −76,8%

Średnio z pliku: 2,96 MB → 0,69 MB. Średnia dla każdego pliku to oszczędność 76,6%, mediana 77,3%, co pokrywa się z 76,8% obliczonym z całkowitej objętości.

Według rozdzielczości: różne urządzenia pozostawiają różne miejsce

Rozdzielczość Liczba zdjęć Procent Średnia oszczędność plików
4000×3000 (typowy 12MP, głównie Android / aparaty kompaktowe) 19867 61,7% 80,1%
4032×3024 (iPhone, główny aparat 12MP) 3529 11,0% 70,7%
3456×4608 (16MP, pionowo) 2631 8,2% 76,9%
4608×3456 (15,9MP) 903 2,8% 54,8%
1600×1200 257 0,8% 51,4%

(Nazwa urządzenia jest wywnioskowana z rozdzielczości wyjścia, nie czytania EXIF – EXIF po kompresji jest niedostępny.)

To samo narzędzie, ta sama grupa nie dotkniętych oryginałów – najwyższy współczynnik kompresji (80%) a najniższy (55%) różnią się o 25 punktów procentowych. Różnica wynika z samego oryginału: JPEG z iPhone'a ma bardziej agresywną linię kwantyzacji i kodowanie, jest już blisko granicy rozsądku; wiele tańszych / starych urządzeń używa bardziej konserwatywnych stałych tabel kwantyzacji, więc jest „tłuste" i jeszcze nie dotykane. Im nowsze aparaty z dużym czujnikiem, tym JPEG-y są bardziej „chude" i mniej miejsca zostaje do kolejnej kompresji – to nie jest złe, po prostu Twój oryginał nie jest tak marnotrawny.

Rozkład dla każdego pliku

Oszczędność Liczba zdjęć Procent
90%–100% 866 2,7%
80%–90% 11375 35,3%
70%–80% 15244 47,4%
60%–70% 3349 10,4%
50%–60% 398 1,2%
Poniżej 50% 956 3,0%

82,7% zdjęć oszczędza 70%–90%. Według percentyli: powyżej połowy oszczędza powyżej 77%, nawet najgorsze 10% oszczędza około 68%, a tylko około 1% (p99) oszczędza mniej niż 40%.

Ekstremalne przypadki

Oryginał Po kompresji Oszczędność
Najwyższy współczynnik kompresji 3,55 MB (4000×3000) 100 KB 97,2%
Najwięcej oszczędności na pliku 17,9 MB (4000×3000) 1,13 MB 16,8 MB
Najmniejsza oszczędność 70 KB (1242×1242) 68,8 KB 2,1%

8. Opis danych i testów

  • Zakres próbek: liczby dotyczące ogólnej kompresji, podziału na rozdzielczość i rozkładu po każdym pliku pochodzą z testu tej grupy 32 188 zdjęć z aparatu / telefonu, co odzwierciedla wyniki dla tego zestawu, nie oznacza „ImgZilla średnio kompresuje o 76,8%". Wyniki będą różne w zależności od aparatu, modelu telefonu i ustawień eksportu.
  • Wybór próbek: pliki nie zostały filtrowane ani oczyszczane, cała grupa w 16 podkatalogach została skompresowana w miejscu.
  • Przypisanie modelu: w tabeli rozdzielczości urządzenie jest ustalane na podstawie rozdzielczości wyjścia, nie czytania EXIF (EXIF po kompresji jest niedostępny); ta sama rozdzielczość może pochodzić z różnych urządzeń.
  • Porównanie bajtowe jest próbką: wnioski dotyczące próbkowania chromatycznego, głębi bitowej, tabel kwantyzacji i metadanych pochodzą z analizy znaczników JPEG dla losowo wybranych 209 par oryginału / skompresowanego pliku – to próbkowanie, nie całość z 32 188 plików.
  • Metoda statystyczna: ogólne 76,8% to „całkowita oszczędność bajtów ÷ całkowita objętość oryginału"; średnia arytmetyczna dla każdego pliku to 76,6%, mediana 77,3%. Jednostki objętości oparte są na 1 GB = 10⁹ bajtów.
  • Parametry kompresji: parametry są stałe, na interfejsie nie ma suwaków jakości / próbkowania. To projektowe rozwiązanie – parametry są ustawione na punkt balansu, który jest niemal niewidoczny dla oka. Fotografowie, którzy są przyzwyczajeni do ręcznego ustawiania jakości / próbkowania, muszą to zauważyć.
  • „Wizualna bezstratność" nie znaczy „bezstratność". Prawdziwa bezstratność (zachowanie każdego piksela) istnieje tylko dla PNG i SVG; JPEG jest rekompresją zniekształcającą, a parametry są wybierane w zakresie, który nie jest wyczuwalny dla oka. Wbudowane okno porównania pozwala na weryfikację piksel po pikselu.
  • Środowisko: cała operacja odbywała się lokalnie, zdjęcia nie są wysyłane do sieci (poza weryfikacją zakupu w App Store).

Chcesz sprawdzić to sam? W wersji bezpłatnej ImgZilla pozwala skompresować 10 zdjęć dziennie, limit jest naliczany tylko przy udanym procesie. Weź kilka najbardziej wymagających zdjęć – portrety, niebo, włosy w kontraście – skompresuj i porównaj je w oknie podglądu na 100%, a następnie zdecyduj, czy powierzyć temu narzędziu całą bibliotekę zdjęć.

Mac App Store: https://apps.apple.com/app/apple-store/id6749323539?pt=127227004&ct=v2&mt=8
Więcej informacji: https://imagetool.app/ImgZilla

Wymagania systemowe: macOS 12.3 lub nowszy.

Chcesz mniejsze i szybsze obrazy?

Pobierz ImgZilla i kompresuj lokalnie — Twoje obrazy nigdy nie opuszczają Maca.