Sửa lỗi Reed–Solomon

Còn gọi là: Reed–Solomon error correction, mã Reed-Solomon, mã RS

Định nghĩa

Sửa lỗi Reed–Solomon là phép toán giúp mã QR bị hỏng vẫn quét được. Nó thêm các từ mã kiểm tra vào dữ liệu để đầu đọc dựng lại các byte bị thiếu hoặc sai, đến một giới hạn nhất định.

Nguồn gốc và ứng dụng rộng hơn

Mã Reed–Solomon được Irving S. Reed và Gustave Solomon mô tả năm 1960. Chúng hoạt động trên toàn bộ ký hiệu, thường là byte, thay vì từng bit đơn lẻ, nên xử lý tốt các đợt hư hại liên tiếp như vết xước hay vết bẩn.

Cùng họ mã này bảo vệ dữ liệu trên đĩa CD, DVD và Blu-ray, trong một số đường truyền truyền hình số và vệ tinh, và trong các mã vạch 2D khác gồm Data Matrix ECC 200, mã Aztec và PDF417.

Mã QR dùng nó thế nào

Mã QR coi mỗi từ mã 8 bit là một phần tử của trường hữu hạn GF(256), xây dựng bằng đa thức nguyên thủy x^8 + x^4 + x^3 + x^2 + 1 (hex 0x11D). Các từ mã dữ liệu được chia cho một đa thức sinh, và phần dư trở thành các từ mã sửa lỗi nối vào sau chúng.

Mã lớn hơn chia dữ liệu thành nhiều khối, mỗi khối có từ mã sửa lỗi riêng. Các khối sau đó được xen kẽ khi đặt từ mã vào lưới, để một vết hỏng được dàn ra nhiều khối thay vì đè nặng lên một khối.

Nó sửa được bao nhiêu

Với n từ mã sửa lỗi trong một khối, bộ giải mã có thể sửa tối đa n/2 từ mã có vị trí chưa biết, hoặc tối đa n từ mã có vị trí đã biết, gọi là xóa (erasure). Các trường hợp hỗn hợp theo quy tắc mỗi lỗi tính hai lần và mỗi lần xóa tính một lần.

Vì vậy mã có vùng sạch, phẳng bị logo che vẫn quét được: một đầu đọc thông minh có thể coi vùng bị che là các vị trí bị xóa, còn hư hại ngẫu nhiên khó sửa hơn vì bộ giải mã trước hết phải tìm ra nó.

  • Lỗi không biết vị trí: tối đa một nửa số từ mã EC
  • Xóa (vị trí đã biết): tối đa bằng số từ mã EC
  • Trường: GF(256), đa thức 0x11D
  • Các khối được xen kẽ để dàn trải hư hại liên tiếp

Câu hỏi thường gặp

Reed–Solomon trong mã QR là gì?

Đó là phương pháp sửa lỗi thêm các từ mã phụ vào dữ liệu. Máy quét dùng chúng để dựng lại các từ mã bị hỏng hoặc không đọc được.

Ai phát minh ra mã Reed–Solomon?

Irving S. Reed và Gustave Solomon, công bố năm 1960. Ngày nay các mã này được dùng trong đĩa quang, truyền thông và hầu hết mã vạch 2D.

Vì sao mã QR có logo ở giữa vẫn dùng được?

Logo che các mô-đun mà sửa lỗi Reed–Solomon có thể dựng lại. Nó hoạt động miễn là vùng bị che nằm trong khả năng sửa lỗi và các ô định vị còn rõ.

Nguồn và tiêu chuẩn

Tất cả thuật ngữ