KR102115066B1 - 비디오 안정화를 위한 적응적 경로 평활화 - Google Patents
비디오 안정화를 위한 적응적 경로 평활화 Download PDFInfo
- Publication number
- KR102115066B1 KR102115066B1 KR1020167004228A KR20167004228A KR102115066B1 KR 102115066 B1 KR102115066 B1 KR 102115066B1 KR 1020167004228 A KR1020167004228 A KR 1020167004228A KR 20167004228 A KR20167004228 A KR 20167004228A KR 102115066 B1 KR102115066 B1 KR 102115066B1
- Authority
- KR
- South Korea
- Prior art keywords
- video
- sequence
- frames
- path
- smoothing
- Prior art date
Links
- 238000009499 grossing Methods 0.000 title claims abstract description 70
- 230000003044 adaptive effect Effects 0.000 title claims description 41
- 230000006641 stabilisation Effects 0.000 title abstract description 38
- 238000011105 stabilization Methods 0.000 title abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000008569 process Effects 0.000 claims abstract description 27
- 238000004091 panning Methods 0.000 claims abstract description 5
- 239000000872 buffer Substances 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 26
- 238000012805 post-processing Methods 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 14
- 230000011218 segmentation Effects 0.000 claims description 11
- 238000001914 filtration Methods 0.000 claims description 10
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 230000003111 delayed effect Effects 0.000 claims description 5
- 230000004931 aggregating effect Effects 0.000 claims description 4
- 230000002776 aggregation Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims description 4
- 230000001934 delay Effects 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 2
- 230000000087 stabilizing effect Effects 0.000 claims description 2
- 230000033001 locomotion Effects 0.000 abstract description 22
- 238000010586 diagram Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000005021 gait Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 210000004185 liver Anatomy 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
-
- G06T5/002—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/682—Vibration or motion blur correction
- H04N23/683—Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
-
- H04N5/23254—
-
- H04N5/23267—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20004—Adaptive image processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
- G06T2207/20028—Bilateral filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20172—Image enhancement details
- G06T2207/20182—Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30241—Trajectory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera pose
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Signal Processing (AREA)
- Studio Devices (AREA)
Abstract
비디오 안정화를 위한 기법들 및 아키텍처들은 흔들리는 비디오를 안정되어 보이는 비디오로 변환할 수 있다. 경로 평활화 프로세스는 비디오 안정화를 위한 최적화된 카메라 경로를 발생시킬 수 있다. 큰 평활화 커널에 의해, 경로 평활화 프로세스는 고주파 지터(high frequency jitter) 및 저주파 바운스(low frequency bounce) 둘 다를 제거할 수 있고, 이와 동시에, 과도한 크로핑 또는 지오메트리 왜곡을 피하기 위해 불연속적인 카메라 움직임들(빠른 패닝 또는 장면 전환 등)을 보존할 수 있다. 슬라이딩 윈도우 기반 구현은 실시간 비디오 안정화를 위해 사용될 수 있는 경로 평활화 프로세스를 포함한다.
Description
본 발명은 비디오 안정화를 위한 적응적 경로 평활화에 관한 것이다.
핸드헬드 디바이스(예컨대, 셀폰 또는 휴대용 캠코더)에 의해 캡처된 비디오는 종종 흔들리고 불안정해 보인다. 비디오 품질이, 부분적으로는, 비디오를 캡처할 수 있는 모바일 디바이스들(예컨대, 휴대폰, 태블릿, 캠코더 등)이 어디에서나 존재하고 이용 가능한 것으로 인해, 상당히 중요하게 되었다.
디지털 비디오 안정화는 이러한 비디오의 비디오 품질을 향상시킬 수 있지만, 많은 유형의 디지털 비디오 안정화는 다수의 단점들을 가진다. 예를 들어, 디지털 비디오 안정화는 비디오로부터 지터(jitter)를 제거할 수 있지만, 그 대가로 영상 왜곡, 크로핑(cropping), 해상도 손실 등과 같은 비디오 아티팩트(video artifact)들을 유입시킨다. 이와 같이, 과도한 수의 바람직하지 않은 아티팩트들을 유입시키는 일 없이 비디오 품질을 향상시킬 수 있는 디지털 비디오 안정화 기법에 대한 요구가 존재한다.
본 개시 내용은, 부분적으로는, 흔들려 보이는 비디오를 안정되어 보이는 비디오로 변환하는 데 사용될 수 있는, 비디오 안정화를 위한 기법들 및 아키텍처들을 기술한다. 비디오 안정화는 원래의 흔들리는 카메라 경로로부터 평활화된 카메라 경로를 발생시키는 카메라 경로 평활화 프로세스(camera path smoothing process)를 포함할 수 있다. 다수의 비디오 프레임들을 포함하는 비교적 큰 평활화 커널(smoothing kernel)을 사용하여, 경로 평활화 프로세스는 고주파 지터(high frequency jitter) 및 저주파 바운스(low frequency bounce) 둘 다를 제거할 수 있고, 평활화된 카메라 경로에서의 과도한 크로핑 또는 지오메트리 왜곡(geometry distortion)을 피하기 위해 불연속적인 카메라 움직임들(비교적 빠른 패닝(panning) 또는 장면 전환 등)을 보존할 수 있다. 경로 평활화 프로세스는 실시간 안정화를 위해 사용될 수 있는 슬라이딩 윈도우 기반 구현(sliding window based implementation)에서 수행될 수 있다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 요지의 범주를 정하는 데 보조 수단으로 사용되기 위한 것도 아니다. “기법”이라는 용어는, 예를 들어, 시스템(들), 방법(들), 컴퓨터 판독 가능 명령어들, 모듈(들), 알고리즘들, 하드웨어 로직(예컨대, FPGA(Field-programmable Gate Array), ASIC(Application-specific Integrated Circuit), ASSP(Application-specific Standard Product), SOC(System-on-a-chip system), CPLD(Complex Programmable Logic Device)), 및/또는 앞서 그리고 본 문서 전체에 걸쳐 문맥에 의해 허용되는 기법(들)을 지칭할 수 있다.
발명을 실시하기 위한 구체적인 내용이 첨부 도면들을 참조하여 기술된다. 도면들에서, 참조 번호의 가장 왼쪽의 숫자(들)는 그 참조 번호가 처음으로 나타나는 도면을 나타낸다. 상이한 도면들에서의 동일한 참조 번호들은 유사하거나 동일한 항목들을 가리킨다.
도 1은 본 명세서에 기술된 기법들이 구현될 수 있는 예시적인 환경을 나타낸 블록도.
도 2는 다양한 예시적인 실시예들에 따른, 카메라 경로 평활화 및 후처리 곡선 평활화(post-processing curve smoothing)에 의한 비디오 안정화를 나타낸 도면.
도 3은 다양한 예시적인 실시예들에 따른, 카메라 경로의 2 개의 비디오 프레임들을 보여주는 개략도.
도 4는 다양한 예시적인 실시예들에 따른, 프레임 크로핑 및 왜곡을 나타낸 개략도.
도 5는 다양한 예시적인 실시예들에 따른, 원래의 카메라 경로들과 평활화된 카메라 경로들 사이의 관계들을 나타낸 개략도.
도 6은 다양한 예시적인 실시예들에 따른, 비디오 안정화 디바이스의 블록도.
도 7은 다양한 예시적인 실시예들에 따른, 비디오 프레임들의 2 개의 비디오 시퀀스들의 개략도.
도 8은 다양한 예시적인 실시예들에 따른, 비디오 안정화 디바이스의 일부분의 블록도.
도 9는 비디오를 평활화하는 예시적인 프로세스의 흐름도.
도 1은 본 명세서에 기술된 기법들이 구현될 수 있는 예시적인 환경을 나타낸 블록도.
도 2는 다양한 예시적인 실시예들에 따른, 카메라 경로 평활화 및 후처리 곡선 평활화(post-processing curve smoothing)에 의한 비디오 안정화를 나타낸 도면.
도 3은 다양한 예시적인 실시예들에 따른, 카메라 경로의 2 개의 비디오 프레임들을 보여주는 개략도.
도 4는 다양한 예시적인 실시예들에 따른, 프레임 크로핑 및 왜곡을 나타낸 개략도.
도 5는 다양한 예시적인 실시예들에 따른, 원래의 카메라 경로들과 평활화된 카메라 경로들 사이의 관계들을 나타낸 개략도.
도 6은 다양한 예시적인 실시예들에 따른, 비디오 안정화 디바이스의 블록도.
도 7은 다양한 예시적인 실시예들에 따른, 비디오 프레임들의 2 개의 비디오 시퀀스들의 개략도.
도 8은 다양한 예시적인 실시예들에 따른, 비디오 안정화 디바이스의 일부분의 블록도.
도 9는 비디오를 평활화하는 예시적인 프로세스의 흐름도.
개요
다양한 실시예들에서, 비디오 안정화를 위한 기법들 및 디바이스들은 흔들리는 비디오를 안정되어 보이는 비디오로 변환하는 경로 평활화를 포함한다. 평활화 프로세스는, 예를 들어, 핸드헬드 카메라에 의해 캡처된 비디오에 대응하는 원래 흔들리거나 일정하지 않은 카메라 경로로부터 수정된 카메라 경로를 발생시킬 수 있다. 슬라이딩 윈도우 기반 구현을 포함하는 경로 평활화 프로세스는 카메라 경로부터 (예컨대, 카메라 사용자의 흔들리는 손으로부터의) 고주파 지터(high frequency jitter) 및 (예컨대, 사용자의 보행 또는 요동 움직임으로부터의) 저주파 바운스(low frequency bounce) 둘 다를 제거할 수 있고, 과도한 크로핑 또는 지오메트리 왜곡을 피하기 위해 불연속적인 카메라 움직임들(빠른 패닝 또는 장면 전환 등)을 보존할 수 있다. 이러한 기법들 또는 디바이스들은 실시간 또는 오프라인 비디오 안정화를 위해 사용될 수 있다.
일부 실시예들에서, 비디오 안정화를 위한 시스템은 비디오 프레임 시퀀스를 포함하는 비디오를 수신하는 비디오 입력 포트를 포함한다. 비디오 입력 포트에 통신가능하게 연결된 비디오 분할 모듈(video partition module)은 비디오를 다수의 비디오 프레임 시퀀스들로 분할한다. 비디오 분할 모듈은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현될 수 있다. 비디오 분할 모듈은 비디오 프레임 시퀀스들의 개개의 시퀀스들에 프레임 지연들을 적용할 수 있다. 그 결과, 이웃하는 시퀀스들은 중복된 비디오 프레임들을 가질 수 있다. 상세하게는, 하나의 시퀀스가 다른 시퀀스에 대해 프레임 지연되어 있다는 것을 제외하고는, 연속적인 시퀀스들이 서로 동일할 수 있다. 슬라이딩 윈도우 기반 구현의 일부로서, 비디오 분할 모듈은 프레임 지연된 개별 시퀀스들을 비디오 평활화를 수행하는 개별 비디오 버퍼 프로세서들에 제공할 수 있다. 상세하게는, 개별 비디오 버퍼 프로세서는 특징(feature) 추출 모듈, 호모그래피 추정 모듈, 및 적응적 경로 평활화 모듈을 포함할 수 있다.
일부 구현들에서, 비디오 버퍼 프로세서, 특징 추출 모듈, 호모그래피 추정 모듈, 및 적응적 경로 평활화 모듈 중 임의의 것은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 포함할 수 있다. 예를 들어, 하드웨어에 의해 구현된 비디오 버퍼 프로세서는 특징 추출 모듈, 호모그래피 추정 모듈, 및 적응적 경로 평활화 모듈을 포함하는 소프트웨어를 선택적으로 실행할 수 있다. 비디오 버퍼 프로세서는 비디오 프레임 시퀀스들을 저장하는 복수의 버퍼들을 포함하는 메모리를 포함할 수 있거나 그에 액세스할 수 있다. 다른 예에서, 실행 가능 코드를 포함하는 비디오 버퍼 프로세서는 하드웨어로 구현된 특징 추출 모듈, 하드웨어로 구현된 호모그래피 추정 모듈, 및 하드웨어로 구현된 적응적 경로 평활화 모듈을 선택적으로 동작시킬 수 있다. 비디오 버퍼 프로세서는 비디오 프레임 시퀀스들을 저장하는 복수의 버퍼들을 포함하는 메모리를 포함할 수 있거나 그에 액세스할 수 있다.
특징 추출 모듈은 비디오 프레임 시퀀스의 개별 비디오 프레임들에서의 객체 특징들을 식별한다. 예를 들어, 이러한 객체 특징들은 개별 비디오 프레임들에서의 점(point)들, 에지(edge)들, 또는 다른 어파인 객체(affine object)들을 포함할 수 있다.
호모그래피 추정 모듈은 수정된 비디오 프레임 시퀀스를 발생시키기 위해 비디오 프레임 시퀀스의 비디오 프레임들간에 호모그래피 추정을 수행한다. 호모그래피 추정은 식별된 객체 특징들에 적어도 부분적으로 기초한다. 일부 구현들에서, 비디오 프레임 시퀀스의 연속적인 비디오 프레임들간의 호모그래피 추정이 수행된다. 적응적 경로 평활화 모듈은 수정된 비디오 프레임 시퀀스의 비디오 프레임들간의 추정 오차들을 결정하고, 평활화된 비디오 프레임 시퀀스를 발생시키기 위해 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화를 적용한다. 적응적 경로 평활화는 비디오 프레임 시퀀스의 개별 비디오 프레임들 사이의 변화들에 그리고 추정 오차들에 적어도 부분적으로 기초할 수 있다.
일부 실시예들에서, 비디오 안정화를 위한 시스템은 평활화된 비디오 프레임 시퀀스를 다른 평활화된 비디오 프레임 시퀀스와 결합하여 집성화된 비디오 부분을 생성하고 집성화된 비디오 부분을 평활화하기 위해 후처리 필터링을 적용하도록 구성된 비디오 집성화 모듈을 추가로 포함할 수 있다. 이 다른 평활화된 시퀀스들은 각자의 개별 비디오 버퍼 프로세서들의 생성물이다. 다양한 구현들에서, 개별 비디오 버퍼 프로세서들로부터의 다른 평활화된 비디오 프레임 시퀀스들은 비디오 프레임 시퀀스로부터 n의 정수배의 프레임들만큼 각각 오프셋되어 있는 프레임 쉬프트된 비디오 프레임 시퀀스들에 적어도 부분적으로 기초하고, 여기서 n은 미리 결정된 수이다.
다양한 실시예들은 도 1 내지 도 9를 참조하여 추가로 기술되어 있다.
예시적인 환경
이하에 기술되는 환경은 단지 하나의 예를 구성하고, 청구항들을 임의의 하나의 특정 동작 환경으로 제한하기 위한 것이 아니다. 청구된 발명 요지의 사상 및 범주를 벗어나지 않고 다른 환경들이 사용될 수 있다. 도 1은 본 명세서에 기술된 바와 같은 비디오 안정화를 포함하는 실시예들이 동작할 수 있는 예시적인 환경(100)을 나타낸 것이다. 일부 실시예들에서, 환경(100)의 다양한 디바이스들 및/또는 구성요소들은 각종의 컴퓨팅 디바이스들(102)을 포함한다. 다양한 실시예들에서, 컴퓨팅 디바이스들(102)은 디바이스들(102a 내지 102e)을 포함한다. 아주 다양한 디바이스 유형들로 예시되어 있지만, 컴퓨팅 디바이스들(102)은 다른 디바이스 유형들일 수 있고, 예시된 디바이스 유형들로 제한되지 않는다. 컴퓨팅 디바이스들(102)은, 예컨대, 버스(110)를 통해, 입출력 인터페이스(106) 및 메모리(108)에 연결되어 동작하는 하나 또는 다수의 프로세서들(104)을 갖는 임의의 유형의 디바이스를 포함할 수 있다. 컴퓨팅 디바이스들(102)은, 예를 들어, 데스크톱 컴퓨터(102a)와 같은 개인용 컴퓨터, 랩톱 컴퓨터(102b), 태블릿 컴퓨터(102c), 원격 통신 디바이스(102d), PDA(personal digital assistant)(102e), 전자책 리더(electronic book reader), 웨어러블 컴퓨터, 자동차용 컴퓨터, 게임 디바이스 등을 포함할 수 있다. 컴퓨팅 디바이스들(102)은 또한, 예를 들어, 서버 컴퓨터, 씬(thin) 클라이언트, 단말, 및/또는 워크 스테이션과 같은 사업 또는 소매 중심 디바이스들을 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스들(102)은, 예를 들어, 컴퓨팅 디바이스, 가전 제품, 또는 다른 종류의 디바이스에 통합하기 위한 구성요소들을 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스들(102)에 의해 수행되는 것으로 기술된 기능의 일부 또는 전부가 하나 이상의 원격 피어 컴퓨팅 디바이스들, 원격 서버 또는 서버들, 또는 클라우드 컴퓨팅 자원에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스들(102)은 컴퓨팅 디바이스들로부터 원격지에 저장되어 있는 애플리케이션들을 실행할 수 있다.
일부 실시예들에서, 디바이스(102c)와 관련하여 도시된 바와 같이, 메모리(108)는 프로세서(들)(104)에 의해 로딩 가능하고 실행 가능한 운영 체제(OS)(112), 그래픽 모듈(114), 및 프로그램들 또는 애플리케이션들(116)을 비롯한, 프로세서(들)(104)에 의해 실행 가능한 명령어들을 저장할 수 있다. 하나 이상의 프로세서들(104)은 중앙 처리 유닛들(CPU들), 그래픽 처리 유닛들(GPU들), 비디오 버퍼 프로세서들 등을 포함할 수 있다. 일부 구현들에서, 비디오 분할 모듈(120)은 메모리(108)에 저장된 실행 가능 코드를 포함하고, 프로세서(들)(104) 및/또는 비디오 버퍼 프로세서들(118)에 의해 실행 가능하다. 적응적 경로 평활화 모듈(124)은 메모리(108)에 저장되고 프로세서(들)(104)에 의해 실행 가능한 실행 가능 코드를 포함한다. 적응적 경로 평활화 모듈(124)은 수정된 비디오 프레임 시퀀스의 비디오 프레임들간의 추정 오차들을 결정하고, 평활화된 비디오 프레임 시퀀스를 발생시키기 위해 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화를 적용한다. 적응적 경로 평활화는 원래의 비디오 프레임 시퀀스의 개별 비디오 프레임들 사이의 변화들에 적어도 부분적으로 기초한다.
특정 모듈들이 다양한 동작들을 수행하는 것으로 기술되어 있지만, 그 모듈들은 하나의 예에 불과하고, 동일하거나 유사한 기능이 보다 많거나 보다 적은 수의 모듈들에 의해 수행될 수 있다. 더욱이, 도시된 모듈들에 의해 수행되는 기능들이 꼭 단일의 디바이스에 의해 로컬적으로 수행될 필요는 없다. 오히려, 어떤 동작들은 원격 디바이스(예컨대, 피어, 서버, 클라우드 등)에 의해 수행될 수 있을 것이다.
대안적으로 또는 그에 부가하여, 본 명세서에 기술된 기능이, 적어도 부분적으로, 하나 이상의 하드웨어 로직 구성요소들에 의해 수행될 수 있다. 제한이 아닌 예로서, 사용될 수 있는 예시적인 유형의 하드웨어 로직 구성요소들은 FPGA(Field-programmable Gate Array), ASIC(Program-specific Integrated Circuit), ASSP(Program-specific Standard Product), SOC(System-on-a-chip system), CPLD(Complex Programmable Logic Device) 등을 포함한다.
일부 실시예들에서, 디바이스(102d)와 관련하여 도시된 바와 같이, 컴퓨팅 디바이스는 비디오를 캡처할 수 있는 카메라(126)와 연관될 수 있다. 예를 들어, 핸드헬드 디바이스는 이러한 카메라 및 컴퓨팅 디바이스(102)를 포함할 수 있다. 메모리(108)는 컴퓨터 판독 가능 매체들 중 하나 또는 이들의 조합을 포함할 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및/또는 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하기 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨팅 디바이스가 액세스하기 위한 정보를 저장하는 데 사용될 수 있는, PRAM(phase change memory), SRAM(static random-access memory), DRAM(dynamic random-access memory), 다른 유형의 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 또는 다른 메모리 기술, CD-ROM(compact disk read-only memory), DVD(digital versatile disk) 또는 다른 광 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 디바이스, 또는 임의의 다른 비전송 매체를 포함하지만, 이들로 제한되지 않는다.
이와 달리, 통신 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호(modulated data signal) 내에 포함할 수 있다. 본 명세서에서 규정된 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다. 다양한 실시예들에서, 메모리(108)는, 프로세서(들)(104) 및/또는 비디오 버퍼 프로세서(들)(118)에 의해 실행될 때, 프로세서(들)로 하여금, 그 중에서도 특히, 비디오 프레임 시퀀스의 개별 비디오 프레임들에서의 객체 특징들을 식별하게 하고; 수정된 비디오 프레임 시퀀스를 발생시키기 위해 비디오 프레임 시퀀스의 비디오 프레임들간에 호모그래피 추정을 수행하게 하며 - 여기서 호모그래피 추정은 식별된 객체 특징들에 적어도 부분적으로 기초함 -; 수정된 비디오 프레임 시퀀스의 비디오 프레임들간의 추정 오차들을 결정하게 하고; 평활화된 비디오 프레임 시퀀스를 발생시키기 위해 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화를 적용하게 하는 - 여기서 적응적 경로 평활화는 비디오 프레임 시퀀스의 개별 비디오 프레임들 사이의 변화들에 그리고 추정 오차들에 적어도 부분적으로 기초함 - 컴퓨터 실행 가능 명령어들을 저장하는 컴퓨터 저장 매체의 일례이다.
입력 디바이스는 출력 디바이스 상에 시각적으로 제시되는 객체에 움직임을 제공 및/또는 암시하도록 의도되어 있는 각종의 디바이스들 중 임의의 것을 포함할 수 있다. 예를 들어, 다양한 실시예들에서, 입력 디바이스는 직접 터치 입력 디바이스(예컨대, 터치 스크린), 간접 터치 디바이스(예컨대, 터치 패드), 간접 입력 디바이스(예컨대, 마우스, 키보드, 카메라 또는 카메라 어레이 등), 또는 다른 유형의 비촉각 디바이스(오디오 입력 디바이스 등)일 수 있다.
컴퓨팅 디바이스(들)(102)는 컴퓨팅 디바이스(102)가 다른 디바이스들과 통신할 수 있게 하는 하나 이상의 입출력(I/O) 인터페이스들(106)을 포함할 수 있다. 입출력(I/O) 인터페이스들(106)은 또한 컴퓨팅 디바이스(102)와 다른 네트워크화된 디바이스들(다른 디바이스(들)(102) 등) 사이의 통신을 가능하게 하는 하나 이상의 네트워크 인터페이스들을 포함할 수 있다. 입출력(I/O) 인터페이스들(106)은 디바이스(102)가 사용자 입력 주변 디바이스들(예컨대, 키보드, 마우스, 펜, 게임 컨트롤러, 음성 입력 디바이스, 터치 입력 디바이스, 제스처 입력 디바이스 등) 및/또는 출력 주변 디바이스들(예컨대, 디스플레이, 프린터, 오디오 스피커, 햅틱 출력 등)과 같은 다른 디바이스들과 통신할 수 있게 할 것이다.
도 2는 다양한 예시적인 실시예들에 따른, 카메라 경로 평활화 및 후처리 곡선 평활화에 의한 비디오 안정화를 나타낸 것이다. 경로(202)는 비디오의 캡처 동안 카메라의 움직임에 대응하는 원래의 카메라 경로를 나타낸다. 카메라 움직임은 카메라를 잡고 있는 사용자의 불안정하고 일정치 않은 손에 대응하는 비교적 빠른 움직임(떨림)을 포함할 수 있다. 카메라 움직임은 또한 사용자의 보행 또는 요동 움직임에 대응하는 비교적 느린 움직임(흔들림)도 포함할 수 있다.
카메라의 이러한 움직임은 비디오 프레임들에서 영상 객체들의 위치 변화들로서 나타날 수 있다. 보다 구체적으로는, 비디오의 제1 프레임을 캡처하는 것과 비디오의 제2 프레임을 캡처하는 것 사이의 기간 동안 카메라의 이동은 제1 프레임에 대한 제2 프레임에서의 객체들의 위치의 평행 이동(translation)을 가져올 수 있다. 카메라 이동은 또한 제1 프레임에 대한 제2 프레임에서의 객체들의 회전(rotation)을 가져올 수 있다. 캡처된 영상들의 평면 쪽으로의 또는 이로부터 멀어지는 쪽으로의 카메라 움직임은 제1 프레임과 제2 프레임 사이에서 객체들의 스케일을 변화시킬 수 있다. 그에 따라, 복수의 비디오 프레임들간의 평행 이동, 회전 및 스케일 변화를 고려하는 것에 의해 원래의 카메라 경로(202)가 결정될 수 있다. 후자의 파라미터인 스케일 변화는, 비교적 작을 때, 단일의 평면에서의 움직임만이 고려되도록 무시될 수 있다.
다양한 실시예들에서, 수정된 비디오 프레임들을 포함하는 수정된 비디오가 비교적 매끄럽고 안정적이게 보이도록 원래의 비디오의 비디오 프레임들의 영상들이 수정될 수 있다. 프레임들간의 비교적 빠른(예컨대, 짧은 시상수) 영상 변화들을 효과적으로 제거하기 위해 원래의 비디오 프레임들이 수정된다. 이러한 빠른 영상 변화들은 빠른 카메라 경로 변화들에 대응하고, 그의 예들은 도 2에서 참조번호 204로 나타내어져 있다. 비디오 프레임들을 수정하는 어떤 기법들은 비디오(예컨대, 프레임들의 시퀀스)의 일부분들을 평활화하여 일련의 평활화된 카메라 경로 세그먼트들(206)을 얻는 것을 포함한다. 이하에서 상세히 설명되는 바와 같이, 평활화된 카메라 경로 세그먼트들(206)은 서로 겹칠(overlap) 수 있고, 평활화된 카메라 경로 세그먼트들(206)을 생성한 프로세스의 결과로서 불연속들을 포함한다. 이와 같이, 도 2의 우측 이미지에 나타낸 바와 같이, 후처리 필터링 기법들은 매끄럽고 연속적인 경로(208)를 발생시킬 수 있다. 디스플레이하기 위한 출력 비디오는 이러한 연속적인 경로(208)에 적어도 부분적으로 기초할 수 있다. 그에 따라, 원래의 비디오에서의 떨림 및 흔들거림이 출력 비디오에서 감소되거나 제거될 수 있다.
도 3은 다양한 예시적인 실시예들에 따른, 일련의 프레임들 I(t)(단, t = 0, 1, 2 ...임)을 포함하는 카메라 경로(300)의 2 개의 비디오 프레임들 I(t-1) 및 I(t)를 나타낸 개략도이다. 항(term)들을 이러한 방식으로 모델링하고 정의하는 것은, 이하에서 기술되는 바와 같이, 비디오를 평활화하는 기법들을 개발하는 데 유용하다. 평면 호모그래피(planar homography)는 연속적인 비디오 프레임들간의 상대적 카메라 움직임을 나타내는 데 사용될 수 있다. 비디오 프레임들 I(t)(단, t = 0, 1, 2 ... 임)의 시퀀스를 포함하는 비디오에 대해, 각각의 이웃 프레임들의 쌍 (I(t - 1), I(t))간의 호모그래피 F(t)는 프레임들의 대응하는 특징점들(예컨대, KLT, SIFT, 또는 SURF에 의해 발생된 어파인(affine) 영상 특징들 등)로부터 계산될 수 있다. 카메라 포즈(camera pose) C(t)는 프레임 I(t)에서 다음과 같이 정의된다:
{F(0), F(1), ... , F(t - 1)}은 시퀀스에 걸쳐 각각의 프레임에 대한 추정된 호모그래피들이다.
원래의 카메라 경로 C = {C(t)}가 주어지면, 새로운 평활화된 경로 P = {P(t)}가 결정된다. P에 대한 바람직한 조건들은 P가 C에서의 빠른 변화들을 제외한 모든 곳(불연속이 없는 곳)에서 매끄러우면서 C에 비교적 가까워야만 한다는 것이다. 예를 들어, 사용자가 빠르게 움직이는 객체의 영상을 캡처하기 위해 카메라를 빠르게 회전시킬 때와 같이, 빠른 변화들이 의도적일 수 있다. 이와 같이, 어떤 빠른 경로 변화들을 유지하는 것이 바람직할 수 있다.
P를 결정하는 프로세스는 하기의 목적 함수(objective function)를 최소화하는 것을 포함할 수 있고:
여기서 Ωt는 프레임 t에서 비디오 프레임들의 이웃이다. 예를 들어, 비디오 프레임들의 이러한 이웃은 I(t - 30), I(t - 29), ..., I(t), I(t + 1), ..., I(t + 30)(예컨대, 프레임 t 이전의 30 개의 프레임들 및 그 이후의 30 개의 프레임들)을 포함할 수 있다. 비교적 큰 커널 Ωt(예컨대, 60 개의 프레임들)는 (예컨대, 손떨림으로부터의) 고주파 지터 및 (예컨대, 보행 움직임으로부터의) 저주파 바운스 둘 다를 억압할 수 있지만, 청구된 발명 요지가 그것으로 제한되지 않는다.
수학식 2에서, 는 크로핑 및 지오메트리 왜곡을 감소시키기 위해 새로운 카메라 경로 P를 원래의 카메라 경로 C에 비교적 가깝도록 제약하는 경향이 있는 데이터 항이다. 항 는 카메라 경로를 안정화시키는 평활화 항이다. 적응적 가중치 wt,r(C)는, 그 중에서도 특히, 고속 패닝/회전 또는 장면 전환 중의 움직임 불연속들을 유지하는 인자이다. 인자 λt는 데이터 항과 평활화 항을 밸런싱하기 위해 조절 가능하다.
적응적 가중치 wt,r(C)는 카메라 경로 불연속을 유지하는 경향이 있다. 일부 구현들에서, wt,r(C)는 3 개의 가우시안 함수들의 곱을 포함한다:
제1 가우시안 함수 exp(- (t - r)2/2σ2)는 (프레임 I(t)에 대해) 근방의 비디오 프레임들에 보다 큰 가중치를 제공하고 프레임 I(t)로부터 보다 멀리 떨어진 비디오 프레임들에 보다 작은 가중치를 제공한다. 어떤 예들에서, σ는 Ωt/3와 같도록 설정될 수 있지만, 청구된 발명 요지가 그것으로 제한되지 않는다.
제2 가우시안 함수 exp(- (C(t) - C(r))2/2α2)는 2 개의 카메라 포즈들 사이의 변화의 측정을 제공한다. 카메라 포즈들의 이러한 변화를 측정하기 위해, 카메라 포즈 C(t)로부터 추출된 평행 이동 성분들 x(t), y(t)의 변화가 사용될 수 있다. 이러한 변화는 |x(t) - x(r)| + |y(t) - y(r)|로서 표현될 수 있다. 프레임 평행 이동 xt, yt는 주축(principal axis)을 중심으로 한 평면내 회전 또는 스케일 변화를 포함하지 않는 카메라 움직임들을 기술할 수 있다.
제3 가우시안 함수 는 호모그래피 피팅 오차(homography fitting error)를 호모그래피 기반 위치 맞춤(homography-based registration) 이후에 2 개의 프레임들간의 차 제곱의 합(sum of squared difference, SSD)으로서 계산한다. 변환 는 를 평가하는 것에 의해 발생될 수 있다. 비디오 프레임의 장면에 큰 폐색(occlusion) 또는 깊이 변화(depth change)가 있을 때, 호모그래피 기반 움직임 모델이 이웃 프레임들을 위치 맞춤하는 데 덜 효과적으로 될 수 있다. 이러한 경우에, SSD 오차가 클 수 있고, 의도적인 특징일 수 있는 카메라 경로 불연속을 바람직하게는 유지하기 위해 wt,r(C)의 평활화 강도(smoothing strength)가 감소될 수 있다.
도 4는 다양한 실시예들에 따른, 프레임 크로핑 및 왜곡의 양태들을 나타낸 개략도를 포함한다. 좌측 도면은 입력 프레임(402), 안정화된 프레임(404), 및 겹치는 영역(406)을 나타내고 있다. 우측 도면은 다른 입력 프레임(408) 및 왜곡된 프레임(410)을 나타내고 있다. 각도 α는 왜곡의 정도를 나타내는 파라미터이다. 변위 값들의 집합 d(집합 d1, d2, d3, ...을 포함함)가 또한 왜곡의 정도를 나타내는 데 사용될 수 있다. 영상 안정화 프로세스는, 그 중에서도 특히, 이하에서 설명되는 바와 같이, 상이한 프레임들에 대한 상이한 양의 프레임 안정화, 겹침, 및 왜곡을 수반한다.
적응적 항(adaptive term) wt,r(C)(수학식 3)는 비디오 프레임들의 크로핑 및 왜곡을 얼마간 제어할 수 있게 할 수 있다. 그렇지만, 각각의 프레임에 대한 목적 함수(수학식 2)에서의 파라미터 λt를 적응적으로 조절하는 것은 크로핑 비율(cropping ratio) 및 왜곡에 대한 부가 제어를 제공할 수 있다. 예를 들어, 목적 함수가 λt에 대한 초기 고정 값(예컨대, 5)을 사용하여 평가될 수 있고 특정의 기준들이 충족되는지를 결정하기 위해 모든 프레임의 얻어진 크로핑 비율 및 왜곡이 검사될 수 있다. 예를 들어, 특정의 사용자 요구사항들을 충족시키지 않는 임의의 프레임에 대해(예컨대, 크로핑 비율 또는 왜곡이 미리 정해진 임계치보다 작음), 파라미터 λt가 스텝(예컨대, 1/10λt)만큼 조절(예컨대, 증가 또는 감소)될 수 있고, 목적 함수가 λt에 대한 새로운 값으로 재평가될 수 있다. 이러한 절차는 모든 프레임들이 사용자 요구사항들을 충족시킬 때까지 반복될 수 있다.
도 5는 다양한 실시예들에 따른, 원래의 카메라 경로들과 평활화된 카메라 경로들간의 관계들(500)을 나타낸 개략도이다. 도 3에서는 고려되지만 도 5에서는 개별적으로 고려되지 않는 개별 격자 셀들을 참작하기 위해 도 5에서의 표기법 C(t-1)은 도 3에서의 표기법 C(t-1)과 상이하다. λt의 추정에서 사용되는 크로핑 비율 및 왜곡은 워핑 변환(warping transform) B(t) = C(t)-1P(t)를 사용하여 측정될 수 있다. 예를 들어, B(t)의 이방성 스케일링(anisotropic scaling)이 B(t)의 어파인 부분의 2 개의 가장 큰 고유값들의 비에 의해 계산될 수 있는 왜곡(예컨대, 도 4에 나타낸 파라미터 α 및 변위들 d)을 평가하는 데 사용될 수 있다. 도 4를 참조하면, B(t)는 또한 원래의 비디오 프레임(402)과 안정화된 프레임(404)의 겹치는 영역(406)의 면적을 계산하는 데 사용될 수 있다. 크로핑 비율은 원래의 프레임 면적에 대한 겹치는 면적의 비로서 정의된다.
수학식 2로 돌아가서, 야코비 기반 반복 해(Jacobi-based iterative solver)와 같은 선형 시스템 해(linear system solver)는 이차 목적 함수(quadratic objective function) O({P(t)})를 푸는 데 사용될 수 있다. 그에 따라, 목적 함수 O({Pt})는 다음과 같이 쓰여질 수 있다:
이 수학식에서, ξ는 반복 인덱스(iteration index)(예컨대, ξ = 20)이다. 구해진 최적 경로 {P(t)}에 의해, 변환 B(t) = C-1(t)P(t)는 원래의 카메라 경로 C(t)를 최적 경로 P(t)에 매핑하기 위해 계산될 수 있다. 최종적인 안정화된 프레임은 이중 선형 보간(bilinear interpolation)에 의해 변환 B(t)를 입력 프레임 I(t)에 적용하는 것에 의해 획득될 수 있다.
최적 경로 P(t)는 일련의 겹치는 평활화된 비디오 프레임 시퀀스(이것의 예들은 도 2에 도시된 평활화된 카메라 경로 세그먼트들(206)임)를 포함할 수 있다. 이러한 겹침은 후처리 필터링 또는 평활화가 좋지 않은 결과를 가져올 수 있을 불연속 경로 세그먼트들을 처리할 필요가 없다는 점에서 유익하다. 겹치는 평활화된 비디오 프레임 시퀀스들이 다수의 기법들에 의해 발생될 수 있다. 예를 들어, 비디오 세그먼트들은, 예를 들어, ε이 τ 미만으로 선택되는 경우, 서로 겹치도록 배열될 수 있다. 이 경우에, 모든 2 개의 이웃 세그먼트들은 (τ - ε) 개의 겹쳐진 프레임들을 갖고, 각각의 프레임(시작 프레임 및 종료 프레임을 제외함)이 평활화 이벤트에서 구별되는 세그먼트들에서 (τ/ε - 1) 회 처리된다. 각각의 프레임이 상이한 비디오 세그먼트들에서 행해지는 상이한 추정들을 갖기 때문에, 이 상이한 추정들이 상이한 세그먼트들로부터 단일의 집성화된 경로(예컨대, 평활화된 카메라 경로 세그먼트들(206))로 집성화될 수 있다. 크로핑 크기 및 왜곡을 미리 정해진 임계값 미만으로 유지하면서 집성화된 경로(예컨대, 연속적인 경로(208))에서의 불연속들을 추가로 제거하기 위해 하이브리드 적응적 평활화(hybrid adaptive smoothing)가 후처리 단계에서 수행될 수 있다. 예를 들어, 후처리 동안 원하는 크로핑 크기 및 왜곡을 유지하기 위해, λt가 집성화된 카메라 경로에 대한 이전의 최적화 프로세스로부터 재추정될 수 있다. λt는 워핑 변환 으로부터 추정될 수 있고, 여기서 는 상이한 비디오 세그먼트들에서의 모든 추정들 Pt를 집성화한 후의 추정된 카메라 포즈이다. 추정된 λt는 이어서 하이브리드 적응적 경로 평활화에서 사용될 수 있다. "하이브리드"란 2 개의 상이한 윈도우 크기들 2Ωt/3 및 Ωt/3이 적응적 평활화 항 에서 연속적으로 적용된다는 것을 의미한다. 어떤 경우들에서, 몇 번의(예컨대, 2 번 또는 4 번의) 반복들은 수렴에 이를 수 있다. 후처리 후에, 집성화된 경로가 평활화되고 최종적인 평활화된 카메라 경로를 가지는 출력 비디오로서 제공된다. 일부 구현들에서, 후처리는 실시간으로 구현될 수 있다. 예를 들어, 후처리를 포함하는 비디오 안정화 기법들이 비디오를 캡처(예컨대, 기록)하거나 수신하는 프로세스와 실질적으로 병렬적으로 수행될 수 있다. 다른 구현들에서, 후처리가 오프라인으로 구현될 수 있다. 예를 들어, 이전에 발생된 비디오 파일들에 대해 후처리를 포함하는 비디오 안정화 기법들이 수행될 수 있다.
도 6은 다양한 실시예들에 따른, 비디오 안정화 디바이스(600)의 블록도이다. 비디오 안정화 디바이스(600)가 다양한 예들에서 디바이스로서 기술되어 있지만, 비디오 안정화 디바이스(600)에 의해 수행되는 프로세스들 및 기법들이 대안적으로 메모리에 저장된 코드를 실행하는 프로세서에 의해 수행될 수 있다. 컴퓨팅 디바이스(102)에 포함될 수 있는 디바이스(600)는, 이하에서 기술되는 바와 같이, 시간 슬라이딩 윈도우(temporal sliding window)에 의해 비디오 세그먼트들을 스트림 처리(stream-process)하기 위해 슬라이딩 윈도우 필터링 기법을 사용하여 비디오 안정화를 수행한다. 전체 비디오 시퀀스 처리와 비교하여, 시간 슬라이딩 윈도우에 의해 비디오를 스트림 처리하는 것은 다수의 이점들을 제공한다. 예를 들어, 오프라인 안정화의 경우, 사용자들은 비디오가 백그라운드에서 동시에 안정화되면서 비디오를 재생할 수 있다(예컨대, 비디오를 재생하는 것 이외의 사용자 개입이 없음). 다른 예에서, 실시간 안정화의 경우, 비디오가 비디오 캡처 동안 실시간으로 안정화될 수 있다. 이 특징을 달성하기 위해, 비디오 안정화 시스템은 특정의 크기를 갖는 비디오 버퍼 프로세서를 포함할 수 있다. 버퍼 크기 τ가 (예컨대, 컴퓨터 또는 모바일 디바이스를 포함할 수 있는) 비디오 안정화 시스템의 프로세서 능력 및 메모리 요구사항들을 고려하는 것에 의해 제약되거나 선택될 수 있다.
비디오 분할 모듈(602)은 비디오 프레임들을 포함하는 입력 비디오를 수신하는 비디오 입력 포트를 포함한다. 일부 구현들에서, 비디오 분할 모듈(602)은 실행 가능 코드를 포함한다. 이 경우에, 비디오 입력 포트는 입력 비디오를 나타내는 전자 신호들을 수신할 수 있다. 비디오 분할 모듈(602)은 입력 비디오를 다수의 비디오 프레임 시퀀스들로 분할한다. 개별 시퀀스들은, 각각, 비디오 버퍼 프로세서들(604)에 제공된다. 예를 들어, 제1 비디오 프레임 시퀀스가 제1 비디오 버퍼 프로세서에 제공되고, 제2 비디오 프레임 시퀀스가 제2 비디오 버퍼 프로세서에 제공되며, 나머지 비디오 프레임 시퀀스도 이러한 식으로 제공된다. 입력 비디오 시퀀스들은 적응적 경로 평활화에 의한 비디오 안정화 프로세스를 거치기 위해 비디오 버퍼 프로세서(604) 내로 스트리밍된다. 이러한 경로 평활화 후에, 각자의 비디오 시퀀스들의 ε 개(예컨대, ε = 5)의 프레임들이 비디오 출력 프레임들로서 렌더링되기 위해 개별 비디오 버퍼 프로세서들로부터 스트리밍되어 나간다. 각각의 비디오 시퀀스의 나머지 프레임들은 새로운 유입 프레임 시퀀스들과 집성화되어 새로운 집성화된 비디오 시퀀스에 결합될 수 있고, 새로운 집성화된 비디오 시퀀스는 이어서, 이하에서 설명되는 바와 같이, 후처리 필터 모듈(606)에 의해 수행되는 후처리 이벤트에서 평활화될 것이다. 이 절차는 비디오 전체가 처리될 때까지 반복될 수 있다.
도 7은 다양한 실시예들에 따른, 2 개의 비디오 프레임 시퀀스들(702 및 704)의 개략도이다. 비디오 프레임 시퀀스에 대한 설명은 슬라이딩 윈도우 필터링 기법의 착안을 설명하고 그의 용어들을 정의하는 데 유용하다. 비디오 프레임 시퀀스는 복수의 프레임들(706)을 포함한다. 비디오 프레임 시퀀스들(702 및 704)은 ε 개의 프레임들만큼 서로로부터 오프셋되어 있다. 이러한 오프셋은 다른 프레임 시퀀스에 대한 하나의 프레임 시퀀스의 시간 지연에 대응한다.
도 8은 다양한 예시적인 실시예들에 따른, 비디오 안정화 디바이스(800)의 일부분의 블록도이다. 비디오 안정화 디바이스(800)가 다양한 예들에서 디바이스로서 기술되어 있지만, 비디오 안정화 디바이스(800)에 의해 수행되는 프로세스들 및 기법들이 대안적으로 메모리에 저장된 코드를 실행하는 프로세서에 의해 수행될 수 있다. 도 6에 도시된 비디오 분할 모듈(602)과 유사할 수 있는 비디오 분할 모듈(802)은 비디오 프레임 시퀀스들을 비디오 프로세서들(804a, 804b, 804c 등)에 제공하는 데 사용될 수 있다. 비디오 분할 모듈(802)은 제1 비디오 프레임 시퀀스를 어떠한 관련된 오프셋 또는 지연 없이 블록(802a)을 통해 비디오 버퍼 프로세서(804a)에 제공할 수 있고, 제2 비디오 프레임 시퀀스를 n 개 프레임의 오프셋 또는 지연을 갖고 블록(802b)을 통해 비디오 버퍼 프로세서(804b)에 제공할 수 있으며, 제3 비디오 프레임 시퀀스를 2n 개 프레임의 오프셋 또는 지연을 갖고 블록(802c)을 통해 비디오 버퍼 프로세서(804c)에 제공할 수 있고, 제4 비디오 프레임 시퀀스를 3n 개 프레임의 오프셋 또는 지연을 갖고 다음 비디오 버퍼 프로세서에 제공할 수 있으며, 이하 나머지 비디오 프레임 시퀀스도 이런식으로 제공된다. 비디오 분할 모듈은 m + 1 개의 비디오 버퍼 프로세서들에 대해 이 패턴을 계속할 수 있다. 그에 따라, 연속적인 비디오 버퍼 프로세서들은 하나의 비디오 버퍼 프로세서로부터의 연속적으로 프레임 단위 지연된(frame-wise delayed) 비디오 프레임 시퀀스들을 다음 비디오 버퍼 프로세서에 제공한다. 예를 들어, 이러한 프레임 단위 지연은 도 7에 나타내어져 있고, 여기서 비디오 프레임 시퀀스들(702 및 704)은 ε 개의 프레임들만큼 서로로부터 오프셋되어 있다.
비디오 버퍼 프로세서(804a)가 비디오 프레임 시퀀스를 수신할 때 또는 그 후에, 특징 추출 모듈(808a)은 비디오 프레임 시퀀스의 개별 비디오 프레임들에서 객체 특징들을 식별한다. 예를 들어, 이러한 객체 특징들은 개별 비디오 프레임들에서의 점들 또는 에지들을 포함할 수 있다. 이어서, 호모그래피 추정 모듈(810a)은 수정된 비디오 프레임 시퀀스를 발생시키기 위해 비디오 프레임 시퀀스의 연속적인 비디오 프레임들간의 호모그래피 추정을 수행한다. 호모그래피 추정은 특징 추출 모듈(808a)에 의해 식별된 객체 특징들에 적어도 부분적으로 기초한다. 적응적 경로 평활화 모듈(812a)은 수정된 비디오 프레임 시퀀스의 비디오 프레임들간의 추정 오차들을 결정하고, 평활화된 비디오 프레임 시퀀스를 발생시키기 위해 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화를 적용한다. 적응적 경로 평활화는 비디오 프레임 시퀀스의 개별 비디오 프레임들 사이의 변화들에 그리고 추정 오차들에 적어도 부분적으로 기초한다.
연속적인 비디오 버퍼 프로세서들(804b 및 804c)은 비디오 버퍼 프로세서(804a)에 대해 앞서 기술된 것과 유사한 프로세스들을 수행한다. 그렇지만, 연속적인 비디오 버퍼 프로세서들(804b 및 804c)에 제공되는 비디오 프레임 세그먼트들은 연속적으로 하나의 비디오 버퍼 프로세서마다 지연되어 다음 비디오 버퍼 프로세서로 넘겨진다. 앞서 설명된 바와 같이, 비디오 분할 모듈(802)은 비디오 프레임 시퀀스를 n 개 프레임의 오프셋 또는 지연을 갖고 비디오 버퍼 프로세서(804b)에 제공하고, 제3 비디오 프레임 시퀀스를 2n 개 프레임의 오프셋 또는 지연을 갖고 비디오 버퍼 프로세서(804c)에 제공하며, 이하 나머지 비디오 프레임 시퀀스도 이런식으로 제공된다. 비디오 버퍼 프로세서들(804a, 804b, 및 804c ...)은 그들 각자의 비디오 프레임 시퀀스들을 병렬적으로 처리할 수 있다.
비디오 버퍼 프로세서(804a)는 평활화된 비디오 프레임 세그먼트를 포함하는 출력을 발생시킨다. 몇 가지 이러한 평활화된 비디오 세그먼트들의 일례는 도 2에 도시된 평활화된 카메라 경로 세그먼트들(206)일 수 있다. 앞서 설명된 바와 같이, 비디오 버퍼 프로세서들(804a, 804b, 및 804c ...)에 의해 개별적으로 발생되는 평활화된 비디오 세그먼트들은 겹치는 세그먼트들을 포함한다. 비디오 버퍼 프로세서들에 의해 발생된 이 평활화된 비디오 세그먼트들은 개개의 평활화된 비디오 세그먼트들을 집성화하는 경로 집성화 모듈(814)에 제공된다. 집성화된 평활화된 비디오 세그먼트들은 이어서, 크로핑 크기 및 왜곡을 미리 정해진 임계값 미만으로 유지하면서 집성화된 평활화된 비디오 세그먼트들에서 불연속을 추가로 제거하기 위해 하이브리드 적응적 평활화를 수행하는 후처리 필터링 모듈(816)에 제공된다. 후처리 필터링 모듈(816)은 이와 같이 평활화된 연속적인 경로(이것의 일례는 도 2의 연속적인 경로(208)임)를 발생시킨다. 평활화된 연속적인 경로는 이어서 영상 프레임 이중 선형 워핑 모듈(818)에 제공되고, 영상 프레임 이중 선형 워핑 모듈(818)은 이어서 시청용 비디오를 출력한다. 이중 선형 워핑을 행하기 위해, 먼저 역워핑 변환(inverse warping transformation) B-1(t)에 따라 프레임 t에서의 각각의 픽셀 좌표 (x, y)를 새로운 좌표들 (x', y')에 매핑한다. 이어서, 픽셀 값 l'x,y가 그의 이웃하는 4 개의 픽셀들 의 이중 선형 보간에 의해 결정되고, 여기서 는 x'를 초과하는 최대 정수이다.
도 9는 다양한 실시예들에 따른, 비디오를 평활화하는 프로세스(900)의 흐름도이다. 일례에서, 이러한 프로세스는 비디오 안정화 디바이스(800)에 의해 수행될 수 있다. 블록(902)에서, 비디오의 일부분이 비디오 포트를 통해 수신된다. 비디오 부분은 비디오 프레임 시퀀스를 포함한다. 블록(904)에서, 비디오 프레임 시퀀스의 개별 비디오 프레임들의 어파인 객체 특징들이 비디오 프레임 시퀀스의 다른 개별 비디오 프레임들의 어파인 객체 특징들과 비교된다. 블록(906)에서, 수정된 비디오 프레임 시퀀스를 발생시키기 위해 비디오 프레임 시퀀스의 비디오 프레임들간의 호모그래피 추정이 사용된다. 호모그래피 추정은 블록(904)의 비교 프로세스에 적어도 부분적으로 기초한다. 예를 들어, 호모그래피 추정은 비교 프로세스에서 식별된 객체 특징들에 적어도 부분적으로 기초하여 개별 비디오 프레임들간의 매핑들을 발생시키는 것을 포함할 수 있다. 블록(908)에서, 수정된 비디오 프레임 시퀀스의 비디오 프레임들간의 추정 오차들이 결정된다. 블록(910)에서, 평활화된 비디오 프레임 시퀀스를 발생시키기 위해 적응적 경로 평활화가 수정된 비디오 프레임 시퀀스에 적용된다. 적응적 경로 평활화는 비디오 프레임 시퀀스 간의 영상들의 변화에 대응하는 움직임 불연속들을 유지한다. 적응적 경로 평활화는 이 변화들에 그리고 블록(908)에서 결정된 추정 오차들에 적어도 부분적으로 기초한다.
도 6, 도 8, 및 도 9에 예시된 동작들의 흐름들이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스들을 나타내는 블록들 및/또는 화살표들의 집합체로서 예시되어 있다. 블록들이 기술되어 있는 순서가 제한으로서 해석되도록 의도되어 있지 않으며, 임의의 수의 기술된 동작들이 하나 이상의 방법들 또는 대안의 방법들을 구현하기 위해 임의의 순서로 결합될 수 있다. 그에 부가하여, 본 명세서에 기술된 발명 요지의 사상 및 범주를 벗어남이 없이 개개의 동작들이 동작들의 흐름으로부터 생략될 수 있다. 소프트웨어와 관련하여, 블록들은, 하나 이상의 프로세서들에 의해 실행될 때, 언급된 동작들을 수행하는 컴퓨터 판독 가능 명령어들을 나타낸다. 하드웨어와 관련하여, 블록들은 언급된 동작들을 실행하도록 구성된 하나 이상의 회로들(예컨대, ASIC(application specific integrated circuit))을 나타낼 수 있다.
도 6, 도 8, 및 도 9에 예시된 동작들의 흐름들에서의 임의의 루틴 설명들, 요소들, 또는 블록들은 루틴에서의 특정의 논리 기능들 또는 요소들을 구현하기 위한 하나 이상의 실행 가능 명령어들을 포함하는 모듈들, 세그먼트들, 또는 코드의 일부분들을 나타낼 수 있다.
결론
기법들이 구조적 특징들 및/또는 방법 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들이 꼭 기술된 특징들 또는 동작들로 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 특징들 및 동작들이 이러한 기법들의 예시적인 구현들로서 기술되어 있다.
앞서 기술된 방법들 및 프로세스들 중 임의의 것이 하나 이상의 범용 컴퓨터들 또는 프로세서들에 의해 실행되는 소프트웨어 코드 모듈들에 구현되고 그들을 통해 완전 자동화될 수 있다. 코드 모듈들은 임의의 유형의 컴퓨터 판독 가능 저장 매체 또는 다른 컴퓨터 저장 디바이스에 저장될 수 있다. 방법들 중 일부 또는 전부가 대안적으로 특수 컴퓨터 하드웨어에서 구현될 수 있다.
그 중에서도 특히, “~일 수 있다”, “~일 수 있을 것이다”, “~일지도 모를 것이다”, 또는 “~일지도 모른다”와 같은 조건적 표현은, 달리 구체적으로 언급하지 않는 한, 특정 실시예들이 언급된 특징들, 요소들 및/또는 단계들을 포함하는 반면, 다른 실시예들이 이들을 포함하지 않는다는 것을 나타내기 위해 사용된다. 이와 같이, 달리 언급하지 않는 한, 이러한 조건적 표현은 특징들, 요소들 및/또는 단계들이 하나 이상의 실시예들에 대해 어떻게든 필요하다는 것 또는 하나 이상의 실시예들이, 사용자 입력 또는 프롬프트에 의해 또는 이들 없이, 이 특징들, 요소들 및/또는 단계들이 임의의 특정 실시예에 포함되거나 임의의 특정 실시예에서 수행되어야 하는지를 결정하는 로직을 꼭 포함한다는 것을 암시하는 것으로 의도되어 있지 않다.
“X, Y 또는 Z 중 적어도 하나”라는 문구와 같은 접속어 표현은, 달리 구체적으로 언급하지 않는 한, 항목, 용어 등이 X, 또는 Y, 또는 Z, 또는 이들의 조합일 수 있다는 것을 나타내는 것으로 이해되어야 한다.
앞서 기술된 실시예들 - 그의 요소들은 다른 타당한 예들 중에 속하는 것으로 이해되어야 함 - 에 대해 많은 변형들 및 수정들이 행해질 수 있다. 모든 이러한 수정들 및 변형들은 본 명세서에서 본 개시 내용의 범주 내에 포함되는 것으로 의도되어 있다.
Claims (20)
- 시스템에 있어서,
비디오 프레임 시퀀스(a sequence of video frames)를 포함하는 비디오를 수신하기 위한 비디오 입력 포트;
하나 이상의 프로세서; 및
상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 동작들을 수행하도록 상기 하나 이상의 프로세서를 구성시키는 명령어들이 저장되어 있는 메모리
를 포함하고, 상기 동작들은,
상기 비디오 프레임 시퀀스의 개별 비디오 프레임들에서 객체 특징(object feature)들을 식별하는 동작;
수정된 비디오 프레임 시퀀스를 발생시키기 위해 상기 비디오 프레임 시퀀스의 비디오 프레임들간의 호모그래피 추정(homographic estimation)을 수행하는 동작 - 상기 호모그래피 추정은 상기 식별된 객체 특징들에 적어도 부분적으로 기초하고, 상기 비디오 프레임 시퀀스의 각각의 쌍의 이웃하는 비디오 프레임들 사이의 추정된 호모그래피들을 사용하여 정의된 카메라 포즈들의 시퀀스에 의해 형성된 원래의 카메라 경로를 결정함 -;
평활화된(smoothed) 비디오 프레임 시퀀스를 발생시키기 위해 상기 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화(adaptive path smoothing)를 적용하는 동작 - 상기 적응적 경로 평활화는 목적 함수를 최소화함으로써 주어진 원래의 카메라 경로에서 평활화된 카메라 경로를 결정하는 동작을 포함하고, 상기 목적 함수는 상기 평활화된 카메라 경로를 상기 원래의 카메라 경로에 가깝도록 제약하는 경향이 있는 데이터 항, 상기 평활화된 카메라 경로를 안정화시키는 평활화 항 및 상기 평활화 항에 연관되는, 카메라 경로 불연속을 유지하는 경향이 있는 적응적 가중치를 포함하고, 상기 적응적 가중치는 상기 원래의 카메라 경로의 두 카메라 포즈들 사이의 변화들의 측정을 제공하는 함수 및 호모그래피 기반 위치 맞춤에 후속하는 두 비디오 프레임들 사이의 호모그래피 피팅 오차를 계산하는 함수에 적어도 부분적으로 기초함 -
을 포함한 것인, 시스템. - 제1항에 있어서,
상기 비디오 입력 포트에 통신가능하게 연결된 비디오 분할(partition) 모듈
을 더 포함하고,
상기 비디오 분할 모듈은,
상기 비디오 입력 포트로부터 상기 비디오를 수신하는 동작;
상기 비디오를 복수의 비디오 프레임 시퀀스들로 분할하는 동작;
상기 비디오 프레임 시퀀스들의 개별 시퀀스들에 프레임 지연들을 적용하는 동작; 및
상기 시퀀스들을 상기 하나 이상의 프로세서의 개별 버퍼들에 각각 제공하는 동작 - 제1 시퀀스를 프레임 지연 없이 제공하는 것을 포함함 -;
을 포함한 동작들을 수행하도록 구성된 것인, 시스템. - 제2항에 있어서,
상기 비디오 분할 모듈은 상기 메모리 내에 저장되고, 상기 하나 이상의 프로세서에 의해 실행 가능한 것인, 시스템. - 제2항에 있어서,
상기 프레임 지연들을 적용하는 동작은, 상기 제1 시퀀스가 아닌 상기 비디오 프레임 시퀀스들이 상기 비디오 프레임의 상기 제1 시퀀스로부터 m x n 개 프레임들만큼 각각 오프셋되도록, 상기 비디오 프레임 시퀀스들의 비디오 프레임들을 프레임 쉬프트시키는 동작을 더 포함하고, m은 일련의 정수들(1, 2, 3 ...)이고, n은 미리 결정된 수인 것인, 시스템. - 제4항에 있어서,
집성화된 비디오 부분을 생성하기 위해 상기 적응적 경로 평활화 후의 상기 복수의 비디오 프레임 시퀀스들을 집성하는 동작; 및
상기 집성화된 비디오 부분을 평활화하기 위해 후처리 필터링을 적용하는 동작
을 포함한 동작들을 수행하도록 구성된 비디오 집성화(aggregation) 모듈
을 더 포함하는, 시스템. - 제5항에 있어서,
상기 비디오 집성화 모듈은 상기 메모리 내에 저장되고, 상기 하나 이상의 프로세서에 의해 실행 가능한 것인, 시스템. - 삭제
- 제1항에 있어서,
상기 비디오 프레임 시퀀스의 상기 개별 비디오 프레임들에서의 상기 객체 특징들은 상기 개별 비디오 프레임들에서의 점(point)들 또는 에지(edge)들을 포함한 것인, 시스템. - 제1항에 있어서,
상기 하나 이상의 프로세서는 하나 이상의 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 또는 비디오 버퍼 프로세서를 포함한 것인, 시스템. - 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 동작들을 수행하도록 상기 하나 이상의 프로세서를 구성시키는, 컴퓨터로 실행가능한 명령어들이 저장되어 있는 컴퓨터로 판독가능한 저장매체에 있어서, 상기 동작들은,
비디오를 복수의 비디오 시퀀스들로 분할하는 동작;
상기 복수의 비디오 시퀀스들의 개별 비디오 시퀀스들을 지연시킴으로써 상기 개별 비디오 시퀀스들이 서로에 대해 특정의 수의 프레임들만큼 지연되도록 하는 동작; 및
상기 개별 비디오 시퀀스들의 각각의 비디오 시퀀스에 대해, 평활화 프로세스를 수행하는 동작
을 포함하고, 상기 평활화 프로세스는,
상기 비디오 시퀀스의 개별 비디오 프레임들에서 객체 특징들을 식별하는 동작;
수정된 비디오 시퀀스를 발생시키기 위해 개별 비디오 프레임들에서 식별된 상기 객체 특징들에 적어도 부분적으로 기초하여 상기 개별 비디오 프레임들간의 호모그래피 추정을 수행하고, 상기 비디오 시퀀스 내의 각각의 쌍의 이웃하는 비디오 프레임들 사이의 추정된 호모그래피들을 사용하여 정의된 카메라 포즈들의 시퀀스에 의해 형성된 원래의 카메라 경로를 결정하는 동작;
평활화된(smoothed) 비디오 시퀀스를 발생시키기 위해 상기 수정된 비디오 시퀀스에 적응적 경로 평활화(adaptive path smoothing)를 적용하는 동작 - 상기 적응적 경로 평활화는 목적 함수를 최소화함으로써 주어진 원래의 카메라 경로에서 평활화된 카메라 경로를 결정하는 동작을 포함하고, 상기 목적 함수는 상기 평활화된 카메라 경로를 상기 원래의 카메라 경로에 가깝도록 제약하는 경향이 있는 데이터 항, 상기 평활화된 카메라 경로를 안정화시키는 평활화 항 및 상기 평활화 항에 연관되는, 카메라 경로 불연속을 유지하는 경향이 있는 적응적 가중치를 포함하고, 상기 적응적 가중치는 상기 원래의 카메라 경로의 두 카메라 포즈들 사이의 변화들의 측정을 제공하는 함수 및 호모그래피 기반 위치 맞춤에 후속하는 두 비디오 프레임들 사이의 호모그래피 피팅 오차를 계산하는 함수에 적어도 부분적으로 기초함 -
을 포함한 것인, 컴퓨터로 판독가능한 저장매체. - 제10항에 있어서,
상기 동작들은,
집성화된 비디오 부분을 생성하기 위해 상기 적응적 경로 평활화 후의 상기 복수의 비디오 시퀀스들을 집성하는 동작; 및
상기 집성화된 비디오 부분을 평활화하기 위해 후처리 필터링을 적용하는 동작
을 더 포함한 것인, 컴퓨터로 판독가능한 저장매체. - 제10항에 있어서,
상기 비디오 시퀀스의 상기 개별 비디오 프레임들에서의 상기 객체 특징들은 상기 개별 비디오 프레임들에서의 점들 또는 에지들을 포함한 것인, 컴퓨터로 판독가능한 저장매체. - 제10항에 있어서,
상기 평활화 프로세스는 상기 개별 비디오 시퀀스들 중 하나보다 많은 비디오 시퀀스들에 대해 동시적으로 수행되는 것인, 컴퓨터로 판독가능한 저장매체. - 삭제
- 방법에 있어서,
비디오 포트에서, 비디오 프레임 시퀀스를 포함하는 비디오 부분을 수신하는 단계;
상기 비디오 프레임 시퀀스의 개별 비디오 프레임들의 어파인(affine) 객체 특징들을 상기 비디오 프레임 시퀀스의 다른 개별 비디오 프레임들의 어파인 객체 특징들과 비교하는 단계;
수정된 비디오 프레임 시퀀스를 발생시키기 위해 상기 비디오 프레임 시퀀스의 비디오 프레임들간의 호모그래피 추정(homographic estimation)을 수행하는 단계 - 상기 호모그래피 추정은 식별된 객체 특징들에 적어도 부분적으로 기초하고, 상기 비디오 프레임 시퀀스의 각각의 쌍의 이웃하는 비디오 프레임들 사이의 추정된 호모그래피들을 사용하여 정의된 카메라 포즈들의 시퀀스에 의해 형성된 원래의 카메라 경로를 결정함 -;
평활화된 비디오 프레임 시퀀스를 발생시키기 위해 상기 수정된 비디오 프레임 시퀀스에 적응적 경로 평활화를 적용하는 단계 - 상기 적응적 경로 평활화는 목적 함수를 최소화함으로써 주어진 원래의 카메라 경로에서 평활화된 카메라 경로를 결정하는 단계를 포함하고, 상기 목적 함수는 상기 평활화된 카메라 경로를 상기 원래의 카메라 경로에 가깝도록 제약하는 경향이 있는 데이터 항, 상기 평활화된 카메라 경로를 안정화시키는 평활화 항 및 상기 평활화 항에 연관되는, 카메라 경로 불연속을 유지하는 경향이 있는 적응적 가중치를 포함하고, 상기 적응적 가중치는 상기 비디오 프레임 시퀀스의 개별 비디오 프레임들 간의 카메라 포즈들 사이의 변화들의 측정을 제공하는 함수 및 호모그래피 기반 위치 맞춤 후의 두 비디오 프레임들 사이의 호모그래피 피팅 오차를 계산하는 함수에 적어도 부분적으로 기초함 -
를 포함하는, 방법. - 제15항에 있어서,
집성화된 비디오 부분을 생성하기 위해 상기 적응적 경로 평활화 후의 상기 비디오 프레임 시퀀스들을 집성하는 단계; 및
상기 집성화된 비디오 부분을 평활화하기 위해 후처리 필터링을 적용하는 단계
를 더 포함하는, 방법. - 삭제
- 제15항에 있어서,
상기 비디오 프레임 시퀀스의 상기 개별 비디오 프레임들에서의 상기 어파인 객체 특징들은 상기 개별 비디오 프레임들에서의 점들 또는 에지들을 포함한 것인, 방법. - 제15항에 있어서,
상기 변화들 중 적어도 일부분은 상기 비디오 부분에서의 패닝, 회전, 및 장면 전환 중 적어도 하나에 대응하는 것인, 방법. - 제15항에 있어서,
상기 호모그래피 추정을 수행하는 단계는 상기 비디오 프레임 시퀀스의 2 개의 연속적인 비디오 프레임들간의 호모그래피 추정을 수행하는 단계를 더 포함한 것인, 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/079852 WO2015010244A1 (en) | 2013-07-23 | 2013-07-23 | Adaptive path smoothing for video stabilization |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160034971A KR20160034971A (ko) | 2016-03-30 |
KR102115066B1 true KR102115066B1 (ko) | 2020-06-05 |
Family
ID=52392566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167004228A KR102115066B1 (ko) | 2013-07-23 | 2013-07-23 | 비디오 안정화를 위한 적응적 경로 평활화 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9697587B2 (ko) |
EP (1) | EP3025491B1 (ko) |
KR (1) | KR102115066B1 (ko) |
CN (2) | CN105409196B (ko) |
ES (1) | ES2700506T3 (ko) |
WO (1) | WO2015010244A1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9953400B2 (en) * | 2013-07-23 | 2018-04-24 | Microsoft Technology Licensing, Llc | Adaptive path smoothing for video stabilization |
JP6374228B2 (ja) * | 2014-06-11 | 2018-08-15 | ソニーセミコンダクタソリューションズ株式会社 | 画像処理装置、画像処理方法、およびプログラム |
US10708571B2 (en) * | 2015-06-29 | 2020-07-07 | Microsoft Technology Licensing, Llc | Video frame processing |
US10602153B2 (en) | 2015-09-11 | 2020-03-24 | Facebook, Inc. | Ultra-high video compression |
US10499070B2 (en) | 2015-09-11 | 2019-12-03 | Facebook, Inc. | Key frame placement for distributed video encoding |
US10063872B2 (en) | 2015-09-11 | 2018-08-28 | Facebook, Inc. | Segment based encoding of video |
US10341561B2 (en) * | 2015-09-11 | 2019-07-02 | Facebook, Inc. | Distributed image stabilization |
US10375156B2 (en) | 2015-09-11 | 2019-08-06 | Facebook, Inc. | Using worker nodes in a distributed video encoding system |
US10602157B2 (en) | 2015-09-11 | 2020-03-24 | Facebook, Inc. | Variable bitrate control for distributed video encoding |
US10506235B2 (en) | 2015-09-11 | 2019-12-10 | Facebook, Inc. | Distributed control of video encoding speeds |
WO2017102026A1 (en) * | 2015-12-18 | 2017-06-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Immersive video with haptic feedback |
CN106101535B (zh) * | 2016-06-21 | 2019-02-19 | 北京理工大学 | 一种基于局部及整体运动差异补偿的视频稳定方法 |
KR101851896B1 (ko) * | 2017-05-10 | 2018-06-08 | 중앙대학교 산학협력단 | 파티클 기반 특징점을 이용한 비디오 안정화 방법 및 그 장치 |
CN108881668A (zh) * | 2017-06-02 | 2018-11-23 | 北京旷视科技有限公司 | 视频增稳方法、装置、系统和计算机可读介质 |
US10740431B2 (en) * | 2017-11-13 | 2020-08-11 | Samsung Electronics Co., Ltd | Apparatus and method of five dimensional (5D) video stabilization with camera and gyroscope fusion |
US10594940B1 (en) * | 2018-01-12 | 2020-03-17 | Vulcan Inc. | Reduction of temporal and spatial jitter in high-precision motion quantification systems |
US11044404B1 (en) | 2018-11-28 | 2021-06-22 | Vulcan Inc. | High-precision detection of homogeneous object activity in a sequence of images |
US10872400B1 (en) | 2018-11-28 | 2020-12-22 | Vulcan Inc. | Spectral selection and transformation of image frames |
CN110704681B (zh) | 2019-09-26 | 2023-03-24 | 三星电子(中国)研发中心 | 一种生成视频的方法及系统 |
KR20210101078A (ko) | 2020-02-07 | 2021-08-18 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 영상 처리 방법 |
CN113744277B (zh) * | 2020-05-29 | 2024-07-02 | 广州汽车集团股份有限公司 | 一种基于局部路径优化的视频去抖方法及系统 |
CN112188283B (zh) | 2020-09-30 | 2022-11-15 | 北京字节跳动网络技术有限公司 | 裁剪视频的方法、装置、设备以及存储介质 |
CN115209030B (zh) * | 2021-04-08 | 2024-02-27 | 北京字跳网络技术有限公司 | 视频防抖处理方法、装置、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008541662A (ja) | 2005-05-17 | 2008-11-20 | イーストマン コダック カンパニー | 二重経路画像シーケンス安定化 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6310857B1 (en) | 1997-06-16 | 2001-10-30 | At&T Corp. | Method and apparatus for smoothing and multiplexing video data flows |
US7221776B2 (en) * | 2001-10-31 | 2007-05-22 | Arcsoft, Inc. | Video stabilizer |
US7474724B1 (en) | 2004-10-13 | 2009-01-06 | Cirrus Logic, Inc. | Method and system for video-synchronous audio clock generation from an asynchronously sampled video signal |
US9083781B2 (en) * | 2004-11-15 | 2015-07-14 | Bascule Development Ag Llc | Portable image-capturing device with embedded projector |
US7558405B2 (en) * | 2005-06-30 | 2009-07-07 | Nokia Corporation | Motion filtering for video stabilization |
CN100530239C (zh) | 2007-01-25 | 2009-08-19 | 复旦大学 | 基于特征匹配与跟踪的视频稳定方法 |
US7636789B2 (en) * | 2007-11-27 | 2009-12-22 | Microsoft Corporation | Rate-controllable peer-to-peer data stream routing |
TWI381719B (zh) | 2008-02-18 | 2013-01-01 | Univ Nat Taiwan | 穩定全幅式視訊之方法 |
CN101557516B (zh) * | 2008-04-09 | 2011-04-06 | 北京中创信测科技股份有限公司 | 视频质量评估方法及装置 |
US20100165123A1 (en) * | 2008-12-29 | 2010-07-01 | Microsoft Corporation | Data-Driven Video Stabilization |
US8270752B2 (en) * | 2009-03-17 | 2012-09-18 | Mitsubishi Electric Research Laboratories, Inc. | Depth reconstruction filter for depth coding videos |
US8896715B2 (en) * | 2010-02-11 | 2014-11-25 | Microsoft Corporation | Generic platform video image stabilization |
EP2403267A3 (en) * | 2010-07-02 | 2012-12-26 | Harman Becker Automotive Systems GmbH | Media content playback |
KR101737087B1 (ko) * | 2010-11-12 | 2017-05-17 | 삼성전자주식회사 | 카메라 시선 방향 보상을 통한 비디오 안정화 방법 및 장치 |
US9041819B2 (en) | 2011-11-17 | 2015-05-26 | Apple Inc. | Method for stabilizing a digital video |
CN103051981B (zh) * | 2012-11-16 | 2015-04-08 | 北京邮电大学 | 用于视频多跳传输的自适应帧长计算方法 |
-
2013
- 2013-07-23 KR KR1020167004228A patent/KR102115066B1/ko active IP Right Grant
- 2013-07-23 US US14/904,944 patent/US9697587B2/en active Active
- 2013-07-23 WO PCT/CN2013/079852 patent/WO2015010244A1/en active Application Filing
- 2013-07-23 CN CN201380078364.5A patent/CN105409196B/zh active Active
- 2013-07-23 CN CN201811364863.1A patent/CN109640138B/zh active Active
- 2013-07-23 EP EP13889978.6A patent/EP3025491B1/en active Active
- 2013-07-23 ES ES13889978T patent/ES2700506T3/es active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008541662A (ja) | 2005-05-17 | 2008-11-20 | イーストマン コダック カンパニー | 二重経路画像シーケンス安定化 |
Non-Patent Citations (1)
Title |
---|
Matthias Grundmann ET AL:"Auto-directed video stabilization with robust L1 optimal camera paths", CVPR 2011, 20-25 June 2011(2011.06.20.)* |
Also Published As
Publication number | Publication date |
---|---|
ES2700506T3 (es) | 2019-02-18 |
CN109640138B (zh) | 2021-08-24 |
KR20160034971A (ko) | 2016-03-30 |
US20160140695A1 (en) | 2016-05-19 |
EP3025491A1 (en) | 2016-06-01 |
CN109640138A (zh) | 2019-04-16 |
EP3025491B1 (en) | 2018-09-05 |
WO2015010244A1 (en) | 2015-01-29 |
CN105409196A (zh) | 2016-03-16 |
EP3025491A4 (en) | 2016-08-03 |
CN105409196B (zh) | 2018-11-30 |
US9697587B2 (en) | 2017-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102115066B1 (ko) | 비디오 안정화를 위한 적응적 경로 평활화 | |
US9953400B2 (en) | Adaptive path smoothing for video stabilization | |
US20190370936A1 (en) | High Resolution Style Transfer | |
US9076205B2 (en) | Edge direction and curve based image de-blurring | |
US9852353B2 (en) | Structure aware image denoising and noise variance estimation | |
US9123138B2 (en) | Adaptive patch-based image upscaling | |
EP2164040B1 (en) | System and method for high quality image and video upscaling | |
US9984440B2 (en) | Iterative patch-based image upscaling | |
US9224194B2 (en) | Joint video deblurring and stabilization | |
WO2019210546A1 (zh) | 一种数据处理方法及计算设备 | |
US8879835B2 (en) | Fast adaptive edge-aware matting | |
US10445926B2 (en) | Light path correlation in digital image rendering of a digital scene | |
CN112967381B (zh) | 三维重建方法、设备和介质 | |
KR20130115341A (ko) | 제스쳐 인식 메커니즘을 제공하는 방법 및 장치 | |
KR20230107224A (ko) | 광학 흐름 추정을 위한 폐색 마스킹 및 지도 학습 | |
Greisen et al. | Algorithm and VLSI architecture for real-time 1080p60 video retargeting | |
CN106651790B (zh) | 图像去模糊的方法、装置和设备 | |
US10785484B2 (en) | Motion vector calculation method, information processing apparatus, recording medium recording motion vector calculation program | |
CN116341630A (zh) | 神经网络处理 | |
KR101620928B1 (ko) | 우선순위 주소 배분과 이동창 기법을 이용한 얼굴검출 시스템 | |
US20230326044A1 (en) | Splatting-based Digital Image Synthesis | |
JP2018084997A (ja) | 画像処理装置、画像処理方法 | |
CN118134944A (zh) | 图像处理方法、装置、终端设备及存储介质 | |
CN115690176A (zh) | 图像处理方法、装置、设备及介质 | |
CN115689862A (zh) | 视频处理方法、装置、电子设备及非暂时性可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |