KR20200015589A - 동적 비전 센서를 위한 블록-매칭 광학 흐름 및 스테레오 비전 - Google Patents

동적 비전 센서를 위한 블록-매칭 광학 흐름 및 스테레오 비전 Download PDF

Info

Publication number
KR20200015589A
KR20200015589A KR1020197038293A KR20197038293A KR20200015589A KR 20200015589 A KR20200015589 A KR 20200015589A KR 1020197038293 A KR1020197038293 A KR 1020197038293A KR 20197038293 A KR20197038293 A KR 20197038293A KR 20200015589 A KR20200015589 A KR 20200015589A
Authority
KR
South Korea
Prior art keywords
time slice
event
time
frame
slice frame
Prior art date
Application number
KR1020197038293A
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 유니베르시태트 취리히
Publication of KR20200015589A publication Critical patent/KR20200015589A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/269Analysis of motion using gradient-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/285Analysis of motion using a sequence of stereo image pairs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • G06T2207/10021Stereoscopic video; Stereoscopic image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

본 발명은 이벤트-기반 비전 센서를 이용한 광학 흐름의 계산에 관한 것이다.

Description

동적 비전 센서를 위한 블록-매칭 광학 흐름 및 스테레오 비전
본 발명은 동적 비전 센서(DVS)와 같은 이벤트-기반 비전 센서(예를 들어, US7,728,269)를 사용하여 광학 흐름을 계산하기 위한 방법 및 장치에 관한 것이다. 특히, 본 발명은 FPGA에서 OF를 계산하기 위한 이벤트-기반 블록 매칭 알고리즘에 관한 것이다.
이하에서는 이러한 이벤트-기반 비전 센서를 이벤트-기반 카메라 또는 DVS라고도 한다.
광학 흐름(OF, optical flow)의 빠르고 저전력 계산은 로봇 공학에서 잠재적으로 유용하다. 이벤트-기반 비전 센서는 빠르고 희소 출력(sparse output)을 생성하고 높은 동적 범위를 갖지만 기존 OF 알고리즘은 프레임-기반이며 이러한 이벤트-기반 카메라와 직접 사용할 수 없다.
이전의 DVS OF 방법은 고밀도 텍스처형 입력(textured input)에서 잘 작동하지 않으며 논리 회로에서 구현하도록 설계되지 않았다.
광학 흐름(OF) 측정은 항상 컴퓨터 비전의 핵심 주제였다; 이는 세분화, 3D 재구성 및 탐색에 널리 사용된다. 곤충과 포유류의 움직임 인식을 이해하기 위해 신경 과학의 맥락에서 처음으로 연구되었다. 컴퓨터 비전에서 OF는 공간을 통한 카메라/비전 센서 이동에 의해 유발된 모션 필드(motion field)를 설명한다.
특히, 물체 및/또는 비전 센서/카메라가 움직이는 (예를 들어, 3D) 장면의 이미지 시퀀스에서, (카메라 또는 비전 센서 중심 좌표계에서) 상기 장면의 각 지점은 3D를 따라 이동하며, 이미지 평면 상에 투영될 때, 속도 dr(t)/dt를 갖는 2D 경로 r(t)=(x(t), y(t))를 생성한다. 모든 가시 표면(visible surface) 포인트에 대한 2D 속도를 모션 필드라고 한다. 광학 흐름 계산의 목표는 모션 필드에 대한 근사값을 계산하는 것이다.
두 가지 잘 알려진 저렴한 광학 흐름 알고리즘은 Lucas-Kanade[1] 및 Horn-Schunck[2] 방법이다. 많은 OF 방법의 핵심은 각 이미지 또는 기능 위치에서 가장 가능성 있는 하나를 선택하기 위해 가능한 흐름을 검색하는 것이다. 고밀도 이미지 블록을 사용한 이러한 검색은 비용이 많이 들고 임베디드 플랫폼에서 실시간으로 계산하기가 어렵다.
이벤트-기반 비전 센서는 정기적인 샘플 구동이 아닌 데이터-구동형(data-driven)이다. 일반 샘플 구동 수단 카메라는 일정한 간격으로 출력 데이터를 전송하므로 일반적으로 프레임 기반 카메라로 표시된다. 그러나 이벤트-기반 비전 센서/카메라의 출력은 고정된 샘플 간격이 아니라 밝기 (또는 빛의 강도) 변화에 의해 구동된다. 따라서 새로운 OF 방법을 설계해야 한다.
Benosman et al[3]은 2D 이벤트와 타임스탬프를 3D 공간으로 결합하고 OF는 로컬 평면 보정(plane fitting)에 의해 획득되는 시간-표면 방법을 제안했다. [4]는 이벤트의 짧은 2D 히스토그램을 수집하고 그에 대한 밝기 항상성(brightness-constancy) 제약을 해결하는 Lucas-Kanade 그래디언트 기반 방법을 제안했다. 2015년에 Conradt[5]는 ARM 7 마이크로컨트롤러에서 실시간 DVS 광학 흐름 알고리즘 구현을 제안했다. Barranco[6]는 고주파수 텍스처 영역에 대해 더 비싼 위상 기반 방법을 제안했다. [7]은 Java 프레임 워크 jAER[8]에서 이러한 방법 중 몇 가지를 다시 구현하고 방향 에지(oriented edge)의 비행시간을 기반으로 가장 빠른 jAER 방법과 비교했다. 결론은 모든 방법이 예리하고 희박한(sparse) 가장자리에 대해 비슷한 정확도를 제공했지만 기본 가정(예를 들어 부드러운 기울기 또는 격리된 가장자리)이 위반되므로 질감이 있거나 공간 주파수가 낮은 입력에서 모두 실패하는 것이다. 이 논문은 또한 카메라 회전으로부터 실제 값 전반적인 광학 흐름(ground truth global optical flow)을 얻기 위해 통합 카메라 관성 측정 장치(IMU, inertial measurement unit)의 사용을 소개하고 여기에서 사용하는 240x180 픽셀 DVS 카메라의 벤치 마크 데이터 세트를 발표했다. 기존 작업의 대부분은 PC 소프트웨어 알고리즘 [3] [4] [6] [7]을 기반으로 한다. [5]는 내장형 시스템을 기반으로 하며 실시간으로 작동할 수 있지만 공간을 통한 카메라 변환이 아닌 카메라 회전만을 특징으로 하며, 이벤트의 직접 TOF(time of flight) 사용은 조밀한 텍스처형 장면에서 잘 작동하지 않고 가장자리에 대한 조리개 문제가 발생하지 않는다.
비디오 기술에서 OF를 모션 추정(ME, motion estimation)이라고 하며 MPEG-4 및 H.263과 같은 비디오 압축 표준에 대한 비디오 시퀀스의 시간적 중복성(temporal redundancy)을 활용하는 데 널리 사용된다[9]. ME의 파이프 라인에는 블록 매칭(block matching)이 포함된다. 블록 매칭은 최적의 매치를 찾기 위하여 프레임간에 사각형 픽셀 블록이 일치하는 것을 의미한다. 블록 매칭은 계산 비용이 많이 든다. 이것이 바로 전용 논리 회로에서 널리 구현되는 이유이다. 이 문제를 해결하기 위해, 블록 매칭에 기초한 로직 ME 구현의 예가 Shahrukh[9]에 제시되어 있다.
상기에 기초하여, 본 발명에 의해 해결되는 문제는 동적 비전 센서를 사용하여 광학 흐름을 계산하기 위한, 특히 스테레오 비전을 계산하기 위한 효율적인 방법 및 장치를 제공하는 것이다.
본 발명의 이들 측면의 바람직한 실시 예는 이하의 청구 범위에 기재되고/되거나 후술된다.
제1항에 따르면, 이벤트-기반 비전 센서에 의해 캡처된 장면에서 광학 흐름을 계산하는 방법이 개시되고, 상기 비전 센서는 복수의 픽셀을 포함하고 변경 이벤트 스트림을 출력하도록 구성되고,
각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 (예를 들어 마이크로초) 타임스탬프 (즉, 상기 변경 이벤트가 발생한 시간), 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터(예를 들어 이진 극성(binary polarity))를 포함하고,
- 변경 이벤트는 적어도 3개의 타임 슬라이스 프레임, 즉 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t), 시간 t-d에서 시작하는 제2타임 슬라이스 프레임(t-d) 및 시간 t-2*d에서 시작하는 제3타임 슬라이스 프레임(t-2*d)에 축적되고, 여기서 d는 슬라이스 교환(예를 들어, 회전) 방법에 따라 특히 상이한 시간 량(different amount of time)을 포함하는 각각의 타임 슬라이스 프레임의 지속 시간(duration)이고,
- 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 상기 현재 제1타임 슬라이스 프레임에 축적되고(상기 현재 타임 슬라이스 프레임은 상기 변경 이벤트가 발생하는 대응 픽셀에서 각각의 변경 이벤트를 축적함),
- 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 상기 제2타임 슬라이스 프레임(t-d)의 기준 블록은 제3타임 슬라이스 프레임(t-2*d)의 검색 블록과 비교되고, 상기 기준 블록은 현재 제1타임 슬라이스 프레임(t)에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고(특히, 가장 최근의 변경 이벤트의 상기 픽셀에 대한 가장 유사한 검색 블록의 중심 픽셀의 상대적 위치는 가장 최근의 변경 이벤트의 상기 픽셀의 위치에서의 광학 흐름을 나타내고; 특히 상기 광학 흐름의 방향은 가장 최근의 변경 이벤트의 상기 픽셀로부터 가장 유사한 검색 블록의 중앙 픽셀을 가리키는 속도 벡터에 의해 주어지고, 상기 속도는 상기 속도 벡터의 길이를 제3타임 슬라이스 프레임(t-2*d)의 끝과 제2타임 슬라이스 프레임(t-d) 사이의 시간 d의 지속 시간으로 나눈 값으로 주어진다.);및
- 현재의 제1타임 슬라이스 프레임(t)은 제2타임 슬라이스 프레임(t-d)이 되고, 제2타임 슬라이스 프레임(t-d)은 제3타임 슬라이스 프레임(t-2*d)이 되고, 제3타임 슬라이스 프레임(t-2*d)은 클리어되고 현재 제1타임 슬라이스 프레임(t)이 되도록 상기 3개의 타임 슬라이스 프레임(t, t-d, t-2*d)이 주기적으로 교환(예를 들어 회전)된다.
특히, 본 발명은 새로운 블록 매칭 기반 이벤트-기반 비전 센서 OF 알고리즘을 제안한다. 이 알고리즘은 소프트웨어와 FPGA 모두에서 구현되었다. 특히, 일 실시 예에 따르면, 각 이벤트에 대해, 운동 방향(motion direction)을 9개의 방향 중 하나로 계산한다. 특히, 운동 속도는 샘플 간격에 의해 설정된다. 결과는 이전 방법에 비교하여 평균 각도 오차가 30% 향상될 수 있음을 보여준다. OF는 데스크탑 PC에서 실행되는 Java 소프트웨어 구현보다 20배 빠른, 이벤트 당 0.2μs (11 clock cycles)로 50MHz 클록으로 FPGA에서 계산될 수 있다. 샘플 데이터는 이 방법이 가장자리(edge), 스파스 피처(sparse feature) 및 고밀도 텍스처가 지배적인 장면에서 작동함을 보여준다.
특히, 상기 이벤트-기반 비전 센서의 각 픽셀은 상기 픽셀에 의해 생성된 광전류(photocurrent)와 관련된 신호를 (예를 들어, 단조적으로(monotonically))생성하며, 상기 광전류는 각 픽셀에 충돌하는(impinging) 광의 강도에 비례하고, 각각의 픽셀에 충돌하는 광으로 인한 각각의 신호가 각각의 픽셀로부터의 마지막 변경 이벤트 이후에 제1임계값보다 큰 양만큼 증가하거나 제2임계값보다 큰 양만큼 감소할 때 각각의 픽셀은 단지 변경 이벤트를 출력한다.
예를 들어, 상기 (예를 들여, 픽셀 회로인) 픽셀들은 상기 광전류를 각각의 픽셀의 광전류의 (예를 들어, 자연) 로그(logarithm) 신호로 변환하도록 설계된다. 그러나 예를 들어, 다른 단조로운 가변 함수(monotonically varying function), 예를 들어 제곱근 함수(square root function)를 상기 광전류에, 또는 반응을 최적화하기 위하여(예를 들어 시간-평균 입력 값을 중심으로 반응의 민감한 범위를 최적으로 제어하기 위해) 시간이 지남에 따라 천천히 변하는 다른 함수를 적용함으로써 픽셀들(또는 픽셀 회로들)은 또한 예를 들어 광전류를 신호로 변환하도록 설계될 수 있다. 특히, 각 픽셀의 필수 특징은 광전류의 변화를 감지하고 이러한 변화에 응답하여 변경 이벤트를 방출한다는 것이며, 여기서, 이러한 변경 이벤트는 모든 픽셀로부터의 신호를 일정한 속도로 출력하는 표준 비전 센서와 달리 비동기 이벤트(asynchronous events)이다.
본 발명에 따른 방법의 일 실시 예에 따르면, 상기 거리 메트릭은 기준 블록 픽셀과 검색 블록 픽셀 사이의 절대 차이(absolute difference)의 합이다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 이벤트-기반 비전 센서의 원래(original) 어드레스 공간을 서브 샘플링하는 복수의 세트의 타임 슬라이스 프레임이 사용된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임의 상기 교환(예를 들어, 회전)은 일정한 시간 간격으로 수행된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임의 상기 교환(예를 들어, 회전)은 각각의 제1타임 슬라이스 프레임에 축적된 특정, 특히 일정한 총 이벤트 카운트에서 수행된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임의 상기 교환은 현재의 제1타임 슬라이스의 임의의 서브 영역이 특정된(specified) 수의 변경 이벤트를 축적할 때 수행된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임의 상기 교환(예를 들어, 회전)은 상기 타임 슬라이스 프레임들의 마지막 교환 이후의 장면의 총 통합 모션(total integrated motion)이 임계량을 초과할 때 수행된다. 특히, 전체 통합된 모션(integrated motion)은 누적된 측정된 광학 흐름, 예를 들어 측정된 국부 광학 흐름의 벡터 합의 길이 또는 광학 흐름(속도) 벡터의 크기의 합의 요약 통계(summary statistic)이다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임의 상기 교환(예를 들어, 회전) 이후의 상기 지속 시간 d는 기준 블록과 각각의 가장 유사한 검색 블록(most similar search block) 사이의 평균 매치 거리(D)에 따라 제어되며, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정된다.
또한, 본 발명에 따른 방법의 일 실시 예에 따르면, 상기 총 이벤트 카운트는 기준 블록과 각각의 가장 유사한 검색 블록 사이의 평균 매칭 거리(D)에 따라 제어되며, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정된다.
또한, 본 발명에 따른 방법의 일 실시 예에 따르면, 상기 특정된(specified) 수는 기준 블록과 각각의 가장 유사한 검색 블록 사이의 평균 매칭 거리(D)에 따라 제어되며, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임은 각각 이진 비트맵 타임 슬라이스 프레임(binary bitmap time slice frame)을 형성한다.
또한, 본 발명에 따른 방법의 대안적인 실시 예에 따르면, 상기 제1, 제2 및 제3타임 슬라이스 프레임은 각각 멀티비트 픽셀 타임 슬라이스 프레임(multibit pixel time slice frame)을 형성한다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 각각의 제3타임 슬라이스 프레임은 상기 가장 유사한 검색 블록을 찾기 위해 철저하게(exhaustively) 검색된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 가장 유사한 검색 블록을 찾기 위해 다이아몬드 검색(Diamond Search)이 사용된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 이상값(outlier)을 거부하기 위해 충분히 사전-정의된 유효 픽셀의 수를 포함하는 기준 및 검색 블록만이 비교되며, 여기서 유효 픽셀은 변경 이벤트가 누적된 픽셀이다.
또한, 본 발명에 따른 방법의 일 실시 예에 따르면, 상기 가장 유사한 검색 블록은 (예를 들어, 거리 메트릭에 따른) 기준 블록과 상기 가장 유사한 검색 블록 사이의 거리가 거리 임계값(distance threshold)을 초과하는 경우 이상값으로 거부된다. 여기서, 노션 거리(notion distance)는 블록 비유사성(block dissimilarity)에 관한 것이며, 즉 블록 비 유사성 척도(block dissimilarity measure)이다. 특히, 가장 일치하는(best matching) 기준 및 검색 블록이 여전히 너무 다르면 상기 매치를 거부하고 흐름 이벤트를 출력하지 않아야 한다.
또한, 본 발명에 따른 방법의 일 실시 예에 따르면, 본 발명에 따른 방법의 실시간 성능을 향상시키기 위하여, 상기 가장 최근의 변경 이벤트(most recent change events) 중 일부는 현재의 제1타임 슬라이스에 축적되지만 스킵되어 기분 블록의 센터링(centering)에 사용되지 않는다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 스킵은 본 발명에 따른 방법을 수행하는데 사용되는 하드웨어/장치가 여전히 이전(previous) 변경 이벤트로부터의 광학 흐름을 바쁘게 처리하는 중일 경우에 수행된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 픽셀 위치, 속도 벡터, 특히 속도 벡터 방향에서의 속도를 포함하는 광학 흐름 이벤트는 각각의 기준 블록 및 가장 유사한 검색 블록, 특히-속도와 관련하여-지속 시간 d로부터 계산된다(위 참조).
또한, 본 발명에 따른 방법의 실시 예에 따르면, 상기 광학 흐름 이벤트는 규칙적으로 이격된(regularly-spaced), 선택적으로 서브-샘플링된 모션 필드에 축적된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 기준 블록과 검색 블록 사이의 절대 거리(absolute distances)의 합은 병렬로 계산된다.
또한, 본 발명에 따른 방법의 실시 예에 따르면, 절대 거리의 최소 합은 병렬로 계산된다.
본 발명에 따른 방법의 실시 예에 따르면, 좌측 및 우측 이벤트-기반 비전 센서로부터 스테레오 비전을 계산하는 방법이 개시되며, 각각의 이벤트-기반 비전 센서는 복수의 픽셀을 포함하고 변경 이벤트 스트림(stream of change event)을 출력하도록 구성되며, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 (예를 들어 마이크로초) 타임스탬프 (즉, 상기 변경 이벤트가 발생한 시간), 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터(예를 들어 이진 극성(binary polarity))를 포함하고,
- 각각의 비전 센서에 대해 변경 이벤트는 적어도 2개의 타임 슬라이스 프레임, 즉 각각 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임, 각각 시간 t-d에서 시작하는 제2타임 슬라이스 프레임에 축적되고,
- 좌측 비전 센서의 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 좌측 비전 센서의 현재 제1타임 슬라이스 프레임에 누적되고, 및 상기 우측 비전 센서의 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 우측 비전 센서의 현재 제1타임 슬라이스 프레임에 축적되고(각각의 현재 타임 슬라이스 프레임은 상기 변경 이벤트가 발생하는 대응 픽셀에서 각각의 변경 이벤트를 축적함),
- 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 우측 비전 센서의 제2타임 슬라이스 프레임의 기준 블록은 좌측 비전의 센서의 제2타임 슬라이스 프레임의 검색 블록과 비교되고, 상기 기준 블록은 우측 비전 센서의 현재 제1타임 슬라이스 프레임에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 (예를 들어 직사각형(square)의) 픽셀을 포함하고, 상기 거리 메트릭(distance metric)을 사용하여 추가 기준 블록과 가장 유사한 추가 검색 블록을 찾기 위하여 좌측 비전 센서의 제2타임 슬라이스 프레임의 추가 기준 블록은 우측 비전의 센서의 제2타임 슬라이스 프레임의 추가 검색 블록과 비교되고, 상기 추가 기준 블록은 좌측 비전 센서의 현재 제1타임 슬라이스 프레임에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 (예를 들어 직사각형(square)의) 픽셀을 포함하고,
- 좌측 비전 센서의 현재 제1타임 슬라이스 프레임은 좌측 비전 센서의 제2타임 슬라이스 프레임이 되고, 우측 비전 센서의 제1타임 슬라이스 프레임은 우측 비전 센서의 제2타임 슬라이스 프레임이 되고, 좌측 및 우측 비전 센서의 제1타임 슬라이스 프레임이 클리어되도록 4개의 타임 슬라이스 프레임(t, t, (t-d), (t-d))이 주기적으로 및 동시에 교환(예를 들어 회전)된다.
특히, 스테레오 비전을 계산하는 방법은 광학 흐름의 계산을 위한 본 발명에 따른 방법과 관련하여 설명된 청구 범위의 특징/주제를 더 특징으로 할 수 있다.
본 발명의 또 다른 실시예에 따르면, 광학 흐름을 계산하기 위한 장치가 개시된다.
이벤트-기반 비전 센서에 의해 캡처된 장면에서 광학 흐름을 계산하기 위한 장치는 복수의 픽셀을 포함하고 변경 이벤트 스트림을 출력하도록 구성된 이벤트-기반 비전 센서를 포함하고, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 (예를 들어 마이크로초) 타임스탬프 (즉, 상기 변경 이벤트가 발생한 시간), 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터(예를 들어 이진 극성(binary polarity))를 포함하고,
- 상기 장치는 변경 이벤트를 적어도 3개의 타임 슬라이스 프레임, 즉 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t), 시간 t-d에서 시작하는 제2타임 슬라이스 프레임(t-d) 및 시간 t-2*d에서 시작하는 제3타임 슬라이스 프레임(t-2*d)에 축적하도록 구성되고, 여기서 d는 각각의 타임 슬라이스 프레임의 지속 시간(duration)이고,
- 상기 장치는 변경 이벤트를 상기 지속 시간 d를 통해(over) 상기 현재 제1타임 슬라이스 프레임에 축적되도록 추가로 구성되고(상기 현재 타임 슬라이스 프레임은 상기 변경 이벤트가 발생하는 대응 픽셀에서 각각의 변경 이벤트를 축적함),
- 상기 장치는 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 상기 제2타임 슬라이스 프레임(t-d)의 기준 블록을 제3타임 슬라이스 프레임(t-2*d)의 검색 블록과 비교하도록 추가로 구성되고, 상기 기준 블록은 현재 제1타임 슬라이스 프레임(t)에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 (예를 들어, 사각형의) 픽셀을 포함하고;및
- 상기 장치는 현재의 제1타임 슬라이스 프레임(t)이 제2타임 슬라이스 프레임(t-d)이 되고, 제2타임 슬라이스 프레임(t-d)이 제3타임 슬라이스 프레임(t-2*d)이 되고, 제3타임 슬라이스 프레임(t-2*d)이 클리어되고 현재 제1타임 슬라이스 프레임(t)이 되도록 상기 3개의 타임 슬라이스 프레임(t, t-d, t-2*d)이 주기적으로 교환(예를 들어 회전)되도록 추가로 구성된다.
상응하는 실시 예에서, 본 발명에 따른 장치는 본 발명에 따른 방법 단계를 수행하도록 추가로 구성될 수 있다. 특히, 본 발명에 따른 광학 흐름을 계산하기 위한 방법에 관한 하위 청구항/실시 예의 주제는 본 발명에 따른 장치를 추가로 특성화하기 위해 사용될 수 있다. 후술하는 스테레오 비전 장치에도 동일하게 적용된다.
본 발명의 또 다른 실시예에 따르면, 장면을 각각 캡처하기 위한 좌측 및 우측 이벤트-기반 비전 센서를 각각 포함하는 스테레오 비전을 계산하기 위한 장치로, 각각의 이벤트-기반 비전 센서는 복수의 픽셀을 포함하고 변경 이벤트 스트림(stream of change event)을 출력하도록 구성되며, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 (예를 들어 마이크로초) 타임스탬프 (즉, 상기 변경 이벤트가 발생한 시간), 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터(예를 들어 이진 극성(binary polarity))를 포함하고,
- 상기 장치는 각각의 비전 센서에 대해 변경 이벤트를 적어도 2개의 타임 슬라이스 프레임, 즉 각각 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임, 각각 시간 t-d에서 시작하는 제2타임 슬라이스 프레임에 축적되도록 구성되고,
- 상기 장치는 좌측 비전 센서의 변경 이벤트가 상기 지속 시간 d만큼 떨어져서(over) 좌측 비전 센서의 현재 제1타임 슬라이스 프레임에 축적되고, 및 상기 우측 비전 센서의 변경 이벤트가 상기 지속 시간 d만큼 떨어져서(over) 우측 비전 센서의 현재 제1타임 슬라이스 프레임에 축적되도록 추가로 구성되고,
- 상기 장치는 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 우측 비전 센서의 제2타임 슬라이스 프레임의 기준 블록이 좌측 비전의 센서의 제2타임 슬라이스 프레임의 검색 블록과 비교되도록 추가로 구성되고, 상기 기준 블록은 우측 비전 센서의 현재 제1타임 슬라이스 프레임에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 (예를 들어 직사각형(square)의) 픽셀을 포함하고,
상기 장치는 상기 거리 메트릭(distance metric)을 사용하여 추가 기준 블록과 가장 유사한 추가 검색 블록을 찾기 위하여 좌측 비전 센서의 제2타임 슬라이스 프레임의 추가 기준 블록이 우측 비전의 센서의 제2타임 슬라이스 프레임의 추가 검색 블록과 비교되도록 추가로 구성되고, 상기 추가 기준 블록은 좌측 비전 센서의 현재 제1타임 슬라이스 프레임에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 (예를 들어 직사각형(square)의) 픽셀을 포함하고,
- 상기 장치는 좌측 비전 센서의 현재 제1타임 슬라이스 프레임은 좌측 비전 센서의 제2타임 슬라이스 프레임이 되고, 우측 비전 센서의 제1타임 슬라이스 프레임은 우측 비전 센서의 제2타임 슬라이스 프레임이 되고, 좌측 및 우측 비전 센서의 제1타임 슬라이스 프레임이 클리어되도록 4개의 타임 슬라이스 프레임이 주기적으로 동시에 교환(예를 들어 회전)되도록 추가로 구성된다.
본 발명의 다른 특징, 장점 및 실시 예는 도면을 참조하여 이하에서 설명된다. 여기서,
도 1은 본 발명에 따른 방법을 수행하기 위해 사용될 수 있는 장치/시스템(OF 아키텍처)을 도시한다;
도 2는 도 1에 도시된 장치의 유한 상태 기계(finite state machine)를 도시한다;
도 3은 해밍 거리 계산 회로, 특히 하나의 9x9 블록 매칭을 위한 해밍 거리(Hamming distance) 구현을 도시한다. 특히, 9개의 흐름 방향을 위한 9개의 회로가 있다;
도 4는 최소 거리 계산 회로, 특히 HD0에 대한 정렬 알고리즘 구현 블록을 나타내며, 9개가 아닌 5개의 입력에 대해 단순화되어 있다. 특히, 이들 블록 중 9개가 있다;
도 5는 OF 계산 결과를 도시한다; 화살표는 흐름 벡터이며 길이는 속도를 나타낸다(슬라이스 지속 시간(slice duration) d에 의하여 결정). 온(on) 이벤트-기반 비전 센서의 이벤트는 녹색이고 오프(off) 이벤트는 빨간색이다. 색상환(color wheel)은 흐름 벡터 방향 색상을 나타낸다. 각 색상환 위의 2D 그레이 스케일 히스토그램은 타임 슬라이스에서 흐름 이벤트 방향(여기에서는 9개의 방향 빈(direction bin)이 사용됨)의 분포를 나타낸다. 가장 밝은 빈은 글로벌 모션(global motion)의 가능한 방향을 선출한다(vote). (A)는 d = 40ms인[7]의 박스 장면이다. (B) 다운-루킹(down-looking) 이벤트-기반 비전 센서에 의해 기록된 포장 도로(pavement)이다; d = 10ms. (C)는 d = 3ms의 자갈 지역이다. 명확성을 위해, 다운 샘플링을 사용하여 100의 변경 이벤트마다 1개의 흐름 이벤트를 계산했다;
도 6은 블록 반경과 AAE 사이의 관계를 도시한다;
도 7은 다중 스케일 및 이벤트 스킵을 이용한 이벤트 축적 및 OF 처리를 위한 구현을 도시한다;
도 8은 슬라이스 회전을 위해 이벤트 축적을 카운트하기 위한 이미지 공간의 AreaEventCount 파티셔닝을 도시한다;
도 9는 이벤트 번호 제어를 도시한다;
도 10은 confidenceThreshold 및 validPixOccupancy를 사용한 이상값 거부(outlier rejection)의 예를 보여준다. (A): 이상값 거부 없음; (B): 이상값 거부 사용;
도 11은 다양한 이미지 특징에 대한 블록 매칭의 예를 나타낸다. 빨간색은 기준 블록 슬라이스 픽셀이다. 녹색은 검색 영역 슬라이스 픽셀이다. 파란색 픽셀은 매칭된 블록 픽셀을 나타낸다. (A): 가장자리. (B): 코너. (C): 개별 특징(isolated feature). (D): 텍스처;
도 12는 이벤트 스킵(event skipping)을 사용한 멀티 스케일 멀티비트 흐름 결과의 예를 나타낸다. 야외 장면을 걷는 동안 장면이 캡처된다. Ns=3 스케일은 각 스케일에 대한 r=4의 검색 거리 및 +/-7 부호 있는 변경 이벤트(signed change events)의 최대 슬라이스 값과 함께 사용되었다. 면적 방법(area method)은 32x32 픽셀의 영역으로 슬라이스를 회전시키고 카운트 NR=4000 이벤트를 회전하는데 사용되었다. 이 시점에서 마지막 타임 슬라이스 간격은 21ms이다;
도 13은 도 12에 도시된 10밀리초 이벤트 패킷에 대한 도 12의 광학 흐름(OF) 히스토그램 및 각 스케일에서의 흐름 이벤트의 세부 사항을 도시한다. 빨간색 원과 파란색 상자의 중앙에 있는 OF 히스토그램 중심은 제로 모션에 해당한다. 파란색 상자 안의 영역이 회색인 경우 이러한 방향으로 흐름 이벤트 블록 매치(flow event block matches)가 없다. 흰색 점은 대부분의 일치 항목이 아래로, 오른쪽으로 표시되며, 아래에서 오른쪽으로 향하는 도 12의 흐름 벡터의 우세(preponderance)에 해당한다. 빨간색 원은 OF 블록 일치의 평균 반경을 나타낸다. 그것은 설명된 알고리즘에서 슬라이스 지속 시간을 제어하는데 사용된다. "Scale counts :"옆의 숫자 244 71 105는 최대 분해능(s=0)에서 4까지 분해능(s=2)에 의해 서브 샘플링 분해능으로 시작하는 각 스케일의 흐름 이벤트 수이다. 이 패킷의 경우, 최고 매치의 분포는 3가지 스케일에 걸쳐 거의 균등하게 분배된다. 이 순간, 흐름 처리를 위해 112개의 이벤트를 스킵하지만 슬라이스 누적은 아니다. 가장 최근의 슬라이스 간격은 21.4ms이다.
도 14는 모션 필드(MF) 출력의 도 12의 장면의 후반부로부터의 예를 도시한다. OF 이벤트는 16x16 픽셀 영역에서 MF로 서브 샘플링된다. 확산 단계(diffusion step)는 144ms 시간 간격의 각 저역 통과 필터(lowpass filter) 시간 상수가 지난 후에 적용된다. 카메라가 이미지의 상단에서 보이는 건물을 향해 지면 위로 이동한 것을 아래쪽으로 가리키는 흐름 벡터의 우세로부터 분명하다.
도 15는 더 많은 장면을 보여준다. (A): 야외에서 자갈 위로 회전. (B): 실내 복도를 따라 걷는 것. (C): 야외에서 해변 가장자리를 따라 모래 위를 걷는 것. (D): 열차 창문으로부터. 모든 장면은 검색 거리가 3 픽셀인 다이아몬드 검색을 사용하여 동일한 3 스케일, 블록 크기 11 픽셀을 사용하여 캡처되었다. 슬라이스 최대값 +/-7. AreaEventNumber 방법을 사용하여 피드백 제어에서 슬라이스 이벤트 번호를 설정했다.
이벤트 기반-비전 센서(event-based vision sensor) 또는 DVS의 출력(output)은 밝기 변경 이벤트 스트림이다. 각 변경 이벤트(change event)에는 (예를 들어 마이크로초 타임스탬프), (상기 변경 이벤트를 감지한 픽셀의) 픽셀 어드레스(pixel address) 및 밝기 변경의 부호를 설명하는 파라미터(예를 들어 이진 극성(binary polarity))가 포함된다. 각 이벤트는 픽셀로부터 마지막 이벤트 이후 약 15%의 밝기 변화를 나타낸다. FPGA 구현 결과를 이용 가능한 가장 간단한 구현에서, 이벤트는 최소 논리 및 메모리 사이즈를 달성하기 위해, 특히 상기 파라미터 (이벤트 극성)를 무시하고 바이너리 이미지(binary image)로서 타임 슬라이스 프레임 (또는 타임 슬라이스 메모리)에 축적된다. 여기서 이러한 비트맵 프레임(bitmap frame)을 슬라이스라고 한다. 블록은 들어오는 이벤트 위치를 중심으로 하는 사각형이다. 매칭(Matching)은 거리 메트릭(distance metric)을 기반으로 한다. 특히, 일 실시 예에 따르면, 해밍 거리(HD, Hamming Distance)가 거리 메트릭으로서 사용된다. HD는 다른 비트 수의 개수이다. 비트맵의 경우 HD는 더 잘 알려진 SAD(Sum of Absuteute-Difference)와 동일하다.
하드웨어 평가 시스템/장치는 두 부분, 데이터 시퀀싱 및 모니터링을 위한 부분과 알고리즘 구현을 위한 부분으로 구분된다. 첫 번째 부분은 Univ. of Seville가 디자인한 모니터 시퀀서 보드(monitor-sequencer board)[13]가 사용되었다. 상기 시퀀서는 이벤트-기반 벤치마크 데이터세트[7]를 OF FPGA로 전송되는 실시간 하드웨어 이벤트로 변환한다. OF 계산 중에 상기 모니터는 OF 이벤트를 수집하여 렌더링 및 분석을 위해 그들을 USB를 통해 jAER로 전송한다. 이러한 방식으로 OF 알고리즘의 소프트웨어 및 하드웨어 처리를 비교할 수 있다. 본 명세서에 기술된 예시/실시 예의 프레임 워크에서, 사전 기록된 데이터는 소프트웨어와 하드웨어 구현 사이의 체계적인 비교를 허용하기 위해 사용되었다.
본 발명에 따른 장치/OF 아키텍처의 실시 예가 도 1에 도시되어 있다. 여기에는 FSM(Finite State Machine), RAM(Random Access Memory Block Memory) 및 회전 제어 로직(rotation control logic)의 세 가지 주요 모듈이 있다. FSM의 아키텍처는 도 2에 나와 있다. FSM은 데이터 수신 모듈(data receiving module), OF 계산 모듈(OF calculation module) 및 데이터 전송 모듈(data sending module)의 세 부분으로 구성된다. 데이터 전송 및 데이터 수신 모듈은 모니터 시퀀서와 통신한다. OF 모듈은 아래에 더 상세히 설명된다.
3개의 240x180-픽셀 변경 이벤트 비트맵 슬라이스(pixel change event bitmap slices)가 RAM에 저장된다. 이러한 슬라이스는 또한 타임 슬라이스 메모리(time slice memories)라고도 하며 기존 카메라의 이진 이미지 프레임(binary image frame)과 유사하지만 이벤트-기반 비전 센서(예를 들어 DVS)의 경우 슬라이스 간격을 임의로 선택할 수 있다. 하나는 시간 t에서 시작하는 현재 수집 타임 슬라이스(current collecting time slice)이고 다른 하나는 시간 t-d (더 이른(younger) 타임 슬라이스 메모리) 및 t-2*d (더 늦은(older) 타임 슬라이스 메모리)에서 시작하는 과거 2개의 슬라이스이다. 시간 간격 d는 슬라이스 지속 시간(slice duration), 예를 들어 10ms이다. 특히, 예시에 따르면 d=100ms가 데이터 세트의 슬로우 모션을 매칭하기 위해 사용되었다. t-d 간격으로, 회전 제어 로직(rotation control logic)은 3개의 슬라이스를 회전(또는 교환)한다. t 슬라이스는 새로운 데이터를 축적한다. 그것은 비우기 시작하고 점차적으로 이벤트를 누적하므로 과거 슬라이스와 일치하는데 사용할 수 없다. 2개의 과거 슬라이스 t-d 및 t-2*d는 OF에 사용되지만 OF 연산(computation)은 t 슬라이스에 저장된 각 이벤트의 위치에서 수행되므로 이러한 이벤트에 의해 구동된다. 슬라이스는 FPGA의 블록 RAM에 저장된다. RAM의 총 크기는 240x180x3이며 이벤트-기반 비전 센서의 픽셀 배열 크기와 일치한다. 그것은 Xilinx의 IP Core에서 생성된다.
일 실시 예에 따르면, 본 발명에 따른 광학 흐름 알고리즘/방법은 다음과 같이 구성된다.
이벤트가 도착하면 타임 슬라이스 t-d의 단일 기준 블록(single reference block)과 타임 슬라이스 t-2*d의 9개의 블록이 HD 모듈로 전송되어 거리를 계산한다. 상기 기준 블록 및 검색 영역은 변경 이벤트 x, y 위치(즉, 가장 최근의 변경 이벤트가 감지된 픽셀 위치)를 중심으로 한다. 현재 FPGA 구현에서, 상기 블록은 실시 예에 따라 9x9 픽셀을 포함한다. t-d 타임 슬라이스의 경우, 하나의 중심 블록만이 실시 예에 따른 기준으로서 사용된다. 본 발명에 따른 알고리즘/방법은 t-2*d 타임 슬라이스에서 가장 유사한 블록을 찾는다. OF의 밝기 항상성 가정(brightness-constancy assumption)에 따르면, t-2*d 타임 슬라이스에서 실제 OF와 가장 일치하는 블록과 유사한 블록을 볼 수 있다. 특히, 상기 알고리즘은 현재 이벤트 주소의 8개 이웃에 중심을 둔 8개의 블록과 상기 기준에 중심을 둔 하나의 블록을 검색하여 최소 거리를 가진 블록을 선택한다.
1. 해밍 거리(Hamming Distance): 하나의 해밍 거리(HD) 블록의 구현이 도 3에 나와 있다. 총 81개의 XOR 로직 게이트가 상기 슬라이스의 해당 픽셀로부터 입력을 받는다. XOR 출력은 상기 HD를 계산하기 위해 합산된다. SAD(sum-of-absolute differences)는 나중에 보다 일반적인 형태의 알고리즘으로 사용된다.
2. 최소 거리 계산(Minimum Distance Computation): 알고리즘의 마지막 단계는 최소 거리 후보를 찾는 것이다. 새로운 최소 회로의 일부가 도 3에 도시되어 있다. 최소 거리 방향의 인덱스를 출력하는 것은 병렬 구현이다. 예를 들어 5개의 데이터: HD0-4 (도 4의 출력) 중에서 최소값을 찾아야 하는 경우 상기 회로를 5개 부분으로 나눌 수 있다. 도 3의 첫 번째 부분은 HD0을 다른 모든 데이터와 비교하여 data0이 HD1-4보다 몇 배나 큰 카운트를 출력한다(outputs a count of how many times data0 is larger than HD1-4). 다른 4개의 파트는 동일한 방식으로 구현되며 모든 해당 파트가 동시에 계산된다. 결국, 합계가 0인 부분이 최소 후보이다. 따라서, 최소 거리 후보는 하나의 클록 사이클(one clock cycle)에서 결정된다.
실시예
Xilinx Spartan 6 family chip xc6slx150t는 본 발명에 따른 알고리즘/방법을 구현하는데 사용되었다. 그것은 184304 Flip-Flops과 92152 LUTs 및 4MB 블록 메모리를 포함한다. 구현된 OF 설계는 Flip-Flops의 0.9%, LUTs의 5% 및 블록 RAM의 5%를 차지한다. 테스트 데이터 세트에는 [7]의 이벤트-기반 광학 흐름 벤치마크 데이터 세트(event-based optical flow benchmark dataset)가 사용되었으며 평가 방법과 기본 정보도 제공한다. 또한, 추가적인 자연 장면 데이터(natural scene data)가 희박하고 밀도가 높은 텍스처 예를 위해 사용되었다.
3개의 샘플 데이터 세트가 테스트 되었다. 모두 실제 DVS 데이터이다(도 5 참조): 가장자리(edge), 저밀도 포인트(sparse point) 및 조밀한 텍스처(dense texture)에 해당하는 상자 변환(A), 포장(B) 및 자갈(C). 상기 상자 장면은 전경에 상자가 있고 배경에 클러터(clutter)가 있고 카메라가 왼쪽으로 이동하여 대부분 확장된 가장자리의 오른쪽 전역 병진(global translation)을 생성한다. 포장 데이터 세트(pavement dataset)에서 상기 카메라는 다운-루킹(down-looking)이고 손으로 이동하였다. 흐름은 아래쪽과 오른쪽을 가리킨다. 포장의 결함으로 인해 저밀도 특징이 있다. 자갈 데이터 세트(gravel dataset)는 외부에 기록되고 조밀한 텍스처를 가지고 있다. 이동은 동쪽이다.
블록-매칭(block-matching) OF 결과가 도 5에 도시되어 있다. 각 장면에서 대부분의 벡터는 상자 변환(box translation)을 위해 정확하게 동쪽으로, 포장 장면을 위해 남동쪽으로, 자갈 장면을 위해 동쪽을 가리키고 있음을 알 수 있다. 오류는 주로 이벤트-기반 비전 센서의 소음 또는 확장된 가장자리(extended edge)에 대한 조리개 모호성(aperture ambiguity)으로 인해 발생한다.
정확도 분석과 관련하여 [7]은 기존 OF에 사용된 유사한 메트릭을 기반으로 이벤트-기반 OF 정확도를 계산하는 두 가지 방법을 제안했다. 하나는 AEE(Average Endpoint Error)라고 하고 다른 하나는 AAE(Average Angular Error)이다. AAE는 예상 흐름(estimated flow) 방향의 오차를 측정하고 AEE에는 속도 오차(speed error)가 포함된다. 이 두 가지 방법은 이미 jAER에 구현되어 있다[8]. 렌즈 초점 거리(lens focal length)에 따라 순수한 카메라 회전의 IMU 데이터를 사용하여 각 변경 이벤트에 대한 실제값(ground truth) OF을 계산한다. 시퀀서의 출력 데이터에는 IMU 데이터가 없기 때문에 상기 OF 정확도는 PC 구현을 사용하여 측정되었다. FPGA와 PC 사이의 알고리즘 파이프라인은 동일하므로 정확도에 영향을 미치지 않는다. 결과도 [7]과 비교된다. 이벤트 기반 Lucas-Kanade 및 Local Plane 알고리즘의 두 가지 변형이 선택되었다. 모든 알고리즘의 오류는 아래 표 1에 나와있다. PMhd는 HD 메트릭을 사용한 블록 매칭 알고리즘을 나타낸다. 블록 반경과 AAE의 관계는 도 6에 나와 있다.
[표 1]
Figure pct00001
또한 소프트웨어의 시간 복잡성은 FPGA에서 선형으로만 블록 크기에 따라 2차식으로(quadratically) 증가한다. 알고리즘의 처리 시간은 세 부분으로 구성된다: 세 슬라이스로부터 데이터 읽기, HD 계산 및 최소값 찾기. 하나의 RAM에서 여러 데이터를 동시에 읽을 수 없기 때문에 PC에서 FPGA 구현과 소프트웨어 구현 모두 RAM에서 데이터를 읽는데 선형 시간(linear time)이 소요된다. 그러나 후자의 두 부분은 FPGA에서 일정한 시간(2 clock cycles)을 사용하는 반면 PC에서는 2차식(quadratic) 시간을 사용한다. 요약하면 FPGA에서 처리 시간은(블록 차원 +2) 사이클이다. 일례에 따르면, 상기 FPGA는 50MHz 주파수에서 실행되며 블록 차원(block dimension)은 9이다. 따라서 전체 알고리즘은 변경 이벤트 당 220ns, 즉 0.22μs 만 소요된다. PC에서 Java 구현이 알고리즘을 실행하려면 이벤트 당 4.5μs가 걸린다. FPGA 구현은 PC보다 20배 빠르다. 실시예 따르면, 상기 구현은 단일 포트 RAM을 사용하지만 멀티 뱅크(multiple bank)를 사용하여 추가로 속도를 높일 수 있다.
본 발명은 이벤트-기반 광학 흐름, 특히 FPGA에서 및 실시간으로 측정하는 새로운 방법을 제공한다. 해밍 거리의 소프트웨어 계산 비용은 블록 크기가 증가함에 따라 2차식으로 증가하지만 FPGA에서는 상기 블록의 모든 비트를 동시에 계산할 수 있으므로 모든 블록 크기에 대해 일정한 시간이 발생한다. 이는 FPGA 구현의 전체 계산 시간을 크게 단축키고, 이는 소프트웨어 구현보다 20배 빠르다. 현재 구현에서는 모든 단일 수신 이벤트가 처리된다(단지 50MHz의 적당한 FPGA 클럭을 사용하여 최대 5Meps의 입력 이벤트 속도를 처리할 수 있음). 그러나 OF 계산이 다운 샘플링되는 도 5(C)에 도시된 바와 같이 모든 변경 이벤트를 처리할 필요는 없지만, 이벤트-기반 비전 센서(예를 들어 DVS)의 변경 이벤트는 여전히 흐름을 측정할 위치를 나타낸다.
전술한 본 발명의 일반적인 실시 예는 추가로 수정될 수 있다. 대응하는 실시 예들이 다음에 설명될 것이다. 특히 세 가지 가능한 개선 사항이 있다. 현재 구현은 속도가 아닌 흐름 방향만 측정한다. 속도 측정은 추가 검색 거리가 필요하며 효율적인 검색을 위해 잘 알려진 알고리즘이 있다[14]. 둘째, 슬라이스에 수집된 이벤트 시퀀스는 일반적으로 노이즈로 인해 길이가 다르고 HD가 다소 모호하기 때문에 다른 거리 측정법도 사용할 수 있다[15]. 마지막으로 피드포워드 및 피드백 제어를 슬라이스 지속 시간(slice duration)에 구현하여 원하는 샘플링 속도로 처리할 수 있는 이벤트-기반 비전 센서(DVS)의 이벤트 출력의 고유한 기능을 보다 잘 활용할 수 있다. 이 기능은 샘플 속도와 처리 속도가 불가분의 관계로 결합된 프레임 기반 비전의 주요 특징이다. 작은 검색 거리 및 보통의(modest) 하드웨어 리소스라도 높은 OF 정확도를 달성하는 이벤트-기반 비전 센서(예를 들어 DVS)에 대한 블록-매칭 방식을 사용할 수 있다.
다른 실시 예에 따르면, 멀티비트 타임 슬라이스(multibit time slices)가 사용될 수 있다.
이진 비트맵 타임 슬라이스(binary bitmap time slice) 사용의 한계는 첫 번째 이벤트가 비트맵 픽셀 위치에 누적된 후 상기 픽셀 값이 포화된다는 것이다. 또한 이벤트 기반 센서의 이벤트 극성(ON/OFF)을 무시하므로 잠재적으로 반대 극성의 가장자리를 잘못 일치시킬 수 있다.
멀티비트 부호있는 타임 슬라이스(multibit signed time slice)를 사용하는 것이 개선되었다. 상기 이벤트는 앞서 설명한 바와 같이 픽셀 메모리에 축적되지만, 이제는 픽셀 값에 (선택적으로) 부호가 있으며(signed), 값 범위를 취하는 n 비트 표현, 즉 n=2 비트를 포함하고, 상기 부호없는 범위는 0, 1, 2, 3이다. 부호있는 2-비트 버전의 경우 2진법 표기(2's complement binary representation)를 사용하는 n=2의 범위는 2, 1, 0, 1이며 이진값 11, 10, 00, 01로 인코딩된다. n=2 비트의 경우, 1 ON 이벤트 및 3 OFF 이벤트가 픽셀에 의해 누적되면, 결과 슬라이스 픽셀은 부호없는 경우에 값 3, 부호있는 경우에 -2를 가질 것이다. 멀티비트 값의 업데이트는 바람직하게 포화 수학(saturating mat)을 사용해야 하므로 오버플로우는 카운트를 둘러싸지 않고 최대 절대 값에 그것을 남겨둔다.
멀티비트 타임 슬라이스의 메모리 비용은 n에 정비례한다. XOR 게이트는 기준 블록과 검색 블록 영역 사이의 SAD(sum-of-absolute differences)를 계산하기 위해 풀애더들(full adders)로 대체되므로 산술 비용도 n에 비례한다.
본 발명에 따른 방법/시스템의 추가 실시 예에 따르면, 확장되고 최적화된 검색이 사용될 수 있다.
앞에서 설명한 구현에서는 타겟 블록과 그것의 8개의 가장 가까운 이웃만 검색했다. 검색 범위를 더 큰 거리 범위 r로 확장하여 개선되었다. 위에서 설명한 구현의 경우 r=1이다. r을 높이면 미세한 범위의 모션 벡터 각도와 속도를 계산할 수 있다. (2r+1)2 검색 위치의 철저한 검색이 가능하지만 2단계 검색(TSS) 및 다이아몬드 검색(DS)과 같은 잘 알려진 기술은 필요한 노력을 크게 줄인다. DS 알고리즘의 소프트웨어 구현에 따르면 r=12 및 블록 차원 9(r=5)의 경우 DS를 사용하면 이벤트 처리 시간이 전체 검색시 377μs/event에서 DS를 사용하여 13μs/event로 DS를 사용하여 29배 감소한다.
본 발명에 따른 방법/시스템의 추가 실시 예에 따르면, 멀티스케일 공간 타임 슬라이스(mutliscale spatial time slices)가 사용될 수 있다.
매칭은 기준 위치 주위의 제곱 반경(square radius) r의 공간 범위만을 커버할 수 있기 때문에, 지금까지 설명된 접근법의 한계는 방법의 제한된 동적 속도 범위이다. 검색 시간을 오직 선형으로 늘려서 검색 범위를 늘리는 한 가지 방법은 멀티스케일 피라미드(multiscale pyramid)를 사용하는 것이다. 이 방법에서는 변경 이벤트(change events)가 타임 슬라이스의 스택(stack of time slices)에 누적된다. 상기 스택에서 각 슬라이스는 x 및 y 방향으로 원래 이벤트 주소(event addresse)를 이전 스케일보다 2배 더 서브 샘플링한다(subsamples). 즉 scale s가 타임 슬라이스 공간 스케일(time slice spatial scale)인 경우 s=0은 원래 전체 해상도 스케일(resolution scale)을 의미하고, 그런 다음 먼저 이벤트 x 및 y 주소를 s 비트만큼 오른쪽으로 이동한 다음 결과 이벤트를 스케일 슬라이스 내에 누적하여 이벤트가 스케일 s에 누적된다. 예를 들어, s=1 스케일 슬라이스에서 각 픽셀은 전체 해상도 원본 픽셀 어드레스 공간에서 2x2 픽셀 영역의 이벤트를 누적한다. 따라서 각 이벤트를 누적하는 특정 조작은 현재 기준 구현(reference implementation)에서 취한 아래의 자바 코드 스니펫(Java code snippet)에 의해 주어진다:
private void accumulateEvent ( PolarityEvent e) { // e is the DVS event
for ( int s = 0; s < numScales ; s++) { // iterate over all scales
final int xx = e.x >> s; // subsample the x address
final int yy = e.y >> s; // subsample the y address
int cv = currentSlice [s][ xx ][ yy ]; // find current value of slice at scale s
cv += rectifyPolarties ? 1 : (e.polarity == PolarityEvent.Polarity.On ? 1 : -1); // optionally, rectify the polarity
if ( cv > sliceMaxValue ) { // apply saturating math to limit range of result slice value to maximum allowed
cv = sliceMaxValue ;
} else if ( cv < - sliceMaxValue ) {
cv = - sliceMaxValue ;
}
currentSlice [s][ xx ][ yy ] = (byte) cv ; // store the new slice value in the slice
}
}
이러한 멀티스케일을 사용하여 각 스케일에서 서브 샘플링된 슬라이스를 사용하여 범위 r까지 검색을 수행하는 방법이 도 7에 도시되어 있다. 그런 다음 상기 모든 스케일에서 가장 일치하는 블록(best matching block)에서 최종 결과를 선택할 수 있다. 전체 검색 범위가 반경(radius)으로 확장되었다.
다중 공간 스케일(multiple spatial scales)을 사용하는 비용은 슬라이스를 저장하기 위한 메모리 증가와 이러한 스케일에 대한 추가 검색이다. 병렬 하드웨어 장치(Parallel hardware unit)는 별도의 메모리 블록을 사용하므로 모든 스케일을 동시에 검색할 수 있다. 이러한 장점은 스케일을 통한 검색이
Figure pct00002
의 이미지 공간에서 반경(radius)을 포함한다는 것이다. 총 비용은 논리 또는 시간에서 오직 요소(factor) (ns+1)만 증가한다. 예를 들어, ns=3을 사용하면 검색의 선형 범위가 8배 증가하고, 상기 검색 영역이 64배 증가하지만 영역 또는 시간에서 비용은 3배만 증가한다.
여러 스케일을 사용하면 슬로우 모션을 위한 미세한 속도와 각도 해상도를 제공한다는 추가 이점이 있다. 따라서 속도가 낮을 때 흐름 측정의 정밀도가 유지된다.
서브 샘플링된 타임 슬라이스는 원래 풀 스케일 슬라이스보다 픽셀 당 더 많은 이벤트를 수집하기 때문에 멀티비트 및 멀티스케일 기법을 결합하는 것이 바람직하다. 따라서 그들은 더 쉽게 포화될 수 있다. 실제로, 우리는 도 11 및 도 12의 예시 데이터에 도시된 바와 같이 3개의 스케일을 사용할 때 최대 16개의 이벤트의 축적을 허용하는 멀티비트 비트 해상도 n=4의 적당한 값이 포화를 방지하기에 충분하다는 것을 발견하였다.
또한, 적응형 슬라이스 지속 기간(adaptive slice duration)에 관해, 비트맵 슬라이스를 축적하기 위한 3가지 소프트웨어 방법이 구현되었고, 이는 ConstantDuration, ConstantEventNumberAreaEventNumber로 표시된다. 현재 하드웨어 FPGA 설계에서는 ConstantDuration 방법만 구현되지만 다른 방법은 하드웨어로 쉽게 구현된다.
ConstantDuration: 여기서 슬라이스는 지속 시간 d의 균일한 타임 슬라이스로 누적된다. 이 방법은 기존의 프레임 기반 방법과 가장 유사하다. 장면 모션이 너무 빠르면 슬라이스 사이의 이동이 너무 커서 지정된 검색 거리를 사용할 수 없다는 단점이 있다. 움직임이 너무 느리면 피처(feature)가 슬라이스 사이에서 충분히 움직이지 않아 흐름 속도 및 각도 해상도(angle resolution)가 떨어질 수 있다.
ConstantEventNumber: 여기서 슬라이스는 고정된 총 변경 이벤트 수 K를 포함할 때까지 누적된다. K가 크면 슬라이스는 더 큰 d를 포함하는 경향이 있다. 그러나 장면이 더 빠르게 이동하면 변경 이벤트 비율도 증가하여 고정 K의 경우 d가 감소한다. 따라서 ConstantEventNumber 방법은 d를 평균 전체 장면 역학(average overall scene dynamics)에 자동으로 맞춘다.
AreaEventNumber: ConstantEventNumber 방법의 단점은 글로벌 특성(global nature)이다. 텍스처가 균일한 장면에 K를 올바르게 설정한 경우 분리된 피쳐(isolated features)를 포함하는 장면에 동일한 K를 사용하면 전체 변경 이벤트 비율이 낮아지므로 d가 훨씬 길어진다. 따라서 모든 장면에서 최적의 매칭을 위해 올바른 d가 유지되지 않는다.
이 문제를 해결하기 위한 실용적인 방법을 AreaEventNumber라고 한다. 여기서 전체 센서 픽셀 어레이는 입자가 큰 블록(coarse block)으로 세분된다. 2D 메모리 배열 A는 블록 당 이벤트 수를 추적한다. 슬라이스 회전 후 A는 0이다. A의 임의의 요소가 K 이벤트를 축적할 때, 상기 슬라이스가 회전되고 회전 시간 d가 기록되어 속도를 계산할 수 있다. 이 영역 블록 배열의 예가 도 8에 나와 있다. 여기에서 이미지 영역은 areaEventNumberSubsampling 6을 사용하여 배열 A로 분할되었으며, 이는 26x26=64x64 픽셀 영역을 의미한다. 서브-영역(A의 요소)이 1432개의 이벤트를 누적하자마자(software GUI for sliceEventCount property에 표시됨) 슬라이스가 회전/교환된다. 이 방법으로 계산된 마지막 슬라이스 간격은 이 예에서 d=21ms이다.
AreaEventNumber 방법을 사용하면 슬라이스 회전/교환(interchanging)이 변경 이벤트 누적에 의해 구동되는 데이터이지만 장면의 가장 빠른 이동 영역과 일치하도록 슬라이스 지속 시간을 조정한다. 이 적응은 슬라이스 사이에 맞추기에는 너무 큰 동작을 유발하는 언더 샘플링을 방지한다.
AreaEventNumber의 하드웨어 비용은 일반 슬라이스 누적과 유사하다. 이벤트 극성을 무시할 수 있고 영역 메모리 레지스터가 실제로 일반적으로 1k-10k 이벤트의 값을 가져오는 훨씬 더 큰 최대 이벤트 카운트 K를 수용할 수 있을 만큼 넓어야 한다는 점을 제외하고는 입자가 큰 서브 샘플링된 슬라이스로(coarse sub-sampled slice)의 축적과 거의 동일하다. 그러나 이러한 더 넓은 레지스터는 훨씬 적은 수의 요소(element)로 인해 오프셋보다 훨씬 크다. 예를 들어, 도 8에서, 4비트의 멀티비트 슬라이스 값을 사용하는 풀 해상도 슬라이스 메모리의 346x260x4=360k 비트와 비교하여 5x5x16=400 비트만이 A를 형성한다. 따라서 A는 슬라이스 메모리보다 90배 적은 메모리를 필요로 한다.
슬라이스 지속 시간에 대한 피드백 제어(Feedback control on slice duration): 피드백 제어를 통해 다른 장면에 따라 슬라이스 지속 시간 또는 이벤트 수(event number)를 자동으로 조정하는 또 다른 방법이 가능하다. 이 실시 예에서, 현재 슬라이스 파라미터의 정확도를 측정하기 위해 광학 흐름 분포 히스토그램이 생성된다. 히스토그램의 가중 평균(weighted average) 매치 거리 D가 계산된다. D가 r/2보다 큰 경우, 이는 타임 슬라이스가 너무 길어서 슬라이스 지속 시간 또는 이벤트 수가 감소함을 의미한다. 반대로 평균 매치 거리가 r/2보다 작으면 슬라이스가 너무 간결하여(brief) 슬라이스 지속 시간 또는 이벤트 수가 증가함을 나타낸다. 이 피드백 제어 방법은 안정성을 보장하기 위해 추가 정책 단계(policy step)를 사용하여 개선할 수 있다. 그렇지 않으면 매우 긴 슬라이스 지속 시간으로 인해 탐색 알고리즘에서 제로 모션(작은 매치 거리)에 대한 바이어스의 결과인 매우 작은 매치 거리의 OF 결과가 발생할 수 있다. 실제로, 응용 프로그램별 한계(application-specific limit) 내에서 슬라이스 지속 시간 범위를 제한하여 안정성을 보장할 수 있다.
아래의 Java 코드 스니펫(Java code snippet)은 이 알고리즘의 한 가지 구현 단계를 보여준다.
private void adaptSliceDuration() {
{
// measure last hist to get control signal on slice duration
// measures avg match distance.
float radiusSum = 0;
int countSum = 0;
final int totSD = searchDistance << (numScales - 1);
for (int xx = -totSD; xx <= totSD; xx++) {
for (int yy = -totSD; yy <= totSD; yy++) {
int count = resultHistogram[xx + totSD][yy + totSD];
if (count > 0) {
final float radius = (float) Math.sqrt((xx * xx) + (yy * yy));
countSum += count;
radiusSum += radius * count;
}
}
}
if (countSum > 0) {
avgMatchDistance = radiusSum / (countSum); // compute average match distance from reference block
}
switch (sliceMethod) {
case ConstantDuration:
int durChange = (int) (errSign * adapativeSliceDurationProportionalErrorGain * sliceDurationUs);
setSliceDurationUs(sliceDurationUs + durChange);
break;
case ConstantEventNumber:
case AreaEventNumber:
setSliceEventCount(Math.round(sliceEventCount * (1 + adapativeSliceDurationProportionalErrorGain * errSign)));
} }
}
도 9의 데이터는 64x64 픽셀의 영역을 사용하는 AreaEventNumber 피드백 제어 방법을 사용하는 이벤트 수 제어(event number control)의 예를 도시한다. 장면은 시간이 지남에 따라 넓은 범위의 속도를 갖는다. 파란색 트레이스(blue trace)는 평균 OF 매치 거리를 나타낸다. 이벤트 수의 피드백 제어는 평균 매치 거리를 (정규화된) 평균값인 약 0.5로 유지한다. 주황색 추적(orange trace)은 이벤트 수를 나타낸다. 이벤트 수는 정상 상태 (정규화된) 값을 가지며 약 0.23이다. 패킷 1800 주위에서 이벤트 수는 수동으로(manually) 큰 값으로 교란되어 평균 매치 거리가 감소했다. 이벤트 수는 빠르게 정상 상태 값으로 돌아간다. 패킷 1900 부근에서, 이벤트 수는 수동으로 작은 값으로 감소되어 매우 작은 매치 거리가 된다. 다시 정상 상태 값으로 돌아간다. 이 데이터는 평균 속도에 큰 변화가 있는 데이터에서 이벤트 수 제어의 안정성을 보여준다.
정확도를 개선하기 위해, 열악한 매칭 품질을 갖는 이벤트를 필터링하기 위해 본 발명의 다른 실시 예에 따라 이상값 리젝션(outlier rejection)이 사용된다. 특히 이상값을 거부하기 위하여 두 가지 매개 변수가 사용된다.
하나의 매개 변수는 validPixOccupancy로 표시된다. 이 매개 변수는 비교할 두 블록에서 유효한 픽셀의 백분율을 결정한다. 유효한 픽셀은 변경 이벤트가 누적된 픽셀을 의미한다. 이 파라미터를 설정하는 이유는 때때로 블록이 너무 희박하여 거리 측정법이 의미 없는 결과를 얻기 때문이다. 충분한 유효 픽셀로 채워진 블록을 계산함으로써 잘못된 결과를 거부(reject)할 수 있다. OF 매치 거리 결과는 기준 블록 또는 검색 블록이 점유가 충분하지 않은 경우 최대값으로 설정된다.
다른 이상값 거부 매개 변수를 confidenceThreshold라고 한다. 기준 블록과 후보 블록 사이의 최소 거리(유사성)는 confidenceThreshold 보다 작아야 하고, 그렇지 않으면 OF 이벤트가 이상값 거부로 간주되어 거부된다. 따라서 가장 일치하는 검색 블록은 실제로 일치하지 않을 수 있으며, confidenceThreshold는 일치 거리가 너무 큰 경우 가장 일치하는 것(best match)을 거부할 수 있다.
도 10에 도시된 예시적인 데이터에서 이들 파라미터의 효과는 검은색 막대가 위아래로 움직이는 단순한 경우로부터 도시되어 있다. 이러한 이상값 거부 기준(outlier rejection criteria)을 사용하여 흐름 결과가 눈에 띄게 깨끗해진다.
이상값 거부 메커니즘은 하드웨어에서 쉽게 구현된다. 예를 들어, 일 실시 예에 따르면, 유효한 픽셀 점유(valid pixel occupancy)는 두 피연산자가 모두 0이면 큰 값을 출력하는 픽셀 감산 유닛(pixel subtraction units)에 의해 실현될 수 있다. 신뢰 임계값(confidence threshold)은 너무 큰 거리를 표시하는 최종 최고 일치 출력 결과(final best match output result)에서 비교기(comparator)로 실현될 수 있다.
또한, 광학 흐름을 위해 들어오는(incoming) 모든 변경 이벤트를 처리할 필요는 없다. 현재 타임 슬라이스에서 수집된 변경 이벤트는 새로운 시각적 데이터가 있는 위치를 나타낸다. 기준 블록 중심 위치를 설정하는 것 외에는 실제로 컴퓨팅 매칭에 사용되지 않는다. 따라서 하드웨어나 소프트웨어가 이전 이벤트를 처리 중이거나 이벤트 패킷 처리를 위한 시간 예산을 초과한 경우 이러한 이벤트를 현재 타임 슬라이스에 누적할 수 있지만 이러한 이벤트에 대한 처리 흐름을 건너뛸 수 있다.
일 실시 예에 따르면, 적응성 이벤트 스킵(adaptive event skipping)이 구현되었다. 여기서 skipProcessingEventCount라는 매개 변수는 건너뛴 이벤트 수를 저장하는 데 사용된다. 이 수는 적응적으로(adaptively) 변경된다. 이벤트 건너뛰기 알고리즘은 다음과 같이 설계되었다:
1. 초당 평균 프레임(FPS)이 응용 프로그램에서 계산된다.
2. 달성된 FPS가 너무 낮으면 skipProcessingEventCount가 증가한다. 반대로 달성된 FPS가 충분히 높으면 skipProcessingEventCount가 증가한다.
3. 또한 skipProcessingEventCount의 최대값이 너무 많은 이벤트 및 정보를 놓치지 않도록 설정된다.
이 이벤트 스킵 알고리즘은 이벤트 처리 시간을 크게 줄여서 비효율적인 소프트웨어 구현에서도 소프트웨어 실시간 성능을 허용한다.
하드웨어에서 이벤트 스킵의 한 가지 구현이 도 7에 나와 있다. OF 소프트웨어 또는 하드웨어 블록이 사용 가능한 경우 변경 이벤트가 처리된다. OF 유닛이 작업중인 이벤트를 처리하는 동안, 변경 이벤트는 항상 타임 슬라이스 메모리(이 예에서는 3개의 스케일을 사용하므로 그 중 3개)에 누적된다. OF 블록은 (검색의 중심 위치를 알기 위해) 가장 최근의 변경 이벤트 주소와 과거 t-d 및 t-2*d 타임 슬라이스에만 액세스하고, 현재 변경 이벤트가 현재 슬라이스 t에 누적되므로 메모리 중재자가 필요하지 않다.
본 발명의 다른 실시 예에 따르면, 광학 흐름 운동장은 모션 필드는 필터링될 수 있다.
여기서, 상기 방법으로부터 출력된 로우(raw) OF 이벤트는 규칙적으로 간격을 두고 선택적으로 서브 샘플링된 모션 필드(MF, motion field)에 누적될 수 있다. 이 MF는 공간과 시간에 걸쳐 여러 OF 이벤트를 필터링하여 노이즈를 줄이고 MF 평활도(smoothness) 같은 제약 조건(constraint)을 부과한다. 이러한 MF를 정규화하는 방법에는 여러 가지가 있다. 본 발명의 실시 예에 따른 기본 구현이 여기에 설명된다. (저역 통과 시간 필터링(low pass temporal filtering)으로 인한) 증가된 시간 지연 및 (서브 샘플링 및 확산으로 인한) 저하된 공간 해상도 저하를 희생하고(at the cost of) OF 출력의 노이즈를 줄인다. 기존 처리의 이점은 규칙적인 간격의 MF 그리드(grid)로 표시된다.
다음 ava code snippet은 MF 처리를 나타낸다. 이 방법은 위치 x, y, 속도 벡터 vx, vy 및 (사전 계산된) 속도로 OF 이벤트를 취한다.  그것은 모션 필드 배열 값을 업데이트한다. 선택적 알고리즘 플래그(Optional algorithm flags)는 다음을 허용한다:
1. 0 플로우로 MF 값의 선택적 주기적 붕괴(optional periodic decay)
2. OF 이벤트가 기존 MF 값과 일치하는 경우에만 OF 이벤트를 추가하는 선택적 일관성 검사(optional consistency check)(예를 들어 OF 및 MF 벡터의 내적(dot product)이 양수인지 확인하여 그들은 동일한 방향을 가리킴)
3. 조정 가능한 시간 상수로 OF 값을 향해 MF 값을 업데이트하는 저역 통과 필터링 단계(low pass filtering step),
4. 이웃(neighbor)과의 MF 값을 평균화하는 선택적 확산 단계(optional diffusion step).
/**
* updates motion field
*
* @param timestamp in us
* @param x1 location pixel x before subsampling
* @param y1
* @param vx flow vx, pps
* @param vy
*/
synchronized public void update(int timestamp, int x, int y, float vx, float vy, float speed) {
int dtDecay = timestamp - lastDecayTimestamp;
if (decayTowardsZeroPeridiclly && dtDecay > motionFieldTimeConstantMs * 1000 || dtDecay < 0) {
decayAllTowardsZero(timestamp);
lastDecayTimestamp = timestamp;
}
int x1 = x >> motionFieldSubsamplingShift, y1 = y >> motionFieldSubsamplingShift;
if (x1 < 0 || x1 >= velocities.length || y1 < 0 || y1 >= velocities[0].length) {
return;
}
if (checkConsistent(timestamp, x1, y1, vx, vy)) {
velocities[x1][y1].filter(vx, vy, speed, timestamp);
if (motionFieldDiffusionEnabled) {
// diffuse by average of neighbors and ourselves
int n = 0;
float dvx = 0, dvy = 0, dvs = 0;
for (int dx = -1; dx <= 1; dx++) {
int x2 = x1 + dx;
if (x2 >= 0 && x2 < velocities.length) {
for (int dy = -1; dy <= 1; dy++) {
int y2 = y1 + dy;
if (dx == 0 && dy == 0) {
continue; // don't count ourselves
}
if (y2 >= 0 && y2 < velocities[0].length) {
n++;
Point3D p = velocities[x2][y2].getValue3D();
dvx += p.x;
dvy += p.y;
dvs += p.z;
}
}
}
}
float r = 1f / n; // recip of sum to compute average
LowpassFilter3D v = velocities[x1][y1];
Point3D c = v.getValue3D();
v.setInternalValue3D(.5f * (c.x + r * dvx), .5f * (c.y + r * dvy), .5f * (c.z + r * dvs));
}
}
lastTs[x1][y1] = ts;
}
본 발명의 다른 실시 예에 따르면, 블록 매칭은 스테레오 비전 매칭을 위해 사용된다.
광학 흐름에 대해 설명된 장치 및 방법은 스테레오 쌍안(stereo binocular) 비전의 밀접한 관련 문제에 매우 쉽게 적용될 수 있다. 광학 흐름에서, 기준 블록은 검색 영역에서 과거의 타임 슬라이스와 일치한다. 스테레오 비전에서, 한쪽 눈(one eye)의 기준 블록은 소위 등극선(epipolar line)으로 정의된 검색 곡선에서 다른 쪽 눈으로부터의 동일한 타임 슬라이스에 일치한다.
스테레오 비전의 경우, 본 발명에 따른 알고리즘/방법의 가장 간단한 실시 예는 양쪽 눈에서 상기 슬라이스를 동시에 회전시키기 위하여 전술한 슬라이스 회전/교환 방법(예를 들어 일정한 지속 시간, 일정한 이벤트 수 또는 AreaEvent ) 중 하나를 사용한다. 이벤트 수 방법 중 하나를 사용하는 경우 회전/교환은 어느 한쪽 눈에 축적되어 트리거될 수 있다.
누적된 타임 슬라이스와 블록 매치에만 의존하기 때문에 광학 흐름과 스테레오 방법을 결합할 수 있다. 스테레오 매칭과 광학 흐름 계산은 양쪽 눈에서 현재 타임 슬라이스에 누적된 이벤트에 의해 트리거될 수 있다.
본 발명에 따른 향상된 광학 흐름 알고리즘/방법의 예
도 11은 다양한 유형의 이미지 특징에 대한 블록 매칭의 실제DVS 데이터 예를 도시한다. 여기서, 빨간색은 기준 블록 슬라이스 픽셀이고, 녹색은 검색 영역 슬라이스 픽셀이며, 파란색 픽셀은 매칭된 블록 픽셀을 나타낸다. (A): 가장자리. (B): 코너. (C): 개별 특징(isolated feature). (D): 텍스처.
도 12, 도 13, 도 14 및 도 15는 전술한 개선된 흐름 방법 결과의 예를 도시한다.
하기에서 본 발명의 추가의 양태 및 구체 예는 항목으로서 언급되지만 본 발명의 청구 범위로서 표현될 수도 있다.
항목 1: 이벤트-기반 비전 센서에서 광학 흐름을 계산하기 위한 장치 또는 방법
a. 이벤트 카운트 2D 이미지 메모리 t, t-d 및 t-2*d 축적된 타임 슬라이스
b. 현재 타임 슬라이스 이벤트 카운트 메모리 t에 이벤트 카운트를 축적.
c. 최소 블록 이미지 거리 매칭 기준을 사용하여 타임 슬라이스 t-2*d에서 영역을 검색하기 위해 과거 타임 슬라이스 t-d에서 슬라이스 t의 가장 최근의 이벤트 위치를 중심으로 하는 매칭 참조 블록.
d. 현재 슬라이스 t가 슬라이스 t-d가 되고, 슬라이스 t-d가 슬라이스 t-2*d가 되고, 슬라이스 t-2*d가 클리어되고 슬라이스 t가 되도록 타임 슬라이스 메모리를 주기적으로 회전.
항목 2: 항목 1에 기준 블록 픽셀과 검색 블록 픽셀 사이의 절대 차이의 합인 블록 매치 거리 매치 메트릭(block matching distance matching metric)을 더함(plus).
항목 3: 항목 1에 상기 센서의 원래 어드레스 공간을 서브 샘플링하는 타임 슬라이스 멀티플 메모리 세트 사용을 더함.
항목 4: 항목 1에 일정한 시간 간격으로 타임 슬라이스를 회전시키는 방법을 더함.
항목 5: 항목 1에 슬라이스 t에 누적된 일정한 총 이벤트 카운트에서 타임 슬라이스를 회전시키는 방법을 더함.
항목 6: 항목 1에 슬라이스 t의 임의의 서브 영역이 지정된(specified) 이벤트의 수를 축적할 때 타임 슬라이스를 회전시키는 방법을 더함.
항목 7: 항목 1에 마지막 슬라이스 회전이 임계값을 초과할 때 타임 슬라이스를 회전시키는 방법을 더함.
항목 8: 항목 1에 평균 매치 거리로부터의 피드백 제어에 기초하여 슬라이스 회전 간격 지속 기간을 제어하는 방법을 더함.
항목 9: 항목 1에 평균 매치 거리로부터의 피드백 제어에 기초하여 슬라이스의 총 이벤트 수를 제어하는 방법을 더함.
항목 10: 항목 1에 슬라이스 t의 임의의 서브 블록이 지정된(specified) 이벤트의 수를 축적할 때 평균 매치 거리로부터의 피드백 제어에 기초하여 슬라이스를 제어하는 방법을 더함.
항목 11: 항목 1에 이벤트 카운트 2D 이미지를 이진 맵(binary map)에 누적하는 방법을 더함.
항목 12: 항목 1에 이벤트 카운트 2D 이미지를 멀티비트맵에 누적하는 방법을 더함.
항목 13: 항목 1에 전체 영역을 철저하게(exhaustively) 검색하는 방법을 더함.
항목 14: 항목 1에 다이아몬드 검색(Diamond Search) 방법을 더함.
항목 15: 항목 1에 이상값을 거부하기 위하여 블록의 유효한 픽셀 백분율 사용을 더함.
항목 16: 항목 1에 이상값을 거부하기 위하여 거리 임계값 사용을 더함.
항목 17: 항목 1에 실시간 성능을 향상시키기 위해 일부 이벤트의 완전한 처리를 스킵하지만, 여전히 현재 타임 슬라이스에 그들을 축적하는 이벤트 다운 샘플링 사용을 더함.
항목 18: 항목 17에 및 초당 평균 프레임으로부터의 피드백 제어에 기초하여 스킵 이벤트 수를 제어하는 방법을 더함.
항목 19: 항목 1에 규칙적으로 간격을 두고 선택적으로 서브 샘플링된 모션 필드에 이벤트를 축적하는 방법을 더함.
항목 20: 항목 2에 항목 4를 더하고 블록의 절대 거리 합계를 병렬로 계산하는 논리 회로 구현을 더함.
항목 21: 항목 2에 항목 4를 더하고 절대 거리의 최소 합을 병렬로 계산하는 논리 회로 구현을 더함.
항목 22 : 이벤트-기반 비전 센서 사용에서 스테레오를 계산하기 위한 장치 또는 방법
a. 오른쪽(r) 및 왼쪽(l) 눈(eyes)으로부터 이벤트 카운트 2D 이미지 메모리 t(r), (t-d)(r), t(l), (t-d)(l) 축적된 타임 슬라이스.
b. 현재 타임 슬라이스 이벤트 카운트 메모리 t(r) 및 t(l)에 이벤트 카운트를 축적.
c. 최소 블록 이미지 거리 매칭 기준을 사용하여 슬라이스 (t-d)(r)의 슬라이스 t(r)에서 가장 최근의 이벤트 위치를 중심으로 하는 기준 블록을 타임 슬라이스 (t-d)(l)에서 검색 영역과 매칭, 그리고 왼쪽 눈에서 오른쪽 눈으로의 이벤트에 대해 반대.
d. 현재 슬라이스 t(r)이 슬라이스 (t-d)(r)가 되고, 슬라이스 t(l)이 슬라이스 (t-d)(l)가 되고, 슬라이스 t(r) 및 t(l)이 클리어되도록 타임 슬라이스 메모리를 주기적으로 동시에 회전.
항목 23 : 항목 22에 항목 1 내지 21의 특징 중 하나 또는 임의의 특징을 더함.
References
[1] Baker S, Matthews I. Lucas-kanade 20 years on: A unifying framework[J]. International journal of computer vision, 2004, 56(3): 221-255.
[2] Horn B K P, Schunck B G. Determining optical flow[J]. Artificial intelligence, 1981, 17(1-3): 185-203.
[3] Benosman R, Clercq C, Lagorce X, et al. Event-based visual flow[J]. IEEE transactions on neural networks and learning systems, 2014, 25(2): 407-417.
[4] R. Benosman, S.-H. Ieng, C. Clercq, C. Bartolozzi, and M. Srinivasan, Asynchronous frameless event-based optical flow, Neural Networks, vol. 27, pp. 32-37, 2012.
[5] Conradt J. On-board real-time optic-flow for miniature event-based vision sensors. //2015 IEEE International Conference on Robotics and Biomimetics (ROBIO). IEEE, 2015: 1858-1863.
[6] Barranco F, Fermuller C, Aloimonos Y. Bio-inspired motion estimation with event-driven sensors[C]. International Work-Conference on Artificial Neural Networks. Springer International Publishing, 2015: 309-321.
[7] Rueckauer B, Delbruck T. Evaluation of event-based algorithms for optical flow with ground-truth from inertial measurement sensor[J]. Frontiers in neuroscience, 2016, 10.
[8] "jAER Open Source Project," jAER Open Source Project. [Online]. Available: http://jaerproject.org.
[9] Agha S, Dwayer V M. Algorithms and VLSI Architectures for MPEG-4 Motion Estimation[J]. Electronic systems and control Division Research, 2003: 24-27.
[10]https://sourceforge.net/p/jaer/codeHEAD/tree/jAER/trunk/src/ch/unizh/ini/jaer/projects/minliu/PatchMatchFlow.java.
[11] Wong S, Vassiliadis S, Cotofana S. A sum of absolute differences implementation in FPGA hardware[C], Euromicro Conference, 2002. Proceedings. 28th. IEEE, 2002: 183-188.
[12] Lichtsteiner P, Posch C, Delbruck T. A 128x128 120 dB 15 us latency asynchronous temporal contrast vision sensor[J]. IEEE journal of solid-state circuits, 2008, 43(2): 566-576.
[13] Berner R, Delbruck T, Civit-Balcells A, et al. A 5 Meps \$100 USB2.0 address-event monitor-sequencer interface[C]. //2007IEEE International Symposium on Circuits and Systems. IEEE, 2007: 2451-2454.
[14] Barjatya A. Block matching algorithms for motion estimation[J]. IEEE Transactions Evolution Computation, 2004, 8(3): 225-239.
[15] Zhang L, Zhang Y, Tang J, et al. Binary code ranking with weighted hamming distance[C] //Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2013: 1586-1593.

Claims (25)

  1. 복수의 픽셀을 포함하고 변경 이벤트 스트림을 출력하도록 구성된 이벤트-기반 비전 센서에 의해 캡처된 장면에서 광학 흐름을 계산하는 방법으로,
    각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 타임스탬프, 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터를 포함하고,
    - 변경 이벤트는 적어도 3개의 타임 슬라이스 프레임, 즉 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t), 시간 t-d에서 시작하는 제2타임 슬라이스 프레임(t-d) 및 시간 t-2*d에서 시작하는 제3타임 슬라이스 프레임(t-2*d)에 축적되고, 여기서 d는 각각의 타임 슬라이스 프레임의 지속 시간(duration)이고,
    - 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 상기 현재 제1타임 슬라이스 프레임에 축적되고,
    - 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 상기 제2타임 슬라이스 프레임(t-d)의 기준 블록은 제3타임 슬라이스 프레임(t-2*d)의 검색 블록과 비교되고, 상기 기준 블록은 현재 제1타임 슬라이스 프레임(t)에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고;및
    - 현재의 제1타임 슬라이스 프레임(t)은 제2타임 슬라이스 프레임(t-d)이 되고, 제2타임 슬라이스 프레임(t-d)은 제3타임 슬라이스 프레임(t-2*d)이 되고, 제3타임 슬라이스 프레임(t-2*d)은 클리어되고 현재 제1타임 슬라이스 프레임(t)이 되도록 상기 3개의 타임 슬라이스 프레임(t, t-d, t-2*d)이 주기적으로 교환되는 방법.
  2. 제1항에 있어서,
    상기 거리 메트릭은 기준 블록 픽셀과 검색 블록 픽셀 사이의 절대 차이(absolute difference)의 합인 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 이벤트-기반 비전 센서의 원래(original) 어드레스 공간을 서브 샘플링하는 복수의 세트의 타임 슬라이스 프레임이 사용되는 방법.
  4. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 타임 슬라이스 프레임의 교환은 일정한 시간 간격으로 수행되는 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타임 슬라이스 프레임의 교환은 제1타임 슬라이스 프레임(t)에 축적된 특정의, 특히 일정한, 총 이벤트 카운트에서 수행되는 방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타임 슬라이스 프레임의 교환은 현재의 제1타임 슬라이스(t)의 임의의 서브 영역이 특정된(specified) 수의 변경 이벤트를 축적할 때 수행되는 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타임 슬라이스 프레임의 교환은 상기 타임 슬라이스 프레임들의 마지막 교환 이후의 장면의 총 통합 모션(total integrated motion)이 임계량을 초과할 때 수행되는 방법.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타임 슬라이스 프레임의 상기 교환 이후의 상기 지속 시간 d는 상기 기준 블록과 각각의 가장 유사한 검색 블록(most similar search block) 사이의 평균 매치 거리(D)에 따라 제어되고, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정되는 방법.
  9. 제5항에 있어서,
    상기 총 이벤트 카운트는 기준 블록과 각각의 가장 유사한 검색 블록 사이의 평균 매칭 거리(D)에 따라 제어되며, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정되는 방법.
  10. 제6항에 있어서,
    상기 특정된(specified) 수는 기준 블록과 각각의 가장 유사한 검색 블록 사이의 평균 매칭 거리(D)에 따라 제어되며, 상기 평균 매칭 거리는 계산된 광학 흐름 분포의 히스토그램을 사용하여 결정되는 방법.
  11. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 제1, 제2 및 제3타임 슬라이스 프레임은 각각 이진 비트 맵 타임 슬라이스 프레임(binary bitmap time slice frame)을 형성하는 방법.
  12. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1, 제2 및 제3타임 슬라이스 프레임은 각각 멀티비트 픽셀 타임 슬라이스 프레임(multibit pixel time slice frame)을 형성하는 방법.
  13. 선행하는 청구항 중 어느 한 항에 있어서,
    각각의 제3타임 슬라이스 프레임은 상기 가장 유사한 검색 블록을 찾기 위해 철저하게(exhaustively) 검색되는 방법.
  14. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 가장 유사한 검색 블록을 찾기 위해 다이아몬드 검색(Diamond Search)이 사용되는 방법.
  15. 선행하는 청구항 중 어느 한 항에 있어서,
    이상값(outlier)을 거부하기 위해 충분히 사전 정의된 유효 픽셀의 수를 포함하는 기준 및 검색 블록만 비교하고, 여기서 유효 픽셀은 변경 이벤트가 축적된 픽셀인 방법.
  16. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 기준 블록과 상기 가장 유사한 검색 블록 사이의 거리가 거리 임계값(distance threshold)을 초과하는 경우, 상기 가장 유사한 검색 블록은 이상값으로 거부되는 방법.
  17. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 가장 최근의 변경 이벤트(most recent change event) 중 일부는 현재의 제1타임 슬라이스에 축적되지만 스킵되어 따라서 실시간 성능을 향상시키기 위해 기준 블록의 센터링(centering)에 사용되지 않는 방법.
  18. 제17항에 있어서,
    상기 스킵(skipping)은 상기 방법을 수행하기 위해 사용된 장치가 여전히 이전(previous) 변경 이벤트로부터의 광학 흐름을 바쁘게 처리하는 중일 경우에 수행되는 방법.
  19. 선행하는 청구항 중 어느 한 항에 있어서,
    픽셀 위치(x, y), 속도 벡터(vx, vy), 특히 속도 벡터 방향에서의 속도를 포함하는 광학 흐름 이벤트는 각각의 기준 블록 및 가장 유사한 검색 블록(most similar search block)으로부터 계산되는 방법.
  20. 제19항에 있어서,
    상기 광학 흐름 이벤트는 규칙적으로 이격된(regularly-spaced), 선택적으로 서브-샘플링 된 모션 필드에 축적되는 방법.
  21. 선행하는 청구항, 특히 청구항 제2항 및 청구항 제4항 중 어느 한 항에 있어서,
    기준 블록과 검색 블록 사이의 절대 거리(absolute distances)의 합은 병렬로 계산되는 방법.
  22. 선행하는 청구항, 특히 청구항 제2항 및 청구항 제4항 중 어느 한 항에 있어서,
    절대 거리의 최소 합은 병렬로 계산되는 방법.
  23. 좌측 및 우측 이벤트-기반 비전 센서(l, r)에서 스테레오 비전을 계산하는 방법으로,
    각각의 이벤트-기반 비전 센서(l, r)는 복수의 픽셀을 포함하고 변경 이벤트 스트림(stream of change event)을 출력하도록 구성되며, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 타임스탬프, 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터를 포함하고,
    - 각각의 비전 센서(l, r)에 대해 변경 이벤트는 적어도 2개의 타임 슬라이스 프레임, 즉 각각 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t(l), t(r)), 각각 시간 t-d에서 시작하는 제2타임 슬라이스 프레임((t-d)(l), (t-d)(r))에 축적되고,
    - 좌측 비전 센서(l)의 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))에 누적되고, 및 상기 우측 비전 센서(r)의 변경 이벤트는 상기 지속 시간 d만큼 떨어져서(over) 우측 비전 센서(r)의 현재 제1타임 슬라이스 프레임(t(r))에 축적되고,
    - 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 우측 비전 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))의 기준 블록은 좌측 비전의 센서(l)의 제2타임 슬라이스 프레임((t-d) (l))의 검색 블록과 비교되고, 상기 기준 블록은 우측 비전 센서(r)의 현재 제1타임 슬라이스 프레임(t(r))에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고, 상기 거리 메트릭(distance metric)을 사용하여 추가 기준 블록과 가장 유사한 추가 검색 블록을 찾기 위하여 좌측 비전 센서(l)의 제2타임 슬라이스 프레임((t-d)(l))의 추가 기준 블록은 우측 비전의 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))의 추가 검색 블록과 비교되고, 상기 추가 기준 블록은 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고,
    - 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))은 좌측 비전 센서(l)의 제2타임 슬라이스 프레임((t-d)(l))이 되고, 우측 비전 센서(r)의 제1타임 슬라이스 프레임(t(r))은 우측 비전 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))이 되고, 좌측 및 우측 비전 센서(l, r)의 제1타임 슬라이스 프레임(t(l), t(r))이 클리어되도록 4개의 타임 슬라이스 프레임(t(l), t(r), (t-d)(l), (t-d)(r))이 주기적으로 동시에 교환되는 방법.
  24. 이벤트-기반 비전 센서에 의해 캡처된 장면에서 광학 흐름을 계산하기 위한 장치로,
    상기 장치는 복수의 픽셀을 포함하고 변경 이벤트 스트림을 출력하도록 구성된 이벤트-기반 비전 센서를 포함하고, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 타임스탬프, 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터를 포함하고,
    - 상기 장치는 변경 이벤트를 적어도 3개의 타임 슬라이스 프레임, 즉 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t), 시간 t-d에서 시작하는 제2타임 슬라이스 프레임(t-d) 및 시간 t-2*d에서 시작하는 제3타임 슬라이스 프레임(t-2*d)에 축적하도록 구성되고, 여기서 d는 각각의 타임 슬라이스 프레임의 지속 시간(duration)이고,
    - 상기 장치는 변경 이벤트를 상기 지속 시간 d만큼 떨어져서(over) 상기 현재 제1타임 슬라이스 프레임에 축적되도록 추가로 구성되고,
    - 상기 장치는 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 상기 제2타임 슬라이스 프레임(t-d)의 기준 블록을 제3타임 슬라이스 프레임(t-2*d)의 검색 블록과 비교하도록 추가로 구성되고, 상기 기준 블록은 현재 제1타임 슬라이스 프레임(t)에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고;및
    - 상기 장치는 현재의 제1타임 슬라이스 프레임(t)이 제2타임 슬라이스 프레임(t-d)이 되고, 제2타임 슬라이스 프레임(t-d)이 제3타임 슬라이스 프레임(t-2*d)이 되고, 제3타임 슬라이스 프레임(t-2*d)이 클리어되고 현재 제1타임 슬라이스 프레임(t)이 되도록 상기 3개의 타임 슬라이스 프레임(t, t-d, t-2*d)이 주기적으로 교환되도록 추가로 구성된 장치.
  25. 장면을 캡처하기 위한 좌측 및 우측 이벤트-기반 비전 센서(l, r)를 각각 포함하는 스테레오 비전을 계산하기 위한 장치로,
    각각의 이벤트-기반 비전 센서(l, r)는 복수의 픽셀을 포함하고 변경 이벤트 스트림(stream of change event)을 출력하도록 구성되며, 각각의 변경 이벤트는 상기 픽셀들 중 하나에 의해 검출된 밝기의 변화에 대응하고 타임스탬프, 상기 밝기 변화를 검출한 상기 픽셀의 픽셀 어드레스, 및 상기 밝기 변화의 부호(sign)를 설명하는 파라미터를 포함하고,
    - 상기 장치는 각각의 비전 센서(l, r)에 대해 변경 이벤트를 적어도 2개의 타임 슬라이스 프레임, 즉 각각 시간 t에서 시작하는 제1현재 타임 슬라이스 프레임(t(l), t(r)), 각각 시간 t-d에서 시작하는 제2타임 슬라이스 프레임((t-d)(l), (t-d)(r))에 축적되도록 구성되고,
    - 상기 장치는 좌측 비전 센서(l)의 변경 이벤트가 상기 지속 시간 d만큼 떨어져서(over) 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))에 축적되고, 및 상기 우측 비전 센서(r)의 변경 이벤트가 상기 지속 시간 d만큼 떨어져서(over) 우측 비전 센서(r)의 현재 제1타임 슬라이스 프레임(t(r))에 축적되도록 추가로 구성되고,
    - 상기 장치는 거리 메트릭(distance metric)을 사용하여 기준 블록과 가장 유사한 검색 블록을 찾기 위하여 우측 비전 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))의 기준 블록이 좌측 비전의 센서(l)의 제2타임 슬라이스 프레임((t-d)(l))의 검색 블록과 비교되도록 추가로 구성되고, 상기 기준 블록은 우측 비전 센서(r)의 현재 제1타임 슬라이스 프레임(t(r))에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고, 상기 장치는 상기 거리 메트릭(distance metric)을 사용하여 추가 기준 블록과 가장 유사한 추가 검색 블록을 찾기 위하여 좌측 비전 센서(l)의 제2타임 슬라이스 프레임((t-d)(l))의 추가 기준 블록이 우측 비전의 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))의 추가 검색 블록과 비교되도록 추가로 구성되고, 상기 추가 기준 블록은 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))에서 가장 최근의 변경 이벤트(most recent change event)의 픽셀을 중심으로 하는 픽셀을 포함하고,
    - 상기 장치는 좌측 비전 센서(l)의 현재 제1타임 슬라이스 프레임(t(l))은 좌측 비전 센서(l)의 제2타임 슬라이스 프레임((t-d)(l))이 되고, 우측 비전 센서(r)의 제1타임 슬라이스 프레임(t(r))은 우측 비전 센서(r)의 제2타임 슬라이스 프레임((t-d)(r))이 되고, 좌측 및 우측 비전 센서(l, r)의 제1타임 슬라이스 프레임(t(l), t(r))이 클리어되도록 4개의 타임 슬라이스 프레임(t(l), t(r), (t-d)(l), (t-d)(r))이 주기적으로 동시에 교환되도록 추가로 구성되는 장치.
