KR100960786B1 - 2d 부호의 인코딩 디코딩 방법 및 시스템 - Google Patents

2d 부호의 인코딩 디코딩 방법 및 시스템 Download PDF

Info

Publication number
KR100960786B1
KR100960786B1 KR1020030054803A KR20030054803A KR100960786B1 KR 100960786 B1 KR100960786 B1 KR 100960786B1 KR 1020030054803 A KR1020030054803 A KR 1020030054803A KR 20030054803 A KR20030054803 A KR 20030054803A KR 100960786 B1 KR100960786 B1 KR 100960786B1
Authority
KR
South Korea
Prior art keywords
code
data
bit
stream
bars
Prior art date
Application number
KR1020030054803A
Other languages
English (en)
Other versions
KR20040014336A (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 KR20040014336A publication Critical patent/KR20040014336A/ko
Application granted granted Critical
Publication of KR100960786B1 publication Critical patent/KR100960786B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K1/00Methods or arrangements for marking the record carrier in digital fashion
    • G06K1/12Methods or arrangements for marking the record carrier in digital fashion otherwise than by punching
    • G06K1/121Methods or arrangements for marking the record carrier in digital fashion otherwise than by punching by printing code marks
    • 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
    • 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
    • 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/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore

Abstract

2D 부호를 인코딩하고 디코딩하기 위한 방법 및 시스템이 개시된다. 2D 부호의 일 특징에 따르면, 1) 가변 폭 및 높이의 부호, 2) 가변 프린트 해상도, 3) 다수의 훼손 방지 레벨들, 4) 큰 정보 저장성, 5) 높은 중복성(리던던시), 6) 라인 베이스드 스캐닝 장치에 의한 판독 가능성, 7) 콘택트 스캐닝 또는 논-콘택트 스캐닝 장치에 의한 인식 가능성이 실현된다. 또한, 포지셔닝 라인들의 세트가 2D 부호에 부착되어 스캐닝 장치가 2D 부호를 적당한 해상도로 디코드하는 것을 가이드한다.
2D 바-코드 부호, 인코딩, 디코딩, 스캐닝 장치, 포지셔닝 라인

Description

2D 부호의 인코딩 디코딩 방법 및 시스템{METHODS AND SYSTEMS FOR ENCODING AND DECODING DATA IN 2D SYMBOLOGY}
도 1a는 PDF417 2D 바-코드의 일 예를 도시한다.
도 1b는 QR 코드의 일 예를 도시한다.
도 2는 2D 바-코드 엘리먼트들의 행들과 스캔 라인들의 교차를 나타내는 도면이다.
도 3은 9 비트 코드워드의 두가지 예를 도시한다.
도 4는 본 발명에 따른 2D 바-코드의 일 예를 도시한다.
도 5는 도 4의 2D 바-코드의 상세한 해부도이다.
도 6a 내지 6c는 상측 테두리와 하측 테두리의 예시적인 패턴들을 나타낸다.
도 7a와 7c는 상측 테두리의 시작 코드의 두가지 예들을 상세하게 나타낸다.
도 7b와 7d는 하측 테두리의 끝단 코드의 두가지 예들을 상세하게 나타낸다.
도 8은 상이한 에러 정정 레벨들에서의 에러 정정 코드워드와 데이터 코드워드 사이의 조합을 나타낸 테이블을 도시한다.
도 9a는 코드워드 데이터의 비트-스트림에 대한 인터리브 저장 스킴을 나열한다.
도 9b와 9c는 데이터 세그먼트 제어 정보의 데어터 구조를 나타낸다.
도 10a 내지 10d는 본 발명에 이용된 다양한 마스크들을 예시한다.
도 11은 바-코드 인코딩 방법의 플로우 챠트를 나타낸다.
도 12a는 2D 바-코드를 디코드하기 위한 방법의 플로우 챠트를 나타낸다.
도 12b와 12c는 2D 바-코드를 먼저 스캐닝할 필요없이 2D 바-코드를 디코드하는 방법의 플로우 챠트를 나타낸다.
도 13은 포지셔닝 홀들의 위치를 찾는 상세도를 나타낸다.
도 14a는 2D 바-코드에 사용되는 대안적인 포지셔닝 티스(positioning teeth)를 나타낸다.
도 14b와 14c는 2D 바-코드에 부착된 포지셔닝 라인들의 두가지 예를 나타낸다.
도 15는 인코드되어 있는 아티클의 상이한 패러그래프들에 대응하는 가시적인 분할 마크들을 갖는 2D 바-코드를 나타낸다.
도 16은 포지셔닝 라인들이 스캐닝 장치를 어떻게 가이드하는지를 설명하기 위한 상세한 기하를 나타낸다.
도 17a 및 17b는 인접한 포지셔닝 라인들과 연속적인 스캐닝 라인들 사이의 관계를 나타낸다.
도 18은 2D 바-코드에 대응하는 스캐너 헤드의 개략적인 챠트를 나타낸다.
도 19는 스캐너의 전형적인 블럭도를 나타낸다.
<도면의 주요 부분에 대한 부호의 설명>
400: 2D 바-코드 부호
510: 상측 테두리
520: 하측 테두리
530: 좌측 테두리
540: 우측 테두리
550: 비트-스트림 데이터 영역
560: 복수의 데이터 세그먼트 분할부들
본 발명은 일반적으로 광학식으로 인코딩되는 부호에 관한 것으로, 더 구체적으로는 데이터를 2 차원 부호로 인코딩 및 디코딩하기 위한 방법 및 시스템에 관한 것이다.
오늘날의 첨단 기술 세계에서는, 더 많은 공정들이 컴퓨터에 의해 자동적으로 수행된다. 자동화에 대한 이렇게 증가하는 요구는 새로운 기술들에 대한 강한 요구를 만들었다. 바-코드는 데이터 입력을 자동화하기 위해 사용된 기술들 중 하나이다.
바-코드 부호는 다양한 폭들을 가진 일련의 바들(bars)이 다양한 폭들을 갖는 공백들(spaces)에 의해 서로 이격되어 있는 패턴이며, 바들과 공백들은, 이진수 1들과 0들의 스트링을 나타내는, 서로 다른 광 반사 특성을 갖는다. 바-코드 부호들은 물체 상에 직접 또는 물체에 부착된 레이블들 상에 직접 프린트된다. 바-코 드 부호들은 전형적으로 레이저 빔, 전하 결합 소자(CCD), 또는 콘택트 이미지 센서(CIS: Contact Image Sensor) 카메라와 같은 광학 기술에 의해 판독된다. 전형적인 레이저-기반 바-코드 판독기는 바-코드를 가로질러 이동하면서 바들과 공백들을 전기적 신호로 변환하기 위해 포토-센서를 사용한다. 그런 다음 판독기는 바들과 공백들의 상대적인 폭들을 측정하고, 상이한 패턴을 다시 정규의 특성으로 변환하며, 이들을 보다 더 처리하기 위해 컴퓨터나 휴대용 단말기에 보낸다. 이 바들과 공백들은, 스캐너에 의해 적당하게 복호화되기 위한, 최소한의 폭들을 갖는다. 최소한의 폭은 "단위(unit)" 혹은 "모듈(module)"이라고 불린다. 공백들과 바들은 다수의 "단위" 혹은 "모듈"이다.
상술한 바-코드는 1 차원이다. 1 차원(1D) 바-코드로 인코딩된 정보는 단일의 차원으로 연장하는 바들과 공백들의 폭들에 의해서만 표현된다. 모든 바들과 공백들은 그들의 수직 방향으로 균일한 높이를 가지므로, 정보는 오직 1D 바-코드의 수평 방향으로 저장된다. 일반적으로, 1D 바-코드는, 물리적인 객체들을 상세한 정보를 포함한 데이터베이스와 연관시키기 위한 표시로서 널리 사용된다. 일 차원이기 때문에, 1D 바-코드는, 가령 예를 들면, 우편 번호, 사회 보장 번호, 또는 일련 번호와 같은 매우 제한된 양의 정보만을 저장할 수 있다.
정보 기술에 대한 요구가 증가함에 따라, 연관된 데이터베이스를 제거하고, 부호 자체에 더 많은 정보를 저장하는 데에 관심이 높아졌다. 이러한 요구의 결과로서, 2 차원(2D) 바-코드 기술이 1D 바-코드의 확장으로부터 등장하였다. 2D 바-코드 부호들은 일반적으로 데이터를 2 차원으로 인코딩하는 정사각형 또는 직사각 형 패턴들이다. 이들은 두가지 일반적인 카테고리들에 해당하는데, 그 하나는 "스택형 바-코드(stacked bar-code)"로서 1D 바-코드의 상부에 다른 1D 바-코드가 케익 층처럼 설치되는 것이고, 다른 하나는 "매트릭스 바-코드(matrix bar-code)"로서 진정한 2 차원 매트릭스로 설계되는 것이다.
가장 통상적으로 사용되는 "스택형 바-코드" 중 하나는 도 1a에 도시된 바와 같은 PDF 417이다. PDF 417의 상세한 설명은 미국특허 제5,304,786호에서 찾아볼 수 있다. PDF 417은 다수의 코드 세그먼트들을 포함한다. 그 각각은, 총 17 모듈의 폭들을 갖는 4개의 바들과 4개의 공백들로 이루어지기 때문에, 이름이 PDF 417이다. 이것은 부호 내에 높은 수준의 에러 정정이 설계될 때, 훼손된 부호에 대한 높은 허용 한계를 갖는다. 이론적으로, PDF 417은 부호마다 2000 문자들을 저장할 수 있으나, 현실적인 한계는 350 문자를 초과하지 않는다. PDF 부호를 고해상도의 프린터, 예를 들면 레이저나 열전사 프린터를 사용하여 프린트할 것이 요구된다. PDF 417은 카메라(CCD 또는 CMOS), 및 변형된 휴대형 레이저 또는 CIS 스캐너에 의해 판독될 수 있다.
QR 코드(Quick Response Code)는 "Nippondenso ID 시스템즈에 의해 개발된 "매트릭스 바-코드"의 예이다. 도 1b에 도시된 바와 같이, QR 코드 부호는, 정사각형 모양이고, 부호의 세 코너에서 어둡고 밝은 정사각형들이 교대로 중첩된 그의 파인더 패턴에 의해 용이하게 식별될 수 있다. 파인더 패턴 때문에, QR 코드 부호는 CCD 어레이 카메라로 매우 빠르게 판독될 수 있다. 단점은 사이즈인데, 네모지게 구분된 최대 177 모듈이다. 그 대응하는 최대 저장 용량은, 750 바이트 최저 레벨 에러 정정 코드로 인코딩된 2956 바이트이다.
CCD 또는 CIS 카메라에 기초한 스캐너들은 특히 2D 바-코드를 판독하기에 적합하다. 일반적으로, 스캐너들은 (사람이 볼 수 있는) 광을 (컴퓨터가 처리할 수 있는) 0들과 1들로 변환한다. 다시 말해서, 스캐너들은 데이터를 아날로그 포맷에서 디지털 포맷으로 변환한다. 모든 스캐너들은 반사 또는 투과의 동일한 원리로 작동한다. 스캐닝될 스캐닝 객체는 광원과 센서를 포함하는 스캐너 앞에 놓여진다. 스캐닝 객체에 의해 반사되거나 그를 통과한 광의 양은 센서에 의해 픽업되어, 광 강도에 비례한 신호로 변환된다.
스캐너 성능에 영향을 주는 팩터들 중의 하나는 스캔 해상도이다. 스캔 해상도는 스캐너가 달성할 수 있는 상세한 정밀도와 관련되고, 보통, 도트 퍼 인치(인치당 도트들: dots per inch: dpi)로 측정된다. 스캐너가 해상할 수 있는 인치당 도트들이 많을수록, 결과적인 이미지가 더 정밀해질 것이다. 스캐너는 전형적으로 각 픽셀에 대한 광소자를 갖는다. 수평 광 해상도 600dpi를 주장하는 스캐너는 대안적으로 600 픽셀 퍼 인치(pixels per inch: ppi)로도 일컬어지며, 이것은 또한 스캐너의 x-방향 해상도로서 일컬어진다. 최대 스캐닝 폭이 8.5인치인 스캐너에 있어서, 스캔 헤드에는 5100 광소자들의 어레이가 있다. 스캔 헤드는, 스캐닝 객체를 가로질러 움직이는 운송 어레이 상에 탑재된다. 비록 프로세스는 연속적인 운동으로 보일 수 있으나, 헤드는 한번에 일 인치의 일부만큼씩 이동하여, 각 이동 사이에 판독을 행한다. 센서 어레이 내의 물리적인 소자들의 수는 수평 샘플링 레이트를 결정하고, 인치당 스텝들의 수는, 스캐너의 y-방향 해상도로서 일컬어 지는, 수직 샘플링 레이트를 결정한다. 스캐너의 해상도는 그의 x-방향 및 y-방향 해상도들에 기초한다.
보다 많은 정보, 내장성 리던던시(buil-in redundancy), 다수 레벨들의 훼손 방지책, 유연한 폭 및 길이를 갖는 부호를 저장하고, 휴대형의 라인-베이스드 콘택트 또는 논-콘택트 스캐닝을 가능하게 하는 특성을 갖는 신규한 바-코드를 갖는 것이 바람직할 것이다.
수동식 스캐닝 장치가 확산되었기 때문에, 2D 바-코드를 휴대형 스캐너로 스캔하는 것이 바람직하다. 그러나, 몇가지 문제점들이 존재한다. 2D 바-코드 부호들을 스캐닝함에 있어서 제한된 높이의 엘리먼트들 때문에 수직 동기(200)를 상실하는 것으로 알려진 현상이 도 2에 도시된다. 2D 바-코드(210)는 평행한 스캔 라인들(220)의 세트로 오버랩된다. 일반적으로, 스캔 라인(220)과 바-코드(210)의 수평 축 사이의 각도는, 휴대형 스캐닝 장치의 경우, 제로가 아니다. 바-코드 엘리먼트들의 제한된 높이에 기인하여, 어떤 스캔 라인들(230)은 바-코드 엘리먼트들의 두 행들을 가로질러 횡단한다. 그 결과, 이 스캔 라인들(230)은 이용가능하지 않다. 동기를 상실하는 문제를 회피하는 2D 바-코드 디코딩 방법을 갖는 것이 바람직하다. 또한, 2D 바-코드를 효율적으로 그리고 효과적으로 디코드하는 것이 바람직하다.
<발명의 개요>
본 섹션에서는, 본 발명의 몇가지 특징들을 요약하고 몇개의 바람직한 실시 예들을 간단히 소개하고자 한다. 본 섹션의 목적을 불명료하게 하는 것을 회피하기 위해 단순화와 생략이 행해질 수 있다. 이러한 단순화와 생략은 본 발명의 범위를 제한하지 않는다.
본 발명은 2D 바-코드를 인코딩하고 디코딩하기 위한 프로세스, 방법, 시스템, 및 소프트웨어 제품에 관한 것이다. 본 발명의 일 특징에 따르면, 적어도 1) 가변 폭 및 높이의 부호, 2) 가변 프린트 해상도, 3) 다수의 훼손 방지 레벨, 4) 큰 정보 저장성, 5) 높은 리던던시, 6) 라인 베이스드 스캐닝 장치에 의한 판독 가능성, 7) 콘택트 스캐닝 또는 논-콘택트 스캐닝 장치에 의한 인식 가능성을 포함한 특징들을 갖는 신규한 2D 바-코드 부호가 제공된다.
일 실시예에 따르면, 2D 바-코드는 상측 테두리, 하측 테두리, 좌측 테두리, 우측 테두리, 비트-스트림 데이터 영역, 및 복수의 데이터 세그먼트 분할부들을 포함한다. 상측 및 하측 테두리의 고유한 패턴이 사용되어 스캐닝 장치가 2D 바-코드의 배향, 즉, 바-코드가 위 아래로 거꾸로 되었는지 혹은 뒤집힌 미러 이미지인지를 인식할 수 있게 한다. 스캐닝 장치가 데이터 엘리먼트의 좌표를 계산하도록, 좌우측 테두리 상에 복수의 포지셔닝 홀들의 대응 쌍들이 사용된다. 비트-스트림 데이터 영역은, 도 3에 도시된 바와 같은 데이터 엘리먼트들의 3행 3열의 데이터 구조체를 갖는, 정렬된 행들의 9 비트 "코드워드"의 형태로 바-코드 정보를 포함한다. 비트들의 순서는 행을 중심으로, 좌측에서 우측으로, 그리고 위에서 아래로 저장된다.
2D 바-코드의 폭과 길이는 비트-스트림 데이터 영역에 소지된 정보의 양에 의해 제어된다. 물리적 훼손을 방지하기 위한 다수의 조치들이 2D 바-코드에 채택된다. 제1 조치는 데이터 비트-스트림을 다수의 같은 크기의 데이터 세그먼트들로 분할하는 것이다. 데이터 세그먼트 제어 정보의 세트가 각 데이터 세그먼트에 부가된다. 그 결과, 전체 바-코드에 관련된 주요 제어 정보를 각 데이터 세그먼트 내에 반복함으로써 리던던시가 제공된다.
다른 한가지 조치는 각각의 데이터 세그먼트 내에 산업 표준 에러 정정 방법 (예를 들어, 리드-솔로몬(Reed-Solomon) 함수)를 채택하는 것이다. 그리하여, 바-코드의 일부라도 인식이 불가능하면, 에러 정정은, 바-코드의 훼손되지 않은 부분 내에 있는 에러 정정 코드워드를 사용하여 상실된 정보를 재생할 수 있다. 많은 상이한 레벨들의 에러 정정이 있다. 응용 가능한 환경에 따라, 적합한 레벨의 에러 정정이 선택될 수 있다. 디코딩에 대한 높은 신뢰성을 보장하기 위해, 데이터 세그먼트 제어 정보를 위한 독립적인 에러 정정 스킴이 채택된다. 코드워드들을 순차적인 순서로 저장하는 대신에, 코드워드들이 인터리브 순서로 저장되어, 연속적인 데이터가 넓은 영역에 분산적으로 펼쳐진다. 그 결과, 연속적인 데이터가 훼손될 가능성이 줄어들고, 에러 정정을 통해 훼손된 데이터를 재생할 가능성이 증가한다.
바-코드의 한 특별한 부분 내에 바들(어두운 색)의 넓은 집중이 일어날 때, 스캐닝 장치는 이러한 집중된 부분에서 공백들을 포착할 수 없을 것이다. 이러한 문제를 해결하기 위해, 집중된 바들의 일부를 감추기 위해, 코드워드 데이터의 비트-스트림과 선정된 마스크 사이에 마스킹 혹은 X-OR 비트 연산이 수행된다. 마스 킹 메카니즘은 종래의 것과 다르다. 이것은 3행 3열의 코드워드에 기초한다. 각 타입의 마스크는 마스킹 코드워드의 쌍으로 구성된다. 세쌍의 마스킹 코드워드들이 도 10a, 10b, 10c에 도시된다. 이들은 체스 판 스타일로 배열되어 있는데, 흑백 정사각형들은 그 쌍의 마스킹 코드워드를 나타낸다. 이 배열은 도 10d에 예시된다.
본 발명의 다른 특징에 따르면, 상이한 디코딩 방법들이 개시된다. 한가지 방법은 전체 2D 바-코드 부호가 스캔되어 저장된 후 2D 바-코드를 디코드하기 위해 사용된다. 또 다른 방법은 2D 바-코드가 스캔되는 동안 2D 바-코드를 디코딩하기 위해 사용된다. 일 실시예에 따르면, 이 디코딩 방법들은 2D 바-코드를 효율적으로 그리고 효과적으로 디코드하기 위해 스캐닝 장치 상에 로드된 소프트웨어 제품으로서 결합된다.
본 발명의 다른 특징에 따르면, 같은 간격을 갖는 평행한 포지셔닝 라인들의 세트가 2D 바-코드에 부착된다. 이 포지셔닝 라인들은 스캐닝 장치가 2D 바-코드를 적당하게 디코드하도록 가이드하기 위해 사용된다.
본 발명의 다른 특징에 따르면, 2D 바-코드는 아티클의 상이한 패러그래프들에 대응하는 가시적인 마크들로 분할될 수 있다.
본 발명의 목적, 특징, 및 효과 중 하나는, 유연한 특징을 갖고 스캐닝에 적합한 부호를 제공하는 것이다.
본 발명의 목적, 특징, 및 효과 중 다른 것들은, 첨부된 도면들을 참조하여 본 발명의 실시예의 상세한 설명을 검토하면 명백히 알 수 있을 것이다.
본 발명의 이들 및 다른 특징들, 양상, 및 효과는 하기의 상세한 설명, 청구범위, 및 첨부 도면들을 참조함으로써 쉽게 이해될 것이다.
하기의 설명에서는, 본 발명의 충분한 이해를 돕기 위해 여러 특정한 상세 내역들의 설명들이 주어진다. 그러나, 당업자는 본 발명이 이러한 특정 상세 내역들을 배재하고도 실시될 수 있음을 명백히 알 것이다. 본 명세서의 설명 및 표현은, 그 내용을 당업자들에게 가장 효과적으로 전달하기 위해, 당업자나 숙련된 기술자들이 사용하는 통상적인 수단이다. 또한, 공지된 방법들, 프로시져들, 부품들, 및 회로의 경우에는, 본 발명의 특징을 불필요하게 불명료하게 만드는 것을 피하기 위해 설명하지 않을 것이다.
본 명세서에서 "일 실시예" 또는 "실시예"라고 일컫는 것은, 실시예와 관련하여 설명된 특별한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함될 수 있음을 의미한다. 본 명세서의 여러 군데에서 "일 실시예에 있어서"라는 문구의 등장하는데, 이는 모두 동일한 실시예를 일컫는 것일 필요는 없고, 다른 실시예들과 상호 배제적인 별개의 혹은 대안적인 실시예들일 필요도 없다. 또한, 본 발명의 하나 이상의 실시예들을 나타내는 프로세스 플로우 챠트 또는 도면들 내의 블럭들의 순서는 임의의 특별한 순서를 본질적으로 나타내는 것은 아니고, 본 발명의 임의의 제한점들을 암시하는 것도 아니다.
도면들에 있어서 유사한 부품들에는 유사한 번호가 병기되며, 이제 도면들을 참조하여 본 발명을 설명한다. 도 3은 본 발명의 2D 바-코드 부호에 사용된 데이 터 구조의 두가지 예들을 나타낸다. 각각의 9 비트 코드워드는 3행 3열로 배열된 데이터 엘리먼트를 포함하는데, 각각의 데이터 엘리먼트는 어두운 색과 밝은 색 중 어느 하나이다. 각각의 데이터 엘리먼트는 1 비트의 정보를 저장한다. 코드워드의 순서는 좌측으로부터 우측으로 그리고 위로부터 아래로의 순이다. 본 발명의 설명을 용이하게 하기 위해 어둡거나 밝은 색의 엘리먼트는 바나 공백으로서 일컬어진다. 일 실시예에 있어서, 바는 1을 나타내고, 공백은 0을 나타낸다. 예를 들어, 코드워드(310)의 값은 이진수 010101010이거나, 혹은 16진수로 0x0aa이고, 또 다른 코드워드(320)의 값은 이진수 101111001이거나, 혹은 16진수로 0x179이다.
본 발명의 일 실시예에 따라, 도 4는 바들과 공백들로 된 복수의 직사각형 바-코드 엘리먼트들을 포함하는 직사각형 2D 바-코드 부호(400)를 예시한다. 직사각형 2D 바-코드 부호(400)는 두개의 주축들, 즉 수평축(410)과 수직축(420)을 갖는다. 2D 바-코드 부호(400)의 분해도가 도 5에 도시되어 있다. 2D 바-코드 부호(400)의 구성 요소들로는 상측 테두리(510), 하측 테두리(520), 좌측 테두리(530), 우측 테두리(540), 비트-스트림 데이터 영역(550) 및 복수의 데이터 세그먼트 분할부들(560)을 포함한다. 2D 바-코드 부호 데이터는 코드워드 데이터의 비트-스트림의 형태로 저장된다. 코드워드 데이터의 비트-스트림은 9 비트 코드워드의 정렬된 행들의 세트를 포함한다. 비트-스트림 데이터 영역(550)은 데이터 세그먼트 분할부들(560)에 의해 분리된 다수의 데이터 세그먼트들로 분할된다.
상측 테두리(510)의 두개의 예가 도 6a 및 6b에 도시된다. 상측 테두리(510)는 두개의 기본적인 구성 요소들, 즉 시작 코드 패턴(601)과 종결 코드 패턴(605)을 포함한다. 예시적인 상측 테두리는, 도 6a에 도시된 바와 같이, 두개의 시작 코드 패턴들(601)과 하나의 종결 코드 패턴(605)을 포함한다. 도 6b는 세개의 시작 코드 패턴들(601)을 포함하는 다른 예의 상측 테두리를 도시한다. 시작 코드 패턴(601)의 개수는 2D 바-코드 부호에 소지된 데이터의 양에 따라 변화한다. 시작 코드 패턴(601)의 최소 개수는 하나이다. 그리고 시작 코드 패턴(601)의 이론적인 최대수는 없다. 그러나, 실용상의 한계는 캐리어의 폭 (예를 들면, 종이의 폭)에 의해 제어될 수 있다. 유사한 디자인으로, 하측 테두리(520)는 적어도 하나의 끝단 코드 패턴(691)과 하나의 종결 코드 패턴(605)을 포함한다. 예시적인 하측 블럭(520)이 도 6c에 도시된다. 종결 코드 패턴(605)은 하나의 3-모듈 와이드 바를 포함한다.
시작 코드 패턴(601)과 끝단 코드 패턴(691)은 둘다 방향성이 있다. 시작 코드 패턴(601)은 구별되는 폭들의 조합을 갖는 바들과 공백들 6개가 교대로 있는 구조를 갖는다. 끝단 코드 패턴(691)은 상이한 폭들의 조합을 갖는 유사한 구조를 갖는다. 도 7a에 도시한 바와 같이 시작 코드 패턴(601)에 대한 여섯개의 구성 요소들의 폭들은 3:1:1:2:2:2 모듈들이다. 도 7b는 바들과 공백들에 대한 폭이 3:2:2:1:1:2 모듈들인 끝단 코드 패턴(691)을 도시한다. 그러므로, 바-코드의 전체 폭(W)은 시작/끝단 코드 패턴들과 종결 코드 패턴의 모든 폭들의 합이다.
W = 11*N +3 모듈들
여기서, W는 바-코드의 폭이고, N은 바-코드 내의 시작/끝단 코드 패턴들의 수이다.
시작 코드 패턴과 끝단 코드 패턴의 다른 실시예가 도 7c 및 7d에 도시된다. 이들은 다른 폭들의 조합을 갖는 교대로 배치된 8개의 바들과 공백들로 구성된다. 도 7c에 도시된 시작 코드 패턴에 대한 8개의 구성 요소들의 폭은 3:2:1:1:1:2:2 모듈들이다. 도 7d는 끝단 코드 패턴의 폭들이 바들과 공백들에 대해 3:1:2:3:2:2:1:1 모듈들인 예를 도시한다. 본 실시예에서, 바-코드의 총 폭(W)은 다음과 같이 계산된다.
W = 15*N +3 모듈들
여기서, W는 바-코드의 폭이고, N은 바-코드 내의 시작/끝단 코드 패턴들의 수이다.
도 5를 다시 참조하면, 좌측 테두리(530)와 우측 테두리(540) 각각은 폭이 3 모듈이고 길이가 바-코드의 높이를 커버하는 동일한 포지셔닝 블럭을 갖는다. 테두리(530 또는 540)가 세개의 열들로서 관측될 때, 테두리의 두개의 외측 열들은 모두 바들이고, 중간 열은 선정된 패턴에 따라 교대로 배치된 바들과 공백들을 포함한다. 일 실시예에 있어서, 패턴은 하나의 바와 하나의 공백이다. 다른 실시예에 있어서, 패턴은, 다수의 바들이 다수의 공백들과 교대로 배치됨으로써 구성될 수 있다. 본질적으로, 좌우측 테두리들 내의 교번하는 공백들은 좌우측 테두리들 사이의 데이터 엘리먼트들의 위치를 찾도록 제공된다.
바-코드의 디코딩의 신뢰성을 증가시키기 위해, 비트-스트림 데이터 영역(550)은 데이터 세그먼트 분할부(560)에 의해 다수의 동일 사이즈의 데이터 세그먼트들로 분할되는데, 데이터 세그먼트 분할부(560)는 바-코드의 전체 폭에 걸친 바들의 한 행이다. 리드-솔로몬 에러 정정 방법은 바-코드 부호에 대한 물리적인 훼손에 대해 적용된다. 본 발명의 일 실시예에 있어서, 리드-솔로몬 스킴의 몇가지 옵션의 선택 사양들이 데이터 엘리먼트들의 훼손을 방지하기 위해 채택될 수 있다. 도 8은 127 코드워드 데이터에 대한 상이한 레벨들의 리드-솔로몬 스킴의 예시적인 리스트를 도시한다. 에러 정정 레벨이 높을수록, 주어진 바-코드 내에 더 적은 데이터가 저장될 수 있음이 명백하다. 적합한 옵션의 선택은 바-코드가 배치되어 있는 물리적인 환경에 따른다. 에러 정정 코드워드들은 선택된 에러 정정 스킴의 레벨에 기초하여 계산된다.
대부분의 바-코드 훼손은 집중된 영역에서 발생한다. 연속적인 데이터의 파괴의 확률을 감소시키기 위한 한가지 방법은 다음과 같다. 즉, a) 데이터 세그먼트를 다수의 고정 길이 데이터 블럭들의 그룹들 (예를 들어, 127 코드워드)로 분할하고, b) 다수의 그룹들을 인터리브 순서(interleaved order)로 저장하여 연속한 코드워드들이 서로 순차적으로 저장되지 않도록 한다. 127 코드워드 데이터의 세 그룹들을 연속적인 방식으로 저장하기 위한 예시적인 스킴이 도 9a에 도시되어 있다. 그룹들의 개수는 임의의 양수일 수 있다.
도 5의 비트-스트림 데이터 영역(550)에 저장된 모든 코드워드 데이터에 부가하여, 디코딩 신뢰도를 향상시키기 위해, 주요 제어 정보의 세트가 각 데이터 세그먼트에 부가된다. 도 9b는 제어 정보 데이터 구조의 일 실시예를 도시한다. 이 제어 데이터의 중요성 때문에, 코드워드 데이터에 대해 채택된 에러 정정 스킴과는 독립적으로 별도의 높은 레벨의 에러 정정 코드가 사용된다. 도 9b에 있어서, 비 트들 e0 내지 e9는 에러 정정 코드를 나타내고, 비트들 a0, a1, a2, a3, 및 a4는 바-코드 부호 내의 데이터 세그먼트들의 총 수를 나타내고, 비트들 b0, b1은 선택된 에러 정정 레벨을 나타내고, 비트 b2는 인터리프 토글(interleaf toggle: 삽입 토글)을 나타내고, 비트들 b3, b4는 마스크 타입을 나타내고, 비트들 c0 내지 c4는 현재 데이터 세그먼트의 데이터 세그먼트 넘버를 나타낸다. 도 9c는 제어 정보 데이터 구조의 다른 실시예를 도시한다. 비트들 A3, A2, A1, A0 및 B3은 현재 데이터 세그먼트의 데이터 세그먼트 넘버를 나타내고, 비트들 B2, B1, B0, C3 및 C2는 바-코드 부호 내의 데이터 세그먼트들의 총수를 나타내고, C1, C0 및 C3은 선택된 에러 정정 레벨을 나타내고, 비트들 D2와 D1은 마스크 타입을 나타내고, D0는 삽입 토글을 나타낸다. 본 실시예에서, 제어 정보 데이터는 먼저 일곱개의 3행 3열 코드워드로 배열된 다음, 3개의 남은 공간이 0으로 채워진다. 제어 정보는, 바-코드가 물리적으로 함부로 다루어지더라도, 정보의 이용가능성을 보장하기 위해, 중복적으로 각 데이터 세그먼트 내에 반복된다.
엄청난 개수의 바들이 단지 매우 적은 개수의 공백들(밝은 색)과 2D 바-코드 부호의 특정한 부분에 집중할 때, 스캐닝 장치가 공백을 놓치게 유발할 수 있어서, 결국 부정확한 정보를 초래한다. 이와 같은 (모두 바들이거나 모두 공백들인) 한가지 색의 집중을 최소화하기 위해, 본 발명의 일 실시예에서는, 비트-스트림 코드워드 데이터에 선정된 마스크로 마스킹이나 XOR 비트 연산을 적용함으로써 바들을 마스킹하기 위한 스킴이 제공된다. 도 10a 내지 10d는 본 발명의 실시예들에 사용된 예시적인 마스크들을 나타낸다.
도 11에 도시된, 본 발명의 일 실시예에 따른 2D 바-코드를 인코딩하기 위한 플로우 챠트(1100)를 참조한다. 먼저, 이진 데이터 파일은 단계 1110에서 이진 비트-스트림 코드워드로 변환된다. 그런 다음, 단계 1120에서, 유저가 선택한 에러 정정 레벨에 기초하여, 에러 정정 코드워드들이 계산되고, 코드워드 데이터의 비트-스트림(예를 들어 127 코드워드) 각각에 부가된다. 이 비트-스트림 코드워드 데이터의 그룹은 단계 1130에서 인터리브 순서로 저장될 수 있다. 그런 다음, 단계 1140에서, 바-코드에 소지된 정보의 양에 기초하여 코드워드 데이터의 전체 비트-스트림이 다수의 데이터 세그먼트들로 분할된다. 단계 1150에서는, 모든 데이터 세그먼트들이 동일한 크기를 갖도록 보장하기 위해, 필요하면, 필러 코드워드들이 마지막 데이터 세그먼트에 첨부된다. 그런 다음, 단계 1160에서, 데이터의 새로운 비트-스트림 코드워드를 생성하기 위해 미리 선택된 마스크로 비트-스트림 코드워드 데이터에 대해 마스킹 혹은 XOR 비트 연산이 적용된다. 그런 다음, 단계 1170에서, 제어 정보 코드워드들이 데이터 세그먼트들 각각에 부가된다. 단계 1180에서는, 상측 테두리, 하측 테두리, 좌측 테두리, 및 우측 테두리가 부가된다. 최종적으로, 단계 1190에서 2D 바-코드 부호가 프린트된다.
도 12a는 2D 바-코드 부호를 전체적으로 디코딩하기 위한 플로우 챠트 혹은 프로세스(1200)를 도시한다. 단계 1205에서, 전체 2D 바-코드 부호가 스캔되어 이미지로서 저장된 다음, 광학적으로 증대된다. 단계 1210에서, 상하 테두리들이 검출되고 그들의 대응 좌표가 저장된다. 단계 1215에서, 스캔 라인과 바-코드의 수평 축 사이의 각도가 측정된다. 시작 및 끝단 코드 패턴들에 기초하여, 저장된 바-코드 이미지의 배향 (예를 들어, 위 아래가 거꾸로 바뀌었다거나. 안팎으로 뒤집힘)이 판정되고, 저장된 이미지의 프린트 해상도가 판정된다. 단계 1220에서는, 저장된 이미지 내의 제1 데이터 세그먼트 분할부가 찾아진다. 단계 1225에서는, 제1 데이터 세그먼트 분할부와 좌우 테두리들 상의 포지셔닝 홀들의 세트를 이용하여, 비트-스트림 데이터 영역 내의 모든 데이터 엘리먼트들의 좌표들이 계산된다. 단계 1230에서는, 제어 정보에 대한 에러 정정 프로세스가 수행되어, 에러 정정 레벨, 마스크 타입, 삽입 토글, 데이터 세그먼트들의 총수, 및 현재 데이터 세그먼트 넘버와 같은, 주요 제어 정보를 추출한다. 그런 다음, 단계 1235에서, 비트-스트림 데이터 영역 내의 데이터 엘리먼트들의 비트값(바/공백)이 단계 1225에서 계산된 그들의 좌표들에 따라 판독되어, 코드워드 데이터의 비트-스트림으로 복원된다. 단계 1240에서, 인터리브 순서로부터 재-순차화, 마스킹 또는 XOR 비트 연산, 및 에러 정정 동작들을 단계 1235에서 생성된 비트-스트림에 적용함으로써, 원래의 코드워드 데이터의 비트-스트림이 재확립된다. 최종적으로, 코드워드 데이터의 비트-스트림이 원래의 이진 데이터로 변환된다.
도 12b 및 12c는 본 발명의 다른 실시예에 따른, 2D 바-코드 부호를 복호화하기 위한 플로우 챠트 혹은 프로세스(1250)를 집합적으로 나타낸다. 이 프로세스의 특유한 특징 중의 하나는, 바-코드가 스캔되면서 디코드된다는 것이다. 단계 1252에서, 스캐닝 장치는 2D 바-코드의 새로운 라인을 스캔하여 스캔된 이미지를 임시 저장 장치에 저장한다. 단계 1254에서는, 스캔된 이미지가 하측 테두리 패턴과 비교된다. 정합이 발생한다면, 스캔되는 2D 바-코드 이미지가 위 아래 뒤집힌 다. 디코딩은 도 12a에 설명된 바와 같이 2D 바-코드 이미지 전체에 대해서만 수행된다. 그렇지 않고 정합이 발견되지 않으면, 단계 1256에서, 이 스캔된 이미지는 상측 테두리 패턴과 비교된다. 이들이 정합하지 않는다면, 프로세스는 다른 스캔된 이미지를 얻기 위해 단계 1252로 되돌아간다. 상측 테두리가 발견되면, 다음 단계 1258에서 2D 바-코드가 미러 이미지인지의 여부가 판정된다. 미러 이미지라면, 디코딩은 도 12a의 방법으로만 수행될 수 있다. 그 다음, 단계 1260에서는, 2D 바-코드 부호의 프린트 해상도가 판정된다. 단계 1262에서는, 스캐닝 장치가 프린트된 해상도에 기초하여 다른 라인의 스캔된 이미지를 구하기 위해 이동한다.
단계 1264에서, 스캔된 이미지가, 2D 바-코드 부호의 폭을 가로지르는 솔리드 바인, 데이터 세그먼트 분할부인지의 여부를 판정하기 위해 검사된다. 데이터 세그먼트가 아니라면, 프로세스는 새로운 라인의 스캔된 이미지를 구하기 위해 단계 1262로 되돌아간다. 그렇지 않고, 데이터 세그먼트 분할부라고 판정되면, 프로세스는 2D 바-코드 부호에 소지된 코드워드 데이터의 비트-스트림을 디코드하기 시작한다. 단계 1266에서, 좌우 테두리들의 대응하는 포지셔닝 홀들이 검출된다. 그런 다음, 단계 1268에서, 포지셔닝 홀들과 데이터 세그먼트 분할부를 가이드로 사용하여, 제어 정보의 세트가 판독된다. 코드워드 데이터의 비트-스트림의 제어 정보 부분에 대해 에러 정정 프로세스가 수행된 후, 데이터 세그먼트들의 총수, 에러 정정 레벨, 삽입 토글, 마스크 타입, 및 현재 데이터 세그먼트 넘버와 같은, 제어 정보가 추출된다.
단계 1270에서, 정확한 데이터 세그먼트가 스캐닝되면서 디코드되고 있는지 를 확인하는 검사가 수행된다. 그렇지 않다면, 프로세스는 2D 바-코드 부호를 전체적으로 디코딩하기 위해 프로세스(1200)로 분기한다. 단계 1272에서, 인터리브 데이터 저장 순서가 체크된다. 다시, 데이터의 비트-스트림 코드워드가 인터리브 순서로 저장되어 있다면, 2D 바-코드 전체를 디코딩하기 위한 방법에 따라 디코딩이 수행되어야 한다. 두개의 검사를 모두 통과한 후, 단계 1274에서, 한 행의 데이터 엘리먼트들이 판독되어진다. 프로세스는 단계 1276에서, 스캔된 이미지의 다음 라인이 데이터 세그먼트 분할부인지의 여부를 검사함으로써 계속된다. 데이터 세그먼트 분할부가 아니라면, 프로세스는 단계 1274로 돌아간다. 그렇지 않다면, 단계 1278에서 선택된 에러 정정을 수행한 후, 현재 데이터 세그먼트에 대한 데이터의 원래의 비트-스트림 코드워드가 최종적으로 복원된다. 단계 1280에서, 최종 검사가 수행된다. 스캔된 이미지의 다음 라인에서 하측 테두리가 검출되지 않으면, 단계들 1266 내지 1280을 반복하여 새로운 데이터 세그먼트가 디코드된다. 그렇지 않고, 하측 테두리가 검출된다면, 디코딩이 수행된다.
도 13을 참조하면, 저장된 2D 바-코드 이미지의 좌우측 테두리들 내의 대응하는 포지셔닝 홀들의 쌍을 이용하여 2D 바-코드의 데이터 엘리먼트들의 좌표들을 판정하기 위한 프로시져를 나타내기 위한 상세한 기하가 예시되어 있다. 데이터 세그먼트 분할부(1310)는 스캔된 이미지의 수직 방향으로 등간격으로 이격되어 있는 네개의 수직 트레이스들 V1, V2, V3, 및 V4를 사용하여 검출된다. 좌측 테두리(1320)는 스캔된 이미지의 수평 방향으로 등간격으로 이격되어 있는 네개의 수평 트레이스들 H1, H2, H3, 및 H4를 사용하여 검출된다. 유사하게, 우측 테두리(1330)는 등간격으로 이격되어 있는 다른 세트의 네개의 수평 트레이스들 H5, H6, H7, 및 H8을 사용하여 검출된다. 이 직선들의 좌표들을 이용하여, 좌측과 상측 테두리들의 교차부(1340)와 우측과 상측 테두리들의 교차부(1350)가 판정된다. 직사각형 바-코드 엘리먼트들의 프린트 해상도(ppi)와 이 두개의 교차부들의 좌표들에 기초하여, 포지셔닝 홀들의 제1 쌍의 근사적인 위치가 평가된다. 그런 다음 평가된 영역 내의 모든 밝은 색 픽셀들을 단순히 평균함으로써, 제1 쌍의 포지셔닝 홀들의 좌표들(Xp, Yp)이 다음과 같이 계산된다.
Xp = (1/N) * Sum(Xi)
Yp = (1/N) * Sum(Yi)
여기서, N은 포지셔닝 홀의 평가된 영역 내의 백색 픽셀들의 총 수이고, xi, yi는 포지셔닝 홀의 평가된 영역 내의 백색 픽셀들의 좌표들이다.
알려진 포지셔닝 홀들의 쌍의 좌표를 이용하여, 2D 바-코드 데이터 엘리먼트들의 모든 좌표들이 계산된다. 그러면 저장된 이미지에 대한 데이터가 매우 효율적으로 판독될 수 있다. 데이터 엘리먼트들의 제1 행의 좌표들의 계산을 완료한 후, 나머지 행들이 연역적으로 추론된다.
도 14a는 포지셔닝 티쓰(1402)의 쌍 사이에 샌드위치된 2D 바-코드(1404)를 나타낸다. 이 포지셔닝 티쓰(1402)는 스캐닝 장치가 이미지 스트레칭과 압축을 정정하는 것을 가이드하기 위해 사용된다. 정상적인 상황에서, 스캔된 이미지의 행들의 수는 포지셔닝 티쓰 사이에 고르게 분포된다. 그러나, 특별한 상황에서, 스캔된 이미지는, 스캐닝 장치와 2D 바-코드 부호 사이의 거리와 각도 때문에, 틀어 질 수 있다. 한편, 스캔된 이미지가 스트레치될 수 있다. 즉, 특정 포지셔닝 티쓰 사이에는 다른 것들에서보다 스캔된 행들이 더 많이 있다. 반면에, 이미지는 압축될 수 있다. 즉, 특정 포지셔닝 티쓰 사이에는 스캔된 행들이 상실될 수 있다. 모든 포지셔닝 티쓰에 대해 균일한 분포로 한다는 사실에 기초하여, 스트레치된 영역에서는 일부 행들이 삭제되고, 압축된(압착된) 영역에서는 인접한 스캔된 행들을 외삽함으로써 추가의 행들이 부가될 수 있다.
도 14b를 참조하면, 포지셔닝 라인들(1410)의 세트가 2D 바-코드(1420)의 좌측에 부착된다. 이 포지셔닝 라인들은 2D 바-코드 부호(1420)의 수평축과 다른 기울기를 갖는 복수의 등간격으로 이격된 평행선들을 포함한다. 포지셔닝 라인들은 2D 바-코드 부호(1420)의 한쪽 측면 혹은 양쪽 측면에 위치될 수 있다. 다른 실시예에 따른 도 14c는 2D 바-코드 부호(1440)의 상에, 2D 바-코드 내의 어두운 색의 바들에 사용된 것과 다른 색을 갖는 포지셔닝 라인들(1430)이 그려진 것을 나타낸다. 포지셔닝 라인들 및 2D 바-코드 데이터 엘리먼트들의 디코딩은 상이한 색깔의 스캐닝 광의 반사에 기초한다. 예를 들어, 2D 바-코드는 청색의 바들과 백색의 공백들을 사용한다. 중첩하는 포지셔닝 라인들이 특별한 흑색 잉크로 프린트될 수 있다. 스캐닝 장치가 청색 광원을 사용하여 2D 바-코드 부호를 스캔할 때, 흑색 포지셔닝 라인들이 청색광을 흡수하는 반면에 바들과 공백들 모두는 청색광을 반사할 것이다. 그러므로, 포지셔닝 라인들은, 적외선 광원으로 바-코드 데이터를 판독하는 것을 시도하기 전에 먼저 스캐닝 장치에 청색 광원을 사용하여 판독된다. 이것은 왜냐하면, 적외선 광은 특별한 흑색 잉크를 통과하나, 청색 및 백색에서는 다르게 반사되기 때문이다. 두개의 다른 광원을 사용하여, 스캐닝 장치는 바-코드 데이터 엘리먼트들과 포지셔닝 라인들을 두개의 다른 경로로 판독할 수 있다.
도 15를 참조하면, 2D 바-코드(1510)에 저장된 정보를 분리하기 위한 복수의 가시적인 물리적 분할 마크들(1520)을 갖는 2D 바-코드 부호(1510)가 도시된다. 일 실시예에 따르면, 분리된 바-코드의 각 부분은 아티클의 상이한 패러그래프에 대응한다.
도 14b와 14c의 포지셔닝 라인들의 예시적인 사용이 도 16에 도시되는데, 도 16은 2D 바-코드의 포지셔닝 라인들(1600), 스캔 라인(1620) 및 수평 축(1610)의 기하를 묘사한다. 평행한 포지셔닝 라인들(1600)의 세트는 수평축(1610)과 스캔 라인(1620)에 의해 교차된다. 포지셔닝 라인들(1600) 사이의 수직 거리(1640)는 D로서 표시된다. 수평 축(1610)과 포지셔닝 라인들(1600)과의 두개의 교차점들 사이의 수평축 상의 거리(1630)는 L이다. 스캔 라인(1620)과 포지셔닝 라인들(1600)과의 두개의 교차점들 사이의 스캔 라인 상의 거리(1650)는 n이다. 스캔 라인(1620)과 바-코드 수평 라인(1610) 사이의 각도는 F 이다. 수평 축(1610)과 포지셔닝 라인들(1600) 사이의 각도는 E이다. 포지셔닝 라인들(1600)과 스캔 라인(1620) 사이의 각도는 G인데, 이것은 각도 E와 F의 합이다. 다음과 같은 방정식들이 각도 F와 G를 계산하기 위해 사용된다.
F = 90 - E - arcos(D/n)
G = arsin(D/n)
도 17a 및 17b는 어떻게 스캐닝 라인들이 스캐닝 장치들을 가이드하는지를 나타낸다. 일반적으로, 2D 바-코드의 수평축 방향 혹은 x 방향의 해상도는 스캐닝 장치의 해상도 xDPI에 의해 결정된다. 2D 바-코드의 수평축 방향 혹은 y 방향에서, 해상도는 y 해상도로서 일컬어지며, 이것은 스캐닝 장치의 샘플링 레이트인 yDPI에 의해 결정된다. 2D 바-코드를 적당하게 디코드하기 위해, 두개의 스캐닝 라인들 사이의 거리 H는, H=1/y이어야 한다. 예를 들어, 300dpi를 달성하기 위해, 스캐닝 장치는 y 방향으로 1/300 인치마다 한번씩 2D 바-코드를 스캔할 필요가 있다. 제1 스캔 라인이 두개의 인접한 포지셔닝 라인들에 의해 교차될 때, 이 두개의 교차점들 사이의 거리 n은 기록되어, 상술한 공식으로 각도 G를 계산하기 위해 사용된다. 그런 다음, 스캐너는 도 17a 및 17b에 도시된 두개의 연속적인 스캔 라인 이미지들을 비교한다. 두개의 연속적인 스캔 라인들, 라인(A)와 라인(A+n)이 도 17b에 도시된다. 대응하는 이미지들은 도 17a에 서로 중첩되어 플롯팅되어 있다. 두개의 정점들 픽셀(B)와 픽셀(B+m)은 하나의 포지셔닝 라인과 두개의 연속적인 스캔 라인들의 교차점들을 나타낸다. 그러므로, 정점들 사이의 거리는 두개의 스캔 라인들 사이의 거리 m 픽셀인데, 이것은 m*x이며, 여기서 x는 두개의 연속적인 픽셀들 사이의 거리이다. 그런 다음, 도 16에 도시된 기하에 기초하여, 두개의 스캔 라인들 사이의 y 방향 거리 V가 다음과 같이 계산된다.
V = (m*x)*tan(G)
y 방향 거리 V가 샘플링 거리 H와 같을 때, 스캔된 이미지의 새로운 행이 기록된다. 이 프로세스는 전체 이미지가 스캔될 때까지 계속된다.
도 4 및 5와 관련하여 도 18을 참조하면, 예시적인 CIS 베이스드 스캐너는 448 픽셀 폭의 스캐닝 헤드를 갖는다. 모듈 폭이 4 픽셀인 바-코드 엘리먼트인 경우, 센서의 2D 바-코드로의 맵핑은 다음과 같다. 즉, 바-코드의 양측면 상에 공백을 커버하기 위해 8 픽셀, 좌측 테두리(530)와 우측 테두리(540)를 커버하기 위해 12 픽셀, 그리고 비트-스트림 데이터 영역(550)을 위해 408 픽셀이 각각 맵핑된다. 408 픽셀은 102 데이터 엘리먼트들을 나타내는데, 이것은 각 엘리먼트가 4 픽셀이기 때문이다. 이것은, 102 비트의 정보가 바-코드(400)의 하나의 행 내에 저장될 수 있음을 의미한다. 일 실시예에 있어서, 127 코드워드를 저장하기 위해, 36 행의 데이터 엘리먼트들이 요구된다. 데이터 엘리먼트의 폭으로서 하나의 모듈을 나타내기 위해 4 픽셀을 이용하는 것은 2D 바-코드의 디코딩의 신뢰도에 대한 경험칙에 기초한 것이다. 일반적으로, 최소 2D 바-코드 데이터 엘리먼트의 길이/폭은 다음과 같은 공식에 의해 결정될 수 있다.
BL >= 4* (Rp/Rs) 픽셀들
여기서, BL은 2D 바-코드 데이터 엘리먼트의 최소 디멘젼이고, Rp는 프린터 해상도이고, Rs는 스캐너 해상도이다.
도 19를 참조하면, 전형적인 스캐닝 장치(1900)는 신호 처리 칩(1910), 이미지 센서(1920), 문서 검출 모듈(1930), 플래시 메모리(1940), ADC 모듈(1950), RAM(1960), 테스트 포트(1970), 및 데이터 포트(1980)를 포함한다. 스캐닝 장치의 핵심은 신호 처리 칩(1910)인데, 그의 주요 기능은 모든 부착 모듈들을 제어하고, 이진 바-코드 데이터를 디코딩하고, 디코드된 정보를 RAM(1960)에 저장하고, 요구된 데이터를 데이터 포트(1980)에 출력하는 것이다. 신호 처리 칩(1910)으로부터 보내지는 클럭 및 SP 신호에 기초하여, 이미지 센서(1920)는 스캔된 이미지에 의해 반사된 광으로부터 생성된 전압(Vout)을 캐치한다. 그런 다음, 결과적인 디지털 데이터(Vin)가 신호 처리 칩(1910)으로 보내진다. 문서 검출 모듈(1930)은, 문서가 삽입된 것을 검출할 때, "페이퍼 검출" 신호를 발생시킨다. 신호 처리 칩(1910)은 이 "페이퍼 검출" 신호에 기초하여 스캐닝의 시작 및 종료 프로시져를 제어한다. 신호 처리 칩(1910)에 의해 사용된 소프트웨어는 플래시 메모리(1940) 내로 로드된다. ADC 모듈(1950)은 아날로그 데이터를 디지털 데이터로 변환한다. 테스트 포트(1970)는 소프트웨어를 업 로딩하기 위해 사용된다. 데이터 포트(1980)는 RAM(1960)으로부터 데이터를 다른 컴퓨터에 출력하기 위해 사용된다.
본 발명에 따르면, 2D 바-코드를 인코딩하고 디코딩하기 위한 프로세스, 방법, 시스템, 및 소프트웨어 제품이 제공된다. 본 발명에 따르면, 적어도 1) 가변 폭 및 높이의 부호, 2) 가변 프린트 해상도, 3) 다수의 훼손 방지 레벨, 4) 큰 정보 저장성, 5) 높은 리던던시, 6) 라인 베이스드 스캐닝 장치에 의해 판독 가능성, 7) 콘택트 스캐닝 또는 논-콘택트 스캐닝 장치에 의해 인식 가능성을 갖는 것을 특징으로 하는 신규한 2D 바-코드 부호가 제공된다.
또한, 포지셔닝 라인들의 세트가 2D 부호에 부착되어 스캐닝 장치가 2D 부호를 적당한 해상도로 디코드하는 것을 가이드한다.
본 발명의 예시적인 실시예가 개시되었으나, 당업자들은 본 발명의 효과를 달성하기 위해 여러가지 변형들과 변경들이 이루어질 수 있음을 명백히 알 것이다. 당업자들은 일부 구성 요소들이 동일한 기능을 제공하는 다른 소자들로 대체될 수 있음을 잘 알 수 있을 것이다. 하기의 청구 범위는 본 발명의 범위를 정의한다.

Claims (29)

  1. 2D 부호를 인코딩하기 위한 방법에 있어서,
    이진 데이터를 코드워드 데이터의 제1 비트-스트림으로 변환하는 단계;
    소정의 에러 정정 레벨에 기초하여 상기 제1 비트-스트림으로부터 일련의 에러 정정 코드워드들을 계산하는 단계;
    상기 제1 비트-스트림과 상기 일련의 에러 정정 코드워드들을 결합하여 코드워드 데이터의 제2 비트-스트림을 생성하는 단계;
    상기 제2 비트-스트림을 일련의 동일한 크기의 데이터 세그먼트들로 분할하는 단계;
    일련의 제어 정보 코드워드들을 상기 데이터 세그먼트 각각에 부가하는 단계;
    상기 데이터 세그먼트들 사이에 데이터 세그먼트 구획(divider)을 부가하는 단계; 및
    상기 데이터 세그먼트들을 둘러싸는 상측 테두리, 하측 테두리, 좌측 테두리 및 우측 테두리를 제공하여, 2D 부호가 생성되도록 하는 단계
    를 포함하는 2D 부호 인코딩 방법.
  2. 제1항에 있어서,
    적어도 두개의 상기 제2 비트-스트림을 인터리브 순서(interleaved order)로 재배열하는 단계를 더 포함하는 2D 부호 인코딩 방법.
  3. 제1항에 있어서,
    상기 제2 비트-스트림은 바(bar)들 및 공백(space)들로 표현되고, 상기 방법은,
    상기 바들이 특정 영역에 집중되는 것을 방지하기 위해 소정의 마스크로 상기 제2 비트-스트림에 대해 마스킹 조작 또는 비트의 XOR 조작을 수행하는 단계를 더 포함하는 2D 부호 인코딩 방법.
  4. 제1항에 있어서,
    상기 상측 테두리는 적어도 하나의 시작 코드 패턴과 하나의 종결 코드 패턴을 포함하고, 상기 하측 테두리는 적어도 하나의 끝단(end) 코드 패턴과 하나의 종결 코드 패턴을 포함하여, 상기 2D 부호의 배향의 검출을 용이하게 하는 2D 부호 인코딩 방법.
  5. 제4항에 있어서,
    상기 상측 테두리의 상기 시작 코드 패턴과 상기 하측 테두리의 상기 끝단 코드 패턴은 6개의 교대로 배치된 바들 및 공백들을 포함하고, 상기 시작 코드 패턴은 3:1:1:2:2:2 모듈들의 폭 비율을 갖고, 상기 끝단 코드 패턴은 3:2:2:1:1:2 모듈들의 폭 비율을 갖는 2D 부호 인코딩 방법.
  6. 제1항에 있어서,
    상기 좌측 테두리와 상기 우측 테두리는, 선정된 패턴에 따라 교대로 배치된 바들 및 공백들을 포함하는 한 쌍의 동일 포지셔닝 블럭들인 2D 부호 인코딩 방법.
  7. 제6항에 있어서,
    상기 제2 비트-스트림은 데이터 엘리먼트 영역에서 바들 및 공백들로 표현되고, 상기 좌측 또는 우측 테두리 내의 바들 및 공백들 각각은 상기 데이터 엘리먼트 영역 내의 하나 이상의 바들 및 공백들에 대응하는 2D 부호 인코딩 방법.
  8. 제6항에 있어서,
    상기 좌측 또는 우측 테두리 내의 바들 또는 공백들 각각은 상기 2D 부호를 스캔하는데 사용되는 스캐너의 수직 해상도의 판정을 용이하게 하는 2D 부호 인코딩 방법.
  9. 제6항에 있어서,
    상기 좌측 또는 우측 테두리 내의 바들 또는 공백들 각각은 수직 프린트 해상도를 스캐너에 나타내고, 상기 상측 또는 하측 테두리 내의 바들 또는 공백들은 2D 부호의 수평 프린트 해상도를 스캐너에 나타내어, 상기 스캐너가 2D 부호를 더 효율적으로 스캔할 수 있도록 하는 2D 부호 인코딩 방법.
  10. 제6항에 있어서,
    상기 좌측 또는 우측 테두리 내의 바들 또는 공백들 각각은 2D 부호의 스캔된 이미지가 왜곡되어 있는지의 여부를 나타내고, 상기 스캔된 이미지가 왜곡되어 있다면 상기 스캔된 이미지의 보정을 용이하게 하는 2D 부호 인코딩 방법.
  11. 제1항에 있어서,
    상기 제2 비트-스트림은 데이터 엘리먼트 영역 내에서 바들 및 공백들로 표현되고, 상기 방법은,
    일련의 등간격으로 이격된 평행한 포지셔닝 라인들을 상기 2D 부호의 일측면 또는 양측면에 부가하는 단계를 더 포함하고, 상기 포지셔닝 라인들은, 상기 데이터 엘리먼트 영역 내의 바들 및 공백들 뿐만 아니라 상기 2D 부호의 배향의 판정을 용이하게 하기 위해, 상기 2D 부호의 수평축과 다른 경사를 갖는 2D 부호 인코딩 방법.
  12. 제1항에 있어서,
    일련의 등간격으로 이격된 평행한 포지셔닝 라인들을 상기 2D 부호 상에 중첩하는 단계를 더 포함하고, 상기 포지셔닝 라인들은 상기 2D 부호의 수평축과는 다른 경사를 갖는 2D 부호 인코딩 방법.
  13. 제12항에 있어서,
    상기 포지셔닝 라인들은, 상기 2D 부호의 색과는 다른 색이어서, 스캐너에 의해 상기 2D 부호의 스캐너 이미지로부터 용이하게 판정될 수 있는 2D 부호 인코딩 방법.
  14. 제1항에 있어서,
    상기 일련의 제어 정보는,
    데이터 세그먼트들의 총수,
    삽입 토글,
    미리 선택된 에러 정정 레벨,
    소정의 마스크 타입, 및
    데이터 세그먼트 번호를 포함하는 2D 부호 인코딩 방법.
  15. 제1항에 있어서,
    상기 데이터 세그먼트들 각각은 바들, 공백들, 또는 바들 및 공백들의 3행×3열의 매트릭스인 코드워드들을 포함하는 2D 부호 인코딩 방법.
  16. 이진 데이터 파일로부터의 코드워드 데이터의 비트-스트림을 나타내는 데이터 영역 내의 복수의 바들 및 공백들을 포함하는 2D 부호를 디코딩하는 방법으로서,
    상기 데이터 영역은 상측 테두리, 하측 테두리, 좌측 테두리 및 우측 테두리에 의해 둘러싸이고, 복수의 데이터 세그먼트 구획들이 상기 비트-스트림 데이터 영역을 복수의 데이터 세그먼트들로 분할하고,
    상기 방법은,
    2D 부호를 전체적으로 스캔하여 저장된 이미지를 생성하는 단계;
    상기 저장된 이미지 내에서, 시작 코드 패턴을 갖는 상기 상측 테두리 및 끝단 코드 패턴을 갖는 상기 하측 테두리를 검색하는 단계;
    상기 시작 코드 패턴과 상기 끝단 코드 패턴에 기초하여, 상기 부호의 이미지의 수평축 및 수직축을 결정하는 단계;
    상기 저장된 이미지의 스캔 라인과 상기 수평축 사이의 스캔 라인 각도를 계산하는 단계;
    상기 저장된 이미지로부터 프린트 해상도를 결정하는 단계;
    상기 저장된 이미지에 상기 복수의 데이터 세그먼트 구획들을 배치하는 단계;
    상기 데이터 세그먼트들로부터 일련의 제어 정보를 검색하는 단계;
    상기 데이터 세그먼트들로부터 상기 코드워드 데이터의 비트-스트림을 복원하는 단계; 및
    상기 코드워드 데이터의 비트-스트림을 원래의 이진 데이터 파일로 변환하는 단계
    를 포함하는 2D 부호 디코딩 방법.
  17. 제16항에 있어서,
    상기 코드워드 데이터의 비트-스트림을 복원하는 단계는, 상기 코드워드 데이터의 비트-스트림에 에러 정정 조작을 적용하는 단계를 포함하는 2D 부호 디코딩 방법.
  18. 제17항에 있어서,
    상기 코드워드 데이터의 비트-스트림을 복원하는 단계는, 필요하면, 상기 제어 정보에 기초한 소정의 마스크를 사용하여 마스킹 조작을 상기 코드워드 데이터의 비트-스트림에 수행하는 단계를 더 포함하는 2D 부호 디코딩 방법.
  19. 제18항에 있어서,
    제1 세그먼트 분할부로부터 시작하여 상기 좌측 테두리와 상기 우측 테두리 사이의 복수의 데이터 엘리먼트들에 대한 모든 좌표들을 계산하는 단계; 및
    상기 데이터 엘리먼트들의 상기 좌표들을 이용하여 복수의 상기 코드워드 정보를 판정하는 단계
    를 더 포함하는 2D 부호 디코딩 방법.
  20. 제18항에 있어서,
    상기 2D 부호의 스캐닝은, 상기 2D 부호의 배향을 판정하도록 구성된 소프트웨어 모듈 및 상기 저장된 이미지를 위한 메모리 공간을 포함하는 스캐너에 의해 수행되는 2D 부호 디코딩 방법.
  21. 제20항에 있어서,
    상기 저장된 이미지는 먼저 상기 좌측 테두리와 상기 우측 테두리에 따라 상기 소프트웨어 모듈에 의해 처리되어 상기 코드워드 데이터의 비트-스트림이 판정될 수 있는 2D 부호 디코딩 방법.
  22. 이진 데이터 파일로부터의 코드워드 데이터의 비트-스트림을 나타내는 데이터 영역 내의 복수의 바들 및 공백들을 포함하는 2D 부호를 디코딩하는 방법으로서,
    상기 데이터 영역은 상측 테두리, 하측 테두리, 좌측 테두리 및 우측 테두리에 의해 둘러싸이고, 복수의 데이터 세그먼트 구획들이 상기 비트-스트림 데이터 영역을 복수의 데이터 세그먼트로 분할하고,
    상기 방법은,
    상기 2D 부호를 스캔하여 스캔된 이미지 내에 제1 스캔 라인을 생성하는 단계;
    상기 스캔된 이미지에서, 시작 코드 패턴을 갖는 상기 상측 테두리와, 끝단 코드 패턴을 갖는 상기 하측 테두리를 검색하는 단계;
    상기 스캔된 이미지가 거꾸로 뒤집혔다고 판단되거나 미러 이미지인 경우, 디코딩 전에 상기 2D 부호를 전체적으로 스캔하는 디코딩 방법으로 스위칭하는 단계;
    (a) 제1 데이터 세그먼트가 검출될 때까지 상기 2D 부호를 스캔된 이미지에 스캔하는 단계와,
    (b) 에러 정정 후 상기 제1 데이터 세그먼트를 위해 일련의 제어 정보 코드워드들을 검색하는 단계와,
    (c) 상기 제1 데이터 세그먼트가 순차적이지 않거나, 또는 상기 제1 데이터 세그먼트 내의 비트-스트림 데이터 영역이 인터리브 순서로 저장되어 있다면, 그래픽 부호 이미지 전체를 위한 디코딩 방법으로 스위칭하는 단계와,
    (d) 현재의 데이터 세그먼트 내의 상기 데이터 엘리먼트들의 좌표들을 이용하여 상기 비트-스트림 데이터 영역 내의 복수의 코드워드 정보를 검색하는 단계와,
    (e) 상기 현재의 데이터 세그먼트에 대한 상기 코드워드 데이터의 제1 비트-스트림의 제1 부분을 복원하는 단계; 및
    상기 하측 테두리가 검출될 때까지 매 데이터 세그먼트 구획이 검출될 때마다 단계 (a) 내지 (e)를 반복하는 단계
    를 포함하는 2D 부호 디코딩 방법.
  23. 제22항에 있어서,
    상기 코드워드 데이터의 엘리먼트는 공백들 또는 바들의 3행×3열의 매트릭스를 포함하는 2D 부호 디코딩 방법.
  24. 제23항에 있어서,
    상기 2D 부호는 상기 이진 데이터 파일에 따라 확장 가능한 2D 부호 디코딩 방법.
  25. 제22항에 있어서,
    상기 제어 정보는,
    데이터 세그먼트의 총수,
    삽입 토글,
    미리 선택된 에러 정정 레벨,
    소정의 마스크 타입, 및
    데이터 세그먼트 번호를 포함하는 2D 부호 디코딩 방법.
  26. 스캐닝 장치가 2D 부호를 디코딩하도록 가이드하는 방법으로서,
    2D 바코드의 수평축과 다른 경사를 갖는, 일련의 등간격으로 이격된 평행한 포지셔닝 라인들을 상기 2D 부호에 제공하는 단계; 및
    상기 2D 부호를 상기 포지셔닝 라인들과 함께 스캐닝하여 스캐닝된 이미지를 생성하는 단계
    를 포함하는 2D 부호 디코딩의 가이드 방법.
  27. 제26항에 있어서,
    상기 포지셔닝 라인들은 상기 2D 부호의 적어도 한 측면에 제공되는 2D 부호 디코딩의 가이드 방법.
  28. 제26항에 있어서,
    상기 포지셔닝 라인들은 상기 2D 부호 상에 중첩되고, 상기 2D 부호 내의 바들의 색과는 다른 색인 2D 부호 디코딩의 가이드 방법.
  29. 일련의 등간격으로 이격된 포지셔닝 라인들을 갖는 2D 바코드를 디코딩하는 스캐닝 장치로서,
    신호 처리 칩;
    상기 처리 칩에 접속되고 상기 2D 부호가 제시되어 존재하는 경우, 페이퍼 신호를 전송하기 위한 문서 검출 모듈;
    상기 2D 부호를 감지하여 아날로그 신호를 생성하기 위한 이미지 센서;
    상기 이미지 센서로부터의 상기 아날로그 신호를 수신하고 디지털화하여 메모리 공간 내에 그 디지털 이미지를 생성하기 위한 아날로그-디지털 변환(ADC) 모듈; 및
    디코딩 소프트웨어를 저장하기 위한 플래시 메모리
    를 포함하고,
    상기 디코딩 소프트웨어는,
    상기 디지털 이미지에서 상기 포지셔닝 라인들을 검출하는 동작과,
    상기 2D 부호의 경사에 대한 상기 포지셔닝 라인들의 경사를 결정하는 동작과,
    상기 2D 부호의 배향을 결정하는 동작을 수행하도록 구성된 스캐닝 장치.
KR1020030054803A 2002-08-07 2003-08-07 2d 부호의 인코딩 디코딩 방법 및 시스템 KR100960786B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN02134545A CN1396538A (zh) 2002-08-07 2002-08-07 文字图表等一般载体上的信息电子化的方法及其系统
CN02134545.7 2002-08-07

Publications (2)

Publication Number Publication Date
KR20040014336A KR20040014336A (ko) 2004-02-14
KR100960786B1 true KR100960786B1 (ko) 2010-06-01

Family

ID=4747786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030054803A KR100960786B1 (ko) 2002-08-07 2003-08-07 2d 부호의 인코딩 디코딩 방법 및 시스템

Country Status (3)

Country Link
JP (1) JP2004070960A (ko)
KR (1) KR100960786B1 (ko)
CN (1) CN1396538A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160122033A (ko) 2015-04-13 2016-10-21 동아대학교 산학협력단 픽셀 방향정보를 사용한 영상정보 내 패턴정보영역 검출방법
KR101684257B1 (ko) * 2015-07-01 2016-12-09 주식회사 유비케어 바코드 위치 알림 시스템 및 바코드 위치 알림 방법
KR20170013123A (ko) 2015-07-27 2017-02-06 동아대학교 산학협력단 영상데이터를 이용한 패턴정보 추출방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7028911B2 (en) * 2002-08-07 2006-04-18 Shenzhen Syscan Technology Co. Limited Methods and systems for encoding and decoding data in 2D symbology
CN100401311C (zh) * 2003-07-15 2008-07-09 武汉矽感科技有限公司 有条码的安全存折和该存折的安全信息存取方法
JP4708380B2 (ja) * 2004-12-24 2011-06-22 デジタル・インフォメーション・テクノロジー株式会社 二次元コードを有するシート、情報提供システム
JP4752413B2 (ja) * 2005-09-13 2011-08-17 株式会社デンソーウェーブ 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
JP3953501B1 (ja) 2006-03-03 2007-08-08 株式会社バンダイナムコゲームス プログラム、情報記憶媒体、2次元コード生成システム、画像生成システム及び2次元コード
KR101256104B1 (ko) 2007-08-06 2013-05-02 삼성전자주식회사 복합기 및 그 제어 방법
US9734442B2 (en) * 2007-10-31 2017-08-15 Ncr Corporation LumID barcode format
KR101632380B1 (ko) * 2009-10-19 2016-06-21 삼성전자주식회사 바코드 인식 장치 및 방법
CN102411797A (zh) * 2010-09-20 2012-04-11 航天信息股份有限公司 票据信息打印方法及装置
PL2622536T4 (pl) * 2010-10-01 2016-04-29 Hoffmann La Roche Urządzenie i sposób wykrywania optycznego kodu kreskowego
CN102446264A (zh) * 2010-10-15 2012-05-09 航天信息股份有限公司 增值税专用发票二维码的打印与扫描识别方法及系统
JP5187382B2 (ja) * 2010-12-13 2013-04-24 株式会社デンソーウェーブ 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
JP5187383B2 (ja) * 2010-12-13 2013-04-24 株式会社デンソーウェーブ 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
CN102855646B (zh) * 2011-06-30 2016-01-20 北大方正集团有限公司 条码图像生成方法和装置
CN103021000A (zh) * 2011-09-26 2013-04-03 天津索普特网络信息技术有限公司 一种条码自动生成、自动影像融合方法
CN102521585B (zh) * 2011-12-06 2014-09-17 北京百纳威尔科技有限公司 移动终端
CN102622425A (zh) * 2012-02-24 2012-08-01 深圳市腾达汉龙信息技术有限公司 利用二维码对数据库数据图形化永久备份及恢复的方法
CN102629333A (zh) * 2012-02-24 2012-08-08 深圳市腾达汉龙信息技术有限公司 一种利用二维码管理、恢复缩微胶卷上的缩微影像的方法
CN102708389A (zh) * 2012-06-05 2012-10-03 王赤坤 一种维码字体制作方法
CN103065176A (zh) * 2012-12-10 2013-04-24 苏州佳世达电通有限公司 由一维条形码生成图像的方法及系统
CN103927606B (zh) * 2013-01-14 2017-09-29 上海核工程研究设计院 一种基于特征码的纸质和电子文件管理方法
WO2015152982A1 (en) * 2014-03-31 2015-10-08 Hewlett-Packard Development Company, L.P. Acquisition of linked versions of print content having machine-readable links
CN105868306A (zh) * 2016-03-25 2016-08-17 西安网域电子科技有限公司 一种基于扫描仪的二维码自动识别挂接方法及系统
CN106203231B (zh) * 2016-07-12 2018-11-23 福建惠联众网络科技有限公司 一种支持主动读码打印的凭证云打印系统
CN106599600B (zh) * 2016-12-28 2021-09-28 上海联影医疗科技股份有限公司 放疗计划报告和医学影像检查报告的电子显示方法和电子设备
JP7167553B2 (ja) * 2017-10-06 2022-11-09 株式会社デンソーウェーブ 二次元コード
CN110263000B (zh) * 2019-06-05 2023-04-07 大连理工大学 一种纸质文档电子化及归档方法
CN111047269B (zh) * 2019-09-10 2023-08-29 广东易臣信息技术有限公司 一种工作流的文件审批流转方法和电子设备
CN110795007B (zh) * 2019-09-11 2023-12-26 深圳市联谛信息无障碍有限责任公司 一种获取截图信息的方法及装置
CN112347804A (zh) * 2020-10-27 2021-02-09 任玉海 一种条形码/二维码解析方法
JP7101427B1 (ja) 2021-12-03 2022-07-15 Xpand株式会社 アクセス分散方法
CN114580589B (zh) * 2022-02-23 2024-03-08 复旦大学 一种双通道二维码与用于防复印和信息隐藏的控制方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132651A (ja) 1998-06-01 2000-05-12 Matsushita Electric Ind Co Ltd 無境界クロックなし2次元バ―コ―ドとそのプリント法および読みとり法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132651A (ja) 1998-06-01 2000-05-12 Matsushita Electric Ind Co Ltd 無境界クロックなし2次元バ―コ―ドとそのプリント法および読みとり法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160122033A (ko) 2015-04-13 2016-10-21 동아대학교 산학협력단 픽셀 방향정보를 사용한 영상정보 내 패턴정보영역 검출방법
KR101684257B1 (ko) * 2015-07-01 2016-12-09 주식회사 유비케어 바코드 위치 알림 시스템 및 바코드 위치 알림 방법
KR20170013123A (ko) 2015-07-27 2017-02-06 동아대학교 산학협력단 영상데이터를 이용한 패턴정보 추출방법

