Kopia zapasowa wysokiej jakości Zdjęć Google - w jaki sposób Google osiąga doskonałą kompresję i czy tracę niektóre dane?

21

Jestem pewien, że wielu z nas korzysta z wysokiej jakości kopii zapasowej zdjęć Google, która pozwala nam przechowywać zdjęcia online bez opłat.

Ostatnio zastanawiałem się, jak przetestować jakość przesyłanych zdjęć, przesyłając zdjęcia (poniżej 16 MP) i porównując je z oryginałem pod względem rozdzielczości, jakości (widzianej okiem) i rozmiaru pliku.

Byłem zaskoczony, gdy zauważyłem, że rozdzielczość i jakość były prawie takie same jak w oryginale (brak widocznej różnicy w oku w większości przypadków nawet powiększony), ale rozmiar pliku został drastycznie zmniejszony - co najmniej 2-3x, a nawet około 10x w niektóre przypadki. Korzystając z RAR do różnych typów plików w przeszłości, wiedziałem, że się nie zamknie i nie zadałem sobie trudu, aby go przetestować.

Pytanie brzmi: w jaki sposób Google zarządza tak wielką kompresją bez zauważalnej zmiany samego obrazu? Czy odrzucają dane lokalizacji lub inne dane związane z obrazem, o których fotograf amator nie wie?

Anurag B.
źródło
2
Moja odpowiedź faktycznie dotyczy drugiego pytania. Nie znaleźli magicznego ogólnego algorytmu kompresji bezstratnej, takiego jak super wersja ZIP lub RAR. Właśnie poprawili kompresję specyficzną dla JPEG.
mattdm

Odpowiedzi:

20

Po pierwsze, wszystkie zdjęcia większe niż 16 megapikseli mają rozmiar 16 MP - więc w przypadku wielu aparatów jest to natychmiastowy, oczywisty spadek rozdzielczości.

Ale wszystkie inne zdjęcia są również kompresowane przy użyciu optymalizującego algorytmu kompresji. Nie sądzę, że Google wychodzi i mówi dokładnie, co robią, ale prawdopodobnie jest to ich algorytm Guetzli typu open source . Google twierdzi:

Obrazy generowane przez guetzli są zwykle o 20-30% mniejsze niż obrazy o równoważnej jakości generowane przez libjpeg.

Cokolwiek robią, wyniki są imponujące - często znacznie większe niż 20-30%. (Prawdopodobnie wynika z tego, że Google nie bierze pod uwagę tych naprawdę „równoważnych jakości”). W tym blogu Phone Arena można zobaczyć kilka porównań .

Ale na twoje tytułowe pytanie: zdecydowanie tracisz trochę danych. Algorytm ten nie jest magiczny - po prostu używa modelu percepcyjnego do odrzucania danych wizualnych, których nie robi konwencjonalna kompresja JPEG, co skutkuje wyższymi współczynnikami kompresji, a (miejmy nadzieję) nie powoduje żadnych zakłóceń w rzeczach, które można faktycznie zauważyć.

Tylko Ty możesz zdecydować, czy ci to odpowiada. Jeśli tworzysz kopie zapasowe oryginałów RAW (z kopiami zapasowymi również dostosowanymi) i możesz odtwarzać pliki JPEG do woli, nie zastanawiałbym się dwa razy. Ale jeśli poważnie podchodzisz do fotografii i masz przepływ pracy skoncentrowany na JPEG - i pomimo snobizmu online RAW, to w porządku - prawdopodobnie chcesz zachować oryginalne pliki JPEG bez zmian. Dodanie terabajta przestrzeni dyskowej to tylko 10 USD miesięcznie w Google. Lub jeśli jesteś klientem Amazon Prime (100 USD rocznie), dostajesz rzeczywiste nieograniczone miejsce na zdjęcia, w tym pliki RAW.

mattdm
źródło
Dropbox stworzył Lepton do bezstratnej kompresji obrazów JPEG średnio o 22%
Nick T
5

Zasadniczo rzucają moc obliczeniową na problem, używając bardzo intensywnych obliczeń, które wypróbowują różne sposoby kompresji obrazu zgodnie z regułami JPG. Przetwarzanie jest czymś, co Google ma prawdopodobnie wiele, zwłaszcza, że ​​oszczędza również pasmo przenoszenia.

Możesz zrobić to samo - oprogramowanie i różne usługi są bezpłatne lub tanie. Twój program / kamera po prostu nie ma mocy obliczeniowej, aby wymyślić „optymalny” sposób użycia kompresji stratnej JPG.

TomTom
źródło
Jest to dobry punkt, chociaż zmniejszy rozmiar obrazu tylko o niewielką część.
Salman
4
Wow, ten algorytm Guetzli wspomniany powyżej przez @mattdm to świnia! Na stronie github z oprogramowaniem informuje, że potrzebuje 300 MB pamięci RAM na megapiksel obrazu, a procesor zajmuje 1 minutę !
davidbak
Tak. Zasadniczo „wypróbuj wiele kombinacji, a następnie użyj najlepszej”. Które starsze Lightroom, ani na przykład twój aparat (w szczególności twój aparat) mogą zrobić.
TomTom,
Ale skoro algorytm zasadniczo kompresuje już skompresowany obraz JPEG, to czy nie jest to gorsze, jeśli zastosujesz ten sam algorytm do oryginału?
Michael
Tak. Nie. Spójrz Gützli. JPEG - częściowo wykonywany przez kamery - jest wykonywany SZYBKO. Tehy może poświęcić minutę na znalezienie optymalnego kodowania obrazu. Usługi takie jak Compressor.io robią to samo. Uzyskujesz znaczące redukcje rozmiaru przy optycznie tym samym obrazie.
TomTom