QR코드의 작동 원리

다른 이름: QR코드 인코딩, QR코드 디코딩, QR코드 원리

정의

QR코드는 데이터를 코드워드로 바꾸고, 리드-솔로몬 오류 정정을 더한 뒤, 카메라가 코드를 찾고 바로잡고 읽도록 돕는 고정 패턴 둘레의 격자에 비트를 배치하는 방식으로 작동해요.

데이터에서 패턴까지

QR코드를 만들 때는 먼저 데이터에 맞는 인코딩 모드(숫자, 영숫자, 바이트, 한자)를 골라요. 인코더는 데이터를 비트로 바꿔 8비트 코드워드로 나누고, 선택한 레벨에 따라 리드-솔로몬 오류 정정 코드워드를 더해요. 그런 다음 데이터가 들어가는 가장 작은 버전을 골라요.

코드워드는 고정 패턴을 건너뛰는 지그재그 경로를 따라 격자에 배치돼요. 마지막으로 인코더는 큰 빈 영역이나 헷갈리는 모양이 생기지 않도록 여덟 가지 마스크 패턴 중 하나를 적용하고, 마스크와 오류 정정 레벨을 포맷 정보에 기록해요.

  • 인코딩 모드 선택
  • 데이터 인코딩 및 오류 정정 코드워드 추가
  • 버전(크기) 선택
  • 파인더, 타이밍, 정렬 패턴 배치
  • 데이터 모듈 채우기
  • 여덟 가지 마스크 중 가장 좋은 것을 적용하고 포맷 정보 기록

카메라 이미지에서 데이터까지

해독은 같은 단계를 거꾸로 실행해요. 스캐너는 대부분의 이미지에서 눈에 띄는 어둡고 밝은 1:1:3:1:1 비율을 가진 파인더 패턴 세 개를 찾고, 이를 타이밍 패턴 및 정렬 패턴과 함께 사용해 격자를 매핑해요. 포맷 정보를 읽고, 마스크를 벗기고, 코드워드를 모아요.

이어서 리드-솔로몬 디코딩이 잘못 읽은 코드워드를 오류 정정 레벨의 한계까지 복구해요. 손상이 너무 크면 코드는 잘못된 데이터를 내놓는 대신 읽기에 실패해요. QR코드가 엉뚱한 결과를 내는 일이 드문 이유예요.

크기와 대비가 중요한 이유

모든 단계는 카메라가 어두운 모듈과 밝은 모듈을 구별할 수 있다는 데 달려 있어요. 작은 모듈, 낮은 대비, 빛 반사, 흐림, 없는 콰이어트 존은 모두 더 많은 모듈을 불확실하게 만들고, 오류 정정이 흡수할 수 있는 양에는 한계가 있어요. 데이터를 짧게, 대비를 강하게, 여백을 깨끗하게 유지하면 디코더가 가장 쉽게 읽을 수 있어요.

자주 묻는 질문

휴대폰은 QR코드가 어디 있는지 어떻게 알아요?

모서리에 있는 큰 정사각형 파인더 패턴 세 개를 찾아요. 특유의 1:1:3:1:1 비율 덕분에 어느 각도에서도 찾을 수 있고 방향도 알아낼 수 있어요.

QR코드에는 왜 마스크 패턴이 있나요?

마스크는 정해진 패턴으로 모듈을 뒤집어서, 큰 단색 영역이나 파인더 패턴처럼 보이는 모양이 생기지 않게 해요. 인코더는 여덟 가지 마스크를 모두 시도해서 가장 안정적으로 읽히는 것을 골라요.

QR코드는 거꾸로 놓아도 읽히나요?

네. 파인더 패턴이 스캐너에 방향을 알려 주기 때문에 QR코드는 어떤 각도로 돌려도 읽을 수 있어요.

출처와 표준

모든 용어