본문 바로가기

컴퓨터/기타

도서 바코드 인식기 프로그램 제작 (3)

반응형

앞선 포스팅에서 도서 바코드의 바이너리 데이터를 우리가 알아볼 수 있는 데이터인 ISBN으로 변환하는 알고리즘을 Java를 이용해서 구현해보았다.

그래서 이번에는 사진으로 찍은 바코드를 인식해서 바이너리 데이터로 변환하는 알고리즘을 짜보도록 하겠다.

영상처리를 하는데 가장 자주 쓰이는 오픈 소스인 OpenCV를 이용해서 짜볼까 하다가 아직 이것을 다루는 방법을 잘 몰라서 일단은 Python으로 대충 구현을 하였다.


핵심 알고리즘의 부분은 다음과 같다. 도서 바코드를 보았을 때, 기준이 되는 선이 총 6개가 존재한다. 이 기준선은 다른 선에 비해서 아래쪽으로 좀 더 삐져 나와있는 것을 확인할 수 있다.


그래서 이것을 이용해서 기준선의 두께를 기준으로 빈 공간은 0을 표현하고 검은 색은 1을 표현한다고 했으므로 이런식으로 해서 변환과정을 거치면 완료가 된다. 그래서 사진의 중간부분의 픽셀을 얻어내어서 검은색은 1로 표현하고, 흰색은 0으로 표현해서 길이에 맞게 데이터를 압축하는 방식으로 구현하였다.


일단은 Python으로 대강 짠 소스이기 때문에 인식이 많이 안되는 바코드 사진이 많이 존재하였다. 그러나 온라인으로 바코드를 생성할 수 있는 곳에서는 완벽하게 변환을 할 수 있는 것을 확인하였다. 아무래도 사진의 경우에는 완전한 평행이 아니여서 잘 작동하지 않은 것으로 보인다.


조금 더 업그레이드를 해서 기울어진 사진의 경우에도 바로 인식이 가능하도록 하는 알고리즘으로 변환할 필요가 있을 것 같다. 또한 이 기능을 안드로이드나 iOS에서까지로 확장을 시켜서 인식할 수 있도록 한다면 재미 있을 것 같다.



반응형