Czy obroty „Windows Photo Viewer” są bezstratne?

58

Czy mogę obracać stratnie skompresowane zdjęcia, które przeglądam w Przeglądarce fotografii systemu Windows, nie martwiąc się o utratę jeszcze większej ilości informacji w wyniku kompresji?


źródło
1
Zauważ, że - o ile mi wiadomo - obrót o 90 stopni (i 180, 270) jest sam w sobie bezstratny, ponieważ jest zamianą współrzędnych xiy (inne kąty wymagają interpolacji). Zatem wszelka strata przypisywana transformacji pochodzi z rekompresji. Możesz uniknąć tego ponownego obliczenia, zapisując przekształcony obraz w bezstratnym formacie, ale to oczywiście nie jest częścią twojego pytania, więc nie zasugeruję
horatio
5
@horatio, wielokrotności 90 stopni to szczególny przypadek kompresji JPG, w której technicznie możliwe jest obrócenie obrazu bez cyklu kompresji poprzez „proste” przestawienie skompresowanych danych. Wymaga usunięcia i zastosowania warstwy bezstratnej kompresji, więc rozmiar pliku może się zmienić, ale operacje stratne nie są wymagane.
RBerteig
1
Myślę, że cię rozumiem, ale chodzi mi o to, że JPEG jest formatem przechowywania na dysku i nie ma żadnego wpływu na jakość samych transformacji. Oznacza to, że chociaż często mówi się o pracy z plikami JPEG itp., Podczas gdy plik jest wyświetlany na ekranie i poddawany manipulacji, nie jest to plik JPEG.
horatio
1
Człowieku, ZAWSZE chciałem poznać odpowiedź na to pytanie. IMO POWINNY BYĆ. Ale najprawdopodobniej ze względu na standard JPEG ... Nie wydaje mi się technicznie możliwe, aby ta operacja była bezstratna.
Trevor Boyd Smith
2
Przeglądarka zdjęć Google Picasa JEST bezstratna. ale to oszukuje. nie obraca obrazu. po prostu zaznacza w metadanych „wyświetl ten obraz obrócony”.
Trevor Boyd Smith

Odpowiedzi:

64

Jeśli wymiary obrazu są wielokrotnościami 8 (lub 16, jeśli zastosowano podpróbkowanie barwy), wówczas obroty są bezstratne. W przeciwnym razie nie jest możliwe obrócenie obrazu bez ponownego obliczenia bloków, tj. Ponownej kompresji obrazu, który jest stratny.

Powodem tego jest to, że obrazy JPEG są podzielone na szereg bloków 8x8 lub 16x16, które są indywidualnie kompresowane. Niekompletne bloki są dozwolone tylko na prawej krawędzi i dolnej krawędzi. Zatem twój obraz nie jest dokładną wielokrotnością 8/16, będzie zawierał niekompletne bloki, które po obrocie znajdą się na niewłaściwej krawędzi.

Potwierdziłem powyższe stwierdzenie, używając wersji Windows Photo Viewer dostarczanej z Windows 7. Użyłem dwóch obrazów szumu kolorowego. Jeden obraz miał 256 x 256, tj. Wielokrotność obu rozmiarów po 8. Drugi obraz był taki sam, ale przycięty do 253 x 253, tzn. Żaden rozmiar nie był wielokrotnością 8. Oto obrazy:

256x256

253 x 253

Następnie wykonałem cztery obroty w lewo, zamykając przeglądarkę zdjęć po każdym obrocie, aby mieć pewność, że obraz zostanie zapisany w stanie obróconym.

256x256

253 x 253

Nie ma potrzeby wykonywania odejmowania, aby zobaczyć różnicę w przypadku obrazu 253 pikseli, jest on wyraźnie ciemniejszy i bardziej błotnisty!

Różnica na drugim obrazku wygląda następująco:

tzn. obrazy są identyczne, obroty były bezstratne.

Matt Grum
źródło
1
Wiem, że w przeszłości, kiedy robiłem rotacje, ostrzegałem mnie, że rotacja będzie stratna, co oznacza, że ​​w przypadkach, gdy ostrzeżenie nie było wyświetlane, transformacja była bezstratna, ale nie sprawdzałem. Nie pamiętam też, jakiej wersji WPV używałem, nie wykluczając możliwości, że MS zmieniło bazę kodów, więc nie, nie mogę być pewien.
Matt Grum
1
@Tim obraz czystego szumu jest z definicji najgorszym przypadkiem dla jpeg (lub dowolnego algorytmu kompresji), dlatego go wybrałem! Wyniki na prawdziwych obrazach wyglądałyby lepiej.
Matt Grum
1
@MattGrum, bardzo fajne demo. Mam nadzieję, że wszyscy producenci aparatów cyfrowych mają swoje rozmiary obrazów w wielokrotnościach całkowitych 8!
Trevor Boyd Smith
1
@MattGrum Pracowałem w zespole WPV. AFAIK (i jestem pewien, że Twoja odpowiedź jest poprawna). Również +1 za bardzo dokładną metodę udowodnienia swojej hipotezy
:)
@TrevorBoydSmith każda kamera, którą widziałem, ma wymiary wielokrotności 8 lub 16. Obrót niekoniecznie jest powodem, może po prostu pozwolić na pewną optymalizację potoku JPEG.
Mark Ransom,