KR20200028038A - 이미지 변환을 위한 시스템 및 방법 - Google Patents

이미지 변환을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200028038A
KR20200028038A KR1020207006399A KR20207006399A KR20200028038A KR 20200028038 A KR20200028038 A KR 20200028038A KR 1020207006399 A KR1020207006399 A KR 1020207006399A KR 20207006399 A KR20207006399 A KR 20207006399A KR 20200028038 A KR20200028038 A KR 20200028038A
Authority
KR
South Korea
Prior art keywords
image
point
user
rotation
granularity
Prior art date
Application number
KR1020207006399A
Other languages
English (en)
Other versions
KR102112070B1 (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 KR20200028038A publication Critical patent/KR20200028038A/ko
Application granted granted Critical
Publication of KR102112070B1 publication Critical patent/KR102112070B1/ko

Links

Images

Classifications

    • H04N5/23222
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • 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/64Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/606Rotation of whole images or parts thereof by memory addressing or mapping
    • G06T5/002
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • 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/63Control of cameras or camera modules by using electronic viewfinders
    • H04N23/631Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
    • 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/63Control of cameras or camera modules by using electronic viewfinders
    • H04N23/633Control of cameras or camera modules by using electronic viewfinders for displaying additional information relating to control or operation of the camera
    • H04N23/635Region indicators; Field of view indicators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • H04N5/23229

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • User Interface Of Digital Computer (AREA)
  • Studio Devices (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Transforming Electric Information Into Light Information (AREA)
  • Image Processing (AREA)
  • Gyroscopes (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

시스템, 방법, 및 컴퓨터-판독가능한 매체는 모바일 장치로 캡쳐된 이미지를 획득한다. 이미지가 캡쳐된 시간에 또는 이미지가 캡쳐된 시간에 가까운 모바일 장치의 움직임 센서 데이터가 획득된다. 회전각은 움직임 센서 데이터에 기반하여 계산되고, 이미지는 회전각에 기반하여 변환된다. 다른 양태에서, 사용자 인터페이스는 이미지 변환에 대한 사용자 제어를 가능하게 한다. 사용자 인터페이스는 2개 이상의 입상도로 디스플레이에서 이미지를 회전시키는 것에 대한 사용자 제어를 가능하게 한다. 회전점은 사용자-정의될 수 있다. 회전된 이미지는, 변환된 이미지를 디스플레이하기 위해 뷰잉 프레임 내에 맞춰지도록 스케일링될 수 있다.

Description

이미지 변환을 위한 시스템 및 방법{SYSTEMS AND METHODS FOR TRANSFORMING AN IMAGE}
본 발명은 일반적으로 이미지 프로세싱 분야에서 컴퓨터로 구현되는 방법, 시스템 및 컴퓨터 판독가능한 매체에 관한 것이다.
오늘날, 사람들은 사진을 찍는데 이용가능한 많은 옵션을 가진다. 필름 또는 디지털 형태로 이미지를 캡쳐하는데 독점적으로 전용되는 전통적인 카메라에 추가로, 스마트폰과 같은 많은 모바일 장치들은 사진을 찍는 능력을 가진다. 예컨대, 모바일 장치는, 사용자가 모바일 장치에서 카메라로 사진을 찍을 수 있게 하는 카메라 및 이미지 캡쳐 소프트웨어를 포함할 수 있다. 이러한 이미지들은 모바일 장치로 저장되어서 이후에 열람될 수 있다. 추가로, 일부 인터넷 소셜 네트워크는 사용자들에게 사진을 온라인에서 공유할 수 있는 능력을 제공한다. 이러한 사진을 공유하는 소셜 네트워크의 구성원들은 그들의 모바일 장치로 사진을 찍을 수 있고, 사진을 다른 사람들이 보도록 사진을 공유하는 소셜 네트워크에 업로드할 수 있다.
이미지는 캡쳐된 후 수정될 수 있다. 예컨대, 소셜 네트워크를 지원하는 모바일 장치 또는 시스템은 이미지의 수동적 변경을 허용하는 필터 또는 다른 타입의 편집 도구를 제공할 수 있다. 이러한 편집 도구를 사용하여, 이미지의 소유자는 때때로 심미감의 향상을 제공하기 위해 이미지를 수정하는 것을 선택할 수 있다. 다른 예에서, 편집 도구는 이미지의 소유자가 바람직하지 않다고 여겨지는 이미지의 다른 양태를 수정하도록 할 수 있다.
본 발명의 설명 중에 포함되어 있다.
본 발명은 특히 기울기(tilt)를 감안하도록 이미지를 변환하는 기술을 제공한다. 본 명세서의 다양한 양태로, 모바일 장치로 캡쳐된 이미지를 획득하는 시스템, 방법, 및 컴퓨터-판독가능한 매체가 제공된다. 이미지는 바람직하게는 모바일 장치에 내장된 카메라에 의해 캡쳐된다. 모바일 장치는 특히, 제한 없이, 모바일 통신 장치거나, 바람직하게는 전자 모바일 통신 장치이거나, 예컨대 휴대 전화이거나, 특히 스마트폰이거나, 또는 무선 통신을 위한 임의의 다른 핸드-헬드(hand-held) 모바일 통신 장치다.
이미지가 켭쳐된 시간에 또는 그 시간에 가까운 모바일 장치의 움직임 센서 데이터가 또한, 요구된다. 이러한 목적을 위해, 모바일 장치는 모바일 장치의 움직임 및 배향을 모니터링하고 대응하는 움직임 센서 데이터를 출력하는 적어도 하나의 움직임 센서를 포함할 수 있다. 움직임 센서는 예컨대, 가속력 및/또는 회전력이나 속도를 측정할 수 있다. 일실시예로, 움직임 센서 데이터의 획득은 자이로스코프로부터 데이터를 샘플링하는 것을 포함한다. 샘플링된 데이터는, 노이즈(noise)를 감소시키도록 저역 통과 필터에 의해 필터링될 수 있다. 일실시예로, 움직임 센서 데이터의 획득은 모바일 장치상의 가속도계로부터 데이터를 샘플링하는 것을 포함한다.
회전각(angle of rotation)은 움직임 센서 데이터에 기반하여 계산되고, 이미지는 회전각에 기반하여 변환된다.
일실시예로, 이미지의 변환은 계산된 회전각에 기반하여 이미지를 회전시키는 것을 포함한다. 이미지의 변환은 추가로 또는 대안으로, 모바일 장치의 사용자 인터페이스의 뷰잉 프레임(viewing frame)의 치수(dimension)에 기반하여 이미지를 스케일링하는 것을 포함할 수 있다.
일실시예로, 변환된 이미지는 모바일 장치에서 디스플레이된다.
일실시예로, 회전각의 결정은 모바일 장치에 의해 수행된다.
일실시예로, 이미지의 변환은 모바일 장치에 의해 수행된다.
일실시예로, 사용자가 이미지의 자동 변환을 선택하도록 허용하는 사용자 입력 요소가 제공되고, 이미지의 자동 변환에 대한 선택이 수신된다. 이미지의 변환은 선택의 수신에 응답한다.
일실시예로, 획득된 이미지는 이미지가 변환되기 전에 모바일 장치의 디스플레이에 디스플레이된다. 변환된 이미지는, 이미지가 변환된 후에 획득된 이미지 대신에 디스플레이에 디스플레이된다.
일실시예로, 회전각은 미리결정된 임계 각도와 비교된다. 변환된 이미지는 회전각이 미리결정된 임계 각도를 초과하지 않을 때 디스플레이된다.
일실시예로, 제1 입상도(granularity)로 변환된 이미지의 사용자-제어되는 회전을 가능하게 하는 제1 컨트롤 요소를 포함하는 사용자 인터페이스가 디스플레이된다. 제1 컨트롤 요소에 적용되는 제1 사용자 입력이 수신되고, 변환된 이미지는 제1 사용자 입력에 기반하여 제1 입상도로 회전된다.
일실시예로, 제2 입상도로 변환된 이미지의 사용자-제어되는 회전을 가능하게 하는 사용자 인터페이스의 제2 컨트롤 요소가 디스플레이된다. 제2 컨트롤 요소에 적용되는 제2 사용자 입력이 수신되고, 변환된 이미지는 제2 사용자 입력에 기반하여 제2 입상도로 회전된다.
일실시예로, 기준 위치로부터 제1 방향에서의 제1 컨트롤 요소 및 제2 컨트롤 요소의 움직임은 이미지를 제1 회전 방향으로 회전시키고, 기준 위치로부터 제2 방향에서의 제1 컨트롤 요소 및 제2 컨트롤 요소의 움직임은 이미지를 제2 회전 방향으로 회전시킨다.
일실시예로, 사용자 인터페이스는 변환된 이미지를 그 주위로 회전시킬 회전점의 사용자 정의를 가능하게 한다. 회전점을 정의하는 사용자 인터페이스에 적용된 제1 사용자 입력이 수신된다. 회전의 방향 및 입상도를 정의하는 사용자 인터페이스에 적용된 제2 사용자 입력이 수신된다. 변환된 이미지는 제1 사용자 입력 및 제2 사용자 입력에 기반하여 회전의 방향 및 입상도에 따라 회전점을 중심으로 회전된다.
일실시예로, 이미지의 변환은 소셜 네트워킹 시스템에 의해 수행된다.
본 발명의 다수의 다른 특징들 및 실시예들은 첨부되는 도면 및 이하의 상세한 설명으로부터 자명해질 것이다.
본 발명의 설명 중에 포함되어 있다.
도 1은 본 명세서의 실시예에 따른, 예시적인 모바일 장치를 도시한다.
도 2는 본 명세서의 실시예에 따른, 도 1에 도시된 예시적인 이미지 변환 모듈을 도시한다.
도 3은 본 명세서의 실시예에 따른, 움직임 센서 데이터에 기반하여 이미지를 변환하는 예시적인 프로세스를 도시한다.
도 4a는 본 명세서의 실시예에 따른, 변환 전에 이미지를 디스플레이하는 예시적인 사용자 인터페이스를 도시한다.
도 4b는 본 명세서의 실시예에 따른, 이미지가 회전된 후의 도 4a에 도시된 예시적인 사용자 인터페이스를 도시한다.
도 4c는 본 명세서의 실시예에 따른, 이미지가 스케일링되고 회전된 후의 도 4a에 도시된 예시적인 사용자 인터페이스를 도시한다.
도 5a는 본 명세서의 실시예에 따른, 이미지의 변환에 대한 사용자 컨트롤을 제공하는 예시적인 사용자 인터페이스를 도시한다.
도 5b는 본 명세서의 실시예에 따른, 이미지가 변환된 후의 도 5a에 도시된 예시적인 사용자 인터페이스를 도시한다.
도 6a는 본 명세서의 실시예에 따른, 예시적인 컨트롤 요소를 도시한다.
도 6b는 본 명세서의 실시예에 따른, 예시적인 컨트롤 요소를 도시한다.
도 7은 본 명세서의 실시예에 따른, 이미지를 변환하는 예시적인 프로세스를 도시한다.
도 8은 본 명세서의 실시예에 따른, 사용자에 의해 정의된 회전점을 중심으로 이미지를 변환하는 예시적인 프로세스를 도시한다.
도 9a는 본 명세서의 실시예에 따른, 도 8에서의 프로세스가 수행되기 전의 이미지를 디스플레이하는 예시적인 사용자 인터페이스를 도시한다.
도 9b는 본 명세서의 실시예에 따른, 도 8의 프로세스에 따라 변환된 이미지를 디스플레이하는 도 9a의 예시적인 사용자 인터페이스를 도시한다.
도 10은 본 명세서의 실시예에 따른, 이미지를 변환하는 예시적인 시스템의 네트워크 다이어그램이다.
도 11은 본 명세서의 실시예에 따른, 본 명세서에 기술된 하나 이상의 실시예들을 구현하는데 사용될 수 있는 컴퓨터 시스템의 예를 도시한다.
도면들은 오로지 예시적인 목적을 위해 본 발명의 다양한 실시예들을 도시하며, 도면들은 같은 구성요소를 식별하기 위해 같은 참조 번호를 사용한다. 통상의 기술자는 다음의 설명으로부터 도면들에 도시된 구조들 및 방법들의 대안적 실시예가 본 명세서에 기술된 발명의 원리로부터 벗어남이 없이 이용될 수 있음을 쉽게 인식할 것이다.
이미지 변환
모바일 장치에 내장된 카메라를 포함하는 카메라에 의해 캡쳐된 이미지는 약간의 결점을 가질 수 있다. 결점은 이미지 캡쳐 프로세스에서의 불규칙성 및 다른 요인을 반영할 수 있다. 예컨대, 카메라가 이미지의 캡쳐 시간에 기울어질 때, 결과되는 캡쳐된 이미지는 카메라의 기울기를 반영할 수 있다. 기울기는 카메라를 컨트롤하는 사람이 이미지 정렬에 대한 예측에 따르지 않는 방식으로 카메라를 배치할 때 발생할 수 있다. 기울어진 이미지는 심미적으로 바람직하지 않거나 이미지에 묘사된 컨텐츠의 현실에 충실하지 못할 수 있다.
카메라는 모바일 장치 내에 배치될 수 있다. 일실시예로, 모바일 장치의 기울기는 기준축으로부터의 모바일 장치의 축의 편차에 기반할 수 있다. 모바일 장치의 세로축 (또는 가로축)이 수직 기준축 또는 수평 기준축과 정렬되지 않을 때(즉, 평행하지 않을 때), 모바일 장치는 기울어진 것으로 여겨질 수 있다. 이미지 캡쳐 동안에 기울어진 모바일 장치는, 모바일 장치의 뷰잉 프레임 내에서 디스플레이될 때 캡쳐된 이미지가 기울어진 것으로 나타나도록 야기할 수 있다.
모바일 장치의 기울기는 본 명세서에서 수직 기준축으로부터의 모바일 장치의 세로축의 편차에 기반할 수 있다고 기술되는 한편, 모바일 장치의 기울기는 또한, 수직 기준축으로부터의 모바일 장치의 가로축의 편차에 기반할 수 있음을 유의해야 한다. 예컨대, 모바일 장치의 가로축(또는 세로축)이 수직 기준축 또는 수평 기준축과 정렬되지 않을 때(즉, 평행이 아닐 때), 모바일 장치는 기울어진 것으로 여겨질 수 있다.
전술한 결점들을 해결하기 위해, 본 명세서의 시스템, 방법, 및 컴퓨터 판독가능한 매체의 다양한 실시예들은 기울어진 이미지의 발생을 해소하기 위한 모바일 장치의 능력들을 이용하는 것을 수반할 수 있다. 모바일 장치는 모바일 장치의 움직임 및 배향을 모니터링하는 움직임 센서를 포함할 수 있다. 움직임 센서는 예컨대, x-, y-, 및 z-축들을 따르는 가속력 및 회전력을 측정한다. 예시적인 움직임 센서는 예컨대, 자이로스코프 및 가속도계를 포함할 수 있다. 하나 이상의 움직임 센서로부터 생성된 움직임 센서 데이터는 기준축에 상대적인 모바일 장치의 기울기 (또는 경사도)를 결정하는데 사용될 수 있다.
이미지가 캡쳐된 시간에 또는 그 시간 근처의 모바일 장치의 위치를 반영하는 모바일 장치의 움직임 센서 데이터뿐만 아니라 모바일 장치로 캡쳐된 이미지가 요구될 수 있다. 기울어진 이미지를 보정하는데 필요한 회전각은 이후, 움직임 센서 데이터에 기반하여 계산될 수 있고, 이미지는 회전각에 기반하여 변환될 수 있다.
예컨대, 모바일 장치는 카메라 및 사용자가 모바일 장치에서 카메라로 사진을 찍을 수 있도록 하는 이미지 캡쳐 소프트웨어를 포함할 수 있다. 사용자가 모바일 장치를 기울어서 들고 있는 동안 사진을 찍는다면, 캡쳐된 이미지는 이후 모바일 장치의 뷰잉 프레임 내에서 디스플레이될 때 그에 따라 기울어진다. 본 명세서의 실시예들은 이미지를 똑바르게 하거나(straighten) 아니면 모바일 장치의 기울기 및 결과 이미지를 위해 보정하도록 사용자가 이미지를 변환(예컨대, 회전)할 수 있게 한다. 이러한 방식으로, 예컨대, 캡쳐된 이미지는 모바일 장치에 이미지를 저장하거나 가령 사용자가 온라인으로 사진을 저장하고 공유할 수 있게 하는 소셜 네트워킹 시스템의 원격 서버와 같은 원격 장치로 업로드하기 전에 똑바르게 될 수 있다. 일실시예로, 이미지 캡쳐 소프트웨어는, 사용자가 이미지를 캡쳐하고 소셜 네트워킹 시스템으로 이미지를 게시할 수 있도록 모바일 장치로 다운로드할 수 있는 소셜 네트워킹 시스템을 위한 모바일 애플리케이션의 일부일 수 있다. 움직임 센서에 기반하는 기울기 보정은 모바일 애플리케이션의 일부로서 포함될 수 있고, 예컨대, 사용자가 캡쳐된 이미지의 기울기를 보정할 수 있게 한다. 일실시예로, 기울기 보정은 이미지가 획득된 후 사용자의 확인 없이 자동으로 발생할 수 있다. 다른 실시예로, 기울기 보정은 이미지의 변환 전에 사용자 개시 또는 확인을 요구할 수 있다.
도 1은 본 명세서의 실시예에 따른, 예시적인 모바일 장치를 도시한다. 모바일 장치(100)는 카메라(105), 이미지 캡쳐 모듈(110), 움직임 센서(115), 이미지 변환 모듈(120), 디스플레이(125), 및 프로세싱 장치(130)를 포함하는 것으로 도시된다. 도시된 컴포넌트들은 제한하려는 의도가 아니며, 모바일 장치(100)의 다른 컴포넌트들, 예컨대 운영 시스템, 스피커, 마이크, 입력 컨트롤 요소(예컨대, 터치 스크린, 키패드, 숫자 패드 등), 통신 포트, 송수신기, 메모리 등은 본 명세서의 세부사항을 불명확하게 함을 피하기 위해 도시되지 않음을 유의해야 한다. 예시적인 모바일 장치(100)는, 도 11과 함께 논의될 것처럼 스마트-폰, 태블릿, 랩톱, PDAs(personal digital assistants), 휴대 전화 등을 포함할 수 있으나, 이에 제한되지 않는다.
카메라(105)는 모바일 장치(100)에 배치되고 사용자가 모바일 장치(105)로 이미지를 캡쳐할 수 있게 한다. 카메라(105)는 예컨대, 렌즈 및 카메라(105)로 찍은 이미지(예컨대, 사진)를 표현하는 이미지 데이터를 생성하는데 사용되는 이미지 센서를 포함할 수 있다. 예컨대, 이미지 센서는, 광을 캡쳐하고 전기 신호를 변환하는 CCD(charge-coupled device) 이미지 센서 또는 CMOS(complementary metal-oxide semiconductor) 센서를 포함할 수 있으나, 이에 제한되지 않는다. 추가적인 전자 회로부가, 이미지 센서로부터의 전기 신호를 이미지를 표현하는 디지털 신호로 변환하기 위해 포함될 수 있다.
이미지 캡쳐 모듈(110)은, 이미지의 캡쳐를 가능하게 하게끔 카메라(105)와 함께 동작한다. 예컨대, 이미지 캡쳐 모듈(110)은 이미지 캡쳐동안 카메라(105)의 작동을 컨트롤한다. 이미지 캡쳐 모듈(110)은 또한, 예컨대 모바일 장치(100) 상의 카메라(105)를 사용하여 사용자가 사진을 찍을 수 있게 하는 사용자 인터페이스 또는 뷰파인더(viewfinder)를 생성할 수 있다.
움직임 센서(115)는 모바일 장치(100)에 배치되고 모바일 장치(100)의 움직임 센서 데이터를 제공한다. 용어 "움직임 센서 데이터"는 본 명세서에서 널리 사용되며, 일반적으로 이동, 위치, 배향, 속도 등에 관한 데이터를 의미할 수 있다. 움직임 센서(115)는 가속도계, 자이로스코프, 또는 임의의 다른 타입의 도구나 움직임 센서 데이터를 생성할 수 있는 자원을 포함할 수 있다. 예컨대, 움직임 센서(115)는 (예컨대, 가속도계로부터의) 가속력, (예컨대, 자이로스코프로부터의) 3개의 축을 따르는 회전력, 가속력 및 회전력의 조합 등에 기반할 수 있다. 움직임 센서(115)는 단일의 움직임 센서에 제한되는 것으로 의도되지 않았으며, 하나 이상의 움직임 센서(예컨대, 가속도계 및 자이로스코프)를 포괄할 수 있음을 유의해야 한다.
이미지 변환 모듈(120)은 캡쳐된 이미지를 회전시킴으로써 캡쳐된 이미지를 변환하고, 일부 예에서 추가적으로 이미지를 스케일링한다. 일실시예로, 변환은 움직임 센서(115)로부터 도출된 움직임 센서 데이터에 기반한다. 캡쳐된 이미지, 및 모바일 장치(100)가 이미지를 캡쳐한 시간에 또는 그 시간에 가까운 모바일 장치(100)의 움직임 센서 데이터를 획득한 후 이미지 변환 모듈(120)은 이미지가 캡쳐된 때, 모바일 장치(100)의 기울기에 대한 보정을 위해 캡쳐된 이미지를 회전시키는데 필요한 회전각을 결정한다. 예컨대, 이미지 변환 모듈(120)은 움직임 센서 데이터를 수신하고 프로세싱하도록 모바일 장치(100)의 운영 시스템을 위해 API(application programming interface)를 사용할 수 있다. 예컨대, 모바일 장치(100)의 운영 시스템을 위한 프레임워크(framework)는, 움직임 센서 데이터를 장치 하드웨어로부터 수신하고 그 데이터를 프로세싱하기 위해 본 명세서의 기울기 보정의 실시예들을 구현하는 애플리케이션과 같은 애플리케이션을 가능하게 할 수 있다.
일실시예로, 이미지 변환 모듈(120)은 기준 프레임을 특정할 수 있고, 모바일 장치의 배향 또는 움직임은 이후 움직임 센서(115)에 의해 기준 프레임과 비교될 수 있다. 움직임 센서 데이터는 예컨대, 벡터, 원 가속도값(raw acceleration value), 하나 이상의 기준 축에 상대적인 각도값 등과 같이 상이한 실시예에서 형태에 있어 다양할 수 있다. 모바일 장치(100)의 기울기는 움직임 센서 데이터에 기반하여 결정될 수 있고, 기울어진 이미지를 보정하는데 필요한 회전각을 계산하는데 사용될 수 있다. 일실시예로, 이미지 변환 모듈(120)은 기준 프레임의 단일 축을 특정할 수 있고, 오로지 단일 축에 대한 움직임 센서 데이터가 모바일 장치(100)의 기울기를 결정하고 기울어진 이미지를 변환하는데 사용된다.
일실시예로, 이미지 변환 모듈(120)은 이미지 변환에 대한 사용자 제어를 가능하게 하도록 사용자 인터페이스에 컨트롤 요소를 제공한다. 컨트롤 요소를 통해 적용되는 수신된 사용자 입력에 기반하여, 이미지는 그에 따라 회전되고 스케일링된다. 다른 실시예로, 이미지 변환 모듈(120)은 변환에 대한 사용자 제어를 가능하게 하기 위해 컨트롤 요소를 제공할 뿐만 아니라 움직임 센서 데이터에 기반하여 이미지를 변환할 수 있다. 예컨대, 이미지 변환 모듈(120)은 우선 움직임 센서 데이터에 기반하여 이미지를 변환할 수 있고, 이후 사용자 인터페이스를 통해 적용된 사용자 입력에 기반하여 이미지를 변환할 수 있으며, 혹은 그 반대도 가능하다.
디스플레이(125)는 임의의 다양한 기술들, 가령 LCD(liquid crystal display), OLED(organic light emitting diode), 전자 종이 등에 기반할 수 있다. 일실시예로, 디스플레이(125)는 사용자 입력이 디스플레이를 통해 수신되도록 할 수 있는 터치스크린 디스플레이다.
프로세싱 장치(130)는 카메라(105), 움직임 센서(115), 및 디스플레이(125)에 동작하도록 결합되고, 본 명세서에 개시된 다양한 기술들을 수행하도록 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)과 함께 동작한다. 용어 "프로세싱 장치"는 본 명세서에서 널리 사용되며, 하나 이상의 프로세서, 마이크로프로세서, 마이크로컨트롤러 등을 포함할 수 있다. 예시적인 프로세싱 장치에 관한 추가적인 세부사항들은 도 11에서 설명된다.
하나 이상의 기능적 컴포넌트들은 단일 컴포넌트로 조합될 수 있음을 유의해야 한다. 예컨대, 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)은 단일 모듈로 조합될 수 있다. 일부 예에서, 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)은 제조시에 모바일 장치(100) 상에서 소프트웨어 및/또는 하드웨어에 전체적으로 또는 부분적으로 포함될 수 있다. 일부 예에서, 예컨대, 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)은 모바일 장치(100)로 다운로드 가능한 소프트웨어 프로그램(예컨대, 모바일 애플리케이션)에 전체적으로 또는 부분적으로 포함될 수 있다. 더욱이, 일부 예에서, 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)은 이미지가 온라인에서 공유될 수 있게 하는 소셜 네트워킹 시스템과 함께 동작하거나 그 일부일 수 있다.
도 2는 본 명세서의 실시예에 따른, 예시적인 이미지 변환 모듈을 도시한다. 이미지 변환 모듈(120)은 캡쳐된 이미지의 기울기를 보정하기 위한 회전각을 결정하는 기울기 결정 모듈(205)을 포함한다. 모바일 장치(100)에서 카메라(105)에 의해 캡쳐된 이미지는 이미지가 캡쳐될 때(예컨대, 사용자가 사진을 찍을 때)의 모바일 장치(100)의 기울기를 반영할 것이므로, 모바일 장치(100)의 기울기는 기울어진 모바일 장치(100)로 캡쳐된 이미지의 기울기를 결정하는데 사용될 수 있다. 기울기 결정 모듈(205)은 이미지가 캡쳐된 때에 아니면 캡쳐된 시간에 또는 그 시간에 가까운 때의 모바일 장치(100)의 움직임 센서 데이터에 기반하여 모바일 장치(100)의 기울기에 대한 보정에 필요한 회전각을 결정한다. 도시된 실시예에서, 기울기 결정 모듈(205)은 샘플러(210), 필터(215), 움직임 센서 데이터 저장소(220), 타이밍 모듈(225), 및 각도 결정 모듈(230)을 포함한다.
샘플러(210)는 움직임 센서(115)(예컨대, 자이로스코프)에 의해 생성된 움직임 센서 데이터를 샘플링하도록 구성된다. 예컨대, 샘플러(210)는 가령 초당 30개의 샘플과 같이 미리결정된 샘플링 속도에서 움직임 센서 데이터를 샘플링할 수 있다. 다른 샘플링 속도가 구현될 수 있음을 유의해야 한다.
필터(215)는 샘플러(210)로부터 샘플링된 움직임 센서 데이터를 수신하고 필터링하도록 구성된다. 예컨대, 실시예에서, 필터(215)는 더 깨끗한 신호를 생성하기 위해 고주파 노이즈를 필터제거하는 저역 통과 필터일 수 있다. 예컨대, 일실시예로, 칼만 필터(Kalman filter)가 구현될 수 있다. 평균화 기술 또는 다른 평탄화(smoothing) 알고리즘이, 예컨대, 움직임 센서 데이터에서 노이즈를 감소시켜 데이터 신호를 평탄화하고 안정적으로 만들기 위해 구현될 수 있다.
움직임 센서 데이터 저장소(220)는 샘플러(210) 및 필터(215)로부터 움직임 센서 데이터를 수신하고 저장하도록 구성된다. 움직임 센서 데이터 저장소(220)는 예컨대, 이후의 검색을 위해 움직임 센서 데이터를 저장할 수 있는 하나 이상의 휘발성(예컨대, RAM, SRAM 등) 및 비-휘발성 메모리(예컨대, NVRAM 또는 플래시 메모리, 하드 드라이브 등)을 포함할 수 있다. 일부 예에서, 움직임 센서 데이터 저장소(220)는 데이터 버퍼와 같이 더 일시적인 형태의 메모리에서 관리될 수 있다. 예컨대, 데이터 버퍼는 고정된 양의 움직임 센서 데이터를 수용하도록 구성될 수 있고, 모바일 장치(100)가 이미지 캡쳐 모듈로 입력할 때, 샘플러(210)는 움직임 센서 데이터의 샘플링을 시작하고, 이후 움직임 센서 데이터는 필터(215)에 의해 필터링되고 데이터 버퍼(220)에 의해 수신된다.
각도 결정 모듈(230)은 움직임 센서 데이터 저장소(220)로부터 움직임 센서 데이터를 수신하고, 모바일 장치(100)의 기울기를 결정하도록 구성되며, 이는 결과적으로 모바일 장치(100)가 기울어진 동안 캡쳐된 이미지를 보정하는데 필요한 회전각을 결정할 수 있다. 예컨대, 각도 결정 모듈(230)은 움직임 센서 데이터 저장소(220)로부터 움직임 센서 데이터를 수신할 수 있고, 움직임 센서 데이터를 기반으로 이미지가 캡쳐되었을 때 모바일 장치(100)의 기울기를 계산하여, 기울어진 이미지를 보정하기 위한 회전각을 제공한다.
타이밍 모듈(225)은 기울기의 계산의 기반이 되는 적절한 움직임 센서 데이터를 결정하는데 사용된다. 예컨대, 타이밍 모듈(225)은 기울기를 계산하는데 사용되는 움직임 센서 데이터의 세트를 결정하는데 사용될 수 있다. 일실시예로, 타이밍 모듈(225)은 언제 모바일 장치(100)가 이미지 캡쳐 모드로 들어가고(예컨대, 사용자가 사진을 찍기 위해 사진 캡쳐 사용자 인터페이스를 활성화하고), 언제 이미지가 캡쳐되는지(예컨대, 사용자가 사진을 찍는지)를 식별한다. 이러한 경우, 예컨대, 각도 결정 모듈(230)은, 이미지 캡쳐 모드에 들어서는 시간에서 이미지가 캡쳐되는 시간까지 샘플링 및 필터링되는 움직임 센서 데이터의 전체 세트를 각도 결정의 기반으로 삼는다. 일실시예로, 각도 결정 모듈(230)은 다른 시간 구간 또는 다른 이벤트의 발생을 각도 결정의 기반으로 삼을 수 있다.
일실시예로, 샘플러(210)는 타이밍 모듈(225)이, 이미지 캡쳐 모드가 들어섰다고 표시할 때 움직임 센서 데이터의 샘플링을 시작할 수 있다. 일실시예로, 샘플러(210)는 이미 움직임 센서 데이터를 샘플링하고 있을 수 있고, 타이밍 모듈(225)은 움직임 센서 데이터의 세트의 제1 샘플을 이미지 캡쳐 모드가 들어선 시간에 대응하는 샘플로 식별한다.
일실시예로, 샘플러(210)는 타이밍 모듈(225)이 이미지가 캡쳐되었음을 표시할 때 움직임 센서 데이터의 샘플링을 중단할 수 있다. 일실시예로, 샘플러(210)가 이미지가 캡쳐된 후에 샘플링을 계속하면, 타이밍 모듈(225)은 예컨대, 이미지가 캡쳐되었던 시간에 대응하는 샘플과 같은 세트의 마지막 샘플을 식별할 수 있다.
다른 실시예로, 타이밍 모듈(225)은 미리 결정된 기간 또는 이미지의 캡쳐 전의(즉, 시간적으로 가까운 때의) 샘플의 개수에 기반하여 각도 결정을 위해 사용할 적절한 움직임 센서 데이터를 식별할 수 있다. 각도 결정 모듈(230)은 기울기를 계산하고 기울어진 이미지를 보정하기 위한 회전각을 결정하기 위해 미리 결정된 기간 내에서 움직임 센서 데이터의 대응하는 세트를 사용한다. 예컨대, 사용자가 이미지를 캡쳐할 때, 캡쳐 시간으로부터의 마지막 30개의 샘플들이 각도 결정에 사용될 수 있다. 마찬가지로, 예컨대, 이미지 캡쳐의 시간으로부터의 마지막 2초의 샘플링된 움직임 센서 데이터는 각도 결정을 위해 사용될 수 있다. 미리결정된 시간 및 샘플의 개수는 예시적인 것이며 제한하려는 의도가 아님을 유의해야 한다. 다른 미리결정된 시간 및 샘플들이 다른 실시예들에서 구현될 수 있다. 또한, 예컨대, 이미지가 캡쳐된 시간에 대응하는 단일 샘플과 같은 단일 샘플이 회전각을 계산하는데 또한, 사용될 수 있다. 추가로, 회전각의 계산에 대한 움직임 센서 데이터의 특정 세트를 결정하기 위한 다른 방법들이 다른 실시예들에서 구현될 수 있음을 유의해야 한다.
회전 모듈(235), 스케일링 모듈(240), 및 프레임(framing) 모듈(250)은 캡쳐되고 변환된 이미지를 디스플레이하는 사용자 인터페이스의 뷰잉 프레임 내에서 이미지를 회전하고 스케일링하도록 함께 동작한다. 회전 모듈(235)은 각도 결정 모듈(230)에 의해 결정된 회전각에 기반하여 캡쳐된 이미지를 회전시킨다. 예컨대, 회전 모듈(235)은 운영 시스템이 이미지를 그에 따라 회전시키는데 사용하기 위한 회전 변환(예컨대, 매트릭스의 형태)을 생성하도록 회전각을 사용할 수 있다.
스케일링 모듈(240)은 캡쳐된 이미지에 대한 기울기를 보정하기 위해 결정된 회전각에 기반하여 이미지를 스케일링할 수 있다. 스케일링 모듈(240)은 프레임 모듈(245)에 의해 디스플레이되는 뷰잉 프레임의 치수에 기반하여 스케일링 인자를 결정할 수 있다. 예컨대, 이미지는 상기 이미지가 회전될 때, 뷰잉 프레임 내에서 빈 공간의 생성을 피하도록 스케일링될 수 있다. 일실시예로, 스케일링 모듈(240)은 뷰잉 프레임에서 공간을 제거하는데 필요한 최소량만큼 회전된 이미지를 스케일링한다. 일실시예로, 프레임 모듈(245)은 회전각에 기반하여 뷰잉 프레임의 크기를 수정할 수 있다. 예컨대, 뷰잉 프레임에서 빈 공간을 제거하기 위해 이미지를 확대하는 것이 이미지를 불명확하게 만든다면(예컨대, 이미지가 낮은 해상도를 가진다면), 프레임 모듈(245)은 이미지가 회전될 때 그렇지 않으면 생성되었을 빈 공간을 제거하기 위해 뷰잉 프레임을 축소(shrink)시킬 수 있다.
도시된 실시예에서, 이미지 변환 모듈(120)은 또한, 사용자-제어되는 회전 모듈(250)을 포함한다. 사용자-제어되는 회전 모듈(250)은 이미지의 회전에 대한 사용자 제어를 가능하게 하는 사용자 인터페이스를 제공한다. 이러한 방식으로, 예컨대, 사용자는 이미지를 수동으로 상응하게 회전시킴으로써 기울어진 이미지를 보정할 수 있다.
일실시예로, 사용자-제어되는 회전 모듈(250)은 사용자가 하나 이상의 입상도에 따라 이미지의 회전을 제어하는 것을 가능하게 하는 사용자 인터페이스를 제공한다. 예컨대, 사용자 인터페이스는 제1 입상도로 이미지의 사용자-제어되는 회전을 가능하게 하는 제1 컨트롤 요소와 제2 입상도로 이미지의 사용자-제어되는 회전을 가능하게 하는 제2 컨트롤 요소를 포함할 수 있다. 제2 입상도는 예컨대, 사용자에 의한 더 정확한 회전을 가능하게 하기 위해 제1 입상도보다 낮은 속도로 이미지를 회전시킬 수 있다. 일실시예로, 제1 컨트롤 요소 및 제2 컨트롤 요소는 이미지를 각각 시계 방향 또는 반시계 방향으로 회전시키기 위해 기준점에 대해 상대적으로 이동될 수 있는 다이얼(dial)로서 동시에 디스플레이된다. 제1 컨트롤 요소 및 제2 컨트롤 요소에 대해 수신된 사용자 입력에 기반하여, 사용자-제어되는 회전 모듈(250)은 프레임 모듈(245)에 의해 제공되는 뷰잉 프레임 내에서 제1 입상도 및 제2 입상도 각각에 기반하여 이미지를 회전시킨다.
도시된 실시예는 기울기 결정 모듈(205) 및 사용자-제어되는 회전 모듈(250) 모두를 포함하는 한편, 다른 실시예들에서 기울기 결정 모듈(205) 또는 사용자-제어되는 회전 모듈(20)은 다른 한쪽 없이도 구현될 수 있음을 유의해야 한다.
도 3은 본 명세서의 실시예에 따른, 움직임 센서 데이터에 기반하여 이미지를 변환하기 위한 예시적인 프로세스를 도시한다. 프로세스(300)의 블록(305)에서, 모바일 장치에 의해 캡쳐된 이미지가 획득된다. 예컨대, 일실시예로, 이미지는 모바일 장치에서 카메라 및 이미지 캡쳐 프로그램을 사용하여 캡쳐될 수 있다. 예컨대, 도 2에 도시된 이미지 캡쳐 모듈(110)은 모바일 장치(100)에서 카메라(105)로 사진을 찍기 위한 사용자 인터페이스를 사용자에게 제시할 수 있다.
블록(310)에서, 움직임 센서 데이터는 캡쳐의 시간에 또는 그 시간에 가깝게 모바일 장치를 위해 획득된다. 예컨대, 일실시예로, 이미지 변환 모듈(120)은 이미지가 캡쳐된 시간 동안에 모바일 장치(100)의 기울기에 기반하는 움직임 센서 데이터를 획득한다. 예컨대, 사용자가 모바일 장치(100)에서 이미지 캡쳐 모드로 들어가면, 샘플러(210)는 모바일 장치(100)에 구현된 자이로스코프 또는 다른 움직임 센서로부터 움직임 센서 데이터의 샘플링을 시작한다. 샘플링된 움직임 센서 데이터는, 예컨대, 필터(215) 및 움직임 센서 데이터 저장소(220)에 의해, 이후 필터되고 저장될 수 있다. 일실시예로, 움직임 센서 데이터는 사용자가 사진을 찍을 때까지 샘플링되거나, 필터되거나, 또는 저장된다. 움직임 센서 데이터가 샘플링되거나, 필터되거나, 또는 저장되는 기간뿐만 아니라 샘플링되거나, 필터되거나, 또는 저장되는 움직임 센서 데이터의 양은 다양한 방식으로 결정될 수 있다.
블록(315)에서, 회전각은 움직임 센서 데이터를 기반으로 계산된다. 예컨대, 일실시예로, 도 2에 도시된 각도 결정 모듈(230)은 이미지의 기울기를 보정하기 위한 회전각을 결정한다. 각도 결정 모듈(230)은 움직임 센서 데이터 저장소(220)로부터 움직임 센서 데이터를 수신하고, 모바일 장치의 기울기를 결정한다. 기울기는 이미지가 캡쳐된 때에 모바일 장치(100)의 기울기에 대한 보정을 위해 이미지를 회전시키는 회전각을 결정할 수 있다.
일실시예로, 회전각은 이미지를 변환하기 전에 미리 결정된 임계치와 비교된다. 미리결정된 임계치는 예컨대, 예술성을 위해 혹은 그렇지 않으면 고의로 기울어지는 것과 같이 이미지의 기울기가 사용자에 의해 의도된 것으로 추정되는 때의 임계치를 표현할 수 있다. 기울어진 이미지를 보정하기 위한 회전각이 미리결정된 임계치를 초과하면, 이후 이미지는 기울기에 대한 보정을 위해 회전되지 않는다. 예컨대, 임계치는 45도 또는 임의의 다른 미리결정된 임계치일 수 있다. 일부 예에서, 미리결정된 임계치는 이미지를 관리하는 소셜 네트워킹 시스템, 이미지를 업로드했거나 이미지를 열람할 사용자, 또는 둘 다에 의해 선택될 수 있다. 일부 예에서, 기울기에 대한 보정에 필요한 이미지 회전이 임계치를 초과한다는 것을 표시하기 위해 정보가 사용자에게 제공된다. 일부 예에서, 회전각이 임계치를 초과하는 지에 무관하게 이미지 변환이 수행되어야 하는지를 결정하기 위해 사용자-확인 또는 조회가 요청된다.
블록(320)에서, 이미지는 계산된 회전각에 기반하여 변환된다. 예컨대, 도 2의 회전 모듈(235)은 각도 결정 모듈(230)에 의해 계산된 회전각으로 캡쳐된 이미지를 회전하기 위한 회전 변환을 생성한다. 일실시예로, 캡쳐된 이미지는 또한, 회전각에 기반한다. 예컨대, 도 2의 스케일링 모듈(240)은 사용자 인터페이스에 디스플레이되는 뷰잉 프레임을 채우기 위해 캡쳐된 이미지를 스케일링하는데 필요한 스케일링 인자를 결정한다.
블록(325)에서, 변환된 이미지가 디스플레이된다. 예컨대, 도 2의 프레임 모듈은 회전 모듈, 스케일링 모듈, 및 이미지 캡쳐 프로그램과 함께 동작할 수 있어서, 모바일 장치의 디스플레이에 제시되는 사용자 인터페이스의 뷰잉 프레임 내에서 변환된 이미지를 렌더링하도록 한다. 일부 예에서, 캡쳐된 이미지는 뷰잉 프레임에서 디스플레이되고 이후 변환된 이미지에 의해 대체된다.
일실시예로, 사용자는 변환된 이미지를 모바일 장치(100)상의 메모리로 보존하거나, 아니면 저장하거나, 또는 소셜 네트워킹 시스템 내에 저장하기 위해 원격 서버로 변환된 이미지를 통신할 수 있다. 일부 예에서, 캡쳐된 이미지는 모바일 장치(100)에 저장될 수 있거나 및/또는 원격 장치로 통신될 수 있다. 일부 예에서, 움직임 센서 데이터 및/또는 기울어진 이미지를 보정하기 위한 최종의 계산된 회전각은 예컨대, 이미지 데이터와 함께 포함되는 메타데이터로, 캡쳐된 이미지와 함께 저장될 수 있다.
일실시예로, 예컨대, 이미지의 변환은 이미지를 획득한(예컨대, 카메라(105)로 이미지를 캡쳐하고 움직임 센서(115)로 움직임 센서 데이터를 제공한) 것과 동일한 모바일 장치(100)에서 수행된다. 예컨대, 모바일 장치(100)의 사용자는 모바일 장치(100)(예컨대, 스마트폰)를 사용하여 사진을 찍을 수 있고, 모바일 장치(100)는 이미지가 캡쳐되었을 때의 모바일 장치(100)의 움직임 센서 데이터에 기반하여 임의의 기울기에 대해 보정하는데 필요한 회전각을 계산할 수 있다.
다른 실시예로, 이미지를 캡쳐한 모바일 장치(100)가 아닌 장치가 캡쳐된 이미지 및 움직임 센서 데이터를 획득할 수 있고, 이후 기울기 보정을 수행할 수 있다. 예컨대, 데스크탑 컴퓨터 또는 다른 원격 장치(예컨대, 서버)는 모바일 장치(100)와 유선 또는 무선 통신할 수 있고, 이미지를 캡쳐한 모바일 장치(100)로부터 캡쳐된 이미지와 움직임 센서 데이터를 수신한다. 데스크탑 컴퓨터 또는 다른 원격 장치는 이후 회전각을 계산할 수 있고, 움직임 센서 데이터에 기반하여 이미지를 변환할 수 있다. 일부 예에서, 데스크톱 컴퓨터 또는 다른 원격 장치는 인터넷을 통해 또는 플래시 메모리, CD-ROM 등과 같은 휴대용 메모리 장치로부터 캡쳐된 이미지 및 움직임 센서 데이터를 수신할 수 있다. 일부 예에서, 움직임 센서 데이터는 이미지 파일에 이미지 데이터와 함께(예컨대, 메타데이터 내에) 저장될 수 있고, 장치(예컨대, 이미지를 캡쳐한 모바일 장치(100) 또는 다른 원격 장치)에 저장될 수 있다.
도 4a 및 4b는 본 명세서의 실시예에 따른, 변환 전과 변환 후의 이미지를 디스플레이하는 예시적인 사용자 인터페이스를 각각 도시한다. 사용자 인터페이스(400)는 모바일 장치의 디스플레이(405)에 디스플레이되는 것으로 도시된다. 사용자 인터페이스(400)는 캡쳐되고 변환된 이미지를 디스플레이하기 위한 뷰잉 프레임(410)을 포함한다. 사용자 인터페이스(400)는 또한, 본 명세서에 기술된 이미지 변환을 시작하거나 아니면 활성화시키는 것에 대한 사용자 제어를 가능하게 하는 컨트롤 요소(415)를 포함한다. 하나 이상의 추가 컨트롤 요소(420)는, 사용자가 캡쳐된 이미지에 하나 이상의 변환을 수행하도록 허용하거나 가능하게 하기 위해 도시되는 것처럼 또한, 디스플레이될 수 있다. 예시적인 추가 컨트롤 요소(420)는, 이미지의 크로핑(cropping), 이미지의 선명화(sharpening), 이미지의 명암의 수정 등과 같은 다양한 변환을 수행할 수 있다. 임의의 다양한 추가 변환들이 또한, 다른 실시예들에서 구현될 수 있다.
집을 포함하는 캡쳐된 이미지(425)가 뷰잉 프레임(410)에서 디스플레이된다. 캡쳐된 이미지(425)는 모바일 장치(100)가 기울어졌을 때 찍혔고, 도시된 집의 이미지는 뷰잉 프레임(410) 내에서 기울어진 것으로 상응하게 도시된다. 모바일 장치(100)에 대한 세로축은 점선으로 도시된다. 축(430)은 이미지 캡쳐의 시간에서 수직 기준축을 표현한다.
캡쳐된 이미지(425)는 뷰잉 프레임(410)에 디스플레이되어 캡쳐된 이미지(425)의 경계(435A)가 뷰잉 프레임(410)과 정렬되도록 한다. 다른 실시예들에서, 경계(435A)는 뷰잉 프레임(410)보다 크거나 작을 수 있음을 유의해야 한다. 집의 캡쳐된 이미지(425)는 모바일 장치 기울어져 있을 때 찍혔기 때문에, 캡쳐된 이미지(425)는 뷰잉 프레임(410) 내에서 기울어져 디스플레이되는 것으로 도시된다. 도시되는 것처럼, 각도(A)는 캡쳐된 이미지가 기울어진 각도를 표현하고, 따라서 기울기를 보정하는데 필요한 회전각(즉, 각도(A)만큼의 반시계방향 회전)을 표현한다.
도 4b는, 중심점(C)을 중심으로 각도(A)만큼 반시계방향으로 회전된 후의 캡쳐된 이미지(425)를 도시한다. 경계(435A)는 각도(A)만큼 회전된 후의 캡쳐된 이미지(425)에 대한 경계를 표현한다. 캡쳐된 이미지(425)가 회전되었기 때문에, 캡쳐된 이미지의 경계(435A)는 더 이상 뷰잉 프레임(410)과 정렬되지 않고, 이미지 컨텐츠가 없는 뷰잉 프레임(410) 내의 공간(445)을 생성한다. 캡쳐된 이미지(425)는 각도(A)만큼 회전되었기 때문에, 수직 기준축(430)은 이제 모바일 장치(100)의 세로축(440)과 정렬되어서, 뷰잉 프레임(410) 내의 캡쳐된 이미지(425)의 기울기를 보정한다.
일실시예로, 캡쳐된 이미지(425)의 변환은 캡쳐된 이미지(425)의 회전에 추가로 캡쳐된 이미지(425)의 스케일링을 포함한다. 이러한 방식으로, 예컨대, 캡쳐된 이미지(425)는 공간(445)을 채우기 위해 경계의 크기를 증가시키도록 적절히 스케일링될 수 있다. 도 4c는 각도(A)만큼 반시계방향으로 회전되고 캡쳐된 이미지(425)의 회전에 의해 생성된 공간(445)을 채우도록 스케일링된 후의 캡쳐된 이미지(425)를 도시한다. 경계(435C)는, 뷰잉 프레임(410) 내에서 잔존하는 공간(445)이 없도록 경계 내에서 전체 뷰잉 프레임(410)에 맞춰지도록 증가된 경계(435A)를 표현한다. 스케일링은 캡쳐된 이미지의 회전과 동시에 또는 연속으로 수행될 수 있다.
도 5a 및 5b는 본 명세서의 실시예에 따른, 캡쳐된 이미지의 변환에 대한 사용자 제어를 가능하게 하는 예시적인 사용자 인터페이스를 도시한다. 도 5a는 캡쳐된 이미지를 디스플레이하기 전의 예시적인 사용자 인터페이스를 도시하고, 도 5b는 캡쳐된 이미지가 변환된 후의 예시적인 사용자 인터페이스를 도시한다.
사용자 인터페이스(500)는 모바일 장치의 디스플레이(505)에 디스플레이되는 것으로 도시된다. 사용자 인터페이스(500)는 캡쳐된 이미지, 변환된 이미지 또는 둘 다를 디스플레이하기 위한 뷰잉 프레임(510)을 포함한다. 사용자 인터페이스(500)는 또한, 캡쳐된 이미지의 변환에 대한 사용자 제어를 제공하는 변환 컨트롤 요소(560, 575A, 575B, 580A, 580B, 580C)를 포함한다. 그리드(550)가, 사용자에게 수직 및 수평 기준을 제공하도록 뷰잉 프레임(510)에 디스플레이된다.
도 5a에서, 캡쳐된 이미지(525)는 뷰잉 프레임(510)에 디스플레이된다. 사용자는 캡쳐된 이미지(525)의 변환을 제어하기 위해 변환 컨트롤 요소(560, 575A, 575B, 580A, 580B, 580C)를 사용할 수 있다. 예컨대, 일실시예로, 사용자 인터페이스(500)는 터치-활성화되거나 아니면 터치-제어되는 변환 컨트롤 요소(560, 575A, 575B, 580A, 580B, 580C)와 함께 터치스크린 디스플레이에 디스플레이될 수 있다.
변환 컨트롤 요소(560)는 캡쳐된 이미지(525)의 변환에 대한 사용자 제어를 제공한다. 변환 컨트롤 요소(560)는 캡쳐된 이미지를 제1 입상도로 회전시키는 것에 대한 사용자 제어를 제공하는 제1 컨트롤 요소(565), 캡쳐된 이미지를 제2 입상도로 회전시키는 것에 대한 사용자 제어를 제공하는 제2 컨트롤 요소(570)를 포함한다. 예컨대, 더 미세한 입상도를 갖는 컨트롤 요소는, 캡쳐된 이미지(525)의 회전에 대해 더 미세-조정된(fine-tuned) 제어를 사용자에게 제공한다. 도시된 실시예에서, 캡쳐된 이미지는 뷰잉 프레임(510)의 중심점(C)을 중심으로 회전된다. 또한, 일실시예로, 캡쳐된 이미지는 이미지 컨텐츠가 없는 뷰잉 프레임 내의 공간을 피하기 위해 추가적으로 스케일링된다.
사용자가 더 미세한 입상도를 갖는 제1 컨트롤 요소를 슬라이딩하거나 아니면 이동시키는 거리 또는 각도는 더 큰 입상도를 갖는 제2 컨트롤 요소의 이동의 동일하거나 유사한 거리보다 작은 회전각에 상관될 수 있다. 예컨대, 도시된 실시예에서, 컨트롤 요소(565, 570)는 사용자에 의해 원호를 따라 디폴트 위치로부터 시계방향 또는 반시계방향으로 (예컨대, 다이얼을 터치하고 시계방향 또는 반시계방향으로 슬라이딩함을 통해) 이동될 수 있는 다이얼들로 구체화되며, 컨트롤 요소(570)는 컨트롤 요소(565)보다 미세한 입상도를 가진다. 디폴트 위치는, 다이얼들이 수직이며 캡쳐된 이미지가 회전되지 않은 최초 위치에 대응하는 원호의 중심이다. 사용자가 컨트롤 요소(565) 또는 컨트롤 요소(570)를 시계방향으로 이동시킴에 따라, 캡쳐된 이미지(525)는 각각의 입상도로 시계방향으로 회전된다. 유사하게, 사용자가 컨트롤 요소(565) 또는 컨트롤 요소(570)를 반시계방향으로 이동시킨다면, 캡쳐된 이미지(525)는 각각의 입상도로 반시계방향으로 회전된다. 이러한 방식으로, 컨트롤 요소(570)를 디폴트 위치로부터 대응하는 원호를 따라 특정 수의 각도만큼 이동시키는 것은 대응하는 원호를 따라 컨트롤 요소(565)를 유사한 각도만큼 이동시키는 것보다 캡쳐된 이미지의 작은 회전각을 발생시킨다. 예컨대, 디폴트 위치로부터 90도만큼 컨트롤 요소(565)를 이동시키는 것은 캡쳐된 이미지를 45도 만큼 이동시킬 수 있는 한편, 디폴트 위치로부터 컨트롤 요소(570)를 90도만큼 이동시키는 것은 캡쳐된 이미지를 15도만큼 회전시킬 수 있다. 이러한 값들은 예시적인 것이며, 제한하는 것으로 해석되어서는 안 된다는 점을 유의해야 한다. 더욱이, 다른 실시예에서, 컨트롤 요소(565)는 컨트롤 요소(570)에 비해 더 미세한 입상도 제어를 갖도록 설정될 수 있다.
사용자 인터페이스(500)는 또한, 디스플레이(505) 상에 디스플레이되는 사용자-제어되는 버튼으로 구체화되는 변환 컨트롤 요소(575A, 575B)를 포함한다. 사용자가 컨트롤 요소(575A, 575B)를 클릭하거나 아니면 활성화할 때, 캡쳐된 이미지는 이후 그에 따라 시계방향 또는 반시계방향으로 회전된다. 예컨대, 컨트롤 요소(575A)를 클릭하는 것은 캡쳐된 이미지를 반시계방향으로 미리결정된 수의 각도만큼 회전시킬 수 있고, 컨트롤 요소(575B)를 클릭하거나 아니면 활성화하는 것은 캡쳐된 이미지를 시계방향으로 미리결정된 수의 각도만큼 회전시킬 수 있다.
사용자 인터페이스(500)는 또한, 컨트롤 요소(565)의 입상도에 대한 제어를 사용자에게 제공하는 변환 컨트롤 요소(580A, 580B, 580C)를 포함한다. 예컨대, 사용자가 컨트롤 요소(580A)를 선택할 때, 다이얼을 가로지르는 컨트롤 요소(565)의 전체 이동(예컨대, 90도)은 캡쳐된 이미지의 45도 회전을 발생시킨다. 유사하게, 사용자가 컨트롤 요소(580B)를 선택할 때, 다이얼을 가로지르는 컨트롤 요소(565)의 전체 이동(예컨대, 90도)은 캡쳐된 이미지의 35도 회전을 발생시킨다. 유사하게, 사용자가 컨트롤 요소(580C)를 선택할 때, 다이얼을 가로지르는 컨트롤 요소(565)의 전체 이동(예컨대, 90도)은 상응하는 방향으로 캡쳐된 이미지의 15도 회전을 발생시킨다. 일실시예로, 컨트롤 요소(570)의 전체 입상도는 또한, 컨트롤 요소(565)의 전체 입상도에 추가로, 컨트롤 요소(580A, 580B, 580C)의 선택과 함께 각각 변경된다. 예컨대, 컨트롤 요소(565)를 위해 제공된 예에서, 컨트롤 요소(570)의 입상도는 컨트롤 요소(580A, 580B, 580C) 각각에 대해 15도, 10도, 및 5도 일 수 있다. 값들은 예시적인 것이며 제한하는 것으로 해석되지 않아야 함을 유의해야 한다. 다른 값들이 또한, 다른 실시예들에서 구현될 수 있다.
도 5b는 컨트롤 요소(565, 570)에 적용되는 사용자 입력에 기반하여 회전되고 스케일링된 후의 캡쳐된 이미지(525)를 도시한다. 예컨대, 사용자는 캡쳐된 이미지를 (예컨대, 기울기 없이) 대략 평탄한 위치까지 회전시키기 위해 우선 컨트롤 요소(565)를 사용했을 수 있고, 이후 기울어진 이미지를 더 나은 정확도로 평탄화시키기 위해 더 미세한 입상도를 갖는 컨트롤 요소(570)를 사용했을 수 있다. 이러한 사용 순서는 예시적인 것이며, 일부 예에서, 사용자는 예에서 제공되는 것과는 상이한 순서로 컨트롤 요소(565, 570)를 사용할 수 있음을 유의해야 한다. 더욱이, 특정 예에서, 사용자는 기울어진 사진을 평탄화하기 위해 컨트롤 요소(565, 570) 중 하나만을 사용할 수 있다.
다른 실시예로, 컨트롤 요소(560)는 원호-타입 움직임과는 별개로 다른 타입의 사용자 움직임 또는 입력을 포함할 수 있다. 예컨대, 일실시예로, 컨트롤 요소의 이동은 선형적일 수 있다. 도 6a는 일실시예에 따른, 선형적인 예시적 컨트롤 요소를 도시한다. 컨트롤 요소(665A, 670A)는 디폴트 위치에 도시되고, 캡쳐된 이미지의 시계방향 또는 반시계방향으로의 회전을 가능하게 하기 위해 사용자에 의해 우측 또는 좌측으로 선형적으로 이동될 수 있다. 컨트롤 요소(670A)는 예컨대, 컨트롤 요소(665A)보다 미세한 입상도로 캡쳐된 이미지를 회전시킬 수 있다.
또 다른 실시예로, 컨트롤 요소는, 컨트롤 요소에 제공되는 단일 클릭 또는 다른 입력과 같은 사용자-제어되는 파라미터에 기반하여 구현될 수 있다. 예컨대, 도 6b는 사용자에 의해 클릭될 수 있는 버튼의 형태로 예시적인 컨트롤 요소(665B, 670B)를 도시한다. 컨트롤 요소(665B, 670B)를 클릭하는 것은 캡쳐된 이미지가 일정 양만큼 회전하도록 한다. 컨트롤 요소(670B)는 컨트롤 요소(665B)보다 작은 각도의 회전에 상관되는 더 미세한 입상도 제어를 가질 수 있다. 예컨대, 컨트롤 요소(665B)의 단일 클릭은 5도의 기울기를 발생시킬 수 있고, 컨트롤 요소(670B)의 단일 클릭은 2도의 기울기를 발생시킬 수 있다. 특정 예에서, 사용자는 캡쳐된 이미지를 계속 회전시키기 위해 컨트롤 요소를 아래로 누를 수 있다. 이러한 경우, 더 미세한 입상도 제어 요소는, 더 큰 입상도 제어 요소보다 낮은 속도로(예컨대, 초당 회전의 각도)로 캡쳐된 이미지를 회전시킨다.
도 7은 본 명세서의 실시예에 따른, 이미지 변환을 위한 예시적인 프로세스를 도시한다. 프로세스(700)의 블록(705)에서, 도 5a, 5b, 6a, 및 6b에 설명된 것과 같은 사용자 인터페이스는 모바일 장치의 디스플레이에 디스플레이된다. 블록(710)에서, 캡쳐된 이미지는 사용자 인터페이스의 뷰잉 프레임에 디스플레이된다. 블록(715)에서, 제1 컨트롤 요소에 적용된 사용자 입력이 수신되어, 사용자가 제1 입상도에 따라 캡쳐된 이미지를 변환할 수 있도록 한다. 블록(720)에서, 캡쳐된 이미지는 제1 컨트롤 요소와 연관된 사용자 입력에 기반하여 변환되고, 변환됨에 따라서 뷰잉 프레임에 디스플레이된다. 예컨대, 도 5a 및 5b에 도시된 실시예로, 캡쳐된 이미지의 회전은, 사용자 입력에 기반하여 제1 입상도로 회전됨에 따라 뷰잉 프레임(510)에 디스플레이될 수 있다.
블록(725)에서, 제2 컨트롤 요소에 적용된 사용자 입력이 수신된다. 제2 컨트롤 요소는 제1 컨트롤 요소에 추가로 사용자 인터페이스에 또한, 디스플레이된다. 제2 컨트롤 요소는, 제1 컨트롤 요소의 입상도와 상이한 제2 입상도에 따라 사용자가 캡쳐된 이미지를 변환할 수 있게 한다. 블록(730)에서, 캡쳐된 이미지는 제2 컨트롤 요소에 대해 수신된 사용자 입력에 기반하여 변환된고, 변환됨에 따라 뷰잉 프레임에 디스플레이된다. 예컨대, 도 5a 및 5b에 도시된 실시예에서, 캡쳐된 이미지의 회전은, 사용자 입력에 기반하여 제2 입상도로 회전됨에 따라, 뷰잉 프레임(510)에 디스플레이될 수 있다.
블록(735)에서, 일단 변환이 완료되면(예컨대, 사용자가 대응하는 버튼을 누름으로써 변환의 완료를 표시하면), 변환된 이미지는 예컨대, 장치의 메모리로 보존되거나 아니면 저장되거나, 또는 소셜 네트워킹 시스템 내에서 저장을 위한 원격 서버로 인터넷을 통해 통신되어 완결된다. 일부 예에서, 캡쳐된 이미지는 장치에 저장될 수 있고, 원격 장치로 통신될 수 있다.
도 3 및 7에 기술되는 프로세스들은 조합되어 수행될 수 있음을 유의해야 한다. 예컨대, 일실시예로, 사용자 인터페이스(500)가 제공되고, 프로세스(700)는 도 3의 프로세스(300)에 따라 캡쳐된 이미지가 변환된 후에 수행된다. 이러한 방식으로, 사용자는 기울기에 대해 보정하기 위해 자동 이미지 변환을 수행하는 것을 선택할 수 있고, 이후 사용자에게 추가적인 수동의 사용자-제어되는 변환을 가능하게 하도록 사용자 인터페이스(500)가 제공될 수 있다. 일실시예로, 프로세스(300)로부터 발생된 변환된 이미지가 사용자 인터페이스(500)와 함께 디스플레이에 디스플레이될 때, 컨트롤 요소(565, 570)는 디폴트 위치(예컨대, 수직 배향으로)에 배치될 수 있다. 다른 실시예로, 프로세스(300)로부터 발생한 변환된 이미지가 사용자 인터페이스(500)와 함께 디스플레이에 디스플레이될 때, 컨트롤 요소(565, 570)는 캡쳐된 이미지의 기울기 각도를 반영하도록 배치될 수 있다. 이러한 방식으로, 사용자는, 컨트롤 요소(565, 570)를 디폴트 위치로 이동시킴으로써 이미지를 변환 전의 형성 상태(pre-trans formation state)로 되돌릴 수 있다.
앞서 보여진 실시예에서, 캡쳐된 이미지는 뷰잉 프레임(510)의 중심(C)을 중심으로 회전되었다. 다른 실시예들에서, 캡쳐된 이미지는 뷰잉 프레임의 중심이 아닌 회전점을 중심으로 회전될 수 있다. 도 8은 본 명세서의 실시예에 따른, 사용자에 의해 선택된 회전점을 중심으로 캡쳐된 이미지를 변환하는 예시적인 프로세스를 도시한다. 도 9a는 본 명세서의 실시예에 따른, 도 8의 프로세스가 수행되기 전의 이미지를 디스플레이하는 예시적인 사용자 인터페이스를 도시한다. 도 9b는 본 명세서의 실시예에 따른, 도 8의 프로세서에 따라 수행된 이미지를 디스플레이하는 도 9a의 예시적인 사용자 인터페이스를 도시한다. 도 8, 9a, 및 9b는 본 명세서에서 함께 기술된다.
프로세스(800)의 블록(805)에서, 사용자 인터페이스(902)는 장치(예컨대, 모바일 장치)의 디스플레이(905)에 디스플레이되고, 캡쳐된 이미지는 사용자 인터페이스(902)의 뷰잉 프레임(910)에 디스플레이된다. 도 9a에 도시된 캡쳐된 이미지에서, 집(920)은 뷰잉 프레임(910)의 중심(C)으로부터 중심에서 벗어난 것으로 도시된다.
블록(810)에서, 회전점의 사용자 선택을 위한 사용자 입력이 수신된다. 예컨대, 사용자는 도 9a 및 9b에서 원으로 표시된 참조 번호(1)로 표현되는 회전점을 식별하기 위해 뷰잉 프레임(910)에서 포인트(P)를 터치할 수 있다. 일실시예로, 회전점은 예컨대, 점 또는 다른 레퍼런스로 사용자 인터페이스에 표시될 수 있다.
블록(815)에서, 회전의 입상도를 표시하기 위한 사용자 입력이 수신된다. 예컨대, 일실시예로, 회전의 입상도는, 사용자가 그의 손가락을 사용자-정의된 회전점(P)으로부터 도 9a 및 9b에서 원으로 표시된 참조 번호(2)로 표현되는 입상도 선택점으로 슬라이딩함으로써 정의된다. 회전의 입상도는 손가락이 회전점으로부터 떨어져서 슬라이딩되는 거리에 기반하여 계산된다. 예컨대, 일실시예로, 회전점으로부터 더 먼 거리인 입상도 선택점은, 회전점으로부터 더 가까운 거리인 입상도 선택점으로부터 생성된 입상도보다 미세한 입상도를 생성한다. 또 다른 실시예로, 회전점으로부터 더 먼 거리는 회전점으로부터 더 가까운 거리로부터 생성된 입상도보다 덜 미세한 입상도를 생성한다. 사용자가 회전점으로부터 멀리 그의 손가락을 슬라이딩함에 따라, 라인(925)이 실시간으로 회전점으로부터 사용자의 손가락의 위치로 디스플레이될 수 있다.
블록(820)에서, 회전의 방향 및 각도를 표시하기 위한 사용자 입력이 수신된다. 예컨대, 일실시예로, 회전의 방향은 도 9b에서 원으로 표시된 참조 번호(3)으로 표현되는 회전점에 대해 사용자가 그의 손가락을 시계방향 또는 반시계방향으로 슬라이딩함으로써 정의된다. 방향은 손가락이 슬라이딩되는, 예컨대, 캡쳐된 이미지를 시계방향으로 회전하고 캡쳐된 이미지를 반시계방향으로 회전하는 시계방향 또는 반시계방향에 의해 정의될 수 있다. 더욱이, 회전의 각도는 얼마나 멀리 손가락이 시계방향 또는 반시계방향으로 슬라이딩되는지에 의해 정의될 수 있다.
블록(825)에서, 캡쳐된 이미지는 회전의 표시된 입상도 및 방향에 기반하여 회전점을 중심으로 회전된다. 도 9b에 도시되는 것처럼, 사용자의 손가락은, 이미지가 도시된 배향으로 회전되었을 때까지, 원으로 표시된 참조 번호(3)로 표현된 지점까지 반시계방향으로 슬라이딩되었다.
일실시예로, 캡쳐된 이미지는, 사용자의 손가락이 슬라이딩 됨에 따라 디스플레이에서 회전된다. 도시된 실시예에서, 회전점으로부터 입상도 선택점까지 라인(925)이 디스플레이되고, 라인의 길이는, 사용자가 그의 손가락을 반시계방향으로 원으로 표시된 참조 번호(3)까지 슬라이딩함에 따라 도시된 위치로 회전될 때에 고정되도록 유지된다.
일실시예로, 사용자는 회전점, 입상도 선택점, 회전의 방향 및 각도를 선택하는 동안 그의 손가락을 디스플레이상에 계속하여 유지하도록 요구된다. 가령, 사용자가 그의 손가락을 디스플레이로부터 떨어지도록 올린다면, 이후 사용자는 이러한 정보의 선택을 반복해야 한다.
일실시예로, 캡쳐된 이미지는, 본 명세서에서 더 상세히 논의될 것처럼, 회전된 이미지 및 뷰잉 프레임 사이의 임의의 공간을 제거하도록 회전되면서 스케일링된다.
소셜 네트워킹 시스템 - 예시적인 구현예
도 10은 본 명세서의 실시예에 따른, 이미지를 변환하기 위한 예시적인 시스템(100)의 네트워크 다이어그램이다. 시스템(1000)은 하나 이상의 사용자 장치(1010), 하나 이상의 외부 시스템(1020), 소셜 네트워킹 시스템(1030), 및 네트워크(1050)를 포함한다. 일실시예로, 전술한 실시예들과 연계하여 논의된 소셜 네트워킹 시스템은 소셜 네트워킹 시스템(1030)으로 구현될 수 있다. 예시적인 목적을 위해, 도 10에 의해 도시된 시스템(1000)의 실시예는 단일 외부 시스템(1020) 및 단일 사용자 장치(1010)를 포함한다. 하지만, 다른 실시예로, 시스템(1000)은 더 많은 사용자 장치(1010) 및/또는 더 많은 외부 시스템(1020)을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(1030)은 소셜 네트워크 제공자에 의해 운영되는 한편, 외부 시스템(1020)은, 상이한 엔티티들에 의해 운영될 수 있는 점에서 소셜 네트워킹 시스템(1030)으로부터 분리되어 있다. 하지만, 다양한 실시예로, 소셜 네트워킹 시스템(1030) 및 외부 시스템(1020)은 소셜 네트워킹 시스템(1030)의 사용자들 (또는 구성원들)에게 소셜 네트워킹 서비스를 제공하기 위해 함께 동작한다. 이러한 측면에서, 소셜 네트워킹 시스템(1030)은, 외부 시스템(1020)과 같은 다른 시스템들이 인터넷을 통해 사용자에게 소셜 네트워킹 서비스 및 기능을 제공하는데 사용할 수 있는 플랫폼 또는 백본을 제공한다.
사용자 장치(1010)는 사용자로부터 입력을 수신하고 네트워크(1050)를 통해 데이터를 송수신할 수 있는 하나 이상의 컴퓨팅 장치를 포함한다. 일실시예로, 사용자 장치(1010)는 예컨대, Microsoft Windows 호환가능한 운영 시스템(OS), Apple OS X, 및/또는 리눅스 배포판을 실행하는 종래의 컴퓨터 시스템이다. 다른 실시예로, 사용자 장치(1010)는 가령 스마트폰, 태블릿, PDA(personal digital assistant), 모바일 전화 등과 같은 컴퓨터 기능을 갖는 장치일 수 있다. 사용자 장치(1010)는 네트워크(1050)를 통해 통신하도록 구성된다. 사용자 장치(1010)는 예컨대, 사용자 장치(1010)의 사용자가 소셜 네트워킹 시스템(1030)과 상호작용할 수 있게 하는 브라우저 애플리케이션과 같은 애플리케이션을 실행할 수 있다. 또 다른 실시예로, 사용자 장치(1010)는 iOS 및 ANDROID와 같은 사용자 장치(1010)의 네이티브 운영 시스템에 의해 제공되는 API(application programming interface)를 통해 소셜 네트워킹 시스템(1030)과 상호작용한다. 사용자 장치(1010)는, 유선 및/또는 무선 통신 시스템을 사용하는 로컬 영역 및/또는 광역 네트워크의 임의의 조합을 포함할 수 있는 네트워크(1050)를 통해 외부 시스템(1020) 및 소셜 네트워킹 시스템(1030)과 통신하도록 구성된다.
일실시예로, 네트워크(1050)는 표준 통신 기술 및 프로토콜을 사용한다. 따라서, 네트워크(1050)는 Ethernet, 702.11, WiMAX(worldwide interoperability for microwave access), 3G, 4G, CDMA, GSM, LTE, DSL(digital subscriber line) 등과 같은 기술을 사용하는 링크를 포함할 수 있다. 유사하게, 네트워크(1050)에서 사용되는 네트워킹 프로토콜은 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) 등을 포함할 수 있다. 네트워크(1050) 상에서 교환되는 데이터는 HTML(hypertext markup language) 및 XML(extensible markup language)을 포함하는 기술 및/또는 포맷을 사용하여 표현될 수 있다. 추가로, 모든 또는 일부 링크는 SSL(secure sockets layer), TLS(transport layer security), 및 IPsec(Internet Protocol security)와 같은 종래의 암호화 기술을 사용하여 암호화될 수 있다.
일실시예로, 사용자 장치(1010)는 브라우저 애플리케이션(1012)을 사용하여, 외부 시스템(1020) 및 소셜 네트워킹 시스템(1030)으로부터 수신된 마크업 언어 문서(1014)를 프로세싱함으로써 외부 시스템(1020) 및/또는 소셜 네트워킹 시스템(1030)으로부터의 컨텐츠를 디스플레이할 수 있다. 마크업 언어 문서(1014)는 컨텐츠 및 컨텐츠의 포맷 또는 프레젠테이션을 기술하는 하나 이상의 명령어들을 식별한다. 마크업 언어 문서(1014)에 포함된 명령어들을 실행함으로써, 브라우저 애플리케이션(1012)은 마크업 언어 문서(1014)에 의해 기술된 포맷 또는 프레젠테이션을 사용하여 식별된 컨텐츠를 디스플레이한다. 예컨대, 마크업 언어 문서(1014)는, 외부 시스템(1020) 및 소셜 네트워킹 시스템(1030)으로부터 검색된 텍스트 및/또는 이미지 데이터를 포함하는 다수의 프레임들을 갖는 웹 페이지를 생성하고 디스플레이하기 위한 명령어들을 포함한다. 다양한 실시예로, 마크업 언어 문서(1014)는 XML(extensible markup language) 데이터, XHTML(extensible hypertext markup language) 데이터, 또는 다른 마크업 언어 데이터를 포함하는 데이터 파일을 포함한다. 추가로, 마크업 언어 문서(1014)는 JSON(JavaScript Object Notation) 데이터, 패딩(padding)을 갖는 JSON(JSONP), 및 외부 시스템(1020)과 사용자 장치(1010) 사이의 데이터 상호교환을 용이하게 하는 자바스크립트 데이터를 포함할 수 있다. 사용자 장치(1010)상의 브라우저 애플리케이션(1012)은 마크업 언어 문서(1014)를 디코딩하기 위해 자바스크립트 컴파일러를 사용할 수 있다.
마크업 언어 문서(1014)는 또한, FLASH™ 또는 Unity™ 애플리케이션들, SilverLight™ 애플리케이션 프레임워크(framework) 등과 같은 애플리케이션 또는 애플리케이션 프레임워크를 포함하거나 링크할 수 있다.
일실시예로, 사용자 장치(1010)는 또한, 사용자 장치(1010)의 사용자가 소셜 네트워킹 시스템(1030)으로 로그되는지 여부를 표시하는 데이터를 포함하는 하나 이상의 쿠키(1016)를 포함하고, 이는 소셜 네트워킹 시스템(1030)으로부터 사용자 장치(1010)로 통신되는 데이터의 수정을 가능하게 할 수 있다.
외부 시스템(1020)은, 네트워크(1050)를 사용하여 사용자 장치(1010)로 통신되는 하나 이상의 웹 페이지들(1022a, 1022b)을 포함하는 하나 이상의 웹 서버들을 포함한다. 외부 시스템(1020)은 소셜 네트워킹 시스템(1030)으로부터 분리된다. 예컨대, 외부 시스템(1020)은 제1 도메인과 연관되는 한편, 소셜 네트워킹 시스템(1030)은 분리된 소셜 네트워킹 도메인과 연관된다. 외부 시스템(1020)에 포함된 웹 페이지들(1022a, 1022b)은 컨텐츠를 식별하고 식별된 컨텐츠의 포맷 또는 프레젠테이션을 특정하는 명령어들을 포함하는 마크업 언어 문서(1014)를 포함한다.
일실시예로, 모바일 장치(100)는 사용자 장치(1010)로 구현될 수 있다. 예컨대, 사용자 장치(1010)는 이미지 캡쳐 모듈(1054) 및 이미지 변환 모듈(1052)을 포함하는 모바일 장치일 수 있다. 일실시예로, 이미지 캡쳐 모듈(1054) 및 이미지 변환 모듈(1052)은 각각 이미지 캡쳐 모듈(110) 및 이미지 변환 모듈(120)로 구현될 수 있다. 사용자 장치(1010)는 또한, 움직임 센서, 카메라, 디스플레이, 및 프로세싱 장치와 같은 도시되지 않은 다른 컴포넌트들을 포함할 수 있다. 사용자 장치(1010)는 본 명세서에 논의되는 이미지 변환을 수행할 수 있다.
소셜 네트워킹 시스템(1030)은 복수의 사용자들을 포함하는 소셜 네트워크를 위해 소셜 네트워크의 사용자들에게 소셜 네트워크의 다른 사용자들과 통신하고 상호작용하는 능력을 제공하는 하나 이상의 컴퓨팅 장치를 포함한다. 일부 예에서, 소셜 네트워크는 그래프 즉, 에지 및 노드를 포함하는 데이터 구조로 표현될 수 있다. 데이터 베이스, 객체, 클래스, 메타 구성요소, 파일, 또는 임의의 다른 데이터 구조를 포함하지만 이에 제한되지 않는 다른 데이터 구조가 또한, 소셜 네트워크를 표현하는데 사용될 수 있다. 소셜 네트워킹 시스템(1030)은 오퍼레이터에 의해 관리되고, 유지되거나, 또는 제어될 수 있다. 소셜 네트워킹 시스템(1030)의 오퍼레이터는 사람, 자동화된 애플리케이션, 또는 컨텐츠를 관리하고, 정책을 규제하고, 소셜 네트워킹 시스템(1030) 내에서 사용 메트릭을 수집하기 위한 일련의 애플리케이션들일 수 있다. 임의의 타입의 오퍼레이터가 사용될 수 있다.
사용자들은 소셜 네트워킹 시스템(1030)에 가입할 수 있고, 이후 그들이 연결되고자 하는 소셜 네트워킹 시스템(1030)의 임의의 수의 다른 사용자들에 대한 연결을 추가할 수 있다. 본 명세서에서 사용되는 용어 "친구"는, 사용자가 소셜 네트워킹 시스템(1030)을 통해 연결, 연관, 또는 관계를 형성한 소셜 네트워킹 시스템(1030)의 임의의 다른 사용자를 의미한다. 예컨대, 일실시예로, 소셜 네트워킹 시스템(1030)에서의 사용자들이 소셜 그래프에서 노드로 표현된다면, 용어 "친구"는 2개의 사용자 노드를 직접 연결하고 그 사이에 형성되는 에지를 의미할 수 있다.
연결은 사용자에 의해 명시적으로 추가되거나 사용자의 공통의 특징(예컨대,동일한 교육 기관의 졸업생들인 사용자들)에 기반하여 소셜 네트워킹 시스템(1030)에 의해 자동으로 생성될 수 있다. 예컨대, 제1 사용자는 구체적으로 특정의 다른 사용자를 친구로 선택한다. 소셜 네트워킹 시스템(1030)에서의 연결은 보통 양방향이지만, 그럴 필요는 없고, 따라서 용어들 "사용자" 및 "친구"는 준거 기준(frame of reference)에 따른다. 소셜 네트워킹 시스템(1030)의 사용자들 사이의 연결은 보통 양방향("쌍방향"), 또는 "상호적"이지만, 연결들은 또한, 일방적, 또는 "일방향"일 수 있다. 예컨대, Bob과 Joe가 모두 소셜 네트워킹 시스템(1030)의 사용자들이고 서로에게 연결되어있다면, Boe과 Joe는 서로의 연결들이다. 반면에, Bob이 소셜 네트워킹 시스템(1030)으로 Joe에 의해 통신되는 데이터를 열람하기 위해 Joe에게 연결하기를 희망한지만, Joe가 상호 연결을 형성하기를 희망하지 않는다면, 일방향 연결이 확립될 수 있다. 사용자들 사이의 연결은 직접적인 연결일 수 있지만, 소셜 네트워킹 시스템(1030)의 일부 실시예들은 하나 이상의 연결 레벨 또는 이격도를 통한 간접적인 연결을 허용한다.
사용자들 사이의 연결을 확립 및 관리하고 사용자들 사이의 상호작용을 허용하는 것에 추가로, 소셜 네트워킹 시스템(1030)은 사용자들에게 소셜 네트워킹 시스템(1030)에 의해 지원되는 다양한 타입의 아이템들에 대해 행위를 수행할 능력을 제공한다. 이러한 아이템들을, 소셜 네트워킹 시스템(1030)의 사용자들이 속할 수 있는 그룹들 또는 네트워크들(즉, 사람들, 엔티티들, 및 컨셉들의 소셜 네트워크), 사용자가 관심있을 수 있는 이벤트 또는 캘린더 엔트리들, 사용자가 소셜 네트워킹 시스템(1030)을 통해 사용할 수 있는 컴퓨터-기반의 애플리케이션들, 사용자가 소셜 네트워킹 시스템(1030)에 의해 제공되거나 소셜 네트워킹 시스템(1030)을 통한 서비스를 통해 아이템들을 사거나 팔 수 있도록 하는 거래들, 사용자가 소셜 네트워킹 시스템(1030) 내에서 혹은 밖에서 수행할 수 있는 광고와의 상호작용들을 포함할 수 있다. 이들은 사용자가 소셜 네트워킹 시스템(1030)에 대해 행동할 수 있는 아이템들의 몇몇 예시에 불과하며, 많은 다른 예들이 가능하다. 사용자는 소셜 네트워킹 시스템(1030)에서 또는 소셜 네트워킹 시스템(1030)과 분리되거나 네트워크(1050)를 통해 소셜 네트워킹 시스템(1030)으로 연결된 외부 시스템(1020)에서, 표현될 수 있는 어떤 것과도 상호작용할 수 있다.
소셜 네트워킹 시스템(1030)은 또한, 다양한 엔티티들을 링크할 수 있다. 예컨대, 소셜 네트워킹 시스템(1030)은 사용자가 API, 웹 서비스, 또는 다른 통신 채널을 통해 외부 시스템(1020) 또는 다른 엔티티들과 상호작용하는 것뿐만 아니라 사용자들 서로와 상호작용할 수 있게 한다. 소셜 네트워킹 시스템(1030)은 복수의 에지에 의해 상호연결된 복수의 노드를 포함하는 "소셜 그래프"를 생성하고 관리한다. 소셜 그래프에서의 각각의 노드는 다른 노드에 대해 행동할 수 있거나 및/또는 다른 노드가 행동할 수 있는 엔티티를 표현할 수 있다. 소셜 그래프는 다양한 타입의 노드들을 포함할 수 있다. 노드의 타입의 예들은 사용자들, 비-인간 엔티티들, 컨텐츠 아이템, 웹 페이지, 그룹, 활동, 메시지, 컨셉, 및 소셜 네트워킹 시스템(1030)에서 객체에 의해 표현될 수 있는 임의의 다른 것들을 포함한다. 소셜 그래프에서의 2개의 노드 사이의 에지는 2개의 노드 사이의 특정 유형의 연결 또는 연관을 표현할 수 있고, 에지는 노드 연결로부터 또는 노드들 중 하나가 다른 노드에 대해 수행하는 행위로부터 발생할 수 있다. 일부 경우에서, 노드 사이의 에지에는 가중치가 부과될 수 있다. 에지의 가중치는 노드 사이의 연결 또는 연관의 강도와 같은 에지와 연관된 속성을 표현할 수 있다. 상이한 타입의 에지에는 상이한 가중치가 제공될 수 있다. 예컨대, 한 명의 사용자가 다른 사용자를 "좋아요"할 때 생성된 에지에는 하나의 가중치가 부여될 수 있는 한편, 사용자가 다른 사용자를 친구로 삼을 때 생성된 에지에는 상이한 가중치가 부여될 수 있다.
예로서, 제1 사용자가 제2 사용자를 친구로 식별할 때, 소셜 그래프에서의 에지는 제1 사용자를 표현하는 노드와 제2 사용자를 표현하는 제2 노드를 연결하도록 생성된다. 다양한 노드가 서로 연관되고 상호작용함에 따라, 소셜 네트워킹 시스템(1030)은 관계 및 상호작용을 반영하도록 다양한 노드를 연결하는 에지들을 수정한다.
소셜 네트워킹 시스템(1030)은 또한, 소셜 네트워킹 시스템(1030)과의 사용자 상호작용을 향상시키는 사용자-생성된 컨텐츠를 포함한다. 사용자-생성된 컨텐츠는, 사용자가 소셜 네트워킹 시스템(1030)에 추가, 업로드, 전송 또는 "게시"할 수 있는 모든 것을 포함할 수 있다. 예컨대, 사용자는 사용자 장치(1010)로부터 소셜 네트워킹 시스템(1030)에 게시물을 통신한다. 게시물은 상태 업데이트 또는 다른 텍스트 데이터, 위치 정보, 사진과 같은 이미지, 비디오, 링크, 음악, 또는 다른 유사한 데이터 및/또는 미디어와 같은 데이터를 포함할 수 있다. 컨텐츠는 또한, 제3자에 의해 소셜 네트워킹 시스템(1030)에 추가될 수 있다. 컨텐츠 "아이템"들은 소셜 네트워킹 시스템(1030)에서 객체로 표현될 수 있다. 이러한 방식으로, 소셜 네트워킹 시스템(1030)의 사용자들은, 다양한 통신 채널을 통해 미디어의 다양한 타입의 텍스트 및 컨텐츠 아이템을 게시함으로써 서로와 통신하도록 장려된다. 이러한 통신은 사용자들 서로간의 상호작용을 증가시키고 사용자가 소셜 네트워킹 시스템(1030)과 상호작용하는 빈도를 증가시킨다.
소셜 네트워킹 시스템(1030)은 웹 서버(1032), API 요청 서버(1034), 사용자 프로필 스토어(1036), 연결 스토어(1038), 행위 로거(1040), 활동 로그(1042), 인증 서버(1044), 및 이미지 불러오기(importing) 모듈(1046)을 포함한다. 본 발명의 일실시예로, 소셜 네트워킹 시스템(1030)은 다양한 애플리케이션을 위해 추가의, 더 적은 수의, 혹은 상이한 컴포넌트들을 포함할 수 있다. 네트워크 인터페이스, 보안 메커니즘, 로드 균형기(load balancer), 장애복구 서버(failover server), 관리 및 네트워크 운영 콘솔 등과 같은 다른 컴포넌트들은 시스템의 세부사항을 불명확하게 만들지 않기 위해 도시되지 않는다.
사용자 프로필 스토어(1036)는, 사용자에 의해 선언되었거나 소셜 네트워킹 시스템(1030)에 의해 추론된 경력, 학력, 취미 또는 선호도, 위치 등과 같은 인명적, 인구학적, 및 다른 타입의 기술적 정보를 포함하는 사용자 계정에 관한 정보를 관리한다. 이 정보는 사용자 프로필 스토어(1036)에 저장되어서, 각각의 사용자가 고유하게 식별되도록 한다. 소셜 네트워킹 시스템(1030)은 또한, 연결 스토어(1038)에서의 상이한 사용자들 사이의 하나 이상의 연결을 기술하는 데이터를 저장한다. 연결 정보는 유사하거나 공통되는 경력, 그룹 멤버쉽, 취미, 또는 학력을 갖는 사용자들을 표시할 수 있다. 추가로, 소셜 네트워킹 시스템(1030)은 상이한 사용자들 사이의 사용자-정의된 연결을 포함하여, 사용자들이 다른 사용자들과의 그들의 관계를 특정할 수 있도록 한다. 예컨대, 사용자-정의된 연결은 사용자가 사용자의 실제-삶에서의 관계들, 가령 친구들, 동료들, 파트너들 등에 필적하는 다른 사용자들과의 관계를 생성할 수 있도록 한다. 사용자들은 미리 정의된 타입의 연결로부터 선택하거나 필요에 따라 그들 스스로의 연결 타입을 정의할 수 있다. 소셜 네트워킹 시스템(1030)에서의 다른 노드들과의 연결, 가령 비-인간 엔티티들, 버켓, 클러스터 센터, 이미지, 관심사, 페이지, 외부 시스템, 컨셉 등이 또한, 연결 스토어(1038)에 저장된다.
소셜 네트워킹 시스템(1030)은 사용자가 상호작용할 수 있는 객체들에 관한 데이터를 관리한다. 이 데이터를 관리하기 위해, 사용자 프로필 스토어(1036) 및 연결 스토어(1038)는 소셜 네트워킹 시스템(1030)에 의해 관리되는 객체들의 대응하는 타입의 인스턴스들을 저장한다. 각각의 객체 타입은 객체의 타입에 적절한 정보는 저장하는데 적합한 정보 필드를 가진다. 예컨대, 사용자 프로필 스토어(1036)는 사용자의 계정 및 사용자의 계정과 관련된 정보를 기술하기에 적절한 필드를 갖는 데이터 구조를 포함한다. 특정 타입의 새로운 객체가 생성될 때, 소셜 네트워킹 시스템(1030)은 대응하는 타입의 새로운 데이터 구조를 초기화하고, 고유한 객체 식별자를 그것에 할당하며, 필요에 따라 객체에 데이터를 추가한다. 이는 예컨대, 사용자가 소셜 네트워킹 시스템(1030)의 사용자가 되고, 소셜 네트워킹 시스템(1030)이 사용자 프로필 스토어(1036)에 사용자 프로필의 새로운 인스턴스를 생성하며, 고유한 식별자를 사용자 계정에 할당하고, 사용자에 의해 제공된 정보로 사용자 계정의 필드를 채우는 것을 시작할 때에 발생할 수 있다.
연결 스토어(1038)는 사용자의 다른 사용자들에 대한 연결, 외부 시스템(1020)으로의 연결 또는 다른 엔티티들로의 연결을 기술하는데 적절한 데이터 구조를 포함한다. 연결 스토어(1038)는 또한, 연결 타입을 사용자의 연결과 연관시킬 수 있고, 연결 타입은 사용자에 관한 정보에 대한 액세스를 규제하기 위해 사용자의 개인정보 설정과 함께 사용될 수 있다. 본 발명의 일실시예로, 사용자 프로필 스토어(1036) 및 연결 스토어(1038)는 연합된 데이터베이스로 구현될 수 있다.
연결 스토어(1038), 사용자 프로필 스토어(1036), 및 활동 로그(1042)에 저장된 데이터는 소셜 네트워킹 시스템(1030)이 상이한 객체들 사이의 관계를 식별하기 위해 다양한 객체 및 노드를 연결하는 에지를 식별하도록 노드를 사용하는 소셜 그래프를 생성할 수 있도록 한다. 예컨대, 제1 사용자가 소셜 네트워킹 시스템(1030)에서 제2 사용자와의 연결을 확립한다면, 사용자 프로필 스토어(1036)로부터의 제1 사용자 및 제2 사용자의 사용자 계정들은 소셜 그래프에서 노드로서 역할을 할 수 있다. 연결 스토어(1038)에 의해 저장된 제1 사용자 및 제2 사용자 사이의 연결은 제1 사용자 및 제2 사용자와 연관된 노드들 사이의 에지이다. 이 예로 계속하면, 제2 사용자는 이후, 소셜 네트워킹 시스템(1030) 내에서 제1 사용자에게 메시지를 전송할 수 있다. 저장될 수 있는 이 메시지를 전송하는 행위는, 제1 사용자 및 제2 사용자를 표현하는 소셜 그래프에서의 2개의 노드 사이의 또 다른 에지이다. 추가로, 메시지 자체는 식별될 수 있고, 제1 사용자 및 제2 사용자를 표현하는 노드들에 연결된 또 다른 노드로서 소셜 그래프에 포함될 수 있다.
다른 예로, 제1 사용자는 소셜 네트워킹 시스템(1030)에 의해 관리되는 이미지에서 (또는 대안으로, 소셜 네트워킹 시스템(1030) 외부의 다른 시스템에 의해 관리되는 이미지)에서 제2 사용자를 태그할 수 있다. 이미지는 그 자체가 소셜 네트워킹 시스템(1030)에서 노드로 표현될 수 있다. 이러한 태깅 행위는 제1 사용자 및 제2 사용자 사이의 에지를 생성할 뿐만 아니라 소셜 그래프에서 또한, 노드가 되는 각각의 사용자들 및 이미지 사이의 에지를 생성할 수 있다. 또 다른 예로, 사용자가 이벤트에 참석하는 것을 확인한다면, 사용자 및 이벤트는 사용자 프로필 스토어(1036)로부터 획득되는 노드들이며, 여기서 이벤트의 참석은 활동 로그(1042)로부터 검색될 수 있는 노드 사이의 에지이다. 소셜 그래프를 생성하고 관리함으로써, 소셜 네트워킹 시스템(1030)은 상이한 타입의 객체 및 상호작용과 그 객체들 사이의 연결을 기술하는 데이터를 포함하고, 소셜적으로 관련된(socially relevant) 정보의 풍부한 소스를 제공한다.
웹 서버(1032)는 네트워크(1050)를 통해 소셜 네트워킹 시스템(1030)을 하나 이상의 사용자 장치(1010) 및/또는 하나 이상의 외부 시스템(1020)으로 링크한다. 웹 서버(1032)는, 가령 Java, JavaScript, Flash, XML 등과 같은 다른 웹-연관 컨텐츠뿐만 아니라 웹 페이지들을 서빙한다. 웹 서버(1032)는 메일 서버 또는 소셜 네트워킹 시스템(1030)과 하나 이상의 사용자 장치(1010) 사이의 메시지를 수신하고 라우팅하기 위한 다른 메시징 기능을 포함할 수 있다. 메시지는 인스턴트 메시지, 큐잉된 메시지(예컨대, 이메일), 텍스트 및 SMS 메시지, 또는 임의의 다른 적절한 메시지 포맷일 수 있다.
API 요청 서버(1034)는, 하나 이상의 API 함수를 호출함으로써 하나 이상의 외부 시스템(1020) 및 사용자 장치(1010)가 소셜 네트워킹 시스템(1030)으로부터 액세스 정보를 호출하도록 한다. API 요청 서버(1034)는 또한, API들을 호출함으로써 외부 시스템(1020)이 소셜 네트워킹 시스템(1030)으로 정보를 전송하도록 할 수 있다. 일실시예로, 외부 시스템(1020)은 네트워크(1050)를 통해 소셜 네트워킹 시스템(1030)으로 API 요청을 전송하고, API 요청 서버(1034)는 API 요청을 수신한다. API 요청 서버(1034)는, API 요청 서버(1034)가 네트워크(1050)를 통해 외부 시스템(1020)으로 통신하는 적절한 응답을 생성하기 위해 API 요청과 연관된 API를 호출함으로써 그 요청을 프로세싱한다. 예컨대, API 요청에 응답하여, API 요청 서버(1034)는 가령 외부 시스템(1020)으로 로그된 사용자의 연결과 같은 사용자와 연관된 데이터를 수집하고, 수집된 데이터를 외부 시스템(1020)으로 통신한다. 다른 실시예로, 사용자 장치(1010)는 외부 시스템(1020)과 동일한 방식으로 소셜 네트워킹 시스템(1030)과 API들을 통해 통신한다.
행위 로거(1040)는 소셜 네트워킹 시스템(1030) 안에서의 및/또는 밖에서의 사용자 행위에 관한 통신을 웹 서버(1032)로부터 수신할 수 있다. 행위 로거(1040)는 사용자 행위에 관한 정보로 활동 로그(1042)를 채워서 소셜 네트워킹 시스템(1030)이 소셜 네트워킹 시스템(1030) 내에서 및 소셜 네트워킹 시스템(1030) 밖에서 그것의 사용자들에 의해 행해진 다양한 행위를 발견할 수 있도록 한다. 특정 사용자가 소셜 네트워킹 시스템(1030) 상의 다른 노드에 관해 행한 임의의 행위는, 활동 로그(1042) 또는 유사한 데이터베이스 또는 다른 데이터 저장소에 관리되는 정보를 통해 각각의 사용자의 계정과 연관될 수 있다. 식별되고 저장된 소셜 네트워킹 시스템(1030) 내에서 사용자에 의해 행해진 행위의 예들은 예컨대, 다른 사용자로의 연결의 추가, 다른 사용자에게 메세지를 전송, 다른 사용자로부터의 메시지를 읽기, 다른 사용자와 연관된 컨텐츠를 열람, 다른 사용자에 의해 게시된 이벤트에 참석, 이미지를 게시, 이미지를 게시하는 것의 시도, 또는 다른 사용자 또는 다른 객체와 상호작용하는 다른 행위들을 포함할 수 있다. 사용자가 소셜 네트워킹 시스템(1030) 내에서 행위를 행할 때, 행위는 활동 로그(1042)에 기록된다. 일실시예로, 소셜 네트워킹 시스템(1030)은 활동 로그(1042)를 엔트리들의 데이터베이스로서 관리한다. 행위가 소셜 네트워킹 시스템(1030) 내에서 행해질 때, 행위에 대한 엔트리는 활동 로그(1042)에 추가된다. 활동 로그(1042)는 행위 로그라고 언급될 수 있다.
추가로, 사용자 행위는 가령 소셜 네트워킹 시스템(1030)으로부터 분리된 외부 시스템(1020)과 같이 소셜 네트워킹 시스템(1030)의 외부의 엔트리 내에서 발생하는 컨셉 및 행위와 연관될 수 있다. 예컨대, 행위 로거(1040)는 웹 서버(1032)로부터 외부 시스템(1020)과의 사용자 상호작용을 기술하는 데이터를 수신할 수 있다. 이 예에서, 외부 시스템(1020)은 소셜 그래프에서의 구조화된 행위 및 객체에 따라 사용자의 상호작용을 보고한다.
사용자가 외부 시스템(1020)과 상호작용하는 행위들의 다른 예들은, 사용자가 외부 시스템(1020) 또는 다른 엔티티에 대한 관심을 표현하는 것, 사용자가 외부 시스템(1020) 또는 외부 시스템(1020) 내의 웹 페이지(1022a)를 논의하는 코멘트를 소셜 네트워킹 시스템(1030)에 게시하는 것, 사용자가 외부 시스템(1020)과 연관된 URL(Uniform Resource Locator) 또는 다른 식별자를 소셜 네트워킹 시스템(1030)에 게시하는 것, 사용자가 외부 시스템(1020)과 연관된 이벤트에 참석하는 것, 또는 외부 시스템(1020)과 관련된 사용자에 의한 임의의 다른 행위를 포함한다. 따라서, 활동 로그(1042)는 소셜 네트워킹 시스템(1030)의 사용자 및 소셜 네트워킹 시스템(1030)으로부터 분리된 외부 시스템(1020) 사이의 상호작용을 기술하는 행위들을 포함할 수 있다.
인증 서버(1044)는 소셜 네트워킹 시스템(1030)의 사용자들의 하나 이상의 개인정보 설정을 강제한다. 사용자의 개인정보 설정은 어떻게 사용자와 연관된 특정 정보가 공유될 수 있는지를 결정한다. 개인정보 설정은 사용자와 연관된 특정 정보의 명세(specification) 및 정보가 공유될 수 있는 엔티티 또는 엔티티들의 명세를 포함한다. 정보가 공유될 수 있는 엔티티들의 예들은 다른 사용자들, 애플리케이션, 외부 시스템(1020), 또는 정보에 잠재적으로 액세스할 수 있는 임의의 엔티티를 포함할 수 있다. 사용자에 의해 공유될 수 있는 정보는 가령, 프로필 사진, 사용자와 연관된 전화번호, 사용자의 연결, 연결을 추가하기, 사용자의 프로필 정보를 변경하기와 같은 사용자에 의해 행해진 행위 등과 같은 사용자 계정 정보를 포함한다.
개인정보 설정 명세가 상이한 레벨의 입상도(granularity)에서 제공될 수 있다. 예컨대, 개인정보 설정은 다른 사용자들과 공유될 특정 정보를 식별할 수 있고; 개인정보 설정은 직장 전화번호 또는 가령, 프로필 사진, 집 전화번호, 및 상태와 같은 관련된 정보의 특정 세트를 식별한다. 대안으로, 개인정보 설정은 사용자와 연관된 모든 정보에 적용될 수 있다. 특정 정보에 액세스할 수 있는 엔티티들의 세트의 명세는 또한, 다양한 레벨의 입상도에서 특정될 수 있다. 정보가 공유될 수 있는 다양한 세트의 엔티티들은 예컨대, 사용자의 모든 친구들, 친구들의 모든 친구들, 모든 애플리케이션, 또는 모든 외부 시스템(1020)을 포함할 수 있다. 일실시예는 엔티티들의 세트의 명세가 엔티티들의 목록을 포함할 수 있도록 한다. 예컨대, 사용자는 특정 정보에 액세스하는 것이 허용되는 외부 시스템(1020)의 리스트를 제공할 수 있다. 다른 실시예는 명세가, 정보에 액세스하는것이 허용되지 않은 예외들을 함께 갖는 엔티티들의 세트를 포함하도록 한다. 예컨대, 사용자는 모든 외부 시스템(1020)이 사용자의 작업 정보에 액세스할 수 있도록 하지만, 작업 정보에 액세스하는 것이 허용되지 않는 외부 시스템(1020)의 리스트를 특정할 수 있다. 특정 실시예들은 특정 정보를 액세스하는 것이 허용되지 않는 예외들의 리스트를 "차단 리스트"라고 할 수 있다. 사용자에 의해 특정된 차단 리스트에 속하는 외부 시스템(1020)은 개인정보 설정에 특정된 정보를 액세스하는 것으로부터 차단된다. 정보의 명세의 입상도 및 정보가 공유되는 엔티티들의 명세의 입상도의 다양한 조합이 가능하다. 예컨대, 모든 개인 정보는 친구들과 공유될 수 있는 한편, 모든 작업 정보는 친구의 친구들과 공유될 수 있다.
인증 서버(1044)는 사용자와 연관된 특정 정보가 사용자의 친구들, 외부 시스템(1020), 및/또는 다른 애플리케이션과 엔티티들에 의해 액세스될 수 있는지 여부를 결정하는 로직을 포함한다. 외부 시스템(1020)은 가령 사용자의 직장 전화번호와 같은 사용자의 더 개인적이고 민감한 정보에 액세스하기 위해 인증 서버(1044)로부터의 인증이 필요할 수 있다. 사용자의 개인정보 설정에 기반하여, 인증 서버(1044)는, 다른 사용자, 외부 시스템(1020), 애플리케이션, 또는 다른 엔티티가 사용자에 의해 행해진 행위에 관한 정보를 포함하는 사용자와 연관된 정보에 액세스하는 것이 허용되는지 여부를 결정한다.
소셜 네트워킹 시스템(1030)은 이미지 모듈(1046)을 포함할 수 있다. 이미지 모듈(1046)은 사용자 장치로부터의 하나 이상의 이미지를 소셜 네트워킹 시스템(1030)에 업로드하기 위해 사용자 장치(1010)와 통신할 수 있다. 예컨대, 이미지 모듈(1046)은 사용자 장치(1010)에 의해 캡쳐되고 변환된 변환 이미지를 수신할 수 있다. 추가로, 이미지 모듈(1046)은 이미지 변환 모듈(1052)의 기능을 구현할 수 있다. 일실시예로, 본 명세서에 기술된 이미지 변환 기술은 이미지 모듈(1046)과 이미지 변환 모듈(1052)의 적절한 조합에 의해 수행될 수 있다. 예컨대, 본 명세서에서 논의되는 움직임 센서 데이터 및 모바일 장치(100)에 의해 제공되는 다른 정보에 기반하여, 기울어진 이미지의 회전의 각도의 계산이 이미지 모듈(1046), 이미지 변환 모듈(1052), 또는 둘 다에 의해 수행될 수 있다.
전술한 프로세스 및 특징들은 광범위하게 다양한 네트워크 및 컴퓨팅 환경에서 광범위하게 다양한 기계 및 컴퓨터 시스템 구조에 의해 구현될 수 있다. 도 11은 본 발명의 실시예에 따른, 본 명세서에 기술된 하나 이상의 실시예들을 구현하도록 사용될 수 있는 컴퓨터 시스템(1100)의 예시를 도시한다. 예컨대, 컴퓨터 시스템(1100)은 도 10에 도시된 사용자 장치(1010) 및/또는 모바일 장치(100)를 표현할 수 있다.
컴퓨터 시스템(1100)은 컴퓨터 시스템(1100)이 본 명세서에 기술된 프로세스 및 특징들을 수행하도록 야기하는 명령어들의 세트들을 포함한다. 컴퓨터 시스템(1100)은 다른 기계들에 연결(예컨대, 네트워크화)될 수 있다. 네트워크화된 배치에서, 컴퓨터 시스템(1100)은 클라이언트-서버 네트워크 환경에서의 서버 기계 또는 클라이언트 기계의 용량으로 또는 피어-투-피어 (또는 분산형) 네트워크 환경에서의 피어 기계로서 동작할 수 있다. 본 발명의 일실시예로, 컴퓨터 시스템(1100)은 소셜 네트워킹 시스템(1030), 사용자 장치(1010), 외부 시스템(1020), 또는 이들의 컴포넌트일 수 있다. 본 발명의 일실시예로, 컴퓨터 시스템(1100)은 소셜 네트워킹 시스템(1030)의 전부 또는 일부를 구성하는 많은 수의 서버들 중 하나의 서버일 수 있다.
컴퓨터 시스템(1100)은, 본 명세서에 기술된 프로세스 및 특징에 관련되고, 컴퓨터-판독가능한 매체에 저장된 프로세서(1102), 캐시(1104), 및 하나 이상의 실행가능한 모듈 및 드라이버를 포함한다. 추가로, 컴퓨터 시스템(1100)은 고성능 입력/출력(I/O) 버스(1106) 및 표준 I/O 버스(1108)를 포함한다. 호스트 브리지(1110)는 프로세서(1102)를 고성능 I/O 버스(1106)에 연결하는 한편, I/O 버스 브리지(1112)는 2개의 버스들(1106, 1108)을 서로 연결한다. 시스템 메모리(1114) 및 하나 이상의 네트워크 인터페이스(1116)는 고성능 I/O 버스(1106)에 연결된다. 컴퓨터 시스템(1100)은 비디오 메모리 및 비디오 메모리에 연결된 디스플레이 장치(도시되지 않음)를 더 포함할 수 있다. 대용량 저장소(1118) 및 I/O 포트(1120)는 표준 I/O 버스(1108)에 연결된다. 컴퓨터 시스템(1100)은 선택적으로 키보드, 포인팅 장치, 디스플레이 장치, 또는 표준 I/O 버스(1108)에 연결된 다른 입력/출력 장치들(도시되지 않음)을 포함할 수 있다. 전체적으로, 이러한 구성요소들은, 캘리포니아 산타 클라라의 인텔사에 의해 제조된 x86-호환 프로세서, 및 캘리포니아 서니데일의 AMD(Advanced Micro Devices), Inc.에 의해 제조된 x86-호환 프로세서뿐만 아니라 임의의 다른 적절한 프로세서에 기반하는 컴퓨터 시스템을 포함하지만 이에 제한되지 않는 컴퓨터 하드웨어 시스템의 넓은 카테고리를 표현하도록 의도되었다.
운영 시스템은, 소프트웨어 애플리케이션(도시되지 않음)으로 오가는 데이터의 입력 및 출력을 포함하는 컴퓨터 시스템(1100)의 동작을 관리하고 제어한다. 운영 시스템은 시스템상에 실행되는 소프트웨어 애플리케이션과 시스템의 하드웨어 컴포넌트들 사이의 인터페이스를 제공한다. 가령 LINUX 운영 시스템, 캘리포니아 쿠퍼티노의 Apple Computer Inc.로부터 이용가능한 Apple Macintosh 운영 시스템, UNIX 운영 시스템, Microsoft® Windows® 운영 시스템, BSD 운영 시스템 등과 같은 임의의 적절한 운영 시스템이 이용될 수 있다. 다른 구현도 가능하다.
컴퓨터 시스템(1100)의 구성요소들은 아래에서 더 상세하게 기술된다. 특히, 네트워크 인터페이스(1116)는 컴퓨터 시스템(1100) 및 가령 Ethernet(예컨대, IEEE 802.3) 네트워크, 백플레인(backplane) 등과 같은 임의의 광범위의 네트워크 사이의 통신을 제공한다. 대용량 저장소(1118)는 앞서 식별된 각각의 컴퓨팅 시스템들에 의해 구현되는 상기 프로세스들 및 특징들을 수행하는 프로그래밍 명령어들 및 데이터를 위한 영구적인 저장소를 제공하는 한편, 시스템 메모리(1114)(예컨대, DRAM)는 프로세서(1102)에 의해 실행될 때 데이터 및 프로그래밍 명령어들을 위한 임시적인 저장소를 제공한다. I/O 포트(1120)는, 컴퓨터 시스템(1100)에 연결될 수 있는 추가 주변 장치들 사이의 통신을 제공하는 하나 이상의 직렬 및/또는 병렬 통신 포트일 수 있다.
컴퓨터 시스템(1100)은 다양한 시스템 구조들을 포함할 수 있고, 컴퓨터 시스템(1100)의 다양한 컴포넌트들은 재정렬될 수 있다. 예컨대, 캐시(1104)는 프로세서(1102)를 갖는 온-칩일 수 있다. 대안으로, 캐시(1104) 및 프로세서(1102)는 프로세서(1102)가 "프로세서 코어"로 불리는 "프로세서 모듈"로 함께 패킹(pack)될 수 있다. 더욱이, 본 발명의 특정 실시예들은 상기의 컴포넌트들 전부를 요구하지도 않고 포함하지도 않을 수 있다. 예컨대, 표준 I/O 버스(1108)에 연결된 주변 장치들은 고성능 I/O 버스(1106)에 연결될 수 있다. 추가로, 일부 실시예로, 단일 버스만이 존재할 수 있고, 컴퓨터 시스템(1100)의 컴포넌트들은 단일 버스에 연결될 수 있다. 더욱이, 컴퓨터 시스템(1100)은 가령 추가적인 프로세서, 저장 장치, 또는 메모리와 같은 추가 컴포넌트들을 포함할 수 있다.
일반적으로, 본 명세서에 기술된 프로세스 및 특징들은 운영 시스템 또는 특정 애플리케이션, 컴포넌트, 프로그램, 객체, 모듈 또는 "프로그램"으로 불리는 일련의 명령어들의 일부로서 구현될 수 있다. 예컨대, 하나 이상의 프로그램들은 본 명세서에 기술된 특정 프로세스들을 실행하는데 사용될 수 있다. 프로그램들은 전형적으로 하나 이상의 프로세서에 의해 읽혀지고 실행될 때 컴퓨터 시스템(1100)이 본 명세서에 기술된 프로세스 및 특징들을 실행하는 동작들을 수행하도록 야기하는 하나 이상의 명령어들을 컴퓨터 시스템(1100)에서 다양한 메모리 및 저장 장치에서 포함할 수 있다. 본 명세서에 기술된 프로세스 및 특징들은 소프트웨어, 펌웨어, 하드웨어(예컨대, 애플리케이션 고유의 집적 회로(application specific integrated circuit; ASIC), 또는 이들의 임의의 조합에서 구현될 수 있다.
하나의 구현예로, 본 명세서에 기술된 프로세스 및 특징들은, 컴퓨터 시스템(1100)에 의해 실행되는 일련의 실행가능한 모듈로서 분산형 컴퓨팅 환경에서 개별적으로 또는 집합적으로 구현될 수 있다. 전술한 모듈들은 하드웨어, 컴퓨터-판독가능한 매체 (또는 기계-판독가능한 매체), 또는 이들 모두의 조합에 의해 실현될 수 있다. 예컨대, 모듈은 가령, 프로세서(1102)와 같은 하드웨어 시스템에서의 프로세서에 의해 실행되는 복수의 또는 일련의 명령어들을 포함할 수 있다. 초기에, 일련의 명령어들은 가령, 대용량 저장소(1118)와 같은 저장 장치에 저장될 수 있다. 하지만, 일련의 명령어들은 임의의 적절한 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 더욱이, 일련의 명령어들은 로컬에서 저장될 필요가 없으며, 네트워크 인터페이스(1116)를 통해 가령 네트워크상의 서버와 같은 원격 저장 장치로부터 수신될 수 있다. 명령어들은 가령 대용량 저장소(1118)와 같은 저장 장치로부터 시스템 메모리(1114)로 복사되고, 이후 프로세서(1102)에 의해 액세스되고 실행된다.
컴퓨터-판독가능한 매체의 예들은, 가령 휘발성 및 비-휘발성 메모리 장치와 같은 기록 가능한 타입의 매체; 고체 상태 메모리(solid state memory; SSD); 플로피 및 다른 제거가능한 디스크; 하드 디스크 드라이브, 자기 매체; 광학 디스크(예컨대, CD ROMS(Compact Disk Read-Only Memory), DVDs(Digital Versatile Disks)); 다른 유사한 비-일시적 (또는 일시적), 실체적 (또는 비-실체적) 저장 매체; 또는 본 명세서에 기술되는 임의의 하나 이상의 프로세스 및 특징을 수행하는 컴퓨터 시스템(1100)에 의해 실행하기 위한 일련의 명령어들을 저장하고, 인코딩하고, 운반하는데 적절한 임의의 타입의 매체를 포함하지만, 이에 제한되지 않는다.
설명하기 위한 목적을 위해, 발명의 설명의 완전한 이해를 제공하도록 다수의 구체적인 세부사항들이 언급된다. 하지만, 본 명세서의 실시예들은 이러한 구체적인 세부사항들 없이도 실행될 수 있음이 통상의 기술자에게 자명해질 것이다. 일부 예에서, 모듈, 구조, 프로세스, 특징, 및 장치는 발명의 설명을 불명확하게 하는 것을 피하기 위해 블록 다이어그램의 형태로 도시된다. 다른 예에서, 기능적 블록 다이어그램 및 흐름 다이어그램은 데이터 및 로직의 흐름을 표현하도록 도시된다. 블록 다이어그램 및 흐름 다이어그램의 컴포넌트들(예컨대, 모듈, 블록, 구조, 장치, 특징 등)은 본 명세서에 명시적으로 기술되고 도시된 것과 다른 방식으로 다양하게 조합되고, 분리되고, 제거되고, 재정렬되고, 대체될 수 있다.
본 명세서에서의 "일실시예", "실시예", "다른 실시예", "일련의 실시예" 등에 대한 언급은, 실시예와 연계되어 기술된 특정의 특징, 설계, 구조, 또는 특성이 본 명세서의 적어도 하나의 실시예에 포함되는 것을 의미한다. 본 명세서에서의 다양한 위치에서 가령, "일실시예로" 또는 "실시예로"와 같은 구절이 나타나는 것은 동일한 실시예를 언급하거나 혹은 다른 실시예들과 상호 배타적이며 분리된 또는 대안적 실시예들을 필연적으로 언급하는 것은 아니다. 더욱이, "실시예" 등에 대한 명시적인 언급이 있는지와 무관하게, 다양하게 조합될 수 있고 일부 실시예들에 포함될 수 있는 다양한 특징들이 기술되지만, 이들은 또한, 다른 실시예들에서 다양하게 생략된다. 유사하게, 일부 실시예들에 대한 선호사항 또는 요구사항일 수 있지만 다른 실시예들에서는 그렇지 않을 수 있는 다양한 특징들이 기술된다.
본 명세서에 사용되는 용어는 원칙적으로 가독성 및 훈시적 목적을 위해서 선택되었으며, 발명의 대상을 묘사하거나 제한하기 위해 선택된 것은 아니다. 따라서, 본 발명의 범위는, 본 발명의 상세한 설명에 의해 제한되는 것이 아니며, 본 출원이 기초로 하는 제출되는 청구범위에 의해 정의되는 것으로 의도되었다. 그러므로, 본 발명의 실시예들의 개시내용은 이하의 청구범위에서 정의되는 본 발명의 범위를 제한하는 것이 아니라 본 발명의 범위의 예시가 되도록 의도되었다.
E1. 컴퓨터 시스템에 의해, 모바일 장치로 캡쳐된 이미지를 획득하는 단계;
컴퓨터 시스템에 의해, 이미지가 캡쳐된 시간의 또는 이미지가 캡쳐된 시간에 가까운 모바일 장치의 움직임 센서 데이터(motion sensor data)를 획득하는 단계;
컴퓨터 시스템에 의해, 움직임 센서 데이터에 기반하여 회전각(angle of rotation)을 결정하는 단계; 및
컴퓨터 시스템에 의해, 회전각에 기반하여 이미지를 변환(transform)하는 단계를 포함하는 컴퓨터로 구현되는 방법.
E2. E1에 있어서, 이미지를 변환하는 단계는 회전각에 기반하여 이미지를 회전시키는 단계를 포함하고, 및/또는 이미지를 변환하는 단계는 모바일 장치의 사용자 인터페이스의 뷰잉 프레임(viewing frame)의 치수에 기반하여 이미지를 스케일링하는 단계를 포함하는 컴퓨터로 구현되는 방법.
E3. E1 또는 E2에 있어서, 모바일 장치에 변환된 이미지를 디스플레이하는 단계를 더 포함하는 컴퓨터로 구현되는 방법.
E4. E1 내지 E3 중 어느 하나에 있어서, 회전각을 결정하는 단계 및/또는 이미지를 변환하는 단계는 모바일 장치에 의해 수행되는 컴퓨터로 구현되는 방법.
E5. E1 내지 E4 항 중 어느 하나에 있어서, 움직임 센서 데이터를 획득하는 단계는 모바일 장치상의 적어도 하나의 움직임 센서로부터 데이터를 샘플링하는 단계를 포함하고, 상기 움직임 센서는 바람직하게는 모바일 장치의 움직임 및 배향을 모니터링하고, 특히 가속력 및/또는 회전력 또는 속도를 측정함으로써 대응하는 움직임 센서 데이터를 출력하는 컴퓨터로 구현되는 방법.
E6. E5에 있어서, 움직임 센서 데이터의 획득은 자이로스코프로부터 데이터를 샘플링하는 것을 포함하고, 샘플링된 데이터는 바람직하게는 노이즈(noise)를 감소시키도록 저역 통과 필터에 의해 필터링될 수 있고, 및/또는 움직임 센서 데이터의 획득은 모바일 장치상의 가속도계로부터 데이터를 샘플링하는 것을 포함하는 컴퓨터로 구현되는 방법.
E7. E1 내지 E6 중 어느 하나에 있어서, 사용자가 이미지의 자동 변환을 선택하도록 하는 사용자 입력 요소를 제공하는 단계; 및
이미지의 자동 변환에 대한 선택을 수신하는 단계를 더 포함하고,
이미지의 변환은 상기 선택의 수신에 응답하는 컴퓨터로 구현되는 방법.
E8. E1 내지 E7 중 어느 하나에 있어서, 이미지가 변환되기 전에, 획득된 이미지를 모바일 장치의 디스플레이에 디스플레이하는 단계; 및
이미지가 변환된 후에, 획득된 이미지 대신에 변환된 이미지를 디스플레이에 디스플레이하는 단계를 더 포함하는 컴퓨터로 구현되는 방법.
E9. E1 내지 E8 중 어느 하나에 있어서, 회전각을 미리결정된 임계 각도와 비교하는 단계; 및 회전각이 미리결정된 임계 각도를 초과하지 않을 때 변환된 이미지를 디스플레이하는 단계를 더 포함하는 컴퓨터로 구현되는 방법.
E10. E1 내지 E9 중 어느 하나에 있어서, 제1 입상도(granularity)로 변환된 이미지의 사용자-제어되는 회전을 가능하게 하는 제1 컨트롤 요소를 포함하는 사용자 인터페이스를 디스플레이하는 단계;
제1 컨트롤 요소에 적용되는 제1 사용자 입력을 수신하는 단계; 및 제1 사용자 입력에 기반하여 제1 입상도로 변환된 이미지를 회전시키는 단계를 더 포함하고,
사용자 인터페이스에서 제2 입상도로 변환된 이미지의 사용자-제어되는 회전을 가능하게 하는 제2 컨트롤 요소를 디스플레이하는 단계;
제2 컨트롤 요소에 적용되는 제2 사용자 입력을 수신하는 단계; 및 제2 사용자 입력에 기반하여 제2 입상도로 변환된 이미지를 회전시키는 단계를 특히 더 포함하고,
바람직하게는 제1 컨트롤 요소 및 제2 컨트롤 요소가 기준점으로부터 제1 방향으로 이동하는 것은 제1 회전 방향으로 이미지를 회전시키고, 제1 컨트롤 요소 및 제2 컨트롤 요소가 기준점으로부터 제2 방향으로 이동하는 것은 제2 회전 방향으로 이미지를 회전시키는 컴퓨터로 구현되는 방법.
E11. E1 내지 E10 중 어느 하나에 있어서, 변환된 이미지를 회전점(point of rotation)을 중심으로 회전시키기 위한 상기 회전점의 사용자 정의를 가능하게 하는 사용자 인터페이스를 디스플레이하는 단계;
회전점을 정의하는 사용자 인터페이스에 적용되는 제1 사용자 입력을 수신하는 단계;
회전의 방향 및 입상도를 정의하는 사용자 인터페이스에 적용되는 제2 사용자 입력을 수신하는 단계; 및
제1 사용자 입력 및 제2 사용자 입력에 기반하여 회전의 방향 및 입상도에 따라 회전점을 중심으로 변환된 이미지를 회전시키는 단계를 더 포함하는 컴퓨터로 구현되는 방법.
E12. E1 내지 E11 중 어느 하나에 있어서, 모바일 장치는 모바일 통신 장치이고, 바람직하게는 전자식 모바일 통신 장치이며, 특히 모바일 전화이고, 특히 스마트폰 또는 무선 통신을 위한 핸드-헬드(hand-held) 모바일 통신 장치이며, 및/또는 이미지는 모바일 장치에 내장된(built-in) 카메라에 의해 캡쳐되는 컴퓨터로 구현되는 방법.
E13. E1 내지 E12 중 어느 하나에 있어서, 이미지의 변환은 소셜 네트워킹 시스템에 의해 수행되는 컴퓨터로 구현되는 방법.
E14. 적어도 하나의 프로세서; 및
E1 내지 E13 중 어느 하나에 따른 방법을 수행하게끔 적어도 하나의 프로세서를 명령하도록 구성된 명령어들을 저장하는 메모리를 포함하는 시스템.
E15. 실행시, 컴퓨터 시스템이 E1 내지 E13 항 중 어느 하나에 따른 컴퓨터로 구현되는 방법을 수행하도록 하는 컴퓨터-실행가능한 명령어들을 저장하는 컴퓨터 저장 매체.

Claims (20)

  1. 컴퓨터로 구현되는 방법에 있어서,
    컴퓨팅 시스템에 의해, 인터페이스를 통해 이미지를 디스플레이하는 단계;
    컴퓨팅 시스템에 의해, 사용자의 터치 제스쳐에 의해 선택되는, 이미지의 회전점 및 인터페이스에서의 입상도 선택점을 수신하는 단계로서, 상기 터치 제스쳐는 회전점, 입상도 선택점, 및 회전의 방향 및 각도를 선택하는 동안 인터페이스 상에 연속해서 유지되는 사용자의 손가락 슬라이드인, 상기 이미지의 회전점 및 인터페이스에서의 입상도 선택점을 수신하는 단계;
    컴퓨팅 시스템에 의해, 입상도 선택점과 회전점 사이의 직선 거리에 기초하여 회전점에 대한 이미지의 회전 입상도를 결정하는 단계; 및
    컴퓨팅 시스템에 의해, 회전 입상도에 따라 회전점에 대해 이미지를 회전시키는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 제 1 항에 있어서,
    회전점으로부터 떨어진 제 1 거리인 제 1 입상도 선택점에서 제 1 입력의 회전 이동에 기초하여 회전점에 대해 제 1 회전 입상도로 이미지를 회전시키는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  3. 제 2 항에 있어서,
    회전점으로부터 떨어진 제 2 거리인 제 2 입상도 선택점에서 제 2 입력의 회전 이동에 기초하여 회전점에 대해 제 2 회전 입상도로 이미지를 회전시키는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  4. 제 1 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 증가함에 따라 더 미세하게 되는, 컴퓨터로 구현되는 방법.
  5. 제 1 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 감소함에 따라 더 미세하게 되는, 컴퓨터로 구현되는 방법.
  6. 제 1 항에 있어서,
    회전점은 인터페이스를 통해 포인트로서 디스플레이되는, 컴퓨터로 구현되는 방법.
  7. 제 1 항에 있어서,
    입상도 선택점은 회전점까지 선으로 연결되는 포인트로서 인터페이스를 통해 디스플레이되는, 컴퓨터로 구현되는 방법.
  8. 제 1 항에 있어서,
    회전점 및 입상도 선택점은 손가락 슬라이드가 인터페이스에 적용되지 않은 후 재선택을 요구하는, 컴퓨터로 구현되는 방법.
  9. 적어도 하나의 하드웨어 프로세서; 및
    명령어들을 저장하는 메모리를 포함하는 시스템으로서, 상기 명령어들은, 적어도 하나의 프로세서에 의해 실행될 때, 시스템으로 하여금,
    인터페이스를 통해 이미지를 디스플레이하고;
    사용자의 터치 제스쳐에 의해 선택되는, 이미지의 회전점 및 인터페이스에서의 입상도 선택점을 수신하고, 상기 터치 제스쳐는 회전점, 입상도 선택점, 및 회전의 방향 및 각도를 선택하는 동안 인터페이스 상에 연속해서 유지되는 사용자의 손가락 슬라이드이고;
    입상도 선택점과 회전점 사이의 직선 거리에 기초하여 회전점에 대한 이미지의 회전 입상도를 결정하고;
    회전 입상도에 따라 회전점에 대해 이미지를 회전시키는 것을 수행하게 하는, 시스템.
  10. 제 11 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 증가함에 따라 더 미세하게 되는, 시스템.
  11. 명령어들을 포함하는 비-일시적 컴퓨터 판독 가능한 매체로서, 상기 명령어들은, 컴퓨팅 시스템의 적어도 하나의 하드웨서 프로세서에 의해 실행될 때, 컴퓨팅 시스템으로 하여금,
    인터페이스를 통해 이미지를 디스플레이하고;
    사용자의 터치 제스쳐에 의해 선택되는, 이미지의 회전점 및 인터페이스에서의 입상도 선택점을 수신하고, 상기 터치 제스쳐는 회전점, 입상도 선택점, 및 회전의 방향 및 각도를 선택하는 동안 인터페이스 상에 연속해서 유지되는 사용자의 손가락 슬라이드이고;
    입상도 선택점과 회전점 사이의 직선 거리에 기초하여 회전점에 대한 이미지의 회전 입상도를 결정하고;
    회전 입상도에 따라 회전점에 대해 이미지를 회전시키는 것을 수행하게 하는, 비-일시적 컴퓨터 판독 가능한 매체.
  12. 제 16 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 증가함에 따라 더 미세하게 되는, 비-일시적 컴퓨터 판독 가능한 매체.
  13. 제 11 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 감소함에 따라 더 미세하게 되는, 시스템.
  14. 제 11 항에 있어서,
    회전점은 인터페이스를 통해 포인트로서 디스플레이되는, 시스템.
  15. 제 11 항에 있어서,
    입상도 선택점은 회전점까지 선으로 연결되는 포인트로서 인터페이스를 통해 디스플레이되는, 시스템.
  16. 제 11 항에 있어서,
    회전점 및 입상도 선택점은 손가락 슬라이드가 인터페이스에 적용되지 않은 후 재선택을 요구하는, 시스템.
  17. 제 16 항에 있어서,
    회전 입상도는 입상도 선택점과 회전점 사이의 거리가 감소함에 따라 더 미세하게 되는, 비-일시적 컴퓨터 판독 가능한 매체.
  18. 제 16 항에 있어서,
    회전점은 인터페이스를 통해 포인트로서 디스플레이되는, 비-일시적 컴퓨터 판독 가능한 매체.
  19. 제 16 항에 있어서,
    입상도 선택점은 회전점까지 선으로 연결되는 포인트로서 인터페이스를 통해 디스플레이되는, 비-일시적 컴퓨터 판독 가능한 매체.
  20. 제 16 항에 있어서,
    회전점 및 입상도 선택점은 손가락 슬라이드가 인터페이스에 적용되지 않은 후 재선택을 요구하는, 비-일시적 컴퓨터 판독 가능한 매체.
KR1020207006399A 2013-08-02 2013-10-30 이미지 변환을 위한 시스템 및 방법 KR102112070B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/958,451 US9177362B2 (en) 2013-08-02 2013-08-02 Systems and methods for transforming an image
US13/958,451 2013-08-02
EP13190578.8 2013-10-29
EP13190578.8A EP2833615B1 (en) 2013-08-02 2013-10-29 System and method for transforming an image
PCT/US2013/067578 WO2015016955A1 (en) 2013-08-02 2013-10-30 Systems and methods for transforming an image

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167004206A Division KR102087574B1 (ko) 2013-08-02 2013-10-30 이미지 변환을 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200028038A true KR20200028038A (ko) 2020-03-13
KR102112070B1 KR102112070B1 (ko) 2020-05-19

Family

ID=49551509

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207006399A KR102112070B1 (ko) 2013-08-02 2013-10-30 이미지 변환을 위한 시스템 및 방법
KR1020167004206A KR102087574B1 (ko) 2013-08-02 2013-10-30 이미지 변환을 위한 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167004206A KR102087574B1 (ko) 2013-08-02 2013-10-30 이미지 변환을 위한 시스템 및 방법

Country Status (11)

Country Link
US (3) US9177362B2 (ko)
EP (1) EP2833615B1 (ko)
JP (1) JP6412129B2 (ko)
KR (2) KR102112070B1 (ko)
CN (1) CN105637850B (ko)
AU (1) AU2013395618B2 (ko)
BR (1) BR112016002357A2 (ko)
CA (1) CA2919859C (ko)
IL (1) IL243803A0 (ko)
MX (1) MX357086B (ko)
WO (1) WO2015016955A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741150B2 (en) 2013-07-25 2017-08-22 Duelight Llc Systems and methods for displaying representative images
JP5843033B1 (ja) * 2014-05-15 2016-01-13 株式会社リコー 撮像システム、撮像装置、プログラムおよびシステム
WO2016110943A1 (ja) * 2015-01-06 2016-07-14 日立マクセル株式会社 映像表示装置、映像表示方法、及び映像表示システム
US10075640B2 (en) * 2015-12-31 2018-09-11 Sony Corporation Motion compensation for image sensor with a block based analog-to-digital converter
JP6976719B2 (ja) 2017-05-25 2021-12-08 キヤノン株式会社 表示制御装置、表示制御方法及びプログラム
WO2019084804A1 (zh) * 2017-10-31 2019-05-09 深圳市大疆创新科技有限公司 一种视觉里程计及其实现方法
EP3598428A1 (en) * 2018-07-17 2020-01-22 Thomson Licensing Device and method for image display
CN109919141A (zh) * 2019-04-09 2019-06-21 广东省智能制造研究所 一种基于骨架姿态的行人再识别方法
CN110312070B (zh) * 2019-04-23 2021-08-24 维沃移动通信有限公司 一种图像处理方法及终端
CN111125601B (zh) * 2019-12-24 2023-07-18 腾讯科技(深圳)有限公司 文件传输方法、装置、终端、服务器及存储介质
EP3866455A1 (en) * 2020-02-14 2021-08-18 InterDigital CE Patent Holdings Device and method for capturing images or video
DE102020126407A1 (de) 2020-10-08 2022-04-14 Leica Camera Aktiengesellschaft Bildaufnahmegerät
US11694376B2 (en) * 2020-10-19 2023-07-04 Adobe Inc. Intuitive 3D transformations for 2D graphics
JP2023020472A (ja) * 2021-07-30 2023-02-09 セイコーエプソン株式会社 表示装置の制御方法、表示装置、及び制御チップ

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090002391A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Manipulation of Graphical Objects
JP2010252238A (ja) * 2009-04-20 2010-11-04 Kyocera Corp 撮像装置および撮像方法
US20110032384A1 (en) * 2009-08-06 2011-02-10 Canon Kabushiki Kaisha Display apparatus
US20130016122A1 (en) * 2011-07-12 2013-01-17 Apple Inc. Multifunctional Environment for Image Cropping
US20130093705A1 (en) * 2010-04-23 2013-04-18 Motorola Mobility Llc Electronic Device and Method Using a Touch-Detecting Surface

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2307383A (en) 1995-11-13 1997-05-21 Ibm Improving resolution of graphical user interface-specified values in a computersystem
US6262769B1 (en) 1997-07-31 2001-07-17 Flashpoint Technology, Inc. Method and system for auto rotating a graphical user interface for managing portrait and landscape images in an image capture unit
US7080324B1 (en) 2000-10-11 2006-07-18 Agilent Technologies, Inc. Control for a graphical user interface supporting coupled variables and method of operation thereof
GB0208654D0 (en) * 2002-04-16 2002-05-29 Koninkl Philips Electronics Nv Image processing for video or photographic equipment
US8416217B1 (en) * 2002-11-04 2013-04-09 Neonode Inc. Light-based finger gesture user interface
US7679625B1 (en) 2005-01-07 2010-03-16 Apple, Inc. Straightening digital images
JP2006245726A (ja) * 2005-03-01 2006-09-14 Fuji Photo Film Co Ltd デジタルカメラ
CA2622729A1 (en) * 2005-09-16 2007-03-29 Wizard International, Inc. Framed art visualization software
JP2007127756A (ja) * 2005-11-02 2007-05-24 Nikon Corp 像振れ補正装置、光学装置、交換レンズ、及びカメラシステム
US8677257B2 (en) * 2006-08-04 2014-03-18 Apple Inc. Granular graphical user interface element
US8462109B2 (en) * 2007-01-05 2013-06-11 Invensense, Inc. Controlling and accessing content using motion processing on mobile devices
ATE501594T1 (de) * 2007-06-27 2011-03-15 Panasonic Corp Bildgebungsgerät, verfahren, systemintegrierte schaltung und programm
US8416198B2 (en) 2007-12-03 2013-04-09 Apple Inc. Multi-dimensional scroll wheel
JP5204785B2 (ja) * 2007-12-03 2013-06-05 パナソニック株式会社 画像処理装置、撮影装置、再生装置、集積回路及び画像処理方法
JP5315751B2 (ja) 2008-03-31 2013-10-16 ペンタックスリコーイメージング株式会社 撮像装置
US9477396B2 (en) * 2008-11-25 2016-10-25 Samsung Electronics Co., Ltd. Device and method for providing a user interface
US8823749B2 (en) * 2009-06-10 2014-09-02 Qualcomm Incorporated User interface methods providing continuous zoom functionality
JP5397081B2 (ja) * 2009-08-12 2014-01-22 富士通モバイルコミュニケーションズ株式会社 携帯端末
US8413065B2 (en) * 2009-09-07 2013-04-02 Qualcomm Incorporated User interface methods for ending an application
US20110061009A1 (en) * 2009-09-10 2011-03-10 John David Poisson Flexible user interface for image manipulation for an iamge product
US8957918B2 (en) * 2009-11-03 2015-02-17 Qualcomm Incorporated Methods for implementing multi-touch gestures on a single-touch touch surface
US8687070B2 (en) * 2009-12-22 2014-04-01 Apple Inc. Image capture device having tilt and/or perspective correction
KR20110088727A (ko) 2010-01-29 2011-08-04 삼성전자주식회사 휴대용 단말기에서 출력 이미지를 회전시키기 위한 장치 및 방법
US9124804B2 (en) * 2010-03-22 2015-09-01 Microsoft Technology Licensing, Llc Using accelerometer information for determining orientation of pictures and video images
US20110316888A1 (en) * 2010-06-28 2011-12-29 Invensense, Inc. Mobile device user interface combining input from motion sensors and other controls
US8488010B2 (en) 2010-09-21 2013-07-16 Hewlett-Packard Development Company, L.P. Generating a stabilized video sequence based on motion sensor data
US8760417B2 (en) * 2010-10-15 2014-06-24 Sap Ag Touch-enabled circle control for time and date entry
US9870141B2 (en) * 2010-11-19 2018-01-16 Microsoft Technology Licensing, Llc Gesture recognition
US8791911B2 (en) * 2011-02-09 2014-07-29 Robotzone, Llc Multichannel controller
JP2014522247A (ja) * 2011-03-29 2014-09-04 ボストン サイエンティフィック ニューロモデュレイション コーポレイション リード線位置付けのためのシステムおよび方法
KR101340794B1 (ko) * 2011-08-12 2013-12-11 엘지이노텍 주식회사 휴대용 단말기 및 그의 구동 방법
US9609217B2 (en) * 2011-11-02 2017-03-28 Mediatek Inc. Image-based motion sensor and related multi-purpose camera system
TWI450150B (zh) * 2011-12-21 2014-08-21 Wistron Corp 觸控方法及觸控系統
TWI497990B (zh) * 2012-01-11 2015-08-21 Hon Hai Prec Ind Co Ltd Ptz攝像裝置控制系統及方法
TW201331818A (zh) * 2012-01-17 2013-08-01 Wistron Corp 電子裝置及控制電子裝置的方法
US9569078B2 (en) * 2012-03-06 2017-02-14 Apple Inc. User interface tools for cropping and straightening image
KR101861377B1 (ko) * 2012-03-09 2018-05-28 삼성전자주식회사 이동 단말에서 모션 기반의 화면 제어 방법 및 이를 위한 이동 단말
US9324188B1 (en) * 2012-04-30 2016-04-26 Dr Systems, Inc. Manipulation of 3D medical objects
CA2793763C (en) * 2012-05-24 2015-12-29 Research In Motion Limited Presentation of image on display screen with combination crop and rotation and with auto-resizing of crop field
US9354721B2 (en) * 2012-09-28 2016-05-31 Apple Inc. Movement based image transformation
US20140282073A1 (en) * 2013-03-15 2014-09-18 Micro Industries Corporation Interactive display device
US20140289663A1 (en) * 2013-03-21 2014-09-25 Microsoft Corporation Producing Artwork Based on an Imported Image
US9195391B2 (en) * 2013-04-19 2015-11-24 International Business Machines Corporation Touch sensitive data entry using a continuous gesture
US9488483B2 (en) * 2013-05-17 2016-11-08 Honda Motor Co., Ltd. Localization using road markings
US8860818B1 (en) * 2013-07-31 2014-10-14 Apple Inc. Method for dynamically calibrating rotation offset in a camera system
WO2015025345A1 (ja) * 2013-08-21 2015-02-26 パナソニックIpマネジメント株式会社 情報表示装置、情報表示方法および情報表示プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090002391A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Manipulation of Graphical Objects
JP2010252238A (ja) * 2009-04-20 2010-11-04 Kyocera Corp 撮像装置および撮像方法
US20110032384A1 (en) * 2009-08-06 2011-02-10 Canon Kabushiki Kaisha Display apparatus
US20130093705A1 (en) * 2010-04-23 2013-04-18 Motorola Mobility Llc Electronic Device and Method Using a Touch-Detecting Surface
US20130016122A1 (en) * 2011-07-12 2013-01-17 Apple Inc. Multifunctional Environment for Image Cropping

Also Published As

Publication number Publication date
CN105637850B (zh) 2019-08-16
CA2919859A1 (en) 2015-02-05
EP2833615A3 (en) 2016-11-16
CN105637850A (zh) 2016-06-01
KR20160040220A (ko) 2016-04-12
EP2833615B1 (en) 2021-12-08
US9177362B2 (en) 2015-11-03
US9679361B2 (en) 2017-06-13
KR102112070B1 (ko) 2020-05-19
AU2013395618B2 (en) 2018-01-25
MX2016001405A (es) 2016-08-18
US20150036944A1 (en) 2015-02-05
EP2833615A2 (en) 2015-02-04
BR112016002357A2 (pt) 2017-08-01
CA2919859C (en) 2019-04-09
JP2016532954A (ja) 2016-10-20
US10453181B2 (en) 2019-10-22
US20170236253A1 (en) 2017-08-17
WO2015016955A1 (en) 2015-02-05
US20160019676A1 (en) 2016-01-21
JP6412129B2 (ja) 2018-10-24
IL243803A0 (en) 2016-04-21
KR102087574B1 (ko) 2020-03-12
MX357086B (es) 2018-06-25
AU2013395618A1 (en) 2016-02-18

Similar Documents

Publication Publication Date Title
KR102112070B1 (ko) 이미지 변환을 위한 시스템 및 방법
US10687016B2 (en) Systems and methods for time-lapse selection subsequent to capturing media content
US10652465B2 (en) Systems and methods for combining multiple frames to produce media content with simulated exposure effects
JP2017201552A (ja) 複数の写真フィード記事のためのシステムおよび方法
US10521099B2 (en) Systems and methods for providing interactivity for panoramic media content
US10725637B2 (en) Systems and methods for providing image perspective adjustment and automatic fitting
US10521100B2 (en) Systems and methods for providing interactivity for panoramic media content
US20190280999A1 (en) Systems and methods for providing communications with obscured media content backgrounds
US20170060404A1 (en) Systems and methods for providing interactivity for panoramic media content
US20160180886A1 (en) Systems and methods for combining drawing and videos prior to buffer storage
US10560641B2 (en) Systems and methods for generating a bias for a camera sensor for increasing resolution of captured images
US10681267B2 (en) Systems and methods for increasing resolution of images captured by a camera sensor
US9898178B2 (en) Systems and methods for utilizing available map resources to generate previews for map portions

Legal Events

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