KR102340125B1 - 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 - Google Patents
드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 Download PDFInfo
- Publication number
- KR102340125B1 KR102340125B1 KR1020190137314A KR20190137314A KR102340125B1 KR 102340125 B1 KR102340125 B1 KR 102340125B1 KR 1020190137314 A KR1020190137314 A KR 1020190137314A KR 20190137314 A KR20190137314 A KR 20190137314A KR 102340125 B1 KR102340125 B1 KR 102340125B1
- Authority
- KR
- South Korea
- Prior art keywords
- image
- feature point
- output
- unit
- contrast
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 239000011159 matrix material Substances 0.000 claims description 114
- 230000008569 process Effects 0.000 claims description 84
- 239000013598 vector Substances 0.000 claims description 83
- 238000001514 detection method Methods 0.000 claims description 70
- 239000000872 buffer Substances 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 35
- 238000001914 filtration Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000009825 accumulation Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 7
- 238000005070 sampling Methods 0.000 claims description 6
- 238000012937 correction Methods 0.000 claims description 4
- 238000003706 image smoothing Methods 0.000 claims description 4
- 238000012790 confirmation Methods 0.000 claims description 2
- 230000007717 exclusion Effects 0.000 claims description 2
- 230000001174 ascending effect Effects 0.000 claims 1
- 230000015556 catabolic process Effects 0.000 abstract description 5
- 238000006731 degradation reaction Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 239000010426 asphalt Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 238000005311 autocorrelation function Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B64—AIRCRAFT; AVIATION; COSMONAUTICS
- B64D—EQUIPMENT FOR FITTING IN OR TO AIRCRAFT; FLIGHT SUITS; PARACHUTES; ARRANGEMENT OR MOUNTING OF POWER PLANTS OR PROPULSION TRANSMISSIONS IN AIRCRAFT
- B64D47/00—Equipment not otherwise provided for
- B64D47/08—Arrangements of cameras
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/04—Control of altitude or depth
- G05D1/042—Control of altitude or depth specially adapted for aircraft
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Aviation & Aerospace Engineering (AREA)
- Multimedia (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Image Analysis (AREA)
Abstract
본 발명은 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법을 개시한다. 즉, 본 발명은 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행함으로써, 성능 저하가 없으면서도 간소화를 통해 복잡도를 줄일 수 있다.
Description
본 발명은 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법에 관한 것으로서, 특히 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법에 관한 것이다.
최근 드론은 군사용 외에 산업용, 학술용, 레저용 등 다양한 분야에서 활용되며 그 수요가 급증하고 있다.
상기 드론은 분야별로 목적에 따라 다양한 환경에 활용될 수 있는데, 드론을 실외에서 사용할 경우 위성 항법 장치(Global Positioning System: GPS)를 활용하여 정확한 호버링(hovering)이 가능하다.
하지만, 실내에서 사용할 경우, GPS 신호의 수신이 어렵고, 실내 구조물에 의한 장애물이 많아 안정적인 비행에 어려움이 존재한다.
따라서, 실내에서 드론을 제어할 경우, 여러 동작의 안정성과 실험자 및 기체의 안전을 위해 자체적인 정지 비행 기술이 필요하다.
본 발명의 목적은 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법을 제공하는 데 있다.
본 발명의 다른 목적은 특징점 검출과 특징점 추적 알고리즘에 공통으로 사용되는 연산 기능을 공유하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 모션 벡터 값을 구하는 과정에서 연산 특성을 고려한 효율적인 나눗셈기를 제공하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법을 제공하는 데 있다.
본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 장치는 드론으로부터 획득되는 연속된 복수의 이미지를 임시 저장하는 프레임 버퍼; 상기 프레임 버퍼를 포함하는 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드 또는 특징점 추적 모드로 설정하는 제어부; 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 제 1 먹스; 상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 헤시안 행렬 연산부(Hessian-matrix calculation unit); 상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 특징점 검출부; 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 제 2 먹스; 및 상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 상기 특징점 추적부를 포함할 수 있다.
본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 방법은 프레임 버퍼에 의해, 드론으로부터 획득되는 연속된 복수의 이미지를 임시 저장하는 단계; 제어부에 의해, 상기 제어부를 포함하는 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드로 설정하는 단계; 제 1 먹스에 의해, 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 단계; 헤시안 행렬 연산부에 의해, 상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 단계; 특징점 검출부에 의해, 상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 단계; 상기 제어부에 의해, 상기 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드에서 특징점 추적 모드로 변환하는 단계; 제 2 먹스에 의해, 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 단계; 및 상기 특징점 추적부에 의해, 상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 장치는 미리 설정된 개수 단위의 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 제 1 먹스; 상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 헤시안 행렬 연산부; 상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 특징점 검출부; 상기 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 제 2 먹스; 및 상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 상기 특징점 추적부를 포함할 수 있다.
본 발명은 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행함으로써, 성능 저하가 없으면서도 간소화를 통해 복잡도를 줄일 수 있는 효과가 있다.
또한, 본 발명은 특징점 검출과 특징점 추적 알고리즘에 공통으로 사용되는 연산 기능을 공유함으로써, 저전력 및 저면적으로도 우수한 추적 성능 지원이 가능할 수 있는 효과가 있다.
또한, 본 발명은 모션 벡터 값을 구하는 과정에서 연산 특성을 고려한 효율적인 나눗셈기를 제공함으로써, 기존의 나눗셈기 대신 연산량을 줄여 효율적인 시스템 운영이 가능한 효과가 있다.
도 1 및 도 2는 본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 장치의 구성을 나타낸 블록도이다.
도 3은 본 발명의 실시예에 따른 PLK 알고리즘의 예를 나타낸 도이다.
도 4는 본 발명의 실시예에 따른 가우시안 필터의 구성을 나타낸 블록도이다.
도 5는 본 발명의 실시예에 따른 영역 확인부의 구성을 나타낸 블록도이다.
도 6은 본 발명의 실시예에 따른 보간부의 구성을 나타낸 블록도이다.
도 7은 본 발명의 실시예에 따른 윈도우 영역 추출기의 구성을 나타낸 블록도이다.
도 8은 본 발명의 실시예에 따른 보간 계산기의 구성을 나타낸 블록도이다.
도 9는 본 발명의 실시예에 따른 모션 벡터 연산부의 구성을 나타낸 블록도이다.
도 10은 본 발명의 실시예에 따른 디바이더 유닛의 동작 순서를 나타낸 흐름도이다.
도 11은 본 발명의 실시예에 따른 실험에 사용된 DJI phantom4 drone을 나타낸 도이다.
도 12 내지 도 14는 본 발명의 실시예에 따른 드론으로 획득한 하방 영상과 관련한 예를 나타낸 도이다.
도 15 내지 도 17은 본 발명의 실시예에 따른 각 실험 환경에서의 영상 기반 특징점 추적 장치의 출력을 누적시킨 결과와 GPS 좌표정보를 기반으로 획득한 이동경로의 비교 예를 나타낸 도이다.
도 18은 본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 방법을 나타낸 흐름도이다.
도 3은 본 발명의 실시예에 따른 PLK 알고리즘의 예를 나타낸 도이다.
도 4는 본 발명의 실시예에 따른 가우시안 필터의 구성을 나타낸 블록도이다.
도 5는 본 발명의 실시예에 따른 영역 확인부의 구성을 나타낸 블록도이다.
도 6은 본 발명의 실시예에 따른 보간부의 구성을 나타낸 블록도이다.
도 7은 본 발명의 실시예에 따른 윈도우 영역 추출기의 구성을 나타낸 블록도이다.
도 8은 본 발명의 실시예에 따른 보간 계산기의 구성을 나타낸 블록도이다.
도 9는 본 발명의 실시예에 따른 모션 벡터 연산부의 구성을 나타낸 블록도이다.
도 10은 본 발명의 실시예에 따른 디바이더 유닛의 동작 순서를 나타낸 흐름도이다.
도 11은 본 발명의 실시예에 따른 실험에 사용된 DJI phantom4 drone을 나타낸 도이다.
도 12 내지 도 14는 본 발명의 실시예에 따른 드론으로 획득한 하방 영상과 관련한 예를 나타낸 도이다.
도 15 내지 도 17은 본 발명의 실시예에 따른 각 실험 환경에서의 영상 기반 특징점 추적 장치의 출력을 누적시킨 결과와 GPS 좌표정보를 기반으로 획득한 이동경로의 비교 예를 나타낸 도이다.
도 18은 본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 방법을 나타낸 흐름도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1 및 도 2는 본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 장치(10)의 구성을 나타낸 블록도이다.
도 1 및 도 2에 도시한 바와 같이, 드론 정지 비행을 위한 영상 기반 특징점 추적 장치(10)는 프레임 버퍼(100), 제 1 먹스(200), 헤시안 행렬 연산부(300), 특징점 검출부(400), 제 2 먹스(500), 특징점 추적부(600), 메모리(700) 및 제어부(800)로 구성된다. 도 1 및 도 2에 도시된 영상 기반 특징점 추적 장치(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1 및 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 영상 기반 특징점 추적 장치(10)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 영상 기반 특징점 추적 장치(10)가 구현될 수도 있다.
드론(drone)의 호버링(hovering, 정지 비행) 기술에는 IMU 센서 기반 방식, 레이더 기반 방식, 영상 기반 방식 등이 적용될 수 있다.
이 중 드론의 동체에 탑재된 하방 카메라 모듈을 활용한 영상 기반 호버링 방식은 레이더 등의 여타 능동적 센서 기반 방식들과 달리 전력 소모, 탑재 중량이 적으면서도 우수한 성능을 지원 가능하기 때문에 소형 기체인 드론에 적용하기 용이하다.
상기 영상 기반 호버링 방식은 드론으로부터 취득한 하방 영상을 통해 드론의 움직임을 추적한 후, 추적된 움직임만큼 보정하는 방식으로 호버링을 수행한다.
이에 하방 영상 정보를 활용하여 드론의 움직임을 정확히 추적하는 것은 호버링 기능 지원에 있어 필수적인 요소라 할 수 있다.
이러한 영상 기반 호버링 방식에 대표적으로 활용되는 알고리즘으로 블록 매칭 알고리즘(block matching algorithm), 특징 기술자 매칭 알고리즘(feature descriptor matching algorithm), KLT(Kanade Lucas Tomasi) 특징 추적 알고리즘 등이 존재한다.
이 중, KLT 특징 추적 알고리즘은 영상 내 모든 픽셀에 대해 움직임을 추정하게 되면 입력 영상의 해상도에 따라 연산량이 기하급수적으로 증가하기 때문에, 영상 내 주요한 특징점을 찾는 검출(detection, 추출) 과정과 연속된 영상에서 검출된 특징점의 변위를 계산하는 추적(tracking) 과정으로 나뉜다. 각 과정마다 다양한 알고리즘이 존재한다.
상기 영상 기반 특징점 추적 장치(10)는 검출 과정에서 좋은 성능을 나타내는 Shi-Tomasi 알고리즘을 적용하고, 추적 과정에서 좋은 성능을 나타내는 PLK(Pyramidal Lucas-Kanade) 알고리즘을 적용한다.
여기서, 상기 Shi-Tomasi 알고리즘은 추적 과정에서 사용되는 행렬의 고윳값이 큰 지점을 특징점으로 선별하는 방법으로 추적에 유리한 지점을 특징점으로 검출한다.
즉, 상기 Shi-Tomasi 알고리즘은 전체 명암 영상에서 특징점이 될 작은 크기의 이미지 패치를 찾는 지역 특징 검출 방법 중 하나로, 상기 KLT 특징 추적 알고리즘에서 특징점 검출 단계로 제안되었다.
또한, 상기 Shi-Tomasi 알고리즘은 기존의 특징점 검출 및 추적 알고리즘과 같이 단순히 평행 이동만 가정한 것이 아닌 어파인(affine) 변환까지 고려하여 다양한 추적 응용에서 우수한 성능을 나타내고 있다.
객체 추적에 강건한 특징점을 검출하기 위해서는 이미지 패치 단위에 적용된 계수 행렬 H가 영상 잡음 정도보다 커야한다. 상기 계수 행렬 H는 가로와 세로 방향으로의 명암값 변화에 따른 자기 상관 함수 행렬이며, 다음의 [수학식 1]로 나타낸다.
여기서, 상기 n은 탐색 윈도우의 크기를 나타내고, 상기 i는 상기 탐색 윈도우 중 임의의 요소를 나타내고, 상기 dx 및 dy는 이미지 패치를 각각 x 방향과 y 방향으로 미분한 값을 나타낸다.
이때, 상기 [수학식 1]에 따른 계수 행렬 H는 입력 영상에서 잡음의 영향과 일정 크기 이하의 추적하기 힘든 특징이 있을 수 있다.
이러한 특징에 대응하며 정확도를 높이기 위해서, 상기 [수학식 1]의 계수 행렬 H의 각각의 원소에 가중치(wi)를 적용하면, 다음의 [수학식 2]와 같이 변형된다.
또한, 명암 변화가 작은 경우, 계수 행렬 H는 잡음에 큰 영향을 받기 때문에, 추적에 유리한 특징점이라 할 수 없다. 따라서, 이러한 픽셀을 배제하고 추적에 유리한 특징점을 검출하기 위해서, 다음의 [수학식 3]과 같이, 상기 계수 행렬 H의 고윳값을 확인하는 과정을 수행한다.
즉, 상기 계수 행렬 H의 두 고윳값 중 작은 값이 특징점을 결정하는 기준이 되며, 상기 두 고윳값 중 작은 값을 임계값(threshold)과 비교하여, 클 경우 해당 픽셀을 특징점 후보로 선정한다.
또한, 특징점 후보군을 선별하기 위해서 앞선 [수학식 3]에서 행렬의 고윳값 계산 및 비교가 필요하지만, 행렬의 고유 다항식과 이차 방정식 근의 공식을 사용하면 이를 하나의 식으로 간소화할 수 있다.
즉, 상기 [수학식 2]의 2×2 행렬 각각의 원소를 순서대로 p, r, r, q라 하면, 고유 다항식은 다음의 [수학식 4]와 같이 나타낼 수 있다.
상기 [수학식 4]를 근의 공식에 대입하여 정리하면, 최소 고윳값을 다음의 [수학식 5]로 나타낼 수 있으며, 이에 따라 특징점 후보군 선정 과정을 간단하게 구현할 수 있다.
상기 [수학식 5]를 통해 선정된 특징점 중에서 서로 근접한 특징점들은 동일 객체를 나타내거나 유사한 움직임을 보이기 때문에, 추적 과정에서 불필요한 연산을 발생시킨다. 따라서, 성능 향상을 위해 추적 과정에 사용될 특징점들을 선별하는 과정이 추가로 요구되며, 이에 따라 상기 Shi-Tomasi 알고리즘은 앞서 계산한 고윳값을 윈도우 내에서 내림차순으로 정렬하고, 내림차순으로 정렬된 복수의 고윳값 중에서 값이 큰 지점만 특징점으로 유지시키는 과정을 적용한 후, 일정 거리 내의 후보군을 추가로 제외하는 과정으로 최종 특징점을 선별한다.
상기 PLK 알고리즘(또는 PLK Optical Flow Estimation 알고리즘)은 연속된 두 장의 이미지에서 같은 위치의 픽셀은 같은 명암값을 갖는다는 가정하에 다음의 [수학식 6]으로 모델링되고, Taylor series expansion에 따라 다음의 [수학식 7]로 나타낼 수 있다.
여기서, 상기 좌변의 I는 현재 이미지에서의 해당 픽셀의 밝기값을 나타내고, 상기 우변의 I는 다음 이미지에서의 해당 픽셀의 밝기값을 나타낸다.
한 윈도우 내의 픽셀들은 같은 광류를 갖는다고 가정하면, 윈도우 내의 모든 화소가 상기 [수학식 7]을 만족해야 하므로, 행렬 형태의 다음의 [수학식 8]로 나타낼 수 있다.
여기서, 상기 v는 (u,v)로 나타내는 모션 벡터(motion vector)를 의미하고, 상기 A 행렬과 상기 b 벡터는 각각 다음의 [수학식 9]와 같이 나타낸다.
상기 [수학식 8]로부터 A 행렬의 역행렬을 구하기 위해 행렬식을 바꿔 쓰면 다음의 [수학식 10]으로 나타낼 수 있다.
상기 [수학식 10]을 풀고, 더 나은 품질의 모션 벡터 값을 위해 가중치 함수를 적용하면 다음의 [수학식 11]과 같이 2×2 행렬과 2×1 행렬의 곱으로 모션 벡터를 계산할 수 있다.
여기서, 상기 u는 x축 방향의 움직임을 나타내고, 상기 v는 y축 방향의 움직임을 나타낸다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 더 정밀한 모션 벡터를 얻기 위해 계산된 모션 벡터(u,v)를 통해 특징점의 위치를 보정한 뒤, 반복(iteration)을 통해 최종적인 변위(또는 모션 벡터)를 계산한다. 여기서, 상기 보정 과정은 동일한 지점(또는 픽셀)에 대해서 상기 계산된 모션 벡터를 메모리(700)에 저장된 특징점의 좌표값과 더하는 과정일 수 있다.
또한, 탐색 윈도우의 크기가 작은 경우 움직임이 큰 변위를 추적하지 못해 강건성이 낮아지며, 큰 탐색 윈도우를 사용할 경우 작은 변위에 대한 정확성이 저하되고, 연산량 또한 증가하게 되는 한계를 갖는다.
도 3에 도시된 바와 같이, 이를 해결하기 위해 제안된 PLK 알고리즘은 데시메이션 필터(decimation filter)를 통해 획득한 계층 영상 중 가장 낮은 해상도를 갖는 영상 에서 모션 벡터값 이 계산되었다고 가정하면, 상기 모션 벡터값()은 다음의 [수학식 12]와 같이 계산되고, 새로운 초기 추정값으로 사용됨으로써 다음 레벨(L-1)로 전달된다.
여기서, 상기 v는 모션 벡터를 나타낸다.
여기서, 상기 d는 최종 모션 벡터를 나타낸다.
이와 같이, 상기 영상 기반 특징점 추적 장치(10)는 최초 이미지로부터 특징점 검출 과정을 수행하고, 이후 입력되는 이미지로부터 추적 과정을 수행한다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 프레임마다(또는 이미지마다) 계산된 모션 벡터값을 드론의 F/C(Fight Controller)로 전달하여, 드론의 움직임을 제어한다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 미리 설정된 개수의 이미지(예를 들어 N장의 이미지)에서 특징점 추출 및 추적 과정이 끝나면, 다시 그 다음으로 입력되는 이미지들로부터 특징점 추출 및 추적 과정을 반복적으로 수행한다.
상기 프레임 버퍼(100)는 드론(미도시)으로부터 획득되는 연속된 복수의 이미지(또는 복수의 영상/하방 영상)를 임시 저장한다. 이때, 상기 드론으로부터 획득되는 이미지는 상기 드론의 하부에 구비된 카메라(미도시)를 통해 해당 드론이 위치하는(또는 이동하는) 지역의 하방에 대응하는 이미지일 수 있다.
또한, 상기 프레임 버퍼(100)는 상기 제어부(800)의 제어에 의해, 상기 프레임 버퍼(100)에 임시 저장되는 연속된 복수의 이미지 중 적어도 하나의 이미지를 상기 제 1 먹스(200) 및 상기 제 2 먹스(500)에 각각 제공(또는 출력/전송)한다.
상기 제 1 먹스(200)는 상기 프레임 버퍼(100)로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력한다. 여기서, 상기 첫 번째 이미지는 미리 설정된 단위 개수 이미지(예를 들어 10개 단위, 50개 단위, 100개 단위 등 포함)를 근거로 상기 복수의 이미지 중에서 첫 번째 이미지(예를 들어 50개 단위를 기준으로 하는 경우, 연속된 50개의 이미지 중에서 첫 번째 이미지)를 나타낸다.
상기 도 2에 도시한 바와 같이, 상기 헤시안 행렬 연산부(Hessian-matrix calculation unit: HSU)(300)는 제 3 먹스(310), 미분기(320), 복수의 곱셈기(330) 및 복수의 가우시안 필터(340)로 구성된다. 상기 도 2에 도시된 헤시안 행렬 연산부(300)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 헤시안 행렬 연산부(300)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 헤시안 행렬 연산부(300)가 구현될 수도 있다.
상기 헤시안 행렬 연산부(300)는 특징점 검출 과정에 사용되는 Shi-Tomasi 알고리즘과 특징점 추적 과정에 사용되는 PLK 알고리즘의 동일한 행렬의 원소를 계산(또는 산출)한다.
상기 제 3 먹스(310)는 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 제어부(800)에 의해 설정된 상기 영상 기반 특징점 추적 장치(10)의 동작 모드에 따라 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지를 출력한다.
즉, 상기 제어부(800)에 의해 설정된 상기 영상 기반 특징점 추적 장치(10)의 동작 모드가 특징점 검출 모드일 때, 상기 제 3 먹스(310)는 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지 중에서 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지를 상기 제 3 먹스(310)의 출력값으로 출력한다.
또한, 상기 제어부(800)에 의해 설정된 상기 영상 기반 특징점 추적 장치(10)의 동작 모드가 특징점 추적 모드일 때, 상기 제 3 먹스(310)는 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지 중에서 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지를 상기 제 3 먹스(310)의 출력값으로 출력한다.
상기 미분기(Differentiator)(320)는 상기 제 3 먹스(310)의 출력값을 소벨 필터(sobel filter)를 사용하여 x 방향과 y 방향으로의 명암차를 계산한다.
즉, 상기 미분기(320)는 상기 제 3 먹스(310)로부터 출력되는 첫 번째 이미지 또는 보간된 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산한다.
상기 복수의 곱셈기(330)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 보간된 첫 번째 이미지)와 관련한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 대해 곱셈 기능을 적용하여 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성한다.
즉, 제 1 곱셈기(331)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 보간된 첫 번째 이미지)와 관련한 x 방향으로의 명암차(dx)를 두 입력으로 하여 곱셈 기능을 수행하여, 상기 제 1 곱셈기(331)의 출력값(예를 들어 dx2)을 출력한다.
또한, 제 2 곱셈기(332)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 보간된 첫 번째 이미지)와 관련한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 두 입력으로 하여 곱셈 기능을 수행하여, 상기 제 2 곱셈기(332)의 출력값(예를 들어 dxdy)을 출력한다.
또한, 제 3 곱셈기(333)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 보간된 첫 번째 이미지)와 관련한 y 방향으로의 명암차(dy)를 두 입력으로 하여 곱셈 기능을 수행하여, 상기 제 3 곱셈기(333)의 출력값(예를 들어 dy2)을 출력한다.
이와 같이, 상기 복수의 곱셈기(330)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 보간된 첫 번째 이미지)와 관련한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 근거로 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성한다.
상기 복수의 가우시안 필터(Gaussian Filter)(340)는 상기 복수의 곱셈기(330)에서 생성된 복수의 변수에 대해서 영상의 스무딩 처리를 수행한다.
즉, 제 1 가우시안 필터(341)는 상기 제 1 곱셈기(331)로부터 출력되는 상기 제 1 곱셈기(331)의 출력값(예를 들어 dx2)에 가중치를 적용한 후, 가우시안 필터를 적용한다.
또한, 제 2 가우시안 필터(342)는 상기 제 2 곱셈기(332)로부터 출력되는 상기 제 2 곱셈기(332)의 출력값(예를 들어 dxdy)에 가중치를 적용한 후, 가우시안 필터를 적용한다.
또한, 제 3 가우시안 필터(343)는 상기 제 3 곱셈기(333)로부터 출력되는 상기 제 3 곱셈기(333)의 출력값(예를 들어 dy2)에 가중치를 적용한 후, 가우시안 필터를 적용한다.
이와 같이, 상기 복수의 가우시안 필터(340)는 영상에 대한 스무딩 처리를 수행하여, 해당 가우시안 필터(340)의 출력값(또는 상기 헤시안 행렬 연산부(300)의 출력값/가우시안 필터링된 상기 헤시안 행렬 연산부(300)의 출력값)(예를 들어 가중치가 적용된 widx2, widxdy, widy2)을 상기 특징점 검출부(400) 및 상기 특징점 추적부(600)에 제공한다.
도 4는 가우시안 필터(340)의 하드웨어 구조로, 라인 버퍼(line buffer), 시프트 레지스터(shift register) 및 어큐뮬레이션 유닛(accumulation unit)으로 구성된다.
상기 미분기(320)와 상기 가우시안 필터(340)는 3×3 필터 마스크(filter mask)에 포함되는 영역의 픽셀 값들이 필요하다. 이때, 이미지 데이터 스트림(image data stream)은 로우(row) 방향으로 순차로 입력되기 때문에, 2개의 라인 버퍼 및 9개의 시프트 레지스터를 활용하여 3×3 필터 마스크에 포함되는 값이 동시에 어큐뮬레이션 유닛에 입력되도록 구성한다.
이로 인해, 본 발명의 실시예에 따른 가우시안 필터(340)는 별도의 여분의 프레임 버퍼와 클록 사이클(clock cycles) 없이 3×3 이미지 필터 연산이 가능하며, 가우시안 필터 탭(Gaussian filter tap)이 1/16, 1/8, 1/4로 구성되기 때문에, 별도의 곱셈기(mutiplier)없이 비트 시프트(bit shift) 연산과 누적(accumulation) 연산으로 구현할 수 있다.
또한, 상기 가우시안 필터(340) 이외에도 상기 미분기(320)나 상기 특징점 추적부(600)에 포함된 보간부도 같은 콘볼루션(convolution) 연산으로 이루어지기 때문에 동일한 라인 버퍼 기반 구조를 갖는다.
따라서, 상기 헤시안 행렬 연산부(300)를 적용함으로써, 기존 구조 대비 4개의 라인 버퍼, 9개의 곱셈기와 가산기, 18개의 8-비트 레지스터를 줄일 수 있다.
이와 같이, 상기 헤시안 행렬 연산부(300)를 통해 Shi-Tomasi 특징점 검출 알고리즘과 PLK(Pyramidal Lucas-Kanade) 알고리즘에서 공통으로 연산되는 부분을 공유하고 각 알고리즘을 간소화 및 개선함으로써, 저면적으로도 우수한 추적 성능을 제공하여, 탑재 중량 및 소모 전력이 엄격히 제한되는 드론에 적용하기에 용이할 수 있다.
상기 도 2에 도시한 바와 같이, 상기 특징점 검출부(Feature point Detection Unit: FDU)(400)는 특징점 가능성 연산부(410), 경계 및 임계치 확인부(420), 비최대 억제부(430) 및 영역 확인부(440)로 구성된다. 상기 도 2에 도시된 특징점 검출부(400)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 특징점 검출부(400)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 특징점 검출부(400)가 구현될 수도 있다.
상기 특징점 검출부(400)는 상기 헤시안 행렬 연산부(300)의 출력값을 이용해서 상기 첫 번째 이미지로부터 복수의 특징점을 검출(또는 추출)한다.
상기 특징점 가능성 연산부(Corner Possibility Calculator)(410)는 상기 헤시안 행렬 연산부(300)로부터의 출력값(또는 가우시안 필터링된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy))에 대해 고윳값을 계산한다.
즉, 상기 특징점 가능성 연산부(410)는 앞선 [수학식 5]의 연산을 통해 고윳값을 계산한다.
상기 경계 및 임계치 확인부(Boundary/Threshold Checking Unit)(420)는 상기 특징점 가능성 연산부(410)에 의해 계산된 고윳값을 근거로 영상 경계에 있지 않으면서도 고윳값이 임계값 이상인 지점을 특징점 후보군으로 선정한다.
즉, 상기 특징점 가능성 연산부(410)는 상기 계산된 복수의 고윳값을 내림차순으로 정렬한다.
또한, 상기 특징점 가능성 연산부(410)는 상기 내림차순으로 정렬된 복수의 고윳값 중에서 영상 경계에 있지 않으면서도 고윳값이 임계값 이상인 지점을 특징점 후보군으로 선정한다. 이때, 상기 경계 및 임계치 확인부(420)는 상기 내림차순으로 정렬된 복수의 고윳값 중에서 고윳값이 높은 순으로 미리 설정된 개수(예를 들어 128개)를 상기 특징점 후보군으로 선정할 수도 있다.
여기서, 계산되는 고윳값의 범위는 영상 밝기에 따라 변화하는데, 이에 적용되는 임계값 또한 유동적으로 바뀌어야 하므로, 가변 가능하도록 구성할 수 있다.
상기 비최대 억제부(Non-maximum Suppression Unit)(430)는 상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 고윳값 비교를 통해 근접 후보군에 대한 배제 처리 기능을 수행한다.
상기 영역 확인부(Region Checking Unit)(440)는 상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 일정 거리 내의 특징점을 제외(또는 영역 내 중복 후보군 배제 처리 기능을 수행)하여 최종적인 복수의 특징점을 선정(또는 선별)한다. 이때, 상기 영역 확인부(440)는 상기 이미지를 복수의 영역으로 나누고(또는 분할하고), 각 영역 내에서 각각 가장 먼저 입력되는 특징점 후보군 하나만을 최종 특징점에 포함시킬 수 있다.
또한, 상기 영역 확인부(400)는 상기 선정된 최종적인 복수의 특징점(또는 복수의 특징점의 좌표 정보)을 상기 메모리(700)에 저장한다.
도 5는 상기 영역 확인부(400)의 블록도로, 각 블록을 제어하는 제어기(controller), 영역 간 중복 여부를 판별하는 N 영역 블록으로 구성된다.
같은 크기로 구분된 N 개의 영역 내에서 각각 가장 먼저 입력받는 특징점 후보군 하나만 특징점으로 선정하도록 구성하여, 유클리드 거리 계산을 하지 않고도 일정 거리 이상이 띄어진 특징점이 검출되도록 구성할 수 있다.
또한, 비최대 억제 처리를 거친 특징점 후보군의 신호가 순차로 상기 영역 확인부(400)에 입력될 때, 각각의 영역을 담당하는 블록은 제어기가 출력하는 제어 신호에 따라 작동한다. 이때, 상기 N 영역 블록은 픽셀 개수를 세는 로우(row)와 컬럼(column) 좌표 카운터(coordinate counter)를 활용하여 출력할 특징점의 위치를 제어할 수 있다.
상기 제 2 먹스(500)는 상기 프레임 버퍼(100)로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 제외한 다른 이미지(또는 상기 연속된 복수의 이미지 중에서 현재 이미지)를 출력한다. 여기서, 상기 다른 이미지는 미리 설정된 단위 개수 이미지(예를 들어 10개 단위, 50개 단위, 100개 단위 등 포함)를 근거로 상기 복수의 이미지 중에서 첫 번째 이미지를 제외한 나머지 이미지 중에서 현재 입력된 이미지(또는 현재 이미지)(예를 들어 50개 단위를 기준으로 하는 경우, 연속된 50개의 이미지 중에서 첫 번째 이미지 다음 순서인 두 번째 이미지)를 나타낸다.
상기 도 2에 도시한 바와 같이, 상기 특징점 추적부(Feature point Tracking Unit: FTU)(600)는 복수의 보간부(610), 영상차 계산부(620), 복수의 다른 곱셈기(630), 복수의 다른 가우시안 필터(640), 모션 벡터 연산부(650), 모션 벡터 매니저(660) 및 모션 추정기(670)로 구성된다. 상기 도 2에 도시된 특징점 추적부(600)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 특징점 추적부(600)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 특징점 추적부(600)가 구현될 수도 있다.
상기 특징점 추적부(600)는 연속된 복수의 이미지를 근거로 앞서 추출된 특징점에 대한 추적 기능을 수행하여 모션 벡터를 생성한다.
기존의 PLK 알고리즘에서는 데시메이션 필터(decimation filter)를 통해 계층을 구성하고, 가장 높은 레벨에서부터 추적을 시작한다. 이때, 상기 데시메이션 필터는 콘볼루션(convolution) 연산을 요구하며 계층적 구조의 추적에 필요한 연산을 연속적으로 처리하기 위해 각 계층에 대한 결과값을 저장할 별도의 메모리 공간이 필요하다.
따라서, 본 발명의 실시예에서는 심플 다운-샘플링(simple down-sampling) 방법을 이용하여 단순히 프레임 버퍼의 제어 신호를 레벨에 따라 달리해주는 방법으로 별도의 지연시간이나 메모리없이 계층을 구성할 수 있도록 하였다.
또한, 실험을 통해 데시메이션 필터 대신 심플 다운-샘플링 방법을 이용한 추적결과 성능 저하가 거의 없음을 확인하였다.
상기 복수의 보간부(interpolator Unit, 보간기)(610)는 상기 제 1 먹스(200)로부터 출력되는 이전 이미지, 상기 제 2 먹스(500)로부터 출력되는 현재 이미지에 대한 보간 기능을 각각 수행한다.
즉, 제 1 보간부(611)는 상기 제 1 먹스(200)로부터 출력되는 이전 이미지에 대한 보간 기능을 수행하고, 상기 수행에 따른 보간된 이전 이미지(또는 보간된 이미지)를 상기 제 3 먹스(310) 및 상기 영상차 계산부(620)에 제공한다.
또한, 제 2 보간부(612)는 상기 제 2 먹스(500)로부터 출력되는 현재 이미지에 대한 보간 기능을 수행하고, 상기 수행에 따른 보간된 현재 이미지를 상기 영상차 계산부(620)에 제공한다.
도 6은 본 발명의 실시예에 따른 보간부(610)의 블록도로, 특징점 좌표(feature coordinate, Fc)와 피라미드 레벨(pyramid level)에 따라 적합한 픽셀 정보가 입력되도록 제어하는 윈도우 영역 추출기(window region extractor)와 특징점 위치에 따른 보정을 수행하는 보간 계산기(interpolation calculator)로 구성된다.
도 7은 본 발명의 실시예에 따른 윈도우 영역 추출기의 블록도로, 상기 윈도우 영역 추출기는 상기 메모리(700)에 저장되어있는 현재 특징점 좌표와 피라미드 레벨 정보를 입력받아 특징점 좌표 주변 영역의 이미지 윈도우(image window)가 상기 보간 계산기에 입력되도록 한다. 이때, 현재 피라미드 레벨에 따라서 다운-샘플링(down-sampling)까지 수행되는데, 프레임 버퍼에 이미지 데이터(image data)가 로우(row) 방향으로 저장되어 있다고 하면, 주소(address)는 다음의 [수학식 14]와 같이 계산되어 각각 먹스(MUX)에 연결되고, 현재 피라미드 레벨에 따라 선택되어 계층적 영상을 별도의 메모리 없이 얻을 수 있도록 구성(또는 설계)한다.
여기서, 상기 c1과 c2는 각각 row counter value와 column counter value를 나타내고, 상기 ws는 탐색 윈도우의 크기를 나타내고, 상기 L은 피라미드 레벨을 나타낸다.
도 8은 본 발명의 실시예에 따른 보간 계산기의 블록도로, 상기 보간 계산기는 계산된 모션 벡터로부터 보정된 특징점 좌표값이 정수가 아닌 실수값이기 때문에, 인접한 네 개의 픽셀의 명암값에 따른 바이리니어 보간(bilinear interpolation)을 통해 추적된 특징점 좌표의 밝기값을 계산한다. 여기서, 상기 바이리니어 보간은 x축과 y축 각각의 좌표값에 따라 가중치가 결정되는 일차원 필터와, 특징점 주변의 5×5 윈도우의 콘볼루션 연산으로 계산되며, 좌표값과 좌표값의 반올림한 값의 차의 사인 비트(sing bit)에 의하여 필터의 형태가 결정된다.
또한, 상기 보간 계산기는 라인 버퍼 구조로 설계하여, x축과 y축 각각의 일차원 보간 연산을 연속적으로 처리하도록 설계하여, 짧은 레이턴시(latency)로 별도의 추가적인 메모리 공간없이 계층 구성이 가능할 수 있다.
상기 영상차 계산부(620)는 상기 제 1 보간부(611)로부터 제공되는 보간된 이전 이미지와 상기 제 2 보간부(612)로부터 제공되는 보간된 현재 이미지 간의 명암차(dt)를 계산한다.
상기 복수의 다른 곱셈기(630)는 상기 헤시안 행렬 연산부(300)에서 계산된 이전 이미지에 대한 명암차(dx, dy)와 상기 계산된 보간된 이전 이미지와 보간된 현재 이미지 간의 명암차(dt)에 대해 곱셈 기능을 적용하여 복수의 다른 변수를 생성한다.
즉, 제 4 곱셈기(631)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 이전 이미지)와 관련한 x 방향으로의 명암차(dx)와 상기 영상차 계산부(620)에 의해 계산된 이미지 간의 명암차(dt)를 두 입력으로 하여 곱셈 기능을 수행하여, 상기 제 4 곱셈기(631)의 출력값(예를 들어 dxdt)을 출력한다.
또한, 제 5 곱셈기(632)는 상기 미분기(320)에서 계산된 첫 번째 이미지(또는 이전 이미지)와 관련한 y 방향으로의 명암차(dy)와 상기 영상차 계산부(620)에 의해 계산된 이미지 간의 명암차(dt)를 두 입력으로 하여 곱셈 기능을 수행하여, 상기 제 5 곱셈기(632)의 출력값(예를 들어 dydt)을 출력한다.
이와 같이, 상기 복수의 다른 곱셈기(630)는 상기 미분기(320)에서 계산된 이전 이미지에 대한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy) 및 상기 영상차 계산부(620)에서 계산된 보간된 이전 이미지와 보간된 현재 이미지 간의 명암차(dt)에 곱셈기를 적용한다.
상기 복수의 다른 가우시안 필터(640)는 상기 복수의 다른 곱셈기(630)에서 생성된 복수의 다른 변수에 대해서 영상의 스무딩 처리를 수행한다.
즉, 제 4 가우시안 필터(641)는 상기 제 4 곱셈기(631)로부터 출력되는 상기 제 4 곱셈기(631)의 출력값(예를 들어 dxdt)에 가중치를 적용한 후, 가우시안 필터를 적용한다.
또한, 제 5 가우시안 필터(642)는 상기 제 5 곱셈기(632)로부터 출력되는 상기 제 5 곱셈기(632)의 출력값(예를 들어 dxdy)에 가중치를 적용한 후, 가우시안 필터를 적용한다.
이와 같이, 상기 복수의 다른 가우시안 필터(640)는 영상에 대한 스무딩 처리를 수행하여, 해당 다른 가우시안 필터(640)의 출력값(예를 들어 가중치가 적용된 widxdt, widydt)을 상기 모션 벡터 연산부(650)에 제공한다.
상기 모션 벡터 연산부(Motion Vector Calculator)(650)는 상기 복수의 다른 가우시안 필터(640)의 출력값(예를 들어 widxdt, widydt)과, 상기 헤시안 행렬 연산부(300)에서의 출력값(예를 들어 widx2, widxdy, widy2)을 근거로 모션 벡터(예를 들어 (u,v))를 산출한다.
도 9는 상기 모션 벡터 연산부의 블록도로, 상기 모션 벡터 연산부는 계산된 영상 차 값과 그래디언트(gradient) 값에 각각 가중치가 곱해진 값들을 이용하여 앞선 [수학식 11]을 연산한다. 이때, 연산은 영상 차 값과 그래디언트 값들의 덧셈(summation) 및 2×2 인버스 매트릭스(inverse matrix) 연산으로 이루어지므로, 입력되는 영상 차 값과 그래디언트 값들이 어큐뮬레이터 세트(accumulator)로 입력되어 덧셈값을 연산하며, 2×2 인버스 매트릭스 연산을 위해 나눗수(제수, divisor) 계산기 및 나뉨수(피제수, dividend) 계산기와 분할자(divider)를 통해 인버스 매트릭스 연산이 수행되어 최종 모션 벡터 값이 출력된다.
하지만, 모션 벡터 값을 구하는 과정에서 2×2 인버스 매트릭스 연산이 이뤄지게 되기 때문에, 행렬의 행렬식(determinant)으로 나눠주는 연산이 필요하다. 이때, 일반적인 나눗셈기를 활용하는 경우, 복잡한 알고리즘을 사용하여 상당한 연산량이 요구된다.
본 발명의 실시예에서는 상기 일반적인 나눗셈기 대신, 연산 특성을 고려한 효율적인 디바이더 유닛(divider unit)을 사용하여, 상기 디바이더 유닛은 다음의 도 10의 순서도에 따라 동작한다.
여기서, 상기 z는 나뉨수, 상기 d는 나눗수, 상기 i는 몫의 정수값, 상기 f는 소수점 자릿수를 나타낸다.
즉, 상기 도 10에 도시된 인테저 파트(integer part)는 상기 z가 상기 d보다 작거나 같을 때까지 상기 z를 상기 d로 빼주면서 몫을 누적하여, 몫을 구하고, 플랙션 파트(fraction part)는 나머지를 소수점으로 구한다.
상기 디바이더 유닛은 몫의 크기에 따라 레이턴시가 비례하는 특성이 있지만, 모션 벡터를 추정하는 윈도우가 고정된 5×5 크기를 갖기 때문에, 계산된 모션 벡터 결과는 5 이하의 값을 얻게 된다.
따라서 10 클록 사이클(clock cycles) 이내로 나눗셈 연산이 가능하기 때문에, 높은 하드웨어 리소스를 갖는 일반적인 나눗셈기 대신, 시프터(shifter)와 감산기(subtractor)만을 사용하여 간단하게 구현 가능하며, 적은 지연시간과 저면적으로 성능 열화없이 인버스 매트릭스 연산이 가능할 수 있다.
또한, 계산이 끝난 모션 벡터 값은 이전의 메모리(700)에 저장되어 있던 값과 더해져 다시 저장되며, 새 저장된 특징점 위치로부터 다시 모션 벡터를 계산하는 과정이 반복된다.
해당 과정은 설정된 반복(iteration) 횟수만큼 반복되며, 반복이 끝난 뒤, 계층적 방법을 적용함으로써, 최종 모션 벡터가 계산된다.
이와 같이, 상기 영상 기반 특징점 추적 장치(10)는 모든 특징점에 대해 이러한 추적 과정이 끝났을 때, 다음 프레임의 추적을 진행하는 과정을 반복하여, 매 프레임에서의 모션 벡터들의 평균치를 실시간으로 출력한다.
상기 모션 벡터 매니저(Motion Vector manager)(660)는 상기 모션 벡터 연산부(650)로부터 산출된 모션 벡터와 상기 메모리(700)에 저장된 특징점의 좌표 정보(또는 좌표값)를 서로 가산하여 보정된 특징점의 좌표 정보를 생성한다.
또한, 상기 모션 벡터 매니저(660)는 상기 생성된 보정된 특징점의 좌표 정보를 상기 메모리(700)에 저장한다.
이와 같이, 상기 모션 벡터 매니저(660)는 현재 특징점에서 계산된 모션 벡터를 보정한다.
상기 모션 추정기(Motion Estimator)(670)는 복수의 상기 보정된 특징점의 좌표 정보(또는 복수의 모션 벡터)에 대한 평균치를 계산한다.
또한, 상기 모션 추정기(670)는 상기 계산된 복수의 보정된 특징점의 좌표 정보에 대한 평균치(u,v 형태로 표현)를 상기 드론의 호버링을 위해서 상기 드론에 제공한다.
상기 메모리(700)는 플래시 메모리 타입(Flash Memory Type), 하드 디스크 타입(Hard Disk Type), 멀티미디어 카드 마이크로 타입(Multimedia Card Micro Type), 카드 타입의 메모리(예를 들면, SD 또는 XD 메모리 등), 자기 메모리, 자기 디스크, 광디스크, 램(Random Access Memory: RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory: ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory) 중 적어도 하나의 저장매체를 포함할 수 있다.
또한, 상기 메모리(700)는 상기 특징점 검출부(400)로부터 검출된 복수의 특징점(또는 복수의 특징점의 좌표 정보)을 저장한다.
또한, 상기 메모리(700)는 상기 특징점 추적부(600)에 의해 산출된 모션 벡터와 미리 저장된 특징점의 좌표 정보를 가산하여, 가산된 특징점의 좌표 정보(또는 보정된 특징점의 좌표 정보)를 저장한다.
상기 제어부(800)는 상기 영상 기반 특징점 추적 장치(10)의 전반적인 제어 기능을 수행한다.
또한, 상기 제어부(800)는 상기 메모리(700)에 저장된 프로그램 및 데이터를 이용하여 영상 기반 특징점 추적 장치(10)의 전반적인 제어 기능을 실행한다. 상기 제어부(800)는 RAM, ROM, CPU, GPU, 버스를 포함할 수 있으며, RAM, ROM, CPU, GPU 등은 버스를 통해 서로 연결될 수 있다. CPU는 상기 메모리(700)에 액세스하여, 상기 메모리(700)에 저장된 O/S를 이용하여 부팅을 수행할 수 있으며, 상기 메모리(700)에 저장된 각종 프로그램, 콘텐츠, 데이터 등을 이용하여 다양한 동작을 수행할 수 있다.
또한, 상기 제어부(800)는 미리 설정된 개수의 이미지(예를 들어 N장의 이미지)에서 특징점 추출 및 추적 과정이 끝나면, 다시 그 다음으로 입력되는 이미지들로부터 특징점 추출 및 추적 과정을 반복적으로 수행하도록 상기 영상 기반 특징점 추적 장치(10)에 포함된 다양한 구성 요소들을 제어한다.
또한, 상기 제어부(800)는 미리 설정된 개수의 이미지(예를 들어 N장의 이미지) 중에서 첫 번째 이미지에 대해서 특징점 추출 과정이 수행되도록 상기 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 검출 모드로 설정(또는 특징점 추적 모드에서 특징점 검출 모드로 전환/변환)한다.
또한, 상기 제어부(800)는 미리 설정된 개수의 이미지(예를 들어 N장의 이미지) 중에서 첫 번째 이미지를 제외한 나머지 이미지에 대해서 특징점 추적 과정이 수행되도록 상기 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 추적 모드로 설정(또는 특징점 검출 모드에서 특징점 추적 모드로 전환/변환)한다.
또한, 상기 제어부(800)는 상기 프레임 버퍼(100), 상기 제 1 먹스(200), 상기 헤시안 행렬 연산부(300), 상기 특징점 검출부(400), 상기 제 2 먹스(500), 상기 특징점 추적부(600) 및 상기 메모리(700)의 동작을 제어하여, 미리 설정된 이미지 개수 단위로, 해당 이미지로부터 복수의 특징점을 검출하는 과정, 연속된 복수의 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 과정을 반복 수행한다.
이와 같이, 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행할 수 있다.
또한, 이와 같이, 특징점 검출과 특징점 추적 알고리즘에 공통으로 사용되는 연산 기능을 공유할 수 있다.
또한, 이와 같이, 모션 벡터 값을 구하는 과정에서 연산 특성을 고려한 효율적인 나눗셈기를 제공할 수 있다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 성능 평가를 위해 도 11에 나타낸 DJI phantom4 drone을 활용하였다.
다양한 시나리오에 대해 비행 동작을 수행한 후, 각 시나리오별로 드론 하방 카메라로 촬영된 영상과 GPS 좌표 정보를 추출하였다.
촬영된 영상에 대해 제안된 영상 기반 특징점 추적 장치(10)의 추적 결과를 누적시킨 경로와 추출된 GPS 좌표 정보 기반 이동경로를 비교하는 방법으로 추적 성능 평가를 수행하였다.
도 12 내지 도 14에 도시된 바와 같이, 잔디밭, 아스팔트 및 보도블록 환경에서, 실내 환경을 고려한 2m 이하의 고도에서 각각 10초간 비행을 통해 얻은 데이터로 실험을 진행하였다.
비행 영상은 30 fps로 획득되고, GPS 기록은 0.1초 단위로 기록되어 위도 및 경도 데이터로 저장하였다. 이때, 제안된 영상 기반 특징점 추적 장치(10)의 결과는 픽셀 단위로 출력되기 때문에, GPS 기반 이동경로와 비교하기 위해선 각 출력값에 대한 단위 변환이 필요하다. 따라서, 다음의 [수학식 15]를 통해 각 출력값을 메트릭 유닛(metric unit)으로 변환하여 비교 검증을 수행하였다.
여기서, 상기 h는 드론의 고도를 나타내고, 상기 wx와 wy는 이미지 센서의 가로 길이 및 세로 길이를 각각 나타내고, 상기 f는 초점 거리를 나타내고, 상기 Rx 및 Ry는 수평 해상도 및 수직 해상도를 각각 나타낸다.
상기 메트릭 유닛으로 변환된 영상 기반 특징점 추적 장치(10)의 출력을 누적시킨 결과와 GPS 좌표정보를 기반으로 획득한 이동경로를 도 15 내지 도 17에 나타내었다.
본 발명의 실시예에 따른 상기 영상 기반 특징점 추적 장치(10)는 모든 실험 환경에 대해 GPS 기반 결과와 유사한 이동 궤적을 갖는 것을 상기 도 15 내지 도 17을 통해 확인할 수 있다.
또한, GPS 기반으로 획득한 이동경로와 상기 영상 기반 특징점 추적 장치(10)의 출력결과에 대한 RMSE를 다음의 [표 1]에 나타내었다.
Environment | RMSE [meter] |
grassy | 0.37 |
asphalt | 0.64 |
sidewalk block | 0.20 |
상기 [표 1]과 같이, 상기 영상 기반 특징점 추적 장치(10)는 GPS와 유사한 추적 성능 결과를 보임으로써, 실내 환경 등 GPS가 제한된 상황에서도 상기 영상 기반 특징점 추적 장치(10)를 이용하여 호버링이 가능함을 확인할 수 있다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 Verilog HDL을 이용하여 설계되었으며, 설계 후 Xilinx Virtex-7 xe7vx1140tflg1930-1 FPGA(Field Programmable Gate Array) 디바이스에서 구현 및 검증하였다.
다음의 [표 2]에 상기 영상 기반 특징점 추적 장치(10)의 구현 결과를 나타내었다. 최대 130MHz의 동작 주파수로 총 2744개의 Slice와 25개의 DSP, 11.5개의 block RAM으로 구현 가능함을 확인하였다.
영상 기반 특징점 추적 장치(10) | |
FPGA Device | Xilinx Virtex-7 xc7vx1140tflg1930-1 |
Slice | 2744 |
Slice Registers | 5534 |
Slice LUTs | 7633 |
DSP | 25 |
Block RAM | 11.5 (92.85Kb) |
Frequency | 130MHz |
다음의 [표 3]은 기존 FPGA 기반 PLK 특징점 추적기 설계와 하드웨어 리소스(hardware resource) 비교 결과로, 상기 영상 기반 특징점 추적 장치(10)는 기존 피라미달(pyramidal) KLT 특징점 추적기 대비 70% 이상의 면적 감소를 보였다.
Slice Register | Slice LUT | Block RAM | |
본 발명 | 5534 | 7633 | 11.5 |
피라미달 KLT | 24127 | 24002 | 51 |
Improvement | 76.8% | 68.2% | 78.4% |
또한, 한 장의 영상을 리드(read)하는데 걸리는 클록 사이클(clock cycle)을 프레임 사이클(frame cycle)이라 하면, 상기 영상 기반 특징점 추적 장치(10)의 경우, 특징점 검출 과정에서는 약 1.01 프레임 사이클이 소요되고, 특징점 추적에서는 특징점 하나당 평균 2550 클록 사이클이 소요된다.
따라서, 130MHz의 동작 주파수에서 640×480 VGA 영상에 대해 386 fps의 처리가 가능하고, 최대 122개의 특징점에 대해 추적이 가능하다.
다음의 [표 4]는 기존 FPGA 기반 특징점 추적기들과의 처리 속도 및 특징점 추적 가능 개수 비교 결과로, 상기 영상 기반 특징점 추적 장치(10)는 기존 대비 더 빠른 속도로 처리 가능함을 나타내었다.
Resolution | FPS | Frequency | Number of feature point | |
비교 대상 1 | 480×720 | 60 | 209.25 | 100 |
비교 대상 2 | 320×240 | 60 | 125.36 | - |
비교 대상 3 | 1024×768 | 182 | 182.29 | 1000 |
본발명 | 640×480 | 386 | 130 | 122 |
scaling | 1024×768 | 153 | 130 | 1165 |
여기서, 상기 비교 대상 1은 G. K. Wonjun Jang, Sungchanoh, "A hardwar implementation of pyramidal KLT feature tracker for driving assistance system," in Proceedings of the 12th International IEEE Conference on Intelligent Transportation Systems, St Louis, MO, USA, Oct. 2009, pp. 220-225.이고, 상기 비교 대상 2는 Y. C. Ham, Y. Shi, "Developing a smart camera for gesture recognition in HCI applications", Proc. 13th IEEE Int. Symp. Consumer Electron. (ISCE), pp. 994-998, May 2009.이고, 상기 비교 대상 3은 Zhilei Chai, Jianbo Shi, "Improving KLT in Embedded Systems by Processing Oversampling Video Sequence in Real-Time", RECONFIG 2011 Reconfigurable Computing and FPGAs International Conference on Reconfigurable Computing and FPGAs International Conference on 2011, pp. 297-302이다.
이와 같이, 상기 영상 기반 특징점 추적 장치(10)는 드론의 호버링을 위한 효율적인 구조의 KLT 특징점 추적 장치를 제공하고, 이의 하드웨어 구조 설계 결과를 제공한다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 Shi-Tomasi 특징점 검출 알고리즘과 PLK 특징점 추적 알고리즘을 간소화하고, 효율적인 하드웨어 설계 및 특징점 검출부와 특징점 추적부의 연산 공유 구조를 통해 저면적, 저전력의 효율적인 구조를 제공한다.
또한, 상기 영상 기반 특징점 추적 장치(10)는 실제 드론환경에서 실험 및 검증을 수행한 결과, 드론에 탑재된 GPS 정보 기반 결과와 유사한 성능을 갖는 것을 확인하였으며, 이의 실시간 검증을 위해 하드웨어 구조 설계를 진행하였다. FPGA 기반 구현 결과, 최대 130MHz의 동작 주파수로 총 2744개의 Slice와 25개의 DSP, 92.85Kbit의 on chip memory로 구현 가능함을 확인하였다. 또한, 640×480 VGA 영상에 대해 최대 386fps로 실시간 동작 가능함을 확인하였다.
이하에서는, 본 발명에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 방법을 도 1 내지 도 18을 참조하여 상세히 설명한다.
도 18은 본 발명의 실시예에 따른 드론 정지 비행을 위한 영상 기반 특징점 추적 방법을 나타낸 흐름도이다.
먼저, 프레임 버퍼(100)는 드론(미도시)으로부터 획득되는 연속된 복수의 이미지(또는 복수의 영상/하방 영상)를 임시 저장한다. 이때, 상기 드론으로부터 획득되는 이미지는 상기 드론의 하부에 구비된 카메라(미도시)를 통해 해당 드론이 위치하는(또는 이동하는) 지역의 하방에 대응하는 이미지일 수 있다.
또한, 제어부(800)는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 검출 모드로 설정한다.
일 예로, 상기 프레임 버퍼(100)는 상기 드론으로부터 획득되는 연속된 제 1 이미지 내지 제 10 이미지를 임시 저장한다.
또한, 상기 제어부(800)는 상기 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 검출 모드로 설정한다(S1810).
이후, 제 1 먹스(200)는 상기 프레임 버퍼(100)로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력한다.
일 예로, 상기 제 1 먹스(200)는 상기 프레임 버퍼(100)로부터 출력되는 제 1 이미지 내지 제 3 이미지 중에서 첫 번째 이미지인 제 1 이미지를 출력한다(S1820).
이후, 헤시안 행렬 연산부(Hessian-matrix calculation unit: HSU)(300)는 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출(또는 특징점 추출) 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산(또는 산출)한다.
즉, 상기 헤시안 행렬 연산부(300)는 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 영상 기반 특징점 추적 장치(10)의 동작 모드에 따라 상기 제 1 먹스(200)로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부(600)로부터 출력되는 보간된 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산한다.
또한, 상기 헤시안 행렬 연산부(300)는 상기 계산된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 복수의 곱셈기를 적용하여 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성하고, 상기 생성된 복수의 변수에 대해 가중치를 각각 적용한 후 가우시안 필터링하여, 헤시안 행렬 연산부(300)의 출력값(또는 가우시안 필터링된 상기 헤시안 행렬 연산부(300)의 출력값)(예를 들어 가중치가 적용된 widx2, widxdy, widy2)을 생성(또는 출력)한다.
일 예로, 사기 특징점 추적부(600)는 상기 제 1 먹스(200)로부터 출력되는 제 1 이미지에 대해 보간 연산을 수행하고, 보간된 제 1 이미지를 상기 헤시안 행렬 연산부(300)로 출력한다.
또한, 상기 영상 기반 특징점 추적 장치(10)의 동작 모드가 특징점 검출 모드인 상태에서, 상기 헤시안 행렬 연산부(300)는 상기 제 1 먹스(200)로부터 출력되는 제 1 이미지와 상기 특징점 추적부(600)로부터 출력되는 보간된 제 1 이미지 중에서 상기 특징점 검출 모드에 따라 상기 제 1 먹스(200)로부터 출력되는 제 1 이미지를 선택한다.
또한, 상기 헤시안 행렬 연산부(300)는 상기 선택된 제 1 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산한다.
또한, 상기 헤시안 행렬 연산부(300)는 상기 계산된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 곱셈기를 각각 적용하여 복수의 변수를 생성하고, 상기 생성된 복수의 변수에 대해 가중치를 적용한 후 가우시안 필터링하여, 헤시안 행렬 연산부(300)의 출력값(예를 들어 widx2, widxdy, widy2)을 생성(또는 출력)한다.
다른 일 예로, 상기 특징점 추적부(600)는 상기 제 1 먹스(200)로부터 출력되는 제 2 이미지에 대해 보간 연산을 수행하고, 보간된 제 2 이미지를 상기 헤시안 행렬 연산부(300)로 출력한다.
또한, 상기 영상 기반 특징점 추적 장치(10)의 동작 모드가 특징점 추적 모드인 상태에서, 상기 헤시안 행렬 연산부(300)는 상기 제 1 먹스(200)로부터 출력되는 제 2 이미지와 상기 특징점 추적부(600)로부터 출력되는 보간된 제 2 이미지 중에서 상기 특징점 추적 모드에 따라 상기 특징점 추적부(600)로부터 출력되는 보간된 제 2 이미지를 선택한다.
또한, 상기 헤시안 행렬 연산부(300)는 상기 선택된 보간된 제 2 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산한다.
또한, 상기 헤시안 행렬 연산부(300)는 상기 계산된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 곱셈기를 각각 적용하여 복수의 변수를 생성하고, 상기 생성된 복수의 변수에 대해 가중치를 적용한 후 가우시안 필터링하여, 헤시안 행렬 연산부(300)의 출력값을 생성(또는 출력)한다(S1830).
이후, 특징점 검출부(400)는 상기 첫 번째 이미지로부터 복수의 특징점을 검출한다.
즉, 상기 특징점 검출부(400)는 상기 헤시안 행렬 연산부(300)로부터의 출력값(또는 가우시안 필터링된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy))에 대해 고윳값을 계산한다.
또한, 상기 특징점 검출부(400)는 상기 계산된 복수의 고윳값을 내림차순으로 정렬한다.
또한, 상기 특징점 검출부(400)는 내림차순으로 정렬된 복수의 고윳값 중에서 영상 경계에 있지 않으면서도 고윳값이 임계값 이상인 지점을 특징점 후보군으로 선정한다. 이때, 상기 특징점 검출부(400)는 상기 내림차순으로 정렬된 복수의 고윳값 중에서 고윳값이 높은 순으로 미리 설정된 개수(예를 들어 128개)를 상기 특징점 후보군으로 선정할 수도 있다.
또한, 상기 특징점 검출부(400)는 상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 일정 거리 내의 특징점을 제외하여 최종적인 복수의 특징점을 선정(또는 선별)한다. 이때, 상기 특징점 검출부(400)는 상기 이미지를 복수의 영역으로 나누고(또는 분할하고), 각 영역 내에서 각각 가장 먼저 입력되는 특징점 후보군 하나만을 최종 특징점에 포함시킬 수 있다.
또한, 상기 특징점 검출부(400)는 상기 선정된(또는 선별된) 복수의 특징점(또는 복수의 특징점의 좌표 정보)을 메모리(700)에 저장한다.
또한, 상기 제어부(800)는 상기 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 검출 모드에서 특징점 추적 모드로 변환(또는 설정)한다.
일 예로, 상기 특징점 검출부(400)는 상기 헤시안 행렬 연산부(300)로부터의 출력값에 대해 고윳값을 계산한다.
또한, 상기 특징점 검출부(400)는 상기 계산된 복수의 고윳값을 내림차순으로 정렬한다.
또한, 상기 특징점 검출부(400)는 내림차순으로 정렬된 복수의 고윳값 중에서 미리 설정된 128개를 상기 특징점 후보군으로 선정한다.
또한, 상기 특징점 검출부(400)는 상기 선정된 특징점 후보군에 포함된 128개의 특징점 중에서 일정 거리 내의 특징점을 제외하여 최종적인 복수의 특징점(예를 들어 100개의 특징점)을 선정한다.
또한, 상기 특징점 검출부(400)는 상기 선정된 100개의 특징점(또는 100개의 특징점의 좌표 정보/좌표값)을 상기 메모리(700)에 저장한다.
또한, 상기 제어부(800)는 상기 영상 기반 특징점 추적 장치(10)의 동작 모드를 특징점 검출 모드에서 특징점 추적 모드로 변환한다(S1840).
이후, 제 2 먹스(500)는 상기 프레임 버퍼(100)로부터 제공되는 연속된 복수의 이미지 중에서 현재 시점의 이미지(또는 앞서 상기 제 1 먹스(200)에서의 출력 이미지 다음 순서의 이미지)를 출력한다.
일 예로, 상기 제 2 먹스(500)는 상기 제 1 프레임 버퍼로부터 출력되는 제 1 이미지 내지 제 3 이미지 중에서 첫 번째 이미지인 상기 제 1 이미지 다음 순서인 제 2 이미지를 출력한다(S1850).
이후, 상기 특징점 추적부(600)는 연속된 복수의 이미지(예를 들어 이전 이미지 및 현재 이미지)에 대해 특징점을 추적하여 모션 벡터를 산출한다.
즉, 상기 특징점 추적부(600)는 상기 제 1 먹스(200)로부터 출력되는 이전 이미지를 보간 처리하고, 상기 제 2 먹스(500)로부터 출력되는 현재 이미지를 보간 처리한다.
또한, 상기 특징점 추적부(600)는 상기 보간된 이전 이미지와 상기 보간된 현재 이미지 간의 명암차(dt)를 계산한다.
또한, 상기 특징점 추적부(600)는 상기 헤시안 행렬 연산부(300)에서 계산된 이전 이미지에 대한 x 방향으로의 명암차(dx)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링하고, 상기 헤시안 행렬 연산부(300)에서 계산된 이전 이미지에 대한 y 방향으로의 명암차(dy)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링한다.
또한, 상기 특징점 추적부(600)는 상기 가우시안 필터링된 값(예를 들어 widxdt, widydt)과, 상기 헤시안 행렬 연산부(300)에서의 출력값(예를 들어 widx2, widxdy, widy2)을 근거로 모션 벡터(예를 들어 (u,v))를 산출한다.
또한, 상기 특징점 추적부(600)는 상기 산출된 모션 벡터와 상기 메모리(700)에 저장된 특징점의 좌표 정보(또는 좌표값)를 서로 가산하여 보정된 특징점의 좌표 정보를 상기 메모리(700)에 저장한다.
또한, 상기 특징점 추적부(600)는 상기 보정된 특징점의 좌표 정보를 입력값으로 하여 미리 설정된 횟수(예를 들어 5회)만큼 모션 벡터를 산출하는 과정을 반복 수행하여 최종적인 모션 벡터를 산출한다.
또한, 상기 특징점 추적부(600)는 상기 드론에서 호버링 기능을 수행할 수 있도록 상기 산출된 모션 벡터를 상기 드론에 제공한다. 이에 따라, 상기 드론은 상기 특징점 추적부(600)로부터 제공되는 모션 벡터를 근거로 해당 드론의 동작을 제어하여 호버링 기능을 수행할 수 있다.
일 예로, 상기 특징점 추적부(600)는 상기 제 1 먹스(200)로부터 출력되는 제 1 이미지를 보간 처리하고, 상기 제 2 먹스(500)로부터 출력되는 제 2 이미지를 보간 처리한다.
또한, 상기 특징점 추적부(600)는 상기 보간된 제 1 이미지와 상기 보간된 제 2 이미지 간의 명암차(dt)를 계산한다.
또한, 상기 특징점 추적부(600)는 상기 헤시안 행렬 연산부(300)에서 계산된 제 1 이미지에 대한 x 방향으로의 명암차(dx)와 상기 계산된 명암차(dt)에 곱셈기를 적용하여 다른 변수(예를 들어 dxdt)를 생성하고, 상기 생성된 다른 변수에 대해 가중치를 적용한 후 가우시안 필터링하고, 상기 헤시안 행렬 연산부(300)에서 계산된 제 1 이미지에 대한 y 방향으로의 명암차(dy)와 상기 계산된 명암차(dt)에 곱셈기를 적용하여 다른 변수(예를 들어 dydt)를 생성하고, 상기 생성된 다른 변수에 대해 가중치를 적용한 후 가우시안 필터링한다.
또한, 상기 특징점 추적부(600)는 상기 가우시안 필터링된 값(예를 들어 widxdt, widydt)과, 상기 헤시안 행렬 연산부(300)에서의 가우시안 필터링된 값(예를 들어 widx2, widxdy, widy2)을 근거로 모션 벡터를 산출한다.
또한, 상기 특징점 추적부(600)는 상기 산출된 모션 벡터와 상기 메모리(700)에 저장된 특징점의 좌표 정보(또는 좌표값)를 서로 가산하여 보정된 특징점의 좌표 정보를 상기 메모리(700)에 저장한다.
또한, 상기 특징점 추적부(600)는 상기 보정된 특징점의 좌표 정보를 입력값으로 하여 미리 설정된 횟수인 5회만큼 모션 벡터를 산출하는 과정을 반복 수행하여 최종적인 모션 벡터를 산출한다.
또한, 상기 특징점 추적부(600)는 상기 드론에서 호버링 기능을 수행할 수 있도록 상기 산출된 모션 벡터를 상기 드론에 제공한다(S1860).
이후, 상기 제어부(800)는 상기 프레임 버퍼(100), 상기 제 1 먹스(200), 상기 헤시안 행렬 연산부(300), 상기 특징점 검출부(400), 상기 제 2 먹스(500), 상기 특징점 추적부(600) 및 상기 메모리(700)의 동작을 제어하여, 미리 설정된 이미지 개수 단위로, 해당 이미지로부터 복수의 특징점을 검출하는 과정, 연속된 복수의 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 과정을 반복 수행한다.
일 예로, 상기 프레임 버퍼(100), 상기 제 1 먹스(200), 상기 헤시안 행렬 연산부(300), 상기 특징점 검출부(400), 상기 제 2 먹스(500), 상기 특징점 추적부(600) 및 상기 메모리(700)는 상기 제어부(800)의 제어에 의해, 미리 설정된 이미지 개수인 10개 단위로, 10개의 이미지 중 첫 번째 이미지에 대해서 특징점을 검출하는 과정을 수행하고, 10개의 이미지 중 연속된 2개의 이미지에 대해서 특징점을 추적하는 과정을 수행한다(S1870).
본 발명의 실시예는 앞서 설명된 바와 같이, 드론으로부터 획득된 연속된 복수의 영상을 근거로 복수의 특징점을 검출하고, 연속된 영상에 대해 검출된 특징점에 대한 추적을 수행하여, 성능 저하가 없으면서도 간소화를 통해 복잡도를 줄일 수 있다.
또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 특징점 검출과 특징점 추적 알고리즘에 공통으로 사용되는 연산 기능을 공유하여, 저전력 및 저면적으로도 우수한 추적 성능 지원이 가능할 수 있다.
또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 모션 벡터 값을 구하는 과정에서 연산 특성을 고려한 효율적인 나눗셈기를 제공하여, 기존의 나눗셈기 대신 연산량을 줄여 효율적인 시스템 운영이 가능할 수 있다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 드론 정지 비행을 위한 영상 기반 특징점 추적 장치
100: 프레임 버퍼 200: 제 1 먹스
300: 헤시안 행렬 연산부 400: 특징점 검출부
500: 제 2 먹스 600: 특징점 추적부
700: 메모리 800: 제어부
310: 제 3 먹스 320: 미분기
330: 복수의 곱셈기 340: 복수의 가우시안 필터
410: 특징점 가능성 연산부 420: 경계 및 임계치 확인부
430: 비최대 억제부 440: 영역 확인부
610: 복수의 보간부 620: 영상차 계산부
630: 복수의 다른 곱셈기 640: 복수의 다른 가우시안 필터
650: 모션 벡터 연산부 660: 모션 벡터 매니저
670: 모션 추정기
100: 프레임 버퍼 200: 제 1 먹스
300: 헤시안 행렬 연산부 400: 특징점 검출부
500: 제 2 먹스 600: 특징점 추적부
700: 메모리 800: 제어부
310: 제 3 먹스 320: 미분기
330: 복수의 곱셈기 340: 복수의 가우시안 필터
410: 특징점 가능성 연산부 420: 경계 및 임계치 확인부
430: 비최대 억제부 440: 영역 확인부
610: 복수의 보간부 620: 영상차 계산부
630: 복수의 다른 곱셈기 640: 복수의 다른 가우시안 필터
650: 모션 벡터 연산부 660: 모션 벡터 매니저
670: 모션 추정기
Claims (36)
- 드론으로부터 획득되는 연속된 복수의 이미지를 임시 저장하는 프레임 버퍼;
상기 프레임 버퍼를 포함하는 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드 또는 특징점 추적 모드로 설정하는 제어부;
상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 제 1 먹스;
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 헤시안 행렬 연산부(Hessian-matrix calculation unit);
상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 특징점 검출부;
상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 제 2 먹스; 및
상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 상기 특징점 추적부를 포함하고,
상기 헤시안 행렬 연산부는,
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 영상 기반 특징점 추적 장치의 동작 모드가 특징점 검출 모드일 때, 상기 제 1 먹스로부터 출력되는 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산하고,
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 영상 기반 특징점 추적 장치의 동작 모드가 특징점 추적 모드일 때, 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산하고,
상기 계산된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 복수의 곱셈기를 적용하여 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성하고,
상기 생성된 복수의 변수에 대해 가중치를 각각 적용한 후 가우시안 필터링하여 상기 동일한 행렬의 원소인 상기 헤시안 행렬 연산부의 출력값을 생성하고,
상기 특징점 추적부는,
상기 제 1 먹스로부터 출력되는 이전 이미지를 보간 처리하고, 상기 제 2 먹스로부터 출력되는 현재 이미지를 보간 처리하고, 상기 보간된 이전 이미지와 상기 보간된 현재 이미지 간의 명암차(dt)를 계산하고,
상기 헤시안 행렬 연산부에서 계산된 이전 이미지에 대한 x 방향으로의 명암차(dx)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링하고, 상기 헤시안 행렬 연산부에서 계산된 이전 이미지에 대한 y 방향으로의 명암차(dy)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링하고,
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값을 근거로 모션 벡터를 산출하고, 상기 산출된 모션 벡터와 메모리에 저장된 특징점의 좌표 정보를 서로 가산하여 보정된 특징점의 좌표 정보를 상기 메모리에 저장하고, 상기 보정된 특징점의 좌표 정보를 입력값으로 하여 미리 설정된 횟수만큼 모션 벡터를 산출하는 과정을 반복 수행하여 최종적인 모션 벡터를 산출하고,
복수의 상기 보정된 특징점의 좌표 정보에 대한 평균치를 계산하고, 상기 계산된 평균치를 드론에 제공하는 모션 추정기를 더 포함하고,
상기 특징점 추적부는,
상기 이전 이미지 및 현재 이미지를 보간 처리하는 복수의 보간부를 더 포함하고,
상기 복수의 보간부는,
특징점 좌표와 피라미드 레벨에 따라 픽셀 정보가 입력되도록 제어하는 윈도우 영역 추출기; 및
특징점 위치에 따른 보정을 수행하는 보간 계산기를 포함하고,
상기 윈도우 영역 추출기는,
상기 메모리에 저장되어 있는 현재 특징점 좌표와 피라미드 레벨 정보를 입력받아 다운-샘플링을 수행하여 특징점 좌표 주변 영역의 이미지 윈도우를 상기 보간 계산기에 입력하고,
상기 보간 계산기는,
x축과 y축 각각의 일차원 보간 연산을 연속적으로 처리하도록 라인 버퍼 구조로 설계되고,
상기 특징점 추적부는,
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값이 입력되어 덧셈값을 연산하는 어큐뮬레이터 세트; 및
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값에 대하여 2×2 인버스 매트릭스 연산을 수행하는 나눗수 계산기, 나뉨수 계산기 및 디바이더 유닛을 포함하고,
상기 디바이더 유닛은
시프터 및 감산기를 이용하여 구현되고,
상기 헤시안 행렬 연산부는
상기 가우시안 필터링을 수행하는 복수의 가우시안 필터를 포함하고,
상기 복수의 가우시안 필터는 각각 2개의 라인 버퍼, 9개의 시프트 레지스터 및 어큐뮬레이션 유닛으로 설계되어 3x3 필터 마스크에 포함되는 값이 동시에 상기 어큐뮬레이션 유닛에 입력되는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 제 1 항에 있어서,
상기 복수의 이미지는,
상기 드론의 하부에 구비된 카메라를 통해 상기 드론이 위치하는 지역의 하방에 대응하는 이미지인 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 특징점 검출부는,
상기 헤시안 행렬 연산부로부터의 출력값에 대해 고윳값을 계산하고, 상기 계산된 복수의 고윳값을 내림차순으로 정렬하고, 상기 내림차순으로 정렬된 복수의 고윳값 중에서 고윳값이 높은 순으로 미리 설정된 개수를 특징점 후보군으로 선정하고, 상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 일정 거리 내의 특징점을 제외하여 최종적인 복수의 특징점을 선정하고, 상기 선정된 복수의 특징점의 좌표 정보를 메모리에 저장하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 제 7 항에 있어서,
상기 특징점 검출부는,
상기 첫 번째 이미지를 복수의 영역으로 나누고, 각 영역 내에서 각각 가장 먼저 입력되는 특징점 후보군 하나만을 최종 특징점에 포함시키는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 삭제
- 삭제
- 프레임 버퍼에 의해, 드론으로부터 획득되는 연속된 복수의 이미지를 임시 저장하는 단계;
제어부에 의해, 상기 제어부를 포함하는 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드로 설정하는 단계;
제 1 먹스에 의해, 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 단계;
헤시안 행렬 연산부에 의해, 상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 단계;
특징점 검출부에 의해, 상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 단계;
상기 제어부에 의해, 상기 영상 기반 특징점 추적 장치의 동작 모드를 특징점 검출 모드에서 특징점 추적 모드로 변환하는 단계;
제 2 먹스에 의해, 상기 프레임 버퍼로부터 제공되는 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 단계; 및
상기 특징점 추적부에 의해, 상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 단계를 포함하고,
상기 동일한 행렬의 원소를 계산하는 단계는,
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 영상 기반 특징점 추적 장치의 동작 모드가 특징점 검출 모드일 때, 상기 제 1 먹스로부터 출력되는 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산하는 과정;
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지에 대해서 상기 영상 기반 특징점 추적 장치의 동작 모드가 특징점 추적 모드일 때, 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산하는 과정;
상기 계산된 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 복수의 곱셈기를 적용하여 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성하는 과정; 및
상기 생성된 복수의 변수에 대해 가중치를 각각 적용한 후 가우시안 필터링하여 상기 동일한 행렬의 원소인 상기 헤시안 행렬 연산부의 출력값을 생성하는 과정을 포함하고,
상기 모션 벡터를 산출하는 단계는,
상기 제 1 먹스로부터 출력되는 이전 이미지를 보간 처리하고, 상기 제 2 먹스로부터 출력되는 현재 이미지를 보간 처리하는 과정;
상기 보간된 이전 이미지와 상기 보간된 현재 이미지 간의 명암차(dt)를 계산하는 과정;
상기 헤시안 행렬 연산부에서 계산된 이전 이미지에 대한 x 방향으로의 명암차(dx)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링하고, 상기 헤시안 행렬 연산부에서 계산된 이전 이미지에 대한 y 방향으로의 명암차(dy)와 상기 계산된 명암차(dt)에 가중치와 곱셈기를 적용한 후 가우시안 필터링하는 과정;
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값을 근거로 모션 벡터를 산출하는 과정;
상기 산출된 모션 벡터와 메모리에 저장된 특징점의 좌표 정보를 서로 가산하여 보정된 특징점의 좌표 정보를 상기 메모리에 저장하는 과정; 및
상기 보정된 특징점의 좌표 정보를 입력값으로 하여 미리 설정된 횟수만큼 모션 벡터를 산출하는 과정을 반복 수행하여 최종적인 모션 벡터를 산출하는 과정을 포함하고,
상기 제 1 먹스로부터 출력되는 이전 이미지를 보간 처리하고, 상기 제 2 먹스로부터 출력되는 현재 이미지를 보간 처리하는 과정은,
윈도우 영역 추출기에 의해 상기 메모리에 저장되어 있는 현재 특징점 좌표와 피라미드 레벨 정보를 입력받아 다운-샘플링을 수행하여 특징점 좌표 주변 영역의 이미지 윈도우를 보간 계산기에 입력하고, 상기 보간 계산기는 x축과 y축 각각의 일차원 보간 연산을 연속적으로 처리하고,
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값을 근거로 모션 벡터를 산출하는 과정은,
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값이 어큐뮬레이터 세트(accumulator)로 입력되어 덧셈값이 연산되고,
상기 가우시안 필터링된 값과 상기 헤시안 행렬 연산부에서의 출력값에 대하여, 나눗수 계산기, 나뉨수 계산기 및 디바이더 유닛에 의해 2×2 인버스 매트릭스 연산이 수행되고,
상기 디바이더 유닛은 시프터 및 감산기를 이용하여 구현되고,
상기 생성된 복수의 변수에 대해 가중치를 각각 적용한 후 가우시안 필터링하여 상기 동일한 행렬의 원소인 상기 헤시안 행렬 연산부의 출력값을 생성하는 과정은,
각각 2개의 라인 버퍼, 9개의 시프트 레지스터 및 어큐뮬레이션 유닛으로 설계되어 3x3 필터 마스크에 포함되는 값이 동시에 상기 어큐뮬레이션 유닛에 입력되는 복수의 가우시안 필터에 의해 수행되는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 방법. - 제 12 항에 있어서,
상기 복수의 이미지는,
상기 드론의 하부에 구비된 카메라를 통해 상기 드론이 위치하는 지역의 하방에 대응하는 이미지인 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 방법. - 삭제
- 제 12 항에 있어서,
상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 단계는,
상기 헤시안 행렬 연산부로부터의 출력값에 대해 고윳값을 계산하는 과정;
상기 계산된 복수의 고윳값을 내림차순으로 정렬하는 과정;
상기 내림차순으로 정렬된 복수의 고윳값 중에서 고윳값이 높은 순으로 미리 설정된 개수를 특징점 후보군으로 선정하는 과정;
상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 일정 거리 내의 특징점을 제외하여 최종적인 복수의 특징점을 선정하는 과정; 및
상기 선정된 복수의 특징점의 좌표 정보를 메모리에 저장하는 과정을 포함하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 방법. - 제 15 항에 있어서,
상기 최종적인 복수의 특징점을 선정하는 과정은,
상기 첫 번째 이미지를 복수의 영역으로 나누고, 각 영역 내에서 각각 가장 먼저 입력되는 특징점 후보군 하나만을 최종 특징점에 포함시키는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 방법. - 삭제
- 미리 설정된 개수 단위의 연속된 복수의 이미지 중에서 첫 번째 이미지를 출력하는 제 1 먹스;
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지로부터 특징점 검출 과정과 특징점 추적 과정에서의 동일한 행렬의 원소를 계산하는 헤시안 행렬 연산부;
상기 첫 번째 이미지로부터 복수의 특징점을 검출하는 특징점 검출부;
상기 연속된 복수의 이미지 중에서 현재 시점의 이미지를 출력하는 제 2 먹스; 및
상기 연속된 복수의 이미지에 포함된 이전 이미지 및 현재 이미지에 대해 특징점을 추적하여 모션 벡터를 산출하는 상기 특징점 추적부를 포함하고,
상기 헤시안 행렬 연산부는,
상기 제 1 먹스로부터 출력되는 첫 번째 이미지 또는 상기 특징점 추적부로부터 출력되는 보간된 첫 번째 이미지를 상기 영상 기반 특징점 추적 장치의 동작 모드에 따라 선택적으로 출력하는 제 3 먹스;
상기 제 3 먹스로부터 출력되는 상기 첫 번째 이미지 또는 상기 보간된 첫 번째 이미지로부터 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 계산하는 미분기;
상기 미분기에서 계산된 첫 번째 이미지 또는 보간된 첫 번째 이미지와 관련한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)에 대해 곱셈 기능을 적용하여 상기 특징점 검출 과정과 특징점 추적 과정에서 동일하게 사용되는 복수의 변수를 생성하는 복수의 곱셈기; 및
상기 복수의 곱셈기에서 생성된 복수의 변수에 대해서 영상의 스무딩 처리를 수행하여 상기 동일한 행렬의 원소를 계산하는 복수의 가우시안 필터를 포함하고,
상기 복수의 곱셈기는,
상기 미분기에서 계산된 첫 번째 이미지 또는 보간된 첫 번째 이미지와 관련한 x 방향으로의 명암차(dx)를 두 입력으로 하여 곱셈 기능을 수행하여 제 1 출력값(dx2)을 출력하는 제 1 곱셈기;
상기 미분기에서 계산된 첫 번째 이미지 또는 보간된 첫 번째 이미지와 관련한 x 방향으로의 명암차(dx)와 y 방향으로의 명암차(dy)를 두 입력으로 하여 곱셈 기능을 수행하여 제 2 출력값(dxdy)을 출력하는 제 2 곱셈기; 및
상기 미분기에서 계산된 첫 번째 이미지 또는 보간된 첫 번째 이미지와 관련한 y 방향으로의 명암차(dy)를 두 입력으로 하여 곱셈 기능을 수행하여 제 3 출력값(dy2)을 출력하는 제 3 곱셈기를 포함하고,
상기 복수의 가우시안 필터는,
상기 제 1 곱셈기로부터 출력되는 상기 제 1 곱셈기의 출력값(dx2)에 가중치를 적용한 후, 가우시안 필터를 적용하여 출력하는 제 1 가우시안 필터;
상기 제 2 곱셈기로부터 출력되는 상기 제 2 곱셈기의 출력값(dxdy)에 가중치를 적용하여 출력하는 제 2 가우시안 필터; 및
상기 제 3 곱셈기로부터 출력되는 상기 제 3 곱셈기의 출력값(dy2)에 가중치를 적용하여 출력하는 제 3 가우시안 필터를 포함하고,
상기 헤시안 행렬 연산부는,
특징점 검출 과정에 사용되는 Shi-Tomasi 알고리즘과 특징점 추적 과정에 사용되는 PLK(Pyramidal Lucas-Kanade) 알고리즘의 동일한 행렬의 원소를 계산하는 것을 특징으로 하고,
상기 특징점 추적부는,
상기 제 1 먹스로부터 출력되는 이전 이미지 및 상기 제 2 먹스로부터 출력되는 현재 이미지에 대한 보간 기능을 각각 수행하는 복수의 보간부;
상기 복수의 보간부로부터 제공되는 보간된 이전 이미지와 보간된 현재 이미지 간의 명암차(dt)를 계산하는 영상차 계산부;
상기 헤시안 행렬 연산부에서 계산된 이전 이미지에 대한 명암차(dx, dy)와 상기 계산된 보간된 이전 이미지와 보간된 현재 이미지 간의 명암차(dt)에 대해 곱셈 기능을 적용하여 복수의 다른 변수를 생성하는 복수의 다른 곱셈기;
상기 복수의 다른 곱셈기에서 생성된 복수의 다른 변수에 대해서 영상의 스무딩 처리를 수행하는 복수의 다른 가우시안 필터; 및
상기 복수의 다른 가우시안 필터의 출력값(widxdt, widydt)과, 상기 헤시안 행렬 연산부에서의 출력값(widx2, widxdy, widy2)을 근거로 모션 벡터를 산출하는 모션 벡터 연산부를 포함하고,
상기 복수의 보간부는,
상기 제 1 먹스로부터 출력되는 이전 이미지에 대한 보간 기능을 수행하고, 상기 수행에 따른 보간된 이전 이미지를 상기 헤시안 행렬 연산부에 포함된 제 3 먹스 및 상기 영상차 계산부에 제공하는 제 1 보간부; 및
상기 제 2 먹스로부터 출력되는 현재 이미지에 대한 보간 기능을 수행하고, 상기 수행에 따른 보간된 현재 이미지를 상기 영상차 계산부에 제공하는 제 2 보간부를 포함하고,
상기 복수의 다른 곱셈기는,
상기 헤시안 행렬 연산부에 포함된 미분기에서 계산된 첫 번째 이미지 또는 이전 이미지와 관련한 x 방향으로의 명암차(dx)와, 상기 영상차 계산부에 의해 계산된 이미지 간의 명암차(dt)를 두 입력으로 하여 곱셈 기능을 수행하여 제 4 출력값(dxdt)을 출력하는 제 4 곱셈기; 및
상기 미분기에서 계산된 첫 번째 이미지 또는 이전 이미지와 관련한 y 방향으로의 명암차(dy)와 상기 영상차 계산부에 의해 계산된 이미지 간의 명암차(dt)를 두 입력으로 하여 곱셈 기능을 수행하여 제 5 출력값(dydt)을 출력하는 제 5 곱셈기를 포함하고,
상기 복수의 다른 가우시안 필터는,
상기 제 4 곱셈기로부터 출력되는 상기 제 4 곱셈기의 출력값(dxdt)에 가중치를 적용한 후, 가우시안 필터를 적용하여 출력하는 제 4 가우시안 필터; 및
상기 제 5 곱셈기로부터 출력되는 상기 제 5 곱셈기의 출력값(dydt)에 가중치를 적용하여 출력하는 제 5 가우시안 필터를 포함하고,
상기 특징점 추적부는,
상기 모션 벡터 연산부로부터 산출된 모션 벡터와 메모리에 저장된 특징점의 좌표 정보를 서로 가산하여 보정된 특징점의 좌표 정보를 생성하는 모션 벡터 매니저; 및
복수의 상기 보정된 특징점의 좌표 정보에 대한 평균치를 계산하고, 상기 계산된 평균치를 드론에 제공하는 모션 추정기를 더 포함하고,
상기 복수의 보간부는,
특징점 좌표와 피라미드 레벨에 따라 픽셀 정보가 입력되도록 제어하는 윈도우 영역 추출기; 및
특징점 위치에 따른 보정을 수행하는 보간 계산기를 포함하고,
상기 윈도우 영역 추출기는,
메모리에 저장되어 있는 현재 특징점 좌표와 피라미드 레벨 정보를 입력받아 다운-샘플링을 수행하여 특징점 좌표 주변 영역의 이미지 윈도우를 상기 보간 계산기에 입력하고,
상기 보간 계산기는,
x축과 y축 각각의 일차원 보간 연산을 연속적으로 처리하도록 라인 버퍼 구조로 설계되고,
상기 모션 벡터 연산부는
상기 복수의 다른 가우시안 필터의 출력값(widxdt, widydt)과 상기 헤시안 행렬 연산부에서의 출력값(widx2, widxdy, widy2)이 입력되어 덧셈값을 연산하는 어큐뮬레이터 세트; 및
상기 복수의 다른 가우시안 필터의 출력값과 상기 헤시안 행렬 연산부에서의 출력값에 대하여 2×2 인버스 매트릭스 연산을 수행하는 나눗수 계산기, 나뉨수 계산기 및 디바이더 유닛을 포함하고,
상기 디바이더 유닛은
시프터 및 감산기를 이용하여 구현되고,
상기 복수의 가우시안 필터는 각각 2개의 라인 버퍼, 9개의 시프트 레지스터 및 어큐뮬레이션 유닛으로 설계되어 3x3 필터 마스크에 포함되는 값이 동시에 상기 어큐뮬레이션 유닛에 입력되는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 제 18 항에 있어서,
상기 미분기는,
상기 제 3 먹스의 출력값을 소벨 필터를 사용하여 x 방향과 y 방향으로의 명암차를 계산하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 삭제
- 삭제
- 제 18 항에 있어서,
상기 특징점 검출부는,
상기 헤시안 행렬 연산부로부터의 출력값에 대해 고윳값을 계산하는 특징점 가능성 연산부;
상기 특징점 가능성 연산부에 의해 계산된 고윳값을 근거로 영상 경계에 있지 않으면서도 고윳값이 임계값 이상인 지점을 특징점 후보군으로 선정하는 경계 및 임계치 확인부;
상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 고윳값 비교를 통해 근접 후보군에 대한 배제 처리 기능을 수행하는 비최대 억제부; 및
상기 선정된 특징점 후보군에 포함된 다수의 특징점 중에서 일정 거리 내의 특징점을 제외하여 최종적인 복수의 특징점을 선정하는 영역 확인부를 포함하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 제 24 항에 있어서,
상기 경계 및 임계치 확인부는,
상기 계산된 복수의 고윳값을 내림차순으로 정렬하고, 상기 내림차순으로 정렬된 복수의 고윳값 중에서 영상 경계에 있지 않으면서도 고윳값이 임계값 이상인 지점을 특징점 후보군으로 선정하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 제 25 항에 있어서,
상기 경계 및 임계치 확인부는,
상기 내림차순으로 정렬된 복수의 고윳값 중에서 고윳값이 높은 순으로 미리 설정된 개수를 상기 특징점 후보군으로 선정하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 제 24 항에 있어서,
상기 영역 확인부는,
상기 첫 번째 이미지를 복수의 영역으로 나누고, 각 영역 내에서 각각 가장 먼저 입력되는 특징점 후보군 하나만을 최종 특징점에 포함시키는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 제 18 항에 있어서,
상기 보간 계산기는,
계산된 모션 벡터로부터 보정된 특징점 좌표값이 정수가 아닌 실수값이기 때문에, 인접한 네 개의 픽셀의 명암값에 따른 바이리니어 보간(bilinear interpolation)을 통해 추적된 특징점 좌표의 밝기값을 계산하는 것을 특징으로 하는 드론 정지 비행을 위한 영상 기반 특징점 추적 장치. - 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190137314A KR102340125B1 (ko) | 2019-10-31 | 2019-10-31 | 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190137314A KR102340125B1 (ko) | 2019-10-31 | 2019-10-31 | 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210051707A KR20210051707A (ko) | 2021-05-10 |
KR102340125B1 true KR102340125B1 (ko) | 2021-12-16 |
Family
ID=75917726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190137314A KR102340125B1 (ko) | 2019-10-31 | 2019-10-31 | 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102340125B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102585365B1 (ko) * | 2021-10-25 | 2023-10-06 | 한남대학교 산학협력단 | 볼륨메트릭 3d 모델 복원 품질향상을 위한 드론 촬영 제어 방법 |
KR102666963B1 (ko) * | 2021-11-15 | 2024-05-17 | 국방과학연구소 | 비행 경로 산출 방법, 비행 경로 산출 장치 및 상기 방법을 실행시키기 위하여 기록매체에 저장된 컴퓨터 프로그램 |
CN116560394B (zh) * | 2023-04-04 | 2024-06-07 | 武汉理工大学 | 一种无人机群位姿随动调整方法、装置、电子设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101303124B1 (ko) | 2012-05-31 | 2013-09-09 | 삼성에스디에스 주식회사 | 특징점 기술자에 의한 객체 추적장치 및 방법, 그리고 에러 특징점 제거장치 및 방법 |
-
2019
- 2019-10-31 KR KR1020190137314A patent/KR102340125B1/ko active IP Right Grant
Non-Patent Citations (3)
Title |
---|
Louis H.Buck, "Resource-Constrained Machine Vision on a Micro Air Vehicle", (2013.07.31.) 1부.* |
Zhilei Chai외 1인, "Improving KLT in Embedded Systems by Processing Oversampling Video Sequence in real-time", 2011 International Conference on Reconfigurable Computing and FPGAs, (2011.12.02.) 1부.* |
한동일외 1인, "실시간 고성능 특징점 추출 엔진을 위한 효율적인 메모리 구조 설계", 대한전자공학회 학술대회, (2012.06.30.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR20210051707A (ko) | 2021-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bai et al. | Adaptive dilated network with self-correction supervision for counting | |
US10672131B2 (en) | Control method, non-transitory computer-readable storage medium, and control apparatus | |
KR102340125B1 (ko) | 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 | |
US10269148B2 (en) | Real-time image undistortion for incremental 3D reconstruction | |
Badenas et al. | Motion-based segmentation and region tracking in image sequences | |
Xu et al. | A segmentation based variational model for accurate optical flow estimation | |
US20180315232A1 (en) | Real-time incremental 3d reconstruction of sensor data | |
CN110631554A (zh) | 机器人位姿的确定方法、装置、机器人和可读存储介质 | |
Jellal et al. | LS-ELAS: Line segment based efficient large scale stereo matching | |
Ali et al. | Hardware/software co-design of a real-time kernel based tracking system | |
CN103106667A (zh) | 一种面向遮挡和场景变换的运动对象追踪方法 | |
CN110390685B (zh) | 一种基于事件相机的特征点跟踪方法 | |
CN102509071B (zh) | 光流计算系统和方法 | |
Ttofis et al. | Towards accurate hardware stereo correspondence: A real-time fpga implementation of a segmentation-based adaptive support weight algorithm | |
CN111914756A (zh) | 一种视频数据处理方法和装置 | |
Lin et al. | Optimizing ZNCC calculation in binocular stereo matching | |
KR20160123871A (ko) | 영상 광류를 추정하는 방법 및 이를 위한 장치 | |
El‐Shafie et al. | Survey on hardware implementations of visual object trackers | |
CN109636828A (zh) | 基于视频图像的物体跟踪方法及装置 | |
CN105447881A (zh) | 基于多普勒的雷达图像分割及光流 | |
CN116091574A (zh) | 一种基于平面约束与位置约束的3d目标检测方法及系统 | |
CN114859938A (zh) | 机器人、动态障碍物状态估计方法、装置和计算机设备 | |
CN110263881A (zh) | 一种结合局部不对称几何的多模型拟合方法 | |
CN113570667B (zh) | 视觉惯导补偿方法、装置及存储介质 | |
Vemulapati et al. | ORB-based SLAM accelerator on SoC FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |