리드-솔로몬 오류 정정

다른 이름: 리드-솔로몬 부호, RS 코드, Reed–Solomon

정의

리드-솔로몬 오류 정정은 손상된 QR코드도 스캔되게 하는 수학이에요. 데이터에 검사용 코드워드를 더해서, 리더가 빠졌거나 잘못된 바이트를 정해진 한계까지 복원할 수 있게 해요.

유래와 폭넓은 쓰임

리드-솔로몬 부호는 1960년 어빙 S. 리드와 구스타브 솔로몬이 설명했어요. 개별 비트가 아니라 보통 바이트인 기호 전체를 다루기 때문에, 긁힘이나 얼룩 같은 연속적인 손상을 잘 처리해요.

같은 계열의 부호가 CD, DVD, 블루레이 디스크, 일부 디지털 TV와 위성 통신, 그리고 Data Matrix ECC 200, Aztec 코드, PDF417 등 다른 2D 바코드의 데이터를 보호해요.

QR코드에서의 사용

QR코드는 각 8비트 코드워드를 유한체 GF(256)의 원소로 다루며, 원시 다항식 x^8 + x^4 + x^3 + x^2 + 1(16진수 0x11D)로 만들어요. 데이터 코드워드를 생성 다항식으로 나누고, 그 나머지가 뒤에 붙는 오류 정정 코드워드가 돼요.

더 큰 코드는 데이터를 여러 블록으로 나누고 블록마다 자체 오류 정정 코드워드를 둬요. 그런 다음 코드워드를 격자에 배치할 때 블록들을 인터리빙해서, 한 곳의 손상이 한 블록에 몰리지 않고 여러 블록에 나뉘게 해요.

얼마나 고칠 수 있나요

블록에 오류 정정 코드워드가 n개 있으면, 디코더는 위치를 모르는 코드워드는 최대 n/2개, 위치를 아는 코드워드(소거)는 최대 n개까지 정정할 수 있어요. 둘이 섞인 경우에는 오류 하나는 둘, 소거 하나는 하나로 센다는 규칙을 따라요.

그래서 깨끗하고 평평한 영역을 로고가 덮은 코드도 스캔될 수 있어요. 똑똑한 리더는 가려진 영역을 소거로 다룰 수 있지만, 임의의 손상은 디코더가 먼저 위치를 찾아야 해서 고치기가 더 어려워요.

  • 위치를 모르는 오류: EC 코드워드 수의 절반까지
  • 소거(위치를 아는 경우): EC 코드워드 수까지
  • 체: GF(256), 다항식 0x11D
  • 블록은 인터리빙되어 연속 손상을 분산해요

자주 묻는 질문

QR코드의 리드-솔로몬이란 무엇인가요?

데이터에 추가 코드워드를 더하는 오류 정정 방식이에요. 스캐너는 이를 이용해 손상되었거나 읽을 수 없는 코드워드를 복원해요.

리드-솔로몬 부호는 누가 발명했나요?

1960년에 발표한 어빙 S. 리드와 구스타브 솔로몬이에요. 이 부호는 지금 광디스크, 통신, 대부분의 2D 바코드에 쓰여요.

가운데에 로고가 있어도 QR코드가 작동하는 이유는 무엇인가요?

로고가 덮은 모듈을 리드-솔로몬 오류 정정이 복원할 수 있기 때문이에요. 가려진 영역이 오류 정정 용량 안에 있고 파인더 패턴이 깨끗하다면 작동해요.

출처와 표준

모든 용어