KR1020197038293A 2017-05-29 2018-05-29 동적 비전 센서를 위한 블록-매칭 광학 흐름 및 스테레오 비전 KR20200015589A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17173250 2017-05-29
EP17173250.6 2017-05-29
PCT/EP2018/064041 WO2018219931A1 (en) 2017-05-29 2018-05-29 Block-matching optical flow and stereo vision for dynamic vision sensors

Publications (1)

Publication Number Publication Date
KR20200015589A true KR20200015589A (ko) 2020-02-12

Family

ID=59061805

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038293A KR20200015589A (ko) 2017-05-29 2018-05-29 동적 비전 센서를 위한 블록-매칭 광학 흐름 및 스테레오 비전

Country Status (6)

Country Link
US (1) US11227397B2 (ko)
EP (1) EP3631756B1 (ko)
JP (1) JP7253258B2 (ko)
KR (1) KR20200015589A (ko)
CN (1) CN110692083B (ko)
WO (1) WO2018219931A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210153229A (ko) * 2020-06-10 2021-12-17 광주과학기술원 고해상도 강도 이미지 생성 방법 및 장치
KR20230056192A (ko) * 2021-10-20 2023-04-27 주식회사 큐에스 가상공간 내 객체의 3차원 모델을 갱신하는 방법 및 장치

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111149350B (zh) * 2017-09-28 2022-02-22 苹果公司 使用事件相机生成静态图像
US11216704B2 (en) 2018-10-23 2022-01-04 John M. Couse; Recognition system using multimodality dataset
CN109801314B (zh) * 2019-01-17 2020-10-02 同济大学 一种基于深度学习的双目动态视觉传感器立体匹配方法
EP3690736A1 (en) * 2019-01-30 2020-08-05 Prophesee Method of processing information from an event-based sensor
EP3693698A1 (de) * 2019-02-05 2020-08-12 Leica Geosystems AG Vermessungsgerät mit ereignisbasierter kamera
JP7298272B2 (ja) * 2019-04-23 2023-06-27 沖電気工業株式会社 通信装置および通信方法
CN110415344A (zh) * 2019-06-24 2019-11-05 武汉大学 基于事件相机的运动补偿方法
CN111402146B (zh) * 2020-02-21 2022-05-10 华为技术有限公司 图像处理方法以及图像处理装置
CN111669514B (zh) * 2020-06-08 2021-02-26 北京大学 高动态范围成像方法和装置
CN111798485B (zh) * 2020-06-30 2022-07-19 武汉大学 一种利用imu增强的事件相机光流估计方法及系统
KR20220076943A (ko) 2020-12-01 2022-06-08 삼성전자주식회사 비전 센서, 이를 포함하는 이미지 처리 장치 및 비전 센서의 동작 방법
JP2022111437A (ja) 2021-01-20 2022-08-01 キヤノン株式会社 動きベクトル算出装置、撮像装置および動きベクトル算出方法
EP4060983A1 (en) 2021-01-22 2022-09-21 Toyota Jidosha Kabushiki Kaisha A method for accumulating events using an event-based vision sensor and overlapping time windows
EP4033398A1 (en) 2021-01-25 2022-07-27 Toyota Jidosha Kabushiki Kaisha A clustering method applied to a change event stream produced by an event-based vision sensor
CN112987571B (zh) * 2021-02-25 2022-08-09 中国人民解放军国防科技大学 高动态视觉控制系统及其视觉量测性能衰减容错控制方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987866B2 (en) * 2001-06-05 2006-01-17 Micron Technology, Inc. Multi-modal motion estimation for video sequences
KR100534207B1 (ko) * 2002-12-09 2005-12-08 삼성전자주식회사 비디오 부호화기의 움직임 추정기 및 그 방법
CN101204079B (zh) 2005-06-03 2011-07-27 苏黎世大学 用于检测与时间相关的图像数据的光敏元件阵列
US7728260B2 (en) 2005-06-07 2010-06-01 Johnson Steven X Warm window system
US9129172B2 (en) * 2011-06-20 2015-09-08 Metrologic Instruments, Inc. Indicia reading terminal with color frame processing
KR102072124B1 (ko) * 2011-11-24 2020-02-04 에스케이텔레콤 주식회사 세밀한 예측 단위를 사용하는 효과적인 부호화/복호화 방법 및 장치
FR2985065B1 (fr) 2011-12-21 2014-01-10 Univ Paris Curie Procede d'estimation de flot optique a partir d'un capteur asynchrone de lumiere
KR102070562B1 (ko) 2012-06-19 2020-01-30 삼성전자주식회사 이벤트 기반 이미지 처리 장치 및 그 장치를 이용한 방법
KR102347249B1 (ko) 2014-10-21 2022-01-04 삼성전자주식회사 외부 물체의 움직임과 연관된 이벤트에 응답하여 화면을 디스플레이하는 장치 및 방법
EP3131295A1 (en) * 2015-08-14 2017-02-15 Axis AB Video encoding method and system
CN105160703B (zh) * 2015-08-25 2018-10-19 天津师范大学 一种使用时域视觉传感器的光流计算方法
CN105719290B (zh) * 2016-01-20 2019-02-05 天津师范大学 一种使用时域视觉传感器的双目立体深度匹配方法
CN106597463B (zh) * 2016-12-29 2019-03-29 天津师范大学 基于动态视觉传感器芯片的光电式接近传感器及探测方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210153229A (ko) * 2020-06-10 2021-12-17 광주과학기술원 고해상도 강도 이미지 생성 방법 및 장치
KR20230056192A (ko) * 2021-10-20 2023-04-27 주식회사 큐에스 가상공간 내 객체의 3차원 모델을 갱신하는 방법 및 장치

Also Published As

Publication number Publication date
EP3631756A1 (en) 2020-04-08
CN110692083A (zh) 2020-01-14
US20200111220A1 (en) 2020-04-09
JP2020522067A (ja) 2020-07-27
EP3631756B1 (en) 2022-01-19
CN110692083B (zh) 2024-01-05
US11227397B2 (en) 2022-01-18
JP7253258B2 (ja) 2023-04-06
WO2018219931A1 (en) 2018-12-06

Similar Documents

Publication Publication Date Title
EP3631756B1 (en) Block-matching optical flow and stereo vision for dynamic vision sensors
Liu et al. Block-matching optical flow for dynamic vision sensors: Algorithm and FPGA implementation
Rebecq et al. EMVS: Event-based multi-view stereo
CN101960490B (zh) 图像处理方法和图像处理设备
CN110866480A (zh) 对象的跟踪方法及装置、存储介质、电子装置
CN113286194A (zh) 视频处理方法、装置、电子设备及可读存储介质
WO2006078861A9 (en) Method, system and apparatus for a time stamped visual motion sensor
CN112449152B (zh) 多路视频同步的方法、系统及设备
Jiang et al. A hardware architecture for real-time video segmentation utilizing memory reduction techniques
Porikli et al. Object tracking in low-frame-rate video
Lu et al. Edge compression: An integrated framework for compressive imaging processing on cavs
Li et al. A traffic state detection tool for freeway video surveillance system
Liu et al. EDFLOW: Event driven optical flow camera with keypoint detection and adaptive block matching
CN112367474A (zh) 一种自适应光场成像方法、装置及设备
CN113711276A (zh) 尺度感知单目定位和地图构建
Duan et al. Guided event filtering: Synergy between intensity images and neuromorphic events for high performance imaging
Wang et al. Object counting in video surveillance using multi-scale density map regression
Kryjak et al. Real-time implementation of foreground object detection from a moving camera using the vibe algorithm
Eibensteiner et al. A high-performance hardware architecture for a frameless stereo vision algorithm implemented on a FPGA platform
CN110992393B (zh) 一种基于视觉的目标运动跟踪方法
Banerjee et al. An adaptive video acquisition scheme for object tracking and its performance optimization
Singh et al. Real-time object tracking with active PTZ camera using hardware acceleration approach
Tung et al. Why accuracy is not enough: The need for consistency in object detection
JP2001307104A (ja) 動画像のオブジェクト抽出装置
JP6559378B2 (ja) 画像処理装置、画像処理方法及び画像処理プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal