KR20040014336A - Methods and systems for encoding and decoding data in 2d symbology - Google Patents

Methods and systems for encoding and decoding data in 2d symbology Download PDF

Info

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

Links

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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Printers Characterized By Their Purpose (AREA)
  • Character Discrimination (AREA)

Abstract

PURPOSE: A method and a system for encoding/decoding a 2-D(Dimensional) barcode are provided to convert the 2-D barcode into a signal characterized in having various signal widths and heights, various printing resolutions, various damage protection levels, a large information storage region, and a high redundancy freedom degree, read by a scanner of a line base, and recognized by a contact/non-contact scanner. CONSTITUTION: A rectangular 2-D barcode includes rectangular barcode elements comprising bars and spaces. The rectangular 2-D barcode has a vertical and a horizontal axis, and includes an upper border(510), a lower border(520), a left border(530), a right border(540), a bit-stream data region(550), and data segment partitions(560). The 2-D barcode data is stored in a format of the bit-stream of codeword data. The bit-stream of the codeword data includes a set of the arranged rows of a 9-bit codeword. The bit-stream data region is partitioned into the data segments separated by the data segment partitions.

Description

2D 부호의 인코딩 디코딩 방법 및 시스템{METHODS AND SYSTEMS FOR ENCODING AND DECODING DATA IN 2D SYMBOLOGY}METHODS AND SYSTEMS FOR ENCODING AND DECODING DATA IN 2D SYMBOLOGY}

본 발명은 일반적으로 광학식으로 인코딩되는 부호에 관한 것으로, 더 구체적으로는 데이터를 2 차원 부호로 인코딩 및 디코딩하기 위한 방법 및 시스템에 관한 것이다.FIELD OF THE INVENTION The present invention generally relates to optically encoded codes, and more particularly to methods and systems for encoding and decoding data into two-dimensional codes.

오늘날의 첨단 기술 세계에서는, 더 많은 공정들이 컴퓨터에 의해 자동적으로 수행된다. 자동화에 대한 이렇게 증가하는 요구는 새로운 기술들에 대한 강한 요구를 만들었다. 바-코드는 데이터 입력을 자동화하기 위해 사용된 기술들 중 하나이다.In today's high tech world, more processes are performed automatically by a computer. This growing demand for automation has created a strong demand for new technologies. Bar-code is one of the techniques used to automate data entry.

바-코드 부호는 다양한 폭들을 가진 일련의 바들(bars)이 다양한 폭들을 갖는 공백들(spaces)에 의해 서로 이격되어 있는 패턴이며, 바들과 공백들은, 이진수 1들과 0들의 스트링을 나타내는, 서로 다른 광 반사 특성을 갖는다. 바-코드 부호들은 물체 상에 직접 또는 물체에 부착된 레이블들 상에 직접 프린트된다. 바-코드 부호들은 전형적으로 레이저 빔, 전하 결합 소자(CCD), 또는 콘택트 이미지 센서(CIS: Contact Image Sensor) 카메라와 같은 광학 기술에 의해 판독된다. 전형적인 레이저-기반 바-코드 판독기는 바-코드를 가로질러 이동하면서 바들과 공백들을 전기적 신호로 변환하기 위해 포토-센서를 사용한다. 그런 다음 판독기는 바들과 공백들의 상대적인 폭들을 측정하고, 상이한 패턴을 다시 정규의 특성으로 변환하며, 이들을 보다 더 처리하기 위해 컴퓨터나 휴대용 단말기에 보낸다. 이 바들과 공백들은, 스캐너에 의해 적당하게 복호화되기 위한, 최소한의 폭들을 갖는다. 최소한의 폭은 "단위(unit)" 혹은 "모듈(module)"이라고 불린다. 공백들과 바들은 다수의 "단위" 혹은 "모듈"이다.A bar-code code is a pattern in which a series of bars of varying widths are spaced from each other by spaces of varying widths, where the bars and spaces represent each other, representing a string of binary ones and zeros. Has different light reflecting properties. Bar-code symbols are printed directly on the object or on labels attached to the object. Bar-code codes are typically read by an optical technique such as a laser beam, charge coupled device (CCD), or contact image sensor (CIS) camera. A typical laser-based bar-code reader uses a photo-sensor to convert bars and voids into an electrical signal while moving across the bar-code. The reader then measures the relative widths of the bars and spaces, converts the different patterns back to normal characteristics, and sends them to a computer or portable terminal for further processing. These bars and spaces have a minimum width, to be properly decrypted by the scanner. The minimum width is called a "unit" or "module". Spaces and bars are multiple "units" or "modules".

상술한 바-코드는 1 차원이다. 1 차원(1D) 바-코드로 인코딩된 정보는 단일의 차원으로 연장하는 바들과 공백들의 폭들에 의해서만 표현된다. 모든 바들과 공백들은 그들의 수직 방향으로 균일한 높이를 가지므로, 정보는 오직 1D 바-코드의 수평 방향으로 저장된다. 일반적으로, 1D 바-코드는, 물리적인 객체들을 상세한 정보를 포함한 데이터베이스와 연관시키기 위한 표시로서 널리 사용된다. 일 차원이기 때문에, 1D 바-코드는, 가령 예를 들면, 우편 번호, 사회 보장 번호, 또는 일련 번호와 같은 매우 제한된 양의 정보만을 저장할 수 있다.The bar code described above is one dimensional. Information encoded in one-dimensional (1D) bar-code is represented only by the widths of the bars and spaces extending into a single dimension. Since all bars and voids have a uniform height in their vertical direction, the information is stored only in the horizontal direction of the 1D bar-code. In general, 1D bar-code is widely used as an indication for associating physical objects with a database containing detailed information. As one-dimensional, the 1D bar-code can only store a very limited amount of information, such as, for example, a postal code, social security number, or serial number.

정보 기술에 대한 요구가 증가함에 따라, 연관된 데이터베이스를 제거하고, 부호 자체에 더 많은 정보를 저장하는 데에 관심이 높아졌다. 이러한 요구의 결과로서, 2 차원(2D) 바-코드 기술이 1D 바-코드의 확장으로부터 등장하였다. 2D 바-코드 부호들은 일반적으로 데이터를 2 차원으로 인코딩하는 정사각형 또는 직사각형 패턴들이다. 이들은 두가지 일반적인 카테고리들에 해당하는데, 그 하나는 "스택형 바-코드(stacked bar-code)"로서 1D 바-코드의 상부에 다른 1D 바-코드가 케익 층처럼 설치되는 것이고, 다른 하나는 "매트릭스 바-코드(matrix bar-code)"로서 진정한 2 차원 매트릭스로 설계되는 것이다.As the demand for information technology increases, there is a growing interest in removing associated databases and storing more information in the code itself. As a result of this demand, two-dimensional (2D) bar-code technology has emerged from the expansion of 1D bar-code. 2D bar-code codes are generally square or rectangular patterns that encode data in two dimensions. These fall into two general categories, one is "stacked bar-code", where the other 1D bar-code is installed like a cake layer on top of the 1D bar-code. Matrix bar-code "is designed to be a true two-dimensional matrix.

가장 통상적으로 사용되는 "스택형 바-코드" 중 하나는 도 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 스캐너에 의해 판독될 수 있다.One of the most commonly used "stacked bar-codes" is PDF 417 as shown in FIG. 1A. A detailed description of PDF 417 can be found in US Pat. No. 5,304,786. PDF 417 includes multiple code segments. Each one is named PDF 417 because it consists of four bars and four spaces with a total width of 17 modules. This has a high tolerance for corrupted code when a high level of error correction is designed in the code. In theory, PDF 417 can store 2000 characters per sign, but the practical limit does not exceed 350 characters. It is required to print a PDF code using a high resolution printer such as a laser or a thermal transfer printer. PDF 417 can be read by a camera (CCD or CMOS), and by a modified portable laser or CIS scanner.

QR 코드(Quick Response Code)는 "Nippondenso ID 시스템즈에 의해 개발된 "매트릭스 바-코드"의 예이다. 도 1b에 도시된 바와 같이, QR 코드 부호는, 정사각형 모양이고, 부호의 세 코너에서 어둡고 밝은 정사각형들이 교대로 중첩된 그의 파인더 패턴에 의해 용이하게 식별될 수 있다. 파인더 패턴 때문에, QR 코드 부호는 CCD 어레이 카메라로 매우 빠르게 판독될 수 있다. 단점은 사이즈인데, 네모지게 구분된 최대 177 모듈이다. 그 대응하는 최대 저장 용량은, 750 바이트 최저레벨 에러 정정 코드로 인코딩된 2956 바이트이다.The QR code (Quick Response Code) is an example of a "matrix bar-code" developed by Nippondenso ID Systems. As shown in Figure 1B, the QR code code is square in shape, dark and bright at three corners of the code. The squares can easily be identified by their overlapping finder pattern Because of the finder pattern, the QR code code can be read very quickly by the CCD array camera The disadvantage is size, up to 177 squarely separated modules The corresponding maximum storage capacity is 2956 bytes encoded with a 750 byte lowest level error correction code.

CCD 또는 CIS 카메라에 기초한 스캐너들은 특히 2D 바-코드를 판독하기에 적합하다. 일반적으로, 스캐너들은 (사람이 볼 수 있는) 광을 (컴퓨터가 처리할 수 있는) 0들과 1들로 변환한다. 다시 말해서, 스캐너들은 데이터를 아날로그 포맷에서 디지털 포맷으로 변환한다. 모든 스캐너들은 반사 또는 투과의 동일한 원리로 작동한다. 스캐닝될 스캐닝 객체는 광원과 센서를 포함하는 스캐너 앞에 놓여진다. 스캐닝 객체에 의해 반사되거나 그를 통과한 광의 양은 센서에 의해 픽업되어, 광 강도에 비례한 신호로 변환된다.Scanners based on CCD or CIS cameras are particularly suitable for reading 2D bar-codes. In general, scanners convert light (human visible) into 0s and 1s (computer processable). In other words, scanners convert data from analog format to digital format. All scanners operate on the same principle of reflection or transmission. The scanning object to be scanned is placed in front of a scanner comprising a light source and a sensor. The amount of light reflected or passed by the scanning object is picked up by the sensor and converted into a signal proportional to the light intensity.

스캐너 성능에 영향을 주는 팩터들 중의 하나는 스캔 해상도이다. 스캔 해상도는 스캐너가 달성할 수 있는 상세한 정밀도와 관련되고, 보통, 도트 퍼 인치(인치당 도트들: dots per inch: dpi)로 측정된다. 스캐너가 해상할 수 있는 인치당 도트들이 많을수록, 결과적인 이미지가 더 정밀해질 것이다. 스캐너는 전형적으로 각 픽셀에 대한 광소자를 갖는다. 수평 광 해상도 600dpi를 주장하는 스캐너는 대안적으로 600 픽셀 퍼 인치(pixels per inch: ppi)로도 일컬어지며, 이것은 또한 스캐너의 x-방향 해상도로서 일컬어진다. 최대 스캐닝 폭이 8.5인치인 스캐너에 있어서, 스캔 헤드에는 5100 광소자들의 어레이가 있다. 스캔 헤드는, 스캐닝 객체를 가로질러 움직이는 운송 어레이 상에 탑재된다. 비록 프로세스는 연속적인 운동으로 보일 수 있으나, 헤드는 한번에 일 인치의 일부만큼씩 이동하여, 각 이동 사이에 판독을 행한다. 센서 어레이 내의 물리적인 소자들의 수는 수평 샘플링 레이트를 결정하고, 인치당 스텝들의 수는, 스캐너의 y-방향 해상도로서 일컬어지는, 수직 샘플링 레이트를 결정한다. 스캐너의 해상도는 그의 x-방향 및 y-방향 해상도들에 기초한다.One of the factors affecting scanner performance is scan resolution. Scan resolution is related to the detailed precision a scanner can achieve and is usually measured in dots per inch (dots per inch). The more dots per inch the scanner can resolve, the finer the resulting image will be. Scanners typically have optical elements for each pixel. Scanners claiming a horizontal optical resolution of 600 dpi are alternatively referred to as 600 pixels per inch (ppi), which is also referred to as the scanner's x-direction resolution. For a scanner with a maximum scanning width of 8.5 inches, the scan head has an array of 5100 optical elements. The scan head is mounted on a transport array that moves across the scanning object. Although the process may appear to be a continuous movement, the head moves by a portion of one inch at a time, making a reading between each movement. The number of physical elements in the sensor array determines the horizontal sampling rate, and the number of steps per inch determines the vertical sampling rate, referred to as the y-direction resolution of the scanner. The resolution of the scanner is based on its x- and y-direction resolutions.

보다 많은 정보, 내장성 리던던시(buil-in redundancy), 다수 레벨들의 훼손 방지책, 유연한 폭 및 길이를 갖는 부호를 저장하고, 휴대형의 라인-베이스드 콘택트 또는 논-콘택트 스캐닝을 가능하게 하는 특성을 갖는 신규한 바-코드를 갖는 것이 바람직할 것이다.Stores more information, buil-in redundancy, multiple levels of tamper-proof protection, flexible width and length codes, and features portable line-based contacts or non-contact scanning It would be desirable to have a novel bar-code.

