Từ điển

Quy trình mã hóa là gì?

Encoding Process là tên gọi phương pháp mà một tệp JPEG đã dùng để nén dữ liệu ảnh của nó, chẳng hạn như baseline hoặc progressive. Giá trị này được đọc trực tiếp từ chính dữ liệu hình ảnh.

encoding-process

Quy trình mã hóa là phương pháp biến một bức ảnh thành dữ liệu hình ảnh đã nén. Trong báo cáo metadata, Encoding Process cho biết phương pháp mà tệp JPG đã dùng, ví dụ Baseline DCT, Huffman coding.

Giá trị này có 2 phần. Phần thứ nhất cho biết dữ liệu ảnh đã được nén như thế nào. Phần thứ hai cho biết kết quả được gói lại thành các bit ra sao.

Những tệp nào chứa nó

Encoding Process là một trường JPEG và mọi ảnh JPEG đều có. Tiêu chuẩn JPEG đặt thông tin này trong phần header ngắn nằm trước dữ liệu ảnh đã nén.

Giá trị đến từ đâu

Không máy ảnh hay chương trình nào ghi Encoding Process như một thẻ riêng. Một trình đọc như ExifTool suy ra giá trị này từ dấu Start of Frame, là phần mở đầu của header đó. Tiêu chuẩn JPEG định nghĩa một dấu khác nhau cho từng quy trình mã hóa.

Cùng header đó cũng lưu chiều rộng và chiều cao ảnh, số bit trên mỗi mẫu và số thành phần màu. ExifTool cũng suy ra chroma subsampling từ header này.

Vì giá trị này mô tả cách lưu trữ dữ liệu ảnh, bạn không thể sửa nó như một thẻ bình thường. Encoding Process chỉ thay đổi khi một chương trình lưu lại ảnh với các thiết lập khác.

Giá trị trông như thế nào

ExifTool hiển thị một trong 13 giá trị. Theo Thư viện Quốc hội Hoa Kỳ, các giá trị thường gặp là baseline và progressive.

  • Baseline DCT, Huffman coding
  • Extended sequential DCT, Huffman coding
  • Progressive DCT, Huffman coding
  • Lossless, Huffman coding
  • Sequential DCT, differential Huffman coding
  • Progressive DCT, differential Huffman coding
  • Lossless, Differential Huffman coding
  • Extended sequential DCT, arithmetic coding
  • Progressive DCT, arithmetic coding
  • Lossless, arithmetic coding
  • Sequential DCT, differential arithmetic coding
  • Progressive DCT, differential arithmetic coding
  • Lossless, differential arithmetic coding

Ý nghĩa của từng phần trong giá trị

  • DCT là viết tắt của discrete cosine transform. Các quy trình JPEG dựa trên DCT là nén mất dữ liệu: chúng loại bớt một số chi tiết để tệp nhỏ hơn.
  • Baseline là quy trình DCT cơ bản. Nó dùng 8 bit trên mỗi mẫu và mã hóa Huffman.
  • Sequential nghĩa là mỗi thành phần màu được lưu trong một lần quét duy nhất.
  • Extended sequential hoạt động giống baseline, nhưng cũng cho phép 12 bit trên mỗi mẫu và mã hóa số học.
  • Progressive lưu ảnh trong nhiều lần quét. Mỗi lần quét thường cải thiện chất lượng, nên trình xem có thể hiển thị ảnh nháp trước rồi dần làm nét hơn.
  • Lossless không dùng DCT. Ảnh sau khi giải mã giống hệt ảnh gốc.
  • differential thuộc chế độ phân cấp. Ở đây mỗi khung sau chỉ lưu phần khác biệt so với khung trước đó.
  • Huffman coding và arithmetic coding là 2 cách nén không mất dữ liệu để gói dữ liệu vào ít bit hơn.

Tại sao điều này quan trọng đối với tệp của bạn

Tiêu chuẩn JPEG không bắt buộc mọi chương trình phải hỗ trợ mọi quy trình. Mọi bộ giải mã DCT đều phải hỗ trợ baseline, nên một tệp baseline là lựa chọn an toàn khi ảnh cần mở được ở khắp nơi.

Các quy trình khác có thể không mở được trong một số chương trình. Theo Thư viện Quốc hội Hoa Kỳ, quy trình lossless ban đầu không được hỗ trợ rộng rãi trong các ứng dụng. Một biến thể lossless dùng mã hóa Huffman được sử dụng trong phiên bản 1.1 của định dạng raw DNG của Adobe.

Giá trị có DCT cho biết một số chi tiết đã bị loại bớt khi ảnh được lưu. Lưu lại tệp lần nữa sẽ không khôi phục được các chi tiết đó. Trường này chỉ mô tả cách lưu trữ ảnh và không chứa thông tin cá nhân.

Meta Keys