KR102056218B1 - 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치 - Google Patents

특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치 Download PDF

Info

Publication number
KR102056218B1
KR102056218B1 KR1020180073793A KR20180073793A KR102056218B1 KR 102056218 B1 KR102056218 B1 KR 102056218B1 KR 1020180073793 A KR1020180073793 A KR 1020180073793A KR 20180073793 A KR20180073793 A KR 20180073793A KR 102056218 B1 KR102056218 B1 KR 102056218B1
Authority
KR
South Korea
Prior art keywords
motion vector
feature point
candidate group
sbad
current block
Prior art date
Application number
KR1020180073793A
Other languages
English (en)
Inventor
류정원
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020180073793A priority Critical patent/KR102056218B1/ko
Application granted granted Critical
Publication of KR102056218B1 publication Critical patent/KR102056218B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0135Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes
    • H04N7/014Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes involving the use of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Systems (AREA)

Abstract

특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치가 개시된다. 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계, 상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계, 일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함한다. 따라서, 신뢰도 높고 빠른 움직임 추정을 통해 보간 프레임을 생성할 수 있다.

Description

특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치{MOTION ESTIMATION METHOD AND APPARATUS USING FEATURE POINT-BASED MOTION VECTORS}
본 발명은 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치에 관한 것으로, 더욱 상세하게는 특징점 중심의 특징점 패치를 기반으로 양방향으로 움직임 추정을 수행하여 특징점 기반의 움직임 벡터를 획득하고, 획득된 특징점 기반의 움직임 벡터를 보간 프레임에 대한 움직임 벡터 후보군으로 추가하여 최적의 움직임 벡터를 결정하는 방법 및 장치에 관한 것이다.
TV 방송은 과거 흑백 TV 방송을 시작으로 현재 초고해상도 TV(ultra high definition TV: UHDTV)에 이르기까지 빠르게 발전해왔다. 지금껏 발전해온 많은 기술들 중, 영상의 화질을 결정하는 주요소들 중 하나인 초당 프레임수(frame per second: FPS)의 중요성에 따라 제한된 대역폭 내에서 원본 프레임들간의 물체나 배경의 움직임을 고려하여 보간 프레임을 형성하는 다양한 움직임 보상 프레임율 증강 기법(motion compensation frame rate up-conversion: MC-FRUC)이 제안되었다.
대표적인 움직임 보상 프레임율 증강 기법은 구현이 단순하지만 효율적인 블록 정합 기법(block matching algorithm: BMA)을 사용하여 움직임 추정(motion estimation: ME) 과정을 통해 물체의 움직임 벡터를 찾아낸 후 움직임 보상(motion compensation: MC)과정을 통해 원본 프레임들 사이에 보간 프레임을 형성한다. 움직임 추정 과정 시 다양한 알고리즘이 존재하는데 크게 sum of absolute differences(SAD)를 사용하여 full-search 하는 알고리즘과 실제 움직임 추정(true motion estimation: true ME)과정이 있다. 이외에도 다양한 움직임 추정 과정을 효율적으로 사용한 후 움직임 보상 과정을 통해 프레임율을 향상시켜 프레임율이 낮을 때 발생되는 움직임 열화 현상을 해결할 수 있으며 부드러운 움직임을 가진 영상 컨텐츠를 형성할 수 있다.
실제 움직임 추정을 활용한 HD급 동영상 프레임율 증강 기법(Frame Rate Up-conversion for High-Definition Video Applications)은 관성을 고려하여 이전 보간 프레임 내의 움직임 벡터를 확장시킨 움직임 벡터 필드를 만든 후, 4개의 고정된 움직임 벡터와 3개의 비고정된 움직임 벡터 후보군을 활용하여 초기 움직임 추정을 수행한다. 그런 다음, 움직임 벡터들 간의 일관성을 향상시키기 위해 2가지 패턴의 주변 움직임 벡터를 활용하여 움직임 벡터 제한 과정을 수행하고 SAD를 활용한 지역 기반 광역 움직임 벡터 수정과정을 거쳐 하나의 보간 프레임이 형성된다. 본 기술은 이전의 기술보다 PSNR, SSIM, 및 빠른 속도를 확인할 수 있다.
실제 움직임 추정 시 사용자 파라미터의 개수가 매우 많아 다양한 HD급 시퀀스에 활용 가치가 떨어지며 2가지의 움직임 벡터 필드를 사용하기 때문에 후보군을 형성할 때 계산량이 많아 속도 측면에서 낮은 효율을 보여준다.
또한, 실제 움직임 추정 시, 현재 처리하는 블록 주변으로 공간적, 시간적, 업데이트 움직임 벡터들을 후보군으로 사용하여 움직임 벡터를 구하기 때문에 주변 움직임 벡터가 오류 값을 가질 경우 오류 전파(Error propagation) 현상이 발생되는 심각한 단점을 가지고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법을 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치를 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 또 다른 목적은, 특징점 기반 움직임 벡터 생성 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명은, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법을 제공한다.
여기서 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계, 상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계, 일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함할 수 있다.
여기서 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계는, 상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계 및 상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는, 상기 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계, 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계 및 생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터를 획득하는 단계는, 상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계, 결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계 및 가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 가중치를 부여하는 단계는, 상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함할 수 있다.
여기서 상기 일관성을 검증하는 단계는, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계 및 산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함할 수 있다.
여기서 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계, 생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계 및 산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함할 수 있다.
여기서 상기 미리 설정된 벡터 상수는, 집합
Figure 112018062990021-pat00001
에서 선택될 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 측면은, 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치를 제공한다.
여기서 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치는, 적어도 하나의 프로세서(processor) 및 상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 저장하는 메모리(memory)를 포함할 수 있다.
여기서 상기 적어도 하나의 단계는, 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계, 상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계, 일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함할 수 있다.
여기서 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계는, 상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계 및 상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는, 상기 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계, 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계 및 생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터를 획득하는 단계는, 상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계, 결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계 및 가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 가중치를 부여하는 단계는, 상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함할 수 있다.
여기서 상기 일관성을 검증하는 단계는, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계 및 산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함할 ㅅ 있다.
여기서 상기 적어도 하나의 단계는, 일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계, 생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계 및 산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함할 수 있다.
여기서 상기 미리 설정된 벡터 상수는, 집합
Figure 112018062990021-pat00002
에서 선택될 수 있다.
상기와 같은 본 발명에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법을 이용할 경우에는 움직임 추정 속도가 향상되고 더욱 정밀한 움직임 추정이 수행될 수 있다.
구체적으로, 본 발명에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정을 사용하여 보간 프레임을 생성할 경우, 기존의 HD급 동영상 프레임율 증강 기법(Frame Rate Up Conversion for High-Definition Video Applications) 알고리즘과 비교할 때 평균적으로 약 3.74 dB, 0.022의 PSNR(Peak Signal-to-noise ratio)과 SSIM(Structural Similarity Index for Measuring image quality) 이득을 얻을 수 있었다.
또한, 알고리즘의 수행 시간에서도 기존의 기법보다 약 1.65배 더 빠른 효과를 가지는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 특징점 패치를 형성하는 방법에 대한 예시도이다.
도 2는 본 발명의 일 실시예에 따른 특징점 패치를 기반으로 움직임 추정을 수행하는 방법에 대한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 보간 프레임에서의 움직임 벡터를 결정하는 방법에 대한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 보간 프레임에서의 각 블록에 대한 움직임 벡터를 결정하는 제1 케이스이다.
도 5는 본 발명의 일 실시예에 따른 보간 프레임에서의 각 블록에 대한 움직임 벡터를 결정하는 제2 케이스이다.
도 6a 내지 도 6b은 본 발명의 일 실시예에 따른 움직임 추정을 위한 움직임 벡터 후보군을 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에 대한 제1 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에서 후보군에 포함된 움직임 벡터의 일관성이 없는 경우에 대한 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에서, 2차 움직임 벡터 후보군을 활용하여 현재 블록에 대한 움직임 벡터를 결정하는 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 OBMC(Overlapped block motion compensation) 알고리즘을 설명하기 위한 예시도이다.
도 11은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에 대한 대표 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치에 대한 구성도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
통상적으로 영상은 일련의 정지 영상(Still Image)으로 구성될 수 있으며, 이 정지 영상들은 GOP(Group of Pictures) 단위로 구분될 수 있고, 각 정지 영상을 픽쳐(Picture)라고 지칭할 수 있다. 또한, 영상을 이루는 최소 단위는 화소(Pixel)일 수 있으며, 하나의 화소를 표현하는데 사용되는 비트수를 비트 심도(Bit Depth)라고 한다.
또한, 각 픽쳐는 슬라이스, 타일, 블록 등으로 지칭되는 소정의 영역으로 분할될 수 있다. 또한, 하나의 GOP에 포함된 픽쳐들은 I 픽쳐, P 픽쳐, B 픽쳐로 분류될 수 있다. I 픽쳐는 다른 픽쳐를 참조하지 않고, 자체적으로 부호화/복호화되는 픽쳐를 의미할 수 있으며, P 픽쳐와 B 픽쳐는 다른 픽쳐를 사용하여 움직임 추정(Motion Estimation) 및 움직임 보상(Motion Compensation) 등의 과정을 수행하여 부호화/복호화하는 픽쳐를 의미할 수 있다. 일반적으로 P 픽쳐의 경우 I 픽쳐와 P 픽쳐를 참조 픽쳐로써 이용할 수 있으며, B 픽쳐의 경우 I 픽쳐와 P 픽쳐를 참조 픽쳐를 이용할 수 있다.
여기서 부호화/복호화하는데 참조되는 픽쳐를 참조 픽쳐(Reference Picture)라고 하며, 참조되는 블록 또는 화소를 참조 블록(Reference Block), 참조 화소(Reference Pixel)라고 한다. 또한, 참조되는 데이터(Reference Data)는 공간 영역(Spatial Domain)의 화소값 뿐만 아니라 주파수 영역(Frequency Domain)의 계수값, 부호화/복호화 과정 중에 생성, 결정되는 다양한 부호화/복호화 정보일 수 있다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 특징점 패치를 형성하는 방법에 대한 예시도이다.
도 1을 참조하면, 처리 대상 프레임(frame)에 대하여 특징점(Feature Point)을 검출하고 검출된 특징점을 중심으로 하는 특징점 패치(Feature Patch)를 생성한 것을 확인할 수 있다. 특징점 패치는 특징점을 중심으로 하여 미리 설정된 크기를 갖는 블록으로 정의할 수 있다. 예를 들어 특징점 패치는 특징점을 중심으로 17Х17의 화소 크기(pixel size)를 갖는 블록일 수 있다.
한편, 특징점 검출 방법으로는 FAST Detector(Features from Accelerated Segment Test Detector)을 이용할 수 있다. FAST Detector는 16개의 화소들로 구성되는 하나의 원(circle)을 생성하고, 원을 구성하는 후보 화소가 특징점인지 판단한다. 예를 들어, 하나의 원을 이루는 16개의 화소 중에서 연속된 N개의 화소들이 후보 화소의 화소값과 임계값(threshold value)을 더한 값보다 더 밝거나, 후보 화소의 화소값에서 임계값을 뺀 값보다 더 어두우면, 후보 화소를 특징점으로 결정할 수 있다.
이때, 일반적인 FAST Detector는 임계값을 사용자에 의해 설정된 값으로 결정하는데, 본 발명에서는 적응적임 임계값을 설정함으로써 더 정밀한 특징점을 검출할 수 있다. 구체적으로, 본 발명에서는 하나의 원을 이루는 16개의 화소들의 화소값에 대한 평균값과 현재 처리하는 후보 화소의 화소값 사이의 차분값을 임계값으로 정의할 수 있다.
따라서, 본 발명의 일 실시예에 따른 특징점 검출은 적응적인 임계값 설정에 따른 FAST Detector 기법을 이용할 수 있다.
도 2는 본 발명의 일 실시예에 따른 특징점 패치를 기반으로 움직임 추정을 수행하는 방법에 대한 예시도이다.
도 2를 참조하면, 이전 프레임(Previous frame) 또는 현재 프레임(Current frame)에 속하는 특징점 패치에 대하여 단방향 움직임 추정(Unidirectional motion estimation)을 수행함으로써 보간 프레임(Interpolated frame)에서의 각 특징점 패치에 대한 움직임 벡터를 결정할 수 있다.
구체적으로 먼저, 이전 프레임(Previous frame)에 속하는 제1 특징점 패치를 선택하고, 선택된 제1 특징점 패치를 중심으로 하는 일정한 검색 영역(22)을 현재 프레임에서 설정할 수 있다. 다음으로, 설정된 검색 영역(22) 내에서 제1 특징점 패치와 유사도가 높은(또는 SAD에 따른 값이 최소화되는) 패치를 찾는다. 찾은 패치에 따라 결정되는 단방향 움직임 벡터를 이용하여 보간 프레임(Interpolated frame)에서 제1 특징점 패치에 대한 움직임 벡터를 결정할 수 있다. 예를 들어 보간 프레임에서 제1 특징점 패치에 대한 움직임 벡터는 앞서 결정된 단방향 움직임 벡터의 1/2로 결정할 수 있다. 여기서 설명한 보간 프레임에서 제1 특징점 패치에 대한 단방향 움직임 벡터는 포워드(Forward) 방향 움직임 벡터에 해당할 수 있다.
한편, 이전 프레임 대신에 현재 프레임에서 제2 특징점 패치를 선택하고, 백워드(Backward) 방향으로 유사도가 높은 패치를 검색함으로써, 보간 프레임에서 제2 특징점 패치에 대한 백워드 방향의 움직임 벡터를 결정할 수 있다.
종합하면, 현재 프레임과 이전 프레임을 대상으로 특징점 패치를 결정한 후, 결정된 각각의 특징점 패치에 대한 단방향 움직임 추정을 수행함으로써, 보간 프레임에서 각 특징점 패치에 대한 움직임 벡터를 도출할 수 있다.
도 3은 본 발명의 일 실시예에 따른 보간 프레임에서의 움직임 벡터를 결정하는 방법에 대한 개념도이다. 도 4는 본 발명의 일 실시예에 따른 보간 프레임에서의 각 블록에 대한 움직임 벡터를 결정하는 제1 케이스이다. 도 5는 본 발명의 일 실시예에 따른 보간 프레임에서의 각 블록에 대한 움직임 벡터를 결정하는 제2 케이스이다.
도 3 내지 도 5를 참조하면, 도 2에 따라 도출된, 보간 프레임에서 각 특징점 패치에 대한 움직임 벡터를 이용하여 보간 프레임 내 분할 블록에 대한 움직임 벡터를 결정하는 과정을 설명할 수 있다.
도 3을 참조하면, 도 2에 따른 단방향 움직임 추정을 통해 도출된 보간 프레임(30, Interpolated frame)에서의 움직임 벡터는 특징점 패치에 대한 포워드 방향 움직임 벡터와 백워드 방향 움직임 벡터를 포함하는 것을 확인할 수 있다.
이때, 보간 프레임(30)을 미리 설정된 크기(예를 들면 16Х16 화소 크기)의 블록으로 분할하고 분할된 각 블록에서의 움직임 벡터를 결정하기 위해서는 움직임 패치에 대한 포워드 방향 움직임 벡터와 백워드 방향 움직임 벡터를 결합하는 것이 요구된다. 구체적으로 보간 프레임(30)에서 분할된 현재 블록(32)은 도 2에 따라 결정된 단방향 움직임 벡터에 따른 특징점 패치가 하나 이상 겹칠 수 있다. 도 3을 참조하여 예를 들면, 보간 프레임의 현재 블록(32)은 단방향 움직임 벡터에 따른 특징점 패치가 3개 존재하는 것을 확인할 수 있다. 따라서, 3개의 특징점 패치에 따른 3개의 단방향 움직임 벡터를 이용하여 보간 프레임의 현재 블록(32)에 대한 움직임 벡터를 결정할 수 있다.
도 4를 참조하면, 보간 프레임의 현재 블록(32)과 겹치는 특징점 패치들 상호간에 중첩되는 영역이 없는 경우를 확인할 수 있다. 도 4와 같이 보간 프레임의 현재 블록(32)에 겹치는 특징점 패치들(40, 42, 46) 상호간에 중첩되는 영역이 없다면, 각 특징점 패치가 보간 프레임 내의 현재 블록에서 차지하는 면적 만큼의 가중치를 각 특징점 패치의 움직임 벡터에 부여하고, 가중치가 부여된 움직임 벡터들에 대한 평균값을 도출하는 방식으로 보간 프레임 내의 현재 블록에 대한 움직임 벡터를 결정할 수 있다. 구체적으로 도 4에서 제1 특징점 패치(40)에 대한 움직임 벡터는 현재 블록(32)에서 제1 특징점 패치(40)가 차지하는 면적(40a) 비율만큼의 가중치를 가질 수 있고, 제2 특징점 패치(42)에 대한 움직임 벡터는 현재 블록(32)에서 제2 특징점 패치(42)가 차지하는 면적(42a) 비율만큼의 가중치를 가질 수 있다. 이와 같이 각 특징점 패치에 대한 움직임 벡터에 가중치를 곱하여 더한 후 전체 움직임 벡터의 개수로 나누면 현재 블록(32)에 대한 움직임 벡터를 도출할 수 있다. 정리하면, 각 특징점 패치에 대한 움직임 벡터에 대하여 현재 블록에서 각 특징점 패치가 차지하는 면적 비율만큼의 가중치 평균값을 구함으로써 현재 블록에 대한 움직임 벡터를 도출할 수 있다. 즉, 가중치 평균값이 현재 블록에 대한 움직임 벡터가 될 수 있다.
다만, 여기서 래스터 스캔(raster scan) 방식으로 각 블록에 대한 움직임 벡터를 도출할 경우, 현재 블록과 상, 좌상, 좌측으로 인접한 블록에 대한 움직임 벡터는 이미 결정되어 있을 수 있다. 이때는 이러한 인접 블록의 움직임 벡터까지 고려하여 현재 블록의 움직임 벡터를 결정할 수 있다. 예를 들어, 현재 블록과 상, 좌상, 좌측으로 인접한 블록의 움직임 벡터에 따라 도출된 SBAD 값들과 앞에서 구한 가중치 평균값에 따른 움직임 벡터에 따라 도출된 SBAD 값을 비교하고, 비교된 SBAD 값들 중에서 가장 작은 SBAD 값을 갖는 움직임 벡터를 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
한편, 도 5를 참조하면, 보간 프레임의 현재 블록(32)과 겹치는 특징점 패치들 상호간에 중첩되는 영역이 있는 경우를 확인할 수 있다. 구체적으로 도 5에서 제1 특징점 패치(40)과 제2 특징점 패치(42)는 보간 프레임의 현재 블록(32) 내에서 중첩되는 영역(41a)이 존재한다. 이와 같이 보간 프레임의 현재 블록 내에서 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 중첩되는 영역은 특징점 패치들의 움직임 벡터가 갖는 SAD 값이 가장 작은 값을 갖는 특징점 패치의 영역으로 결정하고, 움직임 벡터들의 가중 평균값을 구할 수 있다. 예를 들어, 제1 특징점 패치(40)에 대한 움직임 벡터가 갖는 SAD(Sum of Absolute Difference)값이 제2 특징점 패치(42)에 대한 움직임 벡터가 갖는 SAD 값보다 작다면, 중첩되는 영역(41a)은 제1 특징점 패치(40)의 영역으로 결정할 수 있다. 따라서, 제1 특징점 패치(40)에 대한 움직임 벡터는 현재 블록(32)에서 제1 특징점 패치(40)가 차지하는 면적(40a) 비율만큼의 가중치를 가진다. 또한, 제2 특징점 패치(42)에 대한 움직임 벡터는 현재 블록(32)에서 제2 특징점 패치(42)가 차지하는 면적(42a)에서 중첩되는 영역(41a)을 제외한 나머지 면적 비율만큼의 가중치를 가진다.
다시 도 3을 참조하면, 도 4 또는 도 5와 같은 경우에 따라 보간 프레임 내에서의 각 블록에 대한 움직임 벡터는 각 블록에 중첩되는 특징점 패치들의 움직임 벡터들 간에 가중 평균값(weighted average)으로 결정할 수 있다. 도 3 내지 5에 따라 도출된, 보간 프레임 내에서 각 블록에 대한 움직임 벡터를 양방향 움직임 벡터로 변환하면, 특징점 기반 움직임 벡터가 도출될 수 있다.
이하에서는, 종래의 시-공간적 움직임 벡터와 특징점 기반 움직임 벡터를 움직임 추정을 위한 후보 벡터로 이용함으로써, 강인한 움직임 추정을 수행하는 방법을 설명한다.
도 6a 내지 도 6b은 본 발명의 일 실시예에 따른 움직임 추정을 위한 움직임 벡터 후보군을 설명하기 위한 예시도이다.
움직임 추정을 통해 현재 블록에 가장 유사한 블록을 지시하는 움직임 벡터를 찾기 위해서는 일반적으로 시간적 유사성과 공간적 유사성을 이용한다. 구체적으로 도 6a 및 도 6b를 참조하면, 움직임 추정을 위한 현재 블록(CB, Current Block)의 움직임 벡터를 결정하기 위하여 공간적 유사성이 있는 블록과 시간적 유사성이 있는 블록을 표시한 결과를 확인할 수 있다. 도 6a에서 S로 표시된 블록은 현재 블록과 동일한 프레임 내에 위치한 블록으로서, 공간적 유사성이 있는 블록에 해당하고, 도 6b에서 T로 표시된 블록은 현재 블록과 다른 프레임에 속하고 시간적 유사성이 있는 블록에 해당한다. 따라서, S로 표시된 블록을 지시하는 움직임 벡터들은 공간적 움직임 벡터 후보군이 되며, T로 표시된 블록을 지시하는 움직임 벡터들은 시간적 움직임 벡터 후보군이 될 수 있다.
종래의 경우 공간적 움직임 벡터 후보군과 시간적 움직임 벡터 후보군 중에서 최적의 움직임 벡터를 선정하는 방식으로 움직임 추정이 수행되는데, 본 발명에서는 앞서 도 1 내지 5에 따라 도출된 특징점 기반의 움직임 벡터를 후보군에 추가할 수 있다. 구체적으로 도 6a에서 F로 표시된 블록들은 앞에서 설명한 특징점 기반의 움직임 벡터가 지시하는 블록에 해당한다. 따라서, 본 발명의 일 실시예에 따르면 F로 표시된 블록을 지시하는 특징점 기반의 움직임 벡터를 현재 블록(CB)의 움직임 추정을 위한 후보군에 추가하여 움직임 추정이 수행될 수 있다. 이때, 공간적 움직임 벡터 후보군과 시간적 움직임 벡터 후보군을 결합하여 프라이머리 후보군(Primary Candidate Set)으로 지칭하고, 특징점 기반 움직임 벡터들을 특징 후보군(Feature Candidate Set)으로 지칭한다.
이하에서는 앞에서 구성된 프라이머리 후보군과 특징 후보군을 대상으로 현재 블록에 대한 최적의 움직임 벡터를 선정하는 과정에 대해 설명한다.
도 7은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에 대한 제1 흐름도이다.
본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은 보간 프레임에 속하는 현재 블록과 가장 유사한 블록을 지시하는 최적의 움직임 벡터를 찾기 위해 프라이머리 후보군 뿐만 아니라 특징점 기반 움직임 벡터들로 구성되는 특징 후보군을 추가로 구성할 수 있다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 프라이머리 후보군과 특징 후보군에 포함된 움직임 벡터들의 일관성을 확인하기 위하여 상기 후보군들에 포함된 움직임 벡터 쌍(pair)에 대한 차분값(Vdifference)를 산출할 수 있다(S100). 구체적으로, 움직임 벡터 쌍에 대한 차분값(Vdifference)은 후보군들에 포함된 움직임 벡터 쌍이 각각 (vx,i, vy,i) 및 (vx,j, vy,j)라고 할 때, 다음의 수학식 1과 같이 산출할 수 있다.
Figure 112018062990021-pat00003
수학식 1에서 i와 j는 후보군들에 포함된 서로 다른 움직임 벡터를 지시하는 인덱스이다.
수학식 1에 따라 산출된 움직임 벡터 쌍(pair)에 대한 차분값이 미리 설정된 값(예를 들면 2)보다 작거나 같은지 판단함으로써 움직임 벡터들 사이에 일관성이 있는지 확인할 수 있다(S200). 차분값이 미리 설정된 값보다 작거나 같으면, 움직임 벡터들 사이에 일관성이 있는 것으로 판단할 수 있다.
일관성이 검증되면, 움직임 벡터들의 중간값을 연산하여 중간값 움직임 벡터(median MV(m))를 획득하고, 획득된 중간값 움직임 벡터에 업데이트 상수(Un)를 더하여 중간값 업데이트 움직임 벡터(Update MV(m+Un))를 산출할 수 있다(S300). 여기서 업데이트 상수(Un)는 다음의 수학식 2에 따른 집합에서 선택된 벡터 값일 수 있다.
Figure 112018062990021-pat00004
다음으로 중간값 움직임 벡터와 중간값 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Difference)를 산출하고(S400), 산출된 SBAD가 최소가 되는 움직임 벡터를 획득할 수 있다(S500). 구체적으로 SBAD는 다음의 수학식 3과 같이 산출할 수 있다.
Figure 112018062990021-pat00005
수학식 3을 참조하면, ci는 후보군들에 포함된 움직임 벡터이며, x'는 현재 블록(B(x))에 속하는 화소이고, f(n)과 f(n-1)은 각각 현재 프레임과 이전 프레임을 지시한다. 수학식 3에 따라 SBAD가 산출되면 다음의 수학식 4와 같이 현재 블록에 대한 최적의 움직임 벡터를 결정할 수 있다.
Figure 112018062990021-pat00006
수학식 4를 참조하면, 수학식 3에 따라 산출되는 SBAD이 최소화되는 움직임 벡터를 보간 프레임 내의 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
한편, 단계 S200에 따른 움직임 벡터들의 일관성이 없는 것으로 판단되는 경우가 문제되는데, 이하에서 설명한다.
도 8은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에서 후보군에 포함된 움직임 벡터의 일관성이 없는 경우에 대한 흐름도이다.
도 8을 참조하면, 먼저, 도 7의 단계 S200에서 움직임 벡터들의 일관성이 없는 경우, 프라이머리 후보군과 특징 후보군에 포함된 움직임 벡터들을 이용하여 SBAD를 산출할 수 있다(S210). 여기서 SBAD를 산출하는 과정은 수학식 3을 참조할 수 있다.
다음으로, 산출된 SBAD 값(SBADprimary &Feature) 중에서 최소값(min_SBADprimary&Feature)을 임계값(SBADthreshold)과 비교할 수 있다(S220). 여기서 임계값은 이전 프레임에 대한 SBAD 를 산출하고, 산출된 SBAD의 평균값으로 결정할 수 있다.
단계 S220에 따른 비교 결과 최소값(min_SBADprimary &Feature)이 임계값(SBADthreshold)보다 작거나 같은 경우, 그 최소값(min_SBADprimary &Feature)이 도출되는데 이용된 움직임 벡터를 현재 블록에 대한 최적의 움직임 벡터로 결정할 수 있다(S230).
즉 도 8에 따른 과정은 도 7과 같이 중간값 움직임 벡터를 사용하는 것이 아니라, 후보군들에 포함된 움직임 벡터 전체에 대하여 SBAD를 구함으로써, 현재 블록에 대한 움직임 벡터를 결정하는 방법일 수 있다.
한편, 단계 S220에서 SBAD의 최소값과 임계값의 비교 결과 최소값이 임계값보다 큰 경우, 그러한 최소값이 도출되는데 이용된 움직임 벡터는 현재 블록에 대한 최적의 벡터로 판단하기 어렵다. 따라서, 본 발명의 일 실시예에 따르면, 프라이머리 후보군과 특징 후보군으로 구성되는 1차 움직임 벡터 후보군 대신에 추가적인 움직임 벡터를 더 포함시켜 2차 움직임 벡터 후보군을 구성하고, 2차 움직임 벡터 후보군을 이용하여 현재 블록에 대한 최적의 움직임 벡터를 결정할 수 있다.
이하에서는 2차 움직임 벡터 후보군을 기초로 현재 블록에 대한 최적의 움직임 벡터를 결정하는 과정을 설명한다.
도 9는 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에서, 2차 움직임 벡터 후보군을 활용하여 현재 블록에 대한 움직임 벡터를 결정하는 흐름도이다.
먼저, 본 발명의 일 실시예에 따른 2차 움직임 벡터 후보군은 앞에서 설명한 프라이머리 후보군과 특징 후보군으로 구성되는 1차 움직임 벡터 후보군을 이용하여 구성될 수 있다. 구체적으로, 1차 움직임 벡터 후보군에 포함된 움직임 벡터들에 대하여 미리 설정된 벡터 값을 더함으로써, 2차 움직임 벡터 후보군을 구성할 수 있다. 이때, 미리 설정된 벡터 값은 수학식 2에 따른 집합에서 선택될 수 있다.
2차 움직임 벡터 후보군이 구성되면, 2차 움직임 벡터 후보군에 포함된 움직임 벡터들을 이용하여 SBAD를 산출할 수 있다(S221). 다음으로, 산출된 SBAD 값(SBAD_secondary) 중에서 최소값(min_ SBAD_secondary)을 앞선 도 8에 따른 단계 S220에 따른 프라이머리 후보군과 특징 후보군(즉, 1차 움직임 벡터 후보군)에 포함된 움직임 벡터들을 이용한 SBAD의 최소값(min_SBAD_primary&feature)과 비교할 수 있다(S222). 단계 S222에 따른 비교 결과, 2차 움직임 벡터 후보군에 따른 SBAD의 최소값(min_ SBAD_secondary)이 1차 움직임 벡터 후보군에 따른 SBAD의 최소값(min_SBAD_primary&feature)보다 작거나 같으면, 2차 움직임 벡터 후보군에 따른 SBAD의 최소값(min_ SBAD_secondary)을 산출하는 데 이용된 움직임 벡터를 현재 블록에 대한 최적의 움직임 벡터로 결정할 수 있다(S223).
한편, 단계 S222에 따른 비교 결과, 2차 움직임 벡터 후보군에 따른 SBAD의 최소값(min_ SBAD_secondary)이 1차 움직임 벡터 후보군에 따른 SBAD의 최소값(min_SBAD_primary&feature)보다 크면, 2차 움직임 벡터 후보군을 갱신하고(S224), 다시 단계 S221에 따른 SBAD를 산출할 수 있다.
이때, 2차 움직임 벡터 후보군을 갱신하는 방법으로는 수학식 2에 따라 선택된 미리 설정된 벡터 값(Un)을 이용할 수 있다. 예를 들어, 기존에 구성된 2차 움직임 벡터 후보군에 포함된 움직임 벡터들에 대하여 수학식 2에 따른 집합에서 선택된 미리 설정된 벡터 값(Un)을 더함으로써, 2차 움직임 벡터 후보군을 갱신할 수 있다. 이때, 미리 설정된 벡터 값은 수학식 2에 따른 집합에서 무작위로(randomly) 선택되거나 벡터 값의 크기에 따른 우선순위에 따라 선택될 수 있다.
도 10은 본 발명의 일 실시예에 따른 OBMC(Overlapped block motion compensation) 알고리즘을 설명하기 위한 예시도이다.
앞선 도 7 내지 도 9에 따른 과정이 끝나면 움직임 보상 과정을 수행하여 보간 프레임을 생성하게 된다. 이때, 움직임 보상 과정에서는 양방향 움직임 추정 단계에서 발생되는 블록 열화를 줄이는데 효과적인 OBMC 알고리즘을 사용하여 보간 프레임(interpolated frame)을 생성할 수 있다. 이때, OBMC 알고리즘에 사용되는 양선형 윈도우(Bilinear window)의 계수는 도 10 또는 아래의 수학식 5에서 정의된 ω(u,v)를 사용할 수 있다.
Figure 112018062990021-pat00007
또한, 보간 프레임의 각 블록 크기를 NХN으로 정의하면, OBMC 알고리즘이 수행되는 블록 크기는 2NХ2N이 사용될 수 있다.
기타 OBMC 알고리즘에 대한 자세한 설명은 "Overlapped Block Motion Compensation: An Estimation-Theoretic Approach, Michael T. Orchard and Gary J. Sullivan, IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL.3 NO.5, SEPTEMBER 1994"를 참조할 수 있다.
도 11은 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법에 대한 대표 흐름도이다.
도 11을 참조하면, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계(S1000), 상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계(S1100), 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계(S1200), 일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계(S1300) 및 산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계(S1400)를 포함할 수 있다.
여기서 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계(S1300)는, 상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계 및 상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계(S1000)는, 상기 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계, 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계 및 생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터를 획득하는 단계는, 상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계, 결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계 및 가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 가중치를 부여하는 단계는, 상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함할 수 있다.
여기서 상기 일관성을 검증하는 단계(S1200)는, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계 및 산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함할 수 있다.
여기서 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법은, 일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계, 생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계 및 산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함할 수 있다.
여기서 상기 미리 설정된 벡터 상수는, 집합
Figure 112018062990021-pat00008
에서 선택될 수 있다.
한편, 앞에서 설명한 움직임 추정을 위한 특징점 기반 움직임 벡터를 생성하는 방법은, 생성할 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계, 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계 및 생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 보간 프레임 내의 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
그 밖에도 특징점 기반 움직임 벡터 생성 방법은 전술한 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치에 대한 설명에서 기재된 내용을 포함할 수 있다.
도 12는 본 발명의 일 실시예에 따른 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치에 대한 구성도이다.
도 12를 참조하면, 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치(100)는, 적어도 하나의 프로세서(processor, 110) 및 상기 적어도 하나의 프로세서(110)가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 저장하는 메모리(memory, 120)를 포함할 수 있다.
여기서 적어도 하나의 프로세서(110)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU), 또는 본 발명의 실시예들에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리(120) 및 저장 장치(160) 각각은 휘발성 저장 매체 및 비휘발성 저장 매체 중에서 적어도 하나로 구성될 수 있다. 예를 들어, 메모리(120)는 읽기 전용 메모리(read only memory, ROM) 및 랜덤 액세스 메모리(random access memory, RAM) 중에서 적어도 하나로 구성될 수 있다.
또한, 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치(100)는, 무선 네트워크를 통해 통신을 수행하는 송수신 장치(transceiver)(130)를 포함할 수 있다. 또한, 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치(100)는 입력 인터페이스 장치(140), 출력 인터페이스 장치(150), 저장 장치(160) 등을 더 포함할 수 있다. 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치(100)에 포함된 각각의 구성 요소들은 버스(bus)(170)에 의해 연결되어 서로 통신을 수행할 수 있다.
여기서 상기 적어도 하나의 단계는, 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계, 상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계, 일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함할 수 있다.
여기서 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계는, 상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계 및 상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는, 상기 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계, 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계 및 생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 특징점 기반 움직임 벡터를 획득하는 단계는, 상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계, 결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계 및 가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함할 수 있다.
여기서 상기 가중치를 부여하는 단계는, 상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함할 수 있다.
여기서 상기 일관성을 검증하는 단계는, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계 및 산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함할 ㅅ 있다.
여기서 상기 적어도 하나의 단계는, 일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계 및 산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정할 수 있다.
여기서 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는, 상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계, 생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계 및 산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함할 수 있다.
여기서 상기 미리 설정된 벡터 상수는, 집합
Figure 112018062990021-pat00009
에서 선택될 수 있다.
여기서 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치(100)의 예를 들면, 통신 가능한 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 노트북(notebook), 스마트폰(smart phone), 태블릿 PC(tablet PC), 모바일폰(mobile phone), 스마트 워치(smart watch), 스마트 글래스(smart glass), e-book 리더기, PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 디지털 카메라(digital camera), DMB(digital multimedia broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), PDA(Personal Digital Assistant) 등일 수 있다.
본 발명에 따른 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬(ROM), 램(RAM), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 상술한 방법 또는 장치는 그 구성이나 기능의 전부 또는 일부가 결합되어 구현되거나, 분리되어 구현될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계;
    상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계;
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계;
    일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계; 및
    산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함하고,
    상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는,
    상기 보간 프레임과 시간적으로 인접한, 현재 프레임 및 이전 프레임에서 특징점을 검출하는 단계를 포함하되,
    상기 특징점은,
    상기 현재 프레임 또는 상기 이전 프레임을 대상으로 소정 크기의 검출 영역에 포함된 복수의 후보 화소들 중 어느 하나의 후보 화소를 임계값과 비교하여 검출하고,
    상기 임계값은,
    상기 복수의 후보 화소들의 평균 화소값 및 상기 검출된 후보 화소의 화소값 사이의 차분값으로 정의되는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  2. 청구항 1에서,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계는,
    상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계; 및
    상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  3. 청구항 1에서,
    상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는,
    상기 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임 및 상기 이전 프레임에 생성하는 단계; 및
    생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 더 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  4. 청구항 3에서,
    상기 특징점 기반 움직임 벡터를 획득하는 단계는,
    상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계;
    결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계; 및
    가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  5. 청구항 4에서,
    상기 가중치를 부여하는 단계는,
    상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  6. 청구항 1에서,
    상기 일관성을 검증하는 단계는,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계; 및
    산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  7. 청구항 1에서,
    일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계; 및
    산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  8. 청구항 7에서,
    상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는,
    상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  9. 청구항 7에서,
    상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는,
    상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계;
    생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계; 및
    산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  10. 청구항 9에서,
    상기 미리 설정된 벡터 상수는, 집합
    Figure 112018062990021-pat00010

    에서 선택되는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  11. 적어도 하나의 프로세서(processor); 및
    상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 저장하는 메모리(memory)를 포함하는 특징점 기반 움직임 벡터를 이용한 움직임 추정 장치에서,
    상기 적어도 하나의 단계는,
    생성할 보간 프레임(Interpolated frame) 내의 현재 블록에 대한 특징점 기반 움직임 벡터 후보군을 생성하는 단계;
    상기 특징점 기반 움직임 벡터 후보군과 시-공간적 움직임 벡터 후보군을 결합하여 제1 움직임 벡터 후보군을 생성하는 단계;
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성을 검증하는 단계;
    일관성이 검증되면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계; 및
    산출된 SBAD가 최소화되는 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는 단계를 포함하고,
    상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는,
    상기 보간 프레임과 시간적으로 인접한, 현재 프레임 및 이전 프레임에서 특징점을 검출하는 단계를 포함하되,
    상기 특징점은,
    상기 현재 프레임 또는 상기 이전 프레임을 대상으로, 소정 크기의 검출 영역에 포함된 복수의 후보 화소들 중 어느 하나의 후보 화소를 임계값과 비교하여 검출하고,
    상기 임계값은,
    상기 복수의 후보 화소들의 평균 화소값 및 상기 검출된 후보 화소의 화소값 사이의 차분값으로 정의되는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  12. 청구항 11에서,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계는,
    상기 제1 움직임 벡터 후보군에 대한 중앙값 움직임 벡터를 획득하고, 획득된 중앙값 움직임 벡터에 업데이트 벡터 상수를 더하여 업데이트 움직임 벡터를 획득하는 단계; 및
    상기 중앙값 움직임 벡터와 상기 업데이트 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  13. 청구항 11에서,
    상기 특징점 기반 움직임 벡터 후보군을 생성하는 단계는,
    상기 검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임 및 상기 이전 프레임에 생성하는 단계; 및
    생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 더 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  14. 청구항 13에서,
    상기 특징점 기반 움직임 벡터를 획득하는 단계는,
    상기 단방향 움직임 예측에 따른 단방향 움직임 벡터에 의해 지시되는 특징점 패치 중에서 상기 현재 블록과 중첩되는 특징점 패치를 결정하는 단계;
    결정된 특징점 패치에 따른 단방향 움직임 벡터에 대하여 상기 현재 블록과 중첩되는 영역 크기에 상응하는 가중치를 부여하는 단계; 및
    가중치가 부여된 단방향 움직임 벡터에 대한 평균값을 산출하여 상기 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  15. 청구항 14에서,
    상기 가중치를 부여하는 단계는,
    상기 현재 블록과 중첩되는 특징점 패치가 복수개이고, 복수의 특징점 패치 상호간에 중첩되는 영역이 있는 경우, 상기 복수의 특징점 패치 상호간에 중첩되는 영역은 특징점 패치에 따른 단방향 움직임 벡터를 이용한 SAD(Sum of Absolute Difference)가 가장 작은 특징점 패치의 영역으로 판단하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  16. 청구항 11에서,
    상기 일관성을 검증하는 단계는,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에서 선택된 움직임 벡터 쌍(pair)에 대한 차분값을 산출하는 단계; 및
    산출된 차분값이 모두 미리 설정된 값보다 작으면 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들의 일관성이 있는것으로 판단하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  17. 청구항 11에서,
    상기 적어도 하나의 단계는,
    일관성이 검증되지 않으면, 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 SBAD(Sum of Bi-directional Absolute Difference)를 산출하는 단계; 및
    산출된 SBAD의 최소값을 미리 설정된 임계값과 비교한 결과에 따라 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 더 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  18. 청구항 17에서,
    상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는,
    상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 작거나 같으면, 상기 산출된 SBAD의 최소값에 따른 움직임 벡터를 상기 현재 블록에 대한 움직임 벡터로 결정하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  19. 청구항 17에서,
    상기 현재 블록에 대한 움직임 벡터를 결정하는 단계는,
    상기 산출된 SBAD의 최소값이 상기 미리 설정된 임계값보다 크면,
    상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터들에 미리 설정된 벡터 상수를 더하여 제2 움직임 벡터 후보군을 생성하는 단계;
    생성된 제2 움직임 벡터 후보군을 이용하여 SBAD 를 산출하는 단계; 및
    산출된 SBAD의 최소값을 상기 제1 움직임 벡터 후보군에 포함된 움직임 벡터를 이용하여 산출된 SBAD의 최소값과 비교하여 상기 현재 블록에 대한 움직임 벡터를 결정하는 단계를 포함하는, 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법.
  20. 생성할 보간 프레임과 시간적으로 인접한 현재 프레임과 이전 프레임에서 특징점을 검출하는 단계;
    검출된 특징점을 중심으로 하는 특징점 패치를 상기 현재 프레임과 상기 이전 프레임에 생성하는 단계; 및
    생성된 특징점 패치에 대하여 단방향 움직임 예측을 수행하여 상기 보간 프레임 내의 현재 블록에 대한 특징점 기반 움직임 벡터를 획득하는 단계를 포함하는, 움직임 추정을 위한 특징점 기반 움직임 벡터 생성 방법.
