KR20150079843A - 이차원 코드 - Google Patents

이차원 코드 Download PDF

Info

Publication number
KR20150079843A
KR20150079843A KR1020157013912A KR20157013912A KR20150079843A KR 20150079843 A KR20150079843 A KR 20150079843A KR 1020157013912 A KR1020157013912 A KR 1020157013912A KR 20157013912 A KR20157013912 A KR 20157013912A KR 20150079843 A KR20150079843 A KR 20150079843A
Authority
KR
South Korea
Prior art keywords
position detection
dimensional code
detection pattern
block
data
Prior art date
Application number
KR1020157013912A
Other languages
English (en)
Other versions
KR101669544B1 (ko
Inventor
유타카 호소카네
Original Assignee
교도 인사쯔 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 교도 인사쯔 가부시키가이샤 filed Critical 교도 인사쯔 가부시키가이샤
Publication of KR20150079843A publication Critical patent/KR20150079843A/ko
Application granted granted Critical
Publication of KR101669544B1 publication Critical patent/KR101669544B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06037Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06046Constructional details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06046Constructional details
    • G06K19/06075Constructional details the marking containing means for error correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06046Constructional details
    • G06K19/06131Constructional details the marking comprising a target pattern, e.g. for indicating the center of the bar code or for helping a bar code reader to properly orient the scanner or to retrieve the bar code inside of an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K2019/06215Aspects not covered by other subgroups
    • G06K2019/06262Aspects not covered by other subgroups with target- or other orientation-indicating feature

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Analysis (AREA)

Abstract

오염, 촬영 블러 등의 영향을 받기 어려워 다양한 촬영 조건에서 촬영된 경우에도 정확한 인식이 가능한 이차원 코드가 개시되어 있다. 개시되어 있는 이차원 코드는 이진 코드로 표현되는 데이터를 셀화하여 이차원 매트릭스 형태로 패턴으로서 배치한 이차원 코드이며, 위치 검출 패턴과, 위치 검출 패턴을 제외한 이차원 매트릭스의 영역을 분할한 복수의 데이터 블록과, 인접한 복수의 데이터 블록 사이에 배치된 분리스페이스를 갖는다.

Description

이차원 코드{TWO-DIMENSIONAL CODE}
본 발명은 이차원 코드(code)에 관한 것이다.
이차원 코드는 일차원 코드와 비교하여 좁은 면적에 많은 정보를 저장할 수 있어 제품 관리나 휴대폰을 이용한 웹 유도 등 다양한 용도로 널리 활용되고 있다. 이차원 코드는 다양한 각도로 촬영되기 때문에 이차원 코드 이미지는 화면에 있어서 크기 및 방향이 일정하지 않으며, 이미지의 왜곡 및 이미지의 아웃포커스(out of focus) 등도 발생한다. 또한, 이차원 코드 자체가 오염되어 있을 경우에는 일부의 이미지를 판별할 수 없는 사태도 발생한다.
한편, 일반적인 이차원 코드는 데이터 효율을 중시했기 때문에 오염이나 아웃포커스 촬영 등에 영향을 받기 쉽다. 예를 들어 상기 복수의 이차원 코드가 한 화면에 투영되는 재고 조사의 예에서는 모든 이차원 코드에 촬영 포커스를 맞추는 것은 어려워 아웃포커스가 생기기 쉽다. 아웃포커스, 블러(blur)가 생긴 이차원 코드의 이미지에 대해서는 보정이 어려우므로 소프트웨어로 개선하는데 한계가 있어 오토포커스 기능, 셔터 스피드를 높이는 등 하드웨어의 개선으로 해결할 필요가 있고, 그 때문에 코스트가 증가한다는 문제가 있다. 최근에는 휴대폰에 설치된 카메라로 이차원 코드를 인식한다는 요구가 있지만, 촬영할 때 카메라의 기울어짐, 흔들림, 포커스가 불충분하기 때문에 발생하는 아웃포커스 등 이차원 코드의 분석에 있어서는 문제가 발생하기 쉬운 촬영 환경이며, 코스트, 노이즈의 관계로부터도 휴대폰 카메라 등의 개선은 어려운 상황이다.
특개 평 7-254037호 공보 일본 특허공개 2004-234318호 공보 일본 특허공개 2007-241328호 공보 일본 특허공개 2009-163720호 공보 일본 특허공개 2009-075873호 공보
다양한 이차원 코드가 사용, 제안되고 있지만, 여러 가지 촬영 조건에서 촬영되었을 경우에도 정확한 인식을 짧은 시간에 행할 수 있는 이차원 코드가 요망되고 있다.
본 발명은 이차원 코드의 오염, 촬영 블러 등의 영향을 받기 어려워 다양한 촬영 조건에서 촬영되었을 경우에도 짧은 시간에 정확한 인식이 가능한 이차원 코드의 실현을 목적으로 한다.
상기 목적을 실현하기 위해 본 발명의 이차원 코드는, 이진 코드로 표현되는 데이터를 셀화하여 이차원 매트릭스 상에 패턴으로서 배치한 이차원 코드이며, 위치 검출 패턴과, 위치 검출 패턴을 제외한 이차원 매트릭스의 영역을 분할한 복수의 데이터 블록과, 인접한 복수 데이터 블록 사이에 배치된 분리스페이스를 구비한 것을 특징으로 한다.
이로써 각 데이터 블록에 있어서 셀의 명암 판정 정확도가 향상된다.
복수의 데이터 블록은 데이터 블록이 복수의 표현 중 어느 하나인지를 나타내는 포맷 정보 블록을 포함하는 것이 바람직하다.
이로써 이차원 코드의 사용 목적 및 사용 환경에 따라 이차원 코드가 갖는 데이터량 및 중복성을 적절하게 설정할 수 있다.
복수의 표현 중 하나는 중앙 셀 이외의 8개 셀은 4개의 명 셀 및 4개의 암 셀을 포함하도록 고정되며, 140 패턴을 나타내는 7비트 표현이다.
복수의 표현 중 다른 하나는 중앙 셀 이외의 8개 셀은 4개의 명 셀 및 4개의 암 셀을 포함하도록 고정되고 또한 중앙 셀이 명 또는 암으로 고정되며, 70 패턴을 나타내는 6비트 표현이다.
위치 검출 패턴은 데이터 블록보다 큰 면적을 갖는 것이 바람직하다.
또한, 각 데이터 블록은 3×3 셀을 갖고, 분리스페이스는 1셀 이상의 폭을 갖고, 위치 검출 패턴은 4셀 이상의 가로 폭과 4셀 이상의 세로 폭을 갖는 것이 바람직하다.
이로써 위치 검출 패턴의 검출 정확도가 향상된다.
복수의 데이터 블록이 포맷 정보 블록을 포함한 이차원 코드를 분석하는 이차원 코드 분석 방법은, 위치 검출 패턴을 식별하고, 식별된 위치 검출 패턴에 따라 포맷 정보 블록의 위치를 산출하고, 포맷 정보 블록을 분석하여 데이터 블록이 복수의 표현 중 어느 하나인지를 판정하고, 데이터 블록을 판정한 표현에 따라 분석한다.
또한, 상기 이차원 코드의 생성 시스템은, 위치 검출 패턴을 이차원 매트릭스의 소정 위치에 배치하는 위치 검출 패턴 배치 수단과, 상기 위치 검출 패턴을 배치하는 영역을 제외한 이차원 매트릭스의 영역을, 사이에 분리스페이스가 배치된 복수의 데이터 블록으로 분할하는 분할 수단과, 복수의 데이터 블록에서, 이차원 코드의 분석에 필요한 정보를 배치하는 정보 블록을 선택하는 정보 블록 배치 수단과, 기록할 메시지마다 메시지 헤더를 첨가하고 또한 메시지의 끝에 종단 메시지 헤더를 첨가한 기록 데이터를, 위치 검출 패턴 및 정보 블록을 제외한 이차원 매트릭스의 영역에 순차적으로 배치하는 메시지 데이터 배치 수단을 구비한다.
본 발명의 이차원 코드를 사용함으로써 다양한 열화가 발생한 이차원 코드의 촬영 이미지이어도 정확한 분석이 가능하다.
도 1은 특허문헌1에 기재된 이차원 코드를 나타내는 도면이다.
도 2는 제1 실시예의 이차원 코드를 나타내는 도면이다.
도 3은 제1 실시예의 이차원 코드에 있어서 복수의 블록의 배치를 나타내는 도면이다.
도 4는 분리스페이스를 갖는 이차원 코드와, 분리스페이스를 갖지 않은 이차원 코드에 있어서 데이터에 따라 셀을 명 또는 암으로 했을 경우의 패턴 예를 나타내는 도면이다.
도 5는 제1 실시예에 있어서 데이터 블록의 데이터 타입을 설명하는 도면이다.
도 6은 20 패턴 표현의 데이터 타입을 설명하는 도면이다.
도 7은 제1 실시예의 이차원 코드에 따라 생성된 이차원 코드의 예를 나타내는 도면이다.
도 8은 제1 실시예의 이차원 코드에 따라 생성된 이차원 코드의 다른 예를 나타내는 도면이다.
도 9는 제2 실시예의 이차원 코드를 나타내는 도면이다.
도 10은 제2 실시예의 이차원 코드에 따라 생성된 이차원 코드의 예를 나타내는 도면이다.
도 11은 제2 실시예의 이차원 코드의 위치 검출 패턴을, 사이즈 및 형상이 다른 이차원 패턴으로 적용한 변형예를 나타내는 도면이다.
도 12는 변형예의 4개의 위치 검출 패턴의 예를 나타내는 도면이다.
도 13은 요청에 따라 이차원 코드를 생성하여 제공하는 생성 시스템의 하드웨어 구성을 나타내는 도면이다.
도 14는 사용자가 사용자 하드웨어를 통해 시스템 하드웨어에 액세스하여 원하는 이차원 코드를 생성하는 인코딩 처리의 절차를 나타내는 플로우차트이다.
도 15는 사용자가 사용자 하드웨어를 통해 시스템 하드웨어에 액세스하여 원하는 이차원 코드를 생성하는 인코딩 처리의 절차를 나타내는 플로우차트이다.
도 16은 사용자가 사용자 하드웨어를 통해 시스템 하드웨어에 액세스하여 원하는 이차원 코드를 생성하는 인코딩 처리의 절차를 나타내는 플로우차트이다.
도 17은 제1 실시예의 이차원 코드를 판독하여 이차원 코드를 분석하는 이차원 코드 분석 장치의 하드웨어 구성을 나타내는 도면이다.
도 18은 사용자가 촬영한 이차원 코드를 분석하는 디코딩 처리의 절차를 나타내는 플로우차트이다.
도 19는 사용자가 촬영한 이차원 코드를 분석하는 디코딩 처리의 절차를 나타내는 플로우차트이다.
도 20은 사용자가 촬영한 이차원 코드를 분석하는 디코딩 처리의 절차를 나타내는 플로우차트이다.
도 21은 위치 검출 패턴 후보의 형상 체크를 설명하는 도면이다.
본 발명의 실시예를 설명하기 전에 현재 널리 사용되고 있는 일반적인 이차원 코드에 대해 설명한다.
도 1은 특허문헌1에 기재된 이차원 코드를 나타내는 도면이다.
도 1에 나타낸 바와 같이 이차원 코드(1)는 3개의 모서리에 배치된 3개의 위치 검출 패턴(위치결정용 심볼)(2)과 데이터 영역(3)을 갖고 있다. 데이터 영역(3)은 이차원 코드(1)의 영역에서 3개의 위치 검출 패턴(2) 및 그 주변의 스페이스 부분을 제외한 부분이다. 각 위치 검출 패턴(2)은 암부인 정사각형 테두리(2a) 및 정사각형 테두리(2a) 내에 배치된 정사각형(2c)과, 테두리(2a)와 정사각형(2c) 사이의 명부인 정사각형 테두리(2b)를 갖고 있다. 촬영된 위치 검출 패턴(2)은 주사선이 중심을 통과할 때, 주사선이 어떤 방향이라도 그 길이 비율(주파수 성분 비율)은 암 : 명 : 암 : 명 : 암 = 1 : 1 : 3 : 1 : 1이 된다. 따라서 이차원 코드를 어떠한 방향으로 회전한 상태에서 촬영해도 일정 방향의 주사 처리만으로 위치 검출 패턴(2)이 갖는 특정 주파수 성분 비율을 검출할 수 있다. 따라서 위치 검출 패턴(2)의 중심 위치를 쉽게 검출할 수 있다.
데이터 영역(3)은 매트릭스 형태로 조밀하게 배치된 비트를 가지며, 비트 매트릭스는 데이터 영역 내의 돗트(dot)의 위치 보정을 위한 정렬 패턴(타이밍 셀)(4)뿐만 아니라, 이차원 코드의 형식 정보 및 그 에러 정정 신호와, 버전 정보 및 그 에러 정정 신호와, 데이터 부분으로 나뉜다. 정렬 패턴(4), 이차원 코드의 형식 정보 및 그 에러 정정 신호, 및 버전 정보 및 그 에러 정정 신호는 코드 영역(3)의 비트 매트릭스 상의 소정의 위치에 배치되고 나머지 부분이 코드화된 데이터를 기록하는 데이터부이고, 필요한 데이터를 기록하고 남은 부분이 잔여 비트이다. 기록되는 데이터 비트와 잔여 비트는 데이터 비트의 마지막인 엔드 패턴으로 구별된다. 잔여 비트는 패딩(padding)이라고 불리며, 명("1")의 비트 열이지만, 기록 시에는 소정의 처리를 실시하여 명암 비트 열로 변환되는 것이 일반적이다.
정렬 패턴(4)은 데이터 영역 내의 돗트의 위치 보정을 위한 명암 비트(돗트) 열이며, 도 1에 나타낸 바와 같이 다수 개가 배치된다. 정렬 패턴(4)은 이차원 패턴 전체의 기준 위치를 검출하는 위치 검출 패턴(2)과는 다른 것이다.
특허문헌3 및 특허문헌4는 패딩(padding)인 데이터 영역(3)의 비트를 이용하여 비트 이미지를 제공하는 것을 기재하고 있다.
이하, 본 발명의 실시예를 설명한다.
도 2는 제1 실시예의 이차원 코드를 나타내는 도면이다.
제1 실시예의 이차원 코드는 35×35 셀의 크기를 가지며, 9×9 블록으로 분할되고, 인접한 블록 사이에 1셀 명 분리스페이스(23)가 있다. 따라서 분리스페이스는 8×8열 1셀 폭 블록간격의 격자형 패턴이다. 우하의 3×3 블록 및 3×3 분리스페이스의 부분에는 제1 위치 검출 패턴(12A)이, 좌상의 2×2 블록 및 2×2 분리스페이스의 부분에는 제2 위치 검출 패턴(12D)이, 우상의 3(가로)×2(세로) 블록 및 3×2 분리스페이스의 부분에는 제3 위치 검출 패턴(12B)이, 좌하의 2(가로)×3(세로) 블록 및 2×3 분리스페이스의 부분에는 제4 위치 검출 패턴(12C)이 각각 배치되어 있다. 따라서 이차원 코드의 제1 위치 검출 패턴 내지 제4 위치 검출 패턴 이외의 블록에, 제1 위치 검출 패턴 내지 제4 위치 검출 패턴 이상의 패턴이 나타나는 경우는 없다.
이차원 코드의 코드 부분의 최소 단위는 셀이다. 이차원 코드는 일반적으로 정사각형 또는 직사각형의 형상을 취한다. 다른 형상도 가능하지만, 이차원 코드의 대부분은 사각형이며, 제1 실시예의 이차원 코드도 정사각형이지만, 이에 한정되는 것이 아니며, 직사각형이라도 다른 형상이라도 좋다.
일반적으로 이차원 코드는 명암의 셀로 데이터를 표시하고 제1 실시예의 이차원 코드도 코드부는 명암의 셀로 데이터를 나타낸다. 또한, 특허문헌2에 기재된 바와 같은 색상으로 셀을 구분하는 이차원 코드나, 미러(좌우 반전)형 이차원 코드도 제안되어 있으며, 이러한 이차원 코드에 본 발명을 적용하는 것도 가능하지만 그 경우에도 후술하는 바와 같이 4개 이상의 형상이 다른 위치 검출 패턴을 구비한다.
또한, 제1 실시예의 이차원 코드는 35×35 셀의 정사각형이지만, 이보다 사이즈가 큰 코드나 직사각형과 같은 가로 세로의 크기를 바꾼 형상으로 하는 것도 가능하다. 35×35 셀의 정사각형 이차원 코드를, 이것을 버전 2×2이라고 부른다. 여기서 최소 버전은 1×1이며, 이때의 셀 사이즈는 27×27이다. 디자인의 임베딩은, 가로 세로 버전이 모두 2 이상인 경우에 가능해진다. 버전이 1×1인 때에 디자인을 임베딩하지 않는 이유는 데이터량이 적음에도 불구하고 디자인을 임베딩하면 데이터량이 더욱 적어지고 인식해도 거의 데이터가 얻어지지 않게 되기 때문에, 상기와 같은 제한을 가했다. 제1 실시예의 이차원 코드는 세로 방향 및 가로 방향으로 각각 확장할 수 있다. 가로 버전이 2, 세로 버전이 3인 경우 버전 2×3으로 표기한다. 버전이 1 올라갈 때마다 셀 사이즈가 8 커지고 블록 수가 2 커진다. 따라서 버전 3×4에서는 셀 사이즈는 43×51이다. 버전은 1에서 20까지 선택 가능하지만, 이에 한정되는 것은 아니다.
제1 위치 검출 패턴(12A)은 암 셀의 부분이 8×8 셀의 1셀 폭의 정사각형 테두리와, 정사각형 테두리 중심의 2×2의 정사각형을 갖고 있다. 제2 위치 검출 패턴(12D)은 암 셀의 부분이 4×4 셀의 1셀 폭의 정사각형 테두리를 갖고 있다. 제3 위치 검출 패턴(12B)은 암 셀의 부분이 8×4 셀의 1셀 폭의 직사각형 테두리를 갖는 가로가 긴 직사각형 테두리이다. 제4 위치 검출 패턴(12C)은 암 셀의 부분이 4×8 셀의 1셀 폭의 직사각형 테두리를 갖는 세로가 긴 직사각형 테두리이다.
제1 실시예에서는 정사각형 이차원 코드의 4 모서리에 4개의 다른 위치 검출 패턴을 배치한다. 또한, 위치 검출 패턴이 다르다는 것은, 형상, 크기, 이차원 코드 상에서의 배치 방향이 다른 경우이며, 선폭 비율이 다른 경우도 포함된다. 다만, 촬영 조건 등의 영향을 받기 때문에 색상 차이는 대상으로 하지 않고 명암의 이치 이미지를 대상으로 한다.
제1 실시예에서는 위치 검출 패턴은 정사각형 또는 직사각형의 각 정점 근처에 배치한다. 이것은 1개소에 배치하는 경우보다 가능한 한 멀리 배치하는 편이 오염의 영향을 분산할 수 있기 때문이다. 다만, 위치 검출 패턴의 배치 위치는 4 모서리에 한정되는 것은 아니다. 제1 실시예와 같이, 위치 검출 패턴으로 정사각형뿐만 아니라 직사각형의 것을 이용함으로써 형상, 경사, 크기의 구별을 쉽게 할 수 있기 때문에 고속으로 인식할 수 있다. 또한, 중공의 직사각형은 다른 투영된 이미지와 구별하기가 쉬워 데이터의 손실이 적다.
4개의 위치 검출 패턴을 배치하는 이유는 분석에 있어서 정밀하게 데이터 좌표의 매핑을 계산하는데 사용하는 이차원의 투영 변환에서는 코드의 셀과, 그 셀에 해당하는 촬영 이미지의 좌표를 계산하기 위해 4 좌표의 쌍을 파라미터로서 제공할 필요가 있다. 위치 검출 패턴 수가 2개 또는 3개밖에 없는 경우에도 좌표를 보간함으로써 4점을 산출한 후에 투영 변환을 실시하는 것은 가능하지만 비스듬히 찍은 촬영이나 왜곡, 아웃포커스 등으로 정확한 좌표를 얻기 어려워 데이터 추출의 정확도에 크게 영향을 미치기 때문에 제1 실시예에서는 4개의 위치 검출 패턴을 배치하고 있다.
또한, 위치 검출 패턴이 다른 이유는 발견되지 않는 위치 검출 패턴이 있었을 경우에도 발견되지 않았던 위치 검출 패턴을 확실하게 특정할 수 있어 발견되지 않았던 위치 검출 패턴 좌표의 예측이 가능하게 되고 위치 검출 패턴의 정정이 가능해진다. 모두 동일한 위치 검출 패턴을 사용했을 경우, 발견되지 않았던 위치 검출 패턴의 특정은 모두 다른 위치 검출 패턴을 이용했을 경우만큼 쉽지 않아 위치 검출 패턴의 정정이 어려워진다.
이차원 코드의 4개 위치 검출 패턴 이외의 56 블록은 데이터부이며, 실제 데이터 블록, 에러 정정 부호 블록, 버전 정보 블럭, 포맷 정보 블록, 및 디자인 임베딩 정보 블록을 포함한다.
상기와 같이 데이터부는 3×3 셀을 블록으로 하고, 블록 단위로 데이터를 임베딩한다. 데이터부는 버전 정보 블록(15,16), 포맷 정보 블록(17), 디자인 임베딩 정보 블록(18A,18B,19A,19B)를 갖고 있고, 나머지 블록이 실제 데이터 블록(22)이다. 또한, 후술하는 바와 같이, 제1 실시예에서는 실제 데이터 블록(22)의 일부를 에러 정정 부호와 위치 보정 패턴으로서 이용한다.
따라서 위치 검출 패턴, 버전 정보 블록, 포맷 정보 블록, 디자인 임베딩 정보 블록, 위치 보정 패턴을 배치한 블록, 또한 에러 정정 부호 블록을 제외한 나머지 블록(22)이 실제 데이터 블록이다. 만약 디자인 임베딩이 이루어질 경우에는 디자인 임베딩 정보 블록이 지시하는 디자인 임베딩 블록도 실제 데이터 블록에서 제외한다. 실제 데이터는 실제 데이터 블록에 속하는 블록에 대해 좌상에서부터 우로 차례로 데이터를 채우고, 채워졌으면 1블록 아래의 좌에서부터 채운다는 방식으로 차례로 기록한다.
블록은 3×3 셀을 갖고 있고 각 셀은 명과 암의 1비트를 나타내므로 1블록은 최대 9비트의 정보를 저장하지만(9비트 표현), 여기에서는 이미지의 아웃포커스, 블러에 대한 내성을 높이기 위해 1블록당 데이터량을 9비트의 데이터량보다 작게 설정할 수 있도록 하고 있다. 또한, 제1 실시예에서는 블록을 3×3 셀의 사이즈로 했지만 블록 사이즈는 이에 한정되는 것이 아니라, 최소인 1×1 셀의 사이즈나 세로와 가로의 셀 사이즈가 다른 따위의 블록 사이즈도 가능하다.
버전 정보 블록은 이차원 코드의 사이즈에 대한 정보를 기록하고, 세로 버전 정보 블록(15)과 가로 버전 정보 블록(16)의 2타입이 존재하며, 각각 해당하는 버전 정보가 기록된다. 세로 버전 정보 블록(15) 및 가로 버전 정보 블록(16)은 각각 동일한 정보를 저장한 2개의 블록을 이격된 2곳에 배치함으로써 오염 등으로 결손되는 리스크를 분산시킨다. 버전 정보로서, 버전 수(세로 가로 각 1에서 20까지)의 숫자를 나타내는 블록을 배치한다.
포맷 정보 블록(17)은 디자인 임베딩 플래그(1비트)와, 데이터 블록 타입 데이터(2비트)로 구성된 포맷 정보를 기록하고 동일한 정보를 저장한 3개의 블록을 이격된 3개소에 배치한다. 디자인 임베딩 플래그는 디자인 임베딩의 여부, 즉 디자인 임베딩 영역이 배치되어 있는지 여부를 나타낸다. 디자인 임베딩이 있는 경우 디자인 임베딩 정보 블록이 배치된다. 데이터 블록 타입 데이터는 데이터 블록의 타입을 나타내고 데이터 블록의 타입이란 1블록당 데이터 용량이며, 6, 7, 9비트/블록 중 어느 하나를 선택한다. 데이터량은 9비트> 7비트> 6비트 표현의 순으로 적어지지만 데이터 판독 용이성은 6비트> 7비트> 9비트의 순서이며, 아웃포커스나 블러의 발생 상태와 데이터량을 감안하여 선택한다. 이에 대해서는 후술한다.
임베딩되는 디자인은 블록 단위로 임베딩되고, 인접한 복수의 블록이 디자인 임베딩 영역일 경우에는 그 사이의 분리스페이스도 디자인 임베딩 영역에 포함된다. 임베딩되는 디자인의 외형은 사각형이며, 디자인 이미지는 셀 단위의 2치 이미지에 한정되지 않으며, 어떤 것이라도 좋다. 또한, 디자인을 임베딩하는 사각형 블록은 복수개 있어도 좋다. 예를 들어, 디자인은 셀보다 높은 해상도의 다치 이미지라도 컬러 이미지라도 좋고, 물론 셀 단위의 2치 이미지라도 좋다. 제1 실시예에서는 디자인 임베딩의 제한으로서, 코드 상측 블록 2행, 좌측 블록 2열, 하측 블록 3행, 우측 블록 3열에는 디자인을 임베딩하지 않는 것으로 한다. 이 범위는 이차원 코드의 사양에 따라 디자인 임베딩 범위 외측의 부분에 이미지 정보를 갖는 디자인 임베딩 정보 블록을 배치한다.
디자인 임베딩 정보 블록은 디자인을 임베딩하는 영역의 사이즈 및 블록 위치에 대한 정보를 가로 세로로 각각 기록하고, 세로 임베딩 정보 블록(18A,18B)과 가로 임베딩 정보 블록(19A,19B)의 2종류가 존재하며 각각 해당하는 버전 정보가 기록된다. 세로 임베딩 정보 블록(18A,18B)은 디자인 임베딩 높이(3비트 또는 6비트) 및 디자인 임베딩 오프셋 높이(3비트 또는 6비트)를 기록한다. 가로 임베딩 정보 블록(19A,19B)은 디자인 임베딩 폭(3비트 또는 6비트) 및 디자인 임베딩 오프셋 폭(3비트 또는 6비트)을 지정한다. 또한, 3비트 또는 6비트로 할지는 후술하는 바와 같이 버전 정보에 관련되고, 버전이 2~4인 경우에는 3비트, 버전이 5~20인 경우에는 6비트 필요하며, 버전이 2~4인 경우에는 세로 임베딩 정보 블록(18B) 및 가로 임베딩 정보 블록(19B)은 필요하지 않다.
디자인 임베딩 정보 블록은 포맷 정보 블록에서 디자인 임베딩 플래그가 세워져 있었을 경우에만 존재한다. 제1 실시예는 임베딩 디자인의 개수가 하나뿐인 경우를 상정하고 있으며 복수의 임베딩 디자인을 복수 영역에 임베딩하는 것을 상정하였을 경우에는, 포맷 정보 블록에서 디자인 임베딩 플래그의 비트 수를 증가시켜 디자인 임베딩 영역 수를 나타내게 함과 아울러 상기 디자인 임베딩 정보 블록을 디자인 수만큼 배치한다. 디자인의 사이즈, 오프셋은 블록 단위로 지정한다. 블록의 좌표를 좌상 모서리의 블록을 원점으로서 (n, m)으로 표현하고 가로 블록 수를 blW개, 세로 블록 수를 blH개로 한다. 제1 실시예에서는 디자인 임베딩 영역은, 좌상(2,2), 우하(blW-4,blH-4)로 이루어진 사각형 영역에 한정된다. 디자인의 최대 가로 블록 수는 blW-5개, 최대 세로 블록 수는 blH-5개이다.
디자인의 위치는 시작점(좌상)이 되는 블록 좌표와, 블록 사이즈 정보를 디자인 임베딩 정보 블록으로서 코드 내에 임베딩함으로써 코드 분석 시에 어느 위치에 디자인이 들어있는지를 인식할 수 있도록 한다. 버전 정보 블록과 마찬가지로 가로와 세로로 별도로 취급한다. 가로는 blW-5가 8 미만인 때(가로 버전 2-4)와 그 이외의 경우(가로 버전 5~20)로 데이터량을 나누고 세로도 동일하게 한다. blW와 blH의 값은 가로와 세로의 버전을 분석함으로써 구해진다.
blW가 13 미만일 때, 가로 블록 사이즈는 최소 1, 최대 8블록이며, 8가지는 3비트로 나타낼 수 있고, 마찬가지로 가로 오프셋 블록 수는 2에서 8까지 7가지이며, 이것도 3비트로 나타낼 수 있기 때문에 합계가 6비트이다. 따라서 블록을 6비트로 표현하고 이것은 1블록으로 표현 가능하다. 세로도 동일하게 한다. blW가 13 이상인 때 가로 블록 사이즈는 6비트로 나타내고 마찬가지로 가로 오프셋 블록 수도 6비트로 나타낸다. 따라서 2블록을 사용하여 표현하게 된다. 세로도 동일하게 한다.
가로 임베딩 정보 블록(19A,19B)은, 좌상 및 우하의 가로 버전 정보 블록의 외측(상측 및 하측)에, 세로 임베딩 정보 블록(18A,18B)은 좌하 및 우하의 세로 버전 정보 블록의 외측(좌측 및 우측)에 배치된다.
만약 디자인을 임베딩하지 않는 경우 즉 포맷 정보 블록의 디자인 임베딩 플래그가 "없음"을 나타내는 경우 디자인 임베딩 정보 블록 및 디자인 임베딩의 영역이 불필요해지기 때문에 코드가 효율적이다.
위치 보정 패턴은 실제 데이터 블록, 에러 정정 부호 블록, 디자인이 임베딩되어 있는 경우에는 디자인 임베딩 정보 블록의 좌표 보정에 사용할 목적의 패턴이다. 이차원 코드에 있어서 좌표는 위치 검출 패턴으로부터 대략적으로 취득할 수 있지만, 종이의 구김, 휨, 렌즈의 왜곡, 위치 검출 패턴 취득 시의 차이로 인해 데이터부의 좌표에 오차가 발생하므로 이를 수정할 목적으로 배치한다. 위치 보정 패턴은 위치 검출 패턴과 달리 다른 노이즈와 구별할 필요가 없으며, 위치 검출 패턴을 산출할 수 있으면 위치 보정 패턴의 위치는 쉽게 판명된다. 따라서 위치 보정 패턴은 미세한 좌표 보정을 하기 쉬운 형상이 바람직하다.
제1 실시예에서는 위치 보정 패턴은 미리 정해진 셀의 조합으로 이루어진 블록(위치 보정 블록)을 실제 데이터 대신에 동일 간격으로 배치한다. 블록의 중심 1셀을 암, 그 주변을 명으로 한 블록을, 블록 좌표(7n,7m)(n, m은 0 이상의 정수)가 데이터부이면 배치한다. 다만, 그 좌표에 위치 검출 블록, 버전 정보 블록, 포맷 정보 블록, 디자인 임베딩 정보 블록 및 디자인이 존재해야 할 때는 배치하지 않는다. 여기서는 블록 좌표는 블록 좌상의 좌표 기준 좌표를 (0,0)으로 하고, 우측 인접한 블록을 (1,0)으로 표현하고 있다. 또한, 위치 보정 패턴을 배치하는 블록은 상기에 한정되지 않는다.
실제 데이터는 메시지와, 메시지를 수식하는 헤더(메시지 타입(메시지의 인코딩), 메시지 사이즈)를 맞춘 세그먼트를 메시지 수만큼 나열한다. 또한, 특수한 세그먼트로서 메시지를 포함하지 않는 종단 플래그만이 들어간 세그먼트를 준비하고, 실제 데이터의 용량이 남았을 경우에 종단 플래그의 세그먼트를 배치하고 그 다음에 패딩을 배치한다. 실제 데이터는 데이터 블록 타입 데이터가 나타내는 1블록당 데이터 용량에 따라 블록 단위로 분할한다. 마찬가지로 에러 정정 부호도 블록 단위로 분할한다.
에러 정정 부호로서 리드 솔로몬(Reed-Solomom) 부호를 사용했을 경우, 에러 정정은 워드(word) 단위로 이루어지기 때문에 1워드를 1블록으로 하는 것이 바람직하다. 1워드가 복수의 블록에 걸쳐 있는 경우 1개의 블록에 오염이 발생했을 경우에도 그 블록이 관련된 모든 워드가 에러 정정 대상이 되어 정정 효율이 나빠진다. 정정 원인이 되는 오염이나 스포트라이트로 인한 컬러 페이딩(color fading)은 1개소에 집중되는 경우가 많지만 블록으로 함으로써 동시에 정정 대상이 되는 데이터를 1개소에 모으는 효과가 있어 효율적인 정정을 가능하게 하고 코드를 인식시킬 가능성을 높인다.
상기와 같이, 제1 실시예의 이차원 코드는 블록 사이에 배치된 1셀 폭의 분리스페이스(23)를 가진다. 따라서 위치 검출 패턴 및 블록은 모두 명의 셀로 둘러싸여 있다.
도 3은 제1 실시예의 이차원 코드에 있어서 복수 블록의 배치를 나타내는 도면이다. 각 블록은 3×3 셀을 가지며, 주위가 1셀 폭의 분리스페이스(23)로 분리되어 있다.
도 4는 분리스페이스(23)를 갖는 이차원 코드와, 분리스페이스(23)를 갖지 않은 이차원 코드에 있어서 데이터에 따라 셀을 명 또는 암으로 했을 경우의 패턴의 예를 나타내는 도면이다. 도 4의 (A)는 분리스페이스(23)를 갖는 이차원 코드로, 4개 블록의 4개의 3×3 셀을 중앙 및 4 모서리가 암, 그 이외를 명으로 하는 경우의 패턴 3개와, 그 3개의 패턴과 명암이 반전된 패턴 1개로 이루어진 이차원 코드이고, 도 4의 (B)는 도 4의 (A)에 나타낸 이차원 코드의 분리스페이스(23)가 없는 경우를 나타낸 것이다. 이와 같이 분리스페이스(23)가 없는 경우는 블록 간의 경계가 불명확해져 암 셀에 둘러싸인 명 셀은 블랙아웃되어 버릴 가능성이 있다.
분리스페이스(23)를 갖지 않는 이차원 코드에 비해 분리스페이스(23)를 갖는 이차원 코드의 편이 커져 데이터 효율은 떨어지지만, 촬영된 이미지에 아웃포커스, 블러가 있는 경우에도 인접한 블록 패턴의 영향을 받기 어려워지므로 각 셀의 명암 판정 정확도가 향상된다. 실제로 분리스페이스(23)를 갖는 이차원 코드와 분리스페이스(23)를 갖지 않은 이차원 코드의 이미지를 이치화 처리했을 경우 분리스페이스(23)를 갖지 않은 이차원 코드는 블랫아웃이 발생하기 쉽다. 촬영된 이미지에 아웃포커스, 블러가 있는 경우 각 셀은 주변 셀의 색상에 영향을 받는다. 도 4의 (B)는 주변 셀이 명암 어느 쪽인지는 거의 랜덤하며, 주변 셀이 다른 색상이 크면 큰 영향이 있지만, 그렇지 않으면 영향이 적고, 균일하지 않기 때문에 색상의 판정은 어려워진다. 도 3과 같이 블록을 구성하는 셀을 a ~ i로 하고 설명하면, 도 4의 (A)는 분리스페이스(23)가 있기 때문에 acgi는 주변 8개소 중 5개소가 분리스페이스와 접하고, bdfh는 주변 8개소 중 3개소가 분리스페이스와 접하기 때문에 e 이외의 셀은 도 4의 (B)보다 주변의 영향을 받기 어려워졌다고 말할 수 있다. 또한, 후술하는 6비트 표현으로 함으로써 영향을 받기 쉬운 e 셀을 평가하지 않게 되고, acgi는 주변 8개소 중 6개소가 명 셀과 접하고 bdfh는 주변 8개소 중 4개소가 명 셀과 접하기 때문에 아웃포커스, 블러의 영향을 더 받기 어려워졌다고 말할 수 있다.
이와 같이 분리스페이스(23)를 배치함으로써 셀이 아웃포커스, 블러로 인해 정확하게 인식할 수 없게 되는 리스크를 줄이는 것이 가능해진다.
또한, 위치 검출 패턴은 가장 사이즈가 작은 제2 위치 검출 패턴(12D)에서도 4×4 셀의 정사각형이며, 3×3 블록이 분리스페이스(23)로 분리되어 있기 때문에 데이터 블록 안에 위치 검출 패턴과 같은 패턴이 출현하는 경우는 없다. 따라서 분리스페이스(23)를 배치함으로써 위치 검출 패턴의 검출 처리도 쉬워진다.
제1 실시예에서는 1블록당 데이터 용량을, 데이터 열화의 내성에 따른 타입으로 나누어 선택 가능하게 하고 있다.
도 5는 제1 실시예에 있어서 1블록의 데이터 타입을 설명하는 도면이다.
도 5의 (A)는 1블록의 3×3 셀의 각각에 (a ~ i)의 비트를 할당하여 9비트 표현 가능하게 한 데이터 타입을 나타낸다. 이 경우 1블록은 9비트의 정보량을 가지며, 29 = 0 ~ 511의 값을 표현할 수 있다.
도 5의 (A)의 분석을 할 때는 입력된 촬영 이미지에서 생성된 이치 이미지에 대해 각 셀이 해당하는 이미지 내의 좌표를 계산하고 그 좌표의 화소 값이 명("1")과 암("0") 중 어느 하나인지를 판단하고, 블록당 9비트가 되는 값으로 한다. 촬영 이미지를 이치 이미지로 변환하는 방법은 후술한다.
도 5의 (B)는 1블록의 3×3 셀의 중심을 "1"(명)로 고정하고 주변의 8개 셀(j1 ~ j8)은 4개의 명("1")과 4개의 암("0")을 포함하도록 설정하는 데이터 타입을 나타낸다. 이 경우 1블록은 8C4 = 70 패턴, 약 6비트의 정보량을 갖는다(6비트 표현).
도 5의 (C)는 1블록의 3×3 셀의 중심을 "0"(암)으로 고정하고 주변의 8개 셀(j1 ~ j8)은 4개의 명("1")과 4개의 암("0")을 포함하도록 설정하는 데이터 타입을 나타낸다. 이 경우에도 1블록은 8C4 = 70 패턴, 약 6비트의 정보량을 갖는다(6비트 표현).
데이터 타입이 6비트 표현일 때, (B)와 (C)를 모두 사용할 수 있지만, 인코딩 측과 디코딩 측에서 일치시킨다.
도 5의 (B), (C)의 분석을 할 때에는 입력된 촬영 이미지에서 생성된 그레이스케일 이미지에 대해 j1 ~ j8 셀의 촬영 이미지 내에서의 좌표를 계산하여 각 셀의 그레이스케일 화소 값을 취득하고 화소 값을 내림차순으로 정렬한다. 이때 화소 값이 높은 셀 4개가 명이고 낮은 셀 4개가 암이다. 촬영 이미지를 그레이스케일 이미지로 변환하는 방법은 후술한다.
이차원 코드는 다양한 촬영 환경에서의 인식이 요구된다. 그때에, 빛은 촬영 이미지에 대해 국부적인 색상 변화, 단계적인 색상 변화 등 악영향을 미치고 이는 촬영 이미지에 대한 적합한 이치화 이미지의 생성이 어려운 요인이 된다.
이 방법의 장점은 이치화 임계값이 불필요한 점이다. 이치화 임계값을 도출하지 않아도 각 셀의 상대적인 화소 값의 관계로부터 셀의 명암을 판정하는 것을 가능하게 하는 효과가 있다. 또한, 스포트라이트와 같은 국부적인 강한 색상 변화에 대해서도 블럭으로 함으로써 관련된 셀이 밀집하기 때문에 모든 셀이 영향을 동일하게 받을 확률이 높아져서 셀 전체가 백색으로 되었을 경우에도 상대적인 화소 값의 대소 관계는 유지되기 때문에 인식할 수 있는 가능성이 높아진다.
또한, 도 5의 (B) 및 (C)에서 중심 셀은 "1"(명) 또는 "0"(암)으로 임의로 설정 가능하며, 주변의 8개 셀(j1 ~ j8)을 4개의 명("1")과 4개의 암("0")을 포함하도록 설정하는 데이터 타입도 가능하고, 이 경우에는 1블록은, 8C4×2 = 140 패턴, 약 7비트의 정보량을 갖는다(7비트 표현).
이 분석 방법에 대해 주변 셀의 분석 방법까지는 6비트의 경우와 동일하다. 덧붙여, 중심 화소의 분석은 화소 값이 높은 4점 중 화소 값이 최소가 되는 셀의 화소 값을 G1, 화소 값이 낮은 4점 중 화소 값이 최대가 되는 셀의 화소 값을 G2로 하고, 블록의 중심 셀의 촬영 이미지 내에서의 좌표를 계산하고, 얻어진 화소 값이 (G1+G2)/2 이상이면 중심 셀을 명 셀, 그 이외이면 중심 셀을 암 셀로 한다.
이 방법에서는 중심 셀의 평가에 인접한 셀의 분석에서 얻어진 임계값을 사용하고 있으며, 중심 셀과 인접한 셀은 촬영 환경에서 받는 영향이 거의 동일할 가능성이 높기 때문에 높은 정확도로 인식할 수 있다.
도 5의 (D1) ~ (D8)는 1블록에 있어서 중심 셀을 명이나 암으로 고정하고(여기서는 명("1")로 고정), 주변의 8개 셀을 명암 4셀씩으로 하지만, 시계 방향으로 명암암명명명암암으로 고정하고, 고립된 명 셀의 위치에서 데이터를 추출한다. 이 경우 8패턴을 추출할 수 있기 때문에 3비트의 데이터량이 된다(3비트 표현). 이 패턴에서, 고립된 명 셀의 위치를 검출하려면 시작 위치의 셀에서부터 시계 방향으로 각 셀의 휘도 값을 덧셈, 뺄셈, 뺄셈, 덧셈, 덧셈, 덧셈, 뺄셈 그리고 뺄셈을 하는 연산 처리를, 시작 위치를 차례로 회전하면서 실시하고, 연산 결과가 최대가 되는 시작 위치를 구한다. 이것이 고립된 명 셀의 위치이다. 마찬가지로, 명암 반전하여 실시할 수도 있고, 이 경우에는 연산 결과가 최소가 되는 시작 위치를 구한다.
전술한 바와 같이, 제1 실시예에서는 포맷 정보 블록(17) 내의 데이터 블록 타입 데이터(2비트)에 따라 상기 9비트 표현, 7비트 표현, 및 6비트 표현 중 어느 하나가 선택된다. 필요하면, 3비트 표현을 선택할 수 있도록 해도 좋다.
또한, 제1 실시예에서는 중요한 정보를 기록하는 버전 정보 블록 및 포맷 정보 블록은 다음에 설명하는 20 패턴 표현의 데이터 타입을 이용한다.
도 6은 20 패턴 표현의 데이터 타입을 설명하는 도면이다.
도 6에 있어서 참조 번호 31은 20 패턴 표현의 데이터 블록을, 32는 제1 내지 제4 위치 검출 패턴 중 어느 하나를 나타낸다. 도 6의 (A)와 (B)에 나타낸 바와 같이, 위치 검출 패턴(32)의 하측 또는 상측에 배치되는 데이터 블록(31)은 상하 방향 중간 열의 셀을 암명암(010)으로 고정하고, 양측 2열의 셀(m1~m6)의 6비트로 데이터를 표현한다. 또한, 6비트 중 3비트를 명, 3비트를 암으로 함으로써 6C3= 20 패턴을 표현한다. 도 6의 (A) 및 (B)에 나타낸 블록의 셀 데이터의 검출은 상하 방향으로 주사함으로써 이루어진다. 또한, 도 6의 (C) 및 (D)에 나타낸 바와 같이, 위치 검출 패턴(32)의 우측 또는 좌측에 배치되는 데이터 블록(31)은 가로 방향 중앙 열의 셀을 암명암(010)으로 고정하고, 양측 2열의 셀(m1~m6)의 6비트 데이터를 표현한다. 또한, 6비트 중 3비트를 명, 3비트를 암으로 함으로써 6C3 = 20 패턴을 표현한다. 도 6의 (C) 및 (D)에 나타낸 블록의 셀 데이터의 검출은 가로 방향으로 주사함으로써 이루어진다.
이 데이터 타입에 의해, 분석 때에 코드의 버전 및 셀 사이즈가 불확실한 상태에서도 위치 검출 패턴의 촬영 이미지 내에서의 위치가 판명되어 있으면 데이터 블록에서 데이터를 얻을 수 있다. 버전 및 셀 사이즈를 알 수 없는 경우 위치 검출 패턴의 촬영 이미지 내에서의 좌표를 알고 있어도 블록의 좌표를 산출할 수 없다. 그러나 위치 검출 패턴에서, 인접한 위치 검출 패턴(제1 위치 검출 패턴과 제2 위치 검출 패턴은 제3 위치 검출 패턴과 제4 위치 검출 패턴에 인접한다)의 방향을 주사함으로써 데이터 블록을 발견할 수 있다. 도 6의 (A)에서는 데이터 블록의 중앙 열을 향해 참조 번호 32의 위치 검출 패턴의 하측 변에 대해 수직으로 주사를 한다. 위치 검출 패턴의 바로 아래에서부터 주사를 실시하여 중앙 열의 상측 셀인 암 셀에 부딪친다. 이대로 진행하면 명 셀에 부딪치고 그리고 암 셀에 부딪치고 또한 분리스페이스의 명 셀에 부딪친다. 이로써 중앙 열의 셀 좌표와, 데이터 블록의 1셀당 화소 수를 산출할 수 있다. 이로써 데이터 블록의 다른 셀의 좌표도 쉽게 판명되기 때문에 데이터 블록이 나타내는 데이터를 얻을 수 있다.
버전 정보 블록 및 포맷 정보 블록은 분석 처리에 있어서 중요한 데이터 블록이며, 위치 검출 패턴에 대해 도 6에 나타낸 바와 같은 위치 관계가 되도록 배치하여 20 패턴 표현을 실시한다. 정보 블록은 2개소, 포맷 정보는 3개소에 동일한 정보를 유지함으로써 오염이나 스포트라이트 등 국부적인 노이즈에 대한 대책을 실시하고 있다.
도 7은 제1 실시예의 이차원 코드에 따라 생성한 이차원 코드의 예를 나타내는 도면이다. 도 7의 이차원 코드는 43×43 셀이며, 11×11 블록의 이차원 코드이고, 버전은 3×3이다. 도 7의 이차원 코드는 디자인 영역을 갖지 않고 디자인도 임베딩되어 있지 않다. 따라서 디자인 임베딩 정보 블록도 필요하지 않다.
도 8은 제1 실시예의 이차원 코드에 따라 생성한 이차원 코드의 다른 예를 나타내는 도면이다. 도 8의 이차원 코드는 59×59 셀이며, 15×15 블록의 이차원 코드이고, 버전은 5×5이다. 도 8의 이차원 코드는 블록 좌표((2,5),(11,8))를 대각선으로 하는 직사각형 디자인 영역을 가지며, ID 코드와 제품명이 기재된 이미지가 첨부되어 있다. 이로써 사용자는 코드를 인식하기 전이라도 인식 대상의 개요를 판별하는 것이 가능하다.
위치 검출 패턴은 다양한 형상의 것을 사용하는 것이 가능하며, 이차원 코드의 사이즈 등도 여러 가지 값을 가질 수 있다.
도 9는 제2 실시예의 이차원 코드를 나타내는 도면이다. 제2 실시예의 이차원 코드와 제1 실시예의 이차원 코드의 차이점은 다음과 같다.
(1) 제1 위치 검출 패턴(52A)이 암 셀의 정사각형 테두리에서만 내측에 정사각형을 갖지 않는다. 또한, 제2 위치 검출 패턴(52B) 및 제3 위치 검출 패턴(52C)은 정사각형에 가까운 직사각형이다. 제4 위치 검출 패턴(52D)은 제1 실시예의 12D와 같은 형상이다.
(2) 블록 사이즈 및 블록 구성이 다르고, 특히 가로 방향 및 세로 방향이 위치 검출 패턴 사이에 있는 외측 부분의 블록 구성이 다르다. 이 부분에 배열되는 블록은 1열이며, 그 부분에 2개의 세로 버전 정보 블록(55), 2개의 가로 버전 정보 블록(56), 3개의 포맷 정보 블록(57), 2개의 세로 디자인 임베딩 정보 블록(58), 2개의 가로 디자인 임베딩 정보 블록(59) 및 위치 보정 패턴(54A,54B)을 배치한다. 나머지 블록(60)이 실제 데이터 블록, 에러 정정 부호 블록, 위치 보정 패턴이 되는 블록, 및 디자인 임베딩 영역이다.
다른 부분은 제1 실시예와 동일하므로 설명은 생략한다.
도 10은 제2 실시예의 이차원 코드에 따라 생성한 이차원 코드의 예를 나타내는 도면이다.
도 10의 (A)는 36×36 셀이며 8×8 블록의 이차원 코드이다. 도 10의 (A)의 이차원 코드는 블록 좌표((2,2),(5,5))를 대각선으로 하는 직사각형 디자인 영역을 가지며, 고해상도의 다치 이미지가 배치되어 있다. 이로써 이차원 코드가 주는 인상을 개선하여 관심을 끌 수가 있다.
도 10의 (B)는 36×36 셀이며 8×8 블록의 이차원 코드이다. 도 10의 (B)의 이차원 코드는 블록 좌표((2,3),(5,4))를 대각선으로 하는 직사각형 디자인 영역을 가지며, 숫자 이미지가 첨부되어 있다.
이차원 코드의 사이즈 및 형상은 다양하며, 그 어느 것에도 본 발명의 이차원 코드를 적용하는 것이 가능하다.
도 11은 제2 실시예의 이차원 코드의 위치 검출 패턴을, 사이즈 및 형상이 다른 이차원 패턴에 적용한 변형예를 나타내는 도면이다. 참조 번호 53은 데이터 영역을 나타낸다.
도 11의 (A)는 정사각형의 소형 이차원 코드의 예를 나타낸다.
도 11의 (B)는 제2 실시예와 유사한 이차원 코드의 예를 나타낸다.
도 11의 (C)는 직사각형의 이차원 코드의 예를 나타낸다.
도 11의 (D)는 직사각형의 이차원 코드이며 중심부에 제5 위치 검출 패턴(52E)을 추가한 이차원 코드의 예를 나타낸다. 제5 위치 검출 패턴(52E)은 정사각형 테두리와, 그 내부에 정사각형이 있는 제1 실시예의 제1 검출 패턴(12A)과 유사한 형상을 갖는다.
여기서, 위치 검출 패턴으로서 바람직한 형상에 대해 검토한다.
본 발명에서의 위치 검출 패턴은, (1) 4 타입의 위치 검출 패턴끼리 형상, 크기, 이차원 코드 상에서의 배치 방향 중 어느 하나로 구별이 가능한 것, (2) 위치 검출 패턴끼리 타입의 구별이 간단한 알고리즘으로 실현 가능한 것, (3) 구별된 위치 검출 패턴에 대해 조합의 축소가 쉬운 것(고속화에 기여), (4) 위치 검출 패턴의 셀 사이즈를 줄이는 것, (5) 이차원 코드 이외의 투영된 이미지와 구별하기 쉬운 것, 및 (6) 이차원 코드 내에 다른 위치 검출 패턴이 나타나지 않는 것이 바람직하다.
도 2 및 도 9의 위치 검출 패턴은 이상의 사항을 충족한다고 말할 수 있다.
여기서, 정사각형 및 직사각형의 위치 검출 패턴이며, 테두리 폭 및 식별 스페이스 폭, 즉 셀 사이즈에 대해 다양한 조합의 위치 검출 패턴을 생성하고, 아웃포커스, 블러를 생기게 하도록 촬영한 이미지를 이치화하여 위치 검출 패턴의 구별을 할 수 있는지 실험을 했다. 그 결과, 테두리 내부의 식별 스페이스의 유무로 위치 검출 패턴과 기타 투영된 이미지를 구별한다는 것은 쉽게 실시할 수 있는 것, 1셀의 스페이스, 그 안의 1셀의 정사각형은 아웃포커스에 영향을 받기 쉬운 것, 바깥 테두리의 두께는 아웃포커스의 내성에 크게 영향을 주지 않는 것이 판명되었다.
이와 같은 결과로부터 정사각형 또는 직사각형의 테두리이며, 내부에 식별 스페이스가 있고 식별 스페이스가 2셀인 것의 유용성이 판명되었다. 그 이유는 다음과 같이 생각된다. 최소 셀이 1비트를 나타내는 이차원 코드에서는 1셀 이상의 아웃포커스, 블러가 발생하는 경우에는 위치 검출을 할 수 있어도 데이터 취득을 할 수 없게 된다. 일반적인 촬영 조건이라면 1셀 이상의 아웃포커스, 블러가 발생하는 경우는 적기 때문에 식별 스페이스가 2셀 있으면, 1셀분의 모든 방향의 아웃포커스, 블러에 대응할 수 있게 된다.
제1 실시예에 나타낸 셀 사이즈가 4×4 정사각형인 제2 위치 검출 패턴이 상기 스페이스를 갖는 최소 셀 사이즈의 구성으로 된다.
제1 위치 검출 패턴에 대해서는 1셀의 테두리와 2셀의 스페이스와 2셀의 정사각형을 겹친 것이 된다. 이 위치 검출 패턴이면, 그 방향에 상관없이 중심을 주사하면 암명암명암 패턴이 얻어지며, 제2 위치 검출 패턴이나 노이즈와의 차이가 명확하다.
제3 위치 검출 패턴 및 제4 위치 검출 패턴의 형상은 위치 검출 패턴의 테두리의 연장선에 위치 검출 패턴의 테두리가 존재하는 것이 바람직하다. 이로써 위치 검출 패턴이 결여되었을 때에, 결여된 위치 검출 패턴의 좌표를 예측하는 정확도가 향상되는 효과를 얻을 수 있다.
이러한 조건에 적합한 형상은 제1 실시예의 제3 위치 검출 패턴 및 제4 위치 검출 패턴이 된다. 각각 90도 기울어져 있으며, 제1 위치 검출 패턴 및 제2 위치 검출 패턴과는 가로 세로 비율이 다르기 때문에 구별이 쉽다.
제2 실시예는 위치 검출 패턴이 차지하는 셀 사이즈가 가장 작은 구성이며, 제1 위치 검출 패턴과 제2 위치 검출 패턴은 같은 형상이고 크기가 다르고 제2 위치 검출 패턴을 5×5 셀로 하고, 상기와 같은 이유로 제3 위치 검출 패턴과 제4 위치 검출 패턴을 생성한다.
이러한 위치 검출 패턴의 셀 사이즈는 제1 실시예에서는 16 + 64 + 32 + 32 = 144 셀이 되고, 제2 실시예에서는 16 + 25 + 20 + 20 = 81 셀이 된다.
도 1에 나타낸 이차원 코드는 3개소밖에 위치 검출 패턴이 없는데도 불구하고 7×7×3 = 147 셀이며 본 실시예보다 셀 사이즈가 크다.
제1 실시예는 제2 실시예에 비해 셀 사이즈가 커지지만, 제2 실시예에서는 모든 위치 검출 패턴의 면적이 비슷하여 비스듬히 찍은 촬영에서 정확도에 대한 영향을 받기 쉬운 데 비해 제1 실시예는 제1 위치 검출 패턴과 제2 위치 검출 패턴은 형상이 다르고, 제3의 위치 검출 패턴과 제4 위치 검출 패턴은 방향이 다르고, 제1 검출 패턴, 제2 위치 검출 패턴과, 제3 검출 패턴, 제4 위치 검출 패턴은 가로 세로 비율이 다르다. 이것들은 비스듬히 찍은 촬영에서도 충분히 구별 가능하여 위치 검출 패턴의 구별에 유용한 구성이 된다.
또한, 도 2의 위치 검출 패턴의 주위에는 2셀의 여백으로서 명 셀을 배치하고 있다. 도 1의 이차원 코드를 인식할 때에는, 코드를 인쇄한 주위에 콰이어트존(quiet zone)이 필요하며, 이것은 코드의 일부로 간주된다. 반면에, 제1 실시예의 이차원 코드는 코드의 주위는 어떤 인쇄가 이루어지는지가 정확도에 영향을 주지 않는다. 또한, 도 9의 제2 실시예와 같이 여백은 도 1의 코드와 동일하게 코드의 외측에 배치하는 것도 가능하다.
그러나 본 발명의 취지에서는 다른 형상의 위치 검출 패턴도 사용할 수 있으며, 다양한 변형예가 가능하다.
도 12는 변형예의 4개의 위치 검출 패턴의 예를 나타내는 도면이다.
도 12의 (A)는 큰 원형 테두리, 방향이 다른 2개의 타원형 테두리 및 작은 원형 테두리가, 4개의 위치 검출 패턴인 예를 나타낸다.
도 12의 (B)는 내부에 작은 원이 있는 큰 원형 테두리, 방향이 다른 2개의 타원형 테두리 및 작은 원형 테두리가, 4개의 위치 검출 패턴인 예를 나타낸다.
도 12의 (C)는 큰 십자형, 연장 방향이 다른 한쪽만 연장된 2개의 십자형 및 작은 십자형이, 4개의 위치 검출 패턴인 예를 나타낸다.
도 12의 (D)는 큰 L자형, 연장 방향이 다른 한쪽만 연장된 2개의 L자형 및 작은 L자형이, 4개의 위치 검출 패턴인 예를 나타낸다. 여기서, L자는 같은 방향이며, 모서리 위치에서 회전 방향을 판정하는 것이 가능하다. 또한, L자의 방향을 90도씩 회전한 것으로 해도 좋다.
도 12의 (E)는 큰 삼각형 테두리, 연장 방향이 다른 한쪽만 연장된 2개의 삼각형 테두리 및 작은 삼각형 테두리가, 4개의 위치 검출 패턴인 예를 나타낸다.
도 12에 나타낸 예는 일부의 예이며, 그 밖에도 다양한 형태의 위치 검출 패턴이 가능하다.
다음으로, 제1 및 제2 실시예의 이차원 코드를 생성하는 처리(인코딩 처리)에 대해 설명한다.
도 13은 요청에 따라 이차원 코드를 생성하여 제공하는 생성 시스템의 하드웨어 구성을 나타내는 도면이고, 클라이언트-서버 구성의 예를 나타낸다.
생성 시스템은 사양을 정하고 이차원 코드의 생성을 요청하는 사용자가 조작하는 사용자 하드웨어와, 요청받은 이차원 코드를 생성하여 제공하는 시스템 하드웨어를 갖고 있다.
사용자 하드웨어는 컴퓨터 등의 사용자 처리 장치(61)와, 자기 디스크 등의 저장 장치(62)를 갖고 있다.
시스템 하드웨어는 컴퓨터 등의 시스템 처리 장치(65)와, 자기 디스크 등의 저장 장치(66)를 갖고 있다.
사용자 처리 장치(61)와 시스템 처리 장치(65)는 통신 회선 등으로 연결되며, 통신 가능하게 구성되어 있다.
여기서는, 인쇄는 사용자 측에서 실시하지만, 시스템 측이나 다른 인쇄소에서 실시하도록 해도 좋다. 이차원 코드를 인쇄하는 매체는 어떤 것이라도 좋고, 예를 들면, 종이, 수지판, 함체 표면 등이다. 여기서, 매체로서, 임베딩하는 디자인이 미리 인쇄되어 있는 것이라도 좋고, 인쇄되어 있는 임베딩 디자인이 이차원 코드의 디자인 영역에 들어가도록 세팅한 후에 이차원 코드를 인쇄한다.
인쇄 장치는 이러한 매체에 이차원 코드를 인쇄 가능한 것이면 좋고, 예를 들면 간이 프린터, 정밀 프린터, 인쇄 장치 등이며 모노크롬(monochrome) 인쇄뿐 아니라 컬러 인쇄 가능한 것이라도 좋다. 또한, 생성된 이차원 코드는 인쇄하지 않고 통신 회선을 통해 사용자에게 이차원 코드의 데이터로서 송신되어도 좋다. 사용자는 필요에 따라 제삼자의 디스플레이 등에, 생성된 이차원 코드를 표시하도록 데이터를 전송한다.
또한, 도 13은 클라이언트-서버 구성의 생성 시스템의 예를 나타내지만, 생성 시스템은 이에 한정되지 않고, 예를 들면. 클라이언트 PC 상의 인코딩 소프트웨어로 발행하고, USB 연결된 프린터에서 발행하는 구성이나 핸디 타입의 단말, 프린터에서 발행하는 구성 등 다양한 변형예가 있을 수 있다.
도 14 내지 도 16은 사용자가 사용자 하드웨어를 통해 시스템 하드웨어에 액세스하여 원하는 이차원 코드를 생성하는 인코딩 처리의 절차를 나타내는 플로우차트이다.
단계(S10)에서는 사용자가 메인 인코딩 처리를 시작한다.
단계(S11)에서는 사용자가 이차원 코드에 기록할 메시지를 입력한다.
단계(S12)에서는 사용자가 이차원 코드에 디자인 임베딩을 실시할지 여부를 결정하고, 디자인 임베딩을 실시할 경우에는 단계(S13)로 진행하고, 그렇지 않은 경우에는 시스템 측에서 실시하는 단계(S15)로 진행한다. 이때 사용자 처리 장치(61)는 시스템 처리 장치(65)에 입력된 메시지, 및 디자인 임베딩을 실시하지 않음을 통지한다.
단계(S13)에서는 사용자가 디자인을 임베딩하는 블록 위치(디자인 임베딩 오프셋 폭, 디자인 임베딩 오프셋 높이, 디자인 임베딩 폭 및 디자인 임베딩 높이)를 입력한다. 사용자 처리 장치(61)는 시스템 처리 장치(65)에, 입력된 메시지, 디자인 임베딩을 실시함, 및 디자인 임베딩 블록 위치를 통지한다.
단계(S14)에서는 시스템 측에서, 전송받은 블록 위치에 따라 디자인의 블록 사이즈를 결정한다.
단계(S15)에서는 전송받은 메시지를 기록하는 블록 사이즈를 결정한다.
단계(S16)에서는 모든 가로 버전에 대해 최소 세로 버전을 계산한다. 이것은 세로 및 가로 블록 수를 곱한 것에서, 위치 검출 패턴, 버전 정보 블록, 포맷 정보 블록, 디자인을 임베딩하는 경우에는 디자인 임베딩 정보 블록 및 디자인 임베딩 영역에 따른 블록, 위치 보정 패턴의 블록을 제외한 나머지 블록을 계산한다. 또한, 이 블록 수에 대해 일정의 에러 정정률이 되는 에러 정정 부호 블록의 수를 제외한 나머지 블록에, 메시지를 기록하는 실제 데이터 블록을 수용할 수 있는 사이즈를 테이블 형태로 제시하는 것이다. 시스템 처리 장치(65)는 계산된 테이블의 데이터를 사용자 처리 장치(61)에 전송한다.
단계(S17)에서는 사용자에 가로, 세로 버전의 테이블을 제시하여 사용자가 어느 것을 사용할지를 결정한다. 사용자 처리 장치(61)는 결정된 가로, 세로 버전을 시스템 처리 장치(65)에 전송한다.
단계(S18)에서는 시스템 측에서, 전송받은 가로, 세로 버전과, 디자인 임베딩 영역에 따른 블록 사이즈로부터 실제 데이터의 블록 사이즈를 결정한다.
단계(S19)에서는 시스템 측에서, 전송받은 가로, 세로 버전과, 디자인 임베딩 영역에 따른 블록 사이즈로부터 에러 정정 부호 블록 사이즈를 결정한다.
단계(S20)에서는 시스템 측에서, 버전 정보 블록, 포맷 정보 블록, 디자인을 임베딩하는 경우에는 디자인 임베딩 정보 블록 및 디자인 임베딩 영역 블록의 위치를 결정한다.
단계(S21)에서는 시스템 측에서, 디자인 임베딩을 실시하는지 여부가 판정되고, 디자인 임베딩을 실시할 경우에는 단계(S22)로 진행하고, 그렇지 않은 경우에는 단계(S23)로 진행한다.
단계(S22)에서는 디자인 임베딩 정보 블록을, 코드 이미지 부분의 소정 블록 위치에 배치한다.
단계(S23)에서는 위치 검출 패턴, 위치 보정 패턴을 이미지 부분에 배치한다.
단계(S24)에서는 버전 정보 블록, 포맷 정보 블록을 이미지 부분에 배치한다.
단계(S25)에서는 메시지마다 메시지 헤더를 부여한다.
단계(S26)에서는 아직 데이터를 넣을 부분이 있는지 판정하고, 있으면 단계(S27)로 진행하고, 없으면 단계(S29)로 진행한다.
단계(S27)에서는 종단 메시지 헤더(종단 플래그)를 메시지 데이터의 끝에 부여한다.
단계(S28)에서는 패딩을 나머지 실제 데이터부에 부여한다.
단계(S29)에서는 실제 데이터를 블록으로 만들어서 이미지 부분에 배치한다.
단계(S30)에서는 에러 정정 부호 블록을 이미지 부분에 배치한다.
단계(S31)에서는 시스템 처리 장치(65)가 상기와 같이 생성된 코드 이미지를 출력하여 사용자 처리 장치(61)에 전송한다.
단계(S32)에서는 사용자 측에서, 디자인 임베딩을 실시할지 여부를 판정하고, 디자인 임베딩을 실시하는 경우에는 단계(S33)로 진행하고, 그렇지 않은 경우에는 단계(S34)로 진행하여 종료한다.
단계(S33)에서는 전송받은 코드 이미지에서, 디자인 임베딩 영역의 블록에 임베딩하는 디자인 데이터를 합성하여 전체 이미지를 생성한다. 디자인 임베딩은 예를 들어 데이터 첨부라는 형태로 시스템 처리부에서 실시해도 좋다.
단계(S34)에서 메인 인코딩 처리가 종료된다.
상기 예에서는 사용자 측이 디자인 데이터를 가지고 있었지만, 시스템 측이 디자인 데이터를 가지고 있으며, 이것을 사용자가 지정하도록 해도 좋다.
도 17은 제1 실시예의 이차원 코드를 판독하여 이차원 코드를 분석하는 이차원 코드 분석 장치의 하드웨어 구성을 나타내는 도면이다.
이차원 코드 분석 장치는, 판독부(70), 컴퓨터(이차원 코드 분석 처리부)(74), 디스플레이(75), 및 통신 인터페이스(76)를 갖고 있다. 판독부(70)는 렌즈(71), 이미지 센서(72), 및 아날로그-디지털 변환기(AD)(73)를 가지며, 촬영된 이차원 코드의 디지털 이미지 데이터를 컴퓨터(74)에 출력한다. 도 17의 이차원 코드 분석 장치는 널리 사용되고 있으며, 최근에는 휴대용 단말도 이차원 코드 분석 장치와 같은 기능을 실현하고 있다.
도 18 내지 도 20은 사용자가 촬영한 이차원 코드를 분석하는 디코딩 처리의 절차를 나타내는 플로우차트이다. 이 디코딩 처리는 1화면에 복수의 이차원 코드가 투영되어 있는 경우를 상정하고 있다. 디코딩 처리는 메인 분석 처리와 정보 추출 처리로 이루어진다. 먼저, 메인 분석 처리를 설명한다.
단계(S101)에서는 메인 분석 처리를 시작한다.
단계(S102)에서는 이차원 코드의 촬영 이미지를 입력한다.
단계(S103)에서는 입력된 촬영 이미지의 이치 이미지를 생성한다. 이치화 방법은 입력된 촬영 이미지가 RGB 이미지 등의 컬러 이미지이면 일단 그레이스케일 이미지로 변환하고 이미지 내의 최대 휘도 값과 최소 휘도 값의 평균을 임계값으로 하고, 임계값 이상이면 명, 미만이면 암으로 한다. 컬러 이미지에서 그레이스케일 변환을 하려면 각 화소의 RGB 값을 이용하여 휘도(brightness) = 0.299R + 0.587G + 0.114B의 변환식에 따라 변환한다. 컬러 이미지를 그레이스케일 이미지로 변환하는 방법, 또한 이치화 이미지로 변환하는 방법은 다양한 방법이 제안되어 있으며, 상기 변환 방법에 한정되지 않는다.
단계(S104)에서는 위치 검출 패턴 후보를 검출한다. 구체적으로는, 이미지의 좌상 점을 시작점으로 하여 화면을 X 방향으로 주사하고, 우단에 도달하면 몇 픽셀 아래의 좌단에서부터 X 방향으로 주사한다. 바꾸어 말하면, 몇 픽셀을 생략하게 된다. 이것을 이미지 전체에 대해 반복한다. 생략된 픽셀 수는 (최대 생략량) = (위치 검출 패턴의 최소 셀 높이)×(촬영시 셀 당 픽셀 수)이다. 위치 검출 패턴의 최소 높이란, 코드의 회전도 고려하여 위치 검출 패턴의 회전으로 일어날 수 있는 Y 방향의 최소 셀 사이즈이며, 실시예에서는 좌상의 제2 위치 검출 패턴이 회전하지 않는 상태에서 4셀이 최소가 된다. 촬영시 셀 당 픽셀 수는 1셀당 1픽셀을 하회하면 이상적인 이미지에서도 명 셀과 암 셀을 판별하는 것이 어려워진다. 실제 촬영 이미지에서 셀의 차이나 회전을 고려하면 적어도 1셀당 3픽셀 이상인 것이 바람직하다. 3픽셀로 하면 상기 경우 최대 생략량은 12픽셀이 되고 이미지 주사 횟수는 총 화소 수의 1/12이 되어 주사 수를 크게 줄일 수 있다.
단계(S105)에서는 위치 검출 패턴 후보를 검사한다. 구체적으로는 주사 중에 명에서부터 암의 경계를 발견했을 경우 암부분의 주위를 주사한다. 이때 최소, 최대의 X 좌표, Y 좌표를 각각 구한다. 이로써 암 덩어리의 외접하는 직사각형을 취득할 수 있다. 이것의 좌상 좌표를 (x1,y1), 우하 좌표를 (x2,y2)로 나타낸다. 1번 주위를 주사하면 이후에는 주사는 하지 않아도 된다.
또한, 주위 탐색을 실시하여도 충분히 이미지 주사 횟수를 줄일 수가 있다. 주위 탐색에서 처리 시간이 가장 길어지는 최악의 일례는 1픽셀의 세로 줄무늬를 1픽셀마다 배치하는 케이스이지만, 애초에 그런 케이스는 발생하지 않는데다가 발생해도 둘레 탐색은 전체 화소를 1회 주사하는 것과 같은 횟수로 줄일 수 있어 주사 횟수가 증가하지 않는다. 이것은 다른 최악의 경우에서도 마찬가지이다.
도 1의 이차원 코드의 경우 암명암명암이 1 : 1 : 3 : 1 : 1의 비율이 되는 부분을 탐색함으로써 위치 검출 패턴을 검출할 수 있어 1회 주사로 위치 검출 패턴을 찾을 수 있다. 여기서, 촬영된 코드가 45도 기울어져 있을 때의 주사에서 1 : 1 : 3 : 1 : 1의 비율을 얻을 수 있는 것은 대각선 상의 주사뿐이다. 대부분의 경우, 촬영 방향이 자유이므로 촬영하는 코드의 방향이 360도의 어떤 회전 위치에나 있을 수 있다. 이러한 경우, 생략할 수 있는 양은 적고, 실제 회전 위치는 모르기 때문에 생략량을 늘릴 수는 없다.
도 21은 위치 검출 패턴 후보의 형상 체크를 설명하는 도면이다.
다음으로, 위치 검출 패턴 후보의 형상을 체크한다. 제1 실시예의 이차원 코드의 위치 검출 패턴은 모두 테두리, 즉 구멍 형상을 갖는다. 그래서 먼저 구멍의 유무를 확인한다. 시작점을 외접 직사각형의 좌측 중간점(x1,(y1+y2)/2), 끝점을 (x2,(y1+y2)/2)로 하는 x축 방향 주사를 실시한다. 여기서, 다음의 (1) 또는 (2)의 조건에 충족하는 것을 확인한다.
(1) 암명암이 되는 배열이 존재하는 것을 확인한다. 첫번째 암 좌단(lx1)에서 두번째 암 우단(rx1)까지 중심이 되는 화소가 명이라는 것을 확인한다.
(2) 암명암명암이라는 패턴을 찾는다. 첫번째 암 좌단(lx2)에서 세번째 암 우단(rx2)까지 중심이 되는 화소가 암이라는 것을 확인한다.
(1)의 경우는 또한, 도 21의 (A)에 나타낸 바와 같이, 중심 좌표((lx1+rx1)/2, (y1+y2)/2)에서 상하를 주사하여 상이 명암명이 되어 있으며(끝점: ((lx1+rx1)/2), y1-1)), 하가 명암명(끝점: ((lx1 + rx1)/2), y2+1))이고, 상측 주사의 암과 명의 경계인 y좌표(ty1)와 하측 주사의 암과 명의 경계인 y좌표(by1)의 중간점이, 명의 중심 좌표와 거의 일치하는 것을 확인한다.
(2)의 경우도 또한, 도 21의 (B)에 나타낸 바와 같이, 중심 좌표((lx2 + rx2)/2, (y1 + y2)/2)에서 상하를 주사하여 상이 암명암명이 되어 있으며(끝점: ((lx2 + rx2)/2), y1-1)), 하가 암명암명(끝점:((lx2 + rx2)/2), y2 + 1))이고, 상측 주사의 두 번째 암과 명의 경계인 y좌표(ty2)와 하측 주사의 두 번째 암과 명의 경계인 y좌표(by2)의 중간점이 명의 중심 좌표와 거의 일치하는 것을 확인한다.
이상의 처리에 의해, 테두리 내에 암부가 있는 제1 위치 검출 패턴(정사각형 테두리 내에 정사각형)과, 테두리뿐인 제2 내지 제4 위치 검출 패턴(정사각형 테두리 또는 직사각형 테두리: □형)으로 구별할 수 있었다.
(1) 또는 (2)을 충족하지 않는 것은 위치 검출 패턴이 아니다.
다음으로, 각 위치 검출 패턴 후보의 정점을 탐색한다. 외접하는 직사각형의 좌상 좌표(x1, y1)에서 X축 방향으로 (x2, y1)까지 주사한다. 가장 먼저 접촉한 암점의 좌표를 vertex1: (vx1, vy1)로 한다. 다음에 우상 좌표(x2, y1)에서 Y축 방향으로 (x2, y2)까지 주사한다. 가장 먼저 접촉한 암점의 좌표를 vertex2: (vx2, vy2)로 한다. 우하 좌표(x2, y2)에서 X축의 반대 방향으로 (x1, y2)까지 주사한다. 가장 먼저 접촉한 암점의 좌표를 vertex3: (vx3, vy3)로 한다. 다음에 좌하 좌표(x1, y2)에서 Y축의 반대 방향으로 (x1, y1)까지 주사한다. 가장 먼저 접촉한 암점의 좌표를 vertex4: (vx4, vy4)로 한다. vertex1 ~ vertex4는 직사각형(정사각형을 포함한다)이 되는 것이다. 그렇지 않은 경우에는 위치 검출 패턴이 아니다. 도 21의 (B)의 표기는 생략한다.
다음에 직사각형의 가로 세로 비율을 본다. ((vx1-vx2)×(vx1-vx2) + (vy1-vy2)×(vy1-vy2))1/2로 1변의 길이가, ((vx2-vx3)×(vx2-vx3) + (vy2-vy3)×(vy2-vy3))1/ 2 로 다른 1변의 길이가 구해진다. 변의 비율이 (장변) : (단변) = 1 : 1이고 또한 형상이 (1)이면 제2 위치 검출 패턴, (2)이면 제1 위치 검출 패턴, (장변) : (단변) = 1 : 2이고 형상이 (1)이면 제3 또는 제4 위치 검출 패턴이 된다. 지금까지 3 타입의 위치 검출 패턴의 구별이 가능해졌다.
다음으로, 면적을 구한다. 여기에서의 면적은 외측 직사각형 테두리의 면적이며 내측의 스페이스도 포함한다. 제1 위치 검출 패턴의 경우에는 테두리 안의 정사각형도 포함한다. 위치 검출 패턴의 면적은 외측 직사각형의 면적에서 4모서리를 포함한 4개의 직각삼각형 면적을 빼면 구해진다. 면적 = (x2-x1)×(y2-y1) - (vx1-vx4)×(vy4-vy1)/2 - (vx2-vx1)×(vy2-vy1)/2 - (vx2-vx3)×(vy3 -vy2)/2 - (vx3-vx4)×(vy3 -vy4)/2로 구해진다.
다음에, 회전 각도를 구한다. 제1 및 제2 위치 검출 패턴은 정사각형이므로 90도 이상의 경사를 감지할 수 없기 때문에 90도까지 구한다. 각도는 시계 방향으로 한다.
θ = arctan((vy2-vy1)/(vx2-vx1))
θ가 회전 각도이다.
제3 및 제4 위치 검출 패턴은 0에서 180도까지 구한다. 제3 위치 검출 패턴은 2점 간 좌표의 거리를 구하는 함수(length(x1, y1, x2, y2) = ((x2-x1)2 + (y2-y1)2)1/2를 정의하고, 0~45도까지는 length(vx1, vy1, vx2, vy2) > length(vx4,vy4,vx1,vy1) 또한 (x2-x1) > (y2-y1)이며, θ = arctan((vy2-vy1)/(vx2-vx1))로 구해진다. 45~90도까지는 length(vx1,vy1,vx2,vy2) > length(vx4,vy4,vx1,vy1)및 (x2-x1)<(y2-y1)이며, θ=arctan((vy2-vy1)/(vx2-vx1))로 구해진다. 90~135도까지는 length(vx1,vy1,vx2,vy2)< length(vx4,vy4,vx1,vy1) 및 (x2-x1)< (y2-y1)이며, θ=arctan((vy2-vy1)/(vx2-vx1)) + 90도로 구해진다. 135~180도까지는 length(vx1,vy1,vx2, vy2) < length(vx4,vy4,vx1,vy1) 및 (x2-x1) > (y2-y1)이며, θ=arctan((vy2-vy1)/(vx2-vx1)) + 90도로 구해진다. 제4 위치 검출 패턴에 대해서도 동일하게 회전 각도(θ)를 구한다.
다음으로, 위치 검출 패턴 후보의 중심 좌표를 검출한다. 중심 좌표는 외접 직사각형의 중심((x1 + x2)/2(y1 + y2)/2)로 한다.
이상으로, 위치 검출 패턴 후보의 검사가 종료된다.
단계(S106)에서는 이미 3타입으로 구분되어 있는 위치 검출 패턴을, 타입마다 위치 검출 패턴을 면적 내림차순으로 정렬한다.
단계(S107)에서는 4타입의 위치 검출 패턴의 조합을 생성한다. 먼저, 제1 위치 검출 패턴 후보 가운데 가장 면적이 큰 위치 검출 패턴 후보를 선택한다. 제1 위치 검출 패턴의 면적을 S로 하면, 면적이 S/4인 제2 위치 검출 패턴 후보이며 또한 회전 각도가 같은 조합을 찾는다. 이것이 발견되면 제3 및 제4 위치 검출 패턴 후보이며 면적이 S/2가 되는 후보를 찾고 또한 각도가 같은 후보와, 90도 다른 후보의 조합을 찾는다.
여기서, 1화면에 복수의 이차원 코드가 투영되어 있는 경우, 위치 검출 패턴 후보의 모든 조합을 생각하면 엄청난 조합이 되어버린다. 본 발명과 같이 위치 검출 패턴을 모두 바꿈으로써 조합을 크게 줄일 수 있고, 또한 사전에 얻은 형상, 면적, 회전 등의 특징을 이용함으로써 간단한 비교 연산으로 조합을 더욱 축소하는 것이 가능하게 된다. 이에 대해서는 후술한다.
단계(S107)에서는 검토하지 않은 4타입의 위치 검출 패턴의 조합이 남아 있는지 판정하고, 남아 있으면 단계(S108)로 진행하고, 남아 있지 않으면 단계(S112)로 진행한다.
단계(S108)에서는 조합된 위치 검출 패턴에 대해서, 동일한 이차원 코드의 위치 검출 패턴인 것으로 간주하고 정보 추출을 실시한다. 이 처리에 대해서는 도 19 및 도 20을 참조하여 후술한다.
단계(S109)에서는 정보 추출에 성공했는지의 결과에 따라 성공했을 경우에는 단계(S110)로 진행하고, 실패했을 경우에는 실패한 위치 검출 패턴의 조합을 제외하는 처리를 실시한 후에 단계(S107)로 돌아간다.
단계(S110)에서는 추출에 성공한 정보의 메시지를 보존한다.
단계(S111)에서는 데이터 추출에 성공한 이차원 패턴에 사용된 후보를 위치 검출 패턴 후보에서 제외하고 단계(S107)로 돌아간다. 또한, 데이터 추출에 성공한 이차원 패턴의 범위에, 사용하지 않은 위치 검출 패턴 후보가 있을 경우에는 그것도 후보에서 제외한다.
단계(S107) 내지 단계(S111)를 반복함으로써 투영된 이차원 코드의 분석이 종료된다. 여기서, 제외되지 않은 위치 검출 패턴 후보가 남아있을 경우에는 3타입 또는 2타입의 조합에 대해 단계(S108)의 정보 추출 처리를 수행하도록 해도 좋다. 이에 대해서는 후술한다.
단계(S112)에서는 분석이 종료되었다는 메시지를 호출원에 전송한다.
단계(S113)에서, 메인 분석 처리를 종료한다.
다음으로, 도 19 및 도 20을 참조하여 단계(S108)의 정보 추출 처리를 설명한다.
단계(S200)에서, 정보 추출 처리를 시작한다.
단계(S201)에서, 4타입 위치 검출 패턴의 조합 관계를 체크한다. 체크는 다음의 (a), (b)의 조건을 충족하는지 판정함으로써 실시하고, 충족하지 않은 항목이 있으면 문제가 있는 것으로 간주하고 처리를 종료한다.
먼저, 상기 제1 위치 검출 패턴의 중심 좌표를 pt1, 상기 제2 위치 검출 패턴의 중심 좌표를 pt2, 상기 제3 위치 검출 패턴의 중심 좌표를 pt3, 상기 제4 위치 검출 패턴의 중심 좌표를 pt4로 하고, pt1, pt3, pt2, pt4, pt1과 차례로 각 점을 연결한다. 4타입 위치 검출의 조합이 정확하면 직사각형이 얻어진다.
(a) 모든 정점의 각도가 직각이다.
(b) 마주 보는 변의 길이가 1 : 1이다.
단계(S202)에서는 이상의 체크 결과에서 문제가 있는지 판정하고, 있으면 단계(S203)로 진행하여 정보 추출에 실패했음을 나타내는 플래그를 세우고, 문제가 없으면 단계(S204)로 진행한다.
단계(S204)에서는 어느 하나의 위치 검출 패턴에서 1셀당 픽셀 수를 구한다. 제2 위치 검출 패턴의 경우 면적은 4×4 = 16 셀의 면적이며, 1셀당 픽셀 수 = ((면적)/16)1/2의 식으로 구해진다.
단계(S205)에서는 인접한 위치 검출 패턴의 중심 좌표의 거리를 가로 세로 각각에서 측정하고, 단계(S204)에서 구한 값으로 나눔으로써 이차원 코드의 가로, 세로 셀 사이즈를 각각 구할 수 있다. 얻은 중심 좌표의 가로 거리를 d픽셀, 1셀당 픽셀 수를 p픽셀/셀로 하면 코드의 가로 셀 사이즈 = d/p + (4 + 6)이 얻어진다. 세로도 동일한 방법.
단계(S205)에서는 단계(S205)에서 구한 셀 사이즈에서 이차원 코드의 버전을 가결정한다. 버전은 8셀씩 단계적으로 커진다. 코드의 가로 셀 사이즈 = 가로 버전×8 + 19로 구해지기 때문에 이 식을 변형시켜 가로 버전 = (셀 사이즈 - 19)/8로 구해질 수 있다. 여기서 얻은 가로 버전 값이 가로 가결정 버전이 된다. 셀 사이즈가 일치하는 버전이 없는 경우에는 셀 사이즈가 가장 가까운 버전을 지정한다. 세로도 동일한 방법. 임시로 하는 이유는 비스듬히 찍은 촬영이나 인쇄된 종이의 휨 등으로 정확한 값을 얻을 수 없는 가능성을 고려하고 있으며, 버전 정보 블록도 함께 이용함으로써 정확한 값을 얻을 수 있도록 하고 있다.
단계(S206)에서는 위치 검출 패턴에서, 인접한 위치 검출 패턴의 방향을 주사함으로써 버전 정보 블록, 포맷 정보 블록을 구성하는 셀의 촬영 이미지에서의 좌표를 검출한다.
단계(S207)에서는 버전 정보 블록의 분석(가로 세로)을 실시한다. 이로써 가로 세로의 버전이 판명된다. 분석에 실패했을 경우, 처리를 종료한다. 전술한 바와 같이 버전 정보 블록 및 포맷 정보 블록은 1블록에서 20가지의 값을 나타낸다. 버전 정보 블록은 가로, 세로 각각 블록이 2개소 배치되어 있으며, 가로, 세로 2개소씩의 버전 정보 블록에서 판독한 값과, 코드 폭, 높이와 위치 검출 패턴의 사이즈에서 얻은 가결정 버전 정보, 이러한 3개 값 중 2개 이상 동일한 값이 있으면 그 값을 채택한다.
단계(S208)에서는 포맷 정보 블록의 분석을 실시한다. 디자인 임베딩 여부와, 블록마다의 데이터 임베딩 방법이 결정된다. 분석에 실패했을 경우, 처리를 종료한다. 포맷 정보 블록은 3개소에는 배치되어 있으며, 2개소 이상의 동일하면 채택한다.
단계(S209)에서는 위치 보정 패턴의 좌표를 계산하여 각 셀의 이차원 코드 이미지 내에서의 좌표를 고정확도로 구한다. 각 셀의 좌표는 미리 도출할 수 있지만, 위치 보정 패턴에 의해 렌즈 왜곡의 영향을 줄이는 것이 가능하게 된다. 위치 보정 패턴의 이미지 내에서의 좌표는 미리 판명되어 있기 때문에 그 점이 암이라는 것을 확인한다. 그리고 이 점에서 시작점으로 하고 오른쪽 방향으로 주사를 실시하여 암 화소와 명 화소의 경계를 찾고, 단계(S105)와 같은 방법으로 주위를 주사하여 외접 직사각형의 좌상 좌표를 (x1,y1), 우하 좌표를 (x2,y2)로 하고, 중심 좌표는 ((x1 + x2)/2, (y1 + y2)/2))가 얻어졌다.
단계(S210)에서는 포맷 정보 블록에 디자인 임베딩이 있는지 여부를 판정하고, 디자인이 있는 것으로 판정되었을 경우 단계(S211)로 진행하고, 디자인이 없는 것으로 판정되었을 경우 단계(S212)로 진행한다.
단계(S211)에서는 디자인 임베딩 정보 블록을 참조함으로써 디자인 임베딩 블록의 가로 세로 각각의 오프셋 폭과 높이 및 디자인 임베딩 블록의 폭과 높이가 판명된다.
단계(S212)에서는 실제 데이터 블록과 에러 정정 부호 블록에 대해 위치 검출 패턴의 중심 좌표 또는 위치 보정 패턴의 중심 좌표에서 가장 가까운 어떤 4점을 선택하고, 투영 변환에 의해 촬영 이미지 내에서의 셀 좌표를 구한다.
단계(S213)에서는 실제 데이터 블록 및 에러 정정 부호 블록에 대해 포맷 정보 블록의 데이터 타입에 따라 복수의 명(1)과 암(0)의 데이터를 검출한다.
단계(S214)에서는 실제 데이터 블록과 에러 정정 부호 블록의 개수에서 에러 정정 부호 블록의 개수를 계산한다. 이로써 실제 데이터와 에러 정정 부호가 판명된다.
단계(S215)에서는 에러 정정 부호를 이용하여 데이터부와 에러 정정 부호에 대해 에러의 수와 위치를 검출한다. 에러가 0이면, 단계(S219)로 진행한다. 그렇지 않으면 단계(S216)로 진행한다.
단계(S216)에서는 정정 가능한지 여부를 판정하고, 정정 가능하면 단계(S218)로 진행하고 정정할 수 없으면 단계(S217)로 진행한다.
단계(S217)에서는 정보 추출에 실패했기 때문에 메시지를 얻지 못하고 처리를 종료한다.
단계(S218)에서는 에러 정정 부호에 의해 실제 데이터의 에러 정정을 실시한다.
단계(S219)에서는 얻은 실제 데이터는 헤더(메시지 타입(메시지 인코딩), 메시지 사이즈), 메시지, 종단 플래그, 패딩으로 구성된다. 헤더와 메시지를 합친 것을 세그먼트라고 한다. 종단 플래그는 메시지를 포함하지 않는 특수한 세그먼트이다. 세그먼트는 복수인 경우가 있다. 종단 플래그가 발견되었을 때, 그 뒤는 모두 패딩이 된다. 데이터로부터 메시지를 복원한다.
단계(S220)에서는 정보 추출 처리를 종료한다.
투영 변환에서는 4쌍 이상의 좌표가 필요하다. 상기 분석 처리에서는 4개의 위치 검출 패턴을 검출할 수 있었을 경우의 예를 설명했지만, 오염이나 아웃포커스, 블러 등 때문에 3개 또는 2개의 위치 검출 패턴만이 검출될 수 있는 경우도 발생할 수 있다. 본 발명에서는 그런 경우 검출할 수 있었던 3개 또는 2개의 위치 검출 패턴 형상이 다르므로 3개 또는 2개의 위치 관계에서 검출할 수 없었던 위치 검출 패턴의 타입이 판명되기 때문에 위치를 쉽게 예측할 수 있다. 예를 들어, 제1 실시예의 이차원 코드에서 3개의 위치 검출 패턴을 검출할 수 있었을 경우에는 형상으로부터 대각선에 위치한 2개의 위치 검출 패턴을 식별할 수 있으므로 검출할 수 없었던 1개는 대각선의 2개의 위치 검출 패턴을 연결하는 직선에 대해 다른 1개의 위치 검출 패턴의 미러 대칭의 위치에 있다고 추측할 수 있다. 또한, 2개의 위치 검출 패턴을 검출할 수 있었을 경우에는 형상으로부터 2개의 위치 관계가 판명된다. 예를 들어 인접한 2개의 위치 검출 패턴이면 2개의 위치 검출 패턴을 연결하는 직선에서 수직인 방향으로 이 직선과 같은 거리 떨어진 위치에 나머지 2개의 위치 검출 패턴이 존재한다고 예측된다. 또한, 대각선의 2개의 위치 검출 패턴이라면, 2개의 위치 검출 패턴의 변 연장선 상의 교차점에 나머지 2개의 위치 검출 패턴이 존재한다고 예측된다. 예를 들어, 제3 위치 검출 패턴과 제4 위치 검출 패턴이 발견되었을 경우, 각각의 단변 2개를 연장함으로써 교차점이 4점 생기지만, 이 교차점은 제1 위치 검출 패턴의 정점이 되고, 마찬가지로 장변을 연장하여 생기는 교차점 4점은 제2 위치 검출 패턴이 된다. 제1 위치 검출 패턴과 제2 위치 검출 패턴이 발견되었을 경우에도 동일한 방법으로 예측할 수 있다. 물론 4개의 위치 검출 패턴인 경우에 비해 3개인 경우는 정확도가 떨어지고, 2개인 경우는 정확도가 더 떨어진다. 아무튼, 상기와 같이 4개의 위치 검출 패턴의 위치를 가결정하고 이것을 투영 변환하여 위치 보정 패턴의 위치 정보를 취득한다. 그리고 위치 보정 패턴을 이용하여 좌표를 보정하고, 검출된 위치 검출 패턴의 좌표와, 위치 보정 패턴으로 보정한 좌표에 따라 4쌍의 위치 검출 패턴의 좌표를 최종 결정한다.
위치 검출 패턴의 개수는 오염 등으로 검출할 수 없는 것이 발생하는 점을 고려하면, 개수가 많은 편이 바람직하지만 그만큼 위치 검출 패턴이 나타내는 면적 비율이 증가하여 데이터 효율이 감소할 뿐 아니라 위치 검출 패턴의 검출 처리량이 증가하므로 이차원 코드의 사용 형태 등에 따라 적절하게 결정하는 것이 바람직하다.
다음으로, 1화면에 복수의 이차원 코드가 투영되었을 경우에 대해 본 발명의 이차원 코드와 도 1의 이차원 코드를 사용했을 경우를 비교한다. 예를 들어, 1화면에 6개의 도 1의 이차원 코드가 투영되었을 경우 동일한 위치 검출 패턴이 18개 투영된다. 전술한 바와 같이 18개의 위치 검출 패턴을 검출하고, 그 중 3개의 조합 모두에 대해 동일한 이차원 코드의 것인지 체크하는 것으로 한다. 이 경우 조합은 18C3 = 816 가지가 된다. 만약 1개의 이차원 코드에 4개의 동일한 위치 검출 패턴이 있는 경우에는 화면의 위치 검출 패턴의 개수는 24개가 되며, 그 조합은 24C4 = 10624 가지가 된다. 이처럼 조합의 수가 방대해져 그만큼 처리 시간이 증가한다.
반면에 본 발명과 같이 위치 검출 패턴이 다른 경우 3개의 다른 위치 검출 패턴에서는 6C1×6C1×6C1 = 216 가지가 되고, 4개의 다른 위치 검출 패턴에서는 6C1×6C1×6C1×6C1= 1296 가지가 되어 조합이 크게 줄어든다.
또한, 상기 분석 처리에서는 화면을 생략하면서 주사하여 위치 검출 패턴을 검출했지만, 1개의 위치 검출 패턴 후보를 발견할 수 있으면 그 형상으로부터 다른 위치 검출 패턴이 존재하는 방향 및 거리 범위를 어느 정도 예측하는 것이 가능하며, 주사를 그 영역에 한정함으로써 위치 검출 패턴의 검출 효율을 개선할 수 있다. 예를 들어, 제1 및 제2 실시예의 이차원 코드에서는 직사각형의 제3 및 제4 위치 검출 패턴의 장변 연장 방향으로 제2 위치 검출 패턴이 존재하고, 장변에 수직인 단변의 연장 방향으로 제1 위치 검출 패턴이 존재한다고 예측하는 것이 가능하다. 2개의 위치 검출 패턴이 검출되었을 경우 및 3개의 위치 검출 패턴이 검출되었을 경우에는 나머지 위치 검출 패턴이 존재하는 것으로 예측되는 영역은 더욱 한정된다.
또한, 상술한 이차원 코드는 4개의 다른 위치 검출 패턴이 배치되어 있지만, 3개의 다른 위치 검출 패턴과 1개 이상의 위치 보정 패턴이라는 구성에서도 정확도가 높은 데이터 추출이 가능하다. 이 경우 위치 검출 패턴의 배치는 4개의 위치 검출 패턴의 배치에서 위치 검출 패턴이 1개 결여된 배치가 된다.
분석할 때에는 3개의 위치 검출 패턴을 검출한 후, 위치 검출 패턴이 결여된 부분의 위치 검출 패턴의 좌표를, 다른 위치 검출 패턴의 위치 관계로부터 보완한다. 다만, 위에서 비스듬히 촬영하는 경우에는 보완된 좌표에 오차가 있는 점이 우려된다. 그래서 위치 검출 패턴 3쌍의 좌표와 보완된 좌표 1쌍인 총 4쌍의 좌표에서, 결여된 위치 검출 패턴에 가장 가까운 위치 보정 패턴의 좌표를 투영 변환에 의해 취득한다.
그리고 위치 보정 패턴을 주사함으로써 위치 보정 패턴의 좌표 보정을 실시한다. 다음으로, 3개의 위치 검출 패턴과 1개의 위치 보정 패턴인 총 4쌍의 좌표를 이용하여 데이터 좌표의 매핑을 실시한다. 위치 보정 패턴에는 좌표의 오차를 줄이는 효과가 있어 정확도가 높은 좌표를 취득할 수 있기 때문에 3개의 위치 검출 패턴과 1개 이상의 위치 보정 패턴으로부터라도 정확도가 높은 데이터 추출이 가능해진다.
위치 보정 패턴이 이미 배치되어 있는 경우에는 위치 검출 패턴이 하나 줄어들기 때문에 코드의 효율이 좋아진다. 한편, 위치 검출 패턴의 중복성이 줄어들어 오염 등에 대한 내성이 떨어진다.
또한, 입력되는 촬영 이미지는 1장이라고는 할 수 없으며 복수의 입력 이미지로부터 1장의 이미지를 합성하여 분석을 하는 경우도 고려할 수 있다. 예를 들어, 동영상과 같은 시계열이 연속된 이미지에서 1장의 이미지를 생성하여 분석하는 경우나 코드의 이미지가 분할되고 복수 장으로 나뉘어 입력되는 경우 등이다.
또한, 동영상으로 다른 코드를 연속적으로 표시하고 이러한 코드를 모두 인식함으로써 비로소 하나의 데이터를 얻을 수 있다는 것과 같은 활용도 생각할 수 있다. 이 경우 동영상이 아니라 종이에 복수의 코드를 배치해도 좋다.
이러한 경우에도 본 발명의 이차원 코드를 적용하는 것은 가능하다.
이상으로, 본 발명의 실시예를 설명했지만, 기재된 실시예는 발명을 설명하기 위한 것으로, 당업자에게는 특허청구범위에 있어서 다양한 변형예가 있을 수 있음이 쉽게 이해 가능하다.
12A: 제1 위치 검출 패턴
12B: 제3 위치 검출 패턴
12C: 제4 위치 검출 패턴
12D: 제2 위치 검출 패턴
15: 버전 정보 블록(세로)
16: 버전 정보 블록(가로)
17: 포맷 정보 블록
18A ~ 18D: 디자인 임베딩 정보 블록(세로)
19A ~ 19D: 디자인 임베딩 정보 블록(가로)

Claims (9)

  1. 이진 코드로 표현되는 데이터를 셀화하여 이차원 매트릭스 상에 패턴으로서 배치한 이차원 코드이며,
    위치 검출 패턴과,
    상기 위치 검출 패턴을 제외한 상기 이차원 매트릭스의 영역을 분할한 복수의 데이터 블록과,
    인접한 상기 복수의 데이터 블록 사이에 배치된 분리스페이스를 구비한 것을 특징으로 하는 이차원 코드.
  2. 제1항에 있어서, 상기 복수의 데이터 블록은 상기 데이터 블록이 다른 복수의 표현 중 어느 하나인지를 나타내는 포맷 정보 블록을 포함하는 것을 특징으로 하는 이차원 코드.
  3. 제2항에 있어서, 상기 복수의 표현 중 하나는 중앙 셀 이외의 8개 셀은 4개의 명 셀 및 4개의 암 셀을 포함하도록 고정되며, 140 패턴을 나타내는 7비트 표현인 것을 특징으로 하는 이차원 코드.
  4. 제2항에 있어서, 상기 복수의 표현 중 하나는 중앙 셀 이외의 8개 셀은 4개의 명 셀 및 4개의 암 셀을 포함하도록 고정되고 또한 중앙 셀이 명 또는 암으로 고정되며, 70 패턴을 나타내는 6비트 표현인 것을 특징으로 하는 것을 특징으로 하는 이차원 코드.
  5. 제1항 또는 제2항에 있어서, 상기 위치 검출 패턴은 상기 데이터 블록보다 큰 면적을 갖는 것을 특징으로 하는 이차원 코드.
  6. 제1항 또는 제2항에 있어서, 각 데이터 블록은 3×3 셀을 갖고,
    상기 분리스페이스는 1셀 이상의 폭을 갖고,
    상기 위치 검출 패턴은 4셀 이상의 가로 폭과 4셀 이상의 세로 폭을 갖는 것을 특징으로 하는 이차원 코드.
  7. 청구항 제2항의 이차원 코드를 분석하는 이차원 코드 분석 방법이며,
    위치 검출 패턴을 식별하고,
    식별된 상기 위치 검출 패턴에 따라 상기 포맷 정보 블록의 위치를 산출하고,
    상기 포맷 정보 블록을 분석하여 상기 데이터 블록이 상기 복수의 표현 중 어느 하나인지를 판정하고,
    상기 데이터 블록을 판정한 표현에 따라 분석하는 것을 특징으로 하는 이차원 코드 분석 방법.
  8. 청구항 제2항의 이차원 코드를 분석하도록 컴퓨터를 제어하는 프로그램이며,
    컴퓨터가,
    위치 검출 패턴을 식별하고,
    식별된 상기 위치 검출 패턴에 따라 상기 포맷 정보 블록의 위치를 산출하고,
    상기 포맷 정보 블록을 분석하여 상기 데이터 블록이 상기 복수의 표현 중 어느 하나인지를 판정하고,
    상기 데이터 블록을 판정한 표현에 따라 분석하도록 제어하는 것을 특징으로 하는 프로그램.
  9. 청구항 제1항의 이차원 코드의 생성 시스템이며,
    상기 위치 검출 패턴을, 이차원 매트릭스의 소정 위치에 배치하는 위치 검출 패턴 배치 수단과,
    상기 위치 검출 패턴을 배치하는 영역을 제외한 상기 이차원 매트릭스의 영역을, 사이에 분리스페이스가 배치된 복수의 데이터 블록으로 분할하는 분할 수단과,
    상기 복수의 데이터 블록에서 이차원 코드의 분석에 필요한 정보를 배치하는 정보 블록을 선택하는 정보 블록 배치 수단과,
    메시지의 기록 데이터를, 상기 위치 검출 패턴 및 상기 정보 블록을 제외한 상기 이차원 매트릭스의 영역에, 순차적으로 배치하는 메시지 데이터 배치 수단을 구비한 것을 특징으로 하는 이차원 코드 생성 시스템.
KR1020157013912A 2012-11-13 2013-11-07 이차원 코드 KR101669544B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012249788 2012-11-13
JPJP-P-2012-249788 2012-11-13
PCT/JP2013/080156 WO2014077187A1 (ja) 2012-11-13 2013-11-07 二次元コード

Publications (2)

Publication Number Publication Date
KR20150079843A true KR20150079843A (ko) 2015-07-08
KR101669544B1 KR101669544B1 (ko) 2016-10-27

Family

ID=50731099

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157013912A KR101669544B1 (ko) 2012-11-13 2013-11-07 이차원 코드

Country Status (8)

Country Link
US (1) US9898637B2 (ko)
EP (1) EP2921996B1 (ko)
JP (1) JP5791826B2 (ko)
KR (1) KR101669544B1 (ko)
CN (1) CN104781835B (ko)
SG (1) SG11201503742XA (ko)
TW (1) TWI501159B (ko)
WO (1) WO2014077187A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10147214B2 (en) 2012-06-06 2018-12-04 Sodyo Ltd. Display synchronization using colored anchors
US9437046B2 (en) 2012-06-06 2016-09-06 Sodyo Ltd. Anchors for location-based navigation and augmented reality applications
EP3251091B1 (en) * 2015-01-28 2019-10-16 Sodyo Ltd. Hybrid visual tagging using customized colored tiles
CN105760919B (zh) * 2016-02-06 2018-08-07 深圳市天朗时代科技有限公司 一种点阵二维码的编码和识别方法
CN105894067B (zh) * 2016-02-06 2018-08-07 深圳市天朗时代科技有限公司 一种点阵二维码的编码和识读方法
JP7167553B2 (ja) * 2017-10-06 2022-11-09 株式会社デンソーウェーブ 二次元コード
CN108009459B (zh) * 2017-11-24 2020-08-18 浙江工业大学 基于三角定位符的字符二维条码快速定位方法
CN112424794A (zh) 2018-07-11 2021-02-26 索迪欧有限公司 使用马赛克图像传感器检测高分辨率的机器可读标签
US11843395B2 (en) 2019-07-05 2023-12-12 Hangzhou Hikrobot Co., Ltd. Coding pattern, coding and reading methods for same, calibration board, and calibration method
CN112819122A (zh) * 2021-01-28 2021-05-18 清华大学 一种二维码生成和解析方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07254037A (ja) 1994-03-14 1995-10-03 Nippondenso Co Ltd 二次元コード
JP2004206674A (ja) * 2002-10-29 2004-07-22 Denso Corp 2次元コードおよびその形成構造
JP2004234318A (ja) 2003-01-30 2004-08-19 Denso Wave Inc 二次元情報コード、二次元情報コードの表示方法、二次元情報コードの生成方法、二次元情報コードの読取方法
KR20070050752A (ko) * 2005-11-11 2007-05-16 주식회사 칼라짚미디어 동영상 이미지 코드와 동영상 이미지 코드 생성/디코딩장치 및 그 방법
JP2007179111A (ja) * 2005-12-26 2007-07-12 Fuji Xerox Co Ltd コードパターン、印刷物、画像生成装置、画像処理装置、画像生成方法及び情報特定方法
JP2007241328A (ja) 2006-03-03 2007-09-20 Namco Bandai Games Inc プログラム、情報記憶媒体、2次元コード生成システム、画像生成システム及び印刷物
JP2009075873A (ja) 2007-09-20 2009-04-09 A T Communications Co Ltd ロゴ付き二次元コード作成装置、ロゴ付き二次元コード作成方法、及びプログラム
JP2009163720A (ja) 2007-12-14 2009-07-23 National Institute Of Advanced Industrial & Technology 二次元コード生成装置
JP2009259192A (ja) * 2008-03-27 2009-11-05 Denso Wave Inc 二次元コード、二次元コード生成方法、二次元コードを表示させるコンピュータ読み取り可能なプログラム、二次元コードを利用した認証方法、及び二次元コードを利用した情報提供方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05290197A (ja) * 1992-04-06 1993-11-05 Teiriyou Sangyo Kk 二次元コ−ドシンボルマ−クの解読方法
US5591956A (en) * 1995-05-15 1997-01-07 Welch Allyn, Inc. Two dimensional data encoding structure and symbology for use with optical readers
CN100369059C (zh) * 2006-01-18 2008-02-13 冯文伦 一种矩阵式二维条码及其编码解码方法
CN101063998A (zh) * 2006-04-30 2007-10-31 王文芳 新型二维条码(q码)的编码和解码方法
CN1885311A (zh) 2006-05-29 2006-12-27 深圳矽感科技有限公司 二维码及其编解码方法
US7886978B2 (en) * 2007-09-20 2011-02-15 Microsoft Corporation Techniques for decoding images of barcodes
CN101197004A (zh) * 2007-12-25 2008-06-11 深圳矽感科技有限公司 一种二维条码及其编解码方法
JP5120156B2 (ja) * 2008-03-27 2013-01-16 株式会社デンソーウェーブ 二次元コード
JP5321352B2 (ja) * 2009-08-27 2013-10-23 富士ゼロックス株式会社 二次元コード生成装置、画像形成システム、二次元コード読み取り装置、コンピュータプログラム及び媒体
MY159805A (en) * 2009-09-04 2017-02-15 Yoshida Kenji Information input/output device, information processing device, information input/output system, printed medium and information input/output method
TW201113815A (en) 2009-10-09 2011-04-16 Primax Electronics Ltd QR code processing method and apparatus thereof

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07254037A (ja) 1994-03-14 1995-10-03 Nippondenso Co Ltd 二次元コード
JP2004206674A (ja) * 2002-10-29 2004-07-22 Denso Corp 2次元コードおよびその形成構造
JP2004234318A (ja) 2003-01-30 2004-08-19 Denso Wave Inc 二次元情報コード、二次元情報コードの表示方法、二次元情報コードの生成方法、二次元情報コードの読取方法
KR20070050752A (ko) * 2005-11-11 2007-05-16 주식회사 칼라짚미디어 동영상 이미지 코드와 동영상 이미지 코드 생성/디코딩장치 및 그 방법
JP2007179111A (ja) * 2005-12-26 2007-07-12 Fuji Xerox Co Ltd コードパターン、印刷物、画像生成装置、画像処理装置、画像生成方法及び情報特定方法
JP2007241328A (ja) 2006-03-03 2007-09-20 Namco Bandai Games Inc プログラム、情報記憶媒体、2次元コード生成システム、画像生成システム及び印刷物
JP2009075873A (ja) 2007-09-20 2009-04-09 A T Communications Co Ltd ロゴ付き二次元コード作成装置、ロゴ付き二次元コード作成方法、及びプログラム
JP2009163720A (ja) 2007-12-14 2009-07-23 National Institute Of Advanced Industrial & Technology 二次元コード生成装置
JP2009259192A (ja) * 2008-03-27 2009-11-05 Denso Wave Inc 二次元コード、二次元コード生成方法、二次元コードを表示させるコンピュータ読み取り可能なプログラム、二次元コードを利用した認証方法、及び二次元コードを利用した情報提供方法

Also Published As

Publication number Publication date
TWI501159B (zh) 2015-09-21
US20160283763A1 (en) 2016-09-29
CN104781835A (zh) 2015-07-15
KR101669544B1 (ko) 2016-10-27
JPWO2014077187A1 (ja) 2017-01-05
TW201428636A (zh) 2014-07-16
CN104781835B (zh) 2018-03-20
EP2921996A1 (en) 2015-09-23
EP2921996A4 (en) 2016-06-22
JP5791826B2 (ja) 2015-10-07
SG11201503742XA (en) 2015-06-29
US9898637B2 (en) 2018-02-20
WO2014077187A1 (ja) 2014-05-22
EP2921996B1 (en) 2019-01-16

Similar Documents

Publication Publication Date Title
KR101801217B1 (ko) 이차원 코드
KR101679720B1 (ko) 이차원 코드, 이차원 코드 생성 시스템 및 분석 프로그램
KR101669544B1 (ko) 이차원 코드
JP6045752B2 (ja) 二次元コード、二次元コードの解析システム及び二次元コードの作成システム
GB2446424A (en) Two dimensional bar code with locating symbols
JP6785546B2 (ja) 二次元コードの解析方法、二次元コードの解析装置及び二次元コードを解析するプログラム
JP6952846B2 (ja) 二次元コード
JP3863949B2 (ja) デジタル情報記録担体、デジタル情報解読方法およびデジタル情報解読装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant