달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
질문자 : oskal_f_j  링크 : http://cafe.naver.com/winmodev/637
<질문내용>

옴니아에서 QRCode 리더 어플을 짜는데 너무 어렵네여..

 

카메라 API를 이용해서(SimpleCamera 참고) 넘어오는 이미지를

유명한 코드프로젝트 C#용 QRCode 라이브러리 http://www.codeproject.com/KB/cs/qrcode.aspx 

로 디코딩했습니다.

 

헌데 인식률이 너무 떨어지네여. 속도도 느리구요.

구글링해서 찾은 프로그램은 찍지 않아도 실시간으로 상당히 빠르게 분석하네요.

 

한가지 알게 된것 카메라로 찍은 이미지에 여러가지 영상처리를 해주고 나서

디코딩 알고리즘에 그 이미지 데이터를 넣어야 하는 것 같더군여.

 

영상처리를 어떻게 하면 될까요. 자료를 찾는데 너무 힘드네여.

시간은 없고, 걱정입니다.

<답변내용>

영상처리는 하나의 학문으로 분리될 정도로 방대한 양을 자랑하는 분야 입니다
대학때 이부분에 대해서 논문을 썼었는데요....

일단 카메라로 입력되는 영상의 2차원 바코드를 인식하기 위해서는
주변의 조명과, 인식하려는 이미지의 각도, 방향 등 고려해야 할 부분들이 많습니다

좀더 살펴봐야겠지만, Encoder로 생성한 2차원 바코드에 인위적으로 조명이라 가정하고 영상에 노이즈를 추가한 뒤 Decoder로 확인을 해보니, 바로 인식을 할 수 없더군요

내부적으로도 패턴을 찾는 부분이 있긴 하지만, 이대로는 그냥 쓰기에는 너무 느린감이 없잖아 있네요

이 라이브러리는 Decoding 하기 전 단계에 2차원 바코드가 최대한 정확하게 인식이 되어 있는 상태에서만 Decode가 가능한 라이브러리 입니다

질문 내용에 말씀하셨듯이 카메라 입력영상에 따른 영상처리를 전처리 작업을 진행해야 합니다
우선적으로 영상처리에 가장 근본인 Morphology와, 조명에 따른 영상보정인 평활화 같은 기법이 필요하고
옴냐 카메라 영상은 RGB값으로 넘어오기 때문에 이것을 흑백으로 분리하고, 2차원 바코드의 위치를 정확하게 분리하는
페턴기법이나, 레이블링 기법으로 후보영역을 분리해야 할 것 입니다.

위에 적은 내용이 논문에서 썼던 방법들이라 좀 복잡한 부분이 많은데요

대부분은 입력되는 카메라 영상을 실시간으로 분석해서 2차원 바코드를 발견시(Ex : 패턴인식) 후보영역으로 등록 후(Ex : 레이블링), 조명보정(Ex : 평활화 등등)를 거쳐, 바코드 인식 라이브러리에 입력이 되는 것 입니다

이러한 부분들을 직접 구현하신다면 무척이나 오래걸리고 어려우실 겁니다
제가 알기로는 OpenCV중에서 WinCE용으로 나온 것이 있다 듣긴 하였지만, 확실하지는 않네요

일단 영상처리를 할 수 있는 라이브러리를 구하셔서 전처리 후 2차원 바코드 Decode 작업을 하셔야 할 것 같네요

 

 작성일 :

보다 자세한 정보는 윈도우 폰/모바일 개발자 모임에서 만나보실 수 있습니다
:
Posted by Lunaness