Also Published As

Publication number Publication date
CN1396538A (zh) 2003-02-12
KR20040014336A (ko) 2004-02-14
JP2004070960A (ja) 2004-03-04

Similar Documents

Publication Publication Date Title
KR100960786B1 (ko) 2d 부호의 인코딩 디코딩 방법 및 시스템
US7028911B2 (en) Methods and systems for encoding and decoding data in 2D symbology
KR100414524B1 (ko) 복호 특성이 우수하며 단계별 에러레벨조정이 가능한2차원 코드 및 그 코드의 인코딩 디코딩 방법
US5790715A (en) Method and apparatus for recording/reproducing mesh pattern data
CA2172511C (en) Packet bar code encoding and decoding
EP2122534B1 (en) Multiple resolution readable color array
US5304786A (en) High density two-dimensional bar code symbol
TW412709B (en) Encoded color halftone micro-dots for high density digital information storage
US7543748B2 (en) Method and system for creating and using redundant and high capacity barcodes
RU2078375C1 (ru) Устройство сканирования для декодирования оптически считываемой этикетки и оптически считываемая этикетка для такого устройства
CN101978380B (zh) 二维符号及其读取方法
US7014123B2 (en) Machine readable coded data with distributed encoding
US5553084A (en) Error correction enhancement for code one and other machine-readable symbologies
KR20060076160A (ko) 고밀도 기하학 기호 세트를 인코딩하기 위한 시스템 및방법
US7604180B2 (en) Code pattern, printed matter, image generating apparatus, image processing apparatus, image generating method, and information identifying method
US7380727B2 (en) Method of generating interface surface
CA2285626A1 (en) Distortion resistant double-data correcting color transition barcode and method of generating and using same
GB2218238A (en) Label carrying encoded data
CN1770177A (zh) 编码高密度几何符号集的系统和方法
US7066395B2 (en) Redundant two-dimensional code and a decoding method
KR20030085511A (ko) 2차원 바코드 카드 및 그 디코딩 방법
RU2081453C1 (ru) Устройство сканирования для декодирования оптически считываемой этикетки и оптически считываемая этикетка для такого устройства

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
FPAY Annual fee payment

Payment date: 20121206

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140110

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150519

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160411

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180514

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee