Không gian màu YCbCr được thể hiện trong hình ảnh JPEG như thế nào?


9

Tôi biết rằng một hình ảnh 24 bit dành riêng 8 bit cho R, G và B. Có phải nó chỉ dành cho không gian màu RGB. Trong không gian màu YCbCr cho hình ảnh JPEG 24 bit, các bit được phân phối như thế nào?

Câu trả lời:


3

Có một vài định dạng cho YCbCr. nói chung, mắt nhạy cảm hơn với những thay đổi về độ chói (Y, độ sáng) so với thay đổi sắc độ (Cb, Cr, màu). Vì vậy, có thể xóa một số thông tin sắc độ trong khi vẫn giữ được chất lượng hình ảnh.

Do đó, định dạng "đắt nhất" là 4: 4: 4, trong đó đối với mỗi thành phần luma (Y) có 1 thành phần Red chênh lệch (Cr) và một thành phần khác biệt Blue (Cb).

Sau đó, áp dụng nguyên tắc tôi đã đề cập, có 4: 2: 2 trong đó với mỗi 2 thành phần Y có 1 Cb và 1 Cr. Và nó còn đi xa hơn nữa đến 4: 1: 1 và 4: 2: 0, v.v. Thông tin thêm ở đây .


Các mẫu này dường như đề cập đến lấy mẫu tần số cho video, không phải mã hóa JPEG.
whuber

@whuber: Chúng thường được sử dụng để thảo luận về mã hóa video, nhưng JPEG cũng hỗ trợ độ chói với độ phân giải gấp đôi độ phân giải. Trong trường hợp JPEG, mặc dù đó là tùy chọn - sắc độ có thể là độ phân giải toàn phần hoặc nửa độ phân giải.
Jerry Coffin

1
Theo mặc định, GIMP sẽ sử dụng mẫu phụ sắc độ khi lưu JPEG, mặc dù nó dễ ghi đè. Không thể nhớ nếu điều này cũng áp dụng cho Photoshop.
thomasrutter

@thomasrutter, Photoshop chọn mẫu con dựa trên cài đặt chất lượng bạn chọn. Đây không phải là một lựa chọn độc lập.
Đánh dấu tiền chuộc

Các con số, nhân tiện, tham khảo số lượng mẫu trên 4 pixel ngang cho Y, Pr và Pb. Vì vậy, 4: 4: 4 có nghĩa là cả ba kênh lấy mẫu mỗi pixel; 4: 2: 2 có nghĩa là các kênh Pr và Pb chỉ lấy mẫu mỗi pixel thứ hai theo chiều ngang; 4: 1: 1 (Tôi không nghĩ rằng điều này từng được sử dụng trong nhiếp ảnh, chỉ trong video) có nghĩa là Pr và Pb chỉ lấy mẫu mỗi pixel thứ tư theo chiều ngang. 4: 2: 0 là độ lệch đặc biệt so với quy tắc này. Điều đó KHÔNG có nghĩa là không có kênh Pb. Điều đó có nghĩa là các kênh Pr và Pb được giảm một nửa theo cả hai chiều ngang và dọc, không chỉ theo chiều ngang.
thomasrutter

24

Một JPEG có thể bắt đầu với 8 bit trên mỗi kênh R, G và B, nhưng khi được lưu trong JPEG, nó được lưu trữ rất khác nhau, nơi không có "độ sâu bit" thực sự mà thay vào đó các giá trị được lưu trữ dưới dạng hệ số tần số của độ chính xác nhất định.

Trong JPEG , tốc độ lượng tử hóa có liên quan hơn , ảnh hưởng đến lượng thông tin bị vứt đi trong giai đoạn nén lượng tử hóa và do đó, mỗi hệ số chính xác đến mức nào. Tỷ lệ lượng tử hóa này được đặt theo cài đặt "chất lượng" khi bạn lưu JPEG trong photoshop. Tuy nhiên, nó không liên quan đến độ sâu bit như trong ảnh raster và thậm chí bạn có thể nói rằng ảnh JPEG không có độ sâu bit trong khi ở định dạng JPEG, mặc dù bộ mã hóa / giải mã JPEG bắt đầu bằng / kết thúc bằng 24 bit hình ảnh để quét.

Yếu tố chính khác có liên quan trong việc lưu JPEG là loại lấy mẫu phụ sắc độ . Trong JPEG, bạn có tùy chọn giảm một nửa chiều ngang hoặc cả hai chiều ngang và dọc, độ phân giải của các kênh màu (Pr và Pb) so với kênh độ chói (độ sáng). Khi giải nén, các kênh màu được nội suy và trong hầu hết các chủ đề ảnh, nó không tạo ra sự khác biệt lớn.

Đây là một bản tóm tắt sơ bộ về cách một hình ảnh được chuyển thành JPEG.

  1. Giá trị RGB được chuyển đổi thành giá trị Y, Pb, Pr. Không gian màu YPbPr phù hợp hơn để nén hiệu quả vì nó giữ thông tin độ chói, mang chi tiết nhất, chỉ trong một kênh. Chuyển đổi này là một hoạt động số học đơn giản, hoàn toàn có thể đảo ngược, ngoài việc có bất kỳ lỗi làm tròn nào.

  2. Nếu sử dụng bất kỳ mẫu phụ sắc độ nào (nói cách khác, sử dụng bất kỳ thứ gì ngoài chế độ 4: 4: 4), thì độ phân giải dọc và / hoặc ngang của các kênh Pb và Pr chỉ bị giảm đi một nửa. Do đó, các kênh này sẽ có kích thước pixel khác nhau với kênh độ chói. Điều này dẫn đến mất độ phân giải vĩnh viễn trong các kênh màu.

  3. Đối với mỗi kênh, hình ảnh được chia thành các khối 8 pixel cho 8 pixel, cung cấp 64 giá trị tuyến tính cho mỗi khối như vậy trong mỗi kênh. Nếu một kênh không phải là bội của 8 pixel ở cả hai chiều, thì các pixel cạnh sẽ được lặp lại (và sẽ bị loại bỏ khi giải nén - do đó, nén JPEG luôn hiệu quả hơn với các kích thước là bội số của 8 pixel hoặc 16 nếu bạn tính hệ số trong mẫu phụ sắc độ).

  4. 64 giá trị trong mỗi khối trải qua một phép biến đổi từ miền không gian sang miền tần số, trong trường hợp này được gọi là phép biến đổi cosin rời rạc. Bạn kết thúc với 64 hệ số, mỗi hệ số biểu thị biên độ của một bản đồ tần số cụ thể trên khu vực được chụp bởi khối đó. Giá trị đầu tiên là tần số thấp nhất có hiệu quả là giá trị trung bình của tất cả các pixel, cho đến các giá trị cuối cùng mô tả thành phần tần số cao nhất của khối. Tất cả các giá trị trước đó đều sai lệch nhiều hơn và quan trọng hơn đối với giao diện của hình ảnh cuối cùng so với các giá trị sau trong một khối. Hoạt động này là hoàn toàn có thể đảo ngược miễn là bạn sử dụng đủ độ chính xác.

  5. Sau đó là bước lượng tử hóa, trong đó mỗi trong số 64 hệ số bạn có được ở bước trước được chia cho một số (gọi là hệ số lượng tử hóa) và phần còn lại sẽ bị loại bỏ. Đây là nơi độ chính xác của các mẫu bị ảnh hưởng nhiều nhất, nhưng đó là nơi bạn có được sự tiết kiệm không gian lớn từ JPEG so với nén không mất mát. Vì mọi thứ đều nằm trong miền tần số kể từ lần chuyển đổi trước, sự mất độ chính xác này thực hiện công việc tốt nhất của nó trong việc duy trì chất lượng hình ảnh cảm nhận hơn là chỉ đơn giản là giảm độ sâu / độ chính xác của pixel trước khi chuyển đổi này. Mặt trái của quy trình này chỉ đơn giản là nhân với cùng một số bạn đã chia các hệ số cho, nhưng tất nhiên vì bạn đã ném phần còn lại đi nên cuối cùng bạn sẽ có độ chính xác thấp hơn của các hệ số. Điều này dẫn đến mất chất lượng vĩnh viễn,

  6. Sau quá trình lượng tử hóa này, điển hình cho nhiều hệ số sau này, các hệ số ít quan trọng hơn bằng 0, do đó chúng bị loại bỏ. Sau đó, một thói quen mã hóa có độ dài thay đổi (lossless) mã hóa tất cả các hệ số còn lại một cách hiệu quả, mặc dù mỗi loại có thể sử dụng một số bit khác nhau.

Không thể nói rằng một yếu tố lượng tử hóa nhất định tương đương với độ sâu bit nhất định vì lượng tử hóa không tạo ra dải như khi bạn giảm độ sâu bit, mà thay vào đó làm mất chi tiết về nhận thức tổng thể, bắt đầu từ những phần mà bạn nhận thấy ít hơn bởi vì nó có biên độ thấp như vậy cho tần số của nó.


2
Tôi nghĩ rằng bộ não của tôi chỉ nổ tung.
Nick Bedford

Lấy mẫu Chroma không chỉ dẫn đến "mất độ phân giải". Nó giới thiệu các hiện vật rất đáng chú ý đặc biệt là trong kênh màu đỏ.
Đánh dấu tiền chuộc

@Mark Tiền chuộc những đồ tạo tác đó không gì khác hơn là kết quả của việc giảm một nửa độ phân giải trong các kênh màu và nội suy cần thiết để giải thích cho điều đó sau khi giải nén. Nó không bao giờ tạo ra bất kỳ "tạo tác đáng chú ý" nào khác ngoài việc gây ra do làm mờ độ phân giải, mặc dù có thể tồn tại một số bộ giải mã làm hỏng phép nội suy này hoặc thực hiện phép nội suy lân cận gần nhất rất đơn giản, dẫn đến sự tắc nghẽn khá dễ nhận thấy đối với màu đỏ chi tiết về màu đen (hoặc màu đỏ tươi trên màu xanh, v.v.). Đây là một vấn đề phổ biến trên một số đầu DVD đầu tiên chẳng hạn.
thomasrutter

5
Tôi không nghĩ rằng tôi đã từng thấy một lời giải thích tốt hơn, dễ hiểu hơn về jpeg - hoặc thực sự mất mát - nén hình ảnh. xác định +1
jay.lee

Xin lỗi, tôi không có ý ám chỉ rằng việc lấy mẫu con gây ra các tạo tác. Chỉ là các lỗi hiện có từ lượng tử hóa đã tăng lên gấp 2 lần, khiến chúng trở nên rõ ràng hơn nhiều. Tôi nghĩ điều quan trọng cần biết là hiệu ứng có thể nhìn thấy của việc lấy mẫu không chỉ là một chút mờ nhạt.
Đánh dấu tiền chuộc

1

Đại diện cho sắc độ (Cb Cr) trong các kênh riêng biệt từ luma (Y) có tác động tích cực khác đến nén. Hầu hết các thông tin có thể nhìn thấy là trong kênh luma. Mắt người chịu được cả độ phân giải không gian thấp hơn và lượng tử hóa mạnh hơn trong các kênh sắc độ. Vì vậy, một hình ảnh được nén mạnh mẽ có thể sẽ tiêu tốn khoảng 10% dung lượng tệp cho sắc độ và phần còn lại cho độ sáng, và trông vẫn ổn.

Vào cuối ngày, nó vẫn bị nén mất.


-1

Khoảng 8 bit cho mỗi kênh, nhưng có một số cách hơi khác nhau để làm điều đó. Các chi tiết được đưa ra trong bài viết Wikipedia trên YCbCr .


Điều này đã được nêu trong câu hỏi. Cung cấp một câu trả lời chi tiết hơn.
Nick Bedford

@Nick Chính xác thì "cái này" được nêu trong câu hỏi? Câu hỏi, như hiện tại, cho biết "Trong không gian màu YCbCr cho hình ảnh JPEG 24 bit, các bit được phân phối như thế nào?" Tôi đã nói cách chúng được phân phối, giả sử - như bất kỳ ai hiểu câu hỏi sẽ - rằng các kênh là Y, Cb và Cr. Câu trả lời của tôi là một bản tóm tắt chính xác của bài viết Wikipedia. Chính sách SE là cung cấp các bản tóm tắt thay vì sao chép tài liệu bán buôn (mặc dù nó dễ dàng, tôi thừa nhận, để cung cấp một số ví dụ giới hạn về trích dẫn dài ở nơi khác trên trang web này).
whuber

Tôi nghĩ rằng loại câu trả lời này, mặc dù không tuyệt vời như một lời giải thích đầy đủ, tốt hơn nhiều so với một câu trả lời chỉ cắt và dán từ Wikipedia, hoặc thậm chí diễn giải toàn bộ bài viết trên Wikipedia. Nếu Wikipedia là tốt, nói với mọi người về nó là hữu ích. Và nếu đó là tất cả câu trả lời của bạn đang đóng góp, hãy thẳng thắn và chỉ đưa ra một bản tóm tắt nhanh chóng và một liên kết là chính xác điều cần làm.
Xin vui lòng đọc hồ sơ của tôi
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.