Apakah rotasi "Windows Photo Viewer" tidak rugi?

58

Dapatkah saya merotasi foto yang dikompresi yang hilang yang saya lihat di Windows Photo Viewer tanpa khawatir kehilangan lebih banyak informasi karena kompresi?


sumber
1
Perhatikan bahwa - sejauh yang saya tahu - rotasi 90 derajat (dan 180, 270) adalah lossless dengan sendirinya karena merupakan pertukaran koordinat x dan y (sudut lain memerlukan interpolasi). Jadi, setiap lossyness yang dikaitkan dengan transformasi berasal dari rekompresi. Anda dapat menghindari penghitungan ulang ini dengan menyimpan gambar yang diubah dalam format lossless, tapi itu jelas bukan bagian dari pertanyaan Anda, jadi saya tidak akan menyarankannya
horatio
5
@horatio, kelipatan 90 derajat adalah kasus khusus untuk kompresi JPG, di mana secara teknis dimungkinkan untuk memutar gambar tanpa siklus kompresi dengan "cukup" mengatur ulang data yang dikompresi. Itu memang melibatkan menghapus dan menerapkan lapisan kompresi lossless, sehingga ukuran file mungkin berubah, tetapi tidak ada operasi lossy diperlukan.
RBerteig
1
Saya pikir saya mengerti Anda, tetapi poin saya adalah bahwa jpeg adalah format penyimpanan disk dan tidak memiliki pengaruh pada kualitas transformasi itu sendiri. Artinya, meskipun orang sering berbicara tentang bekerja dengan jpegs dll, sementara file ditampilkan di layar dan dimanipulasi, itu bukan jpeg.
horatio
1
Man I have SELALU ingin tahu jawaban untuk pertanyaan ini. IMO mereka HARUS. Tetapi kemungkinan besar karena standar JPEG ... Saya rasa secara teknis tidak mungkin membuat operasi ini rugi.
Trevor Boyd Smith
2
Penampil gambar Google Picasa IS lossless. tapi itu curang. itu tidak memutar gambar. itu hanya menandai di meta data "tampilkan gambar ini diputar".
Trevor Boyd Smith

Jawaban:

64

Jika dimensi gambar adalah kelipatan 8 (atau 16 jika chroma subsampling digunakan) maka rotasi tidak akan hilang. Kalau tidak, tidak mungkin untuk memutar gambar tanpa mengkompilasi ulang blok yaitu mengkompres ulang gambar, yang lossy.

Alasan untuk ini adalah bahwa gambar jpeg dipecah menjadi serangkaian blok 8x8 atau 16x16 yang dikompresi secara individual. Blok tidak lengkap hanya diperbolehkan di tepi kanan dan tepi bawah. Dengan demikian, gambar Anda bukan kelipatan 8/16 yang pasti akan mengandung blok yang tidak lengkap, yang akan berakhir di tepi yang salah setelah rotasi.

Saya memverifikasi pernyataan di atas menggunakan versi Windows Photo Viewer yang dikirimkan dengan Windows 7. Saya menggunakan dua gambar noise warna. Satu gambar adalah 256x256 yaitu kedua ukuran kelipatan 8. Gambar lainnya adalah sama tetapi dipotong menjadi 253x253 yaitu ukuran keduanya adalah kelipatan 8. Berikut adalah gambar:

256x256

253x253

Saya kemudian melakukan empat rotasi berlawanan arah jarum jam, menutup penampil foto setelah setiap rotasi untuk memastikan gambar disimpan dalam keadaan diputar.

256x256

253x253

Tidak perlu melakukan pengurangan untuk melihat perbedaan dengan gambar 253 piksel, itu terasa lebih gelap dan lebih kotor!

Perbedaan pada gambar lain terlihat seperti ini:

yaitu gambar yang identik, rotasi itu tanpa kerugian.

Matt Grum
sumber
1
Saya tahu bahwa di masa lalu ketika saya melakukan rotasi itu telah memperingatkan saya bahwa rotasi akan menjadi lossy, yang menyiratkan bahwa dalam kasus-kasus di mana peringatan tidak ditampilkan transformasi itu tidak ada kerugian, tetapi saya tidak memeriksa. Saya juga tidak ingat versi WPV yang saya gunakan, tidak menghalangi kemungkinan MS mengubah basis kode, jadi tidak, saya tidak yakin.
Matt Grum
1
@Tim sebuah gambar derau murni menurut definisi adalah kasus terburuk untuk jpeg (atau algoritma kompresi apa pun), itulah sebabnya saya memilihnya! Hasil pada gambar nyata akan terlihat lebih baik.
Matt Grum
1
@MattGrum, demo yang sangat keren. Saya harap semua pembuat kamera digital memiliki ukuran gambar dalam kelipatan bilangan bulat 8!
Trevor Boyd Smith
1
@MattGrum Saya dulu bekerja di tim WPV. AFAIK, (dan saya cukup yakin) jawaban Anda benar. Juga, +1 untuk metode yang sangat teliti untuk membuktikan hipotesis Anda:)
Tristan
@TrevorBoydSmith setiap kamera yang saya lihat memiliki dimensi gambar yang merupakan kelipatan dari 8 atau 16. Rotasi belum tentu menjadi alasannya, itu hanya memungkinkan beberapa optimasi dari pipa JPEG.
Mark Ransom