KR101154087B1 - 블록-기반 이미지 안정화 - Google Patents

블록-기반 이미지 안정화 Download PDF

Info

Publication number
KR101154087B1
KR101154087B1 KR1020107013098A KR20107013098A KR101154087B1 KR 101154087 B1 KR101154087 B1 KR 101154087B1 KR 1020107013098 A KR1020107013098 A KR 1020107013098A KR 20107013098 A KR20107013098 A KR 20107013098A KR 101154087 B1 KR101154087 B1 KR 101154087B1
Authority
KR
South Korea
Prior art keywords
image
block
pixels
blocks
motion vector
Prior art date
Application number
KR1020107013098A
Other languages
English (en)
Other versions
KR20100092017A (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 KR20100092017A publication Critical patent/KR20100092017A/ko
Application granted granted Critical
Publication of KR101154087B1 publication Critical patent/KR101154087B1/ko

Links

Images

Classifications

    • 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
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Studio Devices (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

본 명세서는 이미지 캡쳐 능력들을 갖는 디바이스들에 대한 이미지 안정화 기술들을 개시한다. 이미지 캡쳐 디바이스는 본 명세서에 개시되는 기수들을 사용하여 둘 이상의 이미지들을 캡쳐하고 이미지를 결합할 수 있다. 특히, 이미지 캡쳐 디바이스는 이미지들 중 하나의 픽셀들의 다수의 블록들에 대하여 움직임 벡터들을 계산할 수 있다. 몇몇 경우들에 있어, 이미지 캡쳐 디바이스는 또한 블록 움직임 벡터들을 사용하여 픽셀들의 서브 블록들 또는 개별적 픽셀들에 대한 움직임 벡터들을 보간 또는 외삽할 수 있다. 이미지 캡쳐 디바이스는 그 후 다수의 움직임 벡터들에 의해 표시되는 위치에 대응하는 제2 이미지의 픽셀들과 제1 이미지의 픽셀들 각각을 평균화함으로써, 제1 이미지 및 제2 이미지를 평균화할 수 있다. 기술들은 특히 특정 이미지 캡쳐 기술들의 사용 또는 이미지 캡쳐 동안 특정 움직임들로 초래되는 이미지 정보의 번짐 감소에 효과적일 수 있다.

Description

블록-기반 이미지 안정화{BLOCK-BASED IMAGE STABILIZATION}
본 명세서는 이미지 프로세싱과 관련되며, 특히, 이미지 캡쳐 애플리케이션들에서 이미지 안정화를 위한 기술과 관련된다.
이미징 디바이스들이 더 가볍고 더 작아짐에 따라, 그러한 디바이스들에 의하여 캡쳐되는 이미지들은 의도하지 않은 흔들림(shaking)으로 인한 품질 저하에 더욱 민감하다. 비디오 캡쳐에서, 떨림(shake)은 비디오 이미지의 흔들림 또는 지터(jitter)를 초래할 수 있다. 정지 이미지 캡쳐에서, 떨림은 이미지의 번짐을 초래할 수 있다. 번짐 또는 흔들림은 인간 시각 시스템이 이미지 내의 해당 대상 또는 영역에 초점을 맞추거나 집중하는 것을 어렵게 할 수 있다. 어느 경우에든, 비디오 또는 이미지 보기(viewing) 경험의 품질은 낮아진다.
이미지 안정화 시스템들은 더 나은 이미지 품질을 생성하기 위하여 의도하지 않은 흔들림의 보상을 시도한다. 이미지 안정화 시스템들은 일반적으로 3개의 주요 카테고리들로 나뉜다: 광학 이미지 안정화기(OIS: optical image stabilizer)들, 기계적 이미지 안정화기(MIS: mechanical image stabilizer)들, 및 전자 이미지 안정화기(EIS: electronic image stabilizer)들. OIS 시스템들은 움직임 효과를 감소시키기 위하여 이미지가 센서에 도달하기 이전에 이미지를 모핑(morph)하는 조정가능한 렌즈를 이용한다. MIS 시스템들은 부드러운 움직임을 유지하기 위해 예를 들어, 카메라의 중심, 평행 추(counterbalance) 시스템, 및/또는 카메라 작동자의 신체를 사용하여 전체 카메라를 안정화시킨다. EIS 시스템들은 캡쳐된 이미지를 고치기 위한 신호 프로세싱 알고리즘들을 이용한다.
본 명세서는 소위 "카메라폰들" 또는 "비디오폰들" 등의 이미지 캡쳐 능력들을 포함하는 무선 통신 디바이스와 같은 이미지 캡쳐 디바이스들을 위한 이미지 안정화 기술들을 개시한다. 예를 들어, 이미지 캡쳐 디바이스는 이미지의 번짐을 감소시키기 위해 블록-기반 이미지 정합(registration) 기술을 이용할 수 있다. 이미지 캡쳐 디바이스는 본 명세서에서 설명되는 기술들을 사용하여 둘 이상의 이미지들을 포착하고 이미지들을 평균화할 수 있다. 이미지 캡쳐 디바이스는 예를 들어, 이미지들 중 하나의 픽셀들의 다수의 블록들에 대한 움직임 벡터들을 계산할 수 있다. 몇몇 양상들에서, 이미지 캡쳐 디바이스는 블록 움직임 벡터들을 사용하여 픽셀들의 서브-블록들 또는 개별 픽셀들에 대한 움직임 벡터들을 보간(interpolate)하거나 또는 외삽(extrapolate)할 수 있다.
이미지 캡쳐 디바이스는 그 후 다수의 움직임 벡터들에 의해 표시되는 위치에 대응하는 제2 이미지의 픽셀들과 제1 이미지의 픽셀들 각각을 평균화함으로써 제1 이미지 및 제2 이미지를 평균화할 수 있다. 픽셀들을 조정하기 위한 다수의 움직임 벡터들의 사용은 움직임이 이미지의 부분들이 상이한 방향들로 움직이게 할 때, 이미지의 더 나은 표현을 초래한다. 이러한 움직임의 예들은 카메라-장면 시선(camera-scene line of sight)에 대한 접선(tangential) 회전, 장면을 향하는 또는 장면으로부터 멀어지는 움직임, 또는 이러한 움직임들의 임의의 조합을 포함한다. 이미지 캡쳐 디바이스는 전체로서 이미지의 움직임 대신 이미지의 특정 부분의 움직임을 나타내는 움직임 벡터를 사용하여 이미지의 부분들, 예컨대 블록들 또는 서브-블록들을 평균화할 수 있다. 몇몇 경우들에, 이미지 정합은 픽셀 단위로(on a pixel-by-pixel basis) 움직임을 고려함으로써 훨씬 더 정확할 수 있다.
일 양상에서, 디지털 이미지 데이터를 프로세싱하기 위한 방법은, 픽셀들의 다수의 블록들로 관심 장면의 제1 이미지를 분할하는(partition) 단계, 다수의 블록들 각각에 대하여, 제1 이미지의 블록과 관심 장면의 제2 이미지 내에 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 단계, 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값과 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 제2 이미지의 대응 픽셀들의 픽셀 값들과 평균화하는 단계, 및 평균화된 픽셀 값들을 저장하는 단계를 포함한다.
다른 양상에서, 디지털 이미지 데이터를 프로세싱하기 위한 컴퓨터-프로그램 물건은 명령들을 갖는 컴퓨터 판독 가능 매체를 포함한다. 명령들은 관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 코드, 다수의 블록들 각각에 대하여, 제1 이미지의 블록과 관심 장면의 제2 이미지 내에 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 코드, 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값과 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 코드, 및 평균화된 픽셀 값들을 저장하기 위한 코드를 포함한다.
다른 양상에서, 디지털 이미지 데이터를 프로세싱하기 위한 장치는 이미지 데이터를 프로세싱하기 위한 이미지 프로세서를 포함하며, 상기 이미지 프로세서는 관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 블록 분할기, 다수의 블록들 각각에 대하여, 제1 이미지의 블록과 관심 장면의 제2 이미지 내에 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 움직임 벡터 모듈, 및 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값과 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 픽셀 평균화 모듈을 포함한다. 장치는 평균화된 픽셀 값들을 저장하기 위한 메모리를 더 포함한다.
다른 양상에서, 디지털 이미지 데이터를 프로세싱하기 위한 장치는, 관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 수단, 다수의 블록들 각각에 대하여, 제1 이미지의 블록과 관심 장면의 제2 이미지 내에 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 수단, 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값과 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 수단, 및 평균화된 픽셀 값들을 저장하기 위한 수단을 포함한다.
본 명세서에 개시된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된다면, 소프트웨어는 프로세서에서 실행될 수 있으며, 이는 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 또는 디지털 신호 프로세서(DSP), 또는 다른 등가 집적 회로 또는 이산 논리 회로와 같은 하나 이상의 프로세서들을 지칭할 수 있다. 기술들을 실행하기 위한 명령들을 포함하는 소프트웨어는 최초에 컴퓨터-판독 가능 매체에 저장되며, 프로세서에 의하여 로딩되고 실행될 수 있다. 따라서, 본 명세서는 프로세서가 본 명세서에 개시된 바와 같이 다양한 기술들 중 임의의 것을 수행하게 하기 위한 명령들을 포함하는 컴퓨터-판독 가능 매체를 고려한다. 몇몇 경우들에, 컴퓨터-판독 가능 매체는 제조자에게 판매되고/되거나 디바이스에서 사용될 수 있는 컴퓨터 프로그램 물건의 일부를 형성할 수 있다. 컴퓨터 프로그램 물건은 컴퓨터-판독 가능 매체를 포함할 수 있으며, 몇몇 경우들에 있어, 패키징 물질들을 더 포함할 수 있다.
하나 이상의 실시예들의 세부 사항들은 첨부 도면들 및 하기의 상세한 설명에서 진술된다. 다른 특징들, 목적들 및 장점들은 상세한 설명 및 도면으로부터, 그리고 청구항들로부터 명백할 것이다.
도 1은 이미지 안정화 기술들을 구현하는 예시적인 이미지 캡쳐 디바이스를 설명하는 블록도이다.
도 2는 도 1의 이미지 캡쳐 디바이스를 포함하는 무선 통신 디바이스의 블록도이다.
도 3은 더욱 상세히 도 1의 이미지 캡쳐 디바이스를 설명하는 블록도이다.
도 4는 본 명세서에 설명되는 기술들에 따른 이미지 안정화를 수행하는 이미지 캡쳐 디바이스의 예시적인 동작을 설명하는 흐름도이다.
도 5a-5e는 본 명세서에 설명되는 바와 같은 이미지 안정화 기술들에 따라 이미지 캡쳐 디바이스에 의하여 캡쳐되어 저장되고, 이미지 프로세서에 의하여 프로세싱되는 예시적인 이미지 정보를 설명하는 도면들이다.
이미지 캡쳐 디바이스들, 특히, 소위 카메라폰과 같은 작고 가벼운 것들은 이미지 캡쳐 동안에 디바이스의 사용자에 의한 바람직하지 않은 움직임들을 허용한다. 그러한 원치 않는 움직임들은 일반적으로 번짐 또는 다른 시각적인 인위적 결과들로 인해 감소한 이미지 품질을 초래한다. 움직임들을 보상하기 위하여, 이미지 캡쳐 디바이스는 본 명세서에 설명되는 이미지 정합 기술들을 사용하여 이미지 안정화를 제공할 수 있다. 일반적으로, 이미지 정합은 둘 이상의 프레임들, 예를 들어, 연속적 프레임들이 감소한 노출 시간으로 캡쳐되고, 정렬되며, 그 후 함께 평균화되는 기술을 지칭한다. 이미지 정합은 감소한 잡음으로 인하여 감소한 번짐 및 둘 이상의 프레임들의 평균화로 인하여 짧아진 노출 시간을 초래할 수 있다.
본 명세서에 개시되는 기술들에 따라, 이미지 캡쳐 디바이스는 이미지의 번짐을 감소시키기 위하여 블록-기반 이미지 정합 기술을 이용할 수 있다. 이미지 캡쳐 디바이스는 해당 동일한 장면의 둘 이상의 이미지들을 캡쳐하고, 본 명세서에 개시되는 기술들을 사용하여 이미지들을 평균화할 수 있다. 이미지 캡쳐 디바이스는 예를 들어, 이미지들 중 하나의 이미지의 픽셀들의 다수의 블록들에 대한 움직임 벡터들을 계산할 수 있다. 몇몇 양상들에서, 이미지 캡쳐 디바이스는 블록 움직임 벡터들을 사용하여 픽셀들의 서브-블록들 또는 개별적인 픽셀들에 대한 움직임 벡터들을 보간하거나 외삽할 수 있다. 움직임 벡터들은 제1 이미지의 블록, 서브-블록 또는 픽셀과 제2 이미지 내에 블록, 서브-블록 또는 픽셀 사이의 오프셋을 나타낸다.
이미지 캡쳐 디바이스는 그 후 다수의 움직임 벡터들에 의해 표시되는 위치에 대응하는 제2 이미지의 픽셀들과 제1 이미지의 픽셀들 각각을 평균화함으로써 제1 이미지와 제2 이미지를 평균화할 수 있다. 이미지 캡쳐 디바이스는 제1 이미지 및 제2 이미지의 단순 평균화(straight averaging), 제1 이미지 및 제2 이미지의 가중 평균, 제1 이미지 및 제2 이미지의 합산, 또는 둘 이상의 이미지들의 이미지 정보의 결합을 위한 다른 기술을 사용할 수 있다. 픽셀들을 조정하기 위한 다수의 움직임 벡터들의 사용은 카메라-장면 시선에 접하는 회전, 또는 장면을 향하는 또는 장면으로부터 멀어지는 움직임과 같은 움직임이 이미지의 부분들이 상이한 방향들로 움직이게 할 때, 이미지의 더 나은 표현을 초래한다. 특히, 이미지의 부분들(예를 들어, 블록들 또는 서브-블록들)은 전체로서 이미지의 움직임 대신 이미지의 특정 부분의 움직임을 나타내는 움직임 벡터를 사용하여 평균화된다. 몇몇 경우들에, 이미지 정합은 픽셀 단위로(on a pixel-by-pixel basis) 움직임을 고려함으로써 훨씬 더 정확할 수 있다.
이러한 기술들은 특히 번짐, 또는 병진 운동, 카메라-장면 시선에 접하는 회전, 장면을 향하는 또는 장면으로부터 멀어지는 움직임, 또는 이미지 캡쳐 동안에 이러한 움직임들의 임의의 조합과 같은 원치 않는 카메라 움직임의 결과로서 발생하는 이미지의 다른 시각적인 인위적 결과들의 감소에 효과적일 수 있다. 또한, 이러한 기술들은 번짐, 또는 상보적 금속-산화물-반도체(CMOS) 이미지 센서 기술과 같은 "롤링 셔터(rolling shutter)들"을 이용하는 특정 이미지 캡쳐 기술들의 사용의 결과 발생하는 이미지의 다른 시각적인 인위적 결과들의 감소에 효과적일 수 있다.
도 1은 본 명세서에 개시되는 이미지 안정화 기술들을 구현하는 예시적인 이미지 캡쳐 디바이스(2)의 블록도이다. 이미지 캡쳐 디바이스(2)는 디지털 정지 이미지 카메라, 디지털 비디오 카메라, 또는 이 둘의 조합과 같은 디지털 카메라일 수 있다. 또한, 이미지 캡쳐 디바이스(2)는 독립형 카메라와 같은 독립형 디바이스이거나, 또는 무선 통신 디바이스와 같은 다른 디바이스에 통합될 수 있다. 예시로서, 이미지 캡쳐 디바이스(2)는 이동 전화에 통합되어 소위 카메라폰 또는 비디오폰을 형성할 수 있다. 본 명세서에 개시되는 기술들은 일반적으로 캡쳐되는 디지털 비디오에 적용 가능할 수 있으며, 예시를 위해 그러한 기술들의 디지털 정지 이미지들로의 적용이 설명될 것이다.
도 1에 도시되는 바와 같이, 이미지 캡쳐 디바이스(2)는 이미지 센서(4), 이미지 프로세서(6), 및 이미지 저장 모듈(8)을 포함한다. 이미지 센서(4)는 관심 장면에 대한 이미지 정보를 획득한다. 예를 들어, 이미지 센서(4)는 정지 이미지들, 가능하다면 완전한 운동 비디오 시퀀스들을 캡쳐할 수 있으며, 이러한 경우에, 이미지 프로세싱은 비디오 시퀀스의 하나 이상의 이미지 프레임들 상에 수행될 수 있다. 캡쳐되는 비디오는 기록 또는 비디오 전화 통신, 또는 다른 애플리케이션들을 위해 일반적인 비디오 캡쳐 지원일 수 있다. 이미지 센서(4)는 예컨대, 행으로 또는 열로 정렬되는 개별적인 이미지 센서 엘리먼트들의 2-차원 어레이를 포함할 수 있다. 몇몇 양상들에서, 이미지 센서(4)의 이미지 센서 엘리먼트들 각각은 단일 픽셀과 연관될 수 있다. 다시 말해, 이미지 센서 엘리먼트들과 픽셀들 사이에 일-대-일 대응이 존재할 수 있다. 대안적으로, 각각의 이미지 센서 엘리먼트와 연관되는 둘 이상의 픽셀 또는 각각의 픽셀과 연관되는 둘 이상의 이미지 센서 엘리먼트가 존재할 수 있다. 이미지 센서(4)는 예를 들어, 상보적 금속-산화물 반도체(CMOS) 센서들과 같은 고체 상태 센서들의 어레이, 전하 결합 디바이스(CCD) 센서들 또는 이와 유사한 종류의 다른 것들을 포함할 수 있다. 또한, 이미지 센서(4)는 캡쳐되는 이미지들에 대한 이미지 정보를 저장하는 하나 이상의 이미지 버퍼들을 유지할 수 있다.
이미지를 캡쳐하기 위하여, 이미지 센서(4)는 이미지 장면에 이미지 센서 엘리먼트들을 노출한다. 이미지 센서(4) 내에 이미지 센서 엘리먼트들은 예를 들어, 특정 픽셀 위치에서 장면의 광의 강도(intensity)를 나타내는 강도 값들을 캡쳐할 수 있다. 몇몇 경우들에, 센서(4)의 이미지 센서 엘리먼트들 각각은 센서들을 커버하는 컬러 필터들로 인하여, 단지 하나의 색상 또는 색상 밴드에 민감할 수 있다. 예를 들어, 이미지 센서(4)는 예컨대 적색, 녹색, 및 청색 필터들의 어레이를 포함할 수 있다. 그러나 이미지 센서(4)는 CMYK 색상 필터들과 같은 다른 색상 필터들을 이용할 수 있다. 따라서, 이미지 센서(4)의 이미지 센서들 각각은 단지 하나의 색상에 대한 강도 값들을 캡쳐할 수 있다. 따라서, 이미지 정보는 이미지 센서(4)의 센서 엘리먼트들에 의하여 캡쳐되는 픽셀 강도 및/또는 색상 값들을 포함할 수 있다.
이미지 프로세서(6)는 예컨대 이미지 센서(4)의 버퍼들로부터 둘 이상의 이미지들(또는 프레임들)에 대한 이미지 정보를 수신하고, 본 명세서에 개시되는 이미지 안정화 기술들을 수행한다. 특히, 이미지 프로세서(6)는 블록-기반 이미지 정합을 수행하는 이미지 정합 모듈(9)을 포함한다. 이미지 정합 모듈(9)은 이미지들 중 하나 또는 둘 모두를 픽셀들의 다수의 블록들(본 명세서에서 "블록들"로서 지칭되는)로 분할한다. 때때로 "매크로블록들"로서 지칭되는 이러한 블록들은 통상적으로 이미지 정보의 인접하는 부분을 나타낸다. 이미지 정합 모듈(9)은 둘 이상의 서브-블록들로 각각의 블록을 추가로 서브-분할할 수 있다. 실시예로서, 16×16 블록은 4개의 8×8 서브-블록들, 8개의 4×8 서브-블록들, 또는 다른 서브-분할 블록들을 포함할 수 있다. 더 크거나 더 작은 치수의 블록들이 또한 가능하다. 본 명세서에서 사용될 때, "블록"이라는 용어는 임의의 크기의 블록 또는 서브-블록 중 하나를 지칭할 수 있다.
이미지 정합 모듈(9)은 블록들 각각에 대한 움직임 벡터들을 계산한다. 블록들의 움직임 벡터들은 제1 이미지와 제2 이미지 사이에 식별된 블록의 변위를 나타낸다. 따라서, 움직임 벡터들은 제1 이미지 내에 블록과 제2 이미지 내에 대응 블록 사이의 오프셋을 나타낸다. 오프셋은 흔들림 또는 다른 의도하지 않은 디바이스 움직임, 또는 특정 이미지 캡쳐 기술들의 사용으로 인한 것일 수 있다. 일 양상에서, 이미지 정합 모듈(9)은 블록 움직임 벡터들을 사용하여 위치되는 제1 이미지의 픽셀들의 픽셀 값들과 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화함으로써 이미지의 각각의 픽셀을 정합할 수 있다. 다시 말해, 이미지 정합 모듈(9)은 각각의 블록들에 대하여, 블록의 픽셀들 각각에 대한 블록의 움직임 벡터를 사용할 수 있다. 그러나 각각의 블록은 상이한 움직임 벡터를 가져 임의의 원치 않는 움직임을 보상하기 위하여 다수의 움직임 벡터들을 사용하게 한다. 픽셀들을 조정하기 위한 다수의 움직임 벡터들의 사용은 카메라-장면 시선에 접하는 회전, 또는 장면을 향하는 또는 장면으로부터 멀어지는 움직임과 같은 움직임이 이미지의 부분들이 상이한 방향들로 움직이게 할 때, 이미지의 더 나은 표현을 초래한다.
그러나 다른 양상들에서, 이미지 정합 모듈(9)은 하나 이상의 서브-블록들에 대한 움직임 벡터들을 추정하기 위하여 블록들 중 2개 이상과 연관되는 움직임 벡터들을 사용할 수 있으며, 서브-블록은 블록의 인접한 부분을 포함할 수 있다. 예를 들어, 서브-블록은 8×8 인접 정사각형 픽셀 블록의 4×4 인접 정사각형 픽셀 부분을 포함할 수 있다. 일 양상에서, 이미지 정합 모듈(9)은 블록들의 픽셀들 각각에 대한 움직임 벡터들을 추정하기 위하여 블록들과 연관되는 움직임 벡터들을 사용할 수 있으며, 이 경우에 서브-블록은 블록의 단일 픽셀을 포함한다. 블록들, 서브-블록들 및/또는 픽셀들 각각에 대하여 결정되는 움직임 벡터들을 사용하여, 이미지 정합 모듈(9)은 제1 이미지의 픽셀들의 픽셀 값들과 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하여 이미지를 정합한다. 예를 들어, 이미지 정합 모듈(9)은 임시로 이전 이미지의 픽셀들의 픽셀 값들과 가장 최근에 캡쳐된 이미지의 픽셀들의 픽셀 값들, 예컨대, 강도 및/또는 색상 값들을 평균화할 수 있다. 이미지 정합 모듈(9)은 제1 이미지 및 제2 이미지의 단순 평균, 제1 이미지 및 제2 이미지의 가중 평균, 제1 이미지 및 제2 이미지의 합산, 또는 둘 이상의 이미지들의 이미지 정보를 결합하기 위한 다른 기술들을 사용할 수 있다. 이미지 정합 모듈(9)은 가장 최근에 캡쳐된 이미지의 픽셀 위치에서 평균화된 픽셀 값들을 저장할 수 있다. 이러한 방식으로, 이미지 정합 모듈(9)은 이미지 정합 동안에 평균화된 픽셀 값들로 캡쳐된 이미지들 중 하나의 픽셀들의 픽셀 값들을 교체할 수 있다. 이러한 평균화된 이미지 정보(즉, 픽셀 값들)는 통상적으로 더 적은 번짐을 나타내고, 따라서, 향상된 이미지 품질을 제공하며, 특히, 이러한 예시에서 상기 언급된 움직임들이 발생하고/발생하거나 이미지 캡쳐 기술들이 수반된다. 이러한 방식으로, 이미지 정합은 블록별, 서브-블록별, 또는 픽셀 단위로 움직임을 고려함으로써 훨씬 더 정확해질 수 있다. 또한, 리소스들의 계산은 블록 레벨에서 움직임 추정을 수행하고, 픽셀 레벨에 대한 움직임 벡터들을 추정함으로써 예약된다.
이미지 프로세서(6)는 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 주문형 집적 회로(ASIC)들, 필드 프로그램가능 게이트 어레이(FPGA)들, 또는 임의의 다른 등가 이산 또는 집적 논리 회로, 또는 이들의 조합에 의해 실현될 수 있다. 몇몇 실시예들에서, 이미지 프로세서(6)는 MPEG(Motion Pictures Expert Group)-2, MPEG-4, ITU(International Telecommunication Union) H.263, ITU H.264, JPEG(Joint Photographic Experts Group), GIF(Graphics Interchange Format), TIFF(Tagged Image File Format), 또는 이와 유사한 종류의 다른 것들과 같은 특정 인코딩 기술 또는 포맷에 따라 이미지 정보를 인코딩하는 인코더-디코더(CODEC)의 일부를 형성할 수 있다. 이미지 프로세서(6)는 이미지 크로핑(cropping), 압축, 강화 및 이와 유사한 종류의 다른 것들과 같은 이미지 정보에 대한 부가적 프로세싱을 수행할 수 있다.
이미지 프로세서(6)는 이미지 저장 모듈(8)에 정합된 이미지를 저장한다. 대안적으로, 이미지 프로세서(6)는 정합된 이미지에 부가적 프로세싱을 수행하고, 이미지 저장 모듈(8)에 프로세싱되거나 인코딩된 포맷으로 정합된 이미지 정보를 저장할 수 있다. 정합된 이미지 정보가 오디오 정보를 수반한다면, 오디오는 또한 이미지 저장 모듈(8)에 저장될 수 있고, 비디오 정보와 독립적으로 또는 비디오 정보와 함께 정합된 이미지 정보를 포함하는 하나 이상의 프레임들을 포함한다. 이미지 저장 모듈(8)은 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 또는 플래시 메모리와 같은, 또는 자기 데이터 저장 디바이스 또는 광학 데이터 저장 디바이스와 같은 임의의 휘발성 또는 비휘발성 메모리 또는 저장 디바이스를 포함할 수 있다.
다수의 다른 엘리먼트들이 또한 이미지 캡쳐 디바이스(2)에 포함될 수 있으나, 설명의 간략화 및 용이성을 위하여, 도 1에 명확히 도시되지 않았다. 예를 들어, 이미지 캡쳐 디바이스(2)는 렌즈, 셔터, 플래시 디바이스 및 디스플레이와 같은 이미지들을 캡쳐하기 위한 부가적 컴포넌트들을 포함할 수 있다. 본 명세서에 개시되는 기술들이 다양한 다른 아키텍처들로 구현될 수 있으므로, 도 1에 개시되는 아키텍처는 단지 예시일뿐이다. 또한, 도 2에 개시되는 특징들은 하드웨어 및/또는 소프트웨어 컴포넌트들의 임의의 적절한 조합에 의하여 실현될 수 있다.
도 2는 본 명세서에 개시되는 이미지 안정화 기술들을 구현하는 이미지 캡쳐 디바이스(2)를 포함하는 예시적인 무선 통신 디바이스(10)를 설명하는 블록도이다. 다시 말해, 도 2는 무선 통신 디바이스 내에 통합되는 이미지 캡쳐 디바이스(2)를 도시한다. 이미지 캡쳐 디바이스(2)의 동작은 도 1에 대하여 상기 설명되고, 따라서, 여기서 상세히 설명되지 않을 것이다. 무선 통신 디바이스(10)는 이미지 캡쳐 능력들(예를 들어, 소위 카메라폰 또는 비디오폰)을 갖는 휴대 전화, 비디오 레코더, 개인용 디지털 단말(PDA), 랩탑 컴퓨터, 또는 이미지 캡쳐 능력 및 무선 통신 능력을 갖는 임의의 다른 핸드헬드 디바이스와 같은 무선 통신 디바이스 핸드셋을 포함할 수 있다. 무선 통신 디바이스의 문맥에서 설명되나, 본 명세서의 기술들은 유선 통신 디바이스들에도 적용 가능할 수 있다.
도 2의 실시예에서, 무선 통신 디바이스(10)는 이미지 캡쳐 디바이스(2), 인코딩 모듈(12) 및 전송기(14)를 포함한다. 인코딩 모듈(12)은 저장 및/또는 전송을 위해 특정 이미지 압축 포맷으로 이미지를 압축하기 위하여 캡쳐된 이미지 정보를 인코딩할 수 있다. 인코딩 모듈(12)은 JPEG, TIFF, GIF 또는 다른 이미지 압축 포맷을 포함하는 다수의 이미지 압축 포맷들 중 임의의 것을 사용하여 이미지를 압축할 수 있다. 비디오의 경우에, 인코딩 모듈(12)은 MPEG, MPEG AVC(Advanced Video Coding) 파트 10, ITU H.264 및 이와 유사한 종류의 다른 것들과 같은 임의의 개수의 비디오 압축 포맷들을 사용하여 비디오를 압축할 수 있다.
무선 통신 디바이스(10)는 전송기(14)를 통해 다른 디바이스로 인코딩된 이미지를 전송할 수 있다. 전송기(14)는 통상적으로 코드 분할 다중 액세스(CDMA) 네트워크, 광대역 코드 분할 다중 액세스(W-CDMA) 네트워크, 시분할 다중 액세스(TDMA) 네트워크 및 GSM(global system for mobile communication) 네트워크, 또는 다른 유사한 네트워크와 같은 셀룰러 네트워크에 인터페이스를 제공한다. 셀룰러 네트워크 이외에 또는 그것의 대안으로서, 전송기(14)는 관련된 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준들 중 임의의 것, 또는 임의의 다른 유선 또는 무선 네트워크에 의하여 정의되는 바와 같이 무선 네트워크에 인터페이스를 제공할 수 있다. 단지 이미지 캡쳐 디바이스(2)를 포함하는 것으로서 개시되나, 인코딩 모듈(12) 및 전송기(14), 무선 통신 디바이스(10)는 디스플레이, 사용자와 인터페이싱하기 위한 사용자 인터페이스(예를 들어, 키패드), 추가 동작들을 수행하기 위한 하나 이상의 프로세서들, 및 착탈식 메모리, 헤드폰, 전력 공급원들, 및 임의의 그러한 다른 주변장치들을 수용하기 위한 다양한 포트들 및 리셉터클(receptacle)들과 같은 다른 모듈들을 포함할 수 있다.
도 3은 더욱 상세히 도 1의 이미지 캡쳐 디바이스(2)를 설명하는 블록도이다. 도 3에 설명되는 바와 같이, 이미지 센서(4)는 이미지 버퍼들(26A 및 26B)을 포함하고, 이들 모두는 해당하는 동일한 장면에 속하는 이미지 정보를 저장할 수 있다. 이미지 센서(4)는 예를 들어, 이미지 프리뷰 동안에 이미지 버퍼들(26)에 이미지 정보를 저장할 수 있다. 특히, 이미지 센서(4)는 사용자가 관심 장면에서 이미지 캡쳐 디바이스를 가리키는 동안, 그러나 사용자가 이미지를 캡쳐하도록 버튼을 작동시키기 이전에, 이미지 버퍼들(26)에 이미지 정보를 저장할 수 있다. 몇몇 실시예들에서, 이미지 버퍼들(26)은 서로 밀리초 또는 더 짧은 시간 기간들이 아니라면 수초 내에 캡쳐되는 이미지 정보를 저장하고, 이에 따라, 버퍼들(26) 각각이 해당하는 동일한 장면에 속하는 이미지 정보의 연속적 세트들을 저장하는 것을 보장한다. 이러한 연속적인 이미지 버퍼링 기술은 번짐 감소를 용이하게 하는데 이용되며, 이미지를 캡쳐하도록 시도하는 사용자에 의하여 인지되지 않게 발생한다. 즉, 사용자의 관점으로부터, 단지 하나의 이미지가 이미지 캡쳐 디바이스(2)의 버튼의 활성화를 통해 캡쳐된다. 그러나 둘 이상의 이미지들이 사용자에 의하여 보여지는 하나의 이미지를 생성하기 위해 실제로 캡쳐되고 평균화된다. 도 3은 두 개의 이미지 버퍼들을 포함하나, 이미지 캡쳐 디바이스(2)는 둘 이상의 이미지 버퍼들(26)을 포함할 수 있다. 이러한 방식으로, 본 명세서에 개시되는 이미지 안정화 기술들은 더 나아가 셋 이상의 이미지들에 적용될 수 있다.
버퍼들(26)은 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 또는 FLASH 메모리와 같은, 또는 자기 데이터 저장 디바이스 또는 광학 데이터 저장 디바이스와 같은 임의의 휘발성 또는 비휘발성 메모리 또는 저장 디바이스를 포함할 수 있다. 도 3에 이미지 센서(4) 내에 상주하는 것으로서 도시되나, 버퍼들(26)은 이미지 프로세서(6), 이미지 저장 모듈(8), 또는 이미지 정합 모듈(9)을 포함하는 이미지 캡쳐 디바이스(2)의 다른 모듈들 내와 같이, 이미지 센서(4) 외부에 상주할 수 있다.
블록 적응성 이미지 정합 모듈(9)은 블록 분할기(28), 움직임 벡터 모듈(32), 및 픽셀 평균화 모듈(38)을 포함한다. 움직임 벡터 모듈(32)은 개별적인 수평 및 수직 프로젝션 모듈들(30A 및 30B)("프로젝션 모듈들(30)"), 움직임 벡터 외삽기(34), 및 움직임 벡터 보간기(36)를 포함한다. 유닛들 또는 모듈들로서의 상이한 특징들의 도시는 이미지 정합 모듈(9)의 상이한 기능적 양상들을 하이라이트 처리하도록 의도되며, 그러한 유닛들 또는 모듈들은 개별적인 하드웨어, 소프트웨어 및/또는 펌웨어 컴포넌트들에 의하여 실현되어야 함을 의미할 필요가 없다. 그보다는, 하나 이상의 유닛들 또는 모듈들과 연관되는 기능은 공통 하드웨어, 소프트웨어 컴포넌트들 및/또는 펌웨어 컴포넌트들 내에 통합될 수 있다.
상기 설명되는 바와 같이, 이미지 센서(4)는 이미지들(4OA 및 4OB)("이미지들(40)")을 캡쳐하여, 버퍼들(26)에 이미지들(40)을 저장한다. 이미지 정합 모듈(9)은 버퍼들(26)로부터 이미지들을 수신하고, 이미지들(40) 중 하나 또는 둘을 픽셀들의 둘 이상의 블록들로 분할하는데 블록 분할기(28)를 이용한다. JPEG 표준의 경우에, 예를 들어, 블록 분할기(28)는 픽셀들의 8개 행들 및 픽셀들의 8개 열들을 포함하는 8×8 블록들로 이미지들 각각을 분할할 수 있다. 8개 행들 또는 열들보다 더 크거나 더 작은 블록들이 또한 가능하다. 예를 들어, 블록 분할기(28)는 16×16 블록들, 8×16 블록들, 16×8 블록들, 또는 임의의 크기의 블록들로 이미지들 각각을 분할할 수 있다.
블록 분할기(28)가 이미지들 모두를 분할할 때, 이미지들은 통상적으로 동일한 방식으로 분할된다. 즉, 블록 분할기(28)는 도 4A 및 4B에 도시되는 블록 구성들과 같은 동일한 블록 구성으로 이미지들 각각을 분할할 수 있다. 도 4A 및 4B에 추가로 도시되는 바와 같이, 블록 분할기(28)는 다수의 중첩 블록들로 이미지들을 분할할 수 있다. 블록들은 이미지의 제1 블록이 예컨대 캡쳐된 이미지의 제1 인접 영역을 정의하고, 이미지의 제2 블록이 캡쳐된 이미지의 제2 인접 영역을 정의할 때 "중첩"하는데, 제1 인접 영역은 제2 인접 영역의 적어도 일부를 포함한다. 다른 양상들에서, 블록 분할기(28)는 이미지들 각각을 비-중첩 블록들로 분할할 수 있다.
움직임 벡터 모듈(32)은 블록들 각각에 대한 움직임 벡터들을 계산한다. 일 양상에서, 움직임 벡터 모듈(32)은 수평 프로젝션들, 수직 프로젝션들, 또는 둘 모두를 사용하여 블록들 각각에 대한 움직임 벡터들을 계산할 수 있다. 수평 프로젝션들은 블록의 픽셀들의 행의 픽셀 값들의 합산들이다. 수직 프로젝션들은 블록의 픽셀들의 행의 픽셀 값들의 합산들이다. 예를 들어, 움직임 벡터 모듈(32)은 각각의 이미지의 블록들 각각에 대하여, 다음의 방정식에 따라 수평 및 수직 프로젝션들을 결정한다:
Figure 112010038057952-pct00001
(1)
Figure 112010038057952-pct00002
(2)
여기서, PH(j)는 y-축을 따르는 픽셀들 "j"의 함수로써 수평 프로젝션을 나타내고, PV(i)는 x-축을 따르는 픽셀들 "i"의 함수로써 수직 프로젝션을 나타내며, Im(i,j)는 픽셀들 "i" 및 "j"의 함수로써 이미지 정보를 나타낸다. 따라서, PH는 (i가 변화하고 j가 정적인 채로 남아있음에 따른) 특정 블록의 이미지 정보의 x-축 픽셀 값들의 합산(∑)이다. 이러한 방식으로, 움직임 벡터 모듈(32)은 블록의 2-차원 이미지 정보로부터 1-차원적 수평 프로젝션 벡터를 생성한다. 따라서, 움직임 벡터 모듈(32)은 2-차원 8×8 블록을 나타내는 1-차원적인 16개의 엘리먼트 수평 프로젝션 벡터를 생성할 수 있다. 유사하게, PV는 수평 프로젝션이 결정된 동일한 블록의 2-차원 이미지 정보로부터 1-차원 수직 프로젝션 벡터를 형성하기 위하여 (i가 정적인 채로 유지되고 j가 변화함에 따른) 블록의 이미지 정보, 즉, Im(i,j)의 y-축 픽셀 값들의 합산(∑)이다. 각각의 블록은 모든 블록이 일련의 수평 및 수직 프로젝션들로 감소할 때까지 동일한 프로시져를 겪는다.
상기 개별적인 방정식들 (1), (2) 또는 블록의 2-차원 이미지 정보를 1차원으로 압축할 수 있는 임의의 다른 프로젝션-형 함수에 따라 수평 및 수직 프로젝션 벡터들을 결정한 이후, 움직임 벡터 모듈(32)은 프로젝션 벡터들의 함수로써 블록들에 대한 움직임 벡터들을 계산한다. 일 실시예에서, 움직임 벡터 모듈(32)은 다음의 방정식들에 따라 움직임 벡터들을 계산한다:
Figure 112010038057952-pct00003
(3)
Figure 112010038057952-pct00004
(4)
여기서 VH는 수평 움직임 벡터 컴포넌트를 나타내고, VV는 수직 움직임 벡터 컴포넌트를 나타내고, P1H는 제1 이미지의 특정 블록에 대한 수평 프로젝션을 나타내고, P2H는 제2 이미지의 대응 블록에 대한 수평 프로젝션을 나타내며, P1V 및 P2V는 개별적인 제1 및 제2 이미지들의 수직 프로젝션들을 나타낸다. 사실상, 방정식들 (3) 및 (4)는 제1 및 제2 이미지들의 대응 블록들로부터 결정되는 개별적인 수평 프로젝션과 수직 프로젝션 간의 평균 제곱된 차들을 결정함으로써 VH 및 VV를 계산한다. 대응 블록들은 둘 이상의 블록들 중 임의의 것일 수 있고, 각각의 블록은 상이한 이미지로부터의 분할이며, 이는 그들의 개별적인 이미지 내에 동일한 인접 영역을 정의한다. 이러한 벡터 컴포넌트들을 계산한 이후, 움직임 벡터 모듈(32)은 동일한 블록과 관련되는 수평 및 수직 움직임 벡터 컴포넌트들을 결합함으로써 움직임 벡터들을 결정한다. 따라서, 각각의 움직임 벡터는 제1 이미지의 블록과 제2 이미지 내에 픽셀들의 대응 블록 사이의 오프셋을 나타낸다. 상기에서는 평균 제곱 차들을 사용하는 것으로서 개시되나, 최대 상관/공분산, 절대 차들의 합, 또는 이와 유사한 종류의 다른 것들과 같은 다른 기술들이 움직임 벡터들을 계산하는데 사용될 수 있다.
움직임 벡터 모듈(32)은 다른 움직임 추정 기술들을 사용하여 움직임 벡터들을 계산할 수 있다. 예를 들어, 움직임 벡터 모듈(32)은 제1 이미지의 각각의 블록에 대하여, 제1 이미지의 개별적 블록에 대한 최상의 매칭인 블록에 대하여 제2 프레임을 탐색한다. 움직임 벡터 모듈(32)은 에러 측정, 예를 들어, 절대 차 합(SAD: sum of absolute difference), 평균 제곱 에러(MSE: mean square error), 또는 이와 유사한 종류의 다른 것들을 사용하여 제1 이미지의 블록들의 2-차원 블록 정보를 제2 이미지의 블록들의 2-차원 블록 정보와 비교할 수 있다. 움직임 벡터 모듈(32)은 가장 적은 에러 측정으로 블록을 선택할 수 있다. 그러나 2-차원 블록 데이터를 사용하는 움직임 추정의 계산은 더 많은 프로세싱 리소스들 및 시간을 요구할 수 있다.
몇몇 양상들에서, 움직임 벡터 모듈(32)은 블록들에 대해 계산된 움직임 벡터들을 사용하여 블록들의 다른 픽셀들에 대한 움직임 벡터들을 결정할 수 있다. 움직임 벡터 모듈(32)은 예를 들어, 보다 상세히 설명되는 바와 같이 다수의 외삽 및 보간 기술들 중 임의의 것에 따라 블록 움직임 벡터들을 사용하여 블록들의 다른 픽셀들에 대한 움직임 벡터들을 계산하기 위하여 움직임 벡터 외삽기(34) 및 움직임 벡터 보간기(36)를 포함할 수 있다. 움직임 벡터 외삽기(34)는 예를 들어, 블록의 다른 픽셀들의 적어도 일부의 움직임 벡터들을 계산하기 위하여 선형적 외삽법, 다항식(polynomial) 외삽법, 또는 코닉(conic) 외삽법을 사용할 수 있다. 유사하게, 움직임 벡터 보간기(36)는 블록들의 다른 픽셀들의 적어도 일부의 움직임 벡터들을 계산하기 위하여 예를 들어, 선형적 보간법, 다항식 보간법, 또는 스플라인(spline) 보간법을 사용할 수 있다. 이러한 방식으로, 움직임 벡터 모듈(32)은 픽셀들에 대한 움직임 벡터들을 외삽하거나 또는 보간하기 위하여 계산된 움직임 벡터들에 라인 또는 커브를 맞춘다(fit). 이러한 맞춰진 라인들 또는 커브들에 기초하여, 움직임 벡터 외삽기(34) 또는 보간기(36)는 이미지들 중 하나의 이미지의 픽셀에 대한 움직임 벡터를 결정한다. 상기 설명된 바와 같이, 움직임 벡터들은 제1 이미지의 픽셀과 제2 이미지 내에 대응 픽셀 사이의 오프셋을 나타낸다. 본 명세서에서 블록들의 픽셀들 각각에 대한 움직임 벡터들을 결정하는 것으로서 설명되나, 움직임 벡터 모듈(32)은 단지 픽셀들의 서브세트, 예를 들어, 픽셀들의 서브-블록들에 대한 움직임 벡터들을 외삽 또는 보간할 수 있다. 예를 들어, 최초 블록이 8×8 블록이라면, 움직임 벡터 모듈(32)은 2×2 서브-블록들에 대한 움직임 벡터들을 외삽 또는 보간할 수 있다.
픽셀 평균화 모듈(38)은 이미지들 모두로부터의 픽셀 값들을 사용하여 정합된 이미지에 대한 픽셀 값들을 계산한다. 특히, 픽셀 평균화 모듈(38)은 움직임 벡터들에 의해 표시되는 위치들에 위치되는 제2 프레임의 대응 픽셀들의 픽셀 값들, 예를 들어, 강도 및 색상 값들과 제1 프레임의 픽셀들에 대한 픽셀 값들, 예를 들어, 강도 및/또는 색상 값들을 평균화한다. 일 양상에서, 픽셀 평균화 모듈(38)은 예를 들어, 외삽법 또는 보간법을 사용하여 결정되는 개별적인 픽셀들과 연관되는 움직임 벡터들을 사용하여 픽셀 평균화를 수행할 수 있다. 다른 양상들에서, 픽셀 평균화 모듈(38)은 블록들과 연관되는 움직임 벡터들을 사용하여 픽셀 평균화를 수행할 수 있는데, 즉, 블록과 연관되는 움직임 벡터는 제2 이미지의 대응 픽셀들을 식별하기 위하여 사용된다. 상기 개시되는 이미지 정합 기술들을 사용하여 이미지를 캡쳐함으로써, 이미지 정합 모듈은 다수의 의도하지 않은 카메라 움직임들 중 임의의 것으로 인하여 발생하는 번짐의 양을 감소시킬 수 있다.
본 명세서에서 설명되고 이미지 정합 모듈(9)에 속하는 기능은 컴퓨터-판독 가능 매체에 저장되는 명령들을 실행하는 프로그래밍 가능한 프로세서에 의하여 수행될 수 있으며, 명령들 및/또는 코드는 프로세서가 본 명세서에 개시되는 이미지 정합을 수행하게 한다. 몇몇 경우들에 있어, 컴퓨터-판독 가능 매체는 디바이스에 저장 및/또는 제작자에게 판매될 수 있는 컴퓨터 프로그램 물건의 일부를 형성할 수 있다. 대안적으로, 본 명세서에 개시되고 이미지 정합 모듈(9)에 속하는 기술들은 일반적으로 하드웨어에 구현되는데, 특히 집적 회로 내에 구현될 수 있다. 집적 회로는 본 명세서에 개시되는 기능을 수행하도록 구성되는 적어도 하나의 프로세서를 포함한다.
도 4는 본 명세서에 개시되는 이미지 안정화 기술을 수행하는, 도 3의 이미지 캡쳐 디바이스(2)와 같은 이미지 캡쳐 디바이스의 예시적인 동작을 설명하는 흐름도이다. 최초에, 이미지 캡쳐 디바이스(2)의 이미지 센서(4)는 둘 이상의 이미지들을 캡쳐하여, 이미지들을 버퍼들(26)로 저장한다(50). 상기 개시되는 바와 같이, 둘 이상의 이미지들은 서로로부터 밀리초 또는 훨씬 짧은 시간 기간들 동안 이미지 센서(4)에 의하여 캡쳐되는 연속적 이미지들일 수 있다. 예를 들어, 연속적 이미지들은 이미지 프리뷰 동안 캡쳐될 수 있다. 블록 분할기(28)는 이미지들 중 적어도 하나를 다수의 블록들로 분할한다(52). 블록들은 중첩되거나 비-중첩될 수 있으며, 가변 치수들일 수 있다.
움직임 벡터 모듈(32)은 이미지들 중 적어도 하나의 블록들 각각에 대한 움직임 벡터들을 계산한다(54). 일 실시예에서, 움직임 벡터 모듈(32)은 하나 이상의 프로젝션들, 예를 들어, 수평 프로젝션, 수직 프로젝션, 또는 둘 모두에 기초하여 이미지들 중 적어도 하나의 블록들 각각에 대한 움직임 벡터들을 계산할 수 있다. 특히, 움직임 벡터 모듈(32)은 방정식들 (3) 및 (4)에 따라 이미지들 중 하나 또는 둘 모두에 대한 움직임 벡터들을 결정할 수 있다. 그러나 움직임 벡터 모듈(32)은 다른 움직임 추정 기술들을 사용하여 움직임 벡터들을 계산할 수 있다.
움직임 벡터 모듈(32)은 블록의 계산된 움직임 벡터들 중 둘 이상을 사용하여 블록의 다른 픽셀들의 적어도 일부에 대한 움직임 벡터들을 보간 및/또는 외삽한다(56). 움직임 벡터 모듈(32)은 예를 들어, 선형적 보간 및/또는 외삽의 경우에 라인을, 또는 계산된 움직임 벡터들을 통과하는 더 높은 차수의 보간 및/또는 외삽의 경우에 커브를 맞추고, 예를 들어, 맞춰진 라인 또는 커브를 사용하여 이미지들 중 하나의 다른 픽셀들의 적어도 일부에 대한 움직임 벡터, 예컨대 오프셋을 추정할 수 있다. 상기 상세히 설명되는 바와 같이, 움직임 벡터 모듈(32)은 블록의 픽셀들 각각에 대한, 또는 대안적으로, 블록의 픽셀들의 서브-블록들에 대한 움직임 벡터들을 외삽 또는 보간할 수 있다.
픽셀 평균화 모듈(38)은 블록의 픽셀 위치들의 적어도 일부에 대하여, 이미지들 전부로부터의 픽셀 정보를 사용하여 정합된 이미지에 대한 픽셀 값들을 계산한다(58). 특히, 픽셀 평균화 모듈(38)은 제1 이미지의 픽셀들로부터의 픽셀 정보 및 움직임 벡터에 의해 표시되는 위치(즉, 오프셋)에 위치되는 제2 이미지의 대응 픽셀들로부터의 픽셀 정보를 획득하고, 정합된 이미지를 생성하기 위하여 픽셀 정보를 평균화한다. 픽셀 평균화 모듈(38)은 제1 및 제2 이미지들의 단순 평균, 제1 및 제2 이미지들의 가중 평균, 제1 및 제2 이미지들의 합산, 또는 둘 이상의 이미지들의 이미지 정보를 결합하기 위한 다른 기술들을 사용할 수 있다. 상기 개시되는 이미지 정합 기술들을 사용하여 이미지를 캡쳐함으로써, 이미지 정합 모듈은 다수의 의도하지 않은 카메라 움직임들 중 임의의 움직임으로 인하여 발생하는 번짐량을 감소시킬 수 있다.
도 5a-5e는 도 3의 이미지 캡쳐 디바이스(2)와 같은 이미지 캡쳐 디바이스에 의하여 캡쳐되고 저장되며, 본 명세서에 개시되는 이미지 안정화 기술들에 따라 이미지 프로세서(6)에 의하여 프로세싱되는 예시적인 이미지들(66A 및 66B)("이미지들(66)")의 예시들이다. 특히, 이미지 센서(4)는 이미지들(66)을 캡쳐하여 버퍼들(26)의 개별적인 버퍼에 이미지들(66)을 저장할 수 있다. 이미지 정보(66)는 2개의 이미지로서 보여지나, 예시의 용이함을 위해 하기의 논의의 대부분은 이미지(66A)에 관련될 것이다. 그러나 논의는 이미지(66B)에도 동일하게 적용된다.
블록 분할기(28)는 이미지들(66)의 전부 또는 하나를 픽셀들의 둘 이상의 블록들로 분할한다. 도 5a 및 5b의 이미지(66A)를 참고로 도시되는 바와 같이, 블록 분할기(28)는 이미지 정보를 블록들(68A-68I)("블록들(68)")로 분할한다. 도 5a 및 5b에 개시되는 실시예에서, 블록들(68)은 다수의 중첩 블록들이다. 그러나 기술들은 중첩되지 않은 블록 분할들에 적용될 수 있다. 이미지(66A)의 블록들(68)로의 분할이 2개의 개별적 도면들로 도시되나, 블록들(68)은 단일 이미지(66A)의 분할들이다. 다시 말해, 이미지(66A)는 9개의 블록들로 분할된다. 예를 들어, 도 5b의 블록(68F)은 도 5a의 블록들(68A, 68B 및 68E)뿐 아니라 도 5b의 블록들(68I 및 68G)에 중첩한다. 유사하게, 블록(68E)은 도 5a의 블록들(68A-68D) 및 도 5b의 블록들(68F-68I)에 중첩한다. 블록 분할기(28)는 몇몇 경우들에 있어, 유사한 방식으로 이미지(66B)를 분할할 수 있다.
블록 분할기(28)는 계산 복잡성을 감소시킬 뿐 아니라, 상기 개시되는 특정 움직임들에 대한 번짐 감소를 가능하게 하기 위하여 이러한 분할 방식을 선택할 수 있다. 예를 들어, 이미지 정보(66A)를 9개 블록들로 분할하도록 선택함으로써, 블록 분할기(28)는 수평 및 수직(변형(translational)) 움직임 이외에, 카메라-장면 시선에 접하는 회전, 장면을 향하는 또는 장면으로부터 멀어지는 움직임에 의하여 야기되는 번짐을 보다 용이하게 검출하고 보정할 수 있다. 또한, 블록 분할 방식은 롤링 셔터(rolling shutter)들을 이용하는 이미지 캡쳐 기술들과 함께 움직임의 결과로 발생하는 이미지의 다른 시각적인 인위적 결과들 또는 번짐의 감소를 추가로 가능하게 할 수 있다. 이미지 정합 모듈(9)은 블록 중앙들(70)의 분산 성질로 인하여 그러한 움직임들을 검출할 수 있다.
움직임 벡터 모듈(32)은 도 5c에 도시되는 바와 같이, 개별 블록들(68)에 대한 움직임 벡터들(72A-72I)("움직임 벡터들(72)")을 결정한다. 움직임 벡터 모듈(32)은 상기 개시되는 바와 같이 다수의 기술 중 임의의 기술을 사용하여 각각의 블록들(68)에 대한 움직임 벡터들(72)을 계산할 수 있다. 도 5c에 개시되는 실시예에서, 개별 블록들에 대한 움직임 벡터들은 3×3 움직임 그리드(grid)를 형성한다. 그러나 상기 개시되는 바와 같이, 기술들은 2×2 또는 그보다 큰 임의의 그리드에 적용 가능하다.
일단 움직임 벡터들(72)이 결정되면, 움직임 벡터 외삽기(34) 및 보간기(36)는 각각 종래의 외삽 및 보간 기술들에 따라 움직임 벡터들(72)에 기초하여 도 5d 및 5e에 도시되는 움직임 벡터들(74A-74K 및 76A-76L)을 외삽 및 보간한다. 설명의 용이성을 위하여, 단지 외삽된 및 보간된 움직임 벡터들(74 및 76)의 서브세트가 도시된다. 외삽 및 보간된 움직임 벡터들(74 및 76)은 이미지(66) 내에 픽셀들의 각각의 행 및 열에 대하여 계산될 수 있다. 다시 말해, 움직임 벡터 모듈(32)은 블록들 각각 내에 픽셀들 각각에 대한 움직임 벡터들을 계산할 수 있다. 그러나, 상기 개시되는 바와 같이, 단지 블록들의 픽셀들의 서브세트, 예컨대, 서브-블록들에 대한 움직임 벡터들을 계산하기 위해 기술들이 사용될 수 있다. 따라서, 본 발명은 도 5d 및 5e에 도시되는 바와 같은, 움직임 벡터들(72-76)의 예시로 제한되어서는 안 된다.
도 5d 및 5e에 설명되는 실시예에서, 움직임 벡터 외삽기(34) 및 보간기(36)는 수직 움직임 벡터들에 라인들(78A 및 78B)을(도 5d) 그리고 수평 움직임 벡터들에 라인(80)을(도 5e) 맞춤으로써 선형적 보간 및 외삽을 사용한다. 그러나 상기 개시되는 바와 같이, 더 높은 차수의 보간 또는 외삽 기술들이 개별적인 픽셀들에 대한 움직임 벡터들을 계산하는데 사용될 수 있다. 따라서, 라인들은 이차 방정식, 스플라인들, 또는 임의의 다른 타입의 라인 피팅 알고리즘에 따라 맞춰질 수 있다.
본 명세서에 개시되는 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 구현될 수 있다. 모듈들 또는 컴포넌트들로서 개시되는 임의의 피쳐들은 집적 로직 디바이스에 함께 구현되거나, 또는 이산적이지만 공동 사용 가능한 로직 디바이스들로서 개별적으로 구현될 수 있다. 소프트웨어로 구현된다면, 기술들은 실행시 상기 개시되는 방법들 중 하나 이상을 수행하는 명령들을 포함하는 컴퓨터-판독 가능 매체에 의하여 적어도 부분적으로 실현될 수 있다. 컴퓨터-판독 가능 매체는 패키징 물질들을 포함할 수 있는 컴퓨터 프로그램 물건의 일부를 형성할 수 있다. 컴퓨터-판독 가능 매체는 동기 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM), FLASH 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수 있다. 기술들은 또한 적어도 부분적으로 명령들 또는 데이터 구조들의 형태로 코드를 전달 또는 통신하고 컴퓨터에 의하여 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독 가능 통신 매체에 의하여 실현될 수 있다.
코드는 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, ASIC들, 필드 프로그램가능 로직 어레이(FPGA)들, 또는 다른 등가 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용될 때 "프로세서"라는 용어는 전술한 구조들 중 임의의 것, 또는 본 명세서에 개시된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수 있다. 또한, 본 명세서에 개시되는 기능은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈이나 하드웨어 모듈 내에 제공될 수도 있고, 또는 조합된 비디오 인코더-디코더(CODEC)에 통합될 수도 있다. 이런 이유로, 본 명세서는 또한 본 명세서에 개시되는 기술들 중 하나 이상을 구현하기 위한 회로를 포함하는 다양한 집 회로 디바이스들 중 임의의 것을 고려한다. 그러한 회로는 하나의 집적 회로 칩 또는 다수의 공동 사용가능한 집적 회로 칩들에 제공될 수 있다.
다양한 기술들이 설명되었다. 이러한 그리고 다른 실시예 양상들은 하기의 청구항들의 범위 내에 존재한다.

Claims (25)

  1. 디지털 이미지 데이터를 프로세싱하기 위한 방법으로서,
    관심 장면(scene)의 제1 이미지를 픽셀들의 다수의 블록들로 분할하는(partition) 단계;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 단계;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 단계; 및
    상기 평균화된 픽셀 값들을 저장하는 단계를 포함하며,
    상기 방법은 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들의 서브-블록들에 대한 움직임 벡터들을, 해당 서브-블록이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하는 단계를 더 포함하며,
    상기 픽셀 값들을 평균화하는 단계는 상기 제1 이미지의 상기 서브-블록들 각각에 대한 픽셀 값들과 상기 제1 이미지의 상기 서브-블록들의 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 서브-블록들의 픽셀 값들을 평균화하는 단계를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  2. 제1항에 있어서,
    상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하는 단계를 더 포함하며,
    상기 픽셀 값들을 평균화하는 단계는 상기 제1 이미지의 상기 블록들의 픽셀들 각각에 대한 픽셀 값들과 상기 제1 이미지의 각각의 블록의 픽셀들 각각에 대해 결정된 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 단계를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  3. 제2항에 있어서,
    상기 픽셀들 각각에 대한 움직임 벡터들을 결정하는 단계는 상기 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 기초로 외삽법 및 보간법 중 하나를 이용하여 결정하는 단계를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  4. 삭제
  5. 디지털 이미지 데이터를 프로세싱하기 위한 방법으로서,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하는 단계;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 단계;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 단계; 및
    상기 평균화된 픽셀 값들을 저장하는 단계를 포함하며,
    상기 움직임 벡터를 계산하는 단계는,
    상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 수평 프로젝션(projection)들 및 수직 프로젝션들 중 적어도 하나를 계산하는 단계; 및
    상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 상기 수평 프로젝션들 및 상기 수직 프로젝션들 중 적어도 하나에 기초하여 움직임 벡터를 계산하는 단계를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  6. 제1항에 있어서,
    상기 제1 이미지 및 상기 제2 이미지를 캡쳐하는 단계를 더 포함하며,
    상기 제1 이미지 및 상기 제2 이미지 중 적어도 하나는 이미지 프리뷰(preview) 동안에 캡쳐되는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  7. 디지털 이미지 데이터를 프로세싱하기 위한 방법으로서,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하는 단계;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 단계;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 단계; 및
    상기 평균화된 픽셀 값들을 저장하는 단계를 포함하며,
    상기 제1 이미지를 픽셀들의 다수의 블록들로 분할하는 단계는 상기 제1 이미지를 픽셀들의 다수의 중첩 블록들로 분할하는 단계를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 방법.
  8. 디지털 이미지 데이터를 프로세싱하기 위한 명령들을 저장한 컴퓨터 판독 가능 매체로서, 상기 명령들은,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 코드;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 코드;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 코드; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 코드를 포함하며,
    상기 명령들은 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들의 서브-블록들에 대한 움직임 벡터들을, 해당 서브-블록이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하기 위한 코드를 더 포함하며,
    상기 픽셀 값들을 평균화하기 위한 코드는 상기 제1 이미지의 상기 서브-블록들 각각에 대한 픽셀 값들과 상기 제1 이미지의 상기 서브-블록들의 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 서브-블록들의 픽셀 값들을 평균화하기 위한 코드를 포함하는,
    컴퓨터 판독 가능 매체.
  9. 제8항에 있어서,
    상기 명령들은 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하기 위한 코드를 더 포함하며,
    상기 픽셀 값들을 평균화하기 위한 코드는 상기 제1 이미지의 상기 블록들의 픽셀들 각각에 대한 픽셀 값들과 상기 제1 이미지의 각각의 블록의 픽셀들 각각에 대해 결정된 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 코드를 포함하는,
    컴퓨터 판독 가능 매체.
  10. 제9항에 있어서,
    상기 픽셀들 각각에 대한 움직임 벡터들을 결정하기 위한 코드는 상기 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 기초로 외삽법 및 보간법 중 하나를 이용하여 결정하기 위한 코드를 포함하는,
    컴퓨터 판독 가능 매체.
  11. 삭제
  12. 디지털 이미지 데이터를 프로세싱하기 위한 명령들을 저장한 컴퓨터 판독 가능 매체로서, 상기 명령들은,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 코드;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 코드;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 코드; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 코드를 포함하며,
    상기 움직임 벡터를 계산하기 위한 코드는,
    상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 수평 프로젝션들 및 수직 프로젝션들 중 적어도 하나를 계산하기 위한 코드; 및
    상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 상기 수평 프로젝션들 및 상기 수직 프로젝션들 중 적어도 하나에 기초하여 움직임 벡터를 계산하기 위한 코드를 포함하는,
    컴퓨터 판독 가능 매체.
  13. 제8항에 있어서,
    상기 명령들은 상기 제1 이미지 및 상기 제2 이미지를 캡쳐하기 위한 코드를 더 포함하며,
    상기 제1 이미지 및 상기 제2 이미지 중 적어도 하나는 이미지 프리뷰 동안에 캡쳐되는,
    컴퓨터 판독 가능 매체.
  14. 디지털 이미지 데이터를 프로세싱하기 위한 명령들을 저장한 컴퓨터 판독 가능 매체로서, 상기 명령들은,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 코드;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 코드;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 코드; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 코드를 포함하며,
    상기 제1 이미지를 분할하기 위한 코드는 상기 제1 이미지를 픽셀들의 다수의 중첩 블록들로 분할하기 위한 코드를 포함하는,
    컴퓨터 판독 가능 매체.
  15. 디지털 이미지 데이터를 프로세싱하기 위한 장치로서,
    상기 이미지 데이터를 프로세싱하기 위한 이미지 프로세서 ? 상기 이미지 프로세서는,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 블록 분할기;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 움직임 벡터 모듈; 및
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 픽셀 평균화 모듈을 포함함 ? ; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 메모리를 포함하며,
    상기 움직임 벡터 모듈은 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들의 서브-블록들에 대한 움직임 벡터들을, 해당 서브-블록이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하고,
    상기 픽셀 평균화 모듈은 상기 제1 이미지의 상기 서브-블록들 각각에 대한 픽셀 값들과 상기 제1 이미지의 상기 서브-블록들의 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 서브-블록들의 픽셀 값들을 평균화하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  16. 제15항에 있어서,
    상기 움직임 벡터 모듈은 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하고,
    상기 픽셀 평균화 모듈은 상기 제1 이미지의 상기 블록들의 픽셀들 각각에 대한 픽셀 값들과 상기 제1 이미지의 각각의 블록의 픽셀들 각각에 대해 결정된 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  17. 제16항에 있어서,
    상기 움직임 벡터 모듈은 상기 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 기초로 외삽법 및 보간법 중 하나를 이용하여 결정하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  18. 디지털 이미지 데이터를 프로세싱하기 위한 장치로서,
    상기 이미지 데이터를 프로세싱하기 위한 이미지 프로세서 ? 상기 이미지 프로세서는,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 블록 분할기;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 움직임 벡터 모듈; 및
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 픽셀 평균화 모듈을 포함함 ? ; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 메모리를 포함하며,
    상기 움직임 벡터 모듈은
    상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 수평 프로젝션들 및 수직 프로젝션들 중 적어도 하나를 계산하고, 상기 다수의 블록들 각각에 대하여, 각각의 블록에 대한 상기 수평 프로젝션들 및 상기 수직 프로젝션들 중 적어도 하나에 기초하여 움직임 벡터를 계산하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  19. 제15항에 있어서,
    상기 제1 이미지 및 상기 제2 이미지를 캡쳐하기 위한 이미지 센서를 더 포함하며,
    상기 이미지 센서는 이미지 프리뷰 동안에 상기 제1 이미지 및 상기 제2 이미지 중 적어도 하나를 캡쳐하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  20. 디지털 이미지 데이터를 프로세싱하기 위한 장치로서,
    상기 이미지 데이터를 프로세싱하기 위한 이미지 프로세서 ? 상기 이미지 프로세서는,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 블록 분할기;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하는 움직임 벡터 모듈; 및
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는 픽셀 평균화 모듈을 포함함 ? ; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 메모리를 포함하며,
    상기 블록 분할기는 상기 제1 이미지를 픽셀들의 다수의 중첩 블록들로 분할하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  21. 제15항에 있어서,
    상기 장치는 무선 통신 디바이스 내에 통합되고,
    상기 무선 통신 디바이스는:
    상기 평균화된 픽셀 값들을 인코딩하는 인코딩 모듈; 및
    상기 인코딩된 이미지를 전송하는 전송기를 포함하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  22. 디지털 이미지 데이터를 프로세싱하기 위한 장치로서,
    관심 장면의 제1 이미지를 픽셀들의 다수의 블록들로 분할하기 위한 수단;
    상기 다수의 블록들 각각에 대하여, 상기 제1 이미지의 블록과 상기 관심 장면의 제2 이미지 내의 픽셀들의 대응 블록 사이의 오프셋을 나타내는 움직임 벡터를 계산하기 위한 수단;
    상기 제1 이미지의 블록들의 픽셀들 각각에 대한 픽셀 값들과 해당 픽셀들이 속하는 개별 블록의 움직임 벡터에 기초한 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하기 위한 수단; 및
    상기 평균화된 픽셀 값들을 저장하기 위한 수단을 포함하며,
    상기 장치는 상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들의 서브-블록들에 대한 움직임 벡터들을, 해당 서브-블록이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하기 위한 수단을 더 포함하며,
    상기 평균화하기 위한 수단은 상기 제1 이미지의 상기 서브-블록들 각각에 대한 픽셀 값들과 상기 제1 이미지의 상기 서브-블록들의 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 서브-블록들의 픽셀 값들을 평균화하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  23. 제22항에 있어서,
    상기 다수의 블록들 각각에 대하여, 각각의 블록의 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 사용하여 결정하기 위한 수단을 더 포함하며,
    상기 평균화하기 위한 수단은 상기 제1 이미지의 상기 블록들의 픽셀들 각각에 대한 픽셀 값들과 상기 제1 이미지의 각각의 블록의 픽셀들 각각에 대해 결정된 개별 움직임 벡터들에 의해 표시되는 위치들에서 상기 제2 이미지의 대응 픽셀들의 픽셀 값들을 평균화하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  24. 제23항에 있어서,
    상기 결정하기 위한 수단은 상기 픽셀들 각각에 대한 움직임 벡터들을 해당 픽셀이 속하는 블록에 대해 계산된 움직임 벡터 및 상기 제1 이미지의 하나의 다른 블록에 대해 계산된 적어도 하나의 다른 움직임 벡터를 기초로 외삽법 및 보간법 중 하나를 이용하여 결정하는,
    디지털 이미지 데이터를 프로세싱하기 위한 장치.
  25. 삭제
KR1020107013098A 2007-11-12 2008-11-12 블록-기반 이미지 안정화 KR101154087B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/938,711 US8600189B2 (en) 2007-11-12 2007-11-12 Block-based image stabilization
US11/938,711 2007-11-12
PCT/US2008/083275 WO2009064810A1 (en) 2007-11-12 2008-11-12 Block-based image stabilization

Publications (2)

Publication Number Publication Date
KR20100092017A KR20100092017A (ko) 2010-08-19
KR101154087B1 true KR101154087B1 (ko) 2012-06-11

Family

ID=40030322

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107013098A KR101154087B1 (ko) 2007-11-12 2008-11-12 블록-기반 이미지 안정화

Country Status (7)

Country Link
US (1) US8600189B2 (ko)
EP (1) EP2058760B1 (ko)
JP (2) JP2011504266A (ko)
KR (1) KR101154087B1 (ko)
CN (1) CN101896935A (ko)
TW (1) TW200931343A (ko)
WO (1) WO2009064810A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970239B2 (en) 2006-01-19 2011-06-28 Qualcomm Incorporated Hand jitter reduction compensating for rotational motion
US8019179B2 (en) * 2006-01-19 2011-09-13 Qualcomm Incorporated Hand jitter reduction for compensating for linear displacement
US8120658B2 (en) * 2006-01-19 2012-02-21 Qualcomm Incorporated Hand jitter reduction system for cameras
US20090201427A1 (en) * 2008-02-12 2009-08-13 Brian Heng Method and system for pixel adaptive weighted median filtering for block motion vector decomposition
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
US20100103323A1 (en) * 2008-10-24 2010-04-29 Ati Technologies Ulc Method, apparatus and software for determining motion vectors
CN102752585B (zh) * 2011-04-18 2015-04-15 联咏科技股份有限公司 数据处理方法及数字影像处理装置
US8941751B2 (en) 2011-05-06 2015-01-27 Empire Technology Development Llc Higher resolution still image generation from lower resolution video camera frames
JP2012242563A (ja) * 2011-05-18 2012-12-10 Pentax Ricoh Imaging Co Ltd 手ブレ補正装置およびデジタルカメラ
US8675997B2 (en) 2011-07-29 2014-03-18 Hewlett-Packard Development Company, L.P. Feature based image registration
US8385732B2 (en) 2011-07-29 2013-02-26 Hewlett-Packard Development Company, L.P. Image stabilization
CN102509255B (zh) * 2011-10-26 2014-03-26 苏州百滨电子科技有限公司 高速图像采集和处理方法和装置
TWI469062B (zh) 2011-11-11 2015-01-11 Ind Tech Res Inst 影像穩定方法及影像穩定裝置
KR101804215B1 (ko) * 2012-03-06 2017-12-05 삼성전자주식회사 강건하게 비균일 모션 블러를 추정하는 방법 및 장치
CN102637295B (zh) * 2012-03-31 2014-07-23 北京智安邦科技有限公司 一种快速图像电子稳定方法及装置
ITVI20120087A1 (it) 2012-04-17 2013-10-18 St Microelectronics Srl Stabilizzazione video digitale
US8842910B2 (en) * 2012-08-17 2014-09-23 Tandent Vision Science, Inc. Spatially varying log-chromaticity normals for use in an image process
US8446481B1 (en) 2012-09-11 2013-05-21 Google Inc. Interleaved capture for high dynamic range image acquisition and synthesis
KR102003671B1 (ko) * 2012-10-29 2019-07-25 삼성전자주식회사 영상 처리 방법 및 장치
US8866927B2 (en) 2012-12-13 2014-10-21 Google Inc. Determining an image capture payload burst structure based on a metering image capture sweep
US9087391B2 (en) 2012-12-13 2015-07-21 Google Inc. Determining an image capture payload burst structure
US8866928B2 (en) 2012-12-18 2014-10-21 Google Inc. Determining exposure times using split paxels
US9247152B2 (en) 2012-12-20 2016-01-26 Google Inc. Determining image alignment failure
US8995784B2 (en) 2013-01-17 2015-03-31 Google Inc. Structure descriptors for image processing
US9686537B2 (en) 2013-02-05 2017-06-20 Google Inc. Noise models for image processing
US9117134B1 (en) 2013-03-19 2015-08-25 Google Inc. Image merging with blending
US9066017B2 (en) 2013-03-25 2015-06-23 Google Inc. Viewfinder display based on metering images
US9077913B2 (en) 2013-05-24 2015-07-07 Google Inc. Simulating high dynamic range imaging with virtual long-exposure images
US9131201B1 (en) 2013-05-24 2015-09-08 Google Inc. Color correcting virtual long exposures with true long exposures
US9615012B2 (en) 2013-09-30 2017-04-04 Google Inc. Using a second camera to adjust settings of first camera
US9478010B2 (en) 2013-12-12 2016-10-25 Google Technology Holdings LLC Generating an enhanced image of a predetermined scene from a plurality of images of the predetermined
US20150237351A1 (en) * 2014-02-18 2015-08-20 Penne Lee Techniques for inclusion of region of interest indications in compressed video data
JP6336341B2 (ja) * 2014-06-24 2018-06-06 キヤノン株式会社 撮像装置及びその制御方法、プログラム、記憶媒体
CN104363380B (zh) * 2014-10-15 2017-10-27 北京智谷睿拓技术服务有限公司 图像采集控制方法和装置
JP6888098B2 (ja) * 2017-01-13 2021-06-16 ワーナー・ブラザース・エンターテイメント・インコーポレイテッドWarner Bros. Entertainment Inc. デジタル静止画像へのモーション効果の追加
US10491832B2 (en) 2017-08-16 2019-11-26 Qualcomm Incorporated Image capture device with stabilized exposure or white balance
CN108898615B (zh) * 2018-06-15 2021-09-24 阿依瓦(北京)技术有限公司 用于高频信息图像的块匹配方法
US10595000B1 (en) 2018-08-02 2020-03-17 Facebook Technologies, Llc Systems and methods for using depth information to extrapolate two-dimentional images

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060135177A (ko) * 2005-06-24 2006-12-29 삼성전자주식회사 움직임 에러 검출장치와 이를 포함하는 움직임 에러보정장치와 이에 의한 움직임 에러 검출방법 및 움직임에러 보정방법
US20070248166A1 (en) 2006-04-19 2007-10-25 Hong Chen Image stabilization method

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2687974B2 (ja) 1986-03-31 1997-12-08 日本放送協会 動きベクトル検出方法
JP3103894B2 (ja) * 1991-02-06 2000-10-30 ソニー株式会社 ビデオデータの手振れ補正装置およびその方法
US5943096A (en) * 1995-03-24 1999-08-24 National Semiconductor Corporation Motion vector based frame insertion process for increasing the frame rate of moving images
JP2798120B2 (ja) 1995-08-04 1998-09-17 日本電気株式会社 動き補償フレーム間予測方法及び動き補償フレーム間予測装置
JP2798035B2 (ja) * 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
JPH11331833A (ja) * 1998-05-15 1999-11-30 Hitachi Ltd 広視野監視カメラシステム
US6130912A (en) * 1998-06-09 2000-10-10 Sony Electronics, Inc. Hierarchical motion estimation process and system using block-matching and integral projection
JP4294881B2 (ja) 2000-05-12 2009-07-15 富士フイルム株式会社 画像の位置合わせ方法および装置
JP2004343483A (ja) 2003-05-16 2004-12-02 Acutelogic Corp 手振れ補正装置および方法、手振れ検出装置
DE102004017145B4 (de) 2004-04-07 2006-02-16 Micronas Gmbh Verfahren und Vorrichtung zur Ermittlung von Bewegungvektoren, die Bildbereichen eines Bildes zugeordnet sind
JP4419675B2 (ja) * 2004-05-14 2010-02-24 ソニー株式会社 固体撮像装置および固体撮像装置の駆動方法
CA2582094C (en) * 2004-09-29 2014-12-23 Warner Bros. Entertainment Inc. Correction of blotches in component images
KR100588132B1 (ko) * 2004-10-04 2006-06-09 삼성전자주식회사 디스플레이장치
US7847823B2 (en) * 2005-01-14 2010-12-07 Morpho, Inc. Motion vector calculation method and hand-movement correction device, imaging device and moving picture generation device
US8482618B2 (en) * 2005-02-22 2013-07-09 Hewlett-Packard Development Company, L.P. Reduction of motion-induced blur in images
JP4595733B2 (ja) 2005-08-02 2010-12-08 カシオ計算機株式会社 画像処理装置
KR100714698B1 (ko) * 2005-08-29 2007-05-07 삼성전자주식회사 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치
WO2007032082A1 (ja) * 2005-09-16 2007-03-22 Fujitsu Limited 画像処理方法及び画像処理装置
KR100721543B1 (ko) * 2005-10-11 2007-05-23 (주) 넥스트칩 통계적 정보를 이용하여 노이즈를 제거하는 영상 처리 방법및 시스템
WO2007042073A1 (en) 2005-10-12 2007-04-19 Active Optics Pty Limited Image processing method and system
JP5082856B2 (ja) 2005-11-30 2012-11-28 株式会社ニコン 画像処理方法、画像処理プログラム、画像処理装置、及び撮像装置
JP4304528B2 (ja) * 2005-12-01 2009-07-29 ソニー株式会社 画像処理装置および画像処理方法
JP4528255B2 (ja) * 2005-12-06 2010-08-18 日本放送協会 映像復号装置および映像復号プログラム
US20070171981A1 (en) * 2006-01-25 2007-07-26 Yingyong Qi Projection based techniques and apparatus that generate motion vectors used for video stabilization and encoding
JP2007257287A (ja) * 2006-03-23 2007-10-04 Tokyo Institute Of Technology 画像レジストレーション方法
US8306280B2 (en) * 2006-04-11 2012-11-06 Nikon Corporation Electronic camera and image processing apparatus
JP2007282119A (ja) 2006-04-11 2007-10-25 Nikon Corp 電子カメラおよび画像処理装置
EP1892666A1 (en) * 2006-08-16 2008-02-27 Toyota Motor Europe NV A method, an apparatus and a computer-readable medium for processing an image dataset

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060135177A (ko) * 2005-06-24 2006-12-29 삼성전자주식회사 움직임 에러 검출장치와 이를 포함하는 움직임 에러보정장치와 이에 의한 움직임 에러 검출방법 및 움직임에러 보정방법
US20070248166A1 (en) 2006-04-19 2007-10-25 Hong Chen Image stabilization method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Motion estimation techniques for digital TV *
Noise reproduction filters for dynamic image sequences: A REVIEW *

Also Published As

Publication number Publication date
CN101896935A (zh) 2010-11-24
US20090123082A1 (en) 2009-05-14
JP2011504266A (ja) 2011-02-03
JP5908511B2 (ja) 2016-04-26
KR20100092017A (ko) 2010-08-19
EP2058760A1 (en) 2009-05-13
US8600189B2 (en) 2013-12-03
WO2009064810A1 (en) 2009-05-22
TW200931343A (en) 2009-07-16
JP2014143702A (ja) 2014-08-07
EP2058760B1 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
KR101154087B1 (ko) 블록-기반 이미지 안정화
US8098957B2 (en) Shared block comparison architechture for image registration and video coding
KR101027353B1 (ko) 전자 비디오 이미지 안정화
JP5226794B2 (ja) 動き支援されたイメージセンサコンフィギュレーション
US8179446B2 (en) Video stabilization and reduction of rolling shutter distortion
US9288392B2 (en) Image capturing device capable of blending images and image processing method for blending images thereof
US7860334B2 (en) Adaptive image filter for filtering image information
KR101352730B1 (ko) 비디오 프레임 이미지 데이터를 선택적으로 결합하기 위한 시스템 및 방법
US9076267B2 (en) Image coding device, integrated circuit thereof, and image coding method
US20060158523A1 (en) Digital camera and method
JP2008193530A (ja) 画像記録装置、画像記録方法、及びプログラム
JP2023052939A (ja) 符号化装置、復号装置、符号化方法、復号方法、符号化プログラム、および復号プログラム
JP6152642B2 (ja) 動画像圧縮装置、動画像復号装置およびプログラム
JP5165084B2 (ja) 画像符号化装置
JP2012195849A (ja) 動画像処理装置およびカメラシステム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 8