E D R , A S I H C RSS

ISBN_Barcode_Image_Recognition

1. ํ”„๋กœ์ ํŠธ

1.1. ์ฐธ์—ฌ

  • ์ •์ง„๊ฒฝ

1.2. ๋ชฉํ‘œ

  • Image๋กœ ๋ถ€ํ„ฐ ISBN ์Šค์บ”๋ผ์ธ ์ถ”์ถœ, ํ•ด์„
  • ๊ตฌ๊ธ€ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋™์ž‘

2. 1D Barcode Image Recognition

2.1. Symbology

  • 1์ฐจ์› ๋ฐ”์ฝ”๋“œ ์ธ์‹์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฐ”์ฝ”๋“œ์˜ ์‹ฌ๋ณผ๋กœ์ง€๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.
  • ์‹ฌ๋ณผ๋กœ์ง€๋ž€, ๋ฐ”์ฝ”๋“œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •ํ•œ ๊ทœ์น™์ด๋‹ค. ์ด ๊ทœ์น™์ด ์กด์žฌํ•ด์•ผ ํ•ด๋‹น ๋ฐ”์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

2.1.1. Bar and Space

  • Bar๋Š” ๋ฐ”์ฝ”๋“œ์˜ ๊ฒ€์€ ๋ถ€๋ถ„, Space๋Š” ํฐ ๋ถ€๋ถ„์ด๋ฉฐ, ๊ฐ๊ฐ Black, White๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

2.1.2. X-dimension

  • ๊ฐ€์žฅ ์ข์€ Bar ํ˜น์€ ๊ฐ€์žฅ ์ข์€ Space(์˜ ํญ ๊ธธ์ด)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

2.1.3. Quite Zone

  • ๋ฐ”์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐ”์ฝ”๋“œ ์ขŒ์šฐ๋กœ X-dimension์˜ 10๋ฐฐ์˜ Space๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ์‹ค์ œ ์˜์ƒ์—์„œ๋Š” ๋Œ€๊ฐœ ์กด์žฌํ•˜๋‚˜. ์บก์ณํ•œ ํ™”๋ฉด ์ƒ์— ์—†์„ ์ˆ˜๋„ ์žˆ๊ณ , ์ƒ˜ํ”Œ๋ง ๊ณผ์ •์—์„œ ์žก์Œ์ด ๋ผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์ฝ”๋“œ๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์˜์—ญ์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

2.1.4. Check Digit

  • ๋ฐ”์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ธ์‹ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด. ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

2.2. EAN-13 Symbology

  • EAN-13์€ 13์ž๋ฆฌ ์ˆซ์ž(Check Digit ํฌํ•จ)๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ฝ”๋“œ์ด๋‹ค.
  • EAN-13์˜ ์‹ฌ๋ณผ๋กœ์ง€์— ๋Œ€ํ•ด ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ๋Š” ํŽ˜์ด์ง€(์˜๋ฌธ) : http://www.barcodeisland.com/ean13.phtml

2.2.1. ๋ฐ”์ฝ”๋“œ ๊ตฌ์„ฑ

  • 1์€ bar, 0์€ space๋กœ ๋‚˜ํƒ€๋ƒ„. X๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜
  • Left(Start) Guard
    • 101
  • Left Characters
    • 0XXXXX1 * 6 (space๋กœ ์‹œ์ž‘ํ•ด์„œ bar๋กœ ๋๋‚จ)
  • Center Guard
    • 01010
  • Right Characters
    • 1XXXXX0 * 6 (bar๋กœ ์‹œ์ž‘ํ•ด์„œ space๋กœ ๋๋‚จ)
  • Right(End) Guard
    • 101
  • Start, End Guard๋Š” ๋ฐ”์ฝ”๋“œ์˜ ์‹œ์ž‘๊ณผ ๋์„ ์•Œ๋ฆฌ๋Š” ์‹ฌ๋ณผ์ด๋‹ค.
  • Center Guard๋Š” Left Characters์™€ Right Characters๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์‹ฌ๋ณผ์ด๋‹ค.
  • Left Characters์™€ Right Characters๋Š” ๊ฐ๊ฐ 6์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋‚˜๋จธ์ง€ ํ•œ ์ž๋ฆฌ๋Š” Left Characters์˜ Encoding์œผ๋กœ ๋ถ€ํ„ฐ ํ•ด์„ํ•œ๋‹ค. (์•„๋ž˜ Encoding์—์„œ ์„ค๋ช…)
  • Right Characters์˜ ๋งˆ์ง€๋ง‰ ํ•œ ์ž๋ฆฌ๋Š” Check Digit ์ด๋‹ค.

2.2.2. X-dimension

  • ๊ฐ€์žฅ ๋‘๊บผ์šด Bar ํ˜น์€ Space์˜ ํญ ๊ธธ์ด๋Š” X-dimension์˜ 4๋ฐฐ์ด๋‹ค.

2.2.3. Check Digit

  • EAN-13์˜ Check Digit๋Š” ๋งˆ์ง€๋ง‰ ํ•œ ์ž๋ฆฌ์ด๋ฉฐ, ๋‚˜๋จธ์ง€ 12์ž๋ฆฌ๋กœ ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ๋‹ค.
  • ๊ฐ 12์ž๋ฆฌ ์ˆซ์ž์— ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•˜์—ฌ ๋‹ค ํ•ฉํ•˜๊ณ , ํ•ฉํ•œ ๊ฐ’์„ 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ 10์—์„œ ๋นผ๋ฉด Check Digit๊ฐ€ ๋‚˜์˜จ๋‹ค.
    • ๊ฐ€์ค‘์น˜๋Š” 1, 3, ์ด ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์ด๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ ์ˆซ์ž์— 1์„ ๊ณฑํ•˜๊ณ , ... , ์—ด๋‘ ๋ฒˆ์งธ ์ž๋ฆฌ ์ˆซ์ž์— 3์„ ๊ณฑํ•œ๋‹ค.


# Python
def generate_isbn_check_digit(numbers):	# Suppose that 'numbers' is 12-digit numeric string
    sum = 0;
    for i, number in enumerate(numbers):
        if i%2 == 0:
            sum += int(number) * 1
        else:
            sum += int(number) * 3
    return 10 - sum % 10

2.2.4. Encoding

2.2.4.1. Character

  • 0์€ space, 1์€ bar๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
CharacterLeft(Odd)Left(Even)Right
0000110101001111110010
1001100101100111100110
2001001100110111101100
3011110101000011000010
4010001100111011011100
5011000101110011001110
6010111100001011010000
7011101100100011000100
8011011100010011001000
9000101100101111110100

  • Encoding์„ ์‰ฝ๊ฒŒ ํ•ด๋…ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ ํ‘œ๋ฅผ ํ†ตํ•ด ์„ฑ์งˆ์„ ํŒŒ์•…ํ•ด๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • Left(Odd), Right๋Š” ๊ฐ๊ฐ์˜ ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „ํ•˜์—ฌ ์„œ๋กœ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • Left(Even), Right๋Š” ๋น„ํŠธ์—ด์„ ์ขŒ์šฐ ๋ฐ˜์ „ํ•˜์—ฌ ์„œ๋กœ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • 0 ํ˜น์€ 1์ด ๊ฐ€์žฅ ๊ธธ๊ฒŒ ์—ฐ์†๋˜์–ด๋ด์•ผ 4๊ฐœ์ด๋‹ค.
  • Left์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ๋น„ํŠธ๋Š” 0, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋น„ํŠธ๋Š” 1์ด๊ณ , Right๋Š” ๊ทธ ๋ฐ˜๋Œ€์ด๋‹ค.
    • ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ๋น„ํŠธ 5๊ฐœ(32 ๊ฐ€์ง€์ˆ˜)๋กœ ์ˆซ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, Left(Odd), Left(Even) ์ค‘์— ๊ฒน์น˜๋Š” ๊ฒƒ์ด ์—†๋‹ค.
  • ๋ชจ๋“  ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•ด 0, 1์„ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด ๊ทธ ์˜์—ญ์€ ํ•ญ์ƒ 4๊ฐœ์ด๋‹ค.
    • ์ฆ‰, ํ•˜๋‚˜์˜ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ Bar์™€ 2๊ฐœ์˜ Space๊ฐ€ ์กด์žฌํ•œ๋‹ค.

2.2.4.2. First Number

  • ์ŠคํŽ˜์ด์Šค์™€ ๋ฐ”์— ์˜ํ•ด ์ง์ ‘์ ์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆซ์ž๋Š” 12๊ฐœ์ด๋‹ค. ๋‚˜๋จธ์ง€ ํ•˜๋‚˜์˜ ์ˆซ์ž๋Š” Left Character์˜ ์ธ์ฝ”๋”ฉ์„ ํ•ด์„ํ•ด ์–ป์–ด๋‚ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 8801067070256 ์ด๋ผ๋Š” EAN-13 ๋ฐ”์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๋•Œ, ๋ฐ”์ฝ”๋“œ์— ์ง์ ‘์ ์œผ๋กœ ์–ป์–ด์ง€๋Š”๊ฑด ๋งจ ์•ž์˜ ์ž๋ฆฌ '8'์ด ๋น ์ง„ 801067070256 ์ด๊ณ , ์ด๋Š” Left Character์— ํ•ด๋‹นํ•˜๋Š” 801067์˜ ์ธ์ฝ”๋”ฉ์„ ๋ณด๊ณ  ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค.

3. Image Processing (with Google Android)

3.1. YUV Image Format

  • Y(ํœ˜๋„ ์‹ ํ˜ธ, ํ™”๋ฉด์˜ ๋ฐ๊ธฐ), U(Cb, ํœ˜๋„ ์‹ ํ˜ธ์™€ ์ฒญ์ƒ‰ ์„ฑ๋ถ„์˜ ์ฐจ), V(Cr, ํœ˜๋„ ์‹ ํ˜ธ์™€ ์ ์ƒ‰ ์„ฑ๋ถ„์˜ ์ฐจ)

3.1.1. Planar and Packed

  • Packed๋Š” Y, U, V์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์ด ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์€ ํฌ๋งท์ด๋‹ค.
  • Planar๋Š” Y, U, V์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์ด ๋ถ„๋ฆฌ๋œ ํฌ๋งท์ด๋‹ค.

3.1.2. NV21 (Planar)

  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ํ•ญ์ƒ ์ง€์›๋˜๋Š” ํฌ๋งท์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • Planar Format์œผ๋กœ, ํ”„๋ ˆ์ž„ ํฌ๊ธฐ๋งŒํผ Y ์ •๋ณด๊ฐ€ ์žˆ๊ณ , ๊ทธ ๋’ค์— ํ”„๋ ˆ์ž„ ํฌ๊ธฐ์˜ ๋ฐ˜ ๋งŒํผ U, V ์ •๋ณด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

3.1.3. YV12

  • ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด API level 12(ํ—ˆ๋‹ˆ์ปด 3.1.x)๋ถ€ํ„ฐ ํ•ญ์ƒ ์ง€์›๋˜๋Š” ํฌ๋งท์ด๋ผ๊ณ  ํ•œ๋‹ค.

3.2. Threshold

  • ์˜์ƒ์„ ๋‘ ๊ฐ€์ง€ ์ƒ‰์œผ๋กœ๋งŒ ํ‘œํ˜„ํ•˜์—ฌ, Object ์ธ์‹์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ
  • ์˜ˆ๋ฅผ ๋“ค์–ด ํ‘๋ฐฑ ์˜์ƒ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ๋•Œ ์ž„๊ณ„๊ฐ’(์–ด๋–ค ๋ฐ๊ธฐ๊ฐ’)๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด ๊ฒ€์ •์ƒ‰, ๋†’์œผ๋ฉด ํฐ์ƒ‰์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ.

3.2.1. Global Threshold

  • ์ „์ฒด ์˜์ƒ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์ž„๊ณ„๊ฐ’์œผ๋กœ ์˜์ƒ์„ ์ด์ง„ํ™”ํ•˜๋Š” ๊ฒƒ.

3.2.2. Adaptive Threshold

  • ์˜์ƒ ์ผ๋ถ€์— ๋น›์ด ๋น„์ถฐ์ง€๊ฑฐ๋‚˜, ๊ทธ๋ฆผ์ž๊ฐ€ ๋“œ๋ฆฌ์šธ ๊ฒฝ์šฐ Global Threshold๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ธฐ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ํž˜๋“ค๋‹ค.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:26
Processing time 0.0094 sec