Khi tạo JPEG, làm cách nào tôi có thể giảm thiểu sự xuất hiện của tạo tác?


10

Có hai yếu tố chính dường như dẫn đến các tạo tác kỹ thuật số khi tạo hình ảnh JPEG: Bí danh và Nén.

Thí dụ:

Chuyển đổi một PNG với các ký tự trên nó thành JPEG hoặc đặt hình ảnh vector trên một bức ảnh, sẽ dẫn đến pixel hóa trên các cạnh của chúng. Khử răng cưa nói chung tạo ra một loại mờ xung quanh chúng, nhưng nếu hình ảnh bị nén bị mất , một phần chi tiết cũng bị mất, do đó độ mờ và pixel hóa có thể trở nên ít chú ý hơn.

Đây có phải là điều đúng để làm gì? Tức là do quá trình nén không mất dữ liệu tạo ra hình ảnh có độ chi tiết cao, các thành phần tạo ra từ răng cưa sẽ đáng chú ý hơn, do đó có thể tìm thấy sự cân bằng bằng cách sử dụng nén đúng, mặc dù ảnh hưởng đến chất lượng hình ảnh.

Biên tập

Tôi vừa lưu JPEG này trong mspaint (3.46KB):

Không mất mát

Đây là cùng một JPEG với độ nén tối đa (chất lượng thấp nhất, 0,5KB):

Mất mát

Đây là cùng một JPEG với độ nén 50% (chú ý sự khác biệt về kích thước, 1.29KB):

Một nửa không có tùy chọn

Nén 50% tương tự nhưng được lưu dưới dạng "JPG lũy tiến", giữ dữ liệu EXIF ​​và XMP ban đầu và "đã cố lưu với chất lượng JPG gốc" (bạn có thể nhận thấy rằng không có pixel màu xám xung quanh, 2,96KB):

Tùy chọn một nửa

Và cuối cùng giống như trước đây với việc lấy mẫu màu sắc bị vô hiệu hóa (cùng kích thước tệp, 2,96KB):

Một nửa sắc độ


1
Chỉ tò mò, lý do của bạn muốn jpg là gì, đó là kích thước tệp nhỏ hơn? Trong trường hợp nó giúp ích cho tình huống cụ thể của bạn, bạn có biết về nén dxt hoặc kết cấu trường khoảng cách không?
Alan Wolfe

1
Tôi không rõ câu hỏi của bạn là gì. Bạn có muốn biết liệu có tốt khi nén bằng JPEG không? Bạn có muốn biết những loại hình ảnh nén tốt với JPEG không? Hoặc, bạn đã sử dụng JPEG và bạn muốn biết cách tạo ra hình ảnh của mình để giảm thiểu các thành phần gây ra bởi JPEG?
Mokosha

@AlanWolfe Tôi đã gặp một vài lần rằng tôi chỉ có thể sử dụng JPEG (chủ yếu trong các ứng dụng web) và đó là lý do tại sao tôi cần nó ở dạng JPEG. Cảm ơn, nhưng tôi không quen với nén dxt cũng như kết cấu trường khoảng cách, từ những gì tôi đã thấy trong wikipedia , thuật toán dxt khác với các thuật toán được sử dụng trong JPEG, bạn có nghĩa là chúng có thể được sử dụng để tạo JPEG không?
Armfoot

@Moshoka cảm ơn, nó liên quan nhiều hơn đến câu hỏi cuối cùng của bạn: làm thế nào để giảm thiểu "tác động thị giác" do các tạo tác trong ảnh JPEG mang lại?
Armfoot

Hãy nhớ rằng mozjpegmáy nén có một thủ thuật đặc biệt để tạo ra ít biến dạng hơn trên các loại hình ảnh này. (và nói chung nó hiệu quả hơn so với các nhà văn jpeg thông thường.) Bạn đã thử chưa?
Tên hiển thị

Câu trả lời:


9

Nén JPEG bao gồm ba bước chính:

  1. Lấy mẫu con Chroma . Những hình ảnh được chuyển đổi từ RGB vào không gian màu YCbCr, trong đó luma hoặc độ sáng (Y) được lưu trữ tách biệt khỏi chroma hoặc màu thành phần, Cb và Cr. Thành phần Y được giữ ở độ phân giải đầy đủ, nhưng Cb và Cr được ghép xuống, thường là độ phân giải đến một nửa trên mỗi trục. Điều này khai thác thực tế là hệ thống thị giác của con người nhạy cảm hơn với các chi tiết tốt về độ sáng hơn là màu sắc.

  2. Lượng tử hóa tần số. Các hình ảnh Y, Cb và Cr được chuyển đổi thành biểu diễn tần số, bằng cách chia chúng thành các khối 8x8 và áp dụng biến đổi cosine rời rạc (một biến thể của biến đổi Fourier) cho mỗi khối. Kết quả là một ma trận các số mô tả biên độ của các tần số không gian khác nhau trong khối. Những con số này sau đó có thể được lượng tử hóa (làm tròn đến một số bit chính xác được chọn). Các mức độ lượng tử hóa khác nhau được sử dụng cho các tần số khác nhau, khai thác độ nhạy tương đối thấp hơn của hệ thống thị giác của chúng tôi đối với các tần số cao. Đây là lúc cài đặt chất lượng của bộ mã hóa JPEG phát huy tác dụng: chất lượng thấp hơn sử dụng lượng tử hóa thô hơn.

  3. Mã hóa Entropy . Các giá trị DCT được lượng tử hóa được truyền qua một bộ mã hóa entropy, nén một cách dễ dàng luồng bit bằng cách sử dụng ít bit hơn để biểu thị các giá trị phổ biến hơn, giống như một tệp zip.

Bước 1 và 2 là những người mất mát, và mỗi người tạo ra một loại tạo tác riêng (mặc dù có một số chồng chéo). Lấy mẫu Chroma có xu hướng làm mờ các cạnh sắc nét giữa các vùng có màu khác nhau. Điều này đặc biệt có thể nhìn thấy trong nghệ thuật véc tơ, nơi các hình dạng có màu sắc rực rỡ nhặt những chiếc răng cưa luẩn quẩn quanh các cạnh của chúng. Lượng tử hóa tần số làm mờ các chi tiết tốt nói chung và cũng tạo ra các tạo tác hình khối ở các cài đặt chất lượng thấp, bởi vì DCT được thực hiện trên cơ sở từng khối. Nó đặc biệt hiển thị trên văn bản.

Đây là lý do tại sao JPEG thường không được sử dụng cho các hình ảnh có chứa đồ họa vector hoặc văn bản. Thuật toán nén của nó không phù hợp với các trường hợp đó, mặc dù chúng hoạt động tốt cho các ảnh và các hình ảnh khác có kết cấu phức tạp và các cạnh không quá sắc nét.


Cảm ơn bạn rất nhiều vì lời giải thích chi tiết của bạn, +1 +1. Tôi hiểu các thuật toán nén có những hạn chế đối với JPEG, nhưng tôi chỉ muốn tìm hiểu xem liệu có sự cân bằng đúng về lượng nén cùng với các tùy chọn khác (khi lưu nó) có thể làm cho các tạo tác ít bị chú ý hơn không. Tôi đã chỉnh sửa câu hỏi của tôi với các mẫu.
Armfoot
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.