수동식 스캐닝 장치가 확산되었기 때문에, 2D 바-코드를 휴대형 스캐너로 스캔하는 것이 바람직하다. 그러나, 몇가지 문제점들이 존재한다. 2D 바-코드 부호들을 스캐닝함에 있어서 제한된 높이의 엘리먼트들 때문에 수직 동기(200)를 상실하는 것으로 알려진 현상이 도 2에 도시된다. 2D 바-코드(210)는 평행한 스캔 라인들(220)의 세트로 오버랩된다. 일반적으로, 스캔 라인(220)과 바-코드(210)의 수평 축 사이의 각도는, 휴대형 스캐닝 장치의 경우, 제로가 아니다. 바-코드 엘리먼트들의 제한된 높이에 기인하여, 어떤 스캔 라인들(230)은 바-코드 엘리먼트들의 두 행들을 가로질러 횡단한다. 그 결과, 이 스캔 라인들(230)은 이용가능하지 않다. 동기를 상실하는 문제를 회피하는 2D 바-코드 디코딩 방법을 갖는 것이 바람직하다. 또한, 2D 바-코드를 효율적으로 그리고 효과적으로 디코드하는 것이 바람직하다.Because of the proliferation of passive scanning devices, it is desirable to scan 2D bar-codes with a handheld scanner. However, some problems exist. A phenomenon known to lose vertical sync 200 due to limited height elements in scanning 2D bar-code codes is shown in FIG. The 2D bar-code 210 overlaps with a set of parallel scan lines 220. In general, the angle between the scan line 220 and the horizontal axis of the bar-code 210 is not zero in the case of a portable scanning device. Due to the limited height of the bar-code elements, some scan lines 230 traverse across two rows of bar-code elements. As a result, these scan lines 230 are not available. It is desirable to have a 2D bar-code decoding method that avoids the problem of losing synchronization. It is also desirable to decode 2D bar-codes efficiently and effectively.

<발명의 개요><Overview of invention>

본 섹션에서는, 본 발명의 몇가지 특징들을 요약하고 몇개의 바람직한 실시예들을 간단히 소개하고자 한다. 본 섹션의 목적을 불명료하게 하는 것을 회피하기 위해 단순화와 생략이 행해질 수 있다. 이러한 단순화와 생략은 본 발명의 범위를 제한하지 않는다.In this section, we summarize some features of the present invention and briefly introduce some preferred embodiments. Simplifications and omissions may be made to avoid obscuring the purpose of this section. Such simplifications and omissions do not limit the scope of the invention.

본 발명은 2D 바-코드를 인코딩하고 디코딩하기 위한 프로세스, 방법, 시스템, 및 소프트웨어 제품에 관한 것이다. 본 발명의 일 특징에 따르면, 적어도 1) 가변 폭 및 높이의 부호, 2) 가변 프린트 해상도, 3) 다수의 훼손 방지 레벨, 4) 큰 정보 저장성, 5) 높은 리던던시, 6) 라인 베이스드 스캐닝 장치에 의한 판독 가능성, 7) 콘택트 스캐닝 또는 논-콘택트 스캐닝 장치에 의한 인식 가능성을 포함한 특징들을 갖는 신규한 2D 바-코드 부호가 제공된다.The present invention relates to a process, method, system, and software product for encoding and decoding 2D bar-codes. According to one aspect of the invention, at least 1) variable width and height signs, 2) variable print resolution, 3) multiple tamper resistant levels, 4) large information storage, 5) high redundancy, 6) line based scanning apparatus A novel 2D bar-code code is provided having features including readability by, 7) readability by a contact scanning or non-contact scanning device.

일 실시예에 따르면, 2D 바-코드는 상측 테두리, 하측 테두리, 좌측 테두리, 우측 테두리, 비트-스트림 데이터 영역, 및 복수의 데이터 세그먼트 분할부들을 포함한다. 상측 및 하측 테두리의 고유한 패턴이 사용되어 스캐닝 장치가 2D 바-코드의 배향, 즉, 바-코드가 위 아래로 거꾸로 되었는지 혹은 뒤집힌 미러 이미지인지를 인식할 수 있게 한다. 스캐닝 장치가 데이터 엘리먼트의 좌표를 계산하도록, 좌우측 테두리 상에 복수의 포지셔닝 홀들의 대응 쌍들이 사용된다. 비트-스트림 데이터 영역은, 도 3에 도시된 바와 같은 데이터 엘리먼트들의 3행 3열의 데이터 구조체를 갖는, 정렬된 행들의 9 비트 "코드워드"의 형태로 바-코드 정보를 포함한다. 비트들의 순서는 행을 중심으로, 좌측에서 우측으로, 그리고 위에서 아래로 저장된다.According to one embodiment, the 2D bar-code includes an upper border, a lower border, a left border, a right border, a bit-stream data area, and a plurality of data segment dividers. Unique patterns of the upper and lower edges are used to enable the scanning device to recognize the orientation of the 2D bar-codes, i.e. whether the bar-codes are upside down or upside down. Corresponding pairs of a plurality of positioning holes are used on the left and right edges so that the scanning device calculates the coordinates of the data element. The bit-stream data area contains bar-code information in the form of a 9-bit "codeword" of aligned rows, with a data structure of three rows and three columns of data elements as shown in FIG. The order of the bits is stored around the row, left to right, and top to bottom.

2D 바-코드의 폭과 길이는 비트-스트림 데이터 영역에 소지된 정보의 양에의해 제어된다. 물리적 훼손을 방지하기 위한 다수의 조치들이 2D 바-코드에 채택된다. 제1 조치는 데이터 비트-스트림을 다수의 같은 크기의 데이터 세그먼트들로 분할하는 것이다. 데이터 세그먼트 제어 정보의 세트가 각 데이터 세그먼트에 부가된다. 그 결과, 전체 바-코드에 관련된 주요 제어 정보를 각 데이터 세그먼트 내에 반복함으로써 리던던시가 제공된다.The width and length of the 2D bar-code is controlled by the amount of information carried in the bit-stream data area. Many measures to prevent physical damage are adopted in 2D bar-code. The first measure is to split the data bit-stream into a plurality of equally sized data segments. A set of data segment control information is added to each data segment. As a result, redundancy is provided by repeating in each data segment key control information related to the entire bar-code.

다른 한가지 조치는 각각의 데이터 세그먼트 내에 산업 표준 에러 정정 방법 (예를 들어, 리드-솔로몬(Reed-Solomon) 함수)를 채택하는 것이다. 그리하여, 바-코드의 일부라도 인식이 불가능하면, 에러 정정은, 바-코드의 훼손되지 않은 부분 내에 있는 에러 정정 코드워드를 사용하여 상실된 정보를 재생할 수 있다. 많은 상이한 레벨들의 에러 정정이 있다. 응용 가능한 환경에 따라, 적합한 레벨의 에러 정정이 선택될 수 있다. 디코딩에 대한 높은 신뢰성을 보장하기 위해, 데이터 세그먼트 제어 정보를 위한 독립적인 에러 정정 스킴이 채택된다. 코드워드들을 순차적인 순서로 저장하는 대신에, 코드워드들이 인터리브 순서로 저장되어, 연속적인 데이터가 넓은 영역에 분산적으로 펼쳐진다. 그 결과, 연속적인 데이터가 훼손될 가능성이 줄어들고, 에러 정정을 통해 훼손된 데이터를 재생할 가능성이 증가한다.Another measure is to adopt an industry standard error correction method (eg, Reed-Solomon function) within each data segment. Thus, if any part of the bar-code is not recognizable, error correction can reproduce the lost information using an error correction codeword that is within the uncorrupted portion of the bar-code. There are many different levels of error correction. Depending on the applicable environment, an appropriate level of error correction may be selected. In order to ensure high reliability for decoding, an independent error correction scheme for data segment control information is adopted. Instead of storing the codewords in sequential order, the codewords are stored in an interleaved order so that consecutive data is spread out over a wide area. As a result, the possibility of corruption of continuous data is reduced, and the possibility of reproducing corrupted data through error correction increases.

바-코드의 한 특별한 부분 내에 바들(어두운 색)의 넓은 집중이 일어날 때, 스캐닝 장치는 이러한 집중된 부분에서 공백들을 포착할 수 없을 것이다. 이러한 문제를 해결하기 위해, 집중된 바들의 일부를 감추기 위해, 코드워드 데이터의 비트-스트림과 선정된 마스크 사이에 마스킹 혹은 X-OR 비트 연산이 수행된다. 마스킹 메카니즘은 종래의 것과 다르다. 이것은 3행 3열의 코드워드에 기초한다. 각 타입의 마스크는 마스킹 코드워드의 쌍으로 구성된다. 세쌍의 마스킹 코드워드들이 도 10a, 10b, 10c에 도시된다. 이들은 체스 판 스타일로 배열되어 있는데, 흑백 정사각형들은 그 쌍의 마스킹 코드워드를 나타낸다. 이 배열은 도 10d에 예시된다.When a wide concentration of bars (dark color) occurs in one particular part of the bar-code, the scanning device will not be able to capture the blanks in this focused part. To solve this problem, a masking or X-OR bit operation is performed between the bit-stream of the codeword data and the predetermined mask to hide some of the concentrated bars. The masking mechanism is different from the conventional one. This is based on the codewords of three rows and three columns. Each type of mask consists of a pair of masking codewords. Three pairs of masking codewords are shown in FIGS. 10A, 10B, 10C. They are arranged in a chessboard style, with black and white squares representing the pair of masking codewords. This arrangement is illustrated in FIG. 10D.

본 발명의 다른 특징에 따르면, 상이한 디코딩 방법들이 개시된다. 한가지 방법은 전체 2D 바-코드 부호가 스캔되어 저장된 후 2D 바-코드를 디코드하기 위해 사용된다. 또 다른 방법은 2D 바-코드가 스캔되는 동안 2D 바-코드를 디코딩하기 위해 사용된다. 일 실시예에 따르면, 이 디코딩 방법들은 2D 바-코드를 효율적으로 그리고 효과적으로 디코드하기 위해 스캐닝 장치 상에 로드된 소프트웨어 제품으로서 결합된다.According to another feature of the invention, different decoding methods are disclosed. One method is used to decode 2D bar-codes after the entire 2D bar-code code has been scanned and stored. Another method is used to decode 2D bar-codes while the 2D bar-codes are scanned. According to one embodiment, these decoding methods are combined as a software product loaded on the scanning device to decode the 2D bar-code efficiently and effectively.

본 발명의 다른 특징에 따르면, 같은 간격을 갖는 평행한 포지셔닝 라인들의 세트가 2D 바-코드에 부착된다. 이 포지셔닝 라인들은 스캐닝 장치가 2D 바-코드를 적당하게 디코드하도록 가이드하기 위해 사용된다.According to another feature of the invention, a set of parallel positioning lines with equal spacing is attached to the 2D bar-code. These positioning lines are used to guide the scanning device to properly decode the 2D bar-code.

본 발명의 다른 특징에 따르면, 2D 바-코드는 아티클의 상이한 패러그래프들에 대응하는 가시적인 마크들로 분할될 수 있다.According to another feature of the invention, the 2D bar-code may be divided into visible marks corresponding to different paragraphs of the article.

본 발명의 목적, 특징, 및 효과 중 하나는, 유연한 특징을 갖고 스캐닝에 적합한 부호를 제공하는 것이다.One of the objects, features, and effects of the present invention is to provide a code having flexible features and suitable for scanning.

본 발명의 목적, 특징, 및 효과 중 다른 것들은, 첨부된 도면들을 참조하여 본 발명의 실시예의 상세한 설명을 검토하면 명백히 알 수 있을 것이다.Other objects, features, and effects of the present invention will become apparent from a review of the detailed description of the embodiments of the present invention with reference to the accompanying drawings.

본 발명의 이들 및 다른 특징들, 양상, 및 효과는 하기의 상세한 설명, 청구범위, 및 첨부 도면들을 참조함으로써 쉽게 이해될 것이다.These and other features, aspects, and effects of the present invention will be readily understood by reference to the following detailed description, claims, and accompanying drawings.

도 1a는 PDF417 2D 바-코드의 일 예를 도시한다.1A shows an example of a PDF417 2D bar-code.

도 1b는 QR 코드의 일 예를 도시한다.1B shows an example of a QR code.

도 2는 2D 바-코드 엘리먼트들의 행들과 스캔 라인들의 교차를 나타내는 도면이다.2 is a diagram showing the intersection of rows of 2D bar-code elements and scan lines.

도 3은 9 비트 코드워드의 두가지 예를 도시한다.3 shows two examples of 9 bit codewords.

도 4는 본 발명에 따른 2D 바-코드의 일 예를 도시한다.4 shows an example of a 2D bar-code according to the present invention.

도 5는 도 4의 2D 바-코드의 상세한 해부도이다.FIG. 5 is a detailed anatomy of the 2D bar-code of FIG. 4. FIG.

도 6a 내지 6c는 상측 테두리와 하측 테두리의 예시적인 패턴들을 나타낸다.6A-6C show exemplary patterns of upper and lower borders.

도 7a와 7c는 상측 테두리의 시작 코드의 두가지 예들을 상세하게 나타낸다.7A and 7C show two examples of the start code of the upper edge in detail.

도 7b와 7d는 하측 테두리의 끝단 코드의 두가지 예들을 상세하게 나타낸다.7B and 7D show two examples of the end code of the lower edge in detail.

도 8은 상이한 에러 정정 레벨들에서의 에러 정정 코드워드와 데이터 코드워드 사이의 조합을 나타낸 테이블을 도시한다.8 shows a table showing a combination between an error correction codeword and a data codeword at different error correction levels.

도 9a는 코드워드 데이터의 비트-스트림에 대한 인터리브 저장 스킴을 나열한다.9A lists the interleaved storage scheme for the bit-stream of codeword data.

도 9b와 9c는 데이터 세그먼트 제어 정보의 데어터 구조를 나타낸다.9B and 9C show a data structure of data segment control information.

도 10a 내지 10d는 본 발명에 이용된 다양한 마스크들을 예시한다.10A-10D illustrate various masks used in the present invention.

도 11은 바-코드 인코딩 방법의 플로우 챠트를 나타낸다.11 shows a flowchart of the bar-code encoding method.

도 12a는 2D 바-코드를 디코드하기 위한 방법의 플로우 챠트를 나타낸다.12A shows a flowchart of a method for decoding a 2D bar-code.

도 12b와 12c는 2D 바-코드를 먼저 스캐닝할 필요없이 2D 바-코드를 디코드하는 방법의 플로우 챠트를 나타낸다.12B and 12C show flowcharts of a method of decoding a 2D bar-code without first scanning the 2D bar-code.

도 13은 포지셔닝 홀들의 위치를 찾는 상세도를 나타낸다.13 shows a detailed view of locating the positioning holes.

도 14a는 2D 바-코드에 사용되는 대안적인 포지셔닝 티스(positioning teeth)를 나타낸다.14A shows an alternative positioning teeth used for 2D bar-code.

도 14b와 14c는 2D 바-코드에 부착된 포지셔닝 라인들의 두가지 예를 나타낸다.14B and 14C show two examples of positioning lines attached to a 2D bar-code.

도 15는 인코드되어 있는 아티클의 상이한 패러그래프들에 대응하는 가시적인 분할 마크들을 갖는 2D 바-코드를 나타낸다.15 shows a 2D bar-code with visible segmentation marks corresponding to different paragraphs of the encoded article.

도 16은 포지셔닝 라인들이 스캐닝 장치를 어떻게 가이드하는지를 설명하기 위한 상세한 기하를 나타낸다.16 shows a detailed geometry for explaining how the positioning lines guide the scanning device.

도 17a 및 17b는 인접한 포지셔닝 라인들과 연속적인 스캐닝 라인들 사이의 관계를 나타낸다.17A and 17B show the relationship between adjacent positioning lines and successive scanning lines.

도 18은 2D 바-코드에 대응하는 스캐너 헤드의 개략적인 챠트를 나타낸다.18 shows a schematic chart of a scanner head corresponding to a 2D bar-code.

도 19는 스캐너의 전형적인 블럭도를 나타낸다.19 shows a typical block diagram of a scanner.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

400: 2D 바-코드 부호400: 2D Bar-Code Code

510: 상측 테두리510: upper border

520: 하측 테두리520: lower border

530: 좌측 테두리530: left border

540: 우측 테두리540: right border

550: 비트-스트림 데이터 영역550: bit-stream data area

560: 복수의 데이터 세그먼트 분할부들560: a plurality of data segment dividers

하기의 설명에서는, 본 발명의 충분한 이해를 돕기 위해 여러 특정한 상세 내역들의 설명들이 주어진다. 그러나, 당업자는 본 발명이 이러한 특정 상세 내역들을 배재하고도 실시될 수 있음을 명백히 알 것이다. 본 명세서의 설명 및 표현은, 그 내용을 당업자들에게 가장 효과적으로 전달하기 위해, 당업자나 숙련된 기술자들이 사용하는 통상적인 수단이다. 또한, 공지된 방법들, 프로시져들, 부품들, 및 회로의 경우에는, 본 발명의 특징을 불필요하게 불명료하게 만드는 것을 피하기 위해 설명하지 않을 것이다.In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. The description and representations herein are the usual means used by those skilled in the art and by those skilled in the art in order to best convey the content to those skilled in the art. Moreover, in the case of known methods, procedures, components, and circuits, no description will be made to avoid unnecessarily obscuring the features of the present invention.

본 명세서에서 "일 실시예" 또는 "실시예"라고 일컫는 것은, 실시예와 관련하여 설명된 특별한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함될 수 있음을 의미한다. 본 명세서의 여러 군데에서 "일 실시예에 있어서"라는 문구의 등장하는데, 이는 모두 동일한 실시예를 일컫는 것일 필요는 없고, 다른 실시예들과 상호 배제적인 별개의 혹은 대안적인 실시예들일 필요도 없다. 또한, 본 발명의 하나 이상의 실시예들을 나타내는 프로세스 플로우 챠트 또는 도면들 내의 블럭들의 순서는 임의의 특별한 순서를 본질적으로 나타내는 것은 아니고, 본 발명의 임의의 제한점들을 암시하는 것도 아니다.Reference herein to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the present invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor need to be separate or alternative embodiments that are mutually exclusive of other embodiments. . Moreover, the order of blocks in the process flow charts or figures that represent one or more embodiments of the present invention does not inherently represent any particular order, and does not imply any limitations of the present invention.

도면들에 있어서 유사한 부품들에는 유사한 번호가 병기되며, 이제 도면들을 참조하여 본 발명을 설명한다. 도 3은 본 발명의 2D 바-코드 부호에 사용된 데이터 구조의 두가지 예들을 나타낸다. 각각의 9 비트 코드워드는 3행 3열로 배열된 데이터 엘리먼트를 포함하는데, 각각의 데이터 엘리먼트는 어두운 색과 밝은 색 중 어느 하나이다. 각각의 데이터 엘리먼트는 1 비트의 정보를 저장한다. 코드워드의 순서는 좌측으로부터 우측으로 그리고 위로부터 아래로의 순이다. 본 발명의 설명을 용이하게 하기 위해 어둡거나 밝은 색의 엘리먼트는 바나 공백으로서 일컬어진다. 일 실시예에 있어서, 바는 1을 나타내고, 공백은 0을 나타낸다. 예를 들어, 코드워드(310)의 값은 이진수 010101010이거나, 혹은 16진수로 0x0aa이고, 또 다른 코드워드(320)의 값은 이진수 101111001이거나, 혹은 16진수로 0x179이다.Like parts are designated by like numerals in the drawings, and the present invention will now be described with reference to the drawings. 3 shows two examples of the data structure used for the 2D bar code code of the present invention. Each 9-bit codeword includes data elements arranged in three rows and three columns, each data element being one of dark and light colors. Each data element stores one bit of information. The order of the codewords is from left to right and top to bottom. To facilitate the description of the present invention, dark or light colored elements are referred to as bars or spaces. In one embodiment, the bar represents 1 and the blank represents 0. For example, the value of codeword 310 is binary 010101010, or 0x0aa in hexadecimal, and the value of another codeword 320 is binary 101111001, or 0x179 in hexadecimal.

본 발명의 일 실시예에 따라, 도 4는 바들과 공백들로 된 복수의 직사각형 바-코드 엘리먼트들을 포함하는 직사각형 2D 바-코드 부호(400)를 예시한다. 직사각형 2D 바-코드 부호(400)는 두개의 주축들, 즉 수평축(410)과 수직축(420)을 갖는다. 2D 바-코드 부호(400)의 분해도가 도 5에 도시되어 있다. 2D 바-코드 부호(400)의 구성 요소들로는 상측 테두리(510), 하측 테두리(520), 좌측 테두리(530), 우측 테두리(540), 비트-스트림 데이터 영역(550) 및 복수의 데이터 세그먼트 분할부들(560)을 포함한다. 2D 바-코드 부호 데이터는 코드워드 데이터의 비트-스트림의 형태로 저장된다. 코드워드 데이터의 비트-스트림은 9 비트 코드워드의 정렬된 행들의 세트를 포함한다. 비트-스트림 데이터 영역(550)은 데이터 세그먼트 분할부들(560)에 의해 분리된 다수의 데이터 세그먼트들로 분할된다.In accordance with one embodiment of the present invention, FIG. 4 illustrates a rectangular 2D bar-code sign 400 comprising a plurality of rectangular bar-code elements of bars and spaces. Rectangular 2D bar-code symbol 400 has two major axes, ie horizontal axis 410 and vertical axis 420. An exploded view of the 2D bar code code 400 is shown in FIG. 5. The components of the 2D bar code code 400 include an upper edge 510, a lower edge 520, a left edge 530, a right edge 540, a bit-stream data area 550, and a plurality of data segments. Includes parts 560. The 2D bar code code data is stored in the form of a bit-stream of codeword data. The bit-stream of codeword data includes a set of aligned rows of 9 bit codewords. The bit-stream data area 550 is divided into a plurality of data segments separated by data segment dividers 560.

상측 테두리(510)의 두개의 예가 도 6a 및 6b에 도시된다. 상측 테두리(510)는 두개의 기본적인 구성 요소들, 즉 시작 코드 패턴(601)과 종결 코드패턴(605)을 포함한다. 예시적인 상측 테두리는, 도 6a에 도시된 바와 같이, 두개의 시작 코드 패턴들(601)과 하나의 종결 코드 패턴(605)을 포함한다. 도 6b는 세개의 시작 코드 패턴들(601)을 포함하는 다른 예의 상측 테두리를 도시한다. 시작 코드 패턴(601)의 개수는 2D 바-코드 부호에 소지된 데이터의 양에 따라 변화한다. 시작 코드 패턴(601)의 최소 개수는 하나이다. 그리고 시작 코드 패턴(601)의 이론적인 최대수는 없다. 그러나, 실용상의 한계는 캐리어의 폭 (예를 들면, 종이의 폭)에 의해 제어될 수 있다. 유사한 디자인으로, 하측 테두리(520)는 적어도 하나의 끝단 코드 패턴(691)과 하나의 종결 코드 패턴(605)을 포함한다. 예시적인 하측 블럭(520)이 도 6c에 도시된다. 종결 코드 패턴(605)은 하나의 3-모듈 와이드 바를 포함한다.Two examples of the upper rim 510 are shown in FIGS. 6A and 6B. The upper border 510 includes two basic components: start code pattern 601 and end code pattern 605. An exemplary upper border includes two start code patterns 601 and one end code pattern 605, as shown in FIG. 6A. 6B shows a top border of another example that includes three start code patterns 601. The number of start code patterns 601 varies depending on the amount of data carried in the 2D bar-code code. The minimum number of start code patterns 601 is one. And there is no theoretical maximum number of start code patterns 601. However, practical limitations can be controlled by the width of the carrier (eg the width of the paper). In a similar design, the lower border 520 includes at least one end code pattern 691 and one termination code pattern 605. An exemplary lower block 520 is shown in FIG. 6C. Termination code pattern 605 includes one three-module wide bar.

시작 코드 패턴(601)과 끝단 코드 패턴(691)은 둘다 방향성이 있다. 시작 코드 패턴(601)은 구별되는 폭들의 조합을 갖는 바들과 공백들 6개가 교대로 있는 구조를 갖는다. 끝단 코드 패턴(691)은 상이한 폭들의 조합을 갖는 유사한 구조를 갖는다. 도 7a에 도시한 바와 같이 시작 코드 패턴(601)에 대한 여섯개의 구성 요소들의 폭들은 3:1:1:2:2:2 모듈들이다. 도 7b는 바들과 공백들에 대한 폭이 3:2:2:1:1:2 모듈들인 끝단 코드 패턴(691)을 도시한다. 그러므로, 바-코드의 전체 폭(W)은 시작/끝단 코드 패턴들과 종결 코드 패턴의 모든 폭들의 합이다.The start code pattern 601 and the end code pattern 691 are both directional. The start code pattern 601 has a structure with alternating bars and six spaces with a combination of distinct widths. The end code pattern 691 has a similar structure having a combination of different widths. As shown in FIG. 7A, the widths of the six components for the start code pattern 601 are 3: 1: 1: 2: 2: 2 modules. FIG. 7B shows the end code pattern 691 with widths of 3: 2: 2: 1: 1: 2 modules for bars and spaces. Therefore, the overall width W of the bar-code is the sum of all widths of the start / end code patterns and the end code pattern.

W = 11*N +3 모듈들W = 11 * N +3 modules

여기서, W는 바-코드의 폭이고, N은 바-코드 내의 시작/끝단 코드 패턴들의 수이다.Where W is the width of the bar-code and N is the number of start / end code patterns in the bar-code.

시작 코드 패턴과 끝단 코드 패턴의 다른 실시예가 도 7c 및 7d에 도시된다. 이들은 다른 폭들의 조합을 갖는 교대로 배치된 8개의 바들과 공백들로 구성된다. 도 7c에 도시된 시작 코드 패턴에 대한 8개의 구성 요소들의 폭은 3:2:1:1:1:2:2 모듈들이다. 도 7d는 끝단 코드 패턴의 폭들이 바들과 공백들에 대해 3:1:2:3:2:2:1:1 모듈들인 예를 도시한다. 본 실시예에서, 바-코드의 총 폭(W)은 다음과 같이 계산된다.Another embodiment of the start code pattern and the end code pattern is shown in FIGS. 7C and 7D. These consist of eight bars and blanks arranged alternately with a combination of different widths. The width of the eight components for the start code pattern shown in FIG. 7C is 3: 2: 1: 1: 1: 2: 2 modules. 7D shows an example where the widths of the end code pattern are 3: 1: 2: 3: 2: 2: 1: 1 modules for bars and spaces. In this embodiment, the total width W of the bar-codes is calculated as follows.

W = 15*N +3 모듈들W = 15 * N +3 modules

여기서, W는 바-코드의 폭이고, N은 바-코드 내의 시작/끝단 코드 패턴들의 수이다.Where W is the width of the bar-code and N is the number of start / end code patterns in the bar-code.

도 5를 다시 참조하면, 좌측 테두리(530)와 우측 테두리(540) 각각은 폭이 3 모듈이고 길이가 바-코드의 높이를 커버하는 동일한 포지셔닝 블럭을 갖는다. 테두리(530 또는 540)가 세개의 열들로서 관측될 때, 테두리의 두개의 외측 열들은 모두 바들이고, 중간 열은 선정된 패턴에 따라 교대로 배치된 바들과 공백들을 포함한다. 일 실시예에 있어서, 패턴은 하나의 바와 하나의 공백이다. 다른 실시예에 있어서, 패턴은, 다수의 바들이 다수의 공백들과 교대로 배치됨으로써 구성될 수 있다. 본질적으로, 좌우측 테두리들 내의 교번하는 공백들은 좌우측 테두리들 사이의 데이터 엘리먼트들의 위치를 찾도록 제공된다.Referring again to FIG. 5, each of the left edge 530 and the right edge 540 has the same positioning block that is three modules wide and whose length covers the height of the bar-code. When the border 530 or 540 is viewed as three columns, both outer columns of the border are bars and the middle column contains bars and spaces alternately arranged according to a predetermined pattern. In one embodiment, the pattern is one bar and one blank. In another embodiment, the pattern may be constructed by placing multiple bars alternately with multiple blanks. In essence, alternating spaces within the left and right borders are provided to locate the data elements between the left and right borders.

바-코드의 디코딩의 신뢰성을 증가시키기 위해, 비트-스트림 데이터 영역(550)은 데이터 세그먼트 분할부(560)에 의해 다수의 동일 사이즈의 데이터 세그먼트들로 분할되는데, 데이터 세그먼트 분할부(560)는 바-코드의 전체 폭에 걸친바들의 한 행이다. 리드-솔로몬 에러 정정 방법은 바-코드 부호에 대한 물리적인 훼손에 대해 적용된다. 본 발명의 일 실시예에 있어서, 리드-솔로몬 스킴의 몇가지 옵션의 선택 사양들이 데이터 엘리먼트들의 훼손을 방지하기 위해 채택될 수 있다. 도 8은 127 코드워드 데이터에 대한 상이한 레벨들의 리드-솔로몬 스킴의 예시적인 리스트를 도시한다. 에러 정정 레벨이 높을수록, 주어진 바-코드 내에 더 적은 데이터가 저장될 수 있음이 명백하다. 적합한 옵션의 선택은 바-코드가 배치되어 있는 물리적인 환경에 따른다. 에러 정정 코드워드들은 선택된 에러 정정 스킴의 레벨에 기초하여 계산된다.In order to increase the reliability of the decoding of the bar-code, the bit-stream data area 550 is divided into a plurality of equally sized data segments by the data segment dividing unit 560, the data segment dividing unit 560 A row of bars spanning the full width of a bar-code. The Reed-Solomon error correction method is applied for physical tampering with bar code codes. In one embodiment of the invention, several optional options of the Reed-Solomon scheme can be employed to prevent tampering of the data elements. 8 shows an exemplary list of Reed-Solomon schemes of different levels for 127 codeword data. It is apparent that the higher the error correction level, the less data can be stored within a given bar-code. The selection of the appropriate option depends on the physical environment in which the bar code is placed. Error correction codewords are calculated based on the level of the selected error correction scheme.

대부분의 바-코드 훼손은 집중된 영역에서 발생한다. 연속적인 데이터의 파괴의 확률을 감소시키기 위한 한가지 방법은 다음과 같다. 즉, a) 데이터 세그먼트를 다수의 고정 길이 데이터 블럭들의 그룹들 (예를 들어, 127 코드워드)로 분할하고, b) 다수의 그룹들을 인터리브 순서(interleaved order)로 저장하여 연속한 코드워드들이 서로 순차적으로 저장되지 않도록 한다. 127 코드워드 데이터의 세 그룹들을 연속적인 방식으로 저장하기 위한 예시적인 스킴이 도 9a에 도시되어 있다. 그룹들의 개수는 임의의 양수일 수 있다.Most bar code corruption occurs in concentrated areas. One way to reduce the probability of successive destruction of data is as follows. That is, a) the data segment is divided into groups of a plurality of fixed length data blocks (e.g., 127 codewords), and b) the plurality of groups are stored in an interleaved order so that successive codewords Do not save sequentially. An example scheme for storing three groups of 127 codeword data in a continuous manner is shown in FIG. 9A. The number of groups can be any positive number.

도 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으로 채워진다. 제어 정보는, 바-코드가 물리적으로 함부로 다루어지더라도, 정보의 이용가능성을 보장하기 위해, 중복적으로 각 데이터 세그먼트 내에 반복된다.In addition to all codeword data stored in the bit-stream data area 550 of FIG. 5, a set of key control information is added to each data segment to improve decoding reliability. 9B illustrates one embodiment of a control information data structure. Because of the importance of this control data, a separate high level error correction code is used independent of the error correction scheme adopted for the codeword data. In Figure 9B, bits e0 through e9 represent error correction codes, bits a0, a1, a2, a3, and a4 represent the total number of data segments in the bar-code code, and bits b0, b1 are selected. Represents an error correction level, bits b2 represent interleaf toggles, bits b3 and b4 represent mask types, and bits c0 to c4 represent data segment numbers of the current data segment. 9C shows another embodiment of a control information data structure. Bits A3, A2, A1, A0 and B3 represent the data segment number of the current data segment, bits B2, B1, B0, C3 and C2 represent the total number of data segments in the bar-code sign, C1, C0 and C3 represents the selected error correction level, bits D2 and D1 represent the mask type, and D0 represents the insertion toggle. In this embodiment, the control information data is first arranged into seven three-row, three-column codewords, and then the three remaining spaces are filled with zeros. Control information is repeated in each data segment redundantly to ensure the availability of the information, even if the bar-code is physically handled.

엄청난 개수의 바들이 단지 매우 적은 개수의 공백들(밝은 색)과 2D 바-코드 부호의 특정한 부분에 집중할 때, 스캐닝 장치가 공백을 놓치게 유발할 수 있어서, 결국 부정확한 정보를 초래한다. 이와 같은 (모두 바들이거나 모두 공백들인) 한가지 색의 집중을 최소화하기 위해, 본 발명의 일 실시예에서는, 비트-스트림 코드워드 데이터에 선정된 마스크로 마스킹이나 XOR 비트 연산을 적용함으로써 바들을 마스킹하기 위한 스킴이 제공된다. 도 10a 내지 10d는 본 발명의 실시예들에 사용된 예시적인 마스크들을 나타낸다.When a huge number of bars only focus on a very small number of spaces (light colors) and certain parts of the 2D bar-code code, the scanning device may cause them to miss spaces, resulting in inaccurate information. To minimize this concentration of one color (all bars or all blanks), in one embodiment of the present invention, masking bars by applying masking or XOR bit operations with a predetermined mask on the bit-stream codeword data. Schemes are provided. 10A-10D show exemplary masks used in embodiments of the present invention.

도 11에 도시된, 본 발명의 일 실시예에 따른 2D 바-코드를 인코딩하기 위한 플로우 챠트(1100)를 참조한다. 먼저, 이진 데이터 파일은 단계 1110에서 이진 비트-스트림 코드워드로 변환된다. 그런 다음, 단계 1120에서, 유저가 선택한 에러 정정 레벨에 기초하여, 에러 정정 코드워드들이 계산되고, 코드워드 데이터의 비트-스트림(예를 들어 127 코드워드) 각각에 부가된다. 이 비트-스트림 코드워드 데이터의 그룹은 단계 1130에서 인터리브 순서로 저장될 수 있다. 그런 다음, 단계 1140에서, 바-코드에 소지된 정보의 양에 기초하여 코드워드 데이터의 전체 비트-스트림이 다수의 데이터 세그먼트들로 분할된다. 단계 1150에서는, 모든 데이터 세그먼트들이 동일한 크기를 갖도록 보장하기 위해, 필요하면, 필러 코드워드들이 마지막 데이터 세그먼트에 첨부된다. 그런 다음, 단계 1160에서, 데이터의 새로운 비트-스트림 코드워드를 생성하기 위해 미리 선택된 마스크로 비트-스트림 코드워드 데이터에 대해 마스킹 혹은 XOR 비트 연산이 적용된다. 그런 다음, 단계 1170에서, 제어 정보 코드워드들이 데이터 세그먼트들 각각에 부가된다. 단계 1180에서는, 상측 테두리, 하측 테두리, 좌측 테두리, 및 우측 테두리가 부가된다. 최종적으로, 단계 1190에서 2D 바-코드 부호가 프린트된다.Reference is made to a flowchart 1100 for encoding 2D bar-code according to one embodiment of the present invention, shown in FIG. First, the binary data file is converted into a binary bit-stream codeword at step 1110. Then, at step 1120, based on the error correction level selected by the user, error correction codewords are calculated and added to each bit-stream (e.g., 127 codewords) of the codeword data. This group of bit-stream codeword data may be stored in interleaved order at step 1130. Then, at step 1140, the entire bit-stream of codeword data is divided into multiple data segments based on the amount of information carried in the bar-code. In step 1150, filler codewords are appended to the last data segment, if necessary, to ensure that all data segments have the same size. Then, in step 1160, a masking or XOR bit operation is applied to the bit-stream codeword data with a preselected mask to generate a new bit-stream codeword of the data. Then, in step 1170, control information codewords are added to each of the data segments. In step 1180, an upper border, a lower border, a left border, and a right border are added. Finally, in step 1190 a 2D bar-code code is printed.

도 12a는 2D 바-코드 부호를 전체적으로 디코딩하기 위한 플로우 챠트 혹은 프로세스(1200)를 도시한다. 단계 1205에서, 전체 2D 바-코드 부호가 스캔되어 이미지로서 저장된 다음, 광학적으로 증대된다. 단계 1210에서, 상하 테두리들이 검출되고 그들의 대응 좌표가 저장된다. 단계 1215에서, 스캔 라인과 바-코드의 수평 축 사이의 각도가 측정된다. 시작 및 끝단 코드 패턴들에 기초하여, 저장된바-코드 이미지의 배향 (예를 들어, 위 아래가 거꾸로 바뀌었다거나. 안팎으로 뒤집힘)이 판정되고, 저장된 이미지의 프린트 해상도가 판정된다. 단계 1220에서는, 저장된 이미지 내의 제1 데이터 세그먼트 분할부가 찾아진다. 단계 1225에서는, 제1 데이터 세그먼트 분할부와 좌우 테두리들 상의 포지셔닝 홀들의 세트를 이용하여, 비트-스트림 데이터 영역 내의 모든 데이터 엘리먼트들의 좌표들이 계산된다. 단계 1230에서는, 제어 정보에 대한 에러 정정 프로세스가 수행되어, 에러 정정 레벨, 마스크 타입, 삽입 토글, 데이터 세그먼트들의 총수, 및 현재 데이터 세그먼트 넘버와 같은, 주요 제어 정보를 추출한다. 그런 다음, 단계 1235에서, 비트-스트림 데이터 영역 내의 데이터 엘리먼트들의 비트값(바/공백)이 단계 1225에서 계산된 그들의 좌표들에 따라 판독되어, 코드워드 데이터의 비트-스트림으로 복원된다. 단계 1240에서, 인터리브 순서로부터 재-순차화, 마스킹 또는 XOR 비트 연산, 및 에러 정정 동작들을 단계 1235에서 생성된 비트-스트림에 적용함으로써, 원래의 코드워드 데이터의 비트-스트림이 재확립된다. 최종적으로, 코드워드 데이터의 비트-스트림이 원래의 이진 데이터로 변환된다.12A shows a flowchart or process 1200 for entirely decoding a 2D bar-code code. In step 1205, the entire 2D bar-code code is scanned and stored as an image and then optically augmented. In step 1210, upper and lower borders are detected and their corresponding coordinates are stored. In step 1215, the angle between the scan line and the horizontal axis of the bar-code is measured. Based on the beginning and ending code patterns, the orientation of the stored bar-code image (eg, upside down or upside down or flipped in and out) is determined, and the print resolution of the stored image is determined. In step 1220, the first data segment divider in the stored image is found. In step 1225, coordinates of all data elements in the bit-stream data region are calculated using the first data segment divider and the set of positioning holes on the left and right edges. In step 1230, an error correction process for control information is performed to extract key control information, such as error correction level, mask type, insertion toggle, total number of data segments, and current data segment number. Then, in step 1235, the bit values (bars / blanks) of the data elements in the bit-stream data area are read according to their coordinates calculated in step 1225 and restored to the bit-stream of codeword data. In step 1240, the bit-stream of the original codeword data is reestablished by applying re-sequencing, masking or XOR bit operations from the interleaved order, and error correction operations to the bit-stream generated in step 1235. Finally, the bit-stream of codeword data is converted into original binary data.

도 12b 및 12c는 본 발명의 다른 실시예에 따른, 2D 바-코드 부호를 복호화하기 위한 플로우 챠트 혹은 프로세스(1250)를 집합적으로 나타낸다. 이 프로세스의 특유한 특징 중의 하나는, 바-코드가 스캔되면서 디코드된다는 것이다. 단계 1252에서, 스캐닝 장치는 2D 바-코드의 새로운 라인을 스캔하여 스캔된 이미지를 임시 저장 장치에 저장한다. 단계 1254에서는, 스캔된 이미지가 하측 테두리 패턴과 비교된다. 정합이 발생한다면, 스캔되는 2D 바-코드 이미지가 위 아래 뒤집힌다. 디코딩은 도 12a에 설명된 바와 같이 2D 바-코드 이미지 전체에 대해서만 수행된다. 그렇지 않고 정합이 발견되지 않으면, 단계 1256에서, 이 스캔된 이미지는 상측 테두리 패턴과 비교된다. 이들이 정합하지 않는다면, 프로세스는 다른 스캔된 이미지를 얻기 위해 단계 1252로 되돌아간다. 상측 테두리가 발견되면, 다음 단계 1258에서 2D 바-코드가 미러 이미지인지의 여부가 판정된다. 미러 이미지라면, 디코딩은 도 12a의 방법으로만 수행될 수 있다. 그 다음, 단계 1260에서는, 2D 바-코드 부호의 프린트 해상도가 판정된다. 단계 1262에서는, 스캐닝 장치가 프린트된 해상도에 기초하여 다른 라인의 스캔된 이미지를 구하기 위해 이동한다.12B and 12C collectively illustrate a flowchart or process 1250 for decoding a 2D bar-code code, in accordance with another embodiment of the present invention. One unique feature of this process is that the bar-code is decoded as it is scanned. In step 1252, the scanning device scans a new line of 2D bar-codes and stores the scanned image in temporary storage. In step 1254, the scanned image is compared with the lower border pattern. If a match occurs, the scanned 2D bar-coded image is flipped up and down. Decoding is performed only for the entire 2D bar-coded image as described in FIG. 12A. Otherwise, if no match is found, in step 1256 this scanned image is compared with the upper border pattern. If they do not match, the process returns to step 1252 to obtain another scanned image. If the upper edge is found, then in step 1258 it is determined whether the 2D bar-code is a mirror image. If it is a mirror image, decoding may only be performed by the method of FIG. 12A. Then, in step 1260, the print resolution of the 2D bar code code is determined. In step 1262, the scanning device moves to obtain a scanned image of another line based on the printed resolution.

단계 1264에서, 스캔된 이미지가, 2D 바-코드 부호의 폭을 가로지르는 솔리드 바인, 데이터 세그먼트 분할부인지의 여부를 판정하기 위해 검사된다. 데이터 세그먼트가 아니라면, 프로세스는 새로운 라인의 스캔된 이미지를 구하기 위해 단계 1262로 되돌아간다. 그렇지 않고, 데이터 세그먼트 분할부라고 판정되면, 프로세스는 2D 바-코드 부호에 소지된 코드워드 데이터의 비트-스트림을 디코드하기 시작한다. 단계 1266에서, 좌우 테두리들의 대응하는 포지셔닝 홀들이 검출된다. 그런 다음, 단계 1268에서, 포지셔닝 홀들과 데이터 세그먼트 분할부를 가이드로 사용하여, 제어 정보의 세트가 판독된다. 코드워드 데이터의 비트-스트림의 제어 정보 부분에 대해 에러 정정 프로세스가 수행된 후, 데이터 세그먼트들의 총수, 에러 정정 레벨, 삽입 토글, 마스크 타입, 및 현재 데이터 세그먼트 넘버와 같은, 제어 정보가 추출된다.In step 1264, the scanned image is examined to determine whether it is a data segment divider, which is a solid bar across the width of the 2D bar-code code. If not, then the process returns to step 1262 to obtain a scanned image of the new line. Otherwise, if determined to be a data segment divider, the process begins to decode a bit-stream of codeword data carried in the 2D bar-code code. In step 1266, corresponding positioning holes of the left and right edges are detected. Then, in step 1268, the set of control information is read using the positioning holes and the data segment division as a guide. After an error correction process is performed on the control information portion of the bit-stream of codeword data, control information is extracted, such as the total number of data segments, the error correction level, the insertion toggle, the mask type, and the current data segment number.

단계 1270에서, 정확한 데이터 세그먼트가 스캐닝되면서 디코드되고 있는지를 확인하는 검사가 수행된다. 그렇지 않다면, 프로세스는 2D 바-코드 부호를 전체적으로 디코딩하기 위해 프로세스(1200)로 분기한다. 단계 1272에서, 인터리브 데이터 저장 순서가 체크된다. 다시, 데이터의 비트-스트림 코드워드가 인터리브 순서로 저장되어 있다면, 2D 바-코드 전체를 디코딩하기 위한 방법에 따라 디코딩이 수행되어야 한다. 두개의 검사를 모두 통과한 후, 단계 1274에서, 한 행의 데이터 엘리먼트들이 판독되어진다. 프로세스는 단계 1276에서, 스캔된 이미지의 다음 라인이 데이터 세그먼트 분할부인지의 여부를 검사함으로써 계속된다. 데이터 세그먼트 분할부가 아니라면, 프로세스는 단계 1274로 돌아간다. 그렇지 않다면, 단계 1278에서 선택된 에러 정정을 수행한 후, 현재 데이터 세그먼트에 대한 데이터의 원래의 비트-스트림 코드워드가 최종적으로 복원된다. 단계 1280에서, 최종 검사가 수행된다. 스캔된 이미지의 다음 라인에서 하측 테두리가 검출되지 않으면, 단계들 1266 내지 1280을 반복하여 새로운 데이터 세그먼트가 디코드된다. 그렇지 않고, 하측 테두리가 검출된다면, 디코딩이 수행된다.In step 1270, a check is made to see if the correct data segment is being scanned and decoded. If not, the process branches to process 1200 to decode the 2D bar-code code as a whole. In step 1272, the interleaved data storage order is checked. Again, if the bit-stream codewords of data are stored in interleaved order, decoding should be performed according to the method for decoding the entire 2D bar-code. After passing both checks, in step 1274, one row of data elements are read. The process continues at step 1276 by checking whether the next line of the scanned image is a data segment segment. If not, then the process returns to step 1274. Otherwise, after performing the error correction selected in step 1278, the original bit-stream codeword of the data for the current data segment is finally recovered. In step 1280, a final check is performed. If the lower edge is not detected in the next line of the scanned image, steps 1266 to 1280 are repeated to decode the new data segment. Otherwise, if the lower edge is detected, decoding is performed.

도 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)이 다음과 같이 계산된다.Referring to FIG. 13, a detailed geometry for illustrating a procedure for determining coordinates of data elements of a 2D bar-code using corresponding pairs of positioning holes in the left and right edges of a stored 2D bar-code image is illustrated. . The data segment splitter 1310 is detected using four vertical traces V1, V2, V3, and V4 that are spaced at equal intervals in the vertical direction of the scanned image. The left edge 1320 is detected using four horizontal traces H1, H2, H3, and H4 that are spaced at equal intervals in the horizontal direction of the scanned image. Similarly, right border 1330 is detected using another set of four horizontal traces H5, H6, H7, and H8 spaced at equal intervals. Using the coordinates of these straight lines, the intersection 1340 of the left and upper edges and the intersection 1350 of the right and upper edges are determined. Based on the print resolution ppi of the rectangular bar-code elements and the coordinates of these two intersections, an approximate position of the first pair of positioning holes is evaluated. Then by simply averaging all the light color pixels in the evaluated area, the coordinates Xp, Yp of the first pair of positioning holes are calculated as follows.

Xp = (1/N) * Sum(Xi)Xp = (1 / N) * Sum (Xi)

Yp = (1/N) * Sum(Yi)Yp = (1 / N) * Sum (Yi)

여기서, N은 포지셔닝 홀의 평가된 영역 내의 백색 픽셀들의 총 수이고, xi, yi는 포지셔닝 홀의 평가된 영역 내의 백색 픽셀들의 좌표들이다.Where N is the total number of white pixels in the evaluated area of the positioning hole, and xi, yi are the coordinates of the white pixels in the evaluated area of the positioning hole.

알려진 포지셔닝 홀들의 쌍의 좌표를 이용하여, 2D 바-코드 데이터 엘리먼트들의 모든 좌표들이 계산된다. 그러면 저장된 이미지에 대한 데이터가 매우 효율적으로 판독될 수 있다. 데이터 엘리먼트들의 제1 행의 좌표들의 계산을 완료한 후, 나머지 행들이 연역적으로 추론된다.Using the coordinates of the pair of known positioning holes, all the coordinates of the 2D bar-code data elements are calculated. The data for the stored image can then be read very efficiently. After completing the calculation of the coordinates of the first row of data elements, the remaining rows are deduced inductively.

도 14a는 포지셔닝 티쓰(1402)의 쌍 사이에 샌드위치된 2D 바-코드(1404)를 나타낸다. 이 포지셔닝 티쓰(1402)는 스캐닝 장치가 이미지 스트레칭과 압축을 정정하는 것을 가이드하기 위해 사용된다. 정상적인 상황에서, 스캔된 이미지의 행들의 수는 포지셔닝 티쓰 사이에 고르게 분포된다. 그러나, 특별한 상황에서, 스캔된 이미지는, 스캐닝 장치와 2D 바-코드 부호 사이의 거리와 각도 때문에, 틀어질 수 있다. 한편, 스캔된 이미지가 스트레치될 수 있다. 즉, 특정 포지셔닝 티쓰 사이에는 다른 것들에서보다 스캔된 행들이 더 많이 있다. 반면에, 이미지는 압축될 수 있다. 즉, 특정 포지셔닝 티쓰 사이에는 스캔된 행들이 상실될 수 있다. 모든 포지셔닝 티쓰에 대해 균일한 분포로 한다는 사실에 기초하여, 스트레치된 영역에서는 일부 행들이 삭제되고, 압축된(압착된) 영역에서는 인접한 스캔된 행들을 외삽함으로써 추가의 행들이 부가될 수 있다.14A shows a 2D bar-code 1404 sandwiched between a pair of positioning teeth 1402. This positioning tooth 1402 is used to guide the scanning device to correct image stretching and compression. Under normal circumstances, the number of rows in the scanned image is evenly distributed between the positioning teeth. However, in special circumstances, the scanned image may be distorted due to the distance and angle between the scanning device and the 2D bar-code code. Meanwhile, the scanned image may be stretched. In other words, there are more rows scanned between specific positioning teeth than others. On the other hand, the image can be compressed. That is, the scanned rows may be lost between certain positioning teeth. Based on the fact that it has a uniform distribution for all positioning teeth, some rows may be added by stretching out the stretched region and extra rows by extrapolating adjacent scanned rows in the compressed (compressed) region.

도 14b를 참조하면, 포지셔닝 라인들(1410)의 세트가 2D 바-코드(1420)의 좌측에 부착된다. 이 포지셔닝 라인들은 2D 바-코드 부호(1420)의 수평축과 다른 기울기를 갖는 복수의 등간격으로 이격된 평행선들을 포함한다. 포지셔닝 라인들은 2D 바-코드 부호(1420)의 한쪽 측면 혹은 양쪽 측면에 위치될 수 있다. 다른 실시예에 따른 도 14c는 2D 바-코드 부호(1440)의 상에, 2D 바-코드 내의 어두운 색의 바들에 사용된 것과 다른 색을 갖는 포지셔닝 라인들(1430)이 그려진 것을 나타낸다. 포지셔닝 라인들 및 2D 바-코드 데이터 엘리먼트들의 디코딩은 상이한 색깔의 스캐닝 광의 반사에 기초한다. 예를 들어, 2D 바-코드는 청색의 바들과 백색의 공백들을 사용한다. 중첩하는 포지셔닝 라인들이 특별한 흑색 잉크로 프린트될 수 있다. 스캐닝 장치가 청색 광원을 사용하여 2D 바-코드 부호를 스캔할 때, 흑색 포지셔닝 라인들이 청색광을 흡수하는 반면에 바들과 공백들 모두는 청색광을 반사할 것이다. 그러므로, 포지셔닝 라인들은, 적외선 광원으로 바-코드 데이터를 판독하는 것을 시도하기 전에 먼저 스캐닝 장치에 청색 광원을 사용하여 판독된다. 이것은 왜냐하면, 적외선 광은 특별한 흑색 잉크를 통과하나, 청색 및 백색에서는다르게 반사되기 때문이다. 두개의 다른 광원을 사용하여, 스캐닝 장치는 바-코드 데이터 엘리먼트들과 포지셔닝 라인들을 두개의 다른 경로로 판독할 수 있다.Referring to FIG. 14B, a set of positioning lines 1410 is attached to the left side of the 2D bar-code 1420. These positioning lines include a plurality of equidistantly spaced parallel lines having a different slope from the horizontal axis of the 2D bar-code code 1420. Positioning lines may be located on one or both sides of the 2D bar-code sign 1420. 14C, according to another embodiment, illustrates positioning lines 1430 having a color different from that used for dark bars in a 2D bar code, on the 2D bar code code 1440. Decoding of the positioning lines and the 2D bar-code data elements is based on the reflection of the scanning light of different colors. For example, a 2D bar-code uses blue bars and white spaces. Overlapping positioning lines can be printed with a special black ink. When the scanning device scans the 2D bar-code sign using a blue light source, the black positioning lines will absorb blue light while the bars and voids will both reflect blue light. Therefore, the positioning lines are first read using a blue light source in the scanning device before attempting to read the bar-code data with the infrared light source. This is because infrared light passes through a special black ink, but is reflected differently in blue and white. Using two different light sources, the scanning device can read bar-code data elements and positioning lines in two different paths.

도 15를 참조하면, 2D 바-코드(1510)에 저장된 정보를 분리하기 위한 복수의 가시적인 물리적 분할 마크들(1520)을 갖는 2D 바-코드 부호(1510)가 도시된다. 일 실시예에 따르면, 분리된 바-코드의 각 부분은 아티클의 상이한 패러그래프에 대응한다.Referring to FIG. 15, a 2D bar code code 1510 having a plurality of visible physical segmentation marks 1520 for separating information stored in the 2D bar code 1510 is shown. According to one embodiment, each portion of the separated bar-code corresponds to a different paragraph of the article.

도 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를 계산하기 위해 사용된다.An exemplary use of the positioning lines of FIGS. 14B and 14C is shown in FIG. 16, which depicts the geometry of positioning lines 1600, scan line 1620, and horizontal axis 1610 of 2D bar-code. The set of parallel positioning lines 1600 is intersected by the horizontal axis 1610 and the scan line 1620. Vertical distance 1640 between positioning lines 1600 is indicated as D. FIG. The distance 1630 on the horizontal axis between two intersections of the horizontal axis 1610 and the positioning lines 1600 is L. The distance 1650 on the scan line between two intersections of scan line 1620 and positioning lines 1600 is n. The angle between scan line 1620 and bar-code horizontal line 1610 is F. The angle between horizontal axis 1610 and positioning lines 1600 is E. The angle between positioning lines 1600 and scan line 1620 is G, which is the sum of angles E and F. The following equations are used to calculate the angles F and G.

F = 90 - E - arcos(D/n)F = 90-E-arcos (D / n)

G = arsin(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가 다음과 같이 계산된다.17A and 17B show how the scanning lines guide the scanning devices. In general, the resolution in the horizontal direction or the x direction of the 2D bar-code is determined by the resolution xDPI of the scanning apparatus. In the horizontal direction or the y direction of the 2D bar-code, the resolution is referred to as the y resolution, which is determined by yDPI, which is the sampling rate of the scanning device. In order to properly decode 2D bar-codes, the distance H between the two scanning lines should be H = 1 / y. For example, to achieve 300 dpi, the scanning device needs to scan the 2D bar-code once every 1/300 inch in the y direction. When the first scan line is crossed by two adjacent positioning lines, the distance n between these two intersections is recorded and used to calculate the angle G with the above-described formula. The scanner then compares the two consecutive scan line images shown in FIGS. 17A and 17B. Two consecutive scan lines, line A and line A + n, are shown in FIG. 17B. Corresponding images are plotted overlapping each other in FIG. 17A. Two vertices pixel B and pixel B + m represent the intersections of one positioning line and two consecutive scan lines. Therefore, the distance between vertices is the distance m pixels between two scan lines, which is m * x, where x is the distance between two consecutive pixels. Then, based on the geometry shown in FIG. 16, the y-direction distance V between the two scan lines is calculated as follows.

V = (m*x)*tan(G)V = (m * x) * tan (G)

y 방향 거리 V가 샘플링 거리 H와 같을 때, 스캔된 이미지의 새로운 행이 기록된다. 이 프로세스는 전체 이미지가 스캔될 때까지 계속된다.When the y direction distance V is equal to the sampling distance H, a new row of the scanned image is recorded. This process continues until the entire image is scanned.

도 4 및 5와 관련하여 도 18을 참조하면, 예시적인 CIS 베이스드 스캐너는448 픽셀 폭의 스캐닝 헤드를 갖는다. 모듈 폭이 4 픽셀인 바-코드 엘리먼트인 경우, 센서의 2D 바-코드로의 맵핑은 다음과 같다. 즉, 바-코드의 양측면 상에 공백을 커버하기 위해 8 픽셀, 좌측 테두리(530)와 우측 테두리(540)를 커버하기 위해 12 픽셀, 그리고 비트-스트림 데이터 영역(550)을 위해 408 픽셀이 각각 맵핑된다. 408 픽셀은 102 데이터 엘리먼트들을 나타내는데, 이것은 각 엘리먼트가 4 픽셀이기 때문이다. 이것은, 102 비트의 정보가 바-코드(400)의 하나의 행 내에 저장될 수 있음을 의미한다. 일 실시예에 있어서, 127 코드워드를 저장하기 위해, 36 행의 데이터 엘리먼트들이 요구된다. 데이터 엘리먼트의 폭으로서 하나의 모듈을 나타내기 위해 4 픽셀을 이용하는 것은 2D 바-코드의 디코딩의 신뢰도에 대한 경험칙에 기초한 것이다. 일반적으로, 최소 2D 바-코드 데이터 엘리먼트의 길이/폭은 다음과 같은 공식에 의해 결정될 수 있다.Referring to FIG. 18 in conjunction with FIGS. 4 and 5, an exemplary CIS based scanner has a 448 pixel wide scanning head. For a bar-code element with a module width of 4 pixels, the mapping of the sensor to 2D bar-code is as follows. That is, 8 pixels to cover the blanks on both sides of the bar-code, 12 pixels to cover the left border 530 and the right border 540, and 408 pixels for the bit-stream data region 550, respectively. Is mapped. 408 pixels represent 102 data elements, because each element is 4 pixels. This means that 102 bits of information can be stored in one row of bar-code 400. In one embodiment, 36 rows of data elements are required to store 127 codewords. Using 4 pixels to represent one module as the width of the data element is based on the rule of thumb for the reliability of decoding of 2D bar-codes. In general, the length / width of the minimum 2D bar-code data element can be determined by the following formula.

BL >= 4* (Rp/Rs) 픽셀들BL> = 4 * (Rp / Rs) pixels

여기서, BL은 2D 바-코드 데이터 엘리먼트의 최소 디멘젼이고, Rp는 프린터 해상도이고, Rs는 스캐너 해상도이다.Where BL is the minimum dimension of the 2D bar-code data element, Rp is the printer resolution, and Rs is the scanner resolution.

도 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)으로부터 데이터를 다른 컴퓨터에 출력하기 위해 사용된다.Referring to FIG. 19, a typical scanning device 1900 may include a signal processing chip 1910, an image sensor 1920, a document detection module 1930, a flash memory 1940, an ADC module 1950, a RAM 1960, Test port 1970, and data port 1980. At the heart of the scanning device is a signal processing chip 1910 whose main function is to control all attachment modules, decode binary bar-code data, store decoded information in RAM 1960, and store the required data Output to port 1980. Based on the clock and SP signals sent from the signal processing chip 1910, the image sensor 1920 catches the voltage Vout generated from the light reflected by the scanned image. The resulting digital data Vin is then sent to the signal processing chip 1910. The document detection module 1930 generates a "paper detection" signal when detecting that a document is inserted. The signal processing chip 1910 controls the start and end procedures of scanning based on this "paper detection" signal. The software used by the signal processing chip 1910 is loaded into the flash memory 1940. The ADC module 1950 converts analog data into digital data. The test port 1970 is used to upload software. Data port 1980 is used to output data from RAM 1960 to another computer.

본 발명에 따르면, 2D 바-코드를 인코딩하고 디코딩하기 위한 프로세스, 방법, 시스템, 및 소프트웨어 제품이 제공된다. 본 발명에 따르면, 적어도 1) 가변 폭 및 높이의 부호, 2) 가변 프린트 해상도, 3) 다수의 훼손 방지 레벨, 4) 큰 정보 저장성, 5) 높은 리던던시, 6) 라인 베이스드 스캐닝 장치에 의해 판독 가능성, 7) 콘택트 스캐닝 또는 논-콘택트 스캐닝 장치에 의해 인식 가능성을 갖는 것을 특징으로 하는 신규한 2D 바-코드 부호가 제공된다.According to the present invention, a process, method, system, and software product for encoding and decoding 2D bar-code are provided. According to the invention, at least 1) sign of variable width and height, 2) variable print resolution, 3) multiple tamper resistant levels, 4) large information storage, 5) high redundancy, 6) read by line based scanning device Possibility, 7) A novel 2D bar-code code is provided which has the possibility of recognition by a contact scanning or non-contact scanning device.

또한, 포지셔닝 라인들의 세트가 2D 부호에 부착되어 스캐닝 장치가 2D 부호를 적당한 해상도로 디코드하는 것을 가이드한다.In addition, a set of positioning lines is attached to the 2D code to guide the scanning device to decode the 2D code at an appropriate resolution.

본 발명의 예시적인 실시예가 개시되었으나, 당업자들은 본 발명의 효과를 달성하기 위해 여러가지 변형들과 변경들이 이루어질 수 있음을 명백히 알 것이다.당업자들은 일부 구성 요소들이 동일한 기능을 제공하는 다른 소자들로 대체될 수 있음을 잘 알 수 있을 것이다. 하기의 청구 범위는 본 발명의 범위를 정의한다.While exemplary embodiments of the invention have been disclosed, those skilled in the art will clearly appreciate that various modifications and changes can be made to achieve the effect of the invention. Those skilled in the art will recognize that some components may be replaced by other components that provide the same functionality. You can see that it can be. The following claims define the scope of the invention.

Claims (29)

2D 부호를 인코딩하기 위한 방법에 있어서,In the method for encoding a 2D code, 이진 데이터를 제1 비트-스트림의 코드워드 데이터로 변환하는 단계;Converting the binary data into codeword data of the first bit-stream; 선정된 에러 정정 레벨에 기초하여 상기 제1 비트-스트림으로부터 에러 정정 코드워드들의 세트를 계산하는 단계;Calculating a set of error correction codewords from the first bit-stream based on a predetermined error correction level; 상기 제1 비트-스트림과 상기 에러 정정 코드워드들의 세트를 결합하여 제2 비트-스트림의 코드워드 데이터를 생성하는 단계;Combining the first bit-stream and the set of error correction codewords to generate codeword data of a second bit-stream; 상기 제2 비트-스트림을 동일한 크기의 데이터 세그먼트들의 세트로 분할하는 단계;Dividing the second bit-stream into a set of data segments of equal size; 제어 정보 코드워드들의 세트를 상기 각 데이터 세그먼트 내에 부가하는 단계;Adding a set of control information codewords into each data segment; 상기 데이터 세그먼트들 사이에 데이터 세그먼트 분할부를 부가하는 단계; 및Adding a data segment divider between the data segments; And 상기 데이터 세그먼트들을 구획하는 상측 테두리와 하측 테두리와 좌측 테두리와 우측 테두리를 제공하여, 2D 부호가 생성되도록 하는 단계Providing a top edge, a bottom edge, a left edge, and a right edge that divide the data segments, thereby generating a 2D code. 를 포함하는 2D 부호 인코딩 방법.2D code encoding method comprising a. 제1항에 있어서,The method of claim 1, 적어도 두개의 상기 제2 비트-스트림을 인터리브 순서로 재정렬하는 단계를더 포함하는 2D 부호 인코딩 방법.Reordering at least two said second bit-streams in an interleaved order. 제1항에 있어서,The method of claim 1, 상기 제2 비트-스트림은 바들과 공백들로 표현되고,The second bit-stream is represented by bars and spaces, 상기 방법은 특정한 영역에 집중된 바들을 회피하기 위해 선정된 마스크로 상기 제2 비트-스트림에 대해 마스킹 또는 XOR 비트 연산을 수행하는 단계를 더 포함하는 2D 부호 인코딩 방법.The method further comprises performing a masking or XOR bit operation on the second bit-stream with a predetermined mask to avoid concentrations in a particular area. 제1항에 있어서,The method of claim 1, 상기 2D 부호의 배향의 용이한 검출을 위해, 상기 상측 테두리는 적어도 하나의 시작 코드 패턴과 하나의 종결 코드 패턴을 포함하고, 상기 하측 테두리는 적어도 하나의 끝단 코드 패턴과 하나의 종결 코드 패턴을 포함하는 2D 부호 인코딩 방법.For easy detection of the orientation of the 2D code, the upper border includes at least one start code pattern and one end code pattern, and the lower border includes at least one end code pattern and one termination code pattern. 2D code encoding method. 제4항에 있어서,The method of claim 4, wherein 상기 상측 테두리의 상기 시작 코드 패턴과 상기 하측 테두리의 상기 끝단 코드 패턴은 6개의 교대로 배치된 바들과 공백들을 포함하고, 상기 시작 코드 패턴은 3:1:1:2:2:2 모듈들인 폭 비를 갖고, 상기 끝단 코드 패턴은 3:2:2:1:1:2 모듈들인 폭 비를 갖는 2D 부호 인코딩 방법.The start code pattern of the upper border and the end code pattern of the lower border include six alternating bars and spaces, the start code pattern being 3: 1: 1: 2: 2: 2 modules And a width ratio where the end code pattern is 3: 2: 2: 1: 1: 2 modules. 제1항에 있어서,The method of claim 1, 상기 좌측 테두리와 상기 우측 테두리는, 선정된 패턴에 따라 서로 교대로 배치된 바들과 공백들을 포함하는 동일한 포지셔닝 블럭들의 쌍인 2D 부호 인코딩 방법.And the left edge and the right edge are pairs of identical positioning blocks including bars and spaces arranged alternately according to a predetermined pattern. 제6항에 있어서,The method of claim 6, 상기 제2 비트-스트림은 데이터 엘리먼트 영역 내의 바들과 공백들로 표현되고, 상기 좌측 테두리 또는 상기 우측 테두리 내의 바들과 공백들 각각은 데이터 엘리먼트 영역 내의 하나 이상의 바들과 공백들에 대응하는 2D 부호 인코딩 방법.The second bit-stream is represented by bars and spaces in a data element region, and each of the bars and spaces in the left or right edge corresponds to one or more bars and spaces in the data element region. . 제6항에 있어서,The method of claim 6, 상기 좌측 테두리 또는 상기 우측 테두리 내의 바들 또는 공백들 각각은 상기 2D 부호를 스캔하기 위해 사용되는 스캐너의 수직 해상도의 판정을 용이하게 해주는 2D 부호 인코딩 방법.Each of the bars or spaces in the left edge or the right edge facilitates the determination of the vertical resolution of the scanner used to scan the 2D code. 제6항에 있어서,The method of claim 6, 상기 좌측 테두리 또는 상기 우측 테두리 내의 바들 또는 공백들 각각은 2D 부호의 수직 프린트 해상도를 스캐너에게 나타내고, 상기 상측 테두리 또는 하측 테두리 내의 바들과 공백들은 2D 부호의 수평 프린트 해상도를 스캐너에게 나타내어, 상기 스캐너가 2D 부호를 더 효율적으로 스캔할 수 있는 2D 부호 인코딩 방법.Each of the bars or spaces in the left or right edge represents a vertical print resolution of the 2D code to the scanner, and the bars and spaces in the upper or lower border represent the horizontal print resolution of the 2D code to the scanner, so that the scanner A 2D code encoding method that can scan 2D codes more efficiently. 제6항에 있어서,The method of claim 6, 상기 좌측 테두리 또는 상기 우측 테두리 내의 바들 또는 공백들 각각은 2D 부호의 스캔된 이미지가 비틀어져 있는지의 여부를 나타내고, 스캔된 이미지가 비틀어져 있다면 상기 스캔된 이미지의 정정을 용이하게 하는 2D 부호 인코딩 방법.Each of the bars or spaces in the left edge or right edge indicates whether the scanned image of the 2D code is distorted, and if the scanned image is distorted, facilitates correction of the scanned image. 제1항에 있어서,The method of claim 1, 상기 제2 비트-스트림은 데이터 엘리먼트 영역 내에 바들과 공백들로 표현되고, 상기 방법은,The second bit-stream is represented by bars and spaces in the data element region, and the method further comprises: 동일한 간격으로 이격된 평행한 포지셔닝 라인들의 세트를 상기 2D 부호의 일측면 또는 양측면에 부가하는 단계를 더 포함하고, 상기 포지셔닝 라인들은, 상기 데이터 엘리먼트 영역 내의 바들과 공백들 뿐만 아니라 상기 2D 부호의 배향의 판정을 용이하게 하기 위해, 상기 2D 부호의 수평축과 다른 경사를 갖는 2D 부호 인코딩 방법.Adding a set of parallel positioning lines spaced at equal intervals to one or both sides of the 2D code, the positioning lines as well as bars and spaces in the data element region as well as the orientation of the 2D code 2D code encoding method having an inclination different from a horizontal axis of the 2D code in order to facilitate the determination of. 제1항에 있어서,The method of claim 1, 상기 2D 부호 상에 등간격으로 이격된 평행한 포지셔닝 라인들의 세트를 중첩하는 단계를 더 포함하고, 상기 포지셔닝 라인들은 상기 2D 부호의 수평축과 다른 경사를 갖는 2D 부호 인코딩 방법.Superimposing a set of parallel positioning lines spaced at equal intervals on the 2D code, wherein the positioning lines have a different slope than the horizontal axis of the 2D code. 제12항에 있어서,The method of claim 12, 상기 포지셔닝 라인들은, 스캐너에 의한 상기 2D 부호의 스캐너 이미지로부터 용이하게 판정될 수 있도록, 상기 2D 부호와는 다른 색인 2D 부호 인코딩 방법.And the positioning lines are different from the 2D code so that they can be easily determined from the scanner image of the 2D code by the scanner. 제1항에 있어서,The method of claim 1, 상기 제어 정보의 세트는,The set of control information, 데이터 세그먼트들의 총수,The total number of data segments, 삽입 토글,Insert toggle, 미리 선택된 에러 정정 레벨,Preselected error correction level, 선정된 마스크 타입, 및The selected mask type, and 데이터 세그먼트 넘버Data segment number 를 포함하는 2D 부호 인코딩 방법.2D code encoding method comprising a. 제1항에 있어서,The method of claim 1, 상기 데이터 세그먼트들 각각은 바들과 공백들중 적어도 일부를 갖는 세개의 행들과 세개의 열들로 된 매트릭스인 코드워드들을 포함하는 2D 부호 인코딩 방법.Wherein each of the data segments comprises codewords that are a matrix of three rows and three columns with at least some of the bars and spaces. 이진 데이터 파일로부터의 코드워드 데이터의 비트-스트림을 나타내는 복수의 바들과 공백들을 데이터 영역에 포함하는 2D 부호를 디코딩하는 방법에 있어서,A method of decoding a 2D code comprising a plurality of bars and spaces in a data area representing a bit-stream of codeword data from a binary data file, the method comprising: 상기 데이터 영역은 상측 테두리와 하측 테두리와 좌측 테두리와 우측 테두리에 의해 구획되고, 복수의 데이터 세그먼트 분할부들이 상기 비트-스트림 데이터 영역을 복수의 데이터 세그먼트들로 분할하고,The data area is partitioned by an upper border, a lower border, a left border and a right border, and a plurality of data segment dividers divide the bit-stream data area into a plurality of data segments, 상기 방법은,The method, 2D 부호를 전체적으로 스캔하여 이미지를 생성하고 저장하는 단계;Scanning the 2D code as a whole to generate and store an image; 상기 저장된 이미지에서, 시작 코드 패턴을 갖는 상기 상측 테두리와, 끝단 코드 패턴을 갖는 상기 하측 테두리를 검색하는 단계;Retrieving the upper edge having a start code pattern and the lower edge having an end code pattern from the stored image; 상기 시작 코드 패턴과 상기 끝단 코드 패턴에 기초하여, 상기 부호의 이미지의 수평축과 수직축을 결정하는 단계;Determining a horizontal axis and a vertical axis of the image of the sign based on the start code pattern and the end code pattern; 상기 저장된 이미지의 스캔 라인과 상기 수평축 사이의 스캔 라인 각도를 계산하는 단계;Calculating a scan line angle between the scan line and the horizontal axis of the stored image; 상기 저장된 이미지로부터 프린트 해상도를 결정하는 단계;Determining a print resolution from the stored image; 상기 저장된 이미지에서 상기 복수의 데이터 세그먼트 분할부들을 찾는 단계;Finding the plurality of data segment dividers in the stored image; 상기 데이터 세그먼트들로부터 제어 정보의 세트를 검색하는 단계;Retrieving a set of control information from the data segments; 상기 데이터 세그먼트들로부터 상기 코드워드 데이터의 비트-스트림을 복원하는 단계; 및Recovering the bit-stream of the codeword data from the data segments; And 상기 코드워드 데이터의 비트-스트림을 본래의 이진 데이터 파일로 변환하는 단계Converting the bit-stream of the codeword data into an original binary data file 를 포함하는 2D 부호 디코딩 방법.2D code decoding method comprising a. 제16항에 있어서,The method of claim 16, 상기 코드워드 데이터의 비트-스트림을 복원하는 단계는, 에러 정정 연산을 상기 코드워드 데이터의 비트-스트림에 적용하는 단계를 포함하는 2D 부호 디코딩 방법.Restoring the bit-stream of the codeword data, applying an error correction operation to the bit-stream of the codeword data. 제17항에 있어서,The method of claim 17, 상기 코드워드 데이터의 비트-스트림을 복원하는 단계는, 필요하면, 상기 제어 정보에 기초한 선정된 마스크를 사용하여 상기 코드워드 데이터의 비트-스트림에 대해 마스킹 연산을 수행하는 단계를 더 포함하는 2D 부호 디코딩 방법.Restoring the bit-stream of the codeword data, if necessary, further comprising performing a masking operation on the bit-stream of the codeword data using a predetermined mask based on the control information. Decoding method. 제18항에 있어서,The method of claim 18, 제1 세그먼트 분할부로부터 시작하여 상기 좌측 테두리와 상기 우측 테두리 사이의 복수의 데이터 엘리먼트들에 대한 모든 좌표들을 계산하는 단계; 및Calculating all coordinates for a plurality of data elements between the left edge and the right edge starting from a first segment divider; And 상기 데이터 엘리먼트들의 상기 좌표들을 이용하여 복수의 상기 코드워드 정보를 판정하는 단계Determining a plurality of said codeword information using said coordinates of said data elements 를 더 포함하는 2D 부호 디코딩 방법.2D code decoding method further comprising. 제18항에 있어서,The method of claim 18, 상기 2D 부호의 스캐닝은, 상기 2D 부호의 배향을 판정하기 위해 구성된 소프트웨어 모듈들과 상기 저장되는 이미지를 위한 메모리 공간을 포함하는 스캐너에의해 수행되는 2D 부호 디코딩 방법.The scanning of the 2D code is performed by a scanner comprising software modules configured to determine the orientation of the 2D code and a memory space for the stored image. 제20항에 있어서,The method of claim 20, 상기 저장된 이미지는 먼저 상기 좌측 테두리와 상기 우측 테두리에 따라 상기 소프트웨어 모듈에 의해 처리되어 상기 코드워드 데이터의 비트-스트림이 판정될 수 있는 2D 부호 디코딩 방법.And the stored image is first processed by the software module according to the left and right edges to determine the bit-stream of the codeword data. 이진 데이터 파일로부터의 코드워드 데이터의 비트-스트림을 나타내는 복수의 바들과 공백들을 데이터 영역에 포함하는 2D 부호를 디코딩하는 방법에 있어서,A method of decoding a 2D code comprising a plurality of bars and spaces in a data area representing a bit-stream of codeword data from a binary data file, the method comprising: 상기 데이터 영역은 상측 테두리와 하측 테두리와 좌측 테두리와 우측 테두리에 의해 구획되고, 복수의 데이터 세그먼트 분할부들이 상기 비트-스트림 데이터 영역을 복수의 데이터 세그먼트들로 분할하고,The data area is partitioned by an upper border, a lower border, a left border and a right border, and a plurality of data segment dividers divide the bit-stream data area into a plurality of data segments, 상기 방법은,The method, 2D 부호를 스캔하여 스캔된 이미지의 제1 스캔 라인을 생성하는 단계;Scanning the 2D code to generate a first scan line of the scanned image; 상기 스캔된 이미지에서, 시작 코드 패턴을 갖는 상기 상측 테두리와, 끝단 코드 패턴을 갖는 상기 하측 테두리를 검색하는 단계;Retrieving the upper edge having a start code pattern and the lower edge having an end code pattern from the scanned image; 상기 스캔된 이미지가 거꾸로 뒤집혔다고 판단되거나 미러 이미지일 때, 디코딩 전에 상기 2D 부호를 전체적으로 스캔하기 위한 방법으로 스위칭하는 단계;Switching to a method for scanning the 2D code as a whole before decoding when it is determined that the scanned image is upside down or is a mirror image; (a) 제1 데이터 세그먼트가 검출될 때까지 상기 2D 부호를 스캔하여 스캔된 이미지를 생성하는 단계;(a) scanning the 2D code to generate a scanned image until a first data segment is detected; (b) 에러 정정 후 상기 제1 데이터 세그먼트에 대한 제어 정보 코드워드들의 세트를 검색하는 단계;(b) retrieving a set of control information codewords for the first data segment after error correction; (c) 상기 제1 데이터 세그먼트가 순차적이지 않거나, 또는 상기 제1 데이터 세그먼트 내의 비트-스트림 데이터 영역이 인터리브 순서로 저장되어 있다면, 그래픽 부호 이미지를 전체적으로 디코딩하는 디코딩 방법으로 스위칭하는 단계;(c) if the first data segment is not sequential, or if the bit-stream data regions in the first data segment are stored in an interleaved order, switching to a decoding method that decodes the graphic coded image entirely; (d) 현재의 데이터 세그먼트 내의 상기 데이터 엘리먼트들의 좌표들을 이용하여 상기 비트-스트림 데이터 영역에서 복수의 코드워드 정보를 검색하는 단계;(d) retrieving a plurality of codeword information in the bit-stream data region using the coordinates of the data elements in a current data segment; (e) 현재의 데이터 세그먼트에 대한 상기 코드워드 데이터의 제1 비트-스트림의 제1 부분을 복원하는 단계(e) restoring a first portion of the first bit-stream of the codeword data for the current data segment 상기 하측 테두리가 검출될 때까지 상기 데이터 세그먼트 분할부가 검출될 때마다 단계 (a) 내지 (e)를 반복하는 단계Repeating steps (a) to (e) each time the data segment divider is detected until the lower edge is detected; 를 포함하는 2D 부호 디코딩 방법.2D code decoding method comprising a. 제22항에 있어서,The method of claim 22, 상기 코드워드 데이터의 엘리먼트는 바들 또는 공백들로 이루어진 세개의 행들과 세개의 열들로 된 매트릭스를 포함하는 2D 부호 디코딩 방법.And said element of codeword data comprises a matrix of three rows and three columns of bars or spaces. 제23항에 있어서,The method of claim 23, wherein 상기 2D 부호는 상기 이진 데이터 파일에 따라 확장 가능한 2D 부호 디코딩 방법.And the 2D code is expandable according to the binary data file. 제22항에 있어서,The method of claim 22, 상기 제어 정보는,The control information, 데이터 세그먼트들의 총수,The total number of data segments, 삽입 토글,Insert toggle, 미리 선택된 에러 정정 레벨,Preselected error correction level, 선정된 마스크 타입, 및The selected mask type, and 데이터 세그먼트 넘버Data segment number 를 포함하는 2D 부호 디코딩 방법.2D code decoding method comprising a. 스캐닝 장치가 2D 부호를 디코드하는 것을 가이드하기 위한 방법에 있어서,A method for guiding a scanning device to decode a 2D code, the method comprising: 등간격으로 이격된 평행한 포지셔닝 라인들을 상기 2D 부호에 제공하는 단계 - 상기 포지셔닝 라인들은 상기 2D 부호의 수평축과 다른 경사를 가짐 -; 및Providing parallel positioning lines spaced at equal intervals to the 2D code, the positioning lines having a different slope than the horizontal axis of the 2D code; And 상기 2D 부호를 상기 포지셔닝 라인들과 함께 스캐닝하여 스캔된 이미지를 생성하는 단계Scanning the 2D code with the positioning lines to produce a scanned image 를 포함하는 스캐닝 장치의 2D 부호 디코드를 가이드하기 위한 방법.Method for guiding the 2D code decode of the scanning device comprising a. 제26항에 있어서,The method of claim 26, 상기 포지셔닝 라인들은 상기 2D 부호의 적어도 한 측면에 제공되는 스캐닝 장치의 2D 부호 디코드를 가이드하기 위한 방법.And the positioning lines are provided on at least one side of the 2D code. 제26항에 있어서,The method of claim 26, 상기 포지셔닝 라인들은 상기 2D 부호 상에 중첩되고, 상기 2D 부호 내의 바들의 색과 다른 색인 스캐닝 장치의 2D 부호 디코드를 가이드하기 위한 방법.The positioning lines are superimposed on the 2D code and guide the 2D code decode of the index scanning device different from the color of the bars in the 2D code. 등간격으로 이격된 포지셔닝 라인들의 세트를 갖는 2D 부호를 디코드하기 위한 스캐닝 장치에 있어서,A scanning device for decoding a 2D code having a set of positioning lines spaced at equal intervals, the scanning device comprising: 신호 처리 칩;Signal processing chip; 상기 신호 처리 칩에 접속되고 상기 2D 부호가 제시되어 존재할 때 페이퍼 검출 신호를 전송하기 위한 문서 검출 모듈;A document detection module connected to the signal processing chip and transmitting a paper detection signal when the 2D code is present and present; 상기 2D 부호를 감지하여 아날로그 신호를 생성하기 위한 이미지 센서;An image sensor for generating an analog signal by detecting the 2D code; 상기 이미지 센서로부터 상기 아날로그 신호를 수신하고 디지털화하여 그의 디지털 이미지를 메모리 공간 내에 생성하기 위한 아날로그-디지털 변환 (ADC) 모듈; 및An analog-to-digital conversion (ADC) module for receiving and digitizing the analog signal from the image sensor to generate a digital image thereof in memory space; And 디코딩 소프트웨어를 저장하기 위한 플래시 메모리Flash memory for storing decoding software 를 포함하고,Including, 상기 디코딩 소프트웨어는,The decoding software, 상기 디지털 이미지에서 상기 포지셔닝 라인들을 검출하는 동작과,Detecting the positioning lines in the digital image; 상기 2D 부호의 경사에 대한 상기 포지셔닝 라인들의 경사를 결정하는 동작; 및Determining the inclination of the positioning lines with respect to the inclination of the 2D code; And 상기 2D 부호의 배향을 결정하는 동작Determining an orientation of the 2D code 을 수행하도록 구성된 스캐닝 장치.Scanning device configured to perform.
KR1020030054803A 2002-08-07 2003-08-07 Methods and systems for encoding and decoding data in 2d symbology KR100960786B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN02134545.7 2002-08-07
CN02134545A CN1396538A (en) 2002-08-07 2002-08-07 Method and system for electronizing character and chart information on ordinary carrier

Publications (2)

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

Family

ID=4747786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030054803A KR100960786B1 (en) 2002-08-07 2003-08-07 Methods and systems for encoding and decoding data in 2d symbology

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110042557A (en) * 2009-10-19 2011-04-27 삼성전자주식회사 Apparatus and method for recognizing barcord

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6802450B2 (en) * 2002-08-07 2004-10-12 Shenzhen Syscan Technology Co. Ltd Guiding a scanning device to decode 2D symbols
CN100401311C (en) * 2003-07-15 2008-07-09 武汉矽感科技有限公司 Security deposit book with bar code and security information access method of the same
JP4708380B2 (en) * 2004-12-24 2011-06-22 デジタル・インフォメーション・テクノロジー株式会社 Sheet with two-dimensional code, information provision system
JP4752413B2 (en) * 2005-09-13 2011-08-17 株式会社デンソーウェーブ Two-dimensional code division display method, two-dimensional code reading method, and two-dimensional code reading apparatus
JP3953501B1 (en) 2006-03-03 2007-08-08 株式会社バンダイナムコゲームス Program, information storage medium, two-dimensional code generation system, image generation system, and two-dimensional code
KR101256104B1 (en) 2007-08-06 2013-05-02 삼성전자주식회사 Multi-function apparatus and control method thereof
US9734442B2 (en) * 2007-10-31 2017-08-15 Ncr Corporation LumID barcode format
CN102411797A (en) * 2010-09-20 2012-04-11 航天信息股份有限公司 Method and device for printing bill information
JP5847183B2 (en) 2010-10-01 2016-01-20 エフ ホフマン−ラ ロッシュ アクチェン ゲゼルシャフト Optical bar code capture device and method
CN102446264A (en) * 2010-10-15 2012-05-09 航天信息股份有限公司 Printing and scanning recognition method and system for two-dimensional code of special value-added tax invoice
JP5187382B2 (en) * 2010-12-13 2013-04-24 株式会社デンソーウェーブ Two-dimensional code division display method, two-dimensional code reading method, and two-dimensional code reading apparatus
JP5187383B2 (en) * 2010-12-13 2013-04-24 株式会社デンソーウェーブ Two-dimensional code division display method, two-dimensional code reading method, and two-dimensional code reading apparatus
CN102855646B (en) * 2011-06-30 2016-01-20 北大方正集团有限公司 Bar code image generates method and apparatus
CN103021000A (en) * 2011-09-26 2013-04-03 天津索普特网络信息技术有限公司 Method for automatically generating bar code and automatically fusing bar code with image
CN102521585B (en) * 2011-12-06 2014-09-17 北京百纳威尔科技有限公司 Mobile terminal
CN102629333A (en) * 2012-02-24 2012-08-08 深圳市腾达汉龙信息技术有限公司 Method for managing and recovering microimage on microfilm by using two-dimension code
CN102622425A (en) * 2012-02-24 2012-08-01 深圳市腾达汉龙信息技术有限公司 Method for conducting imaging permanent backup and restoring on database data by utilizing two-dimension codes
CN102708389A (en) * 2012-06-05 2012-10-03 王赤坤 Dimensional code font creating method
CN103065176A (en) * 2012-12-10 2013-04-24 苏州佳世达电通有限公司 Method for generating image by one-dimensional bar code and system
CN103927606B (en) * 2013-01-14 2017-09-29 上海核工程研究设计院 A kind of papery and management of electronic documents method of feature based code
CN106133679B (en) * 2014-03-31 2019-10-22 惠普发展公司,有限责任合伙企业 The method and apparatus for obtaining the linked version of printing content
KR101689705B1 (en) 2015-04-13 2016-12-26 동아대학교 산학협력단 Method for detecting pattern information area using pixel direction information
KR101684257B1 (en) * 2015-07-01 2016-12-09 주식회사 유비케어 System and method for notifying location of bar code
KR101707625B1 (en) 2015-07-27 2017-02-16 동아대학교 산학협력단 Method for detecting pattern information using image data
CN105868306A (en) * 2016-03-25 2016-08-17 西安网域电子科技有限公司 A scanner-based two-dimensional code automatic identification hitching method and system
CN106203231B (en) * 2016-07-12 2018-11-23 福建惠联众网络科技有限公司 A kind of voucher cloud print system for supporting active reading code to print
CN106599600B (en) * 2016-12-28 2021-09-28 上海联影医疗科技股份有限公司 Electronic display method and electronic equipment for radiotherapy plan report and medical image examination report
JP7167553B2 (en) * 2017-10-06 2022-11-09 株式会社デンソーウェーブ Two-dimensional code
CN110263000B (en) * 2019-06-05 2023-04-07 大连理工大学 Paper document electronization and filing method
CN111047269B (en) * 2019-09-10 2023-08-29 广东易臣信息技术有限公司 File approval circulation method of workflow and electronic equipment
CN110795007B (en) * 2019-09-11 2023-12-26 深圳市联谛信息无障碍有限责任公司 Method and device for acquiring screenshot information
CN112347804A (en) * 2020-10-27 2021-02-09 任玉海 Bar code/two-dimensional code analysis method
CN113610203B (en) * 2021-06-28 2024-04-19 清华大学 Bit stream coding method and device for quick response matrix code
JP7101427B1 (en) 2021-12-03 2022-07-15 Xpand株式会社 Access distribution method
CN114580589B (en) * 2022-02-23 2024-03-08 复旦大学 Dual-channel two-dimensional code and control method for preventing copying and information hiding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6201901B1 (en) 1998-06-01 2001-03-13 Matsushita Electronic Industrial Co., Ltd. Border-less clock free two-dimensional barcode and method for printing and reading the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110042557A (en) * 2009-10-19 2011-04-27 삼성전자주식회사 Apparatus and method for recognizing barcord

Also Published As

Publication number Publication date
JP2004070960A (en) 2004-03-04
CN1396538A (en) 2003-02-12
KR100960786B1 (en) 2010-06-01

Similar Documents

Publication Publication Date Title
KR100960786B1 (en) Methods and systems for encoding and decoding data in 2d symbology
US7028911B2 (en) Methods and systems for encoding and decoding data in 2D symbology
KR100414524B1 (en) Two-dimensional Code having superior decoding property which is possible to control the level of error correcting codes, and method for encoding and decoding the same
US5481103A (en) Packet bar code with data sequence encoded in address/data packets
US5454054A (en) Method and apparatus for recording/reproducing mesh pattern data
US5304786A (en) High density two-dimensional bar code symbol
US7673807B2 (en) Multiple resolution readable color array
EP1612724B1 (en) System and method for encoding high density geometric symbol set
AU622173B2 (en) Dynamically variable machine readable binary code and method for reading and producing thereof
US6070805A (en) Distortion resistant double-data correcting color transition barcode and method of generating and using same
TW412709B (en) Encoded color halftone micro-dots for high density digital information storage
US7014123B2 (en) Machine readable coded data with distributed encoding
KR20090018811A (en) Multi-dimensional symbologies and related methods
US7380727B2 (en) Method of generating interface surface
GB2218238A (en) Label carrying encoded data
CN1770177A (en) System and method for encoding high density geometric symbol set
KR20030085511A (en) 2d barcode card and its decoding method
RU2081453C1 (en) Scanning device which reads and decodes label and label to be read by said device

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