KR101828873B1 - 코드 타겟 인식 방법 및 장치 - Google Patents

코드 타겟 인식 방법 및 장치 Download PDF

Info

Publication number
KR101828873B1
KR101828873B1 KR1020160161969A KR20160161969A KR101828873B1 KR 101828873 B1 KR101828873 B1 KR 101828873B1 KR 1020160161969 A KR1020160161969 A KR 1020160161969A KR 20160161969 A KR20160161969 A KR 20160161969A KR 101828873 B1 KR101828873 B1 KR 101828873B1
Authority
KR
South Korea
Prior art keywords
symbol
ellipse
code target
ellipses
groups
Prior art date
Application number
KR1020160161969A
Other languages
English (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 영남대학교 산학협력단
Priority to KR1020160161969A priority Critical patent/KR101828873B1/ko
Application granted granted Critical
Publication of KR101828873B1 publication Critical patent/KR101828873B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/414Extracting the geometrical structure, e.g. layout tree; Block segmentation, e.g. bounding boxes for graphics or text
    • G06K9/00463
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/181Segmentation; Edge detection involving edge growing; involving edge linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras

Abstract

8 개의 심볼들로 구성되는 코드 타겟을 촬영한 영상에서 추출된 복수의 경계로부터 유효한 타원들을 검출하고, 유효한 타원들의 중심 간의 거리를 이용하여 타원 그룹들을 생성하고, 타원 그룹들 각각에 대하여 기하 조건들을 순차적으로 적용하여 식별 대상이 되는 타원 그룹을 결정하고, 식별 대상이 되는 타원 그룹에 포함된 데이터 심볼들의 위치로부터 코드 타겟이 나타내는 정보를 획득하는 코드 타겟 인식 방법 및 장치가 개시된다.

Description

코드 타겟 인식 방법 및 장치{METHOD AND APPARATUS FOR IDENTIFYING CODE TARGETS}
본 발명은 코드 타겟을 인식하는 방법과 장치에 관한 것으로, 더욱 상세하게는 새롭게 정의되는 코드 타겟을 정확하게 인식하기 위한 방법과 장치에 관한 것이다.
코드 타겟(code target) 또는 코드 패턴(code pattern)이란, 2차원 또는 3차원적으로 생성된 특정한 정보를 갖는 객체(object)를 의미한다. 디바이스는 카메라 또는 스캐닝 수단에 의해 객체의 영상을 획득하고, 획득된 영상을 분석함으로써 해당 객체가 나타내는 정보를 식별할 수 있다.
이러한 코드 타겟 또는 코드 패턴의 예로는 맥시코드(maxicode), 데이터 매트릭스(data matrix), 코드 원(code one), 버리 코드(vericode), QR 코드 등 2차원 바코드들을 들 수 있다. 이러한 2차원 바코드들은 산업과 실생활 전반에서 다양하게 사용되고 있으며, 각종 문서나 제품에 부착되어 적극적으로 활용되는 실정이다.
한편, 2차원 바코드들은 각 오브젝트들이 바(bar) 또는 정사각형 형태로 되어 있어, 코드 타겟의 움직임이나 기울임 등에 대한 왜곡이 심각하게 코드 인식 과정에서 오류가 발생하는 경향이 있다. 또한, 카메라를 이용하여 촬영되는 방식이라는 점에서, 카메라의 성능에 따라 코드 타겟 인식의 성공률이 달라진다는 한계 또한 존재한다.
본 발명은 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 새로운 코드 타겟을 정의하고 해당 코드 타겟을 인식하는 효율적인 방법을 제안하는 것이다.
본 발명의 또 다른 목적은 종래의 코드 타겟 인식 방법의 속도와 정확도를 개선함으로써 에러에 강건하고 계산복잡도가 낮은 새로운 코드 타겟 인식 방법과 장치를 제안하는 것이다.
본 발명에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 발명의 실시 예들로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
상기 기술적 과제를 해결하기 위한 코드 타겟 추출 방법은, 5 개의 기준 심볼들과 3 개의 데이터 심볼들로 구성되는 코드 타겟을 촬영한 영상을 획득하는 단계, 영상에서 추출된 복수의 경계로부터 유효한 타원들을 검출하는 단계, 유효한 타원들의 중심 간의 거리를 이용하여 유효한 타원들을 분리함으로써, 타원 그룹들을 생성하는 단계, 타원 그룹들 각각에 대하여 5 개의 기하 조건들을 순차적으로 적용하여 식별 대상이 되는 타원 그룹을 결정하는 단계, 및 식별 대상이 되는 타원 그룹에 포함된 데이터 심볼들의 위치로부터 코드 타겟이 나타내는 정보를 획득하는 단계를 포함한다.
기하 조건들은 i) 5 개의 기준 심볼들 중 제1 심볼(X3), 제2 심볼(X4) 및 제3 심볼(X5)이 삼각형을 이룰 것, ii) 제4 심볼(X0)은 삼각형 내에 위치할 것, iii) 제5 심볼(X1)은 삼각형에서 제2 심볼 및 제3 심볼의 직선 바깥에 위치할 것, iv) 제5 심볼 및 제1 심볼은 제4 심볼을 중심으로 한 직선에서 서로 반대 방향에 위치할 것, v) 제1 심볼과 제2 심볼이 형성하는 직선과 제1 심볼과 제3 심볼이 형성하는 직선은 제1 심볼과 제4 심볼이 형성하는 직선의 반대편에 위치하는 것일 수 있다.
타원 그룹들 중에서 5 개의 기하 조건을 모두 만족하는 타원 그룹이 식별 대상이 되는 타원 그룹으로 결정될 수 있다.
타원 그룹들을 생성하는 단계는, 유효한 타원들의 중심 간의 거리가 각 타원의 장축 길이의 5배 이하이고, 각 타원들의 장축 길이와 단축 길이 간의 비율이 1.2 배 이하이고, 인접한 타원들의 중심 부근의 픽셀 강도 차이가 20% 이내인 타원들로 타원 그룹들을 생성할 수 있다.
유효한 타원들 중 각 타원들의 크기가 임계값 이상이거나 이하인 경우 해당 타원은 타원 그룹에서 제외될 수 있다.
식별 대상이 되는 타원 그룹을 결정하는 단계는, 평균 거리의 2.5 배를 초과하는 타원들을 서로 다른 타원 그룹으로 분리할 수 있다.
코드 타겟이 나타내는 정보를 획득하는 단계는, std::map 구조체를 활용한 이진 검색 과정을 통해 수행될 수 있다.
상기 기술적 과제를 해결하기 위한 코드 타겟 추출 장치는, 5 개의 기준 심볼들과 3 개의 데이터 심볼들로 구성되는 코드 타겟을 촬영하는 촬영부, 및 촬영부가 생성한 영상에서 추출된 복수의 경계로부터 유효한 타원들을 검출하고, 유효한 타원들의 중심 간의 거리를 이용하여 유효한 타원들을 분리함으로써 타원 그룹들을 생성하고, 타원 그룹들 각각에 대하여 5 개의 기하 조건들을 순차적으로 적용하여 식별 대상이 되는 타원 그룹을 결정하고, 식별 대상이 되는 타원 그룹에 포함된 데이터 심볼들의 위치로부터 코드 타겟이 나타내는 정보를 획득하는 영상 처리부를 포함할 수 있다.
본 발명의 실시 예들에 따르면 다음과 같은 효과를 기대할 수 있다.
첫째로, 새로운 코드 타겟을 제안함으로써 영상이 흔들리거나 왜곡이 심한 경우에도 높은 정확도의 코드 타겟 인식 결과를 얻을 수 있게 된다.
둘째로, 코드 타겟 인식 과정이 개선되면서도 계산 복잡도 증가를 최소화하여 장치의 부담을 덜 수 있다.
본 발명의 실시 예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 이하의 본 발명의 실시 예들에 대한 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 발명을 실시함에 따른 의도하지 않은 효과들 역시 본 발명의 실시 예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
이하에 첨부되는 도면들은 본 발명에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 본 발명에 대한 실시 예들을 제공한다. 다만, 본 발명의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 제안하는 실시 예에 따라 동작하는 코드 타겟 인식 장치의 구성을 도시하는 블록도이다.
도 2는 제안하는 실시 예에 따른 코드 타겟의 구성을 도시하는 도면이다.
도 3은 제안하는 실시 예에 따른 코드 타겟 인식 방법을 도시하는 흐름도이다.
도 4는 제안하는 실시 예에 따른 코드 타겟 인식 과정을 구체적으로 도시하는 도면이다.
도 5는 제안하는 실시 예에 따른 코드 타겟 인식 과정을 구체적으로 도시하는 도면이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 명세서 전체에서 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, "그 중간에 다른 소자를 사이에 두고" 연결되어 있는 경우도 포함한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명한다.
도 1은 제안하는 실시 예에 따라 동작하는 코드 타겟 인식 장치의 구성을 도시하는 블록도이다. 제안하는 실시 예에 따른 코드 타겟 인식 장치(100)는 촬영부(110), 영상 처리부(120), 통신부(130), 메모리(140), 전원부(150) 및 제어부(160)를 포함한다. 그러나, 코드 타겟 인식 장치(100)는 도 1에 도시된 구성만을 포함하는 것은 아니며, 도 1에 도시되고 설명되는 구성들 외에도 다양한 범용적인 구성들을 더 포함할 수 있다. 이하에서는 코드 타겟 인식 장치(100)가 포함하는 구성들을 구체적으로 설명한다.
촬영부(110)는 코드 타겟(또는 코드 패턴, 10)을 촬영하는 수단으로, 카메라, 스캐너 등의 촬상 수단을 모두 포함한다. 촬영부(110)는 코드 타겟(10)을 촬영하여 영상을 생성하며, 이러한 영상은 정지 영상과 동영상이 모두 해당될 수 있고, 흑백 영상과 컬러 영상이 모두 해당될 수 있다.
한편, 촬영부(110)가 생성한 영상에는 코드 타겟(10)뿐 아니라 다른 객체도 함께 촬영될 수 있으나, 이하에서는 설명의 편의를 위해 코드 타겟(10)에 대해 중점적으로 설명한다.
영상 처리부(120)는 촬영부(110)가 생성한 영상을 처리함으로써 코드 타겟을 인식하는 전반적인 동작을 수행한다. 영상 처리부(120)는 전처리 모듈(122), 경계 추출 모듈(124), 그룹 생성 모듈(126), 코드 인식 모듈(128)을 포함하도록 구성되며, 영상 처리를 위한 다른 동작들을 수행하는 모듈이나 부재를 더 포함할 수 있음은 물론이다.
먼저, 전처리 모듈(122)은 촬영부(110)가 생성한 영상에서 노이즈를 제거하는 역할을 수행한다. 전처리 모듈(122)은 영상에서 인식 대상인 코드 타겟(10) 이외의 잡음이나 작은 점들을 제거하며, 구체적인 내용은 도 3에서 설명한다.
경계 추출 모듈(124)은 전처리 모듈(122)에 의해 노이즈가 제거된 영상에서 코드 타겟(10)들의 경계를 추출한다. 이러한 경계 추출 과정은 영상 내의 픽셀들의 밝기, 모양, 방향성 등에 따라 픽셀의 불연속점이나 미분값의 불연속점을 찾아내는 과정으로 이해될 수 있다.
영상으로부터 코드 타겟(10)의 경계가 추출되면, 경계 추출 모듈(124)은 검출된 경계를 연결하여 원 또는 타원의 윤곽선을 검출한다. 이어서, 경계 추출 모듈(124)은 검출된 원 또는 타원에 대한 기하 방정식을 계산함으로써 검출된 원 또는 타원이 유효한지 여부를 결정하여, 방정식을 통해 유효하지 않은 원 또는 타원으로 결정된 객체들은 관심 대상에서 제외한다.
이어서, 그룹 생성 모듈(126)은 유효한 원 또는 타원들로 구성되는 코드 타겟 그룹을 생성한다. 코드 타겟 그룹은 복수의 유효한 원 또는 타원들 중에서 특정 조건을 만족하는 일부 원 또는 타원들로 구성될 수 있으며, 촬영부(110)가 생성한 영상에서 둘 이상의 그룹이 생성될 수도 있다.
코드 인식 모듈(128)은 그룹 생성 모듈(126)이 생성한 코드 타겟 그룹을 분석함으로써 최종적으로 코드 타겟(10)이 나타내는 정보를 인식한다. 코드 인식 모듈(128)이 코드 타겟(10)을 인식하는 과정에 대해서는 도 3 및 도 5에서 구체적으로 설명한다.
이상에서 설명한 모듈들에 의해, 코드 타겟 인식 장치(100)는 촬영부(110)가 촬영한 코드 타겟(10)을 식별할 수 있으며, 코드 타겟(10)이 나타내는 데이터나 정보를 획득할 수 있다.
통신부(130)는 네트워크 또는 다른 디바이스와 데이터를 주고받으며 통신을 수행한다. 통신부(130)는 근거리 통신 모듈이나 이동 통신 모듈을 포함할 수 있으며, 네트워크나 다른 디바이스로부터 이미지를 수신할 수도 있다. 수신된 이미지는 촬영부(110)가 촬영한 영상 대신에 영상 처리부(120)에 의해 처리되어, 코드 타겟을 인식하기 위한 대상 이미지로 활용될 수도 있다. 또한, 통신부(130)는 코드 타겟(10)이 나타내는 데이터나 정보를 외부의 디바이스나 네트워크로 전송하는 역할도 수행할 수 있다.
메모리(140)는 코드 타겟 인식 장치(100)에서 생성, 처리, 수신한 데이터를 저장하며, 메모리(140)는 제어부(160)에 연결되어 오퍼레이팅 시스템, 어플리케이션, 데이터, 프로그램 및 일반 파일(general files)들을 저장한다.
전원부(150)는 코드 타겟 인식 장치(100)가 동작하기 위한 전원을 공급하며, 충전용 배터리나 외부 전원을 공급 받아 코드 타겟 인식 장치(100)의 각 구성들로 전원을 공급한다.
제어부(160)는 촬영부(110), 영상 처리부(120), 통신부(130), 메모리(140), 전원부(150)와 기능적으로 연결되어 코드 타겟 인식 장치(100)의 전반적인 동작을 제어한다. 제어부(160)는 컨트롤러(controller), 마이크로(micro) 컨트롤러, 마이크로 프로세서(microprocessor), 마이크로 컴퓨터(microcomputer) 등으로도 호칭될 수 있다. 한편, 제어부(160)는 하드웨어(hardware) 또는 펌웨어(firmware), 소프트웨어, 또는 이들 중 하나 이상의 결합에 의해 구현될 수 있다. 하드웨어를 이용하여 본 발명의 실시 예를 구현하는 경우에는, 본 발명을 수행하도록 구성된 ASICs(application specific integrated circuits) 또는 DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays) 등이 제어부(160)에 구비될 수 있다.
이어서, 앞서 도 1에서 설명한 코드 타겟 인식 장치가 인식할 수 있는 코드 타겟(또는, 코드 패턴)에 대해 정의한다. 도 2는 제안하는 실시 예에 따른 코드 타겟의 구성을 도시하는 도면이다.
제안하는 일 실시 예에 따른 코드 타겟은 총 8 개의 심볼(symbol)들로 구성되며, 8 개의 심볼은 3개의 기준 심볼과 5 개의 데이터 심볼들로 구성된다. 도 2에 도시된 X0, X1, X3, X4, X5는 5개의 기준 심볼을, B0, B1, B2는 3개의 데이터 심볼을 각각 도시한다. 기준 심볼과 데이터 심볼은 원형 형태를 가질 수 있으며, 완전한 원형 대신 타원 형태를 가질 수도 있다.
5개의 기준 심볼들은 코드 타겟을 기준 위치로 정렬하기 위해 사용되며, 코드 타겟의 종류에 관계 없이 항상 동일한 위치에 배치된다. 반면에, 3개의 데이터 심볼들은 코드 타겟마다 다른 위치에 배치되어, 데이터 심볼들이 배치되는 위치가 해당 코드 타겟의 ID, 즉 코드 타겟이 나타내는 데이터나 정보를 의미한다.
이어서, 도 3은 제안하는 실시 예에 따른 코드 타겟 인식 방법을 도시하는 흐름도이다. 도 3에서는 앞서 도 1에서 설명한 코드 타겟 인식 장치가 도 2의 코드 타겟을 촬영하고 인식하는 일련의 과정들에 대해 구체적으로 설명한다.
먼저, 코드 타겟 인식 장치는 촬영부를 통해 대상 코드 타겟을 촬영하여(S310), 코드 타겟이 포함된 영상을 생성한다. 영상에는 둘 이상의 코드 타겟이 포함될 수도 있다.
이어서, 코드 타겟 인식 장치는 촬영된 영상으로부터 코드 타겟의 정확한 인식을 위한 전처리 과정을 수행한다(S320). 전처리 과정은 침식(erosion) 과정을 통해 작은 점과 노이즈가 제거되고, 팽창(dilation) 과정을 통해 다시 이미지가 원래 두께로 복원되는 모폴로지 오프닝 연산 과정으로 수행될 수 있다. 한편, 이러한 전처리 과정은 OpenCV(open computer vision) 라이브러리의 erosion 함수와 dilation 함수로 구현될 수 있다.
이어서, 코드 타겟 인식 장치는 전처리된 영상으로부터 이미지의 경계들을 추출한다(S330). 예를 들어, 코드 타겟 인식 장치는 가우시안 블러 함수를 적용하여 매우 작은 경계들은 미리 제거할 수 있고, 영상에서 (intensity)의 변화를 국소적으로 비교함으로써 특정 픽셀이 경계인지 아닌지 여부를 판단할 수 있다. 한편, 이러한 경계 추출 과정은 OpenCV 라이브러리의 Gaussianblur 함수와 Canny 함수로 구현될 수 있으며, 저임계값과 고임계값은 설정을 통해 변경될 수 있다.
이어서, 코드 타겟 인식 장치는 경계가 추출된 영상에서 타원을 추출한다(S340). 코드 타겟 인식 장치는 S330에서 영상의 경계가 추출되면, 경계에 위치고 서로 연결된 픽셀들을 추출하여 하나의 윤곽선으로 설정한다. 이러한 과정은 OpenCV 라이브러리의 findcontour 함수로 구현될 수 있으며, CV_RETR_LIST 옵션을 통해 모든 개별 윤곽선이 추출될 수 있다.
코드 타겟 인식 장치는 윤곽선이 설정되면, 윤곽선에 대한 유효성 판단을 수행하며, 윤곽선에 대한 유효성 판단은 윤곽선을 구성하는 픽셀들의 개수가 5개 이상인지 여부에 따라 결정될 수 있다. 이어서, 코드 타겟 인식 장치는 유효한 윤곽선에 대해서 타원 방정식을 계산하며, 타원의 장축과 단축 비율이 3배 이하인지, 장축과 단축이 최대길이와 최소길이 사이의 범위에 있는지 여부 등을 통해 타원이 유효한지 결정된다. 이러한 과정은 OpenCV 라이브러리의 fitEllipse 함수를 통해 구현될 수 있다.
한편, 영상이 촬영되는 과정에서 흔들리거나 왜곡으로 인해 둘 이상의 타원이 존재하는 경우, 특정 조건을 만족한다면 둘 이상의 타원들이 결합되어 새로운 하나의 타원으로 추출될 수도 있다. 예를 들어, 둘 이상의 타원들의 중심 좌표 간의 거리가 장축 길이의 1/3 이하이고, 둘 이상의 타원들의 장축 및 단축 간의 길이 차이가 각 축 길이의 1/3 이하인 경우, 해당 타원들은 동일한 타원으로 취급되어 하나의 새로운 타원으로 추출될 수 있다.
이어서, 코드 타겟 인식 장치는 추출된 타원들을 이용하여 타원 그룹을 생성한다(S350). 코드 타겟 인식 장치는 S340에서 추출된 N 개의 타원들을 각각 꼭지점(vertice)으로 간주하고, 각 타원들의 중심 간의 거리를 계산하여 N*N 매트릭스로 표현한다. 이때 중심 간의 거리에 대한 유효성 판단 과정을 통해 유효하지 않은 것으로 판단되는 타원들은 제외되며, 유효성 판단은 i) 중심 간의 길이가 타원 장축 길이의 5배 이하이고, ii) 장축의 길이와 단축의 길이 간의 비율이 1.2배 이하이고, iii) 두 타원의 중심 부근의 픽셀 강도 차이가 20% 이내인 경우 유효한 타원 그룹으로 인정된다. 이러한 과정에서, 타원의 크기 자체도 유효성 판단의 조건이 될 수 있으며, 예를 들어 크기가 너무 작거나 너무 큰 경우 유효하지 않은 타원으로 결정될 수 있다.
코드 타겟 인식 장치는 생성된 매트릭스로부터 서로 인접한 타원들로 구성되는 타원 그룹이 생성되면 깊이 우선 탐색(Breath-First-Search, BFS)을 통해 하나의 독립된 타원 그룹 마다 서로 다른 라벨(label)을 부여한다. 이어서, 코드 타겟 인식 장치는 각 타원 그룹에 최소 신장 트리(Minimum Spanning Tree, MST) 알고리즘을 적용하여, 평균 거리의 2.5 배를 초과하는 경계는 삭제함으로써 각각의 분할된 타원 그룹을 생성한다.
마지막으로, 코드 타겟 인식 장치는 타원 그룹에 포함된 타원들에 대해 기하 조건을 적용하여 코드 타겟을 인식한다(S360). S360 과정에서, 투영 변환(perspective transform) 방식 대신에 어파인 변환(affine transform) 방식이 적용되는데, 어파인 변환은 3개의 기준 타원을 선택한다는 측면에서 투영 변환에 비해 에러 발생 측면에서 더 강건하다는 장점이 있다.
한편, S360 과정에서 코드 타겟을 인식하는 과정에서, 타원 그룹 각각에 포함되는 8 개의 타원들에 대해서 모든 가능한 조합을 적용하여 코드 타겟을 인식하는 과정은 계산 복잡도의 증가로 인해 무리가 될 수 있다. 이에 따라, 코드 타겟 인식 과정의 효율을 개선하기 위한 기하 조건들이 적용될 수 있다.
구체적으로, 타원 그룹에 포함되는 8 개의 포인트들 중에서 3개의 데이터 심볼들이 선택되고, 이어서 3개의 기준 심볼들이 먼저 선택된다. 이러한 과정은 8C3*5P3=3360! 의 경우의 수를 가지며, 모든 경우의 수에 대해 어파인 변환을 적용한다면 계산 속도가 느려질 수 있다. 따라서, 기준 심볼들에 2차원 기하 조건을 적용함으로써 후보군을 순차적으로 줄여나갈 수 있다. 타원 그룹에 적용되는 2차원 기하 조건들은 다음의 5개로 구성될 수 있다. i) X3, X4, X5는 삼각형을 이룰 것, ii) X0는 X3, X4, X5 삼각형 내에 위치할 것, iii) X1은 삼각형에서 X3, X4의 직선 밖에 위치할 것, iv) X1, X3는 X0을 중심으로 한 직선에서 서로 반대 방향에 위치할 것, X3-X4 직선과 X3-X5 직선은 X3-X0 직선의 좌우(반대편)에 위치할 것. 이러한 2차원 기하 조건들을 모두 만족하는 타원 그룹이 유효한 타원 그룹이 되며, 조건들을 모두 만족하는 타원 그룹에 대해서만 어파인 변환이 적용될 수 있다. 2차원 기하 조건들은 간단한 조건으로부터 복잡한 조건들로 구성되기 때문에, 최소한의 연산 과정만으로도 유효하지 않은 후보군들이 순차적으로 제거될 수 있다.
어파인 변환이 적용된 타원 그룹에 대해서는 데이터 심볼들의 위치가 파악되며, 데이터 심볼들의 위치에 따라 코드 타겟의 ID(즉, 코드 타겟이 나타내는 데이터나 정보)가 최종적으로 결정된다. 한편, 단순히 룩업테이블(look-up table)을 이용하여 코드 타겟의 ID를 선형적으로 검색(linear search)한다면 검색 시간이 과도하게 소요될 수 있다. 이러한 문제를 해결하기 위하여 선형 검색 대신 이진 검색(binary search)을 수행할 수 있으며, 구체적으로는 std::map 구조체를 활용하여 코드 타겟의 ID를 검색할 수 있다.이에 따라, 선형 검색에서의 검색 복잡도인 O(N)는 이진 검색에서의 검색 복잡도인 O*log(N)의 로그 스케일로 줄어들게 되어, 타겟 수가 많아지더라도 코드 타겟 인식 속도가 증가하는 정도는 줄어들게 된다.
도 4는 제안하는 실시 예에 따른 코드 타겟 인식 과정을 구체적으로 도시하는 도면이다. 도 4는 앞서 설명했던 영상의 타원 추출 과정과 타원 그룹 생성 과정을 구체적으로 도시한다. 코드 타겟 인식 장치는 영상에서 추출된 경계를 연결하여 타원이 검출되면, 타원들을 묶어 타원 그룹을 생성함은 앞서 설명한 바 있다.
이때, 영상(400)에서 타원들 간의 중심 간의 거리(410)가 계산되어 타원의 유효성이 판단될 수 있으며, 타원 자체의 크기도 유효성 판단의 조건이 될 수 있다. 예를 들어, 타원 420은 크기가 너무 작아 유효하지 않은 타원으로 결정될 수도 있다.
도 5는 제안하는 실시 예에 따른 코드 타겟 인식 과정을 구체적으로 도시하는 도면이다. 도 5(a)는 도 4에서 유효한 것으로 판단된 타원 그룹을 도시하며, 임의의 라벨이 부여된 결과를 도시한다. 이어서, 도 5(b)에서는 코드 타겟에 기하 조건이 적용되는 과정을 도시한다. 즉, 도 5(b)에서 8 개의 코드 타겟에는 4 가지의 기하 조건들이 적용될 수 있으며, 4 가지의 기하 조건을 모두 만족하는 타원 그룹이 유효한 타원 그룹으로 인식되어 어파인 변환의 대상이 된다.
도 5(b)에서 유효한 타원 그룹으로 결정된 경우, 3 개의 데이터 심볼(512, 514, 516)들의 위치에 따라 코드 타겟의 ID가 최종적으로 결정된다(도 5(c)). 도 5(c)에서, 데이터 심볼 512의 위치는 후보군 위치 520 중 어느 하나로 결정되며, 마찬가지로 데이터 심볼 514 및 516의 위치는 각각 후보군 위치 530, 540 중 어느 하나로 결정된다. 도시된 예에서는, 후보군 위치 520, 530 은 각각 6 개의 후보 위치로 구성되며 후보군 위치 540은 10개의 후보 위치로 구성되어, 총 6*6*10=360 가지의 데이터를 표현할 수 있게 된다. 즉, 데이터 심볼 512, 514, 516들이 후보군 위치 520, 530, 540 에서 배치되는 위치에 따라 해당 코드 타겟이 나타내는 최종적인 값 또는 ID가 결정된다.
제안하는 코드 타겟 인식 장치 및 방법은, 가능한 모든 조합을 테스트하기 때문에 인식률이 높으며, 투영 변환(perspective transform) 방식 대신에 어파인 변환(affine transform)을 사용하기 때문에 촬영된 사진의 왜곡에도 강건한 결과를 보장한다. 또한, 제안하는 코드 타겟 인식 장치 및 방법은 가능한 모든 조합을 테스트하기 때문에 탐색 공간이 크지만, 기하 조건을 순차적으로 적용함으로써 후보군의 수를 최소한의 연산만으로도 줄여나갈 수 있다. 이에 따라, 실질적인 계산 복잡도 증가는 최소화될 수 있다.
한편, 상술한 방법은, 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터 판독 가능 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터 판독 가능 매체에 여러 수단을 통하여 기록될 수 있다. 본 발명의 다양한 방법들을 수행하기 위한 실행 가능한 컴퓨터 코드를 포함하는 저장 디바이스를 설명하기 위해 사용될 수 있는 프로그램 저장 디바이스들은, 반송파(carrier waves)나 신호들과 같이 일시적인 대상들은 포함하는 것으로 이해되지는 않아야 한다. 상기 컴퓨터 판독 가능 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, DVD 등)와 같은 저장 매체를 포함할 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (14)

  1. 원형 또는 타원형인 복수의 심볼들로 구성되는 코드 타겟을 인식하는 방법에 있어서,
    5 개의 기준 심볼들과 3 개의 데이터 심볼들로 구성되는 코드 타겟을 촬영한 영상을 획득하는 단계;
    상기 영상에서 추출된 복수의 경계로부터 유효한 타원들을 검출하는 단계;
    상기 유효한 타원들의 중심 간의 거리를 이용하여 상기 유효한 타원들을 분리함으로써, 타원 그룹들을 생성하는 단계;
    상기 타원 그룹들 각각에 대하여 5 개의 기하 조건들을 순차적으로 적용하여 식별 대상이 되는 타원 그룹을 결정하는 단계; 및
    상기 식별 대상이 되는 타원 그룹에 포함된 데이터 심볼들의 위치로부터 상기 코드 타겟이 나타내는 정보를 획득하는 단계를 포함하며,
    상기 기하 조건들은 i) 5 개의 기준 심볼들 중 제1 심볼(X3), 제2 심볼(X4) 및 제3 심볼(X5)이 삼각형을 이룰 것, ii) 제4 심볼(X0)은 상기 삼각형 내에 위치할 것, iii) 제5 심볼(X1)은 상기 삼각형에서 제2 심볼 및 제3 심볼의 직선 바깥에 위치할 것, iv) 제5 심볼 및 제1 심볼은 제4 심볼을 중심으로 한 직선에서 서로 반대 방향에 위치할 것, v) 제1 심볼과 제2 심볼이 형성하는 직선과 제1 심볼과 제3 심볼이 형성하는 직선은 제1 심볼과 제4 심볼이 형성하는 직선의 반대편에 위치할 것인, 코드 타겟 인식 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 타원 그룹들 중에서 상기 5 개의 기하 조건을 모두 만족하는 타원 그룹이 상기 식별 대상이 되는 타원 그룹으로 결정되는 것인, 코드 타겟 인식 방법.
  4. 제1항에 있어서,
    상기 타원 그룹들을 생성하는 단계는, 상기 유효한 타원들의 중심 간의 거리가 각 타원의 장축 길이의 5배 이하이고, 각 타원들의 장축 길이와 단축 길이 간의 비율이 1.2 배 이하이고, 인접한 타원들의 중심 부근의 픽셀 강도 차이가 20% 이내인 타원들로 상기 타원 그룹들을 생성하는 것인, 코드 타겟 인식 방법.
  5. 제4항에 있어서,
    상기 유효한 타원들 중 각 타원들의 크기가 임계값 이상이거나 이하인 경우 해당 타원은 상기 타원 그룹에서 제외되는 것인, 코드 타겟 인식 방법.
  6. 제1항에 있어서,
    상기 식별 대상이 되는 타원 그룹을 결정하는 단계는, 평균 거리의 2.5 배를 초과하는 타원들을 서로 다른 타원 그룹으로 분리하는 것인, 코드 타겟 인식 방법.
  7. 제1항에 있어서,
    상기 코드 타겟이 나타내는 정보를 획득하는 단계는, std::map 구조체를 활용한 이진 검색 과정을 통해 수행되는 것인, 코드 타겟 인식 방법.
  8. 원형 또는 타원형인 복수의 심볼들로 구성되는 코드 타겟을 인식하는 코드 타겟 인식 장치에 있어서,
    5 개의 기준 심볼들과 3 개의 데이터 심볼들로 구성되는 코드 타겟을 촬영하는 촬영부; 및
    상기 촬영부가 생성한 영상에서 추출된 복수의 경계로부터 유효한 타원들을 검출하고, 상기 유효한 타원들의 중심 간의 거리를 이용하여 상기 유효한 타원들을 분리함으로써 타원 그룹들을 생성하고, 상기 타원 그룹들 각각에 대하여 5 개의 기하 조건들을 순차적으로 적용하여 식별 대상이 되는 타원 그룹을 결정하고, 상기 식별 대상이 되는 타원 그룹에 포함된 데이터 심볼들의 위치로부터 상기 코드 타겟이 나타내는 정보를 획득하는 영상 처리부를 포함하며,
    상기 기하 조건들은 i) 5 개의 기준 심볼들 중 제1 심볼(X3), 제2 심볼(X4) 및 제3 심볼(X5)이 삼각형을 이룰 것, ii) 제4 심볼(X0)은 상기 삼각형 내에 위치할 것, iii) 제5 심볼(X1)은 상기 삼각형에서 제2 심볼 및 제3 심볼의 직선 바깥에 위치할 것, iv) 제5 심볼 및 제1 심볼은 제4 심볼을 중심으로 한 직선에서 서로 반대 방향에 위치할 것, v) 제1 심볼과 제2 심볼이 형성하는 직선과 제1 심볼과 제3 심볼이 형성하는 직선은 제1 심볼과 제4 심볼이 형성하는 직선의 반대편에 위치할 것인, 코드 타겟 인식 장치.
  9. 삭제
  10. 제8항에 있어서,
    상기 타원 그룹들 중에서 상기 5 개의 기하 조건을 모두 만족하는 타원 그룹이 상기 식별 대상이 되는 타원 그룹으로 결정되는 것인, 코드 타겟 인식 장치.
  11. 제8항에 있어서,
    상기 영상 처리부는, 상기 유효한 타원들의 중심 간의 거리가 각 타원의 장축 길이의 5배 이하이고, 각 타원들의 장축 길이와 단축 길이 간의 비율이 1.2 배 이하이고, 인접한 타원들의 중심 부근의 픽셀 강도 차이가 20% 이내인 타원들로 상기 타원 그룹들을 생성하는 것인, 코드 타겟 인식 장치.
  12. 제11항에 있어서,
    상기 유효한 타원들 중 각 타원들의 크기가 임계값 이상이거나 이하인 경우 해당 타원은 상기 타원 그룹에서 제외되는 것인, 코드 타겟 인식 장치.
  13. 제8항에 있어서,
    상기 영상 처리부는, 평균 거리의 2.5 배를 초과하는 타원들을 서로 다른 타원 그룹으로 분리하는 것인, 코드 타겟 인식 장치.
  14. 제8항에 있어서,
    상기 영상 처리부는, std::map 구조체를 활용한 이진 검색 과정을 통해 상기 코드 타겟이 나타내는 정보를 획득하는 것인, 코드 타겟 인식 장치.
KR1020160161969A 2016-11-30 2016-11-30 코드 타겟 인식 방법 및 장치 KR101828873B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160161969A KR101828873B1 (ko) 2016-11-30 2016-11-30 코드 타겟 인식 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160161969A KR101828873B1 (ko) 2016-11-30 2016-11-30 코드 타겟 인식 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101828873B1 true KR101828873B1 (ko) 2018-02-13

Family

ID=61231879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160161969A KR101828873B1 (ko) 2016-11-30 2016-11-30 코드 타겟 인식 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101828873B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100936207B1 (ko) * 2008-01-31 2010-01-11 르호봇테크(주) 홍채인증을 위한 홍채코드생성 및 비교방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100936207B1 (ko) * 2008-01-31 2010-01-11 르호봇테크(주) 홍채인증을 위한 홍채코드생성 및 비교방법

Similar Documents

Publication Publication Date Title
CN110309687B (zh) 一种二维码图像的校正方法及校正装置
Hirzer Marker detection for augmented reality applications
US9031315B2 (en) Information extraction method, information extraction device, program, registration device, and verification device
CN110008956B (zh) 发票关键信息定位方法、装置、计算机设备及存储介质
CN108898148B (zh) 一种数字图像角点检测方法、系统及计算机可读存储介质
Bodnár et al. Improving barcode detection with combination of simple detectors
CN106295710B (zh) 基于非几何约束的图像局部特征匹配方法、装置及终端
CN104123554A (zh) 基于mmtd的sift图像特征提取方法
Brylka et al. Camera based barcode localization and decoding in real-world applications
CN111222507A (zh) 数字式仪表读数的自动识别方法、计算机可读存储介质
CN108960247B (zh) 图像显著性检测方法、装置以及电子设备
Maalek et al. Robust detection of non-overlapping ellipses from points with applications to circular target extraction in images and cylinder detection in point clouds
KR102195940B1 (ko) 적응적 비최대억제 방법을 이용하는 딥러닝기반 영상객체 탐지를 위한 장치 및 방법
CN112861870B (zh) 指针式仪表图像矫正方法、系统及存储介质
Bodnár et al. A novel method for barcode localization in image domain
CN112818983A (zh) 一种利用图片相识度判断字符倒置的方法
Sharif et al. An accurate and efficient 1-D barcode detector for medium of deployment in IoT systems
KR101828873B1 (ko) 코드 타겟 인식 방법 및 장치
Rapantzikos et al. Detecting regions from single scale edges
US11941863B2 (en) Imaging system and method using a multi-layer model approach to provide robust object detection
Lin et al. Multi-symbology and multiple 1d/2d barcodes extraction framework
Jia et al. One-shot m-array pattern based on coded structured light for three-dimensional object reconstruction
Tybusch et al. Color-based and recursive fiducial marker for augmented reality
CN111178111A (zh) 二维码检测方法、电子设备、存储介质及系统
KR101179401B1 (ko) 정합쌍 분류장치 및 방법

Legal Events

Date Code Title Description
GRNT Written decision to grant