QRCode Generator Library

QRCode 알고리즘 분석 및 생성 라이브러리 제작

조회 수 1715 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 첨부

QR 코드 크기

QR 코드는 버전 1 ~ 버전 40 까지 총 40개의 크기가 정의되어 있다. 버전 1이 QR 코드의 크기가 가장 작으며 버전이 올라갈 수록 QR 코드의 크기는 커진다. 

QR 코드는 버전이 증가할 때 마다 가로, 세로 각각 4 modules 씩 증가한다. 버전 1의 경우 { 21 x 21 } modules로 구성되며 버전 2의 경우 가로, 세로 각각 4 modules 증가하여 { 25 x 25 } modules로 구성된다. 크기가 가장 큰 버전 40의 경우는 { 177 x 177 } modules로 구성할 수 있다. 

 

QR 코드 구조

QR 코드는구성여백 ( Quiet Zone ) 을 포함한 정사각형 모양으로 기능 패턴 ( Function Patterns )과 인코딩 영역 ( Encoding Region )으로 구성된다. 기능 패턴은  { Finder Pattern, Separator, Timing Patterns, Alignment Patterns } 로 이루어져 있으며 해당 데이터는 인코딩되지 않는다. 인코딩 영역은 { Format Information, Version Information, Data and Error Correction Code }로 이루어져 있으며 데이터를 인코딩 하여 저장한다.

 

QRCode Structure_1.png

[ 그림 1 ] QR 코드 구조

 

[ 그림 1 ] 의 QR 코드 구조를 실제 QR 코드 ( Version 2 ) 를 예제로 하여 간략하게 설명한다. 

 

00. QRCode.png

[ 그림 2 ] QR Code Sample

Finder Pattern

 

01. Finter Pattern.png

[ 그림 3 ] Finder Pattern

일반적으로 좌측 상단, 우측 상단, 좌측 하단에 배치하며 QR 코드의 기준점이 된다. 기능 패턴 삽입 시 해당 패턴의 위치를 잡아주며 어느 위치와 방향에서도 QR 코드를 스캑하여 인식할 수 있게 해준다.

Finder Pattern은 바깥쪽부터 항상 흑백 -> 흰색 -> 흑백으로 구성되며 각각 1:1:3:1:1 의 비율을 유지한다.

FinderPatternStructure.png

[ 그림 4 ] Structure of Position Detection Pattern

 

Finder11311.png

[ 그림 5 ] Structure of Position Detection Pattern Ratio

Timing Pattern

 

04. Timing Pattern.png

[ 그림 6 ] Timing Pattern

QR 코드의 데이터들의 정확한 위치를 알기 위한 표시로 좌측 상단을 원점 ( 0, 0 )으로 가정하고 [ 그림 5 ]와 같이 Position Detection Patter 기준으로 각각 ( 6, 8 ) / ( 9, 7 ) 을 시작으로 좌측 하단, 우측 상단으로 흑백을 번갈아 가면서 채우는 패턴이다. 

 

Alignment Pattern

 

02. Alignment Pattern.png

[그림 7 ] Alignment Pattern

QR 코드가 왜곡되었을 때 사용하는 패턴으로 버전 2부터 지원하고 있으며 각 버전별로 위치가 정해져 있다.

Alignment Pattern은 바깥쪽부터 항상 흑백 -> 흰색 -> 흑백으로 구성되며 각각 1:1:1:1:1 의 비율을 유지한다.

 

Format Information

 

03. Format Information.png

[그림 8 ] Format Pattern

 

QR 코드 스캔 후 데이터를 추출할 때 가장 먼저 분석하는 부분으로 QR 코드의 각종 정보 ( ECC Level, Masking Pattern )를 저장하고 있다.

 

Version Information

버전 7 이상부터 지원하고 있으며 버전 정보를 저장하고 있다.

 

Encoding Region

05. Data.png

[그림 9 ] Encoding Region

 

실제 데이터를 저장하는 부분으로 Encoding 데이터와 오류 보정 ( Error Correction Code )가 저장되어 있다.

?

2017.11.04 02:07

00. 개요 및 개발 환경

조회 수 1183 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 첨부

개요 

QRCode_Frame.png

왼쪽 그림과 같이 정사각형 모서리에 3개의 정사각형이 존재하고 나머지 영역에 격자 무늬 패턴으로 구성된 그림을 본다면 우리는 누구나 QR 코드라고 말할 것이다. QR 코드가 무엇이라고 정확하게 정의 내리기는 힘들지만 이제는 일생 생활에서 쉽게 접할 수 있고 다양한 분야에서 많이 응용되어 사용하고 있다.

이에 이번 컬럼에서는 QR 코드 생성 라이브러리를 만들고자 한다.

QR 코드는 특허가 공개되어 있고 국제 표준 ( ISO / IEC 18004 ) 으로 제정되어 있기 때문에 알고리즘은 이미 공개가 되어 있고 QR 코드 표준 스펙을 구하는데 어렵지는 않다. 따라서 국제 표준 문서를 기반으로 하여 QR 코드 스펙을 파악하고 알고리즘을 분석하고자 한다.

QR 코드 생성 및 QR 코드 스캔 ( or 리더 ) 제품은 이미 많이 나와 있고 관련 라이브러리나 소스도 많이 공개되어 있기 때문에 이번 컬럼에서는 QR 라이브러리를 만드는데 초점을 맞추는 것 보다는 QR 코드 스펙 및 알고리즘을 분석하고 분석한 내용을 기반으로 코드화 시키는데 좀 더 초점을 맞추고자 한다.

 

개발 환경 및 테스트 환경

다음과 같은 환경에서 개발 및 테스트를 진행하고 ISO / IEC 18004 문서를 분석하여 설계를 진행한다.

  • AMD 라이젠 5 1600X ( 32GB RAM )
  • Windows 10 x64 Professional ( Red Stone 2 )
  • Visual Studio Professional 2015 ( Update 3 )
  • ISO/IEC 18004  : Information technology -- Automatic identification and data capture techniques -- QR Code bar code symbology specification


 

?

Board Pagination Prev 1 Next
/ 1