KR1020180073793A 2018-06-27 2018-06-27 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치 KR102056218B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180073793A KR102056218B1 (ko) 2018-06-27 2018-06-27 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180073793A KR102056218B1 (ko) 2018-06-27 2018-06-27 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102056218B1 true KR102056218B1 (ko) 2019-12-16

Family

ID=69051983

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180073793A KR102056218B1 (ko) 2018-06-27 2018-06-27 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102056218B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008066910A (ja) 2006-09-06 2008-03-21 Casio Comput Co Ltd 画像処理装置、画像処理方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008066910A (ja) 2006-09-06 2008-03-21 Casio Comput Co Ltd 画像処理装置、画像処理方法及びプログラム

Similar Documents

Publication Publication Date Title
JP3621152B2 (ja) 特徴点の特定装置及びその方法
US8873846B2 (en) Detecting and tracking point features with primary colors
US8045620B2 (en) Image processing apparatus, image processing method and computer readable medium
US8165205B2 (en) Natural shaped regions for motion compensation
JP2005210697A (ja) 動き補償フレームレート変換
Lu et al. Motion-compensated frame interpolation with multiframe-based occlusion handling
KR20050012766A (ko) 현재 모션 벡터 추정을 위한 유닛 및 모션 벡터 추정 방법
US8175160B1 (en) System, method, and computer program product for refining motion vectors
US8995755B2 (en) Two-dimensional to stereoscopic conversion systems and methods
US7110453B1 (en) Motion or depth estimation by prioritizing candidate motion vectors according to more reliable texture information
US9317928B2 (en) Detecting and tracking point features with primary colors
US20180144491A1 (en) Image processing apparatus and method
Heu et al. Image and video colorization based on prioritized source propagation
US20120176536A1 (en) Adaptive Frame Rate Conversion
EP3596698B1 (en) Motion estimation method and apparatus for plurality of frames
CN113269086A (zh) 一种vlog剪辑方法和剪辑系统
KR102056218B1 (ko) 특징점 기반 움직임 벡터를 이용한 움직임 추정 방법 및 장치
KR100969420B1 (ko) 프레임 레이트 변환 방법
JP3979768B2 (ja) デジタル映像分割方法及びその装置
JP3175914B2 (ja) 画像符号化方法および画像符号化装置
US20220270267A1 (en) System and method for occlusion detection in frame rate up-conversion of video data
US20090322956A1 (en) System and method for motion estimation of digital video using multiple recursion rules
KR102066012B1 (ko) 보간 프레임을 생성하기 위한 움직임 예측 방법 및 장치
Lu et al. An artifact information based motion vector processing method for motion compensated frame interpolation
US10063880B2 (en) Motion detecting apparatus, motion detecting method and program

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant