Có phải Windows Windows Photo Viewer quay không mất dữ liệu?


58

Tôi có thể xoay ảnh bị nén một cách mất mát mà tôi xem trong Windows Photo Viewer mà không lo mất thêm thông tin để nén không?


1
Lưu ý rằng - theo như tôi biết - xoay 90 độ (và 180, 270) tự nó không bị mất vì nó là sự hoán đổi của tọa độ x và y (các góc khác yêu cầu nội suy). Vì vậy, bất kỳ sự mất mát nào được quy cho sự biến đổi là từ sự giải nén. Bạn có thể tránh tính toán lại này bằng cách lưu hình ảnh được chuyển đổi ở định dạng lossless, nhưng đó rõ ràng không phải là một phần của câu hỏi của bạn, vì vậy tôi sẽ không đề xuất nó
horatio

5
@horatio, bội số 90 độ là trường hợp đặc biệt để nén JPG, trong đó về mặt kỹ thuật có thể xoay hình ảnh mà không cần chu kỳ nén bằng cách "đơn giản" sắp xếp lại dữ liệu đã nén. Nó liên quan đến việc loại bỏ và áp dụng một lớp nén không mất dữ liệu, vì vậy kích thước tệp có thể thay đổi, nhưng không yêu cầu thao tác mất dữ liệu.
RBerteig

1
Tôi nghĩ rằng tôi hiểu bạn, nhưng quan điểm của tôi là jpeg là định dạng lưu trữ đĩa và không có bất kỳ ảnh hưởng nào đến chất lượng của các biến đổi. Điều đó có nghĩa là, mặc dù người ta thường nói về việc làm việc với jpeg, v.v., trong khi tệp được hiển thị trên màn hình và thao tác, nó không phải là jpeg.
horatio

1
Người đàn ông tôi luôn LUÔN muốn biết câu trả lời cho câu hỏi này. IMO họ NÊN. Nhưng rất có thể là do tiêu chuẩn JPEG ... Tôi không nghĩ rằng về mặt kỹ thuật có thể làm cho hoạt động này trở nên dễ dàng.
Trevor Boyd Smith

2
Trình xem hình ảnh Google Picasa IS lossless. nhưng nó gian lận. nó không xoay hình ảnh. nó chỉ đánh dấu vào dữ liệu meta "hiển thị hình ảnh này được xoay".
Trevor Boyd Smith

Câu trả lời:


64

Nếu kích thước của hình ảnh là bội số của 8 (hoặc 16 nếu sử dụng mẫu phụ sắc độ) thì các phép quay không bị mất. Nếu không, không thể xoay hình ảnh mà không tính toán lại các khối tức là giải nén lại hình ảnh, điều này bị mất.

Lý do cho điều này là hình ảnh jpeg được chia thành một loạt các khối 8 x 8 hoặc 16x16 được nén riêng lẻ. Các khối không hoàn chỉnh chỉ được phép ở cạnh phải và cạnh dưới. Do đó, hình ảnh của bạn không phải là bội số chính xác của 8/16, nó sẽ chứa các khối không hoàn chỉnh, sẽ kết thúc ở cạnh sai sau khi xoay.

Tôi đã xác minh xác nhận ở trên bằng phiên bản Windows Photo Viewer đi kèm với Windows 7. Tôi đã sử dụng hai hình ảnh nhiễu màu. Một hình ảnh là 256x256 tức là cả hai kích thước là bội số của 8. Hình ảnh kia giống nhau nhưng được cắt thành 253x253 tức là không có kích thước nào là bội số của 8. Dưới đây là các hình ảnh:

256x256

253x253

Sau đó, tôi đã thực hiện bốn lần quay ngược chiều kim đồng hồ, đóng trình xem ảnh sau mỗi lần xoay để đảm bảo hình ảnh được lưu ở trạng thái xoay.

256x256

253x253

Không cần thực hiện phép trừ để thấy sự khác biệt với hình ảnh 253 pixel, nó tối hơn đáng kể và lầy hơn!

Một khác biệt trên hình ảnh khác trông như thế này:

tức là các hình ảnh giống hệt nhau, các góc quay bị mất.


1
Tôi biết rằng trong quá khứ khi tôi thực hiện các phép quay, nó đã cảnh báo tôi rằng vòng quay sẽ bị mất, điều này ngụ ý rằng trong trường hợp cảnh báo không hiển thị, phép biến đổi là không mất, nhưng tôi đã không kiểm tra. Tôi cũng không nhớ phiên bản WPV nào tôi đang sử dụng, không loại trừ khả năng MS đã thay đổi cơ sở mã, vì vậy tôi không chắc chắn.
Matt Grum

1
@Tim một hình ảnh của nhiễu thuần là theo định nghĩa trường hợp xấu nhất đối với jpeg (hoặc bất kỳ thuật toán nén nào), đó là lý do tại sao tôi chọn nó! Kết quả trên hình ảnh thực sẽ nhìn tốt hơn.
Matt Grum

1
@MattGrum, bản demo rất tuyệt. Tôi hy vọng tất cả các nhà sản xuất máy ảnh kỹ thuật số có kích thước hình ảnh của họ trong bội số nguyên là 8!
Trevor Boyd Smith

1
@MattGrum Tôi đã từng làm việc trong nhóm WPV. AFAIK, (và tôi khá chắc chắn) câu trả lời của bạn là chính xác. Ngoài ra, +1 cho một phương pháp rất kỹ lưỡng để chứng minh giả thuyết của bạn :)
Tristan

@TrevorBoydSmith mỗi máy ảnh tôi thấy có kích thước hình ảnh là bội số của 8 hoặc 16. Xoay không nhất thiết là lý do, nó có thể chỉ cho phép tối ưu hóa đường ống JPEG.
Đánh dấu tiền chuộc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.