KR101215045B1 - 이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐 - Google Patents

이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐 Download PDF

Info

Publication number
KR101215045B1
KR101215045B1 KR1020107020476A KR20107020476A KR101215045B1 KR 101215045 B1 KR101215045 B1 KR 101215045B1 KR 1020107020476 A KR1020107020476 A KR 1020107020476A KR 20107020476 A KR20107020476 A KR 20107020476A KR 101215045 B1 KR101215045 B1 KR 101215045B1
Authority
KR
South Korea
Prior art keywords
image
blocks
block
video coding
matching
Prior art date
Application number
KR1020107020476A
Other languages
English (en)
Other versions
KR20100116211A (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 KR20100116211A publication Critical patent/KR20100116211A/ko
Application granted granted Critical
Publication of KR101215045B1 publication Critical patent/KR101215045B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • 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
    • 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/684Vibration or motion blur correction performed by controlling the image sensor readout, e.g. by controlling the integration time
    • H04N23/6845Vibration or motion blur correction performed by controlling the image sensor readout, e.g. by controlling the integration time by combination of a plurality of images sequentially taken
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/70Circuitry for compensating brightness variation in the scene
    • H04N23/741Circuitry for compensating brightness variation in the scene by increasing the dynamic range of the image compared to the dynamic range of the electronic image sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/70Circuitry for compensating brightness variation in the scene
    • H04N23/745Detection of flicker frequency or suppression of flicker wherein the flicker is caused by illumination, e.g. due to fluorescent tube illumination or pulsed LED illumination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

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

Abstract

본 발명은 스틸 이미지들에 대한 이미지 정합 및 비디오 시퀀스의 비디오 코딩을 지원하는 이미징 디바이스에 대한 효율적인 아키텍쳐를 설명한다. 이미지 정합을 위해서, 설명되는 아키텍쳐는 블록-단위 기반으로 이미지 정합을 지원하기 위해서 다른 기준 이미지의 블록들에 대한 캡쳐된 이미지의 이미지 블록들의 블록-기반의 비교들을 사용한다. 비디오 코딩을 위해서, 설명되는 아키텍쳐는 예를 들어, 모션 추정 및 모션 보상에 대하여 지원하기 위해서 블록-기반의 비교들을 사용한다. 본 발명에 따르면, 공통 블록 비교 엔진은 블록 기반의 이미지 정합 및 블록-기반의 비디오 코딩 모두를 위해서 공유 기반으로 사용된다. 이러한 방식으로, 블록-기반의 비교들을 위해서 설계된 하드웨어 유닛은 스틸 이미지들에 대한 이미지 정합 프로세스 및 비디오 시퀀스의 코딩을 위한 비디오 코딩 프로세스 모두에서 작동하도록 구현될 수 있다.

Description

이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐{SHARED BLOCK COMPARISON ARCHITECTURE FOR IMAGE REGISTRATION AND VIDEO CODING}
본 발명은 이미지 및 비디오 프로세싱에 관한 것으로, 보다 상세하게는, 이미지 캡쳐 애플리케이션들에서의 이미지 정합(registration) 및 안정화(stabilization)를 위한 기법들 및 비디오 캡쳐 애플리케이션들에서의 비디오 코딩을 위한 기법들에 관한 것이다.
이미징 디바이스들에서, 이러한 디바이스들에 의해 캡쳐되는 이미지들 또는 비디오 시퀀스들은 종종 이미지 캡쳐 동안 디바이스들의 의도되지 않은 흔들림으로 인하여 품질 저하의 여지가 있다. 비디오 캡쳐에서, 이미징 디바이스의 흔들림은 캡쳐된 비디오 시퀀스에서 원하지 않는 모션 또는 지터(jitter)를 초래할 수 있다. 스틸 이미지 캡쳐에서, 흔들림은 캡쳐된 이미지의 블러링(blurring)을 초래할 수 있다. 블러링 또는 지터는 휴먼 비주얼 시스템이 이미지 내의 관심 영역 또는 물체에 포커싱 그리고 집중하는 것을 어렵게 만들 수 있다. 어느 경우에서든, 비디오 또는 이미지의 뷰잉 경험(viewing experience)의 품질은 감소된다.
이미지 정합 기법들은 보다 양호한 이미지 품질을 생성하기 위해서 의도되지 않은 흔들림을 보상하는데 사용될 수 있다. 이미지 정합 시스템들은 일반적으로 3개의 주요 카테고리들: 광학 이미지 안정화기(optical image stabilizer: OIS)들, 기계적 이미지 안정화기(mechanical image stabilizer: MIS)들 및 전자 이미지 안정화기(electronic image stabilizer: EIS)로 분류된다. OIS 시스템들은 흔들림의 영향을 감소시키기 위해서 그것이 센서에 도달하기 전에 이미지를 모핑(morph)하는 조정가능한 렌즈를 사용한다. MIS 시스템들은 흔들림을 최소화시키기 위해서 예를 들어, 카메라의 중력 중심, 평형추 시스템(counterbalance system) 및/또는 카메라 작동자의 바디를 사용하여 전체 카메라를 안정화시킨다. EIS 시스템들은 캡쳐된 이미지들을 변경시키고 이에 의해 흔들림의 영향들을 다루기(address) 위해서 신호 프로세싱 알고리즘들을 사용한다. 일부 이미지 프로세싱 애플리케이션들에서, 이미지 정합은 이미지들의 쇼트 시퀀스(short sequence)를 하나의 영상으로 퓨징(fuse)시키기 위해서 사용될 수도 있다. EIS 시스템들은 OIS 및 MIS 시스템들보다 구현하는데 비용이 덜 들 수 있으며, 이미징 능력들이 장착된 무선 라디오 전화 핸드셋들 예를 들어, 소위 카메라 폰들과 같은 디바이스들에 대한 OIS 및 MIS 시스템들보다 선호될 수 있다.
비디오 캡쳐를 위해서, 이미징 디바이스들은 MPEG-2, MPEG-4, ITU-T H.261, H.263, 또는 H.264/MPEG-4, Part 10, AVC(Advanced Video Coding) 표준들에 의해 정의되는 것들 같이, 블록-기반의 비디오 압축 기법들을 구현할 수 있다. 비디오 압축 기법들은 비디오 시퀀스들에서 고유한 리던던시를 감소시키거나 제거하기 위해서 공간 및 시간 예측을 수행한다. 모션 추정 및 모션 보상은 예를 들어, 코딩된 비디오 시퀀스에서 시간 리던던시를 제거하고 이에 의해 데이터 압축을 달성하기 위해서 사용되는 공통적인 그리고 효과적인 블록-기반의 비디오 코딩 기법들이다.
본 발명은 스틸 이미지들에 대한 이미지 정합(image registration) 및 비디오 시퀀스의 비디오 코딩(video coding)을 지원하는 이미징 디바이스에 대한 효율적인 아키텍쳐를 설명한다. 이미지 정합을 위해서, 설명되는 아키텍쳐는 블록-단위 기반으로 이미지 정합을 지원하기 위해서 다른 기준 이미지의 블록들에 대한 캡쳐된 이미지의 이미지 블록들의 블록-기반의 비교들을 사용할 수 있다. 선택적으로, 픽셀-기반의 정합은 적절한 매칭 블록들이 기준 이미지에서 식별되지 않는 임의의 블록들에 대한 이미지 정합에서 사용될 수도 있다. 비디오 코딩을 위해서, 설명되는 아키텍쳐는 예를 들어, 모션 추정 및 모션 보상에 대하여 지원하기 위해서 블록-기반의 비교들을 사용할 수 있다.
본 발명의 일부 양상들에 따르면, 블록-기반의 비교들은 이미지 정합 아키텍쳐 및 비디오 코딩 아키텍쳐 모두의 일부분을 형성하는 블록 비교 엔진을 통해 수행될 수 있다. 다시 말해서, 본 발명은 블록-기반의 이미지 정합 및 블록-기반의 비디오 코딩을 위한 공유된 블록 비교 엔진의 사용을 설명한다. 이러한 방식으로, 블록-기반의 비교들을 위해서 설계된 하드웨어 유닛은 스틸 이미지들에 대한 이미지 정합 프로세스 및 비디오 시퀀스의 코딩을 위한 비디오 코딩 프로세스 모두에서 작동하도록 구현될 수 있다.
일 예에서, 본 발명은 비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하는 단계 ― 상기 비디오 코딩 프로세스를 수행하는 단계는 블록 비교 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 단계를 포함함 ― , 및 이미지 정합 프로세스를 수행하는 단계 ― 상기 이미지 정합 프로세스를 수행하는 단계는 상기 블록 비교 엔진을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 단계를 포함함 ― 를 포함하는 방법을 제공한다.
다른 예에서, 본 발명은 블록 비교 엔진, 비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하는 비디오 코더 ― 상기 비디오 코딩 프로세스는 상기 비디오 비교 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 것을 포함함 ― , 및 이미지 정합 프로세스를 수행하는 이미지 정합 유닛 ― 상기 이미지 정합 프로세스는 상기 블록 비교 엔진을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 것을 포함함 ― 을 포함하는 장치를 제공한다.
다른 예에서, 본 발명은 비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하기 위한 수단 ― 상기 비디오 코딩 프로세스를 수행하기 위한 수단은 블록 비교 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하기 위한 수단을 포함함 ― ; 및 이미지 정합 프로세스를 수행하기 위한 수단 ― 상기 이미지 정합 프로세스를 수행하기 위한 수단은 상기 블록 비교 엔진을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하기 위한 수단을 포함함 ― 을 포함하는 디바이스를 제공한다.
본 발명에서 설명되는 기법들의 다양한 양상들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합들로 구현될 수 있다. 소프트웨어로 구현되는 경우, 소프트웨어는 마이크로프로세서, 주문형 집적회로(ASIC), 필드 프로그램가능한 게이트 어레이 신호(FPGA) 또는 디지털 신호 처리기(DSP)와 같은 하나 이상의 프로세서들, 또는 다른 등가의 집적 또는 이산 로직 회로를 지칭할 수 있는 프로세서에서 실행될 수 있다. 소프트웨어는 여기에서 설명되는 바와 같이, 블록 비교 엔진을 포함하는 이미징 디바이스에서 실행될 수 있다. 기법들을 실행하는 소프트웨어 명령들은 초기에 컴퓨터-판독가능 매체에 저장되어, 이미징 디바이스의 프로세서에 의해 실행될 수 있다.
따라서, 본 발명은 블록 비교 엔진을 포함하는 이미징 디바이스의 프로세서에서 실행 시에, 상기 프로세서로 하여금, 비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하게 하고 ― 상기 비디오 코딩 프로세스는 상기 블록 비교 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 것을 포함함 ― , 그리고 이미지 정합 프로세스를 수행하게 하는 ― 블록-기반의 이미지 정합 프로세스는 상기 블록 비교 엔진을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 것을 포함함 ― 명령들을 포함하는 컴퓨터-판독가능 매체를 포함하는 컴퓨터-판독가능 매체들을 참작한다.
하나 이상의 예들의 세부사항들은 첨부된 도면들 및 아래의 상세한 설명에서 설명된다. 다른 특징들, 목적들 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1은 이미지 정합 유닛 및 비디오 코더 모두에 의해 사용되는 블록 비교 엔진을 포함하는 예시적인 이미징 디바이스를 예시하는 블록 다이어그램이다.
도 2는 본 발명의 기법들에 따른 메모리에 연결된 예시적인 이미지 정합 유닛의 블록 다이어그램이다.
도 3은 본 발명의 기법들에 따른 메모리에 연결된 예시적인 비디오 코더의 블록 다이어그램이다.
도 4는 본 발명에 따른 이미지 정합 및 비디오 코딩을 수행하는 이미징 디바이스의 예시적인 동작을 예시하는 흐름 다이어그램이다.
도 5는 본 발명에 따른 예시적인 이미지 정합 프로세스를 예시하는 흐름 다이어그램이다.
이미징 디바이스들, 특히 소위 카메라 폰들과 같은 작고 경량인 디바이스들은 이미지 캡쳐 동안 디바이스의 사용자에 의해 원하지 않는 움직임들이 많이(highly) 있을 수 있다. 때때로 핸드 지터(hand jitter)라고 지칭되는 이러한 원하지 않는 움직임들은 일반적으로 블러링 또는 다른 비주얼 아티팩트(artifact)들로 인하여 감소된 이미지 품질을 초래할 수 있다. 움직임들을 보상하기 위해서, 이미징 디바이스는 본 발명에서 설명되는 이미지 정합 기법들을 사용하여 이미지 안정화를 제공할 수 있다. 일반적으로, 이미지 정합은 둘 이상의 스틸 이미지들이 합성 ("정합된") 스틸 이미지를 형성하기 위해서 캡쳐되고, 정렬되며 결합되는 기법을 지칭한다. 이미지 정합은 둘 이상의 스틸 이미지들에 대한 결합된 스틸 이미지에서 지터를 감소시키기 위해서, 또는 이미지들의 시퀀스를 하나의 영상으로 퓨징시키기 위하여 둘 이상의 이미지들을 결합시키기 위해서 사용될 수 있다.
이미지 정합을 위해서, 여기에서 설명되는 아키텍쳐는 블록 단위 기반으로 이미지 정합을 지원하기 위해서 다른 기준 이미지의 블록들에 대한 캡쳐된 이미지의 이미지 블록들의 블록-기반의 비교들을 사용한다. 둘 이상의 이미지들은 비디오 코딩에서 정의되는 소위 "매크로 블록들"과 유사할 수 있는 블록들 또는 윈도우들로 나누어질 수 있다. 이러한 블록들 또는 윈도우들은 블록-단위 기반으로 이미지 정합을 지원하기 위해서 다른 이미지의 블록들 또는 윈도우들과 비교될 수 있다. 블록들은 접합해제(disjoint), 접합(joint)(넌-오버래핑) 또는 오버래핑될 수 있다. 선택적으로, 적절한 매칭 블록들이 기준 이미지에서 식별되지 않는 임의의 블록들에 대하여 픽셀-기반의 정합이 사용될 수도 있다.
본 발명은 스틸 이미지들에 대한 이미지 정합 및 공유 기반으로 공통 블록 비교 엔진을 사용하는 비디오 시퀀스의 비디오 코딩을 지원하는 이미지 캡쳐 디바이스에 대한 효율적인 아키텍쳐를 설명한다. 이미지 정합 및 비디오 코딩을 위한 블록 비교 엔진을 공유함으로써, 이미징 디바이스에서 사이즈, 프로세싱 및 메모리 오버헤드를 감소시키는 것이 가능할 수 있다.
비디오 코딩을 위해서, 설명되는 아키텍쳐는 또한 예를 들어, 모션 추정 및 모션 보상에 대하여 지원하기 위해서 블록-기반의 비교들을 사용한다. 본 발명에 따르면, 전술된 바와 같이, 블록-기반의 비교들은 이미지 정합 아키텍쳐 및 비디오 코딩 아키텍쳐 모두의 공유된 부분을 형성하는 블록 비교 엔진을 통해 수행될 수 있다. 다시 말해서, 본 발명은 블록-기반의 이미지 정합 및 블록-기반의 비디오 코딩에서의 사용을 위한 공유된 블록 비교 엔진의 사용을 설명한다. 이러한 방식으로, 블록-기반의 비교들을 위해서 설계된 하드웨어 유닛은 스틸 이미지들에 대한 이미지 정합 프로세스 및 비디오 시퀀스를 코딩하기 위한 비디오 코딩 프로세스 모두에서 작동하도록 구현될 수 있다. 이미지 정합 프로세스는 비디오 시퀀스의 각각의 이미지 프레임이 다수의 짧은 노출 이미지들과 연관된 정합된 프레임인 비디오 캡쳐에 관련하여 사용될 수도 있다. 이러한 경우, 이미지 프레임들의 생성과 연관된 이미지 정합 및 시퀀스의 이러한 이미지 프레임들을 코딩하기 위한 비디오 코딩 프로세스는 동일한 블록 비교 엔진을 여전히 사용할 것이다.
도 1은 이미지 정합 유닛(16) 및 비디오 코더(18) 모두에 의해 사용되는 블록 비교 엔진(20)을 포함하는 예시적인 이미징 디바이스(2)를 예시하는 블록 다이어그램이다. 블록 비교 엔진(20)은 개별 컴포넌트로서 예시되지만, 블록 비교 엔진(20)은 실제로 이미지 정합 유닛(16) 및 비디오 코더(18) 모두의 일부분을 형성할 수 있다. 블록 비교 엔진(20)은 이미지 정합 동안 이미지 정합 유닛(16)에 의해 그리고 비디오 코딩 동안 비디오 코더(18)에 의해 인보크(invoke)되는 하드웨어 유닛을 포함할 수 있다. 대안적으로, 블록 비교 엔진(20)은 이미지 정합 유닛(16) 및 비디오 코더(18) 모두와 본질적으로 통합되는 하드웨어 유닛을 포함할 수 있고, 그 결과 그것은 이미지 정합 유닛(16) 및 비디오 코더(18) 모두의 일부분을 형성할 수 있다. 이미지 정합 유닛(16) 및 비디오 코더(18)는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에서 구현될 수 있다.
이미징 디바이스(2)는 하나 이상의 디지털 스틸 이미지 캡쳐 모드들 및 비디오 캡쳐 모드들을 지원하는 디지털 카메라를 포함할 수 있다. 이미징 디바이스(2)는 독립형 카메라와 같은 독립형 이미징 디바이스를 포함할 수 있고, 또는 통상적으로 셀룰러 무선전화로 지칭되는, 무선 핸드셋과 같은 다른 디바이스의 일부분을 형성할 수 있다. 예로서, 이미징 디바이스(2)는 소위 카메라 폰 또는 비디오 폰을 포함할 수 있다. 이러한 경우, 디바이스(2)는 무선 통신을 용이하게 하기 위한 수신기, 송신기, 모뎀 및 안테나와 같은 다수의 다른 컴포넌트들을 포함할 수 있다. 이러한 무선 통신 컴포넌트들은 예시의 간략함 및 용이함을 위해서 도시되지 않는다.
도 1에 도시되는 바와 같이, 이미징 디바이스(2)는 전용 버스(11)를 통해 이미지 프로세싱 유닛(12)에 연결된 카메라(10)를 포함할 수 있다. 이미지 디바이스(2)는 이미지 또는 프레임들이 카메라(10)에 의해 캡쳐됨에 따라 스틸 이미지들 및/또는 비디오 프레임들을 자동으로 프로세싱하는 "인라인(inline)" 아키텍쳐를 정의할 수 있다. 그러나, 본 발명의 기법들은 카메라(10) 및 프로세싱 유닛(12)을 요구하지 않는다. 이에 반해, 동일한 블록 비교 엔진을 사용하는, 여기에서 설명되는 비디오 코딩 및 이미지 정합 프로세스들은 다른 디바이스에 의해 이미 캡쳐된 데이터, 다른 디바이스로부터 전송된 데이터, 메모리(14)에 이미 저장되어 있는 데이터 등에 대하여 적용될 수도 있다.
카메라(10)는 이미지들의 쇼트 시퀀스가 여기에서 설명되는 바와 같이 각각의 이미지에 대하여 상대적으로 짧은 노출 시간들에 따라 캡쳐되고, 이후 정합된 스틸 이미지를 형성하기 위해서 결합되는 스틸 이미지 캡쳐를 지원할 수 있다. 카메라(10)는 프레임들의 시퀀스가 비디오 시퀀스를 형성하기 위해서 캡쳐 및 인코딩되는 비디오 캡쳐를 지원할 수도 있다. 이미지 정합 프로세스는 주로 이미지 캡쳐 모드의 일부분으로서 여기에서 설명되지만, 예를 들어, 비디오 시퀀스의 각각의 이미지 프레임이 둘 이상의 노출들에 기초하여 형성되는 자신의 정합된 프레임인 비디오 캡쳐 동안 사용될 수도 있다.
카메라(10)는 예를 들어, 행(row)들 및 열(column)들로 배열되는 개별 이미지 센서 엘리먼트들의 2-차원 어레이를 포함할 수 있다. 일부 양상들에서, 카메라(10)의 이미지 센서 엘리먼트들 각각은 단일 픽셀과 연관될 수 있다. 다시 말해서, 이미지 센서 엘리먼트들과 픽셀들 사이의 1-대-1 대응이 존재할 수 있다. 대안적으로, 각각의 이미지 센서 엘리먼트와 연관된 각각의 픽셀 또는 둘 이상 픽셀과 연관된 둘 이상의 이미지 센서 엘리먼트가 존재할 수 있다. 카메라(10)는 예를 들어, CMOS(complementary metal-oxide semiconductor) 센서들, CCD(charge coupled device) 센서들, 또는 디지털 카메라 애플리케이션들에서 사용되는 임의의 다른 센서 엘리먼트들과 같은 솔리드 스테이트(solid state) 센서들의 어레이를 포함할 수 있다. 또한, 카메라(10)는 카메라(10)가 캡쳐된 이미지들에 대한 이미지 정보를 즉시 저장하는 하나 이상의 이미지 버퍼들을 유지할 수 있다. 카메라(10)는 원한다면, 하나 이상의 렌즈, 셔터들, 이미지 장면을 조명하기 위한 플래시 디바이스 및 가능하게는 디스플레이를 포함할 수 있다. 도 1에 예시되는 아키텍쳐는 본 발명에서 설명되는 기법들이 다양한 다른 아키텍쳐들로 구현될 수 있는 바와 같이, 단지 예시일 뿐이다.
이미지를 캡쳐하기 위해서, 카메라(10)는 이미지 장면으로 그것의 센서 엘리먼트들을 노출시킨다. 카메라(10) 내의 이미지 센서 엘리먼트들은 예를 들어, 특정한 픽셀 위치에서 장면의 빛의 강도를 표현하는 강도 값들을 캡쳐할 수 있다. 일부 경우들에서, 카메라(10)의 이미지 센서 엘리먼트들 각각은 센서들을 커버하는 컬러 필터들로 인하여, 하나의 컬러 또는 컬러 띠(band)에만 민감할 수 있다. 예를 들어, 카메라(10)는 빨간색, 초록색 및 파란색 센서들을 정의하기 위해서 적절한 필터들을 가지는 센서들의 어레이를 포함할 수 있다. 그러나, 카메라(10)는 CMYK 컬러 필터들 또는 다른 타입들의 컬러 필터들과 같은 다른 타입들의 컬러 필터들을 이용할 수 있다. 카메라(10)의 이미지 센서들 각각은 단지 하나의 컬러에 대한 강도 값들을 캡쳐할 수 있다. 이미지 정보는 카메라(10)의 센서 엘리먼트들에 의해 캡쳐된 픽셀 강도 및/또는 컬러 값들을 포함할 수 있다.
이미지 프로세서 유닛(12)은 카메라(10)로부터 로(raw) 이미지 데이터를 수신하고, 이러한 데이터에 대하여 폭 넓고 다양한 이미지 프로세싱 기법들 중 임의의 기법을 수행할 수 있다. 이미지 프로세싱 유닛(12)은 이미징 "프론트 엔드(front end)"로 지칭될 수 있고, 스케일링(scaling), 화이트 밸런스(white balance), 컬러 밸런스, 크로핑(cropping), 신호 잡음 감소, 선명화(sharpening) 또는 임의의 다른 프론트 엔드 이미지 데이터 프로세싱과 같은 이러한 기능들을 수행할 수 있다. 캡쳐된 이미지 데이터는 메모리(14)에 저장된다. 이미지 프로세싱 유닛(12), 메모리(14), 이미지 정합 유닛(16) 및 비디오 코더(18)는 공유된 데이터 통신 버스(15)를 통해 서로 통신적으로 연결될 수 있다.
메모리(14)는 판독-전용 메모리(ROM), 랜덤 액세스 메모리(RAM)의 한 형태, 전기적으로 삭제가능한 프로그램가능한 판독-전용 메모리(EEPROM), FLASH 메모리, 또는 데이터 저장 드라이브 또는 유닛의 일부 타입과 같은 휘발성 또는 비-휘발성 메모리의 임의의 형태를 포함할 수 있다. 전형적으로, 메모리(14)는 디바이스(2)의 상이한 컴포넌트들 사이의 신속한 데이터 전달을 보장하기 위해서 RAM 또는 FLASH 메모리의 일부 타입으로서 구동될 수 있다.
이미지 정합 유닛(16)은 디바이스(2)의 스틸 이미지 캡쳐 모드 동안 사용될 수 있는 반면, 비디오 코더(18)는 비디오 캡쳐 모드 동안 사용될 수 있다. 이미지 정합 유닛(16)은 정합된 이미지를 형성하기 위해서 둘 이상의 이미지들을 결합시킬 수 있다. 이미지 캡쳐 모드 동안, 예를 들어, 긴 노출 이미지(예를 들어, 1초 이미지)를 캡쳐하기 보다는, 카메라(10)는 몇몇의 연속적인 짧은 노출 이미지들(예를 들어, 4개의 연속적인 0.25초 이미지들)을 캡쳐할 수 있다. 이미지 정합 유닛(16)은 4개의 연속적인 0.25초 이미지들을 정합된 이미지로 결합시킬 수 있다. 정합된 이미지는 1초 동안 노출된 이미지에 대한 향상된 이미지 품질을 가질 수 있다. 이러한 방식으로, 정합은 예를 들어, 지터를 감소시킴으로써, 스틸 이미지들의 품질을 향상시킬 수 있다.
비디오 코더(18)는 비디오 캡쳐 동안 사용될 수 있다. 비디오 코더(18)는 MPEG-2, MPEG-4, ITU-T H.261, H.263, 또는 H.264/MPEG-4, Part 10, AVC(Advanced Video Coding)과 같은 표준에 따라 비디오 압축을 수행할 수 있다. 이러한 방식으로, 비디오 코더(18)는 코딩된 비디오 시퀀스를 형성하기 위해서 비디오 프레임들의 시퀀스를 압축한다. 다시, 이미지 정합은 이미지 캡쳐 모드에 제한될 필요가 없으며, 비디오 시퀀스의 각각의 이미지 프레임이 둘 이상의 이미지 노출들에 기초하여 생성되는 정합된 프레임이 되도록 비디오 캡쳐 모드에서 사용될 수도 있다.
본 발명의 기법들에 따르면, 블록 비교 엔진(20)은 이미지 정합 유닛(16) 및 비디오 코더(18) 모두에 의해 사용된다. 다시, 블록 비교 엔진(20)은 개별 컴포넌트로서 예시되지만, 블록 비교 엔진(20)은 실제로 이미지 정합 유닛(16) 및 비디오 코더(18) 모두의 일부분을 형성할 수 있다. 대안적으로, 블록 비교 엔진(20)은 이미지 정합 동안 이미지 정합 유닛(16)에 의해 인보크되고, 비디오 코딩 동안 비디오 코더(18)에 의해 인보크되는 개별 컴포넌트로서 보여질 수 있다. 어느 쪽이든, 이미지 정합 유닛(16) 및 비디오 코더(18) 모두는 블록 비교 엔진(20)을 사용한다. 이러한 방식으로, 블록 비교 엔진(20)의 중복은 디바이스(2)의 아키텍쳐를 보다 효율적으로 만들기 위해서 이미징 디바이스(2)에서 회피될 수 있다. 예를 들어, 공유된 블록 비교 엔진(20)은 개별 블록 비교 엔진들이 사용되었을 경우에 필요할 것보다 더 적은 칩셋 영역(더 적은 실리콘)을 가지는 집적 회로를 산출할 수 있다. 메모리 요건들은 소프트-전용 솔루션에 대하여 블록 비교 엔진(20)을 구현함으로써 감소될 수도 있다. 또한, 프로세싱 속도는 다른 아키텍쳐들 또는 소프트웨어-전용 솔루션들에 대하여 향상될 수 있다.
이미지 정합(16)은 블록-기반의 이미지 정합을 수행할 수 있다. 이러한 경우, 이미지는 (본 발명에서 "블록들"로 지칭되는) 픽셀들의 블록들로 분할된다. 블록들은 이미지 정보의 인접 부분들을 표현하고, "윈도우들"로 또는 다른 용어에 의해 지칭될 수 있다. 일부 경우들에서 이미지 정합에 대하여 정의된 블록들은 H.264 비디오 코딩 표준에서 정의되는 소위 "매크로블록들", "파티션들" 또는 "서브-파티션들"과 유사할 수 있다. 블록들은 16x16 픽셀들, 8x8 픽셀들, 4x8 픽셀들, 8x4 픽셀들, 4x4 픽셀들 또는 임의의 다른 사이즈와 같은 임의의 사이즈를 가진다. 비디오 코딩 컨텍스트들에서, 블록들은 매크로블록들, 파티션들 또는 서브-파티션들로 지칭될 수 있지만, 이미지 정합에서, 블록들은 윈도우들로 또는 다른 용어에 의해 지칭될 수 있다. 블록들은 이산 코사인 변환(DCT) 도메인과 같은 변환 도메인에서 또는 픽셀 도메인에서 이미지 데이터의 세트들을 포함할 수 있다. 예를 들어, 블록들은 사각형 또는 정사각형을 형성하는 변환 계수 값들 또는 픽셀 값들을 포함할 수 있다. 블록들은 접합해제, 접합(넌-오버래핑) 또는 오버래핑될 수 있다.
이미지 정합 모듈(16)은 제 1 이미지(현재 이미지)의 블록들이 제 2 이미지(기준 이미지)의 블록들과 비교되는 블록-기반의 이미지 정합 프로세스를 수행한다. 제 1 및 제 2 이미지들은 상기에서 설명된 바와 같이, 짧은 노출 시간들에 따른 연속적인 이미지들을 포함할 수 있다. 둘 이상의 이미지들이 정합 프로세스에서 결합되는 경우, 제 2 이미지 자신은 2개의 노출들의 정합된 버전일 수 있고, 제 1 이미지는 첫 번째 2개의 노출들의 정합된 결합과 결합될 제 3 노출일 수 있다. 이러한 비교 프로세스의 가속화하기 위해서, 이미지 정합 모듈(16)은 블록 비교 엔진(20)을 사용한다. 블록 비교 엔진(20)은 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교한다. 이미지 정합 유닛(16)은 제 2 이미지의 매칭 블록들과 제 1 이미지의 블록들을 식별, 매칭 및 결합시킨다. 이미지 정합 유닛(16)은 블록-단위 방식으로 메모리(14)에서 정합된 이미지를 어셈블링하기 위해서 메모리(14)로 정합된 블록들을 포워딩한다.
제 2 이미지의 블록들과 제 1 이미지의 블록들의 결합에서, 이미지 정합 유닛(16)은 시간상으로 이전 이미지의 픽셀들의 픽셀 값들과 가장 최근에 캡쳐된 이미지의 픽셀들의 픽셀 값들 예를 들어, 강도 및/컬러 값들을 평균화할 수 있다. 이미지 정합 유닛(16)은 제 1 및 제 2 이미지들의 직접적(straight) 평균, 제 1 및 제 2 이미지들의 가중된 평균, 제 1 및 제 2 이미지들의 합계 또는 이미지 정합을 위한 둘 이상의 이미지들의 이미지 정보를 결합시키기 위한 임의의 다른 기법들을 사용할 수 있다. 이미지 정합 유닛(16)은 메모리(14)에서 가장 최근에 캡쳐된 이미지의 픽셀 위치에서 평균화된 픽셀 값들을 저장할 수 있다. 이러한 방식으로, 이미지 정합 유닛(16)은 이미지 정합 동안 캡쳐된 이미지들 중 하나의 이미지의 픽셀들의 픽셀 값들을 평균화된 픽셀 값들로 대체할 수 있다. 평균화된 이미지 정보(즉, 픽셀 값들)는 전형적으로 정합되지 않은 이미지 정보보다 더 적은 블러링을 나타내고, 이에 따라 특히, 전술된 흔들림 또는 움직임이 발생한 경우에 향상된 이미지 품질을 제공한다. 평균화된 이미지 데이터는 정합된 이미지로 하여금 제 1 및 제 2 이미지보다 더 적은 블러링 및 가능하게는 더 적은 잡음을 나타내게 할 수도 있다.
본 발명에 따르면, 이미지 정합은 블록-단위 기반으로 발생할 수 있다. 그러나, 일부 경우들에서, 적절한 매칭 블록들이 블록들의 일부에 대하여 식별되지 않는 경우, 픽셀-단위의 비교들은 이러한 블록들에 대하여 이러한 블록들에 대하여 이미지 정합 유닛(16)에 의해 수행될 수 있다. 이미지 정합은 장면의 다수의 짧은 노출들을 결합시키고, 잡음 감소, 신호 증가 및 이미지 선명도 향상을 위하여 이러한 다수의 노출들을 함께 머지(merge)하기 위해서 사용될 수 있다. 조명 차(lighting difference)들 및 원근 시프트(perspective shift)들(회전들, 이전(translation)들)과 같은 문제들은 이러한 타입의 프로세싱을 위한 과제들이다. 이미지 정합 프로세스의 추가적인 세부사항들은 아래에서 제공된다.
비디오 코더(18)는 MPEG-2, MPEG-4, ITU-T H.261, H.263, 또는 H.264/MPEG-4, Part 10, AVC(Advanced Video Coding) 표준들에 의해 정의되는 것들과 같은 블록-기반의 비디오 압축 기법들을 구현한다. 특히, 비디오 코더(18)는 카메라(10)에 의해 캡쳐된 그리고 이미지 프로세싱 유닛(12)에 의해 프로세싱된 비디오 프레임들의 시퀀스들에서 고유한 리던던시를 감소시키거나 제거하기 위해서 공간 및 시간 예측을 수행할 수 있다. 공간 예측은 카메라(10)에 의해 캡쳐된 주어진 비디오 프레임 내에서 이웃하는 비디오 블록들 사이의 리던던시를 감소시킨다. 모션 추정 및 보상으로도 알려져 있는 시간 예측은 비디오 시퀀스의 과거의 그리고/또는 미래의 비디오 프레임들에서 비디오 블록들 사이의 시간적 리던던시를 감소시킨다.
시간 예측을 위해서, 비디오 코더(18)는 둘 이상의 인접 프레임들 사이의 매칭 비디오 블록들의 움직임을 트래킹하기 위해서 모션 추정을 수행한다. 비디오 코더(18)는 검색 공간의 하나 이상의 기준 프레임들에서 대응하는 예측 비디오 블록들에 대한 비디오 블록들의 배치를 표시하기 위해서 모션 벡터들을 정의할 수 있다. 모션 보상은 기준 프레임으로부터 예측 비디오 블록들을 식별하기 위해서 모션 벡터들을 사용한다. 잔여 비디오 블록은 차감 동작들을 통해 예를 들어, 코딩될 원래의 비디오 블록으로부터 예측 비디오 블록을 차감함으로써, 형성된다. 잔여 비디오 블록은 모션 벡터와 함께 비디오 디코더로 전송될 수 있다.
공간 및 시간 예측에 필요한 블록-기반의 비교들을 수행하기 위해서, 비디오 코더(18)는 이미지 정합에서 블록-기반의 비교들을 위해서 이미지 정합 유닛(16)에 의해 사용되는 동일한 블록 비교 엔진(20)을 사용한다. 그러나, (이미지 정합 유닛(16)에 의해 수행되는 바와 같이) 데이터의 블록들을 결합시키기 보다는, 비디오 코더(18)는 잔여 블록들을 형성하기 위해서 블록들을 서로 차감한다. 이미지 정합을 위해서 사전 형성된 블록-기반의 비교 동작들이 비디오 코딩을 위해서 수행되는 블록-기반의 비교 동작들과 유사하므로, 동일한 블록 비교 엔진(20)은 이미지 정합 유닛(16) 및 비디오 코더(18) 모두에 의해 사용될 수 있다. 다시, 공유된 블록 비교 엔진(20)은 개별 블록 비교 엔진들이 사용되었을 경우에 필요할 것보다 더 적은 칩 영역(더 적은 실리콘)을 가지는 집적 회로 디바이스를 산출할 수 있다. 메모리 요건들은 소프트웨어-전용 솔루션에 대하여 블록 비교 엔진(20)을 구현함으로써 감소될 수도 있다. 또한, 프로세싱 속도는 다른 아키텍쳐들 또는 소프트웨어-전용 솔루션들에 대하여 향상될 수 있다.
아래의 논의에서, 비디오 코더(18)는 시간 예측 예를 들어, 모션 추정 및 모션 보상을 수행하는 것으로 주로 설명된다. 그럼에도 불구하고, 비디오 코더(18)는 공간 예측을 수행할 수도 있고, 이러한 공간 예측을 위한 블록 비교 엔진(20)을 구현할 수 있다. 그러나, 이러한 경우, 주어진 비디오 프레임의 블록들은 데이터를 공간적으로 압축하기 위해서 사용될 수 있는 유사성을 정의하기 위해서 동일한 비디오 프레임의 다른 블록들과 비교된다.
블록 비교 엔진(20)은 하드웨어 유닛을 포함할 수 있다. 이미지 정합 유닛(16) 및 비디오 코더(18)는 하드웨어, 소프트웨어, 펌웨어로 또는 하드웨어, 소프트웨어 또는 펌웨어의 폭 넓고 다양한 조합들 중 임의의 것으로 구현될 수 있다. 이미지 정합 유닛(16) 및 비디오 코더(18)는 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 주문형 집적 회로(ASIC)들, 필드 프로그램가능한 게이트 어레이(FPGA)들, 또는 임의의 다른 등가의 이산 또는 집적 로직 회로, 또는 이들의 조합에 의해 구현될 수 있다. 일부 실시예들에서, 비디오 코더(18)는 인코딩 및 디코딩 기능을 지원하는 인코더-디코더(CODEC)를 포함할 수 있다.
도 2는 본 발명의 기법들에 따른 메모리(14)에 연결된 예시적인 이미지 정합 유닛(16)의 블록 다이어그램이다. 도 2에 예시된 컴포넌트들은 도 1에 도시되는 이미지 정합 유닛(16) 및 메모리(14)의 일 예이다. 도 2에 도시되는 바와 같이, 메모리(14)는 (도 1의 유닛(12)과 같은) 이미지 프로세싱 유닛으로부터 이미지 데이터를 수신한다. 도 2 및 도 3에서, 동일한 블록 비교 엔진(20)이 예시된다. 점선들은 블록 비교 엔진(20)이 이미지 정합 유닛(16)의 일부분을 형성하지만(도 2), 비디오 코더(18)의 일부분을 형성한다는(도 3) 개념을 예시하기 위해서 블록 비교 엔진(20)을 둘러싼다. 전술된 바와 같이, 블록 비교 엔진(20)은 이미지 정합 유닛(16)에 의해 그리고 비디오 코더(18)에 의해 인보크되는 엔진으로서 보여질 수 있거나, 이미지 정합 유닛(16) 및 비디오 코더(18)의 일부분으로서 통합되는 하드웨어 유닛으로 보여질 수 있다.
입력은 블록-단위 방식으로 핑퐁 입력 버퍼들(22)에서 메모리에 수신될 수 있다. 핑퐁 입력 버퍼들(22)은 소위 "핑퐁" 버퍼 배열을 포함할 수 있다. 이러한 경우, 데이터는 필요되는 한 버퍼(22)에만 저장되고, 이러한 데이터가 이미지 정합 유닛(16)에서 프로세싱되면 오버라이트(overwirte)된다. 예를 들어, 제 1 이미지 블록은 핑퐁 입력 버퍼들(22)에서 저장될 수 있고, 프로세싱을 위한 이미지 정합 유닛(16)으로 포워딩될 수 있다. 이러한 점에서, 데이터의 제 2 블록은 이미지 프로세싱 유닛(12)으로부터 핑퐁 입력 버퍼들(22) 내에 수신될 수 있다. 데이터의 제 1 블록이 이미지 정합 유닛(16)에 의해 프로세싱되면, 데이터의 제 2 블록은 이미지 정합 유닛(16)으로 포워딩될 수 있다. 이러한 점에서, 데이터의 제 3 블록은 핑퐁 입력 버퍼들(22)에서 수신될 수 있다. 또한, 데이터의 이러한 제 3 블록은 핑퐁 입력 버퍼들(22)에 데이터의 제 1 블록을 오버라이트할 수 있다. 이것은 데이터가 이미지 정합 유닛(16)에 의해 프로세싱되었다면 데이터가 메모리(14)에 저장될 필요가 없도록, 메모리(14)의 효율적인 사용을 달성한다. 데이터는 데이터 통신 버스(15)를 통해 메모리(14) 및 이미지 정합 유닛(16) 사이에 전달될 수 있다.
핑퐁 입력 버퍼들(22)은 임의의 개수의 블록들에 대한 저장 공간을 포함할 수 있지만, 이러한 블록들이 프로세싱되었다면 데이터 블록들의 오버라이트들을 지원할 수 있다. 추후 설명으로서, 핑퐁 입력 버퍼들(22)은 둘 이상의 병렬 버퍼들을 포함할 수 있다. 하나의 버퍼에 기록할 시에, 데이터는 다른 버퍼로부터 판독될 수 있고, 그 반대로 수행될 수도 있다. 따라서, 핑퐁 버퍼들(22)은 실질적으로 판독 및 기록 동작들이 둘 이상의 병렬 버퍼들 사이에서 교번하여 핑퐁되도록 다른 버퍼로부터 판독되는 동안 하나의 버퍼의 동시적인 오버라이팅을 지원할 수 있다.
이미지 정합 유닛(16)은 블록-단위 방식으로 이미지 정합 프로세스를 수행한다. 특히, 이미지 정합 유닛(16)은 핑퐁 입력 버퍼(22)로부터 제 1 이미지의 데이터의 블록을 수신하고, 제 2 이미지(예를 들어, 기준 이미지(24))와 연관된 블록들의 세트를 수신한다. 기준 이미지(24)는 (스틸 이미지 캡쳐와 연관된 짧은 시간 시퀀스에서의 이전의) 사전 캡쳐된 이미지일 수 있거나, 둘 이상의 사전 캡쳐된 이미지들과 연관된 합성 정합된 이미지를 포함할 수 있다.
이미지 정합 유닛(16)은 제 2 이미지의 하나 이상의 블록들과 제 1 이미지의 블록을 비교하기 위해서 블록 비교 엔진(20)을 인보크한다. 블록 비교 엔진(20)은 제 2 이미지의 상이한 블록들의 픽셀들과 제 1 이미지의 블록의 픽셀들을 비교하고, 제 1 이미지의 블록과 제 2 이미지의 상이한 블록들 사이의 매칭의 레벨을 표시하는 매칭 값들을 생성한다. 블록 비교 엔진(20)은 매칭 값들을 생성하기 위해서 SAD(Sum of Absolute Difference) 기법들, SSD(Sum of Squared Difference) 기법들 또는 임의의 다른 적합한 비교 기법들을 구현할 수 있다. 블록 매치 유닛(27)은 블록 비교 엔진(20)으로부터 매칭 값들을 수신하고, 적절한 매치가 식별되었는지의 여부를 결정하기 위해서 하나 이상의 임계치들과 이러한 값들을 비교한다.
SAD 기법들은 제 2 (기준) 이미지의 블록의 픽셀 값들로써, 제 1 이미지의 블록들의 값들 사이의 절대 차이 계산들을 수행하는 태스크들을 포함한다. 이러한 절대적인 차이 계산들의 결과는 블록들 사이의 차를 표시하는 값을 정의하기 위해서 합산 즉, 축적된다. 예들로서, 8x8 픽셀 블록에 대하여, 64개 차들이 계산 및 합산될 수 있고, 16x16 픽셀 블록에 대하여, 256개의 차들이 계산 및 합산될 수 있다. 보다 낮은 차이 값들은 일반적으로 다른 블록에 비교되는 블록이 보다 양호한 매치이라는 것을 표시한다.
또한, SSD 기법은 제 2(기준) 이미지의 블록의 픽셀 값들로써, 제 1 이미지의 블록의 픽셀 값들 사이의 차이 계산들을 수행하는 태스크를 포함한다. SSD 기법에서, 절대 차이 계산들의 결과들은 제곱되고, 이후 제곱된 값들은 블록들 사이의 차이를 표시하는 차이 값을 정의하기 위해서 합산 즉, 축적된다. 대안적으로, 블록 비교 엔진(20)은 MSE(Mean Square Error), NCCF(Normalized Cross Correlation Function) 또는 다른 적합한 비교 기법과 같은 다른 비교 기법들을 구현할 수 있다.
적절한 매치가 블록 매치 유닛(27)에 의해 식별되는 경우, 블록 결합기(28)는 예를 들어, 블록들에서의 대응하는 픽셀들의 값들을 평균화 또는 결합시킴으로써, 정합된 블록을 생성하기 위해서 제 2 이미지의 매칭 블록과 제 1 이미지의 블록을 결합시킨다. 이후, 정합된 블록은 이미지 정합 유닛의 블록 결합기(28)로부터 메모리(14)로 전송되는데, 여기서 정합된 블록은 정합된 이미지(26)의 일부분을 어셈블링하기 위해서 사용된다. 전술된 바와 같이, 블록들을 결합시키기 위해서, 블록 결합기(28)는 합산 동작들, 평균 동작들, 가중된 평균 동작들 또는 매칭 블록들 내에서 대응하는 픽셀 값들을 결합시키기 위해서 이미지 정합 프로세스들에서 통상적으로 사용되는 임의의 동작들을 수행할 수 있다.
한편, 적절한 매치는 블록 매치 유닛(27)에 의해 식별되지 않는 경우, 일부 상이한 가능성들 중 하나가 발생할 수 있다. 일 예에서, 적절한 매치가 블록 매치 유닛(27)에 의해 식별되지 않는 경우, 블록 결합기(28)는 임의의 결합을 회피할 수 있고, 정합된 이미지(26)를 어셈블링하는데 사용하기 위한 제 1 이미지의 블록을 메모리(14)로 직접 포워딩할 수 있다. 이러한 경우, 정합된 이미지의 상기 주어진 블록은 제 2 이미지의 블록과의 어떤 결합 없이도, 제 1 이미지의 블록과 연관된 데이터를 단순히 포함할 수 있다. 일부 경우들에서, 블록 결합기(28)가 임의의 이유로 인하여 결합을 회피하는 경우, 블록 결합기(28)는 제 1 및 제 2 이미지의 블록들 사이에서 선택하고, 선택된 블록을 포워딩할 수 있다. 이러한 경우, 블록들 예를 들어, 결합이 회피되는 경우 최소 잡음이 포워딩될 수 있음을 나타내는 블록의 알려져 있거나 측정된 속성들에 기초하여 선택이 이루어질 수 있다.
대안적으로, 적절한 매치가 블록 매치 유닛(27)에 의해 식별되지 않는 경우, 블록 결합기(28)는 제 1 이미지의 블록 및 (비록 블록 결합에 충분히 양호하지 않더라도) 최상의 매치를 픽셀 결합기(29)로 포워딩할 수 있다. 이러한 경우, 픽셀 결합기(29)는 블록 비교 엔진(20) 및 블록 매치 유닛(27)에 의해 식별되는 최적의 매칭 블록의 픽셀들에 대하여 제 1 이미지의 블록의 픽셀-기반의 비교들을 수행할 수 있다. 픽셀 결합기(29)는 제 2 이미지의 최적의 매칭 블록의 픽셀들과 제 1 이미지의 블록의 매칭 픽셀들을 충분히 결합시킬 수 있다. 그러나, 적절한 매칭을 가지지 않는 임의의 픽셀들은 결합되지 않은 것으로 남을 수 있다. 하나 이상의 결합된 픽셀들을 가지는 정합된 블록을 생성한 이후, 픽셀 결합기(29)는 정합된 블록을 메모리로 포워딩할 수 있고, 여기서 정합된 블록은 정합된 이미지(26)를 어셈블링하는데 사용하기 위해서 저장된다. 픽셀 결합기(29)는 선택적이고, 일부 실시예들에서 제거될 수 있다.
일부 경우들에서, 정합된 이미지(26)가 충분히 어셈블리되면, 정합된 이미지(26)는 기준 이미지(24)로서 사용된다. 이것은 특히, 3개 이상의 이미지들이 이미지 정합 프로세스에서 결합되는 경우에 유용하다. 이러한 경우, 첫 번째 2개의 이미지들은 정합된 이미지(26)를 생성하기 위해서 블록-단위 방식으로 결합되고, 정합된 이미지(26)는 이후 기준 이미지(24)가 된다. 이후, 제 3 이미지는 새로운 정합된 이미지(26)를 생성하기 위해서 기준 이미지(24)와 비교 및 결합되고, 이때 새로운 정합된 이미지(26)는 3개의 이미지들의 결합이다. 이러한 프로세스는 정합된 이미지로 결합될 임의의 개수의 이미지들에 대하여 계속될 수 있다. 임의의 이미지는 예를 들어, 정합 프로세스가 이미 이용가능하고 실시간으로 캡쳐되지 않는 사전-캡쳐된 이미지들 또는 데이터에 대하여, 오프라인에서 수행되는 경우, 임의의 이미지는 제 1 기준 이미지로 취급될 수 있다.
전술된 바와 같이, 블록 비교 엔진(20)은 이미지 정합에 대한 블록-기반의 비교들을 위해서 사용될 뿐만 아니라, 비디오 코딩에 대한 블록-기반의 비교들을 위해서도 사용된다. 도 3은 본 발명의 기법들에 따른 메모리(14)에 연결된 예시적인 비디오 코더(18)의 블록 다이어그램이다. 도 3에 예시되는 컴포넌트들은 도 1에 도시되는 비디오 코더(18) 및 메모리(14)의 일 예이다. 도 3에 도시되는 바와 같이, 메모리(14)는 (도 1의 유닛(12)과 같은) 이미지 프로세싱 유닛으로부터 데이터를 수신한다. 이러한 데이터는 비디오 시퀀스를 형성하는 이미지 프레임들의 시퀀스이다.
입력은 입력 버퍼들(32)에서 메모리에 수신될 수 있다. 입력 버퍼들(32)은 핑퐁 입력 버퍼들(22)과 유사할 수 있고, 예를 들어, 전술된 바와 같이, 소위 "핑퐁" 버퍼 배열을 포함할 수 있다. 그러나, 입력 버퍼들(32)은 버퍼 배열들의 다수의 다른 타입들에 따라 배열될 수 있다.
비디오 코딩을 위해서, 메모리(14)는 입력 버퍼들(32)에 제 1 이미지 프레임의 블록들을 저장하고, 검색 공간(34)을 저장한다. 검색 공간(34)은 비디오 시퀀스의 사전 코딩된 이미지 프레임 (또는 가능하게는 양방향 예측을 위한 후속하는 프레임)에 대응하는 픽셀들의 집합(collection) (또는 픽셀들의 블록들)을 포함할 수 있다. 검색 공간은 그 전체에서 이전의 또는 후속적인 프레임 또는 원한다면, 프레임의 서브세트를 포함할 수 있다. 검색 공간은 사각형일 수 있거나, 폭 넓고 다양한 형상들 및 사이즈들 중 임의의 것을 가정할 수 있다.
비디오 코더(18)는 입력 버퍼들(32)로부터 코딩될 이미지 프레임의 블록을 수신하고, 검색 공간(34)을 수신한다. 데이터는 데이터 통신 버스(15)를 통해 메모리(14)로부터 비디오 코더(18)로 전달될 수 있다. 비디오 코더(16)는 모션 추정(ME) 유닛(42), 모션 보상(MC) 유닛(44) 및 차이 유닛(46)을 포함한다. 도 3의 예에서, 블록 비교 엔진(20)은 비디오 코더(18)의 일부분을 형성하고, ME 유닛(42)에 의해 인보크되는 비교 엔진으로서 보여질 수 있거나, ME 유닛(42)의 통합된 부분으로서 보여질 수 있다. 비디오 코더(18)는 모션 기반의 시간적 코딩을 위한 ME 유닛(42) 및 MC 유닛(44)dmf 포함하는 것으로 예시되지만, 공간 예측 코딩을 위한 컴포넌트들을 포함할 수도 있고, 이러한 컴포넌트들은 동일한 블록 비교 엔진(20)을 사용할 수도 있다. 공간 예측 컴포넌트들은 예시의 간략함 및 용이함을 위해서 도 3에 도시되지 않는다.
ME 유닛(42) 및 MC 유닛(44)을 통한 인터-코딩(inter-coding)은 비디오 시퀀스의 연속적인 이미지 프레임들의 블록들 사이의 시간적 리던던시를 감소 또는 제거하기 위해서 시간 예측에 의존한다. 인터-코딩을 위해서, ME 유닛(42)은 둘 이상의 인접 프레임들 사이에서의 매칭 블록들의 움직임을 트래킹한다. 모션 추정은 모션 벡터들을 생성하고, 모션 벡터들은 하나 이상의 기준 프레임들에서 대응하는 예측 블록들에 대하여 블록들의 배치를 표시한다. MC 유닛(44)은 기준 프레임으로부터 예측 블록을 생성하기 위해서 모션 벡터를 사용한다. 모션 보상 이후, 차이 유닛(46)은 코딩될 원래의 블록으로부터 예측 블록을 차감함으로써 잔여 블록을 생성한다. 잔여 블록을 생성하기 위해서 사용되는 잔여 블록 및 모션 벡터는 비디오 코더(16)로부터 메모리(14)로 전달될 수 있고, 여기서 이러한 데이터는 비디오 시퀀스의 인코딩된 프레임의 잔여 데이터(36)로서 저장 및 어셈블링된다.
다시, 본 발명에 따르면, 이미지 정합 유닛(16)에 의해 사용되는 동일한 블록 비교 엔진(20)은 또한 블록 비교들을 용이하게 하기 위해서 비디오 코더(18)에 의해 사용된다. 그러나, 비디오 코딩에서, 블록 비교들은 이미지 정합 보다는 비디오 시퀀스의 블록-기반의 코딩을 용이하게 한다. 블록 비교 엔진(20)은 전술된 바와 같은 SAD 기법들, SSD 기법들 또는 임의의 적합한 블록 비교 기법들을 구현할 수 있다.
원한다면, 비디오 코더(18)는 잔여 블록과 연관된 비트 레이트를 추후에 감소시키기 위해서 변환, 양자화 및 엔트로피 코딩 프로세스들을 적용시킬 수 있다. 변환 기법들은 이산 코사인 변환(DCT)을 포함할 수 있다. 양자화는 압축을 향상시키기 위해서 분해능의 감소된 레벨에 대한 양자화 계수들을 포함할 수 있다. 엔트로피 코딩은 다양한 길이 코딩, 바이너리 산술 코딩(CABAC), 허프만 코딩, 런-렝스(run-length) 코딩, 코딩된 블록 패턴(CBP) 코딩 등을 포함할 수 있다. 이러한 추가적인 컴포넌트들은 예시의 간략함 및 용이함을 위해서 도 3에 도시되지 않는다. 이러한 또는 다른 코딩 방법들은 특히, 데이터가 디바이스들 사이에서 송신될 경우, 잔여 데이터의 데이터 압축을 보조할 수 있다.
도 4는 본 발명에 따라 이미지 정합 및 비디오 코딩을 수행하는 이미지 디바이스(2)의 예시적인 동작을 예시하는 흐름 다이어그램이다. 전술된 바와 같이, 본 발명의 기법들은 임의의 이미지 캡쳐를 요구하지 않지만, 다른 디바이스에 의해 이미 캡쳐된 데이터, 다른 디바이스로부터 전송된 데이터, 메모리에 이미 저장된 데이터 등에 대하여 적용될 수 있다. 그럼에도 불구하고, 이미지 캡쳐 단계들을 나타내는 도 4는 이러한 맥락으로 여기에서 설명되는 기법들을 예시한다. 도 4에 도시되는 바와 같이, 이미징 디바이스(2)는 비디오 모드 또는 스틸 이미지 캡쳐 모드에서 동작한다(400). 이미징 디바이스(2)가 비디오 모드(400의 비디오 브랜치)인 경우, 이미징 디바이스(2)의 카메라(10)는 비디오 시퀀스를 캡쳐한다(401). 이미징 디바이스(2)의 비디오 코더(18)는 캡쳐된 비디오 시퀀스에 대하여 블록-기반의 비디오 코딩을 수행하기 위해서 블록 비교 엔진(20)을 사용한다(402).
대안적으로, 이미징 디바이스(2)가 스틸 이미지 캡쳐 모드(400의 스틸 이미지 브랜치)인 경우, 이미징 디바이스(2)는 스틸 이미지들을 캡쳐한다(403). 이러한 경우, 이미징 디바이스(2)의 이미지 정합 유닛(16)은 이미지 정합을 위한 블록 비교 엔진(20)을 사용한다(404). 이러한 방식으로, 블록 비교 엔진(20)은 이미지 정합 프로세스 및 비디오 코딩 프로세스를 가속화하여, 듀얼 기능을 수행한다. 이미지 정합 프로세스는 주로 스틸 이미지들에 적용가능한 것으로 설명되지만, 이미지 정합 프로세스는 예를 들어, 비디오 인코딩 전에, 비디오 시퀀스의 이미지 프레임들을 정합하기 위해서 사용될 수도 있다.
요컨대, 디바이스(2)는 비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하고, 여기서 비디오 코딩 프로세스를 수행하는 것은 블록 비교(20) 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩될 이미지 프레임의 비디오 블록들을 비교하는 것을 포함한다. 또한, 디바이스(2)는 이미지 정합 프로세스를 수행하고, 여기서 이미지 정합 프로세스를 수행하는 것은 블록 비교 엔진(20)을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 것을 포함한다. 기법들은 이미지들 및 비디오를 캡쳐하는 디바이스들에, 또는 단순히 이미지들 및 비디오를 저장하는 디바이스들에 적용될 수 있다.
여기에서 설명되는 바와 같이, 비디오 코딩 프로세스는 블록 비교 엔진(20)을 사용하는 모션 추정, 모션 보상 및 코딩되는 이미지 프레임의 비디오 블록들과 검색 공간의 매칭 비디오 블록들 사이의 차이 계산들을 포함한다. 차이 계산들은 차감 동작들을 포함한다. 이미지 정합 프로세스는 제 1 및 제 2 이미지들의 블록들을 비교하기 위해서 블록 비교 엔진(20)을 사용하는 것, 및 정합된 이미지의 블록들을 생성하기 위해서 제 1 및 제 2 이미지들의 매칭 블록들을 결합시키는 것을 포함한다. 매칭 블록들의 결합은 합산 동작들 및 평균 동작들 중 적어도 하나를 포함할 수 있다.
블록 비교 엔진(20)과 연관된 감소된 칩 영역 및 감소된 레이턴시는 비디오 코딩 및 이미지 정합을 위한 블록 비교 엔진(20)을 공유함으로써 달성될 수 있는 2개의 이점들이다. 이미지 정합을 위한 공유된 엔진을 구현함으로써, 이미지 정합을 위한 집적 회로에서의 추가적인 전용 칩 공간에 대한 필요성이 회피될 수 있다. 또한, 비디오 코딩 및 이미지 정합을 위한 하드웨어-기반의 블록 비교 엔진(20)을 구현함으로써, 프로세싱은 비디오 코딩 및 이미지 정합을 위한 소프트웨어-전용 솔루션과 비교되어 가속화될 수 있다.
도 5는 본 발명에 따른 예시적인 이미지 정합 프로세스를 예시한다. 도 5에 도시되는 바와 같이, 메모리(14)는 ("제 2 이미지로 지칭될 수 있는) 기준 이미지를 저장한다. 이미지(14)는 핑퐁 버퍼 배열에 따라 정합될 제 1 이미지의 블록들을 수신 및 프로세싱하고(402), 이는 핑퐁 입력 버퍼들(22)을 통해 구현될 수 있다. 이러한 경우, 핑퐁 입력 버퍼들(22)은 제 1 이미지의 주어진 블록이 정합된 이미지의 주어진 블록을 생성하기 위해서 제 2 이미지의 주어진 블록과 결합되는 경우 제 1 이미지의 주어진 블록이 버퍼 배열에서 오버라이트되도록, 버퍼 배열에서 제 1 의 이미지의 블록들을 버퍼링하고, 제 1 이미지의 주어진 블록은 버퍼 배열에서 오버라이트된다. 추후의 설명으로서, 핑퐁 버퍼 배열은 통상적으로 둘 이상의 병령 버퍼들을 가진다. 하나의 버퍼에 기록하는 경우, 데이터는 다른 버퍼로부터 판독될 수 있고, 그 반대로 수행될 수도 있다.
이미지 정합 유닛(16)은 기준 이미지(24)로서 저장된 제 2 이미지의 블록들에 대하여 입력 버퍼들(22)에서 제 1 이미지의 블록들의 이미지 정합을 위한 블록 비교 엔진(20)을 사용한다(503). 블록 매치 유닛(27)은 임의의 기준 블록들이 임계치보다 더 큰 제 1 이미지의 블록들을 가지는 매칭의 레벨을 가지는지의 여부를 결정한다(504). 블록 매치 유닛(27)이 제 1 이미지의 하나 이상의 "제 1" 블록들에 대한 임계치보다 더 큰 매칭의 레벨을 식별하는 경우(504의 예 브랜치), 블록 결합기(28)는 정합된 블록들을 생성하기 위해서 제 1 이미지의 각각의 블록들과 하나 이상의 제 1 블록들을 결합시킨다(505).
블록 매치 유닛(27)이 제 1 이미지의 하나 이상의 "제 2" 블록들에 대한 임계치보다 더 큰 매칭의 레벨을 식별하지 않는 경우(504의 아니오 브랜치), 블록 결합기(28)는 정합된 블록들을 생성하기 위해서 제 1 이미지의 블록들과 하나 이상의 제 2 블록들을 결합시키지 않는다(506). 대신에, 블록 결합기는 픽셀 결합기(29)로 이러한 제 2 블록들을 포워딩한다. 픽셀 결합기(29)는 제 1 이미지의 제 2 블록들의 개별 픽셀들에 대하여 픽셀-기반의 비교들 및 결합들을 수행한다(507). 이러한 픽셀-기반의 결합들의 더 많은 세부사항들은 아래에서 논의된다. 대안적으로, 매칭 블록들이 식별되지 않는 "제 2" 블록들은 기준 이미지의 블록들과의 임의의 결합 없이 정합된 이미지에 저장될 수 있다.
정합된 이미지(26)는 메모리(14)에서 어셈블링된다(508). 특히, 이미지 정합 유닛(18)은 정합된 이미지(26)를 어셈블링하기 위해서 블록-단위 방식으로 메모리(14)에 정합된 블록들을 기록한다. 이러한 정합된 이미지(26)는 블록 결합기(28)로부터 완전히 정합된 블록들 및 픽셀 결합기(29)로부터 하나 이상의 정합된 픽셀들 및 하나 이상의 비-정합된 픽셀들을 가지는 블록들을 포함할 수 있다. 정합된 이미지(26)는 최종 정합된 이미지로서 저장될 수 있거나, 추가적인 이미지들이 다중-이미지 정합을 위해서 결합될 경우 기준 이미지(24)로서 사용될 수 있다.
본 발명에 따르면, 이미지 정합 프로세스를 수행하는 것은 블록-단위 방식으로 제 1 이미지의 블록들을 수신하는 것, 정합된 이미지의 정합된 블록들을 생성하기 위해서 제 2 이미지의 블록들과 제 1 이미지의 블록들을 결합시키는 것, 정합된 이미지의 주어진 블록을 생성하기 위해서 제 1 이미지의 주어진 블록이 제 2 이미지의 주어진 블록과 결합되는 경우, 제 1 이미지의 주어진 블록이 버퍼 배열에서 오버라이트되도록 버퍼 배열에서 제 1 이미지의 블록들을 버퍼링하는 것, 및 정합된 이미지를 생성하기 위해서 정합된 블록들을 어셈블링하는 것을 포함할 수 있다.
일부 경우들에서, 충분한 매칭 블록이 주어진 블록에 대하여 식별되지 않는 경우, 주어진 블록은 기준 이미지(24)의 기준 블록들과의 임의의 결합 없이 정합된 블록으로 저장될 수 있다. 다른 경우들에서, 이미지 정합 프로세스는 매칭의 임계 레벨이 식별되는 경우 정합된 이미지의 정합된 블록들을 생성하기 위해서 제 2 이미지의 블록들과 제 1 이미지의 제 1 블록들을 결합시키는 것, 매칭의 임계 레벨이 식별되지 않는 경우 제 2 이미지의 블록들과 제 1 이미지의 제 2 블록들을 결합시키지 않는 것, 및 제 1 이미지의 제 2 블록들에 대하여, 제 2 이미지의 픽셀들에 대하여 픽셀 기반의 비교들을 수행하는 것, 및 정합된 픽셀들을 생성하기 위해서 제 2 이미지의 픽셀들과 제 1 이미지의 제 2 블록들의 하나 이상의 픽셀들을 결합시키는 것을 포함할 수 있다.
이미지 정합 프로세스는 둘 이상의 이미지들에 대한 결합된 이미지에서 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함할 수 있다. 이것은 핸드-지터 감소를 달성하기 위해서 즉, 이미지 캡쳐 동안 이미지 캡쳐 디바이스의 모션에 의해 야기되는 지터를 감소시키기 위해서 사용될 수 있다. 대안적으로, 본 발명에서 설명되는 바와 같은 이미지 정합은 소위 높은-동적 레인지 프로세싱을 실시하기 위해서 사용될 수 있다. 높은-동적 레인지 프로세싱에서, 장면의 다수의 영상들은 상이한 노출들을 사용하여 캡쳐된다. 영상들의 일부는 음영 영역(shadow detail)들을 캡쳐하기 위해서 과도하게 노출되고, 영상들의 일부는 하이라이트들을 유지하기 위해서 부족하게 노출되는 반면, 일부는 장면에서의 중간-톤에 대하여 노출된다.
여기에서 설명되는 바와 같이, 이미지 정합 유닛(20)에서 유연성을 가짐으로써, 다수의 노출들은 인-라인 아키텍쳐를 사용하여 실시간으로 높은-동적 레인지 이미지로 결합될 수 있다. 다른 예에서, 이미지 정합 프로세스는 이미지들의 시퀀스를 하나의 영상으로 퓨징시키기 위해서 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함할 수 있다. 이러한 경우, 이미지 정합은 걷거나 뛰는 누군가의 전진과 같은 모션을 캡쳐하는 하나의 영상을 형성하기 위해서 함께 이미지들의 시퀀스를 퓨징시키도록 수행될 수 있다.
여기에서 설명되는 바와 같이, 이미지 정합은 둘 이상의 이미지들이 함께 결합(예를 들어, 추가 또는 평균화)되는 프로시저이다. 이미지들에서 대응하는 물체들 및 특징들을 정렬하기 위해서 (필요한 경우) 둘 이상의 이미지들은 수평 및 수직 픽셀 시프트들을 가질 수 있다. 픽셀 시프트들은 (전체 이미지를 통하여 일정한) 위치 독립적 또는 (이미지들을 통하여 일정하지 않은) 위치 의존적일 수 있다. 블록-기반의 정합은 제 1 이미지를 블록들(예를 들어, 8 픽셀들, 16 픽셀들 또는 32 픽셀들의 블록들)로 분할하고, 모든 블록에 대하여, 정합된 블록에 가장 근접한 제 2 이미지(기준 이미지)로부터 블록에 대한 검색을 형성한다. 예를 들어, 이미지 정합 유닛(18)에 의해 수행되는 이미지 정합 프로세스는 다음과 같이 표현될 수 있고,
Figure 112010059385825-pct00001
여기서, V 및 H는 합을 최소화하는 v 및 h의 값들을 나타내고,
S1은 제 1 이미지로부터의 블록을 나타내고,
S2는 제 2 이미지로부터의 블록을 나타내고,
i 및 j는 블록 공간 상에 걸쳐 있고,
h 및 v는 2개의 블록들 사이의 가정된 수평 및 수직 오프셋들이고,
M은 매크로블록 지원 공간(예를 들어, 8X8, 16X16 등)을 나타내고,
연산(
Figure 112010059385825-pct00002
)은 2개의 벡터들 사이의 거리를 측정하는 일반적인 방식을 나타내고,
min은 최소화 연산을 나타내고,
Figure 112010059385825-pct00003
은 합 연산을 나타낸다.
대안적으로, 제곱된 거리 계산은 블록 유사성을 정의하기 위해서 사용될 수 있다. 제곱된 거리가 블록 유사성을 정의하기 위해서 사용되는 경우, 예를 들어, 이미지 정합 유닛(18)에 의해 수행되는 이미지 정합 프로세스는 다음과 같이 표현된다.
Figure 112010059385825-pct00004
블록 오프셋들이 추정되면, 이미지 정합 유닛(18)은 픽셀 오프셋을 생성하기 위해서 블록 오프셋들을 사용하고, 블록-단위 방식으로 2개의 이미지들을 결합시킬 수 있다. 이러한 타입의 블록-기반 구현을 위해서, 블록 내의 픽셀 오프셋은 일정한 것으로 가정될 수 있고, 동일한 블록 오프셋은 주어진 블록에서 모든 픽셀들에 대하여 사용된다.
그러나, (예를 들어, 제 2 이미지로부터의 블록들이 블록 매칭을 제거하는 일부 방식으로 회전 또는 이동될 수 있으므로) 제 1 이미지로부터의 특정 블록과 제 2(기준) 이미지의 블록 사이의 완전한 매치가 존재하지 않을 가능성으로 인하여, 단순한 시프트와 이러한 블록들을 결합시키는 것이 가능하지 않을 수 있다. (장면들에서 움직이는 물체가 존재하는 경우에 발생할 수 있는) 문제를 해결하기 위한 하나의 방식은 충분히 근접한 매치가 발견되지 않는 경우 이미지 정합을 위한 블록들을 결합시키지 않는 것이다. 또한, 상기 최소화 결과가 근접한 매치인지의 여부를 검증하기 위한 하나의 방식은 최종 이미지에서 블록들이 결합될 것인지 또는 단지 제 1 블록만 사용될 것인지를 결정하기 위해서 사전 결정된 임계치를 설정하는 것이다. 이러한 프로세스는 다음과 같이 표현될 수 있고,
Figure 112010059385825-pct00005
여기서, T는 사전 결정된 임계치를 나타낸다. 따라서, 상기 합이 임계치 T보다 더 적은 경우, 2개의 블록들은 이미지 정합 유닛(18)에 의해 결합될 것이고, 상기 합이 임계치 T와 동일하거나 더 큰 경우, 2개의 이미지 블록들은 이미지 정합 유닛(18)에 의해 결합되지 않을 것이다.
임계치에 기초하여 블록들을 결합시킬지의 여부에 대한 결정은 추가적으로 (회전 또는 레인지를 벗어난 움직임으로 인하여) 적절한 매치를 가지지 않는 블록들을 선발(singling out)하는 것 그리고 이러한 블록들을 상이하게 취급하는 것을 포함할 수 있다. 그러나, 결정은 전체 블록 차이에 기초하여 이미지 정합 유닛(18)에 의해 이루어지므로, 누적된 (또는 평균) 차이가 상대적으로 블록의 일부 픽셀들에 대하여 작고, 블록의 다른 픽셀들에 대하여 큰 것이 가능하다. 이러한 경우, 측정된 픽셀 차이들에 기초하여 픽셀들을 결합시키기 위해서 (또는 픽셀들을 결합시키지 않기 위해서) 픽셀 레벨 결정이 수행될 수 있다. 이것은 도 2에 도시되는 바와 같이, 선택적인 픽셀 결합기(28)의 기능일 수 있다.
적절한 블록 매치들을 가지지 않는 블록들에 대한 픽셀-기반 비교들을 지원하는 구현들에서, 픽셀들 RGB 벡터들 사이의 차이는 다음에 따라 사용될 수 있고,
Figure 112010059385825-pct00006
여기서, R1, G1 및 B1은 제 1 이미지의 블록들로부터의 픽셀들에 대한 적색, 녹색 및 청색 컴포넌트들이고, 이미지 R2, G2 및 B2는 제 2(기준) 이미지의 블록들로부터의 픽셀들에 대한 적색, 녹색 및 청색 컴포넌트들이다. M은 결합이 발생하는 아래의 픽셀-기반 임계치를 나타낼 수 있다. 따라서, 상기 계산이 M보다 더 적은 경우, 픽셀 결합기(28)는 상기 주어진 픽셀에 대하여 픽셀-기반의 결합을 수행하고, 상기 계산이 M보다 크거나 동일한 경우, 픽셀 결합기(28)는 상기 주어진 픽셀에 대한 결합을 회피할 수 있다.
여기에서 설명된 기법들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 모듈들 또는 컴포넌트들로 설명되는 임의의 특징들은 집적 로직 디바이스에서 함께 또는 이산적이지만 상호동작가능한 로직 디바이스들과 개별적으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기법들은 실행 시에, 전술된 방법들 중 하나 이상을 수행하고, 그것을 수행하기 위해서 블록 비교 엔진을 구현하는 명령들을 포함하는 컴퓨터-판독가능 매체에 의해 적어도 부분적으로 구현될 수 있다. 컴퓨터-판독가능 매체는 패키지물들을 포함할 수 있는 컴퓨터 프로그램 물건의 일부분을 형성할 수 있다. 컴퓨터-판독가능 매체는 동기식 동적 랜덤 액세스 메모리(SDRAM), 판독-전용 메모리(ROM), 비-휘발성 랜덤 액세스 메모리(NVRAM), 전기적 삭제가능한 프로그램가능한 판독-전용 메모리(EEPROM), FLASH 메모리, 자기적 또는 광학적 데이터 저장 매체 등과 같은 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 추가적으로 또는 대안적으로, 기법들은 명령들 또는 데이터 구조들의 형태로 코드를 반송(carry) 또는 전달하는 그리고 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 구현될 수 있다.
코드는 하나 이상의 DSP들, 범용 마이크로프로세서들, ASIC들, 필드 프로그램가능한 로직 어레이들, FPGA들, 또는 다른 등가의 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수 있다. 따라서, 여기에서 사용되는 용어 "프로세서"는 상기 구조 또는 여기에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수 있다. 또한, 일부 양상들에서, 여기에서 설명되는 기능은 인코딩 및 디코딩하도록 구성되는 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에 제공되거나, 결합된 비디오 인코더-디코더(CODEC)에 포함될 수 있다. 따라서, 본 발명은 또한 본 발명에서 설명된 기법들 중 하나 이상을 구현하기 위해서 회로를 포함하는 다양한 집적 회로 디바이스들 중 임의의 것을 참작한다. 이러한 회로는 단일 집적 회로 칩에서 또는 다수의 상호동작가능한 집적 회로 칩들에서 제공될 수 있다.
다양한 기법들이 설명되었다. 이러한 그리고 다른 예시적인 양상들은 다음의 청구항들의 범위 내에 있다.

Claims (35)

  1. 비디오 코딩(video coding) 및 이미지 정합(image registration)을 수행하기 위한 방법으로서,
    비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스(402)를 수행하는 단계 ― 상기 비디오 코딩 프로세스를 수행하는 단계는 블록 비교 엔진(20)을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 단계를 포함하고, 상기 비디오 코딩 프로세스는 상기 블록 비교 엔진을 사용하는 모션 추정, 모션 보상 및 코딩되는 상기 이미지 프레임의 비디오 블록들과 상기 검색 공간의 매칭 비디오 블록들 사이의 차이(difference) 계산들을 포함함 ―; 및
    하나 이상의 스틸 이미지들에 대하여 이미지 정합 프로세스(404)를 수행하는 단계 ― 상기 이미지 정합 프로세스를 수행하는 단계는 상기 블록 비교 엔진(20)을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 단계를 포함하고, 상기 이미지 정합 프로세스는 상기 블록 비교 엔진을 사용하여 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 블록들을 비교한 이후, 정합된 이미지의 블록들을 생성하기 위해서 상기 제 1 및 제 2 이미지들의 매칭 블록들을 결합시키는 것을 포함함 ― 를 포함하고,
    상기 블록 비교 엔진(20)은 상기 비디오 코딩 프로세스(402) 및 상기 이미지 정합 프로세스(404) 모두를 위해서 공유 및 사용되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 차이 계산들은 차감 동작들을 포함하고,
    상기 매칭 블록들을 결합시키는 것은 합산 동작들을 적용시키는 것 및 평균 동작들을 적용시키는 것 중 적어도 하나를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 단계는,
    블록-단위(block-by-block) 방식으로 상기 제 1 이미지의 블록들을 수신하는 단계;
    정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 블록들을 결합시키는 단계;
    상기 정합된 이미지의 주어진 블록을 생성하기 위해서 상기 제 1 이미지의 주어진 블록이 상기 제 2 이미지의 주어진 블록과 결합되는 경우 상기 제 1 이미지의 주어진 블록이 버퍼 배열(buffer arrangement)에서 오버라이트(overwrite)되도록, 상기 버퍼 배열에서 상기 제 1 이미지의 블록들을 버퍼링하는 단계; 및
    상기 정합된 이미지를 생성하기 위해서 상기 정합된 블록들을 어셈블링하는 단계를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 단계는,
    매칭의 임계 레벨이 식별되는 경우 정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 1 블록들을 결합시키는 단계;
    상기 매칭의 임계 레벨이 식별되지 않는 경우 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 2 블록들을 결합시키지 않는 단계; 및
    상기 제 1 이미지의 제 2 블록들에 대하여, 상기 제 2 이미지의 픽셀들에 관하여 픽셀 기반의 비교들을 수행하고, 정합된 픽셀들을 생성하기 위해서 상기 제 2 이미지의 픽셀들과 상기 제 1 이미지의 제 2 블록들의 하나 이상의 픽셀들을 결합시키는 단계를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 단계는 둘 이상의 이미지들에 관하여 결합된 이미지에서 지터(jitter)를 감소시키기 위해서 상기 둘 이상의 이미지들의 블록들을 결합시키는 단계를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 단계는 이미지들의 시퀀스를 하나의 영상으로 퓨징(fuse)시키기 위해서 둘 이상의 이미지들의 블록들을 결합시키는 단계를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 단계는 상기 제 1 및 제 2 이미지들의 블록들을 결합시키는 단계를 포함하고,
    상기 제 1 및 제 2 이미지들은 상이한 노출(exposure)들을 사용하여 캡쳐되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 방법.
  8. 비디오 코딩 및 이미지 정합을 수행하기 위한 장치로서,
    블록 비교 엔진(20);
    비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하는 비디오 코더(18) ― 상기 비디오 코딩 프로세스는 상기 블록 비교 엔진을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 것을 포함하고, 상기 비디오 코더(18)는 상기 블록 비교 엔진(20)을 사용하는 모션 추정 유닛(42), 모션 보상 유닛(44) 및 코딩되는 상기 이미지 프레임의 비디오 블록들과 상기 검색 공간의 매칭 비디오 블록들 사이의 차이 계산들을 수행하는 차이 계산 유닛(46)을 포함함 ― ; 및
    하나 이상의 스틸 이미지들에 대하여 이미지 정합 프로세스를 수행하는 이미지 정합 유닛(16) ― 상기 이미지 정합 프로세스는 상기 블록 비교 엔진(20)을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 것을 포함하고, 상기 이미지 정합 유닛(16)은 상기 제 1 및 제 2 이미지들의 블록들을 비교함으로써 상기 이미지 정합 프로세스를 수행하기 위한 상기 블록 비교 엔진(20), 매칭 블록들을 식별하기 위한 블록 매치 유닛(27) 및 정합된 이미지의 블록들을 생성하기 위해서 상기 제 1 및 제 2 이미지들의 매칭 블록들의 결합을 수행하는 결합 유닛(28)을 포함함 ― 을 포함하고,
    상기 블록 비교 엔진(20)은 상기 비디오 코더(18) 및 상기 이미지 정합 유닛(16) 모두에 의해 공유되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  9. 제 8 항에 있어서,
    상기 차이 계산들은 차감 동작들을 포함하고,
    상기 매칭 블록들의 결합은 합산 동작들 및 평균 동작들 중 적어도 하나를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  10. 제 8 항에 있어서,
    상기 장치는 버퍼 배열을 포함하는 메모리를 포함하고,
    상기 이미지 정합 프로세스에 대하여,
    상기 메모리는 블록-단위 방식으로 상기 제 1 이미지의 블록들을 수신하고;
    상기 이미지 정합 유닛은 정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 블록들을 결합시키고;
    상기 메모리는 상기 제 1 이미지의 주어진 블록이 상기 정합된 이미지의 주어진 블록을 생성하기 위해서 상기 제 2 이미지의 주어진 블록과 결합되는 경우 상기 제 1 이미지의 주어진 블록이 상기 버퍼 배열에서 오버라이트되도록, 상기 버퍼 배열에서 상기 제 1 이미지의 블록들을 버퍼링하고; 그리고
    상기 이미지 정합 유닛은 상기 정합된 이미지를 어셈블링하기 위해서 상기 정합된 블록들을 상기 메모리로 전송하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  11. 제 8 항에 있어서,
    상기 이미지 정합 유닛은,
    매칭의 임계 레벨이 상기 제 2 이미지의 하나 이상의 블록들에 관하여 상기 제 1 이미지의 하나 이상의 블록들 사이에 존재하는지의 여부를 결정하는 블록 매칭 유닛;
    상기 매칭의 임계 레벨이 식별되는 경우, 정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 1 블록들을 결합시키고, 상기 매칭의 임계 레벨이 식별되지 않는 경우, 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 2 블록들을 결합시키지 않는 블록 결합기; 및
    상기 제 1 이미지의 제 2 블록들에 대하여, 상기 제 2 이미지의 픽셀들에 관하여 상기 제 1 이미지의 제 2 블록들의 픽셀들의 픽셀 기반의 비교들을 수행하고, 정합된 픽셀들을 생성하기 위해서 상기 제 2 이미지의 픽셀들과 상기 제 1 이미지의 제 2 블록들의 하나 이상의 픽셀들을 결합시키는 픽셀 결합기를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  12. 제 8 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 둘 이상의 이미지들에 관하여 결합된 이미지에서 지터를 감소시키기 위해서 상기 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  13. 제 8 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 이미지들의 시퀀스를 하나의 영상으로 퓨징시키기 위해서 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  14. 제 8 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 상기 제 1 및 제 2 이미지들의 블록들을 결합시키는 것을 포함하고,
    상기 제 1 및 제 2 이미지들은 상이한 노출들을 사용하여 캡쳐되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  15. 제 8 항에 있어서,
    상기 장치는 이미징 디바이스를 포함하는 무선 핸드셋을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  16. 제 8 항에 있어서,
    상기 장치는 집적 회로를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  17. 제 8 항에 있어서,
    상기 장치는 이미징 디바이스를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 장치.
  18. 비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체로서, 상기 컴퓨터-판독가능 매체는 명령들을 포함하며,
    상기 명령들은, 블록 비교 엔진(20)을 포함하는 이미징 디바이스의 프로세서에서 실행 시에, 상기 프로세서로 하여금,
    비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스(402)를 수행하게 하고 ― 상기 비디오 코딩 프로세스는 상기 블록 비교 엔진(20)을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하는 것을 포함하고, 상기 비디오 코딩 프로세스는 상기 블록 비교 엔진을 사용하는 모션 추정, 모션 보상 및 코딩되는 상기 이미지 프레임의 비디오 블록들과 상기 검색 공간의 매칭 비디오 블록들 사이의 차이 계산들을 포함함 ― ; 그리고
    하나 이상의 스틸 이미지들에 대하여 이미지 정합 프로세스(404)를 수행하게 하고 ― 블록-기반의 이미지 정합 프로세스는 상기 블록 비교 엔진(20)을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하는 것을 포함하고, 상기 이미지 정합 프로세스는 상기 블록 비교 엔진을 사용하여 상기 제 1 및 제 2 이미지들의 블록들을 비교한 이후, 정합된 이미지의 블록들을 생성하기 위해서 상기 제 1 및 제 2 이미지들의 매칭 블록들을 결합시키는 것을 포함함 ― ,
    상기 명령들은 실행시에, 상기 프로세서로 하여금 상기 비디오 코딩 프로세스(402) 및 상기 이미지 정합 프로세스(404) 모두를 위해서 상기 블록 비교 엔진(20)을 공유하게 하고 상기 블록 비교 엔진(20)을 사용하게 하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  19. 제 18 항에 있어서,
    상기 차이 계산들은 차감 동작들을 포함하고,
    상기 매칭 블록들을 결합시키는 것은 합산 동작들을 적용시키는 것 및 평균 동작들을 적용시키는 것 중 적어도 하나를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  20. 제 18 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은,
    블록-단위 방식으로 상기 제 1 이미지의 블록들을 수신하는 것;
    정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 블록들을 결합시키는 것;
    상기 정합된 이미지의 주어진 블록을 생성하기 위해서 상기 제 1 이미지의 주어진 블록이 상기 제 2 이미지의 주어진 블록과 결합되는 경우 상기 제 1 이미지의 주어진 블록이 버퍼 배열에서 오버라이트되도록, 상기 버퍼 배열에서 상기 제 1 이미지의 블록들을 버퍼링하는 것; 및
    상기 정합된 이미지를 생성하기 위해서 상기 정합된 블록들을 어셈블링하는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  21. 제 18 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은,
    매칭의 임계 레벨이 식별되는 경우 정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 1 블록들을 결합시키는 것;
    상기 매칭의 임계 레벨이 식별되지 않는 경우 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 2 블록들을 결합시키지 않는 것; 및
    상기 제 1 이미지의 제 2 블록들에 대하여, 상기 제 2 이미지의 픽셀들에 관하여 픽셀 기반의 비교들을 수행하고, 정합된 픽셀들을 생성하기 위해서 상기 제 2 이미지의 픽셀들과 상기 제 1 이미지의 제 2 블록들의 하나 이상의 픽셀들을 결합시키는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  22. 제 18 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 둘 이상의 이미지들에 관하여 결합된 이미지에서 지터를 감소시키기 위해서 상기 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  23. 제 18 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 이미지들의 시퀀스를 하나의 영상으로 퓨징시키기 위해서 둘 이상의 이미지들의 블록들을 결합시키는 것을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  24. 제 18 항에 있어서,
    상기 이미지 정합 프로세스를 수행하는 것은 상기 제 1 및 제 2 이미지들의 블록들을 결합시키는 것을 포함하고,
    상기 제 1 및 제 2 이미지들은 상이한 노출들을 사용하여 캡쳐되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 컴퓨터-판독가능 매체.
  25. 비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스로서,
    비디오 시퀀스의 이미지 프레임들에 대하여 비디오 코딩 프로세스를 수행하기 위한 수단(18) ― 상기 비디오 코딩 프로세스를 수행하기 위한 수단(18)은 블록 비교 엔진(20)을 사용하여 검색 공간의 비디오 블록들과 코딩되는 이미지 프레임의 비디오 블록들을 비교하기 위한 수단을 포함하고, 상기 비디오 코딩 프로세스를 수행하기 위한 수단(18)은 상기 블록 비교 엔진(20)을 사용하여 모션 추정을 수행하기 위한 수단(42), 모션 보상을 수행하기 위한 수단(44) 및 코딩되는 상기 이미지 프레임의 비디오 블록들과 상기 검색 공간의 매칭 비디오 블록들 사이의 차이 계산들을 수행하기 위한 수단(46)을 포함함 ― ; 및
    하나 이상의 스틸 이미지들에 대하여 이미지 정합 프로세스를 수행하기 위한 수단(16) ― 상기 이미지 정합 프로세스를 수행하기 위한 수단은 상기 블록 비교 엔진(20)을 사용하여 제 2 이미지의 블록들과 제 1 이미지의 블록들을 비교하기 위한 수단을 포함하고, 상기 이미지 정합 프로세스를 수행하기 위한 수단(16)은 정합된 이미지의 블록들을 생성하기 위해서 상기 제 1 및 제 2 이미지들의 매칭 블록들의 결합을 수행하기 위한 수단(28)을 포함함 ― 을 포함하고,
    상기 비디오 코딩 프로세스를 수행하기 위한 수단(18) 및 상기 이미지 정합 프로세스를 수행하기 위한 수단(16)은 상기 비디오 코딩 프로세스 및 상기 이미지 정합 프로세스 모두를 위해서 상기 블록 비교 엔진(20)을 공유하고 상기 블록 비교 엔진(20)을 사용하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  26. 제 25 항에 있어서,
    상기 차이 계산들을 수행하기 위한 수단은 차감 동작들을 수행하기 위한 수단을 포함하고,
    상기 매칭 블록들의 결합을 수행하기 위한 수단은 합산 동작들을 수행하기 위한 수단 및 평균 동작들을 수행하기 위한 수단 중 적어도 하나를 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  27. 제 25 항에 있어서,
    상기 이미지 정합 프로세스를 수행하기 위한 수단은,
    블록-단위 방식으로 상기 제 1 이미지의 블록들을 수신하기 위한 수단;
    정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 블록들을 결합시키기 위한 수단;
    상기 정합된 이미지의 주어진 블록을 생성하기 위해서 상기 제 1 이미지의 주어진 블록이 상기 제 2 이미지의 주어진 블록과 결합되는 경우 상기 제 1 이미지의 주어진 블록이 버퍼 배열에서 오버라이트되도록, 상기 버퍼 배열에서 상기 제 1 이미지의 블록들을 버퍼링하기 위한 수단; 및
    상기 정합된 이미지를 생성하기 위해서 상기 정합된 블록들을 어셈블링하기 위한 수단을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  28. 제 25 항에 있어서,
    상기 이미지 정합 프로세스를 수행하기 위한 수단은,
    매칭의 임계 레벨이 식별되는 경우 정합된 이미지의 정합된 블록들을 생성하기 위해서 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 1 블록들을 결합시키기 위한 수단;
    상기 매칭의 임계 레벨이 식별되지 않는 경우 상기 제 2 이미지의 블록들과 상기 제 1 이미지의 제 2 블록들을 결합시키지 않게 하기 위한 수단; 및
    상기 제 1 이미지의 제 2 블록들에 대하여, 상기 제 2 이미지의 픽셀들에 관하여 픽셀 기반의 비교들을 수행하기 위한 수단 및 정합된 픽셀들을 생성하기 위해서 상기 제 2 이미지의 픽셀들과 상기 제 1 이미지의 제 2 블록들의 하나 이상의 픽셀들을 결합시키기 위한 수단을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  29. 제 25 항에 있어서,
    상기 이미지 정합 프로세스를 수행하기 위한 수단은 둘 이상의 이미지들에 관하여 결합된 이미지에서 지터를 감소시키기 위해서 상기 둘 이상의 이미지들의 블록들을 결합시키기 위한 수단을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  30. 제 25 항에 있어서,
    상기 이미지 정합 프로세스를 수행하기 위한 수단은 이미지들의 시퀀스를 하나의 영상으로 퓨징시키기 위해서 둘 이상의 이미지들의 블록들을 결합시키기 위한 수단을 포함하는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  31. 제 25 항에 있어서,
    상기 이미지 정합 프로세스를 수행하기 위한 수단은 상기 제 1 및 제 2 이미지들의 블록들을 결합시키기 위한 수단을 포함하고,
    상기 제 1 및 제 2 이미지들은 상이한 노출들을 사용하여 캡쳐되는,
    비디오 코딩 및 이미지 정합을 수행하기 위한 디바이스.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020107020476A 2008-02-13 2009-02-12 이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐 KR101215045B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/030,820 2008-02-13
US12/030,820 US8098957B2 (en) 2008-02-13 2008-02-13 Shared block comparison architechture for image registration and video coding

Publications (2)

Publication Number Publication Date
KR20100116211A KR20100116211A (ko) 2010-10-29
KR101215045B1 true KR101215045B1 (ko) 2012-12-24

Family

ID=40342340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107020476A KR101215045B1 (ko) 2008-02-13 2009-02-12 이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐

Country Status (8)

Country Link
US (1) US8098957B2 (ko)
EP (1) EP2091255B1 (ko)
JP (2) JP2011512111A (ko)
KR (1) KR101215045B1 (ko)
CN (1) CN101911701B (ko)
AT (1) ATE531201T1 (ko)
TW (1) TW200948086A (ko)
WO (1) WO2009102897A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7978925B1 (en) 2005-04-16 2011-07-12 Apple Inc. Smoothing and/or locking operations in video editing
US7912337B2 (en) 2005-11-02 2011-03-22 Apple Inc. Spatial and temporal alignment of video sequences
KR101520068B1 (ko) * 2008-12-16 2015-05-13 삼성전자 주식회사 다중영상 합성장치 및 그 방법
EP2302845B1 (en) 2009-09-23 2012-06-20 Google, Inc. Method and device for determining a jitter buffer level
US9406155B2 (en) * 2009-09-25 2016-08-02 Arm Limited Graphics processing systems
GB0916924D0 (en) 2009-09-25 2009-11-11 Advanced Risc Mach Ltd Graphics processing systems
US9349156B2 (en) 2009-09-25 2016-05-24 Arm Limited Adaptive frame buffer compression
US8478076B2 (en) 2010-07-05 2013-07-02 Apple Inc. Alignment of digital images and local motion detection for high dynamic range (HDR) imaging
US8760537B2 (en) 2010-07-05 2014-06-24 Apple Inc. Capturing and rendering high dynamic range images
TWI418220B (zh) * 2010-08-12 2013-12-01 Via Telecom Co Ltd 結合軟硬體實現之視訊處理系統,方法及其電腦程式產品
US9479712B2 (en) 2010-09-28 2016-10-25 Hewlett-Packard Development Company, L.P. Image blending based on image reference information
HUE061239T2 (hu) * 2011-01-07 2023-06-28 Ntt Docomo Inc Prediktív kódolási eljárás, prediktív kódoló eszköz, prediktív kódoló program mozgásvektorhoz, valamint prediktív dekódolási eljárás, prediktív dekódoló eszköz, prediktív dekódoló program mozgásvektorhoz
US8520080B2 (en) * 2011-01-31 2013-08-27 Hand Held Products, Inc. Apparatus, system, and method of use of imaging assembly on mobile terminal
US8838680B1 (en) 2011-02-08 2014-09-16 Google Inc. Buffer objects for web-based configurable pipeline media processing
GB201105716D0 (en) 2011-04-04 2011-05-18 Advanced Risc Mach Ltd Method of and apparatus for displaying windows on a display
WO2012164881A1 (ja) * 2011-05-27 2012-12-06 パナソニック株式会社 画像処理装置および画像処理方法
US20130107064A1 (en) * 2011-10-27 2013-05-02 Qualcomm Incorporated Sensor aided image stabilization
CN102609915B (zh) * 2012-01-19 2015-03-04 西南科技大学 一种基于远场光斑的光栅自动拼接算法
US8639894B2 (en) * 2012-01-27 2014-01-28 Comcast Cable Communications, Llc Efficient read and write operations
DE102012101242A1 (de) * 2012-02-16 2013-08-22 Hseb Dresden Gmbh Inspektionsverfahren
US8928680B1 (en) 2012-07-10 2015-01-06 Google Inc. Method and system for sharing a buffer between a graphics processing unit and a media encoder
US9182934B2 (en) 2013-09-20 2015-11-10 Arm Limited Method and apparatus for generating an output surface from one or more input surfaces in data processing systems
US9195426B2 (en) 2013-09-20 2015-11-24 Arm Limited Method and apparatus for generating an output surface from one or more input surfaces in data processing systems
US9830567B2 (en) 2013-10-25 2017-11-28 Location Labs, Inc. Task management system and method
GB2524467B (en) 2014-02-07 2020-05-27 Advanced Risc Mach Ltd Method of and apparatus for generating an overdrive frame for a display
GB2528265B (en) 2014-07-15 2021-03-10 Advanced Risc Mach Ltd Method of and apparatus for generating an output frame
GB2540562B (en) 2015-07-21 2019-09-04 Advanced Risc Mach Ltd Method of and apparatus for generating a signature representative of the content of an array of data
JP6780271B2 (ja) * 2016-03-23 2020-11-04 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
TWI553592B (zh) * 2016-03-29 2016-10-11 Next Animation Studio Ltd The method of tracking objects in the video
CN107392846B (zh) * 2017-07-31 2020-10-30 四川长虹电器股份有限公司 行车记录仪图像拼接方法
EP3902240B1 (en) 2020-04-22 2022-03-30 Axis AB Method, device, camera and software for performing electronic image stabilization of a high dynamic range image
WO2022241729A1 (zh) * 2021-05-20 2022-11-24 深圳市大疆创新科技有限公司 一种图像处理方法、装置、可移动平台及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100639164B1 (ko) 2005-03-12 2006-10-26 전재춘 영상 장치의 흔들림에 의한 영상 블러링 제거 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0154921B1 (ko) * 1994-12-30 1998-11-16 배순훈 동영상 부호화 장치에 이용하기 위한 움직임 추정기
JPH09261530A (ja) * 1996-03-19 1997-10-03 Toshiba Corp 映像記録装置
US5652625A (en) * 1996-06-19 1997-07-29 United Microelectronics Corp. Multi-stage pipeline architecture for motion estimation block matching
US6075905A (en) * 1996-07-17 2000-06-13 Sarnoff Corporation Method and apparatus for mosaic image construction
US6130911A (en) * 1997-11-21 2000-10-10 Sharp Laboratories Of America, Inc. Method and apparatus for compressing reference frames in an interframe video codec
US6430317B1 (en) * 1997-12-31 2002-08-06 Sarnoff Corporation Method and apparatus for estimating motion using block features obtained from an M-ary pyramid
US6285711B1 (en) * 1998-05-20 2001-09-04 Sharp Laboratories Of America, Inc. Block matching-based method for estimating motion fields and global affine motion parameters in digital video sequences
US6501799B1 (en) * 1998-08-04 2002-12-31 Lsi Logic Corporation Dual-prime motion estimation engine
US6411652B1 (en) * 1998-10-23 2002-06-25 International Business Machines Corp. Motion estimation
US7837624B1 (en) * 1998-11-20 2010-11-23 Siemens Medical Solutions Usa, Inc. Medical diagnostic ultrasound imaging methods for extended field of view
JP4284570B2 (ja) * 1999-05-31 2009-06-24 ソニー株式会社 撮像装置及びその方法
US6496538B1 (en) * 1999-12-31 2002-12-17 Intel Corporation Method and apparatus for motion estimation for digital video encoding
US7039246B2 (en) * 2002-05-03 2006-05-02 Qualcomm Incorporated Video encoding techniques
US7362918B2 (en) * 2003-06-24 2008-04-22 Microsoft Corporation System and method for de-noising multiple copies of a signal
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
JP2006157568A (ja) * 2004-11-30 2006-06-15 Konica Minolta Holdings Inc 撮像装置およびプログラム
JP5011504B2 (ja) * 2005-07-22 2012-08-29 カシオ計算機株式会社 画像合成装置、画像合成方法及びプログラム
JP4529840B2 (ja) * 2005-08-15 2010-08-25 カシオ計算機株式会社 撮像装置、画像処理方法及びプログラム
US7639897B2 (en) * 2006-01-24 2009-12-29 Hewlett-Packard Development Company, L.P. Method and apparatus for composing a panoramic photograph
US7746934B2 (en) * 2006-04-19 2010-06-29 Nethra Imaging Inc. Image stabilization method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100639164B1 (ko) 2005-03-12 2006-10-26 전재춘 영상 장치의 흔들림에 의한 영상 블러링 제거 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김성득, ‘저해상도 동영상에서의 자동화된 입력영상 선별을 이용한 고해상도 영상 복원 방법’, 전자공학회 논문지 제43권 SP편제2호, P120-126 (2006.03. 공개)*

Also Published As

Publication number Publication date
EP2091255A1 (en) 2009-08-19
JP2013258725A (ja) 2013-12-26
CN101911701B (zh) 2013-03-27
TW200948086A (en) 2009-11-16
CN101911701A (zh) 2010-12-08
ATE531201T1 (de) 2011-11-15
WO2009102897A1 (en) 2009-08-20
EP2091255B1 (en) 2011-10-26
KR20100116211A (ko) 2010-10-29
US8098957B2 (en) 2012-01-17
US20090202176A1 (en) 2009-08-13
JP2011512111A (ja) 2011-04-14

Similar Documents

Publication Publication Date Title
KR101215045B1 (ko) 이미지 정합 및 비디오 코딩을 위한 공유된 블록 비교 아키텍쳐
US8570389B2 (en) Enhancing digital photography
JP5908511B2 (ja) ブロックベースの画像安定化
KR101027353B1 (ko) 전자 비디오 이미지 안정화
US7773115B2 (en) Method and system for deblurring digital camera images using reference image and motion estimation
KR100918480B1 (ko) 스테레오 비전 시스템 및 그 처리 방법
US8379985B2 (en) Dominant gradient method for finding focused objects
KR100951637B1 (ko) 스테레오 비전 시스템 및 이의 영상 처리 방법
CN108632527B (zh) 控制器、摄像机以及用于控制摄像机的方法
JP2023052939A (ja) 符号化装置、復号装置、符号化方法、復号方法、符号化プログラム、および復号プログラム
JP2015023498A (ja) 画像符号化装置、画像符号化方法およびプログラム
CN107872632B (zh) 用于p-相位数据压缩的设备和方法
JP5165084B2 (ja) 画像符号化装置
JP2001204038A (ja) 撮像装置
JPH0865565A (ja) 撮像記録装置

Legal Events

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

Payment date: 20150930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee