KR102003012B1 - 제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법 - Google Patents

제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법 Download PDF

Info

Publication number
KR102003012B1
KR102003012B1 KR1020157018261A KR20157018261A KR102003012B1 KR 102003012 B1 KR102003012 B1 KR 102003012B1 KR 1020157018261 A KR1020157018261 A KR 1020157018261A KR 20157018261 A KR20157018261 A KR 20157018261A KR 102003012 B1 KR102003012 B1 KR 102003012B1
Authority
KR
South Korea
Prior art keywords
camera
image frames
smoothed
user
data
Prior art date
Application number
KR1020157018261A
Other languages
English (en)
Other versions
KR20150095782A (ko
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 KR20150095782A publication Critical patent/KR20150095782A/ko
Application granted granted Critical
Publication of KR102003012B1 publication Critical patent/KR102003012B1/ko

Links

Images

Classifications

    • H04N5/23267
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/683Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/689Motion occurring during a rolling shutter mode
    • H04N5/23258
    • H04N5/2329
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Studio Devices (AREA)

Abstract

제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법이 제공된다. 관련 타임 스탬프를 구비한 이미지 프레임들의 세트 및 관련 타임 스탬프를 구비한 카메라 방향 데이터의 세트를 포함하는 디지털 비디오 데이터가 제공된다. 카메라 방향 데이터의 스무싱된 세트는 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배치된 스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양을 최소화하면서 연속하는 이미지 프레임들 사이의 회전률을 최소화시키는 것에 의해 생성될 수 있다.

Description

제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법{SYSTEMS AND METHODS FOR DIGITAL VIDEO STABILIZATION VIA CONSTRAINT-BASED ROTATION SMOOTHING}
본 발명은 신호 프로세싱에 관한 것으로, 좀 더 구체적으로 이미지 및 비디오 프로세싱 시스템 및 방법에 관한 것이다.
비디오를 촬영할 수 있는 비디오 스틸 카메라가 최근 몇년간 보편화되고 있다. 이러한 소비자 장치의 해상도 및 이미지 품질은 일부 설정에서 디지털 일안 반사직 카메라(DSLR)에 필적할 지점까지 향상된 반면, 그들의 비디오 품질은 아직 필름 카메라의 품질보다 상당히 나쁠 수 있다. 품질에 있어서 이러한 차이의 원인은 두 부분으로 이루어질 수 있다. 먼저, 필름 카메라에 비하여, 셀룰러 폰은 상당히 가벼울 수 있다. 따라서, 그러한 장치를 통한 휴대용 비디오 촬영에는 더 많은 카메라 흔들림이 존재할 수 있다. 두 번째로, 셀룰러 폰 카메라들은 롤링 셔터(RS)를 사용하는 센서들을 가질 수 있다. RS 카메라에서, 각 이미지 열(row)은 상당히 다른 시간에 노출될 수 있으며, 줄어들지 않은 카메라 움직임과 결합되어 출력 비디오에 "요동(wobble)"을 가져올 수 있다.
비디오 안정화는 비디오 카메라 흔들림에 의해 생성된 고주파 프레임-투-프레임 지터를 감소시키기 위하여 사용되는 기술의 패밀리이다. 전문가용 카메라에서, 기계적 이미지 안정화(MIS) 시스템이 통상 사용된다. 예컨대, MIS 시스템에서, 오퍼레이터는 오퍼레이터의 신체 움직임으로부터 카메라의 움직임을 분리하기 위하여 하니스(harness)를 착용할 수 있다. 다른 MIS 시스템은 카메라 본체 자체보다는 카메라의 광학기기를 안정화시킨다. 이 시스템은 작은 피치나 요(yaw) 움직임을 보상하기 위하여 렌즈 또는 센서를 움직일 수 있다. 이들 기술은 실시간으로 작용하며, 카메라 상의 계산을 필요로 하지 않는다. 그러나, 그들은 가격 및 크기 때문에 모바일 장치 및 값싼 카메라에는 적절하지 않다. 디지털 비디오 안정화 시스템은 촬영후 비디오(videos post-capture)를 안정화하기 위한 특징 추적기(feature tracker)를 채용할 수 있다. 그러나, 이들 시스템은 노이즈(예컨대, 빠르게 움직이는 우위 객체)에 민감할 수 있으며, 추적을 위한 구별된 특징들을 요구한다. 결과적으로, 특징 추적에 기초한 디지털 안정화는 특별히 불리한 조명 조건이나 지나치게 우위의 움직임에서 종종 고장난다. 또한, 프레임들을 가로질러 시각적 단서를 추출하고 매칭하는 것은 계산에 비용이 많이 들 수 있다. 게다가, 비용은 비디오의 해상도에 따라 증가한다. 일부 예에서, 실시간으로 비디오 안정화를 수행하는 것은 매우 비용이 많이 들 수 있다. 따라서, 그러한 접근법은 현재 디지털 카메라에 거의 채용되지 않는다. 대신, 제조자들은 하이-엔드 DSLR에 대한 좀 더 확실한(그리고 비싼) 기계적 안정화 방안을 선택할 수 있다.
본 발명은 신호 프로세싱에 관한 것으로, 좀 더 구체적으로 이미지 및 비디오 프로세싱 시스템 및 방법에 관한 것이다.
본 발명에 따른 실시예들은 방법, 저장매체 및 시스템에 관한 첨부된 특허청구범위에 개시되며, 여기서 한 청구범위 카테고리, 예컨대 방법에 언급된 임의의 특징은 다른 청구범위 카테고리, 예컨대, 시스템에도 역시 청구될 수 있다.
디지털 비디오를 안정화하기 위하여, 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독가능한 매체는 일 실시예로 관련 타입 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터 세트를 포함하는 디지털 비디오 데이터를 제공할 수 있다. 카메라 방향 데이터의 스무싱된 세트는 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배치된 스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양을 최소화하면서 연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것에 의해 생성될 수 있다.
일 실시예로, 스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 영(0)으로 최소화될 수 있다.
일 실시예로, 스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 임계값 아래로 최소화될 수 있다.
일 실시예로, 보정된 이미지 프레임들의 세트를 형성하기 위하여 이미지 프레임들의 세트에 대한 관련 타임 스탬프들 및 카메라 방향 데이터의 스무싱된 세트에 기초하여 이미지 프레임들의 세트가 워핑(warping)될 수 있다.
일 실시예로, 보정된 이미지 프레임들의 세트를 형성하기 위하여 이미지 프레임들의 세트에 대한 관련 타임 스탬프들 및 카메라 방향 데이터의 스무싱된 세트에 기초한 이미지 프레임들의 세트의 워핑(warping)은 개별 이미지 프레임을 복수의 서브섹션으로 분할하는 것을 포함할 수 있다. 각 서브섹션은 관련 타임 스탬프 및 카메라 방향을 가질 수 있다. 보정된 이미지 프레임들의 세트를 형성하기 위하여 이미지 프레임들의 세트에 대한 관련 타임 스탬프들 및 카메라 방향 데이터의 스무싱된 세트에 기초한 이미지 프레임들의 세트의 워핑(warping)은 개별 보정된 이미지 프레임을 형성하기 위하여 관련 타임 스탬프 및 카메라 방향에 기초하여 각 서브섹션을 재배치하는 것을 포함할 수 있다.
일 실시예로, 스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 임계값 아래로 최소화될 수 있다.
일 실시예로, 보정된 이미지 프레임들의 세트는 비디오로 디스플레이될 수 있다.
일 실시예로, 임계값 이하의 빈 영역의 양은 복구될 수 있다.
일 실시예로, 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 휴대용 장치의 자이로스코프로부터 제공될 수 있다.
일 실시예로, 이미지 프레임들의 세트는 휴대용 기기의 카메라로부터 제공될 수 있다.
일 실시예로, 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 모바일 폰, 디지털 카메라를 포함하는 휴대용 장치의 자이로스코프로부터 제공될 수 있다. 이미지 프레임들의 세트는 디지털 카메라로부터 제공될 수 있다.
일 실시예로, 카메라 방향 데이터의 스무싱된 세트의 생성은 기울기 하강(gradiment descent)에 기초한 반복 최적화를 포함할 수 있다.
일 실시예로, 카메라 방향 데이터의 스무싱된 세트의 생성은 가우시안 필터(Gaussian filter)에 기초한 필터링(filtering)을 포함할 수 있다.
일 실시예로, 카메라 방향 데이터의 스무싱된 세트의 생성은 시간 도함수(temporal derivative)에 기초한 필터링을 포함할 수 있다.
일 실시예로, 카메라 방향 데이터의 세트는 임의의 병진운동 없는 회전을 포함할 수 있다.
일 실시예로, 카메라 방향 데이터의 세트는 회전 및 병진운동을 모두 구비한 벡터를 포함할 수 있다.
일 실시예로, 카메라 방향 데이터의 스무싱된 세트를 생성하는 단계는 소셜 네트워킹 시스템에 의해 수행될 수 있다.
일 실시예로, 관련 타임 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 소셜 네트워킹 시스템의 사용자에 의해 소셜 네트워킹 시스템으로 업로드될 수 있다.
본 발명의 다른 실시예로, 하나 이상의 컴퓨터-판독가능한 비-일시적 저장매체는 본 발명 또는 상술한 실시예들 중 임의의 것에 따른 방법을 수행하도록 실행시 동작가능한 소프트웨어를 포함한다.
본 발명의 다른 실시예로, 시스템은 하나 이상의 프로세서; 및 프로세서에 결합되며 프로세서에 의해 실행가능한 명령어들을 포함하는 메모리를 포함하며, 상기 프로세서는 명령어들을 실행시 본 발명 또는 상술한 실시예들 중 임의의 것에 따른 방법을 수행하도록 동작가능하다.
본 발명의 많은 다른 특징들 및 실시예들이 첨부되는 도면 및 이하의 상세한 설명으로부터 명확해질 것이다.
본 명세서의 내용 중에 포함되어 있음
도 1은 실시예에 따른 예시적인 핀홀 카메라 모델을 도시한다.
도 2는 실시예에 따른 두 개의 예시적인 카메라 방향 및 그에 대응하는 이미지 평면의 묘사를 도시한다.
도 3은 실시예에 따라, RS 카메라에 의해 촬영된 예시적인 뒤틀린 이미지 및 이미지를 보정하기 위한 변환의 묘사를 도시한다.
도 4는 실시예에 따른 예시적인 디지털 비디오 안정화 모듈을 도시한다.
도 5는 실시예에 따른 입력 데이터 및 스무싱 후의 결과 데이터의 예의 그래프를 도시한다.
도 6은 실시예에 따른 제약-기반 스무싱을 위한 예시적인 방법을 도시한다.
도 7은 실시예에 따라, 소셜 네트워킹 시스템 내의 안정화된 디지털 비디오를 생성하기 위하여 디지털 비디오로부터 이미지 프레임의 세트를 변경하기 위한 시스템의 예시적인 네트워크도를 도시한다.
도 8은 실시예에 따라, 본 명세서에 개시된 실시예들 중 하나 이상을 구현하기 위하여 사용될 수 있는 예시적인 컴퓨터 시스템을 도시한다.
도면은 오직 설명을 위하여 본 발명의 실시예들을 도시하며, 유사한 요소를 식별하기 위하여 유사한 참조번호를 사용한다 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면, 이하의 논의로부터 본 명세서에 개시된 발명의 범위를 벗어나지 않는 범위 내에서 본 명세서에 개시된 구조 및 방법의 대안 실시예들이 채용될 수 있음을 용이하게 인식할 수 있을 것이다.
자이로스코프를 사용한 디지털 비디오 안정화 및 롤링 셔터 보정
롤링 셔터 보정은 프레임 내 카메라 움직임에 의해 생성된 이미지 뒤틀림을 제거하기 위한 기술이다. 하이-엔드(high-end) 카메라는 글로벌 셔터(GS)를 가지는 전하 결합 소자(CCD) 센서를 사용한다. 많은 DSLR들을 포함하는 GS 카메라에서, CCD 센서 상의 모든 픽셀들은 동시에 판독되고 리셋된다. 따라서 모든 픽셀들은 동일 시간 간격 동안 빛을 수집한다. 그러므로, 노출 동안 카메라 움직임은 이러한 장치들 상에 일정량의 이미지 번짐을 가져온다. 반대로, 로우-엔드(low-end) 카메라들은 전형적으로 상보성 금속산화막 반도체(CMOS) 센서를 사용한다. 구체적으로, 이러한 센서들은 이미지 열들이 순차적으로 판독되고 리셋되는 롤링 셔터를 채용한다. 이러한 접근은 CCD 센서에 비하여 더 적은 회로를 필요로 하며 CMOS 센서를 더 낮은 비용을 제조할 수 있게 한다. 그런 이유로, CMOS 센서는 셀룰러 폰, 뮤직 플레이어 및 일부 로우-엔드 캠코더에 자주 사용된다. 그러나, 순차적인 판독은 각 열이 조금 다른 시간 윈도우 동안 노출되는 것을 의미한다. 결과적으로, 열(row) 판독 동안 카메라 움직임은 뒤틀린 이미지를 생성할 것이다. 또한 빠르게 움직이는 객체들은 왜곡되게 나타날 것이다.
RS 카메라에서의 이미지 판독은 통상 밀리초 범위에 있다. 따라서, RS 왜곡은 주로 고주파 카메라 움직임에 의해 야기된다. 따라서 카메라를 안정화하기 위하여 MIS 시스템에 사용될 수 있다. 이러한 접근법은 롤링 셔터 뒤틀림을 제거하는 반면, 실제로 MIS 시스템의 가격 범위 및 크기 때문에 RS 카메라에 적합하지 않게 된다. 일부 디지털 롤링 셔터 보정 기술이 단일 이미지의 RS 아티팩트(artifact)를 보정할 수 있지만, 사용자 입력을 요구한다. 반대로, 본 발명의 일부 실시예들은 사용자 입력을 필요로 하지 않고 단일 이미지들에 대한 RS 아티팩트를 보정할 수 있다.
비디오에 대하여, 비디오로부터 카메라 움직임을 추정하기 위하여 특정 추적을 사용하여 프레임 시퀀스 내의 RS를 보정하는 것은 문제를 나타낼 수 있다. 카메라 움직임이 RS 노출 동안 알려되면, 이는 프레임을 보정하기 위하여 사용될 수 있다. 이러한 접근법은 특징 추적에 의존하기 때문에 비디오 안정화의 경우에 이전에 논의된 바와 동일한 단점을 가진다.
디지털 비디오 안정화 기술은 입력 비디오 프레임의 크로핑(cropping) 또는 주밍(zooming)을 포함할 수 있다. 이는 개별 프레임이 손떨림에 의해 도입된 원하지 않은 왜곡에 대응하기 위하여 변환, 회전, 휘어지게 할 수 있다. 크로핑의 양은 이 왜곡을 제거하기 위하여 얼마나 많은 자유(또는 "재량권(wriggle room)")가 이용가능한지를 결정한다. 예컨대, 프레임이 너무 많이 병진된다면, 빈 영역(필셀 데이터를 가지지 않는 영역)이 보일 수 있다. 본 발명의 일부 실시예들은 손떨림에 대응하는 것에 의해 카메라 움직임을 부드럽게 할 뿐 아니라 빈 영역이 보여지는 것을 방지하면서 그렇게 할 수 있다. 크로핑 또는 주밍 외에 안정화를 위한 자유를 제공하는 다른 방법이 또한 구현될 수 있음이 자명하다. 예컨대, 복원 기술(inpainting techniques)이 안정화에 의해 도입된 빈 영역을 채우기 위하여 구현될 수 있다. 복원은 크로핑 또는 주밍을 대신하거나 크로핑 또는 주밍에 추가로 사용될 수 있다. 예컨대, 일 실시예로, (복원, 주밍, 크로핑 등에 의해) 만족 여부를 결정하는데, 즉 주어진 왜곡이 모든 픽셀 세트를 가지는 프레임을 가져오는지 여부를 결정하기 위한 함수가 구현될 수 있다.
빈-영역 방지 제한을 만족하는 부드러운 카메라 회전을 계산하는 것에 의하여 비디오를 디지털적으로 안정화하기 위한 시스템 및 방법에 제공된다. 이는 주어진 크롭 또는 줌 인자에 대하여 최대한 부드러운 카메라 회전이 생산될 수 있게 할 수 있다.
디지털 비디오 안정화 프로세스는 예를 들면, 모바일폰, 태블릿, 시계, 착용가능한 기어 등과 같이 카메라 또는 카메라를 포함하는 장치에 의해 촬영되고 있는 비디오에서 시작될 수 있다. 비디오는 촬영된 다수의 연속적인 이미지 프레임들을 포함할 수 있다. 비디오는 장치의 크기 및 무게에 의해 흔들릴 수 있다. 카메라의 센서에 의해 사용되는 롤링 셔터는 출력 이미지 프레임에 뒤틀림을 생성할 수 있다. 비디오 촬영 동안 카메라의 움직임(예컨대, 회전)을 측정하기 위하여 자이로스코프가 사용될 수 있다. 측정된 카메라 움직임은 비디오를 안정화하고 안정화된 비디오가 보정된 이미지를 구비한 출력 프레임들을 가지도록 롤링 셔터를 조정하는데 사용될 수 있다.
본 명세서의 기술은 RS 카메라의 비디오 품질을 향상시킬 수 있다. 일 실시예로, 마이크로 전기기계 시스템(MEMS) 자이로스코프가 카메라의 회전을 측정하기 위하여 구현된다. 다른 자이로스코프 및 움직임 감지 장치들이 또한 구현될 수 있다. 자이로스코프 측정은 비디오 안정화(예컨대, 프레임 간 움직임 보상) 및 롤링 셔터 보정(예컨대, 프레임 내 움직임 보상)을 수행하기 위하여 사용될 수 있다. 이 접근법은 계산적으로 값싸고 확실할 수 있으며, 이는 이 접근법이 특히 모바일 플랫폼 상의 실시간 구현에 적절하게 한다.
회전 카메라 및 롤링 셔터의 통합된 모델에 기초한 시스템 및 방법은 롤링 셔터 보정과 비디오 안정화를 동시에 수행하는 워프(worp)를 계산하기 위한 모델을 이용할 수 있다. 자이로스코프 및 카메라를 자동으로 계측하는 최적화 기술이 제공될 수 있다. 이는 자이로스코프 이동 및 지연과 같은 비공지된 파라미터뿐 아니라 단일 비디오 및 자이로스코프 촬영으로부터 카메라의 초점 거리 및 롤링 셔터 속도의 복구를 허용할 수 있다. 결과적으로, 자이로스코프 및 카메라 하드웨어의 임의의 조합은 특정 실험실 설정을 필요로하지 않고 계측될 수 있다. 카메라를 포함하는 장치는 또한 자이로스코프와 같은 움직임 감지 장치를 포함할 수 있다. 예컨대, 많은 스마트폰이 카메라 및 가령 자이로스코프 및 가속도계와 같은 움직임 감지 장치를 구비한다. 이런 방식으로, 실시간 비디오 안정화 및 롤링 셔터 보정이 특정 추적기 또는 MIS 시스템의 사용을 필요로 하지 않고 제공될 수 있다. 게다가, 값싼 MEMS 자이로스코프가 카메라 움직임을 직접 측정하기 위하여 구현될 수 있다. 관성 측정 유닛(IMUs)이 이미지 번짐 방지(de-blurring) 및 KLT 특징 추적기를 보조하기 위하여 사용될 수 있다.
자이로스코프와 같은 움직임 감지 장치를 사용한 카메라 움직임의 측정은 높은 계산 효율성을 가지고 디지털 비디오 안정화 및 RS 조정이 수행될 수 있게 한다. 이 접근법은 비디오의 컨텐츠가 움직임 추정에 사용되지 않기 때문에, 열악한 조명 환경이나 실질적인 우위 움직임 하에서도 강력할 수 있다. 게다가, 상술한 바와 같이, 많은 카메라-이용가능 모바일 폰에는 이미 자이로스코프 또는 다른 움직임 감지 장치가 설치된다. MIS 시스템에 비하여, MEMS 자이로스코프는 상당히 값싸며, 좀 더 다기능이고, 적은 크기일 수 있다.
일 실시예로, 비디오 안정화는 카메라 움직임 추정, 움직임 스무싱(smoothing) 및 이미지 워핑(warping)의 3단계로 진행될 수 있다. 롤링 셔터 보정은 실제 카메라 움직임이 스무싱된 움직임이 아닌 워핑 계산을 위해 사용될 수 있다는 점을 제외하면 유사한 방식으로 진행될 수 있다. 본 명세서에서 좀 더 상세히 논의될 바와 같이, 비디오 안정화 및 롤링 셔터 보정은 모두 통합된 프레임워크 하에서 하나의 워핑 계산으로 수행될 수 있다.
일 실시예로, 카메라 움직임은 회전에 대해서만 모델링될 수 있다. 다른 실시예로, 회전에 더하여 또는 회전을 대신하여 병진운동이 측정될 수 있음이 자명할 것이다. 일부 예에서, 병진운동은 예컨대, IMU를 사용하여 정확하게 측정하기가 어려울 수 있다. 게다가, 가속도계 데이터는 병진운동을 획득하기 위하여 두 배로 적분될 것이 요구될 수 있다. 반대로, 자이로스코프는 회전률을 측정한다. 따라서, 자이로스코프 데이터는 카메라의 방향을 획득하기 위하여 한 번의 적분만이 요구될 수 있다. 결과적으로, 병진운동 측정은 일부 예예서, 방향 측정보다 상당히 덜 정확할 수 있다. 또한, 병진운동 측정은 서로 다른 양만큼 움직이는 서로 다른 깊이의 객체에 의해 복잡해질 수 있다. 일 실시예로, 움직임으로부터 스테레오 또는 특징-기반 구조(SfM) 알고리즘이 깊이 정보를 획득하기 위하여 구현될 수 있다. 일부 실시예로 병진운동을 제거하기 위하여 프레임을 워핑하는 것이 수행될 수 있으나, 시차 및 맞물림에 의해 복잡해질 수 있다.
시스템에서 카메라 병진운동을 모델링하는 것은 문제를 나타낼 수 있다. 예컨대, 최적화기(optimizer)는 특징 추적기로부터 병진운동을 재구성하고자 하는 동안 로컬 최소화에 빠질 수 있다. 알고리즘은 카메라가 완전이 평평한 장면(예컨대, 일정한 깊이)을 이미징하고 있다고 추정할 수 있다. 따라서 병진운동 재구성은 비디오 내의 모델링되지 않은 시차 때문에 복잡해질 수 있다.
회전의 관점에서만 또는 주로 회전의 관점에서 카메라 회전을 모델링하는 실시예들은 병진운동에 직면한 문제들을 최소화할 수 있다. 병진운동은 깊이가 증가함에 따라 빠르게 감소하고 객체들은 통상 병진 카메라 지터가 이미지에 눈에 띨만한 움직임을 생성하지 않을 정도로 충분히 렌즈로부터 떨어져 있기 때문에, 카메라 떨림 및 롤링 셔터 워핑은 주로 회전으로부터 발생한다.
예시적인 카메라 모델
일 실시예로, 핀홀 카메라에 기초한 회전 롤링 셔터 카메라 모델이 제공된다. 도 1은 실시예에 따른 예시적인 핀홀 카메라 모델(101)을 도시한다. 장면에서 카메라 중심(c)으로부터 포인트 x로의 선은 포인트 x에서 이미지 평면을 가로지를 것이다. 따라서, 이미지 평면으로의 실제 세계의 투영은 카메라의 중심(c), 초점 길이(f) 및 이미지 평면에서 카메라의 축 위치(Ox, Oy)에 의존한다. 핀홀 카메라에서, 동차 좌표계에서 이미지 포인트 x와 3D 세계 좌표계에서 대응 포인트 X 사이의 관계는 예시적인 식 (1)에 의해 특정될 수 있다.
x = KXXK -1x (1)
여기서, λ는 알려지지 않은 스케일링 인자이며, K는 원래 카메라이다. K -1은 예시적인 식 (2)에 의해 특정될 수 있다
Figure 112015066036944-pct00001
(2)
(Ox, Oy)는 이미지 평면에서 카메라 축의 원점이며, f는 초점 길이이다. 카메라의 초점 길이는 알려지지 않으며, 복원될 수 있다. 카메라는 정사각 픽셀을 가지는 것으로 추정될 수 있으며, 상부 대각선 엔트리가 1로 설정된다. 그러나, 다른 실시예들은 이 모델을 정사각이 아닌 픽셀들을 고려하거나 다른 광학 왜곡을 고려하기 위하여 확장할 수 있다.
워핑(worping)은 고주파수 카메라 회전으로부터 발생할 수 있다. 예컨대, 셔터가 위부터 아래까지 롤링하는 동안 고주파 카메라 회전은 출력 이미지에 워핑을 나타내게 한다. 이 워핑된 이미지는 수학적으로 모델링될 수 있다.
실제 원점이 카메라 원점으로 설정될 수 있다. 다음으로 카메라 움직임이 시간 t에서 방향 R(t)의 관점에서 설명될 것이다. 따라서, 임의의 장면 포인트 X에 대하여, 시간 t에서 대응 이미지 포인트 x는 예시적인 식 (3)으로 주어질 수 있다.
x = KR(t)X (3)
회전 매트릭스 R(t) ∈ SO(3)는 카메라 각 △θ(t)에서의 변화를 합성하는 것에 의해 계산될 수 있다. 사원법(quaternion)의 구형 선형 보간법(SLERP)이 카메라 방향을 부드럽게 보간하고 짐발 락(gimbal lock)을 피하기 위하여 사용될 수 있다. 자이로스코프 샘플들 사이의 각의 변화는 오일러 각이나 회전 사원법이 작용하도록 충분히 작을 수 있다. △θ(t)는 이하의 예시적인 식 (4)에서 특정된 바와 같이 자이로스코프 측정된 회전률 ω(t)로부터 직접 획득될 수 있다.
△θ(t) = (ω(t+td)+ωd)*△t (4)
ωd는 자이로스코프 이동이며, td는 자이로스코프와 프레임 샘플 타임 스탬프 사이의 지연이다. 이 파라미터들은 그 모델에 알려지지 않은 것들이며, 또한 복구될 수 있다.
롤링 셔터가 또한 카메라 모델에 도입될 수 있다. RS 카메라에서, 각 이미지 열은 상당히 다른 시간에 노출된다. 따라서 노출 동안 카메라 회전은 이미지의 워핑을 결정할 수 있다. 롤링 셔터 노출 동안 병진 카메라 지터는 이미지 워핑에 상당한 영향을 주지 않는데 이는 객체들이 통상 렌즈로부터 떨어져 있기 때문이다. 예컨대, 셔터가 롤링하는 동안 카메라가 좌우로 흔들린다면, 출력 이미지는 도 3에도시된 바와 같이 워핑될 것이다. 포인트 x가 프레임(i)에 이미지되는 시간은 프레임이 얼마나 떨어져 있는지에 의존한다. 예시적인 식 (5)에 특정된 바와 같이 x가 시간 t(i, y)에 이미지된다고 결정될 수 있다.
t(i, y) = ti + ts * y/h, 여기서 x = (x, y, l)T (5)
y는 포인트 x에 대응하는 이미지 열이다. h는 프레임의 전체 열 수이다. ti는 i번째 프레임의 타임 스탬프이다. ts 항은 프레임에서 아래에 있을 수록, 롤링 셔터가 그 열을 가져오는데 더 오래 걸림을 나타낸다. 따라서, ts는 위에서 아래까지 일 열씩 진행하며 전체 프레임을 판독하는데 걸리는 시간이다. 마이너스 ts 값은 롤링 셔터가 아래서 위로 진행함을 가리킬 것이다. ts의 부호 및 값을 자동으로 복원하는 것이 본 명세서에 더 자세히 설명된다.
두 개의 서로 다른 카메라 방향에 대한 한 쌍의 프레임에서 이미지 포인트들 사이의 관계가 도출될 수 있다. 도 2는 실시예에 따른, 두 개의 카메라 방향의 그래픽 표현 및 대응하는 이미지 평면들을 도시한다. 그래픽 표현(201)은 두 개의 카메라 방향(202 및 203)을 포함한다. 카메라 방향 202는 이미지 평면 i를 포함한다. 카메라 방향 203은 이미지 평면 j를 포함한다. 장면 포인트 X의 이미지가 두 프레임에 나타나며, 선(211)은 이미지 평면 i 및 j를 가로지른다. 장면 포인트 X에 대하여, 두 프레임(i 및 j)의 이미지 평면에 투영된 포인트 xi 및 xj는 각각 다음 예시적인 식 (6)에 의해 특정될 수 있다.
x i = KR(t(i, yi))Xx j = KR(t(j, yj))X (6)
이 식들이 재배열되고 X가 대체된다면, 예시적인 식 (7)에 의해 특정된 바와 같이 프레임 i 내의 모든 포인트들의 프레임 j 내의 모든 포인트들로의 맵핑이 획득될 것이다.
x j = KR(t(j, yj))R T(t(i, yi))K -1 x i (7)
두 프레임 사이의 관계가 동일한 비디오와 관련하여 설명되었지만, 다른 실시예에서, 프레임은 R(t)에 따라 회전하는 하나의 카메라로부터 R'(t)에 따라 회전하는 다른 케메라로 맵핑될 수 있다. 일 실시예로, 두 개의 카메라 중심은 원점인 것으로 추정될 수 있다. 하나의 카메라로부터 다른 것으로 포인트들을 맵핑하는 워핑 매트릭스(W)는 이하의 예시적인 식 (8)에 따라 특정될 수 있다.
W(t1, t2) = KR'(t1)R T(t2)K -1 (8)
이제 식 (7)은 이하의 예시적인 식 (9)에 따라 좀 더 간단하게 특정될 수 있다.
x j = W(t(j, yj),(t(i, yi))x i, 여기서 R'=R (9)
W는 이미지 포인트(xi 및 xj)의 이미지 열(yi 및 yj) 모두에 의존한다. 이 워핑 매트릭스는 양 프레임에서 롤링 셔터의 효과를 고려하면서 프레임 i의 포인트들을 프레임 j의 대응 포인트들로 매칭하는데 사용될 수 있다.
워핑 매트릭스의 이 공식은 롤링 셔터 보정 및 비디오 안정화를 제공한다. 부드러운 움직임 및 글로벌 셔터를 가지는 합성 카메라가 생성될 수 있다. 이 카메라의 움직임은 가우시안 저역통과 필터를 예컨대, 입력 카메라의 움직임에 적용하는 것에 의하여 계산될 수 있으며, 새로운 회전 세트(R')를 가져온다. 합성 카메라에 대한 롤링 셔터 기간(ts)은 글로벌 셔터와 같이 0으로 설정될 수 있다. 다음으로 W(ti, t(i, yi))가 현재 프레임(i)의 각 이미지 열(yi)에서 계산될 수 있으며, 워프가 그 열에 적용될 수 있다. W의 첫 번째 항은 이제 프레임 시간(ti)에만 의존한다. 이 동작은 모든 입력 프레임들을 합성 카메라 상으로 맵핑시킬 수 있으며, 결과적으로 롤링 셔터 워핑 및 비디오 흔들림을 동시에 제거한다.
특정 실시예에서, W(ti, t(i, yi))은 각 이미지 열(yi)에 대하여 계산되지 않는다. 대신, 입력 이미지는 하위분할될 수 있으며, 워프는 각 수직 하위분할에서 계산될 수 있다. 도 3은 일 실시예에 따른 워프를 보정하기 위한 예시적인 변환을 도시한다. 워핑된 입력 이미지 프레임(301)은 RF 카메라에 의해 촬영된 하위분할된 워핑된 이미지를 도시한다. 워핑은 이미지 프레임 311에서 도시된 바와 같이 각 수직 하위분할에서 계산된다. 이미지 프레임 311은 비선형 워핑의 구간 선형 근사를 나타낸다. 결과 이미지 프레임(316)에 의해 도시된 바와 같이, 다양한 수의 하위분할이 아티팩트를 제거하는데 충분할 수 있다. 예컨대, 일 실시예에서, 10개의 하위 분할이 시각적 아티팩트를 제거하는데 충분할 수 있다. 입력 이미지로부터 비선형 워프의 구간 선형 근사인 워핑된 메쉬(worped mesh)가 생성된다. 10개의 하위분할들이 임의의 시각적 RS 아티팩트를 제거하는데 충분할 수 있지만, 다른 실시예들은 서로 다른 수의 하위분할들을 포함할 수 있다. 샘플링 접근은 역보간으로 언급될 수 있다. 역보간은 정점 세이더(vertex shader)를 사용하여 그래픽 프로세싱 유닛(GPU)상에 구현하기 쉬울 수 있다. GPU의 조각 세이더는 이중선형보간법(bilinear interpolation)을 사용하여 메시-워핑된 이미지를 재샘플링을 처리할 수 있다. 실제 비디오에서 RS 워핑은 이중선형 역보간 때문에 에일리어싱 아티팩트(aliasing artifact)를 생성할만큼 충분히 강하지 않을 수 있다. 따라서, 역보간은 실제로 잘 작용할 수 있다. 글로벌 이미지 워프를 사용한 롤링 셔터 보정은 카메라 회전이 롤링 셔터 노출 동안 더 일정하거나 덜 일정한 것으로 추정할 수 있다. 선형 근사는 도 3의 이미지 프레임 306에 도시된 바와 같이 롤링 셔터를 조정하는데 실패할 수 있다.
카메라 및 자이로스코프 측정(calibration)
본 명세서에 설명된 알려지지 않은 카메라 및 자이로스코프 파라미터들을 복구하기 위한 측정 기술들이 제공된다. 측정은 자이로스코프 데이터로부터 W의 직접 계산을 가능하게 할 수 있다. 본 명세서에 설명된 모델에서 알려지지 않은 파라미터들은 카메라의 초점 길이(f), 롤링 셔터 기간(fs), 자이로스코프와 프레임 샘플 타임 스탬프 사이의 지연(td) 및 자이로스코프 이동(wd)을 포함할 수 있다.
일부 예에서, 가령 카메라 초점 길이(f)와 같은 하나 이상의 파라미터들은 제조자에 의해 특정될 수 있다. 일부 예에서, 이러한 파라미터들은 경험적으로 측정될 수 있다. 예컨대, 빠른 플래쉬 디스플레이가 롤링 셔터 기간(ts)을 측정하기 위하여 사용될 수 있다. 그러나, 이러한 기술은 부정확하며, 오류가 발생하기 쉬운 경향이 있다. 이 기술들은 또한 지루할 수 있다. 롤령 셔터의 기간은 통상 밀리세컨드 범위일 수 있다. 결과적으로, td 또는 ts에서의 작은 오정렬은 롤링 셔터 조정을 실패하게 할 수 있다.
일 실시예에서, 이러한 파라미터들은 단일 비디오 및 자이로스코프 촬영으로부터 추정될 수 있다. 예컨대, 사용자는 빌딩과 같이 고정된 객체를 겨냥하면서 가만히 서서 그리고 카메라를 흔들면서 비디오 및 자이로스코프 흔적을 기록할 있다. 클립 기간은 실시예에 따라 변할 수 있다. 일 실시예에서, 짧은 클립(예컨대, 기간이 수십초 이하)이 모든 알려지지 않은 파라미터들을 추정하는데 충분할 수 있다. 이 측정 단계는 각 카메라 및 자이로스코프 배열에 대하여 한 번만 수행될 필요가 있다.
일 실시예에서, 연속적인 비디오 프레임들에서 매칭 포인트들이 식별된다. 매칭 포인트는 예컨대, SIFT(scale invariant feature transform)를 사용하여 식별될 수 있다. 예컨대, RANSAC(random sample consensus)를 사용하여 이상점(outliers)들이 버려질 수 있다. 결과는 촬영된 비디오의 모든 이웃하는 프레임들에 대한 대응 포인트들(xi 및 xj)의 세트일 수 있다. 이 기본 값들이 주어지면, 측정은 최적화 문제로 공식화될 수 있으며, 여기서 모든 대응점들의 평균 제곱 재투영 에러(mean-squared re-projection error)가 최소화될 수 있다. 이는 이하의 예시적인 식 (1)에 특정된다.
Figure 112015066036944-pct00002
(10)
다수의 비선형 최적화기가 목적 함수를 최소화하는데 사용될 수 있다. 직접 목적 함수 계산에 의한 좌표 하강은 빠르게 수렴할 수 있으며, 일 실시예로 구현된다. 목적 함수(J)가 감소되지 않는 단계가 행해질 때마다, 단계 방향이 역전되고 대응 파라미터의 단계 크기가 감소된다. 알고리즘은 가령 타겟 정확성이 달성될 때와 같이 모든 파라미터에 대한 단계 사이즈가 소정 임계값 아래로 떨어질 때 종료할 수 있다. 수렴은 일부 예에서 빠르게 일어날 수 있다. 예컨대, 일 실시예로, 수렴은 기간이 약 10초인 측정 비디오에 대하여 2초 이하에 일어날 수 있다.
일 실시예로, 최적화는 카메라가 45°의 시야를 가지도록 초점 길이를 설정하는 것에 의하여 초기화될 수 있다. 모든 다른 파라미터는 0으로 설정될 수 있다. 이 초기 조건으로, 최적화기는 데이터 세트에 대한 정확한 솔루션으로 수렴할 수 있다. 좀 더 일반적으로 국지적 최소(예컨대, 자이로스코프와 프레임 타임 스탬프 사이의 지연이 클 때)로 들어가는 것은 타당한 파라미터 범위에 대하여 좌표 하강 알고리즘을 재시작하고 최적의 솔루션을 선택하는 것에 의해 방지될 수 있다. 정확하게 복원된 파라미터들에 대한 평균 재투영 에러는 예컨대, 약 1 픽셀일 수 있다.
모델에서 추가로 공지되지 않은 것은 카메라에 대한 자이로스코프의 상대적인 방향일 수 있다. 예컨대, 자이로스코프의 y-축에 대한 회전이 카메라의 x-축에 대한 회전에 대응할 수 있다.
자이로스코프의 방향을 발견하기 위하여, 3개의 회전축이 변경될 수 있으며, 최적화기는 각 변경에 대하여 실행될 수 있다. 목적 베스트를 최소화하는 변경이 카메라의 축 순서에 대응할 수 있다. 부정확한 변경에 대한 재투영 에러는 상당히 클 수 있다. 따라서, 이 방법은 실제로 잘 동작할 수 있다.
카메라가 수직 롤링 셔터를 가지고 있다고 추정되면, RS 모델은 열 대신 이미지 행들에 대하여 동작하도록 용이하게 변경될 수 있다. 각 경우에 대하여 최소의 재투영 에러를 발견하는 것은 카메라가 수평 또는 수직 롤링 셔터를 가지고 있는지 여부를 나타낼 수 있다.
마지막으로, 측정에 의해 달성된 결과는 측정 전후 비디오 및 자이로스코프 신호를 분석하는 것에 의해 입증될 수 있다. 연속하는 프레임 사이의 회전이 작다고 추정하면, 이미지에서의 병진운동은 이하의 예시적인 식 (11)에 특정된 바와 같이 회전으로부터 근사적으로 계산될 수 있다.
Figure 112015066036944-pct00003
(11)
식 (11)은 롤링 셔터에 의한 효과가 없으며(예컨대, ts = 0) z-축에 대한 회전(ωz)이 무시될 수 있다고 추정한다.
Figure 112015066036944-pct00004
는 연속하는 프레임에서 모든 포인트 대응에 대하여 x 및 y에 따른 평균 병진운동률이다. 최적화기가 정확한 초점 길이(f) 및 자이로스코프 지연(td)에 수렴한다면, 두 신호는 일치되어야 한다. 측정 전의 신호 x 및 f*ωy(t+td)의 크기는 f에 대한 초기 근사가 너무 낮기 때문에 매칭되지 않는다. td가 0으로 초기화될 때 신호가 쉬프트될 수 있다. 측정 후, 신호는 정확한 초점 길이 및 자이로스코프 지연이 복원되었기 때문에 잘 일치될 수 있다. 가령 MEMS 자이로스코프와 같은 정확한 자이로스코프는 자이로스코프 데이터가 이미지 움직임과 매칭되게 할 수 있으며, 향상된 비디오 안정화 및 롤링 셔터 보정을 가져올 수 있다.
제약-기반 회전 스무싱
본 발명의 일부 태양으로, 빈 영역이 보이지 않거나, 최소 임계값 이하인 제약 하에서 최적화된 부드러운 카메라 움직임을 계산하기 위한 시스템 및 방법이 제공될 수 있다. 도 4는 실시예에 따른 예시적인 디지털 비디오 안정화 모듈을 도시한다. 디지털 비디오 안정화 모듈(400)은 입력 모듈(401), 스무싱 모듈(402) 및 워핑 모듈(403)을 포함하여 도시된다.
입력 모듈(401)은 스무싱 모듈(402) 및 워핑 모듈(405)로 안정화될 입력을 제공할 수 있다. 입력 모듈(401)은 안정화될 비디오와 관련된 입력들을 수신할 수 있다. 예컨대, 입력은 N개의 프레임 세트(Fi), N개의 프레임에 대한 대응 시간들(ti), 및 카메라 방향(θi)(여기서, i= {1, ..., N})를 포함할 수 있다.
스무싱 모듈(402)은 제한 함수 f(Φ, t)가 만족되도록 새로운 스무싱된 카메라 방향(Φi)의 세트를 계산한다. 스무싱 모듈(402)은 회전률 모듈(403) 및 제약 결정 모듈(404)을 포함할 수 있다.
회전률 모듈(403)은 스무싱된 카메라 방향의 생성 동안 충분히 작은 회전률이 유지되는 것을 보장하기 위하여 회전률을 계산한다. 제약 결정 모듈(404)은 시간 ti에서 타겟 방향(Φi)에 대한 제약이 만족되었는지 여부를 결정한다. 예컨대, 일 실시예로, 제약 함수 f(Φ, t)는 각각 시간 ti에서 타겟 방향(Φi)이 주어지면, 빈 영역이 보이는지 여부에 따라 1 또는 0을 리턴할 수 있다.
예컨대, 제약 결정 모듈(404)은 연속적인 이미지 프레임에서 최소량의 빈 영역(예컨대, 임계량 아래)이 생성되었는지 여부를 결정할 수 있다. 만약 빈 영역의 양이 임계량 이하에 들어간다면, 제약은 만족되고(예컨대, 빈 영역의 양이 임계량을 초과하지 않았음), 타겟 방향(Φi) 및 그에 대응하는 시간(t)이 임계값보다 많은 빈 공간의 양을 생성하지 않은 충분히 작은 회전률을 가지는 스무싱된 방향을 생성하는데 사용될 수 있다. 제약이 만족되지 않으면(예컨대, 빈 영역의 양이 임계량을 초과하면), 대응 타겟 방향(Φi)이 제약을 만족하는 충분히 작은 회전률을 유지하도록 조정될 수 있다. 일 실시예로, 빈 영역의 임계량은 0이다. 다른 실시예에서, 빈 영역의 임계량은 약 0이거나 인간의 눈에 의해 감지되지 않는 것으로 결정되는 무시할만한 값이다. 또 다른 실시예에서, 빈 영역의 임계량은 모든 빈 영역을 제거하거나 모든 빈 영역을 거의 제거하는 것과 같이 크로핑, 주밍 또는 복원이 효율적으로 사용되는 것을 방해하는 값이다. 다른 실시예에서, 빈 영역의 임계량은 애플리케이션 및 오차 레벨에 기초하여 바람직하게 설정될 수 있다.
워핑 모듈(405)은 스무싱 모듈(402)에 의해 계산된 새로운 스무싱된 카메라 방향(Φi)의 세트에 기초하여 워핑된 프레임들을 생성한다. 예컨대, 워핑 모듈(405)은 입력으로 프레임(F), 스무싱된 방향((Φ) 및 그것의 대응 시간(t)을 취하고 워핑된 프레임(F')을 생성하는 워핑 함수 g(F, Φ, t)를 구현할 수 있다. 스무싱 모듈(402)에 의한 출력으로 시간(ti)에 따라 스무스하게 변하는 방향(Φi) 및 함수(f, g)의 적절한 선택이 주어지면, 결과 워핑된 프레임(F'i)은 안정화된 출력 비디오를 구성할 것이다. 함수 f는 워핑 함수(g)의 선택에 의존할 수 있으며, 워핑 함수(f)를 적용한 후, 빈 영역이 프레임에 보이는지 여부를 간단히 나타낼 수 있다.
구현된 특정 워핑 함수는 다른 실시예에 따라 변할 수 있다. 다른 워핑 함수가 다양한 카메라 및 소정 근사에 대하여 적절할 수 있다. 예컨대, 구현된 워핑 함수는 카메라가 롤링 셔터 및 거울렌즈 수차를 가지는지 여부, 또는 글로벌 셔터를 가지는지 여부에 기초할 수 있다. 예컨대, 일 실시예에서, 글로벌 셔터를 가지는 카메라에 대하여, 호모그래프 워핑 함수가 구현될 수 있다. 아핀변환(affine transformation)과 같은 다른 근사 또는 프레임의 이미지 공간에서의 회전 플러스 병진운동이 구현될 수 있다.
일 실시예에서, θi 입력은 SO(3) 그룹에서의 회전이다. 가량 회전 매트릭스 및 4원법과 같이 회전을 나타내는 다양한 방법들이 존재한다. SO(3)에 있는 표현들이 가령 오일러 각보다 4원법과 같은 스무스 보간을 용이하게 하는 표현으로 전환될 수 있다. θi 회전은 예컨대, 이미지-기반 특징 추출기로부터 또는 자이로스코프 리딩을 직접 측정 및 적분하는 것에 의해 계산될 수 있다. 카메라 방향의 정확한 추정을 생성하는 임의의 다른 방법이 다른 실시예에서 구현될 수 있다.
θ는 카메라 회전의 관점에서 기술되어 있으나 다른 실시예에서, θ는 3D 공간에서 카메라의 회전 및 병진운동 모두를 보유하는 벡터를 포함할 수 있다. 예컨대, 회전 및 병진운동 모두를 포함하는 벡터는 움직임 알고리즘으로부터의 구조에 의해 생성될 수 있다. 일 실시예에서, θ는 프레임의 이미지 공간, 또는 좀 덜 정확하지만 잠제적으로 계산적으로 간단한 근사에서 병진운동 또는 회전을 포함할 수 있다. θ가 부드럽게 보간되고 그 결과(Φ)가 대응 f 및 g 함수로 입력될 수 있는 한, 디지털 비디오 안정화가 달성될 수 있을 것이다.
"스무스 카메라 움직임"이라는 구문은 본 명세서에서 회전률에 있어서의 작은 변화를 언급하기 위하여 사용될 수 있다. 이는 이웃하는 프레임의 회전에 있어서의 작은 변화와는 구별된다. 회전률에 있어서의 작은 변화는 시간에 따라 적용된 제약 내외에서 용이한 방향을 생성할 수 있다. 이웃하는 프레임의 회전에 있어서 작은 변화는 제약이 유효한 시간에 방향 도함수에 있어서 불연속성을 생성하면서 제약에 그리고 제약으로부터 보간한다.
제약-기반 회전 스무싱은 회전률 및 제약에 기초한 에너지 함수를 최소화하는 것을 포함하는 최적화를 포함한다.
일 실시예로, 최소화될 에너지 함수(J)는 이하의 예시적인 식 (12)에 의해 특정될 수 있다.
Figure 112015066036944-pct00005
(12)
회전 Φ는 단위 쿼터니언(unit quaternions)으로 표현될 수 있다(역으로 공지됨). 또한, 이하의 예시적인 식 (13)에서 특정된 바와 같이, 강한 제약이 약한 제약으로 대체될 수 있다.
Figure 112015066036944-pct00006
(13)
λ는 f 제약이 얼마나 강하게 강제되는지를 결정한다. 예컨대, λ를 무한대로 설정하는 것은 제한이 만족된다고 추정되면 빈 영역이 보이지 않음을 보장할 수 있다.
다양한 최적화 알고리즘이 예시적인 식 (12) 및 (13)에 도시된 형태 중 하나로 에너지 함수(J)를 최소화하기 위하여 사용될 수 있다. 일 실시예로, 예시적인 식 (12)의 기울기 하강에 기초한 반복 알고리즘이 구현되며, 여기서 제약은 각 반복에서 유효할 수 있다. 일 실시예로, 프레임은 1초에 특정 수의 프레임으로 기록하는 카메라와 같이 시간적으로 동일하게 이격될 수 있다. 동일하게 이격된 프레임으로, 분모는 일정한 것으로 추정될 수 있으며, 그 후 합으로부터 빠질 수 있다. 다음으로 도함수가 이하의 예시적인 식 (14)에 의해 특정될 수 있다.
Figure 112015066036944-pct00007
(14)
C는 기울기의 크기를 제어하는 상수일 수 있다. 일부 실시예에서, 이는 모멘텀 기반 방법과 같은 일부 기울기 하강의 형태로 자동으로 취해질 수 있다. 다른 실시예에서, 이는 명확한 기울기 하강으로 하강률을 제어하기 위하여 필요에 따라 설정될 수 있다. 예시적인 값은 예를 들어 C=2/(△t)2이다. 식 (14)는 이하의 예시적인 식 (15)에 의해 좀 더 컴팩트하게 특정될 수 있다.
Figure 112015066036944-pct00008
(15)
커넬(K)은 가우시안의 라플라시안(LoG; Laplacian of Gaussian) 필터일 수 있다. LoG 필터는 DoG(Difference of Gaussians) 또는 DoB(Difference of Boxes) 필터로 근사될 수 있다. 커넬(K)은 또한 LoG 필터를 가우시안 필터에 컨볼빙(convolving)하는 것에 의해 조정될 수 있다. 아는 회전률이 얼마나 미세하게 변경해야하는지(또는 제약의 내 외에서의 완화량)를 제어할 수 있다. LoG/DoG/DoB 및/또는 가우시안 필터의 선택은 커넬(K)의 계수 및 크기에 영향을 줄 수 있으나, 커넬이 시간 도함수의 형태를 계산하는 한, 최적화된 방향은 제약 내외에서 일부 완화된 형태를 나타낼 수 있다.
일 실시예로, 사원법으로의 커넬의 적용은 4D 벡터의 선형 가중을 수행하는 것이다. 이론적으로, 구형 선형 보간(slerp)을 사용한 보간 사원법이 정확한 방법일 수 있다, 작은 각 변화에 대하여, 각 반복시 선형 보간 플러스 결과 사원법의 정규화(lerp)가 충분히 정확한 결과를 생성하는데 충분할 수 있다. θ가 작을 때 sinθ≒θ이기 때문에 그러한 결과가 달성될 수 있다. 손떨림에 의해 도입된 각의 변화(예컨대, 조정되어야할 변화)는 통상 크지 않다. 또한, 크로핑, 주밍 또는 복원 인자의 합리적 레벨은 많은 자유도를 남기지 않을 수 있다. 작은 각만이 빈 영역을 생성하지 않을 수 있다. 따라서, 연속적인 방향의 사원법 사이에 손떨림에 의해 도입된 각은 실제로 크지 않을 수 있으며, 근사는 정확하며 또한 계산상 효율적일 수 있다. 게다가, 빠른 카메라 회전에 대하여(예컨대, 사용자가 왼쪽으로 빠르게 이동함), 제약 함수(f)는 결과 방향에 중요한 요소가 될 수 있다. 따라서, lerp로부터의 임의의 부정확성은 눈에 띄지 않을 것이다.
일 실시예로, 제약-기반 회전 스무싱은 이하의 예시적인 알고리즘 (1)로 특정될 수 있다.
Figure 112015066036944-pct00009
Φi는 내부 루프에서 변하지 않도록 외부 루프에서 미리 계산될 수 있다. 반복 횟수 "numiter"는 부드러운 회전을 가져오도록 충분히 높게 설정될 수 있다. 결과 Φi는 다음으로 안정화된 출력 비디오를 생성하기 위하여 g에 공급될 수 있다.
n(Φ)는 lerp에서 정규화 단계이며 n(Φ) = Φ/||Φ||로 정의될 수 있다. 알고리즘 1에서 인덱스 i는 Φi가 유효하며 따라서 커넬(K)의 크기에 의존할 수 있도록 선택된다. 이 예에서, 경계에서의 회전은 고정될 수 있다. 다른 실시예로, 경계는 외삽(extrapolation)을 통하여 연장될 수 있으며, 방향의 전체 세트가 최적화 동안 반복될 수 있게 한다. 방향들의 전체 세트는 이하의 세트로 특정될 수 있다.
Figure 112015066036944-pct00010
도 5는 실시예에 따른, 입력 데이터 및 스무싱 후의 결과 데이터의 예들의 그래프를 도시한다. 상단 그래프는 원으로 표시된 제약(503)를 구비하는 시간에 따라 도시된 입력 데이터(502)를 포함한다. 하단 그래프는 본 명세서에 기술된 제약-기반 회전 스무싱 기술에 따라 스무싱된 입력 데이터(502)로부터의 결과인, 제약(503)를 포함하는 결과 데이터(504)를 포함한다. 예컨대, 결과 데이터(504)는 제약(예컨대, 빈 영역의 임계량이 연속적인 이미지 프레임 내에서 생성되지 않을 것)이 만족될 것을 보장하면서 회전률(또는 도함수)을 작게(또는 임계값 이하로) 하는 것에 의해 스무싱될 수 있다. 회전률에 있어서의 작은 변화는 시간에 따라 부가된 제약 내 외에서 완화된 제약을 생성할 수 있다. 결과 데이터(504)는 제약(503) 내외에서 완화된다. 한편, 중간 그래프는 이웃하는 프레임들의 방향의 변화를 작게하는 것에 의해 입력 데이터(502)의 시도된 스무싱으로부터의 결과인 제약(503)을 포함하는 결과 데이터(506)를 포함한다. 이웃하는 프레임들의 회전에 있어서 작은 변화는 제약이 유효한 시간에 방향 도함수에서 불연속성을 생성하면서 제약으로 그리고 제약으로부터 보간된다. 도시된 바와 같이 결과 데이터(506)는 제약(503)에서 도함수에 불연속성을 포함한다.
도 6은 실시예에 따른 제약-기반 스무싱을 위한 예시적인 방법을 도시한다. 방법(600)의 블럭 601에서, 비디오 데이터가 수신된다. 비디오 데이터는 관련 타임 스탬프를 구비한 이미지 프레임들의 세트를 포함할 수 있다. 일 실시예로, 블럭 601은 도 4의 입력 모듈(701)에 의해 수행될 수 있다.
블럭 603에서, 관련 타임 스탬프를 구비한 카메라 방향 데이터가 수신된다. 예컨대, 카메라를 포함하는 장치는 또한 비디오의 촬영 동안 카메라의 방향을 추적하는 카메라 방향 데이터를 생성하는 자이로스코프, 가속도계 등과 같은 방향 센서를 포함할 수 있다. 카메라 방향 데이터는 카메라 방향 데이터를 비디오 데이터 내의 이미지들의 세트에 링크 또는 연관시키기 위하여 관련 타임 스탬프들을 포함할 수 있다. 일부 예에서, 카메라 방향 데이터는 가령 비디오 데이터와 함께와 같이, 비디오 데이터와 동일한 시간에 수신될 수 있다. 일 실시예로, 블럭 602는 도 4의 입력 모듈(701)에 의해 수행될 수 있다.
일 실시예로, 블럭 601 및 603은 비디오를 촬영하기 위하여 사용되는 카메라를 구비한 장치(예컨대, 스마트폰 또는 다른 휴대용 장치)에 의해 수행될 수 있다. 예컨대, 비디오 데이터 및 카메라 방향 데이터는 카메라 촬영시 수신될 수 있다. 다른 실시예로, 블럭 601 및 603은 카메라를 포함하는 장치(예컨대, 스마트폰)에 의해 촬영된 비디오 데이터를 연속적으로 수신하는 개별 장치(예컨대, 컴퓨터)에 의해 수행될 수 있다. 예컨대, 비디오 데이터 및 카메라 방향 데이터는 카메라를 구비한 스마트폰과 같이 카메라 및 방향 센서를 포함하는 장치와는 별개인 장치로 전송되거나 업로드될 수 있다.
블럭 605에서, 스무싱된 이미지 프레임들의 결과 세트 내의 결과 빈 연 영역들의 양을 최소화(또는 제한)하면서 연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것에 의하여 스무싱된 카메라 방향 데이터의 세트가 생성된다. 스무싱된 이미지 프레임들의 결과 세트는 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배열된다.
일 실시예로, 스무싱된 카메라 방향 데이터의 세트는 본 명세서에 기술된 식 (12) 또는 (13) 중 하나를 최소화하는 것에 의하여 생성된다. 일 실시예로, 예시적인 식 (12)의 기울기 하강에 기초한 반복 알고리즘이 구현되며, 제약은 각 반복마다 적용될 수 있다.
블럭 607에서, 이미지 프레임들의 세트는 보정된 이미지 프레임들의 세트를 형성하기 위하여 워핑된다. 이미지 프레임들의 세트는 이미지 프레임들의 세트에 대한 관련 타임 스탬프 및 카메라 방향 데이터의 스무싱된 세트에 기초하여 워핑될 수 있다. 일 실시예로, 개별 이미지 프레임은 다수의 서브섹션으로 분할될 수 있으며, 각 서브섹션은 관련 타임 스탬프 및 카메라 방향을 가진다. 각 서브섹션은 개별적으로 보정된 이미지 프레임을 형성하기 위하여 관련 타임 스탬프 및 카메라 방향에 기초하여 재배열된다.
움직임 번짐 아티팩트(motionblur artifacts)의 시인성 감소
낮은 조명 하에서 취해진 비디오의 디지털 비디오 안정화는 종종 이상한 움직임 번짐 아티팩트를 생성한다. 이는 움직임 번짐을 야기했던 움직임(예컨대, 손떨림)때 제거될 때 움직임 번짐이 이상하게 보이기 때문에 일어날 수 있다. 일부 예로, 움직임 흔적을 설명하기 위하여 안정화된 비디오에 손떨림을 충분히 남겨놓는 것이 필요할 수 있다. 프레임 내에 명백한 수평 움직임 흔적이 있다면, 움직임을 이해하기 위하여 그 흔적에 따라 방향이 수평적으로 변할 필요가 있을 것이다. 수평 움직임이 없다면, 안정화된 비디오 내에 이유없이 흔적이 나타날 수 있으며 이는 시각적 움직임 번짐 아티팩트를 야기할 수 있다.
일 실시예로, 카메라 셔터가 열려있는 동안 일어난 방향의 변화(△θi)는 이하의 예시적인 식 (16)에 의해 계산된다.
Figure 112015066036944-pct00011
(16)
ti s는 프레임 Fi에서 셔터가 열린 시간을 나타낼 수 있다. ei는 프레임의 노출 기간이다. θ(t)는 시간 t에서 카메라의 방향이며, 이하의 식에 따라 보간에 의해 계산될 수 있다.
Figure 112015066036944-pct00012
자이로스코프를 사용한 디지털 비디오 안정화 및 롤링 셔터 보정을 위한 상술한 예에서, △θi는 또한 셔터가 열려있는 기간에 따라 적분하는 것에 의하여 자이로스코프 판독값들로부터 직접 계산될 수 있다. 식 (1) 또는 식 (2)의 내부의 합은 이하의 예시적인 식 (17)에 특정된 바와 같이 변경될 수 있다.
Figure 112015066036944-pct00013
(17)
식 (17)은 ti s≥ti이며, ti s+ei≤ti+1이라고 추정한다. 셔터는 프레임의 타임 스탬프 전에 열리지 않고, 다음 프레임 시작 전에 닫힌다. 다른 실시예로, 입력 타입 스탬프는 다르게 계산될 수 있으며(예컨대, ti는 셔터가 닫힌 시간임), 요구조건을 만족시키도록 타임스탬프를 조정하기 위한 사전처리 단계가 추가될 수 있다.
상술한 실시예에서, 프레임에 움직임 흔적을 남기는 방향의 변화가 보존된다. 다른 실시예로, 이하의 예시적인 식 (18)에 특정된 바와 같이 근사가 구현될 수 있다.
Figure 112015066036944-pct00014
(18)
식 (18)에서의 근사는 방향 변화가 움직임 흔적(△θi)을 따라가도록 Φi를 최적화시키고자 할 수 있다. γ 스케일링 인자는 스무싱과 움직임 흔적이 얼마나 가깝게 추종되어야 하는지 사이의 트레이드오프(tradeoff)를 제어할 수 있다.
타당한 줌 인자 선택
예컨대, 허용가능한 줌 인자(또는 크롭 인자, 복원 인자, 또는 디지털 비디오 안정화를 위한 자유도를 제공하는데 사용되는 알고리즘에 적용가능한 임의의 다른 측정치)가 1과 1.25x 사이라면, 주어진 비디오에 대하여, 부드러운 카메라 움직임을 생성하기 위하여 충분한 자유도를 제공하는 가장 작은 줌 인자를 결정하는 것이 바람직할 수 있다. 일 실시예로, 결과 카메라 움직임의 부드러움(smoothness)은 이하의 예시적인 식 (19)에 의해 측정될 수 있다.
Figure 112015066036944-pct00015
(19)
식 (19)에서, q는 빈 영역 제한이 얼마나 자주 적용되는지를 측정한다. 예컨대, q=0.1의 값은 전체 화면에서 빈 영역을 방지하기 위하여 매 10 프레임마다 평균적으로 f번 적용되었음을 의미할 수 있다. 예컨대, 제약의 완화를 위해 20 프레임 간격이 바람직하다면, 타당한 값은 q=0.05일 수 있다.
바람직한 q'값을 제공하는 줌 인자(z')를 발견하기 위하여 알고리즘(1)은 줌 인자의 범위에 대하여 풀릴 수 있다(여기서: z∈[1, 1.05, 1.1, 1.15, 1.2, 1.25]). 줌 인자(z) 및 알고리즘 1을 실행하는 것에 의해 획득된 결과 Φi가 주어지면, 결과 q 값이 식 (19)로부터 계산될 수 있다. 그 후, q'에 가장 가까운 q를 제공하는 줌 인자가 선택될 수 있다. 다른 실시예로, 줌 인자(z')는 q'에서 결과 데이터세트(q, z)를 선형적으로 보간하는 것에 의해 발견될 수 있다. 전형적인 휴대용 기록을 위한 (q, z) 룩업 테이블이 미리 계산될 수 있으며, q'는 중간 또는 평균 회전률로부터 추정된다. 이 접근법은 특정 비디오에 대하여 덜 정확할 수 있으나, 최적화 알고리즘을 여러번 실행할 필요가 없기 때문에 더 빠를 수 있다.
계산 효율성 향상
기울가 하강 외의 최적화기를 사용하여 근사를 도입하는 것과 같이 알고리즘 1의 효율성을 향상시키기 위한 다수의 방법이 있다. 일 실시예로, 식 (15)에서 커넬(K)의 크기가 감소될 수 있으며, 이하의 예시적인 식 (20)에 의해 특정된 바와 같이 기울기가 업데이트될 수 있다.
Figure 112015066036944-pct00016
(20)
커넬의 크기를 감소시키는 (그리고 그것을 재사용하는) 것에 의하여, 기울기의 계산의 효율적으로 빨라질 수 있다. 식 (20)에서 커넬의 다른 특성은 KΦi의 값이 slerp를 사용하여 좀 더 정확하게 계산될 수 있다는 것이다. 이는 이하의 예시적인 식 (21)에 특정된 바와 같이 비-균일화된 간격의 프레임들에 대하여도 행해질 수 있다.
Figure 112015066036944-pct00017
(21)
훨씬 더 정확하게, Φislerp에 의해 형성된 구형 탄젠트가 결정되어 식 (20)에 사용될 수 있다. Φislerp에 의해 형성된 구형 탄젠트는 이하의 예시적인 표현으로 특정될 수 있다.
Figure 112015066036944-pct00018
다른 실시예로, 효율성은 본 명세서에 개시된 알고리즘 1의 수렴율을 향상시키는 것에 의해 향상될 수 있다 이는 넓은 간격(in coarse)에서 좁은 간격 모드(fine mode)로 실행하는 것에 의해 달성될 수 있다. 예컨대, 알고리즘(1)은 매 16번째 방향(Φi)마다 공급하고 푸는 것에 의해 초기화될 수 있다. 다음으로 선형 또는 입체 보간(예컨대, slerp 또는 squad)이 그들 사이의 Φi를 계산하기 위하여 사용될 수 있다. 매 8번째 방향의 값이 획득된다. 알고리즘(1)은 다시 실행될 수 있으나, 이번엔 부드러움 및 제약에 대하여 매 8번째 방향을 최적화한다. 이는 알고리즘 1이 매 방향마다 실행될 때까지 반복된다.
넓은 간격에서 좁은 간격으로의 실행은 알고리즘 1이 각 단계마다 상당히 적은 반복으로 실행될 수 있게 한다. 전체 카메라 움직임이 부드러워질 수 있으며 그 후 방향은 부드러움은 남겨둔 채로 점점 더 작은 프레임 간격에서 제약을 만족하도록 재가공될 수 있다. 다른 실시예에서, 불균일 샘플링이 사용될 수 있다. 예컨대, 매 16 프레임마다 프레임을 가져오는 대신, 이전에 가져온 프레임으로부터 방향이 얼마나 많이 벗어나 있는지에 기초하여 프레임을 가져올 수 있다. 다음으로 모든 프레임에 대하여 스무싱된 방향이 계산될 때까지 세그먼트들은 하위분할될 수 있다.
넓은 간격 또는 불균일 샘플링은 방향에 있어서 더 큰 연속적인 변화를 도입하기 때문에 식 (21)에 제시된 slerp 변경을 사용하는 것은 훨씬 더 정확한 결과를 생성할 수 있다.
실시간 안정화의 예시적인 적용
실시간 설정으로 알고리즘을 적용하는 예시적인 실시예들이 이하에 제공된다. 메모리에 보관된 N개의 프레임들에 대하여, 알고리즘은 슬라이딩 윈도우 방식으로 실행된다. 인덱스 i는 슬라이딩 윈도우의 시작을 나타낼 수 있으며, i+N은 끝을 나타낼 수 있다. 슬라이딩 윈도우 내의 방향은 알고리즘을 실행하는 것에 의해 업데이트될 수 있다는 점에서 가단성(malleable)이 있다. 이 방향은 이하의 세트 (2)에 의해 특정될 수 있다.
Figure 112015066036944-pct00019
슬라이딩 윈도우 이전의 방향(예컨대, Φi-1)은 고정될 수 있다. 시작 방향은 Φi-1)일 수 있으며 (예컨대, 자이로스코프에 의해 측정되거나 특정 추적기로부터 계산된) 회전률은 방향들 {θi, θi+1, ..., θi+N}을 획득하기 위하여 적분될 수 있다. 이는 최적화 알고리즘을 위한 입력으로 사용될 수 있으며, {Φi, Φi+1, ..., Φi+N-2}을 계산할 수 있다. 방향 {Φi-2, Φi+1} 및 방향 {Φi+N-1 = θi+N-1, Φi+N = θi+N}은 고정될 수 있으며, 슬라이딩 윈도우 안밖에서 움직이 부드럽게 진행하는 것을 보정하는 경계 조건으로서의 역할을 할 수 있다.
알고리즘이 실행되면, 프레임 Fi를 워핑하는데 사용될 수 있는 Φi의 방향이 획득될 수 있다. 프레임이 워핑되면, 그것은 인코더로 패스되어 N개의 프레임의 버퍼로부터 제거된다. 그 후 새로운 프레임이 카메라로부터 수신될 수 있으며, 슬라이딩 윈도우는 한 프레임씩 전진될 수 있다.
그 과정은 기록이 멈추고 모든 프레임이 처리될 때까지 반복될 수 있다. i=1인 가장 첫 번째 프레임에 대하여, {Φ-1, Φ0}은 정의되지 않을 수 있다. Φ-1 및 Φ0은 식별 사원법으로 설정될 수 있다. 마지막 프레임이 수신되면, 버퍼는 그들 각각의 프레임을 워핑하기 위하여 마지막 슬라이딩 윈도우 내에서 계산된 방향을 사용하여 비워질 수 있다.
일부 예에서, 작은 버퍼 크기(예컨대, N=5)는 제약 내외의 완화를 허용하지 않을 수 있다. 그러한 경우에, 제약 함수(f)를 강한 제약까지 증가하는 약한 제약으로 변경할 필요가 있을 수 있다. 이는 함수 f'(Φ, t)로 언급될 수 있다. 0 또는 1을 리턴하는 대신, f'는 새로운 방향(Φ')을 리턴하여 프레임 경계로부터 멀어지도록 푸시될 수 있다. 방향(Φ)이 가까울수록 빈 영역이 잘 보이며, 더 많은 f'는 결과 Φ'가 빈 영역으로부터 멀어지게 할 수 있다. 다음으로 알고리즘 1은 이하의 예시적인 알고리즘 2에 특정된 바와 같이 재공식화될 수 있다.
Figure 112015066036944-pct00020
f'가 방향 n(Φi-CKΦi)가 빈 영역을 가져올 때 Φi를 단순히 리턴한다면, 알고리즘 1 및 2는 동일할 수 있음을 유의하자. 알고리즘 1의 최적화율은 Φi를 n(Φi-CKΦi)를 향하여 slerp하고 빈 영역이 나타나는 지점에서 즉시 멈추는 함수 f'를 구비한 알고리즘 2에 의해 향상될 수 있다.
소셜 네트워킹 시스템-예시적인 구현
도 7은 본 발명의 실시예에 따른 웹사이트 또는 애플리케이션 상의 사용자 참여를 평가하는 예시적인 시스템(700)의 네트워크도이다. 시스템(700)은 하나 이상의 사용자 장치(710), 하나 이상의 외부 시스템(720), 소셜 네트워킹 시스템(730) 및 네트워크(750)를 포함한다. 일 실시예로, 상술한 실시예와 함께 논의된 소셜 네트워킹 시스템은 소셜 네트워킹 시스템(730)으로 구현될 수 있다. 설명을 위하여 도 7에 도시된 시스템(700)의 예는 단일 외부 시스템(720) 및 단일 사용자 장치(810)를 포함한다. 그러나, 다른 실시예로, 시스템(700)은 더 많은 사용자 장치(710) 및/또는 더 많은 외부 시스템(720)을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(730)은 소셜 네트워크 제공자에 의해 운영되는 반면, 외부 시스템(820)은 다른 엔터티에 의해 운영될 수 있다는 점에서 소셜 네트워킹 시스템(730)과 구별된다. 그러나, 다양한 실시예로, 소셜 네트워킹 시스템(730) 및 외부 시스템(720)은 소셜 네트워킹 시스템(730)의 사용자(또는 회원)에게 소셜 네트워킹 서비스를 제공하기 위하여 함계 동작한다. 이러한 점에서, 소셜 네트워킹 시스템(730)은 외부 시스템(720)과 같은 다른 시스템이 인터텟을 통해 사용자들에게 소셜 네트워킹 서비스 및 기능을 제공하기 위하여 사용할 수 있는 플랫폼 또는 백본을 제공한다.
사용자 장치(710)는 사용자로부터 입력을 수신하고 네트워크(750)를 통하여 데이터를 전송 및 수신할 수 있는 하나 이상의 컴퓨팅 장치를 포함한다. 일 실시예로, 사용자 장치(710)는 예컨대, 마이크로소프트 윈도우-호환 운영 시스템(OS), 애플 OS X 및/또는 리눅스 배포판을 실행하는 종래 컴퓨터 시스템이다. 다른 실시예로, 사용자 장치(710)는 스마트폰, 태블릿, 개인 휴대용 단말기(PDA), 이동전화 등과 같이 컴퓨터 기능을 가지는 장치일 수 있다. 사용자 장치(710)는 네트워크(750)를 통하여 통신하도록 구성된다. 사용자 장치(710)는 예컨대, 사용자 장치(710)의 사용자가 소셜 네트워킹 시스템(730)과 상호작용할 수 있게 하는 브라우저 애플리케이션과 같은 애플리케이션을 실행할 수 있다. 다른 실시예로, 사용자 장치(710)는 iOS 및 ANDROID와 같이 사용자 장치(710)의 네이티브 운영 시스템에 의해 제공되는 애플리케이션 프로그래밍 인터페이스(API)를 통하여 소셜 네트워킹 시스템(730)과 상호작용한다. 사용자 장치(710)는 네트워크(750)를 통하여 외부 시스템(720) 및 소셜 네트워킹 시스템(730)과 통신하도록 구성되며, 네트워크(750)는 유선 및/또는 무선 통신 시스템을 사용하는 로컬 영역 및/도는 광역 네트워크의 임의의 조합을 포함할 수 있다.
일 실시예로, 네트워크(750)는 표준 통신 기술 및/또는 프로토콜을 사용한다. 따라서 네트워크(750)는 이더넷, 802.11, WiMAX(worldwide interoperability for microwave access), 3G, 4G, CDMA, GSM, LTE, DSL(digital subscriber line) 등과 같은 기술을 사용하는 링크를 포함할 수 있다. 마찬가지로, 네트워크(750)에서 사용되는 네트워킹 프로토콜은 MPLS(multiprotocol label switching), TCP/IP(transmission control protocol/Internet protocol), UDP(user datagram protocol), HTTP(hypertext transport protocol), SMTP(simple mail transfer protocol), FTP(file transfer protocol) 등을 포함할 수 있다. 네트워크(750)를 통하여 교환되는 데이터는 HTML(hypertext markup language) 및 XML(extensible markup language)를 포함하는 기술 및/또는 포맷을 사용하여 표현될 수 있다. 또한, 모든 링크 또는 링크 중 일부는 SSL(secure sockets layer), TLS(transport layer security) 및 IPsec(Internet Protocol security)과 같은 종래 암호화 기술을 사용하여 암호화될 수 있다.
일 실시예로, 사용자 장치(710)는 브라우저 애플리케이션(712)을 사용하여 외부 시스템(720) 및 소셜 네트워킹 시스템(730)으로부터 수신된 마크업 언어 문서(714)를 처리하는 것에 의하여 외부 시스템(720) 및/또는 소셜 네트워킹 시스템(730)으로부터의 컨텐츠를 디스플레이할 수 있다. 마크업 언어 문서(714)는 컨텐츠 및 컨텐츠의 포맷과 표현을 기술하는 하나 이상의 명령어들을 식별한다. 마크업 언어 문서(714)에 포함된 명령어들을 실행하는 것에 의해, 브라우저 애플리케이션(712)은 마크업 언어 문서(714)에 의해 기술된 포맷 및 표현을 사용하여 식별된 컨텐츠를 디스플레이한다. 예컨대, 마크업 언어 문서(714)는 외부 시스템(720) 및 소셜 네트워킹 시스템(730)으로부터 검색된 텍스트 및/또는 이미지 데이터를 포함하는 다수의 프레임을 갖는 웹페이지를 생성하고 디스플레이하기 위한 명령어들을 포함한다. 다양한 실시예로, 마크업 언어 문서(714)는 확장형 마크업 언어(XML) 데이터, 확장형 하이퍼텍스트 마크업 언어(XHTML) 데이터, 또는 다른 마크업 언어 데이터를 포함하는 데이터 파일을 포함한다. 추가로, 마크업 언어 문서(714)는 외부 시스템(720)과 사용자 장치(710) 사이의 데이터 교환을 용이하게 하기 위하여 JSON(JavaScript Object Notation) 데이터, 패딩을 구비한 JSON(JSONP) 및 자바스크립트 데이터를 포함할 수 있다. 사용자 장치(710) 상의 브라우저 애플리케이션(712)은 마크업 언어 문서(714)를 디코딩하기 위하여 자바스크립트 컴파일러를 사용할 수 있다.
마크업 언어 문서(714)는 또한 FLASHTM 또는 UnityTM 애플리케이션, SilverLightTM 애플리케이션 프레임워크 등과 같은 애플리케이션 또는 애플리케이션 프레임워크를 포함하거나 링크할 수 있다.
일 실시예로, 사용자 장치(710)는 또한 사용자 장치(710)의 사용자가 소셜 네트워킹 시스템(730)에 로그인 중인지를 가리키는 데이터를 포함하는 하나 이상의 쿠키(716)를 포함하며, 이는 소셜 네트워킹 시스템(730)으로부터 사용자 장치(710)로 통신할 데이터의 변경을 가능하게 할 수 있다.
외부 시스템(720)은 네트워크(750)를 사용하여 사용자 장치(710)와 통신하는 하나 이상의 웹 페이지(722a, 722b)를 포함하는 하나 이상의 웹 서버를 포함한다. 외부 시스템(720)은 소셜 네트워킹 시스템(730)과 구별된다. 예컨대, 외부 시스템(720)은 제1 도메인과 연관되는 반면, 소셜 네트워킹 시스템(730)은 개별 소셜 네트워킹 도메인과 연관된다. 외부 시스템(720)에 포함된 웹 페이지들(722a, 722b)는 컨텐츠를 식별하고 식별된 컨텐츠의 포맷 및 표현을 특정하는 명령어들을 포함하는 마크업 언어 문서(714)를 포함한다.
소셜 네트워킹 시스템(730)은 다수의 사용자들을 포함하고 소셜 네트워크의 사용자들에게 소셜 네트워크의 다른 사용자들과 통신하거나 상호작용하는 능력을 제공하는 소셜 네트워크를 위한 하나 이상의 컴퓨팅 장치를 포함한다. 일부 예로, 소셜 네트워크는 그래프, 즉 에지 및 노드를 포함하는 데이터 구조에 의해 표현될 수 있다. 데이터베이스, 객체, 분류, 메타 요소, 파일 또는 임의의 다른 데이터 구조를 포함하나 그에 제한되지 않는 다른 데이터 구조가 또한 소셜 네트워크를 표현하기 위하여 사용될 수 있다. 소셜 네트워킹 시스템(730)은 운영자에 의해 운영, 관리, 또는 제어될 수 있다. 소셜 네트워킹 시스템(730)의 운영자는 소셜 네트워킹 시스템(830) 내의 컨텐츠를 관리하거나, 정책을 조정하거나, 사용 메트릭스를 수집하는 인간, 자동화된 애플리케이션 또는 일련의 애플리케이션들일 수 있다. 임의 유형의 운영자가 사용될 수 있다.
사용자는 소셜 네트워킹 시스템(730)에 가입한 후 그들이 연결되기 원하는 소셜 네트워킹 시스템(730)의 임의 수의 다른 사용자들에 대한 연결을 추가할 수 있다. 본 명세서에서 사용되는 바와 같이, "친구"라는 용어는 사용자가 소셜 네트워킹 시스템(730)을 통하여 연결, 연관 또는 관계를 형성하기 원하는 소셜 네트워킹 시스템(730)의 임의의 다른 사용자들을 말한다. 예컨대, 일 실시예로, 소셜 네트워킹 시스템(730)의 사용자가 소셜 그래프에서 노드로 표현된다면, "친구"라는 용어는 두 사용자 노드 사이를 직접 연결하는 두 사용자 노드 사이에 형성된 에지를 말할 수 있다.
연결은 사용자에 의해 명시적으로 추가될 수 있거나, 사용자들의 공통된 특성(예컨대, 동일한 교육기관의 졸업생인 사용자들)에 근거하여 소셜 네트워킹 시스템(730)에 의해 자동으로 생성될 수 있다. 예컨대, 제1 사용자는 친구가 될 특정 다른 사용자를 구체적으로 선택한다. 소셜 네트워킹 시스템(730) 내의 연결은 통상 양방향이나 반드시 그렇지는 않다. 따라서 "사용자" 또는 "친구"라는 용어는 기준 프레임에 따른다. 소셜 네트워킹 시스템(730)의 사용자 사이의 연결은 통상 양방향("쌍방")이거나 "상호적"이나, 연결은 또한 일방향 또는 "일방" 일 수 있다. 예컨대, 밥과 조가 모두 소셜 네트워킹 시스템(730)의 사용자이고 서로 연결된다면, 밥과 조는 서로의 연결이다. 반면, 밥은 조에 의해 소셜 네트워킹 시스템(730)으로 통신된 데이터를 열람하기 위하여 조에게 연결되기 원하나 조는 상호 연결을 형성하기 원하지 않는 경우, 일방향 연결이 확립될 수 있다. 사용자들 사이의 연결은 직접 연결일 수 있다; 그러나, 소셜 네트워킹 시스템(730)의 일부 실시예는 1차 이상의 연결 또는 이격도를 통하여 연결이 간접적일 수 있게 한다.
사용자들 사이의 연결을 확립하고 관리하며 사용자들 사이에 상호작용을 허용하는 것 외에, 소셜 네트워킹 시스템(730)은 사용자들에게 소셜 네트워킹 시스템(730)에 의해 지원되는 다양한 유형의 아이템들 상에 행위를 행할 수 있는 능력을 제공한다. 이 아이템들은 소셜 네트워킹 시스템(730)의 사용자가 속할 수 있는 그룹 또는 네트워크(즉, 사람, 엔터티 및 컨셉의 소셜 네트워크), 사용자들이 관심을 가질지도 모르는 이벤트 또는 캘린더 엔트리, 사용자가 소셜 네트워킹 시스템(730)을 통하여 사용할 수 있는 컴퓨터 기반 애플리케이션, 사용자가 소셜 네트워킹 시스템(730)에 의해 제공된 서비스를 통하여 또는 소셜 네트워킹 시스템(730)을 통하여 아이템을 구매하거나 판매할 수 있게 하는 거래, 및 사용자가 소셜 네트워킹 시스템(730) 내외에서 수행할 수 있는 광고와의 상호작용을 포함할 수 있다. 이는 사용자가 소셜 네트워킹 시스템(730)을 통하여 작용할 수 있는 아이템의 일부 예들일 뿐이며, 많은 다른 것들이 가능하다. 사용자는 소셜 네트워킹 시스템(730) 또는 소셜 네트워킹 시스템(730)과 별개이거나 네트워크(750)를 통하여 소셜 네트워킹 시스템(730)에 결합된 외부 시스템(720)에서 표현될 수 있는 임의의 것과 상호작용할 수 있다.
소셜 네트워킹 시스템(730)은 또한 다양한 엔터티를 링크할 수 있다. 예컨대, 소셜 네트워킹 시스템(730)은 사용자들이 서로 상호작용할 수 있게 할 뿐 아니라 외부 API, 웹서비스, 또는 다른 통신 채널을 통하여 외부 시스템(720) 또는 다른 엔터티들과 상호작용할 수 있게 한다. 소셜 네트워킹 시스템(730)은 다수의 에지에 의해 상호연결된 다수의 노드들을 포함하는 "소셜 그래프"를 생성하고 유지한다. 소셜 그래프 내의 각 노드는 다른 노드에 행위를 행할 수 있고/있거나 다른 노드에 의해 행해진 행위를 받을 수 있는 엔터티를 나타낼 수 있다. 소셜 그래프는 다양한 유형의 노드를 포함할 수 있다. 노드 유형의 예는 사용자, 비인격 엔터티, 컨텐츠 아이템, 웹 페이지, 그룹, 활동, 메시지, 컨셉 또는 소셜 네트워킹 시스템(730) 내에서 객체에 의해 표현될 수 있는 임의의 다른 것들을 포함한다. 소셜 그래프에서 두 노드 사이의 에지는 두 노드 사이의 특정 종류의 연결 또는 연관을 나타낼 수 있으며, 이는 노드 관계 또는 노드들 중 하나에 의해 다른 노드에 수행되었던 행위로부터의 결과일 수 있다. 일부 경우, 노드 사이의 에지는 가중될 수 있다. 에지의 가중치는 두 노드 사이의 연결 또는 연관 강도와 같이 에지와 연관된 속성을 나타낼 수 있다. 서로 다른 유형의 에지에는 서로 다른 가중치가 제공될 수 있다. 예컨대, 한 사용자가 다른 사용자를 "좋아요"한 경우 생성된 에지는 1의 가중치가 주어질 수 있는 반면, 사용자가 다른 사용자의 친구가 된 경우 생성된 에지에는 다른 가중치가 주어질 수 있다.
예로서, 제1 사용자가 친구로서 제2 사용자를 식별한 경우, 소셜 그래프에는 제1 사용자를 나타내는 노드와 제2 사용자를 나타내는 노드를 연결하는 에지가 생성된다. 다양한 노드들이 관련되거나 상호작용함에 따라, 소셜 네트워킹 시스템(730)은 관계 또는 상호작용을 반영하기 위하여 다양한 노드들을 연결하는 에지를 변경한다.
소셜 네트워킹 시스템(730)은 또한 소셜 네트워킹 시스템(730)과 사용자의 상호작용을 향상시키는 사용자-생성 컨텐츠를 포함한다. 사용자-생성 컨텐츠는 사용자가 소셜 네트워킹 시스템(730)에 추가, 업로드, 송신 또는 "포스트(post)"할 수 있는 임의의 것을 포함할 수 있다. 예컨대, 사용자는 사용자 장치(710)로부터 소셜 네트워킹 시스템(730)으로 포스트를 통신한다. 포스트는 상태 업데이트 또는 임의의 텍스트형 데이터와 같은 데이터, 지역 정보, 사진과 같은 이미지, 비디오, 음악 또는 다른 유사한 데이터 및/또는 미디어를 포함할 수 있다. 컨텐츠는 또한 제3자에 의해 소셜 네트워킹 시스템(730)에 추가될 수 있다. 컨텐츠 "아이템"은 소셜 네트워킹 시스템(730)에서 객체로 표현된다. 이러한 방식으로 소셜 네트워킹 시스템(730)의 사용자는 다양한 통신 채널을 통하여 텍스트 및 다양한 유형의 미디어의 컨텐츠 아이템을 포스팅하는 것에 의해 서로 통신하도록 권장된다. 그러한 통신은 서로에 대한 사용자 상호작용을 증가시키며, 사용자가 소셜 네트워킹 시스템(730)과 상호작용하는 횟수를 증가시킨다.
소셜 네트워킹 시스템(730)은, 웹 서버(732), API 요청 서버(734), 사용자 프로필 스토어(736), 연결 스토어(738), 행위 로거(740), 활동 로그(742), 인증 서버(744) 및 디지털 비디오 안정화 모듈(746)을 포함한다. 본 발명의 실시예에서, 소셜 네트워킹 시스템(730)은 다양한 애플리케이션에 대하여 추가의, 더 적은 또는 다른 구성요소들을 포함할 수 있다. 가령 네트워크 인터페이스, 보안 기능, 부하 균형기, 장애복구 서버, 관리와 네트워크 동작 콘솔 등과 같은 종래의 구성요소들은 시스템 구조의 세부사항을 모호하게 하지 않도록 도시되지 않는다.
사용자 프로필 스토어(736)는 사용자에 의해 선언되거나 소셜 네트워킹 시스템(730)에 의해 추론된 경력, 학력, 취미나 기호, 위치 등과 같이, 인명 정보, 인구학적 정보 및 다른 유형의 설명적 정보를 포함하는 사용자 계정에 관한 정보를 유지한다. 정보는 각 사용자가 고유하게 식별되도록 사용자 프로필 스토어(736)에 저장된다. 소셜 네트워킹 시스템(730)은 또한 연결 스토어(738)에 서로 다른 사용자들 사이의 하나 이상의 연결을 기술하는 데이터를 저장한다. 연결 정보는 유사하거나 공통된 이력, 그룹 멥버쉽, 취미 또는 학력을 가지는 사용자들을 가리킬 수 있다. 추가로, 소셜 네트워킹 시스템(730)은 사용자들이 다른 사용자들과 그들의 관계를 특정하게 하는 서로 다른 사용자 사이의 사용자-정의 연결을 포함한다. 예컨대, 사용자-정의 연결은 사용자가 친구, 동료, 파트너 등과 같이 사용자의 현실 관계와 병렬인 다른 사용자들과의 관계를 생성하게 한다. 사용자는 기정의된 유형의 연결들로부터 선택할 수 있으며, 필요에 따라 그들의 연결 유형을 정의할 수 있다. 소셜 네트워킹 시스템(730)에서 비인격 엔터티, 버킷(buckets), 클러스터 센터, 이미지, 관심사, 페이지, 외부 시스템, 컨셉 등과 같은 다른 노드들과의 연결 또한 연결 스토어(738)에 저장된다.
소셜 네트워킹 시스템(730)은 사용자가 상호작용하는 객체에 관한 데이터를 유지한다. 이 데이터를 유지하기 위하여, 사용자 프로필 스토어(736) 및 연결 스토어(738)는 소셜 네트워킹 시스템(730)에 의해 유지되는 해당 유형의 객체들의 예를 저장한다. 각 객체 유형은 객체 유형에 적절한 정보를 저장하는데 적합한 정보 필드를 가진다. 예컨대, 사용자 프로필 스토어(736)는 사용자의 계정 및 사용자 계정에 관한 정보를 기술하는데 적합한 필드를 가진 데이터 구조를 포함한다. 특정 유형의 새로운 객체가 생성될 때, 소셜 네트워킹 시스템(730)은 해당 유형의 새로운 데이터 구조를 초기화하고 그것에 고유한 객체 식별자를 할당하며, 필요에 따라 객체에 데이터를 추가하기 시작한다. 이는 예컨대 사용자가 소셜 네트워킹 시스템(730)의 사용자가 될 때, 소셜 네트워킹 시스템(730)이 사용자 프로필 스토어(736) 내에 사용자 프로필의 새로운 인스턴스를 생성할 때, 사용자 계정에 고유 식별자를 할당할 때, 및 사용자에 의해 제공된 정보를 사용자 계정의 필드에 추가하기 시작할 때 일어날 수 있다.
연결 스토어(738)는 다른 사용자들에 대한 사용자의 연결, 외부 시스템(720)과의 연결 또는 다른 엔터티와의 연결을 기술하는데 적절한 데이터 구조를 포함한다. 연결 스토어(738)는 또한 연결 유형을 사용자의 연결과 연관시킬 수 있으며, 이는 사용자에 관한 정보로의 접속을 조절하기 위하여 사용자의 개인정보 설정과 함께 사용될 수 있다. 본 발명의 실시예에서, 사용자 프로필 스토어(736) 및 연결 스토어(738)는 연합 데이터베이스로 구현될 수 있다.
연결 스토어(738), 사용자 프로필 스토어(736) 및 활동 로그(742)에 저장된 데이터는 소셜 네트워킹 시스템(730)이 다양한 객체를 식별하기 위한 노드 및 서로 다른 객체들 사이의 관계를 식별하기 위하여 노드를 연결하는 에지를 사용하는 소셜 그래프를 생성하게 할 수 있다. 예컨대, 제1 사용자가 소셜 네트워킹 시스템(730) 내에서 제2 사용자와 연결을 확립하면, 사용자 프로필 스토어(736)로부터의 제1 사용자 및 제2 사용자의 사용자 계정은 소셜 그래프 내에서 노드로서 작용할 수 있다. 연결 스토어(738)에 의해 저장된 제1 사용자와 제2 사용자 사이의 연결은 제1 사용자와 제2 사용자와 연관된 노드 사이의 에지이다. 이 예를 계속하면, 그 후 제2 사용자는 소셜 네트워킹 시스템(730) 내에서 제1 사용자에게 메시지를 송신할 수 있다. 메시지를 송신하는 행위는 제1 사용자와 제2 사용자를 나타내는 소셜 그래프 내의 두 노드 사이의 다른 에지일 수 있으며 저장될 수 있다. 추가로, 메시지 자체는 제1 사용자 및 제2 사용자를 나타내는 노드에 연결된 다른 노드로서 식별되고 소셜 그래프 내에 포함될 수 있다.
다른 예로, 제1 사용자가 소셜 네트워킹 시스템(730)에 의해 유지되는 이미지 내에서(또는 대안으로, 소셜 네트워킹 시스템(730) 외의 다른 시스템에 의해 유지되는 이미지 내에서) 제2 사용자를 태그할 수 있다. 이미지는 그 자체로 소셜 네트워킹 시스템(730)에서 노드로 표현될 수 있다. 이 태깅 행위는 제1 사용자와 제2 사용자 사이의 에지를 생성할뿐 아니라 사용자 각각과 소셜 그래프 내의 노드인 이미지 사이의 에지를 생성할 수 있다. 또 다른 예로, 사용자가 이벤트에 참여한 경우, 사용자 및 이벤트는 사용자 프로필 스토어(736)로부터 획득된 노드들이며, 이벤트의 참석은 활동 로그(742)로부터 검색될 수 있는 노드 사이의 에지이다. 소셜 그래프를 생성하고 유지하는 것에 의해, 소셜 네트워킹 시스템(730)은 많은 다른 유형의 객체들 및 이들 객체들 사이의 상호작용과 연결을 설명하는 데이터를 포함할 수 있으며, 이들은 소셜 관련 정보의 풍부한 자원을 제공한다.
웹 서버(732)는 네트워크(750)를 통하여 소셜 네트워킹 시스템(730)을 하나 이상의 사용자 장치(710) 및/또는 하나 이상의 외부 시스템(720)에 링크한다. 웹 서버(732)는 웹 페이지뿐 아니라 자바, 자바스크립트, 플래시, XML 등과 같은 다른 웹 기반 컨텐츠를 서비스한다. 웹 서버(732)는 메일 서버 또는 소셜 네트워킹 시스템(730)과 하나 이상의 사용자 장치(710) 사이의 메시지를 수신하고 라우팅하는 다른 메시징 기능을 포함할 수 있다. 메시지는 인스턴트 메시지, 큐잉된 메시지(예컨대, 이메일), 텍스트 및 SMS 메시지 또는 임의의 다른 적절한 메시징 포맷일 수 있다.
API 요청 서버(734)는 하나 이상의 외부 시스템(720) 및 사용자 장치(710)가 하나 이상의 API 함수를 호출하는 것에 의하여 소셜 네트워킹 시스템(720)으로부터의 접속 정보를 호출하게 한다. API 요청 서버(734)는 또한 외부 시스템이 API를 호출하는 것에 의하여 소셜 네트워킹 시스템(730)으로 정보를 전송하게 할 수 있다. 일 실시예로, 외부 시스템(720)은 네트워크(750)를 통하여 소셜 네트워킹 시스템(730)으로 API 요청을 전송하며, API 요청 서버(734)는 그 API 요청을 수신한다. API 요청 서버(734)는 API 요청 서버(734)가 네트워크(750)를 통하여 외부 시스템(720)으로 통신할 적절한 응답을 생성하기 위하여 API 요청과 연관된 API를 호출하는 것에 의하여 그 요청을 처리한다. 예컨대, API 요청에 응답하여, API 요청 서버(734)는 외부 시스템(720)에 로그인하고 있는 사용자의 연결과 같이 사용자와 연관된 데이터를 수집하고 수집된 데이터를 외부 시스템(720)으로 통신한다. 다른 실시예로, 사용자 장치(710)는 외부 시스템(720)과 동일한 방식으로 API를 통하여 소셜 네트워킹 시스템(730)과 통신한다.
행위 로거(740)는 소셜 네트워킹 시스템(730) 내 및/또는 외에서 사용자 행위에 관한 웹 서버(732)로부터의 통신을 수신할 수 있다. 행위 로거(740)는 활동 로그(742)에 사용자 행위에 관한 정보를 추가하고, 이는 소셜 네트워킹 시스템(730)이 소셜 네트워킹 시스템(730) 내 및 외에서 사용자에 의해 행해진 다양한 행위를 발견할 수 있게 한다. 특정 사용자가 소셜 네트워킹 시스템(730)을 통하여 다른 노드에 대하여 행한 임의의 행위는 활동 로그(742)나 유사한 데이터베이스 또는 다른 데이터 저장장치에 유지되는 정보를 통하여 각 사용자의 계정과 연관될 수 있다. 소셜 네트워킹 시스템(730) 내에서 사용자에 의해 행해지며 식별되고 저장된 행위의 예는 다른 사용자와의 연결을 추가하는 것, 다른 사용자에게 메시지를 전송하는 것, 다른 사용자로부터의 메시지를 읽는 것, 다른 사용자와 연관된 컨텐츠를 열람하는 것, 다른 사용자에 의해 포스트된 이벤트에 참여하는 것, 이미지를 포스팅하는 것, 이미지를 포스팅하려고 하는 것, 또는 다른 사용자나 다른 객체와 상호작용하는 다른 행위를 포함할 수 있다. 사용자가 소셜 네트워킹 시스템(730) 내에서 행위를 행할 때, 행위는 활동 로그(742)에 기록된다. 일 실시예로, 소셜 네트워킹 시스템(730)은 엔트리의 데이터베이스로서 활동 로그(742)를 유지한다. 소셜 네트워킹 시스템(730) 내에서 행위가 행해지는 경우, 행위의 엔트리가 활동 로그(742)에 추가된다. 활동 로그(742)는 행위 로그로서 언급될 수 있다.
추가로, 사용자 행위는 가령 소셜 네트워킹 시스템(730)과 구별되는 외부 시스템(720)과 같이 소셜 네트워킹 시스템(730) 밖의 엔터티 내에서 일어나는 행위 및 컨셉과 연관될 수 있다. 예컨대, 행위 로거(740)는 웹 서버(732)로부터 외부 시스템(720)과 사용자의 상호작용을 기술하는 데이터를 수신할 수 있다. 이 예에서, 외부 시스템(720)은 소셜 그래프 내의 구조화된 행위 및 객체에 따라 사용자의 상호작용을 보고한다.
사용자가 외부 시스템(720)과 상호작용하는 행위의 다른 예들은 사용자가 외부 시스템(720) 또는 다른 엔터티에서 관심을 표현하는 것, 사용자가 외부 시스템(720) 또는 외부 시스템(720) 내의 웹 페이지(722a)를 논의하는 코멘트를 소셜 네트워킹 시스템(730)으로 포스팅하는 것, 사용자가 소셜 네트워킹 시스템(730)으로 URL 또는 외부 시스템(720)과 연관된 다른 식별자를 포스팅하는 것, 사용자가 외부 시스템(720)과 연관된 이벤트에 참여하는 것 또는 외부 시스템(720)과 관련있는 사용자에 의한 임의의 다른 행위를 포함한다. 따라서, 활동 로그(742)는 소셜 네트워킹 시스템(730)의 사용자와 소셜 네트워킹 시스템(730)과 별개인 외부 시스템(720) 사이의 상호작용을 기술하는 행위를 포함할 수 있다.
인증 서버(744)는 소셜 네트워킹 시스템(730)의 사용자의 하나 이상의 개인정보 설정을 시행한다. 사용자의 개인정보 설정은 사용자와 연관된 특정 정보가 어떻게 공유될 수 있는지를 결정한다. 개인정보 설정은 사용자와 연관된 특정 정보의 사양 및 정보가 공유될 수 있는 엔터티 또는 엔터티들의 사양을 포함한다. 정보가 공유될 수 있는 엔터티들의 예는 다른 사용자, 애플리케이션, 외부 시스템(720) 또는 그 정보에 잠재적으로 접속할 수 있는 임의의 엔터티를 포함할 수 있다. 사용자에 의해 공유될 수 있는 정보는 프로필 사진, 사용자와 연관된 전화번호, 사용자의 연결, 연결을 추가하고 사용자 프로필 정보를 변경하는 것과 같이 사용자에 의해 행해진 행위와 같은 사용자 계정 정보를 포함한다.
개인정보 설정 사양은 서로 다른 상세도 레벨으로 제공될 수 있다. 예컨대, 개인정보 설정은 다른 사용자와 공유될 특정 정보를 식별할 수 있으며; 개인정보 설정은 프로필 사진, 회사 전화번호 또는 집 전화번호 및 상태를 포함하는 개인정보와 같이 관련 정보의 특정 세트를 식별한다. 대안으로, 개인정보 설정은 사용자와 연관된 모든 정보에 적용할 수 있다. 특정 정보에 접속할 수 있는 엔터티 세트의 사양 또한 다양한 상세도 레벨으로 특정될 수 있다. 정보가 공유될 수 있는 다양한 엔터티 세트는 예컨대, 사용자의 모든 친구들, 친구들의 모든 친구들, 모든 애플리케이션 또는 모든 외부 시스템(720)을 포함할 수 있다. 일 실시예는 엔터티 세트의 사양이 엔터티들의 나열을 포함하게 한다. 예컨대, 사용자는 특정 정보에 접속이 허용되는 외부 시스템들(720)의 리스트를 제공할 수 있다. 다른 실시예는 사양이 정보에 접속이 허용되지 않는 예외와 함께 엔터티 세트를 포함하게 할 수 있게 한다. 예컨대, 사용자는 모든 외부 시스템(720)이 사용자의 직장 정보에 접속할 수 있게 하지만, 직장 정보에 접속이 허용되지 않는 외부 시스템(720)의 리스트를 특정할 수 있다. 특정 실시예는 특정 정보에 접속이 허용되지 않는 예외들의 리스트를 "블랙 리스트"라 부른다. 사용자에 의해 특정된 블랙 리스트에 속하는 외부 시스템(720)은 개인정보 설정에 특정된 정보에 접속하는 것이 차단된다. 정보 사양의 상세도 및 정보가 공유되는 엔터티 사양의 상세도의 다양한 조합이 가능하다. 예컨대, 모든 개인 정보가 친구들과 공유될 수 있는 반면, 모든 직업 정보는 친구의 친구와 공유될 수 있다.
인증 서버(744)는 사용자와 연관된 특정 정보가 사용자의 친구, 외부 시스템(720) 및/또는 다른 애플리케이션 및 엔터티에 의해 접속될 수 있는지를 결정하기 위한 로직을 포함한다. 외부 시스템(720)은 사용자의 회사 전화번호와 같은 사용자의 좀 더 개인적이고 민감한 정보에 접속하기 위하여 인증 서버(744)로부터의 인증을 필요로 할 수 있다. 사용자의 개인정보 설정에 기초하여, 인증 서버(744)는 다른 사용자, 외부 시스템(720), 애플리케이션 또는 다른 엔터티가 사용자에 의해 행해진 행위에 관한 정보를 포함하여, 사용자와 연관된 정보에 접속이 허용되는지를 결정한다.
소셜 네트워킹 시스템(730)은 디지털 비디오 안정화 모듈(746)을 포함할 수 있다. 디지털 비디오 안정화 모듈(746)은 진 영역이 보이지 않거나 최소 임계값보다 작다는 제약 하에서 스무스 카메라 방향들의 세트를 계산할 수 있다. 디지털 비디오 안정화 모듈(746)은 다음으로 새로운 스무싱된 카메라 방향의 세트에 기초하여 워핑된 프레임을 생성할 수 있다. 일 실시예로, 디지털 비디오 안정화 모듈(746)은 도 4의 디지털 비디오 안정화(400)로 구현될 수 있다.
하드웨어 구현
상술한 프로세스 및 특징들은 매우 다양한 기계 및 컴퓨터 시스템 구조와 매우 다양한 네트워크 및 컴퓨팅 환경으로 구현될 수 있다. 도 8은 본 발명의 실시예에 따른, 본 명세서에 개시된 실시예들 중 하나 이상을 구현하기 위하여 사용될 수 있는 컴퓨팅 시스템(800)의 예를 도시한다. 컴퓨터 시스템(800)은 컴퓨터 시스템(800)이 본 명세서에 개시된 프로세스 및 특징을 수행하도록 하는 명령어들의 세트를 포함한다. 컴퓨터 시스템(800)은 다른 기계들에 연결(네트워크)될 수 있다. 네트워크된 전개에서, 컴퓨터 시스템(800)은 클라이언트-서버 네트워크 환경에서 서버 기계 또는 클라이언트 기계로서 동작할 수 있거나 피어-투-피어(또는 분산) 네트워크 환경에서 피어 기계로서 동작할 수 있다. 본 발명의 실시예에서, 컴퓨터 시스템(800)은 본 명세서에 개시된 소셜 네트워킹 시스템의 구성요소일 수 있다. 본 발명의 실시예에서, 컴퓨터 시스템(800)은 무엇보다 소셜 네트워킹 시스템(830)의 전부 또는 일부를 구성하는 하나의 서버일 수 있다.
컴퓨터 시스템(800)은 프로세서(802), 캐시(804), 및 본 명세서에 개시된 프로세스 및 특징을 위하여 컴퓨터 판독가능한 매체에 저장된 하나 이상의 실행가능한 모듈 및 드라이버를 포함한다. 추가로, 컴퓨터 시스템(800)은 고성능 입출력(I/O) 버스(806) 및 표준 I/O 버스(808)를 포함한다. 호스트 브릿지(810)는 프로세서(802)를 고성능 I/O 버스(806)에 연결하는 반면, I/O 버스 브릿지(812)는 두 개의 버스(806 및 808)를 서로 연결한다. 시스템 메모리(814) 및 하나 이상의 네트워크 인터페이스들(816)이 고성능 I/O 버스(806)에 연결된다. 컴퓨터 시스템(800)은 비디오 메모리 및 비디오 메모리에 연결된 디스플레이 장치(미도시)를 더 포함할 수 있다. 대용량 저장장치(818) 및 I/O 포트(820)는 표준 I/O 버스(808)에 연결된다. 컴퓨터 시스템(800)은 키보드 및 포인팅 장치, 디스플레이 장치 또는 표준 I/O 버스(808)에 연결된 다른 입출력 장치를 선택적으로 포함할 수 있다. 총괄적으로, 이들 요소들은 캘리포니아 산타 클라라의 인텔사에 의해 제조된 x86-호환 프로세서 및 캘리포니아 선밸리의 AMD사에 의해 제조된 x86-호환 프로세서뿐 아니라 임의의 다른 적절한 프로세서에 기반한 컴퓨터 시스템을 포함하나 이에 제한되지 않는 컴퓨터 하드웨어 시스템의 넓은 카테고리를 나타내고자 하는 것이다.
운영 시스템은 소프트웨어 애플리케이션(미도시)으로의 데이터의 입출력을 포함하여, 컴퓨터 시스템(800)의 운영을 관리 및 제어한다. 운영 시스템은 시스템 상에 실행 중인 소프트웨어 애플리케이션과 시스템의 하드웨어 구성요소 사이의 인터페이스를 제공한다. LINUX 운영 시스템, 캘리포니아 쿠퍼티노의 애플 컴퓨터사로부터 이용가능한 애플 매킨토시 운영 시스템, UNIX 운영 시스템, Microsoft® Window®, BSD 운영 시스템 등과 같은 임의의 적절한 운영 시스템이 사용될 수 있다. 다른 구현들이 가능하다.
컴퓨터 시스템(800)의 요소들은 이하에서 좀 더 상세히 설명된다. 특히, 네트워크 인터페이스(816)는 컴퓨터 시스템과 가령 이더넷(예컨대, IEEE 802.3) 네트워크, 백본 등과 같은 임의의 넓은 범위의 네트워크 사이의 통신을 제공한다. 대용량 저장장치(818)는 상기 식별된 각각의 컴퓨팅 시스템에 의해 구현된 상술한 프로세스 및 특징을 수행하기 위한 데이터 및 프로그래밍 명령어에 대한 영구적인 저장을 제공하는 반면, 시스템 메모리(814)(예컨대, DRAM)는 프로세서(802)에 의해 실행되는 경우 데이터 및 프로그램 명령어에 대한 일시적인 저장을 제공한다. I/O 포트(820)는 컴퓨터 시스템(800)에 결합될 수 있는 추가 주변장치들 사이의 통신을 제공하는 하나 이상의 직렬 및/또는 병렬 통신 포트일 수 있다.
컴퓨터 시스템(800)은 다양한 시스템 구조를 포함할 수 있으며, 컴퓨터 시스템(800)의 다양한 구성요소들은 재배치될 수 있다. 예컨대, 캐시(804)는 프로세서(802)와 동일 칩 상에 있을 수 있다. 대안으로 캐시(804)와 프로세서(802)는 프로세서(802)를 "프로세서 코어"로 하는 "프로세서 모듈"로서 함께 패키지될 수 있다. 게다가, 본 발명의 특정 실시예들은 상술한 구성요소 모드를 요구하지 않거나 포함하지 않을 수 있다. 예컨대, 표준 I/O 버스(808)에 결합된 주변장치들은 고성능 I/O 버스(806)에 결합될 수 있다. 또한, 일부 실시예에서, 단일 버스만이 존재할 수 있으며, 컴퓨터 시스템(800)의 구성요소들이 그 단일 버스에 결합될 수 있다. 게다가, 컴퓨터 시스템(800)은 추가 프로세서, 저장 장치 또는 메모리와 같은 추가 구성요소들을 포함할 수 있다.
일반적으로 본 명세서에 개시된 프로세스 및 특징들은 운영 시스템 또는 특정 애플리케이션, 구성요소, 프로그램, 객체, 모듈 또는 "프로그램"으로 언급되는 일련의 명령어들의 일부로서 구현될 수 있다. 예컨대, 하나 이상의 프로그램들이 본 명세서에 개시된 특정 프로세스들을 실행하기 위하여 사용될 수 있다. 프로그램은 통상 컴퓨터 시스템(800) 내의 다양한 메모리 및 저장 장치들에 하나 이상의 명령어를 포함하며, 하나 이상의 명령어들은 하나 이상의 프로세서에 의해 판독되고 실행되는 경우 컴퓨터 시스템(800)이 본 명세서에 개시된 프로세스 및 특징들을 실행하는 동작을 수행하게 한다. 본 명세서에 개시된 프로세스 및 특징들은 소프트웨어, 펌웨어, 하드웨어(예컨대, 애플리케이션 특정 집적 회로), 또는 그들의 임의의 조합으로 구현될 수 있다.
하나의 구현으로, 본 명세서에 개시된 프로세스 및 특징들은 분산 컴퓨팅 환경에서 개별적으로 또는 집합적으로, 컴퓨터 시스템(800)에 의해 실행되는 일련의 실행가능한 모듈로서 구현된다. 상술한 모듈들은 하드웨어, 컴퓨터 판독가능한 매체(또는 기계 판독가능한 매체) 상에 저장된 실행가능한 모듈들, 또는 그들의 조합에 의해 실현될 수 있다. 예컨대, 모듈들은 프로세서(802)와 같이 하드웨어 시스템에서 프로세서에 의해 실행될 다수의 또는 일련의 명령어들을 포함할 수 있다. 초기에, 일련의 명령어들은 대용량 저장 장치(818)와 같은 저장 장치 상에 저장될 수 있다. 그러나, 일련의 명령어들은 임의의 적절한 컴퓨터 판독가능한 저장 매체에 저장될 수 있다. 게다가, 일련의 명령어들은 국지적으로 저장될 필요가 없으며, 네트워크 인터페이스(816)를 통하여 네트워크 상의 서버와 같은 원격 저장 장치로부터 수신될 수 있다. 명령어들은 대용량 저장 장치(818)와 같은 저장 장치로부터 시스템 메모리(814)로 복사된 후 프로세서(802)에 의해 접속되어 실행된다. 다양한 구현으로, 모듈 또는 모듈들은 병령 프로세싱 환경에서의 다수의 서버들과 같이 하나 또는 다수의 위치에서 하나 또는 다수의 프로세서들에 의해 실행될 수 있다.
컴퓨터 판독가능한 매체의 예는 휘발성 및 비휘발성 메모리 장치와 같은 기록가능한 유형의 매체; 고체상태 메모리; 플로피 및 다른 제거가능한 디스크; 하드 디스크 드라이브; 자기 매체; 광학 디스크(예컨대, 컴팩트 디스크 리드-온니 메모리(CD ROMS), DVDs(Digital Versatile Disks); 다른 유사한 비일시적(또는 일시적), 유형의(또는 무형의) 저장 매체; 또는 본 명세서에 개시된 프로세스 및 특징들 중 임의의 하나 이상을 실행하기 위하여 컴퓨터 시스템(800)에 의한 실행을 위한 일련의 명령어들을 저장, 인코딩 또는 수반하는데 적절한 임의 유형의 매체를 포함하나 이에 제한되지 않는다.
설명을 위하여, 본 발명의 완전한 이해를 제공하기 위하여 수많은 특정 상세사항이 개시된다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 명세서의 실시예들이 이러한 특정 상세사항없이 실시될 수 있음을 명확하게 인식할 수 있을 것이다. 일부 예에서 설명의 모호함을 피하기 위하여 모듈, 그조, 프로세스, 특징 및 장치들이 블럭도의 형태로 도시된다. 다른 예에서, 데이터 및 로직 흐름을 나타내기 위하여 기능 블럭도 및 흐름도들이 도시된다. 블럭도 및 흐름도의 구성요소들(예컨대, 모듈, 블럭, 구조, 장치, 특징 등)은 본 명세서에 명시적으로 설명되거나 도시되는 것 외의 방식으로 다양하게 결합, 분리, 제거, 재배치 및 대체될 수 있다.
"일 실시예", "실시예", "다른 실시예", "또 다른 실시예" 등에 대한 본 명세서 내의 언급은 그 실시예와 관련하여 설명되는 특정 특징, 설계, 구조 또는 특성이 본 명세서의 적어도 일 실시예에 포함됨을 의미한다. 예컨대, 본 명세서의 다양한 위치에서 "일 실시예로", "실시예에서" 또는 "다른 실시예로"라는 구문은 반드시 모두 동일한 실시예를 언급하는 것은 아니며, 다른 실시예와 상호배타적인 개별 또는 대안 실시예들을 언급하는 것도 아니다. 또한 "실시예" 등에 대한 명시적인 언급이 있는지 여부에 상관없이 다양하게 결합되거나, 일부 실시예에 포함되거나 다른 실시예에 다양하게 생략될 수 있는 다양한 특징들이 개시된다. 마찬가지로, 일부 실시예에 대하여 바람직하거나 필요할 수 있지만 다른 실시예에서는 그렇지 않은 다양한 특징들이 개시된다.
본 명세서에 사용되는 언어는 가독성 및 지시적 목적으로 이론적으로 선택되었으며, 본 발명의 기술적 사상을 한정하거나 확정하기 위하여 선택된 것은 아니다. 따라서, 본 발명의 범위는 발명의 상세한 설명에 의하여 제한되지 않으며, 오직 본 명세서에 근거한 출원의 청구범위에 의해서만 제한되는 것으로 의도된다. 따라서, 본 발명의 실시예의 개시는 설명을 위한 것으로 본 발명의 범위를 제한하고자 하는 것은 아니며, 본 발명의 범위는 이하의 청구범위에 개시된다.

Claims (20)

  1. 컴퓨터 시스템에 의해, 관련 타임 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트를 포함하는 디지털 비디오 데이터를 제공하는 단계; 및
    컴퓨터 시스템에 의해, 스무싱된(smoothed) 이미지 프레임들의 결과 세트 내의 빈 영역의 양을 최소화하면서 연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것에 의해 카메라 방향 데이터의 스무싱된 세트를 생성하는 생성하는 단계를 포함하고,
    카메라 방향 데이터의 세트는 카메라에 의한 디지털 비디오의 캡처 동안의 카메라의 방향에 기반하고,
    스무싱된 이미지 프레임들의 결과 세트는 상기 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배치되는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 영(0)으로 최소화되는 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 임계값 이하로 최소화되는 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    보정된 이미지 프레임들의 세트를 형성하기 위하여 이미지 프레임들의 세트에 대한 관련 타임 스탬프들 및 카메라 방향 데이터의 스무싱된 세트에 기초하여 이미지 프레임들의 세트를 워핑(warping)하는 단계를 더 포함하는 컴퓨터 구현 방법.
  5. 제 4 항에 있어서,
    보정된 이미지 프레임들의 세트를 형성하기 위하여 이미지 프레임들의 세트에 대한 관련 타임 스탬프들 및 카메라 방향 데이터의 스무싱된 세트에 기초하여 이미지 프레임들의 세트를 워핑(warping)하는 단계는:
    개별 이미지 프레임을 각각 관련 타임 스탬프 및 카메라 방향을 가지는 복수의 서브섹션으로 분할하는 단계; 및
    개별 보정된 이미지 프레임을 형성하기 위하여 관련 타임 스탬프 및 카메라 방향에 기초하여 각 서브섹션을 재배치하는 단계를 포함하는 컴퓨터 구현 방법.
  6. 제 4 항에 있어서,
    보정된 이미지 프레임들의 세트를 비디오로 디스플레이하는 단계를 더 포함하는 컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    스무싱된 이미지 프레임들의 결과 세트 내의 빈 영역의 양은 임계값 이하로 최소화되는 컴퓨터 구현 방법.
  8. 제 7 항에 있어서,
    빈 영역의 양을 임계값 이하로 복원하는 단계를 더 포함하는 컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 휴대용 장치의 자이로스코프로부터 제공되는 컴퓨터 구현 방법.
  10. 제 1 항에 있어서,
    이미지 프레임들의 세트는 휴대용 기기의 카메라로부터 제공되는 컴퓨터 구현 방법.
  11. 제 1 항에 있어서,
    관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 모바일 폰, 디지털 카메라를 포함하는 휴대용 장치의 자이로스코프로부터 제공되고,
    이미지 프레임들의 세트는 디지털 카메라로부터 제공되는 컴퓨터 구현 방법.
  12. 제 1 항에 있어서,
    카메라 방향 데이터의 스무싱된 세트를 생성하는 단계는 기울기 하강에 기초한 반복 최적화를 포함하는 컴퓨터 구현 방법.
  13. 제 1 항에 있어서,
    카메라 방향 데이터의 스무싱된 세트를 생성하는 단계는 가우시안 필터에 기초한 필터링을 포함하는 컴퓨터 구현 방법.
  14. 제 1 항에 있어서,
    카메라 방향 데이터의 스무싱된 세트를 생성하는 단계는 시간 도함수에 기초한 필터링을 포함하는 컴퓨터 구현 방법.
  15. 제 1 항에 있어서,
    카메라 방향 데이터의 세트는 임의의 병진운동 없는 회전을 포함하는 컴퓨터 구현 방법.
  16. 제 1 항에 있어서,
    카메라 방향 데이터의 세트는 회전 및 병진운동을 모두 구비한 벡터를 포함하는 컴퓨터 구현 방법.
  17. 제 1 항에 있어서,
    카메라 방향 데이터의 스무싱된 세트를 생성하는 단계는 소셜 네트워킹 시스템에 의해 수행되는 컴퓨터 구현 방법.
  18. 제 17 항에 있어서,
    관련 타임 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트는 소셜 네트워킹 시스템의 사용자에 의해 소셜 네트워킹 시스템으로 업로드되는 컴퓨터 구현 방법.
  19. 적어도 하나의 프로세서, 및
    명령어를 저장하는 메모리를 포함하는 시스템으로서, 메모리는 적어도 하나의 프로세서로 하여금:
    관련 타임 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트를 포함하는 디지털 비디오 데이터를 제공하는 단계; 및
    스무싱된(smoothed) 이미지 프레임들의 결과 세트 내의 빈 영역의 양을 최소화하면서 연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것에 의해 카메라 방향 데이터의 스무싱된 세트를 생성하는 생성하는 단계를 수행하게 명령하도록 구성되고,
    연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것은 카메라 방향 데이터의 세트의 적어도 일부에 기반하고,
    스무싱된 이미지 프레임들의 결과 세트는 상기 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배치되는 시스템.
  20. 명령어를 저장하는 비일시적 컴퓨터 저장매체로서, 명령어는 실행될 때, 컴퓨터 시스템으로 하여금:
    관련 타임 스탬프를 가지는 이미지 프레임들의 세트 및 관련 타임 스탬프를 가지는 카메라 방향 데이터의 세트를 포함하는 디지털 비디오 데이터를 제공하는 단계; 및
    스무싱된(smoothed) 이미지 프레임들의 결과 세트 내의 빈 영역의 양을 최소화하면서 연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것에 의해 카메라 방향 데이터의 스무싱된 세트를 생성하는 생성하는 단계를 포함하는 컴퓨터 구현 방법을 수행하도록 야기하고,
    카메라 방향 데이터의 세트는 카메라에 의한 디지털 비디오의 캡처 동안의 카메라의 방향에 기반하고,
    연속적인 이미지 프레임들 사이의 회전률을 최소화하는 것은 카메라 방향 데이터의 세트의 적어도 일부에 기반하고,
    스무싱된 이미지 프레임들의 결과 세트는 상기 카메라 방향 데이터의 스무싱된 세트에 기초하여 재배치되는 비일시적 컴퓨터 저장매체.
KR1020157018261A 2012-12-11 2013-12-11 제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법 KR102003012B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261735976P 2012-12-11 2012-12-11
US61/735,976 2012-12-11
US14/101,252 US9071756B2 (en) 2012-12-11 2013-12-09 Systems and methods for digital video stabilization via constraint-based rotation smoothing
US14/101,252 2013-12-09
EP13196486.8 2013-12-10
EP13196486.8A EP2744192B1 (en) 2012-12-11 2013-12-10 Systems and methods for digital video stabilization via constraint-based rotation smoothing
PCT/US2013/074444 WO2014093517A1 (en) 2012-12-11 2013-12-11 Systems and methods for digital video stabilization via constraint-based rotation smoothing

Publications (2)

Publication Number Publication Date
KR20150095782A KR20150095782A (ko) 2015-08-21
KR102003012B1 true KR102003012B1 (ko) 2019-07-24

Family

ID=49726634

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157018261A KR102003012B1 (ko) 2012-12-11 2013-12-11 제약-기반 회전 스무싱을 통한 디지털 비디오 안정화 시스템 및 방법

Country Status (11)

Country Link
US (4) US9071756B2 (ko)
EP (1) EP2744192B1 (ko)
JP (3) JP6608700B2 (ko)
KR (1) KR102003012B1 (ko)
CN (1) CN104982027B (ko)
AU (3) AU2013359372B2 (ko)
BR (1) BR112015013565A2 (ko)
CA (1) CA2893802C (ko)
IL (1) IL239249B (ko)
MX (1) MX345710B (ko)
WO (1) WO2014093517A1 (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140184615A1 (en) * 2012-12-28 2014-07-03 Nokia Corporation Sequential Rendering For Field-Sequential Color Displays
US9554048B2 (en) * 2013-09-26 2017-01-24 Apple Inc. In-stream rolling shutter compensation
CN104954631B (zh) * 2014-03-25 2018-02-27 腾讯科技(深圳)有限公司 一种视频处理方法、装置和系统
US9413963B2 (en) 2014-05-30 2016-08-09 Apple Inc. Video image stabilization
US9674438B2 (en) 2014-07-06 2017-06-06 Apple Inc. Low light video image stabilization strength modulation
CN105306804B (zh) * 2014-07-31 2018-08-21 北京展讯高科通信技术有限公司 智能终端及其视频稳像方法及装置
US9596411B2 (en) 2014-08-25 2017-03-14 Apple Inc. Combined optical and electronic image stabilization
US9398217B2 (en) 2014-10-15 2016-07-19 Microsoft Technology Licensing, Llc Video stabilization using padded margin pixels
US9392174B2 (en) * 2014-12-11 2016-07-12 Facebook, Inc. Systems and methods for time-lapse selection subsequent to capturing media content
US9948920B2 (en) 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
US10068338B2 (en) 2015-03-12 2018-09-04 Qualcomm Incorporated Active sensing spatial resolution improvement through multiple receivers and code reuse
US9530215B2 (en) 2015-03-20 2016-12-27 Qualcomm Incorporated Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology
US9635339B2 (en) 2015-08-14 2017-04-25 Qualcomm Incorporated Memory-efficient coded light error correction
US9846943B2 (en) 2015-08-31 2017-12-19 Qualcomm Incorporated Code domain power control for structured light
CN107925722B (zh) 2015-11-16 2020-05-12 谷歌有限责任公司 用于补偿相机运动的方法和设备
CN105282400B (zh) * 2015-11-20 2018-07-13 北京理工大学 一种基于几何插值的高效视频稳定方法
WO2017106076A1 (en) 2015-12-16 2017-06-22 Gopro, Inc. Dynamic synchronization of frame rate to a detected cadence in a time lapse image sequence
CN108432222A (zh) * 2015-12-22 2018-08-21 深圳市大疆创新科技有限公司 支持包围式成像的系统、方法和移动平台
US11477382B2 (en) * 2016-02-19 2022-10-18 Fotonation Limited Method of stabilizing a sequence of images
WO2017140438A1 (en) * 2016-02-19 2017-08-24 Fotonation Limited A method of stabilizing a sequence of images
US9787902B1 (en) 2016-06-10 2017-10-10 Apple Inc. Video image stabilization with enforced stabilization constraints
AU2017344761B2 (en) * 2016-10-20 2022-09-15 Spookfish Innovations Pty Ltd An image synthesis system
US10547784B2 (en) * 2017-06-19 2020-01-28 SighTour Technologies, Inc. Image stabilization
US10477064B2 (en) * 2017-08-21 2019-11-12 Gopro, Inc. Image stitching with electronic rolling shutter correction
US11245887B2 (en) 2017-09-14 2022-02-08 Samsung Electronics Co., Ltd. Electronic device and operation method therefor
US10462370B2 (en) 2017-10-03 2019-10-29 Google Llc Video stabilization
US10796185B2 (en) * 2017-11-03 2020-10-06 Facebook, Inc. Dynamic graceful degradation of augmented-reality effects
US10171738B1 (en) 2018-05-04 2019-01-01 Google Llc Stabilizing video to reduce camera and face movement
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction
WO2019222544A1 (en) * 2018-05-16 2019-11-21 Iooi System and method for navigating content from multiple users on a digital device
US10587807B2 (en) * 2018-05-18 2020-03-10 Gopro, Inc. Systems and methods for stabilizing videos
JP2020031264A (ja) * 2018-08-20 2020-02-27 ソニーセミコンダクタソリューションズ株式会社 信号処理装置、撮像装置、信号処理方法
US10750092B2 (en) 2018-09-19 2020-08-18 Gopro, Inc. Systems and methods for stabilizing videos
KR102573302B1 (ko) 2018-10-10 2023-08-31 삼성전자 주식회사 영상의 안정화를 위한 카메라 모듈, 그것을 포함하는 전자 장치 및 전자 장치의 영상 안정화 방법
JP7206797B2 (ja) * 2018-10-22 2023-01-18 株式会社リコー 撮像装置、情報処理装置、補正値計算方法およびプログラム
US10911680B2 (en) * 2018-12-28 2021-02-02 Intel Corporation Method and system of geolocation and attitude correction for mobile rolling shutter cameras
CN109379536B (zh) * 2018-12-29 2020-07-31 深圳看到科技有限公司 画面生成方法、装置、终端及对应的存储介质
WO2020220292A1 (zh) * 2019-04-30 2020-11-05 深圳市大疆创新科技有限公司 电子增稳方法、图像采集设备、可移动平台
US11470254B1 (en) * 2019-06-21 2022-10-11 Gopro, Inc. Systems and methods for assessing stabilization of videos
US11659279B2 (en) 2019-06-21 2023-05-23 Gopro, Inc. Systems and methods for stabilizing videos
KR102176273B1 (ko) * 2019-07-04 2020-11-09 재단법인대구경북과학기술원 동영상 수평 조정 시스템, 방법 및 컴퓨터 프로그램
CN112492223B (zh) * 2019-07-23 2023-05-12 影石创新科技股份有限公司 一种相机镜头平滑处理方法、装置及便携式终端
US11138804B2 (en) 2019-08-02 2021-10-05 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
US11948242B2 (en) 2019-08-02 2024-04-02 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
CN110430365B (zh) * 2019-08-26 2021-10-01 Oppo广东移动通信有限公司 防抖方法、装置、计算机设备和存储介质
US11694311B2 (en) * 2020-03-04 2023-07-04 Nec Corporation Joint rolling shutter image stitching and rectification
US11190689B1 (en) 2020-07-29 2021-11-30 Google Llc Multi-camera video stabilization
CN112561839B (zh) * 2020-12-02 2022-08-19 北京有竹居网络技术有限公司 视频裁剪方法、装置、存储介质及电子设备
US11405557B1 (en) * 2021-07-20 2022-08-02 Locus Robotics Corp. Rolling shutter compensation for moving digital optical camera sensors
US11863791B1 (en) 2021-11-17 2024-01-02 Google Llc Methods and systems for non-destructive stabilization-based encoder optimization

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120307084A1 (en) 2011-06-06 2012-12-06 Mantzel William E Correcting rolling shutter using image stabilization

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPO793897A0 (en) 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART25)
US6552744B2 (en) 1997-09-26 2003-04-22 Roxio, Inc. Virtual reality camera
US7015954B1 (en) 1999-08-09 2006-03-21 Fuji Xerox Co., Ltd. Automatic video system using multiple cameras
US7119837B2 (en) * 2002-06-28 2006-10-10 Microsoft Corporation Video processing system and method for automatic enhancement of digital video
US7495694B2 (en) 2004-07-28 2009-02-24 Microsoft Corp. Omni-directional camera with calibration and up look angle improvements
US8207964B1 (en) 2008-02-22 2012-06-26 Meadow William D Methods and apparatus for generating three-dimensional image data models
US7542034B2 (en) * 2004-09-23 2009-06-02 Conversion Works, Inc. System and method for processing video images
JP4793120B2 (ja) 2006-06-21 2011-10-12 ソニー株式会社 手振れ補正方法、手振れ補正方法のプログラム、手振れ補正方法のプログラムを記録した記録媒体及び手振れ補正装置
US20080165280A1 (en) 2007-01-05 2008-07-10 Deever Aaron T Digital video stabilization with manual control
US7817187B2 (en) * 2007-06-27 2010-10-19 Aptina Imaging Corporation Image blur correction using a secondary camera
JP5251410B2 (ja) * 2008-10-03 2013-07-31 株式会社ニコン カメラワーク算出プログラム、撮像装置及びカメラワーク算出方法
US8363128B2 (en) * 2009-08-10 2013-01-29 Samsung Electronics Co., Ltd. Image processing apparatus and image processing method
US20110085728A1 (en) * 2009-10-08 2011-04-14 Yuli Gao Detecting near duplicate images
JP2011114649A (ja) * 2009-11-27 2011-06-09 Sanyo Electric Co Ltd 撮像装置
CN101917602B (zh) * 2010-08-26 2012-07-04 四川大学 基于高分辨率摄像头的数字视频智能监控设备及数据处理方法
US8488010B2 (en) * 2010-09-21 2013-07-16 Hewlett-Packard Development Company, L.P. Generating a stabilized video sequence based on motion sensor data
US8531535B2 (en) 2010-10-28 2013-09-10 Google Inc. Methods and systems for processing a video for stabilization and retargeting
US8964041B2 (en) * 2011-04-07 2015-02-24 Fr Vision Ab System and method for video stabilization of rolling shutter cameras
JP5734082B2 (ja) 2011-05-11 2015-06-10 キヤノン株式会社 撮像装置及びその制御方法、並びにプログラム
US20130107066A1 (en) * 2011-10-27 2013-05-02 Qualcomm Incorporated Sensor aided video stabilization
US20130121559A1 (en) * 2011-11-16 2013-05-16 Sharp Laboratories Of America, Inc. Mobile device with three dimensional augmented reality
US9041819B2 (en) 2011-11-17 2015-05-26 Apple Inc. Method for stabilizing a digital video
US20130162518A1 (en) * 2011-12-23 2013-06-27 Meghan Jennifer Athavale Interactive Video System

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120307084A1 (en) 2011-06-06 2012-12-06 Mantzel William E Correcting rolling shutter using image stabilization

Also Published As

Publication number Publication date
IL239249A0 (en) 2015-07-30
CN104982027A (zh) 2015-10-14
US9674440B2 (en) 2017-06-06
US9071756B2 (en) 2015-06-30
MX2015007499A (es) 2015-12-15
JP2020005326A (ja) 2020-01-09
AU2017200248A1 (en) 2017-02-02
AU2017200248B2 (en) 2017-12-14
US20150222818A1 (en) 2015-08-06
KR20150095782A (ko) 2015-08-21
IL239249B (en) 2019-08-29
BR112015013565A2 (pt) 2019-12-17
AU2018201829A1 (en) 2018-04-12
US20140160309A1 (en) 2014-06-12
JP2018085775A (ja) 2018-05-31
EP2744192A3 (en) 2016-09-14
US9554045B2 (en) 2017-01-24
EP2744192A2 (en) 2014-06-18
JP6937809B2 (ja) 2021-09-22
EP2744192B1 (en) 2021-05-19
CA2893802C (en) 2019-08-13
AU2013359372B2 (en) 2016-10-13
JP6605640B2 (ja) 2019-11-13
AU2018201829B2 (en) 2019-06-13
US20170180647A1 (en) 2017-06-22
JP2016501497A (ja) 2016-01-18
WO2014093517A1 (en) 2014-06-19
US20150002686A1 (en) 2015-01-01
MX345710B (es) 2017-02-13
AU2013359372A1 (en) 2015-07-02
CA2893802A1 (en) 2014-06-19
CN104982027B (zh) 2018-07-27
US10511773B2 (en) 2019-12-17
JP6608700B2 (ja) 2019-11-20

Similar Documents

Publication Publication Date Title
JP6605640B2 (ja) 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法
US10878579B2 (en) Systems and methods for determining optical flow
JP6412129B2 (ja) 画像を変換するためのシステム及び方法
US9774784B2 (en) Systems and methods for combining multiple frames to produce media content with simulated exposure effects
US20180007382A1 (en) Systems and methods for determining motion vectors
US20160148648A1 (en) Systems and methods for improving stabilization in time-lapse media content
US10725637B2 (en) Systems and methods for providing image perspective adjustment and automatic fitting
US20210027434A1 (en) Systems and Methods for Leveling Images

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant