본문 바로가기
C++ 200제/코딩 IT 정보

QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드)

by vicddory 2017. 2. 18.

QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드)


큐알코드(QR code)는 흑백 격자 무늬 패턴으로 정보를 나타내는 매트릭스 형식의 이차원 바코드이다. QR코드란 주로 일본, 한국, 영국, 미국등에서 많이 사용되며 명칭은 덴소 웨이브의 등록상표 Quick Response에서 유래하였다. 


큐알코드는 종래에 많이 쓰이던 바코드의 용량 제한을 극복하고 그 형식과 내용을 확장한 2차원의 바코드로 종횡의 정보를 가져서 숫자 외에 문자의 데이터를 저장할 수 있다. 보통 디지털 카메라나 전용 스캐너로 읽어들여 활용한다.



qr 코드 png 안드로이드[바코드 인식 활용]




QR코드 원리

기존의 바코드는 기본적으로 가로 배열에 최대 20여 자의 숫자 정보만 넣을 수 있는 1차원적 구성이지만, QR코드 원리는 가로, 세로를 활용하는 2차원적 구성이다.


 숫자

 최대 7,079

 문자

 최대 4,296

 한자

 최대 1,817자


때문에 바코드는 기껏해야 특정 상품명이나 제소사 등의 정보만 기록할 수 있었지만, QR코드란 긴 문장의 인터넷 주소(URL)나 사진 및 동영상 정보, 지도 정보, 명함 정보 등을 모두 담을 수 있다.


큐알코드의 구조를 살펴보면,



QR 코드의 구조 - 원리[QR코드 원리] 큐알 코드 구조



QR코드란? 6가지 구조


■ Find Pattern

오른쪽/왼쪽 상단, 그리고 왼쪽 하단 귀퉁이의 3 by 3, 5 by 5, 7 by 7의 상자로 둘러싸져 있는 큰 네모박스


■ Format Information

큐알코드의 자세한 인코딩 정보를 담고있는 일종의 헤더와 같은 영역


■ Version Information

QR코드 보드 크기의 사이즈. 버전 정보를 담고있는 영역


■ Timing Belt

모든 큐알코드에 항상 같은 위치에 같은 식별 패턴이 공통적으로 들어가게 되는 요소


■ Alignmemt Pattern

배열 패턴, 실제로 Find Pattern을 제외한 상대적으로 크기가 작은 네모들. 이 패턴은 QR코드 원리에서 보드에 인코딩 될 때 일정하게 배열되도록 패턴을 잡도록 도와주는 부분


■ Encoded Information

위의 요소들을 제외한 QR코드의 모든 부분들. 위의 언급된 각각의 QR코드 요소들은 BCH알고리즘에 의해 생성되며 큐알코드는


  • 숫자
  • alphanumaric value
  • 유니코드
  • 간지체 등

담는 정보에 따라 인코딩 룰이 달라지고 각기 다른 방식의 인풋들도 함께 사용될 수 있다.


QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드)[바코드 인식 활용]




안드로이드 QR코드

안드로이드 QR코드 원리는 숫자 최대 7,089자, 문자(ASCII) 최대 4,296자, 이진(8비트) 최대 2,953바이트, 한자 최대 1,817자를 저장할 수 있으며, 일반 바코드 보다 인식속도와 인식률, 복원력이 뛰어나다.


안드로이드 기반 오픈소스인 Zxing 라이브러리(Android QR 코드 오픈 소스)을 이용하여 개발할 경우, 인식 Process는 크게 3단계로 이루어진다. 


  1. 카메라에 들어오는 QR코드 영상을 변환하는 Image Conversion,
  2. 이미지를 변환하여 0과 1로 이루어진 Raw Data로 변환하여 QR코드의 위치 인식 심볼을 검출하고 방향을 조정하여 패턴을 정렬하는 QR Detecting,
  3. Raw Data를 Decoding하여 데이터를 만드는 QR Decoding 단계이다.


안드로이드 QR 코드 - 3개의 포지션과 패턴[QR코드란] 안드로이드 QR 코드 - 3개의 포지션과 패턴


QR코드 원리는 3개의 포지션 패턴과 버전정보 영역, 데이터 영역, 정렬 패턴으로 이루어져 있다.


Image Conversion 단계에서 변환된 데이터를 이용하여 가로 방향으로 포지션 패턴의 1-1-3-1-1 비율에 해당하는 패턴을 검출한 뒤 세로로 다시 패턴의 비율을 대각으로 체크하여 3개의 포지션 패턴의 중심을 결정한다.


포지션 패턴의 중심이 결정되면 방향을 보정하는 Perspective Correction을 하게 되는데 기울거나 왜곡된 이미지를 정방형의 사격형틀에 매핑하여 정방형의 큐알코드 데이터를 만든 후 Decoder에서 QR코드의 데이터를 최종적으로 생성하게 된다.


 QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드)

written by vicddory

댓글