การหมุน“ Windows Photo Viewer” สูญหายหรือไม่?


58

ฉันสามารถหมุนรูปถ่ายที่ถูกบีบอัดแบบสูญเสียที่ฉันดูในWindows Photo Viewer ได้โดยไม่ต้องกังวลว่าจะสูญเสียข้อมูลไปยังการบีบอัดอีกหรือไม่


1
โปรดทราบว่า - เท่าที่ฉันรู้ - การหมุน 90 องศา (และ 180, 270) นั้นไม่มีความสูญเสียในตัวมันเองเพราะมันคือการแลกเปลี่ยนของ x และ y พิกัด (มุมอื่น ๆ ต้องการการแก้ไข) ดังนั้นความสูญเสียใด ๆ ที่เกิดจากการแปลงมาจากการบีบอัดใหม่ คุณสามารถหลีกเลี่ยงการคำนวณใหม่นี้โดยการบันทึกภาพเปลี่ยนในรูปแบบ lossless แต่ที่เห็นได้ชัดว่าไม่เป็นส่วนหนึ่งของคำถามของคุณดังนั้นฉันจะไม่บอกว่ามัน
Horatio

5
@ horatio การทวีคูณ 90 องศาเป็นกรณีพิเศษสำหรับการบีบอัด JPG ซึ่งเป็นไปได้ในทางเทคนิคในการหมุนภาพโดยไม่ต้องวนรอบการบีบอัดโดย "เพียงแค่" จัดเรียงข้อมูลที่บีบอัดใหม่ มันเกี่ยวข้องกับการลบและใช้เลเยอร์การบีบอัดแบบไม่มีการสูญเสียดังนั้นขนาดไฟล์อาจเปลี่ยนแปลง แต่ไม่จำเป็นต้องมีการดำเนินการแบบสูญเสีย
RBerteig

1
ฉันคิดว่าฉันเข้าใจคุณ แต่ประเด็นของฉันคือ jpeg เป็นรูปแบบการจัดเก็บดิสก์และไม่มีผลต่อคุณภาพของการแปลงตัวเอง กล่าวคือแม้ว่าจะมีคนพูดถึงการทำงานกับ jpegs ฯลฯ ในขณะที่ไฟล์นั้นถูกแสดงบนหน้าจอและจัดการ แต่ก็ไม่ใช่ jpeg
horatio

1
ผู้ชายฉันอยากรู้คำตอบสำหรับคำถามนี้เสมอ IMO พวกเขาควรจะเป็น แต่น่าจะเป็นเพราะมาตรฐาน JPEG ... ฉันไม่คิดว่ามันเป็นไปได้ในทางเทคนิคที่จะทำให้การดำเนินการนี้สูญ
เทรเวอร์บอยด์สมิ ธ

2
โปรแกรมดูรูปภาพ Google Picasa ไม่มีส่วนสูญเสีย แต่มันจะโกง มันไม่หมุนรูปภาพ มันเพียงทำเครื่องหมายลงในข้อมูลเมตา "แสดงภาพนี้หมุน"
เทรเวอร์บอยด์สมิ ธ

คำตอบ:


64

หากขนาดของภาพเป็นทวีคูณของ 8 (หรือ 16 ถ้าใช้การสุ่มสีแบบ Chroma) การหมุนจะไม่สูญเสีย มิฉะนั้นจะไม่สามารถหมุนภาพโดยไม่ทำการคำนวณซ้ำบล็อกเช่นบีบอัดภาพใหม่ซึ่งทำให้เกิดการสูญเสีย

เหตุผลในการนี้คือภาพ jpeg ถูกแบ่งออกเป็นบล็อกขนาด 8x8 หรือ 16x16 ซึ่งถูกบีบอัดแยกกัน บล็อกที่ไม่สมบูรณ์อนุญาตให้ใช้กับขอบด้านขวาและขอบด้านล่างเท่านั้น ดังนั้นรูปภาพของคุณจึงไม่ใช่จำนวนที่แน่นอนของ 8/16 ซึ่งจะมีบล็อกที่ไม่สมบูรณ์ซึ่งจะจบลงที่ขอบผิดหลังจากหมุน

ฉันตรวจสอบการยืนยันข้างต้นโดยใช้ Windows Photo Viewer เวอร์ชันที่จัดส่งมาพร้อมกับ Windows 7 ฉันใช้สองภาพที่มีจุดสีรบกวน ภาพหนึ่งมีขนาด 256x256 เช่นขนาดทวีคูณของ 8 ภาพอื่นเป็นเหมือนกัน แต่ถูกตัดเป็น 253x253 นั่นคือขนาดไม่ใหญ่เท่ากับ 8 นี่คือภาพ:

256x256

253x253

จากนั้นฉันก็ทำการหมุนภาพทวนเข็มนาฬิกาสี่ครั้งการปิดโปรแกรมดูภาพถ่ายหลังจากการหมุนแต่ละครั้งเพื่อให้แน่ใจว่าภาพถูกบันทึกในสถานะที่หมุน

256x256

253x253

ไม่จำเป็นต้องทำการลบเพื่อดูความแตกต่างของภาพขนาด 253 พิกเซลซึ่งจะเข้มขึ้นและเห็นได้ชัด!

ความแตกต่างในภาพอื่น ๆ มีลักษณะดังนี้:

นั่นคือภาพเหมือนกันการหมุนจะไม่สูญเสีย


1
ฉันรู้ว่าในอดีตเมื่อฉันหมุนไปรอบ ๆ มันได้เตือนฉันว่าการหมุนจะเป็นความสูญเสียซึ่งหมายความว่าในกรณีที่คำเตือนไม่ได้แสดงการเปลี่ยนแปลงนั้นไม่สูญเปล่า แต่ฉันไม่ได้ตรวจสอบ ฉันจำได้หรือไม่ว่าฉันใช้ WPV รุ่นใดโดยไม่แยกแยะความเป็นไปได้ที่ MS เปลี่ยนรหัสฐานข้อมูลดังนั้นฉันจึงไม่แน่ใจ
Matt Grum

1
@Tim ภาพของสัญญาณรบกวนที่บริสุทธิ์โดยนิยามกรณีที่เลวร้ายที่สุดสำหรับ jpeg (หรืออัลกอริทึมการบีบอัดใด ๆ ) ซึ่งเป็นเหตุผลที่ฉันเลือกมัน! ผลลัพธ์จากภาพจริงจะดูดีขึ้น
Matt Grum

1
@ MattGrum การสาธิตที่ยอดเยี่ยมมาก ฉันหวังว่าผู้ผลิตกล้องดิจิตอลทุกคนจะมีขนาดภาพเป็นทวีคูณของ 8!
เทรเวอร์บอยด์สมิ ธ

1
@ MattGrum ฉันเคยทำงานกับทีม WPV AFAIK (และฉันค่อนข้างมั่นใจ) คำตอบของคุณถูกต้อง นอกจากนี้ +1 สำหรับวิธีการที่ละเอียดมากในการพิสูจน์สมมติฐานของคุณ:)
ละคร

@TrevorBoydSmith กล้องทุกตัวที่ฉันเคยเห็นมีขนาดภาพที่เป็นทวีคูณของ 8 หรือ 16 การหมุนไม่จำเป็นต้องเป็นเหตุผลมันอาจจะยอมให้เพิ่มประสิทธิภาพของไพพ์ไลน์ JPEG
Mark Ransom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.