바코드 생성과 인식 프로그램을 만들어보자.
1. 바코드 생성
- 바코드 이해
3. 유통정보기술.ppt
- EAN-13 코드: 국제 상품 번호(위키백과)
시작 부호 | LG 코드 | 중간부호 | R 코드 (6번째 check digit) | 끝 부호 |
101 | 6자리 x 7비트 | 01010 | 6자리 x 7비트 | 101 |
긴 세로선 | 아래 숫자 표시 | 긴 세로선 | 아래 숫자 표시 | 긴 세로선 |
- Check Digit 계산공식
https://mathspig.wordpress.com/tag/how-to-calculate-the-check-digit-on-a-barcode/
CheckDig = (10 - [ (3* 홀수번째합 + 짝수번째합) % 10 ] ) %10
- 바코드 생성기 Program 종류
http://www.barcodefor.us/barcode-generator/korean/barcode-label-maker-software.html
- 바코드 생성 사이트
http://www.terryburton.co.uk/barcodewriter/generator/
생성 프로그램 예제
- Combo Box에서 코드를 선택하고,
- Edit 박스에서 만들 데이터를 입력받아 코드를 생성한다.
- 생성된 코드는 bmp파일로 저장한다.
- 다음 소스는 완성된 소스가 아니다. 다만 약간의 방법론 들을 적어 놓았기에 참고하여 EAN-13코드와 ISBN 코드를 생성할 수 있는 프로그램을 직접 만들어 본다.
// "코드생성" 버튼을 눌렀을 때의 처리 함수이다. void CBarcode2Dlg::OnBnClickedButton1() UpdateData(TRUE);
char *LCode[10] = {
for (int i = 0; i < str.GetLength(); i++) { // 바코드를 테스트로 그리는 함수이다. 바코드의 간격을 자동 계산한다. void CBarcode2Dlg::drawBarcode(CString code) |
2. 바코드 인식
- EAN-13 코드 / ISBN 코드
- bmp 파일로 읽어 바코드를 인식한다. (테스트 10개 이상)
- web Cam 영상으로 읽어 바코드를 인식한다.
* 알고리즘 구현 방법
- 노이즈 제거 (Median 필터, 평균 이동 필터 등)
- 허프변환으로 직선의 각도를 알아낸다. (고속처리를 위해 몇개의 점을 획득하고 직선의 방정식으로 각도를 추출한다.)
- 영상 회전
- 세로축 중심 위치를 알아낸다.
- 바 두께를 알아낸다. (x축으로 스캔하여 시작과 끝부분 위치를 개수로 나눈다.)
- 코드화 한다. (10101.... 00101)
3. 평가방법
1) 이론설명 - 바코드 원리 및 종류, ISBN 규격, 검출, 생성, Check Digit
2) 사용기술 - 영상처리, 영상획득, 전처리, 직선방정식, 회전, 노이즈제거, Check Digit
3) 실행결과 - 충분한 시료로 테스트, 완성도, 에러율
4. 참고자료
- 국제표준 도서번호 (ISBN) 코드
(EAN-13코드) 국제 표준 도서 번호(위키백과) 와 (EAN-5 코드) 한국표준부가기호
EAN-13 코드 | EAN-5 코드 |
International Standard Book Number (WikiPedia)
ISBN(국제표준서지번호) http://topamin.co.kr/doc_isbn.htm
서지정보유통지원시스템 (ISBN 온라인 신청)
한국연속간행물번호 - The International ISBN Agency
한국표준부가기호 (EAN-5) - https://en.wikipedia.org/wiki/EAN_5

- EAN-5 코드 (위키백과)
이 코드는 5개의 코드를 checksum을 구해서 해당 코드 패턴을 정한다. (예, checksum=0, -> GGLLL 패턴), 그리고, 해당 G, L 코드의 숫자를 이용해서 코드를 생성한다.
주의할 점은 시작 코드가 존재한다.
- 바코드 code128
http://en.wikipedia.org/wiki/Code_128
- UPC 코드: 범용 상품 부호(위키백과)