KR101354014B1 - 코딩 구조 - Google Patents

코딩 구조 Download PDF

Info

Publication number
KR101354014B1
KR101354014B1 KR1020127023634A KR20127023634A KR101354014B1 KR 101354014 B1 KR101354014 B1 KR 101354014B1 KR 1020127023634 A KR1020127023634 A KR 1020127023634A KR 20127023634 A KR20127023634 A KR 20127023634A KR 101354014 B1 KR101354014 B1 KR 101354014B1
Authority
KR
South Korea
Prior art keywords
block
coding
motion
formation
image data
Prior art date
Application number
KR1020127023634A
Other languages
English (en)
Other versions
KR20120118501A (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 KR20120118501A publication Critical patent/KR20120118501A/ko
Application granted granted Critical
Publication of KR101354014B1 publication Critical patent/KR101354014B1/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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
    • 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
    • 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/513Processing of motion vectors

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오를 인코딩하는 것과 관련된 장치 및 기법이 제공된다. 인코딩 장치는 이미지 데이터를 처리하기 위한 코딩 블록 레벨을 결정하도록 구성되며, 또한 코딩 블록 레벨에 따라 이미지 데이터의 모션 코딩을 위한 블록 포메이션을 결정하도록 구성된 모션 코딩 모듈; 및 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩을 위한 블록 크기를 결정하여 이에 따라 코딩된 비트 스트림을 생성하도록 구성된 텍스쳐 코딩 모듈을 포함한다.

Description

코딩 구조{CODING STRUCTURE}
최근에, 디스플레이의 기술적 혁신과 실감나는 느낌에 대한 수요자의 요구로 인하여, (약 70 내지 120인치의) 커다란 벽 크기의 TV인, 이른바 초고선명 TV(Ultra Definition TV(UDTV))가 산업에서 많은 관심을 끌었다. 일반적으로 UDTV는, 예컨대, 3840 픽셀 x 2160 라인(4K-UDTV) 또는 7680 픽셀 x 4320 라인(8K-UDTV)인 비교적 초고의 해상도를 가지며, (유선/무선) 통신 매체 또는 방송 라인을 통하여 UDTV 비디오를 송신하기 위해 많은 양의 대역폭을 요구한다. UDTV 비디오를 코딩하기 위한 그러한 큰 블록(block)의 데이터나 큰 대역폭은 모션 미스매치(motion mismatch)의 가능성을 증가시킬 수 있어, 과도한 양의 코딩된 데이터를 생성하는 한편, UDTV 비디오의 시공간적 코딩의 효율을 증가시킨다. 따라서, UDTV 비디오를 코딩하기 위하여 최적화된 가변의 블록 크기를 가지는 적응형 코딩 방법(adaptive coding scheme)을 개발하는 것에 대한 관심이 있다.
UDTV 비디오를 인코딩하는 것에 관한 기법이 제공된다. 일 실시예에서, 인코딩 장치는 이미지 데이터를 처리하기 위하여 코딩 블록 레벨(coding block level)을 결정하도록 구성되고, 코딩 블록 레벨에 따라 이미지 데이터의 모션 코딩(motion coding)을 위한 블록 포메이션(block formation)을 결정하도록 더 구성된 모션 코딩 모듈(motion coding module); 및 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩(texture coding)을 위한 블록 크기를 결정하여, 이에 따라 코딩된 비트 스트림(coded bit stream)을 생성하도록 구성된 텍스쳐 코딩 모듈(texture coding module)을 포함한다.
전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들은 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.
도 1은 이미지 처리 장치의 예시적인 실시예의 개략적인 블록도를 도시한다.
도 2는 도 1에서 도시된 인코더(encoder)의 예시적인 실시예의 개략적인 블록도를 도시한다.
도 3a 및 도 3b는 비디오 이미지 데이터의 가변적인 크기의 모션 코딩을 위한 코딩 블록 레벨에서 블록 포메이션의 예시적인 실시예를 도시한다.
도 4a 및 도 4b는 비디오 이미지 데이터의 가변적인 크기의 텍스쳐 코딩을 위한 코딩 블록 크기의 예시적인 실시예를 도시한다.
도 5는 도 3의 코딩 포메이션 및 도 4의 코딩 블록 크기 사이의 관계의 예시를 도시한다.
도 6은 코딩 구조를 결정하기 위한 방법의 예시적인 실시예의 예시적인 흐름도를 도시한다.
도 7은 도 6의 제1 블록 레벨 결정을 위한 동작의 예시적인 실시예의 상세한 흐름도를 도시한다.
도 8은 도 6의 제2 블록 레벨 결정을 위한 동작의 예시적인 실시예의 상세한 흐름도를 도시한다.
도 9는 도 6의 제3 블록 레벨 결정을 위한 동작의 예시적인 실시예의 상세한 흐름도를 도시한다.
이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면 및 청구항에서 기술된 예시적 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않고, 다른 실시예가 이용될 수 있고, 다른 변형이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양들이 다양한 다른 구성으로 배열, 대체, 조합, 분리 및 설계될 수 있음과, 이 모두가 여기에서 명시적으로 고려됨이 쉽게 이해될 것이다.
본 개시의 예시적인 실시예에 따른 장치 및 방법은 하드웨어, 소프트웨어, 펌웨어, 특수 목적 프로세서, 또는 그들의 조합을 포함하는 다양한 형태로 구현될 수 있다는 것이 이해될 것이다. 예컨대, 본 개시의 하나 이상의 예시적인 실시예는 프로그램 저장 장치(예컨대, 하드 디스크, 자기 플로피 디스크, RAM, ROM, CD-ROM 등)와 같은 적어도 하나의 컴퓨터 판독 가능 매체에 유형적으로 구현되고, 적절한 구성을 가지는 컴퓨터 및 컴퓨터 시스템을 포함하는 임의의 장치나 기계에 의해 실행 가능한 기타 적절한 컴퓨터 실행가능 명령이나 프로그램을 가지는 어플리케이션(application)으로 구현될 수 있다. 일반적으로, 컴퓨터 실행가능 명령은, 프로그램 모듈의 형태일 수 있으며, 특정 태스크(task)를 수행하거나 특정 추상 데이터 타입(abstract data type)을 구현하는 루틴(routine), 프로그램, 오브젝트(object), 컴포넌트(component), 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 다양한 실시예에서 요구에 따라 조합되거나 분산될 수 있다. 또한 첨부된 도면에서 도시된 프로세스 동작 및 구성 시스템 컴포넌트(constituent system component) 중 일부가 소프트웨어로 구현될 수 있으므로, 시스템 유닛(system unit)/모듈 간의 연결(또는 방법 동작의 로직 흐름)은 본 개시의 다양한 실시예가 프로그램되는 방식에 따라 다를 수 있음이 이해될 것이다.
도 1은 이미지 처리 장치(100)의 예시적인 실시예의 개략적인 블록도를 도시한다. 일 실시예에서, 이미지 처리 장치(100)는 입력 비디오를 수신할 수 있는 입력 모듈(110)을 포함할 수 있으며, 각 비디오는 카메라, 캠코더 등과 같은, 이미지 캡쳐 장치(도시되지 않음)에 의해 캡쳐된 적어도 하나의 이미지 프레임(image frame)을 가질 수 있다. 입력 모듈(110)은 수신된 비디오의 이미지 프레임 또는 이미지 프레임들을 디지털 이미지 데이터로 변환할 수 있다. 입력 모듈(110)은 아날로그-디지털 변환(analog to digital conversion), 양자화(quantization) 등과 같이 여러 가지 잘 알려진 데이터 처리 기법 중 임의의 것을 이용하여, 비디오의 이미지 프레임(들)을 디지털 이미지 데이터로 변환할 수 있다. 디지털 이미지 데이터는, 이미지 프레임의 다양한 픽셀(pixel) 위치에서, 강도(intensity), 색, 밝기(luminance) 등과 같은 이미지 프레임의 특징을 나타낼 수 있다.
일부 실시예에서, 입력 모듈(110)은 선택적으로 인터페이스(interface)(도시되지 않음)를 포함할 수 있다. 인터페이스는 이미지 처리 장치(100)의 운용자(operator)가 명령을 입력(enter/input)하도록 허용할 수 있다. 인터페이스를 통하여 입력될 수 있는 일부 비 제한적인 유형의 명령은, 입력으로서 비디오를 수신하기 위한 명령, 앞서 입력된 비디오를 디스플레이(display)하기 위한 명령, 하나 이상의 연산 결과를 디스플레이하기 위한 명령, 또는 기타 이미지 처리 장치(100)를 동작하기 위한 명령을 포함할 수 있다. 적절한 인터페이스의 예시는 키패드(keypad), 키보드, 마우스, 터치 패드, 터치 스크린, 포인팅 장치, 트랙볼(trackball), 라이트 펜(light pen), 조이스틱, 음성 인식 장치, 스타일러스 장치(stylus device), 눈 및 머리 이동 추적기(eye and head movement tracker), 계수화 태블릿(digitizing tablet), 바코드 판독기 등을 포함하나, 이에 제한되지는 않는다.
이미지 처리 장치(100)는 이미지 처리 장치(100)의 컴포넌트 또는 유닛/모듈의 동작을 제어하도록 구성된 컨트롤러(controller)(120)를 더 포함할 수 있다. 컨트롤러(120)는 미리 정해진 처리 시퀀스(sequence)/흐름에 따라 하나 이상의 이미지 캡쳐 장치(예컨대, 카메라, 캠코더 등)로부터 이미지 프레임을 가지는 비디오를 수신하도록 입력 모듈(110)을 동작시킬 수 있다. 일 실시예에서, 컨트롤러(120)는 프로세서, 마이크로프로세서, 디지털 신호 프로세서(digital signal processor(DSP)), 마이크로컨트롤러(microcontroller) 등을 포함할 수 있다. 컨트롤러(120)는, 운영 체제, 적어도 하나의 어플리케이션 프로그램, 및 기타 프로그램 모듈을 포함하는, 소프트웨어 어플리케이션을 저장하고 동작하기 위한 적어도 하나의 임베디드 시스템 메모리(embedded system memory)를 포함할 수 있다. 컨트롤러(120)는 이미지 처리 장치(100)의 동작을 관리하고 제어하도록 구성된 적절한 운영 체제의 실행을 용이하게 한다. 이러한 동작은 관련된 소프트웨어 어플리케이션 프로그램/모듈로의/로부터의 데이터의 입력 및 출력을 포함할 수 있다. 운영 체제는 예컨대, 컨트롤러(120)에서 실행되는 소프트웨어 어플리케이션 프로그램/모듈과 이미지 처리 장치(100)의 하드웨어 컴퍼넌트 간의 인터페이스를 제공할 수 있다. 적절한 운영 체제의 예시는 마이크로소프트 윈도우즈 비스타(Microsoft Windows Vista
Figure 112012072852876-pct00001
), 마이크로소프트 윈도우즈(Microsoft Windows
Figure 112012072852876-pct00002
), 애플 매킨토시 운영 체제(Apple Macintosh
Figure 112012072852876-pct00003
OS("MacOS")), 유닉스(UNIX
Figure 112012072852876-pct00004
) 운영 체제, 리눅스(LINUX
Figure 112012072852876-pct00005
) 운영 체제 등을 포함한다.
이미지 처리 장치(100)는 이미지 처리 장치(100)의 컴포넌트 또는 유닛/모듈 사이에서 통신되는 데이터(예컨대, 디지털 이미지 데이터)를 저장하도록 사용될 수 있는 메모리(130)를 더 포함할 수 있다. 이미지 처리 장치(100)의 다양한 컴포넌트 또는 유닛/모듈은 (휘발성 및 비휘발성을 포함하는) 메모리(130)를 데이터 처리에 활용할 수 있다. 예컨대, 메모리(130)는 인코더(140)에 의한 처리를 위하여 입력 모듈(110)을 통하여 획득되는 디지털 이미지 데이터를 저장할 수 있다. 인코더(140)는 메모리(130)로부터 디지털 이미지 데이터를 읽어오고(retrieve) 처리할 수 있다.
메모리(130)는 읽기 전용 메모리(Read Only Memory(ROM)), EPROM(삭제가능 ROM), EEPROM(전기적 EPROM) 등과 같은 임의의 컴퓨터 판독 가능 매체를 포함할 수 있다. 추가적으로, 메모리(130)는 필요할 때(예컨대, 가득 차게 될 때) 및/또는 필요하면 교체할 수 있는 분리 가능한 탈착식 메모리(detachable memory)일 수 있다. 따라서, 메모리(130)는 또한 스마트미디어 카드(SmartMedia
Figure 112012072852876-pct00006
card), 컴팩트플래시 카드(CompactFlash
Figure 112012072852876-pct00007
card), 메모리스틱(MemoryStick
Figure 112012072852876-pct00008
), 멀티미디어카드(MultiMediaCard
Figure 112012072852876-pct00009
), 데이터플레이 디스크(DataPlay
Figure 112012072852876-pct00010
disc), 및/또는 SD 카드(SecureDigital
Figure 112012072852876-pct00011
card)와 같은 하나 이상의 기타 유형의 저장 장치를 포함할 수 있다.
이미지 처리 장치(100)는 인코더(140)를 더 포함할 수 있다. 일 실시예에서, 인코더(140)는 입력 모듈(110)에 의하여 생성되거나 생산된 디지털 이미지 데이터, 예컨대, 카메라와 같은 이미지 캡쳐 장치에 의하여 캡쳐된 이미지 프레임으로부터 입력 모듈(110)에 의하여 생성된 디지털 이미지 데이터를 처리할 수 있다. 예컨대, 디지털 이미지 데이터의 처리의 일부로서, 인코더(140)는 디지털 이미지 데이터를 가변적인 크기의 코딩 방법(예컨대, 가변적인 크기의 모션 코딩 및 가변적인 크기의 텍스쳐 코딩)을 사용하여 압축할 수 있다.
인코더(140)는 이미지 데이터를 하나 이상의 기본 처리 유닛(basic processing unit)(예컨대, 64x64 울트라 블록(ultra block))으로 더 분할할 수 있다. 각각의 기본 처리 유닛은 일괄로 저장되고 처리될 이미지 데이터의 그룹을 포함한다. 인코더(140)는 기본 이미지 처리 유닛의 각각을 서브 블록(sub-block)(예컨대, 32x32 슈퍼 블록(super block))으로 4등분 하여, 각각의 서브 블록에 포함된 이미지 데이터를 처리하기 위해 코딩 블록 레벨을 결정할 수 있다. 코딩 블록 레벨은, 예컨대, 이미지 데이터를 인코딩 하는데 사용되는 코딩 정보(예컨대, 관련 기술분야에서 알려진 모션 코딩 기법에서의 텍스쳐 코딩을 위한 블록 크기 및 모션 코딩을 위한 블록 포메이션)를 나타내는 레벨 지표(level index)로 정의될 수 있다. 코딩 블록 레벨은 슈퍼 블록 레벨, 매크로 블록 레벨(macro block level), 및 미디엄 블록 레벨(medium block level)을 포함할 수 있다. 각각의 서브 블록에 대하여, 인코더(140)는 서브 블록에서 이미지 데이터의 하나 초과의 유닛에서 모션 추정(motion estimation)을 수행하여, 이미지 데이터의 서브 블록의 코딩 블록 레벨을 결정할 수 있다("제1 블록 레벨 결정"). 예컨대, 32x32 슈퍼 블록에 대하여, 인코더(140)는 이미지 데이터의 제1 유닛(예컨대, 32x32 슈퍼 블록)에서 모션 추정을 수행하여 제1 메트릭(metric)(예컨대, 절대 차의 합(sum of absolute difference; SAD), 평균 절대 차(mean absolute difference; MAD), 또는 평균 제곱 오차(mean square error; MSE))을 생성할 수 있고, 이미지 데이터의 제2 유닛(예컨대, 32x32 슈퍼 블록에서 16x16 매크로 블록 중 하나)에서 모션 추정을 수행하여 제2 메트릭을 생성할 수 있다.
인코더(140)는 또한 제1 메트릭 및 제2 메트릭을 추가적으로 비교하여 이에 따라 서브 블록(즉, 32x32 슈퍼 블록)의 이미지 데이터를 처리(예컨대, 압축, 인코딩 등)할지를 결정할 수 있다. 서브 블록이 처리되지 않을 것이라고 인코더(140)가 결정하면(예컨대, 제2 메트릭이 제1 메트릭보다 작을 때), 인코더(140)는 상기 제1 블록 레벨 결정과 유사한 방식으로 서브 블록에서 4개의 16x16 매크로 블록의 각각에 대한 제2 블록 레벨 결정을 수행할 수 있다. 서브 블록이 처리될 것이라고 인코더(140)가 결정하면(예컨대, 제1 메트릭이 제2 메트릭보다 작거나 같을 때), 인코더(140)는 슈퍼 블록 레벨을 코딩 블록 레벨로서 결정할 수 있으며 32x32 슈퍼 블록에서 이미지 데이터를 처리할 수 있다.
결정된 코딩 블록 레벨에 따라, 블록에서 이미지 데이터의 모션 코딩을 위하여 인코더(140)는 블록 포메이션(예컨대, 32x32 블록 포메이션, 32x16 블록 포메이션, 16x32 블록 포메이션 등)을 결정할 수 있으며, 이를 위하여, 블록 레벨이 결정된다. 블록 포메이션은, 예컨대, 모션 코딩을 수행하는 데에 사용될 수 있는 블록의 유형으로 정의될 수 있다. 이후, 인코더(140)는 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩을 위한 블록 크기를 결정할 수 있다. 인코더(140)는 블록 포메이션에 따라 모션 코딩(예컨대, 모션 추정, 모션 보상(motion compensation) 등)을 수행할 수 있으며, 이에 따라 모션 벡터(motion vector), 잔상 이미지(residual image), 블록 포메이션 등과 같은 모션 정보를 출력할 수 있다. 인코더(140)는 블록 크기에 따라 이산 코사인 변환(Discrete Cosine Transform(DCT))과 같은 텍스쳐 코딩을 수행하여, 코딩된 비트 스트림을 생성할 수 있다. 일부 실시예에서, 인코더(140)는 소프트웨어, 하드웨어, 펌웨어, 또는 그들의 임의의 조합에 의하여 구현될 수 있다. 인코더(140)가 도 1에서 컨트롤러(130)로부터 분리된 유닛으로 도시되었지만, 일부 실시예에서, 인코더(140)는 컨트롤러(130)에서 실행되는 어플리케이션 중 하나에 의하여 구현될 수 있다는 점이 인정되어야 한다.
이미지 처리 장치(100)는 예컨대, 운용자가 보기 위하여, 비디오 및/또는 디지털 이미지 데이터의 처리 결과와 같은, 시각적인 출력을 제공하도록 디스플레이(도시되지 않음)를 선택적으로 포함할 수 있다. 디스플레이는 CRT 디스플레이를 포함하는 평판 디스플레이 및 기타 적절한 출력 장치를 포함할 수 있지만, 이에 제한되지는 않는다. 이미지 처리 장치(100)는 또한 스피커 또는 프린터와 같은 기타 주변 출력 장치(도시되지 않음)를 선택적으로 포함할 수 있다.
일부 실시예에서, 이미지 처리 장치(100)는 통신 모듈(150)을 선택적으로 더 포함할 수 있다. 통신 모듈(150)은 코딩된 비트 스트림(예컨대, 텍스쳐 비트 스트림) 및 모션 정보를 유선 또는 무선 통신 프로토콜(protocol)을 통하여 적어도 하나의 외부 장치(도시되지 않음)로 전송할 수 있다. 직렬 포트, 병렬 포트, PS/2 포트, 범용 직렬 버스 링크(universal serial bus(USB) link), 파이어와이어(firewire) 또는 IEEE 1394 링크와 같은 디지털 인터페이스 프로토콜, 또는 적외선 인터페이스, 블루투스(BlueTooth
Figure 112012072852876-pct00012
), 지그비(ZigBee), 고화질 멀티미디어 인터페이스(high-definition multimedia interface(HDMI)), 고대역폭 디지털 콘텐트 보호(high-bandwidth digital content protection(HDCP)), Wi-Fi(wireless fidelity), 근거리 통신망(LAN), 광역 통신망(WAN) 등과 같은 무선 인터페이스 연결을 사용함으로써, (유선 또는 무선 중 하나의) 통신 프로토콜이 구현될 수 있다. 일부 실시예에서, 통신 모듈(150)은 모뎀(도시되지 않음)을 포함하여, GSM(Global System for Mobile Communications), GPS(Global Positioning System), DMB(digital mobile multimedia), 코드 분할 다중 접속(Code Division Multiple Access(CDMA)), 고속 다운 링크 패킷 접속(High-Speed Down Link Packet Access(HSDPA)), 와이브로(Wireless Broadband(Wi-Bro)) 등과 같은 모바일 통신 시스템을 통하여 통신할 수 있다. 본 개시에서 설명된 연결 방법은 단지 예시적인 것이며 장치/컴퓨터 간에 통신 링크를 설립하는 다른 방법이 사용될 수 있음이 인정될 것이다.
도 1의 이미지 처리 장치(100)는 적절한 동작 환경의 일 예시일 뿐이며 제한하는 것으로 의도된 것이 아니다. 본 개시에서 설명된 이미지 처리에 적절할 수 있는 기타 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성은 도 1에서 도시된 임의의 유닛 또는 장치를 포함하는 개인용 컴퓨터, 휴대 전화와 같은 휴대용 장치, 서버 컴퓨터, 휴대용 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로 프로세서 기반 시스템, 프로그램 가능한 가전 제품(programmable consumer electronics), 네트워크 개인용 컴퓨터, 미니 컴퓨터, 메인프레임 컴퓨터(mainframe computer), 분산 컴퓨팅 환경(distributed computing environment) 등을 포함하나, 이에 제한되지는 않는다.
도 2는 도 1에서 도시된 인코더(140)의 예시적인 실시예의 개략적인 블록도를 도시한다. 일 실시예에서, 인코더(140)는 비디오의 이미지 프레임 또는 이미지 프레임들로부터 생산되거나 생성된 디지털 이미지 데이터를 메모리(130)로부터 읽어올 수 있다. 인코더(140)는 디지털 이미지 데이터에서 이미지 데이터 압축(예컨대, 모션 코딩, 텍스쳐 코딩 등)을 수행할 수 있다. 도 2에서 도시된 바와 같이, 인코더(140)는 모션 코딩 모듈(210) 및 텍스쳐 코딩 모듈(220)을 포함할 수 있다. 일부 실시예에서, 인코더(140)는 멀티플렉서(multiplexer(MUX))(230)를 선택적으로 포함할 수 있다. 모션 코딩 모듈(210)은 이미지 데이터를 처리하기 위하여 코딩 블록 레벨을 결정할 수 있으며, 또한 코딩 블록 레벨에 따라 이미지 데이터의 모션 코딩(예컨대, 모션 추정, 모션 보상 등)을 위한 블록 포메이션을 결정하여, 이에 따라 모션 벡터와 같은 모션 정보를 생성할 수 있다. 텍스쳐 코딩 모듈(220)은 블록 포메이션에 따라 모션 코딩된 이미지 데이터의 텍스쳐 코딩(예컨대, DCT)을 수행하기 위하여 블록 크기를 결정하여 코딩된 비트 스트림을 생성할 수 있다. 도시된 바와 같이, MUX(230)는 모션 정보와 코딩된 비트 스트림을 멀티플렉싱(multiplex)하여 디코더(도시되지 않음)로 전송될 비트 스트림을 생성할 수 있다.
일 실시예에서, 모션 코딩 모듈(210)은 입력 모듈(100)로부터 디지털 이미지 데이터(예컨대, 픽셀 값)를 수신할 수 있으며 이미지 데이터의 유닛에서 디지털 이미지 데이터를 처리할 수 있다. 예컨대, 모션 코딩 모듈(210)은 디지털 이미지 데이터를 기본 이미지 처리 유닛으로서 64x64(픽셀x라인)의 크기를 가지는 하나 이상의 울트라 블록으로 분할할 수 있다. 모션 코딩 모듈(210)은 기본 이미지 처리 유닛을 32x32 슈퍼 블록과 같은 하나 이상의 서브 블록으로 분할할 수 있다. 예컨대, 모션 코딩 모듈(210)은 64x64 울트라 블록을 4개의 32x32 슈퍼 블록으로 4등분할 수 있다. 모션 코딩 모듈(210)은 기본 이미지 처리 유닛(예컨대, 64x64 울트라 블록)의 서브 블록(예컨대, 각각의 32x32 슈퍼 블록)의 각각에 대한 코딩 블록 레벨을 결정할 수 있다. 32x32 슈퍼 블록(즉 64x64 울트라 블록의 4개의 32x32 슈퍼 블록의 각각)에 대하여, 모션 코딩 모듈(210)은 이미지 데이터의 32x32 슈퍼 블록이 슈퍼 블록 레벨에서 처리(예컨대, 압축, 인코딩 등)될 것인지를 결정할 수 있으며, 여기서 블록 포메이션, 추정된 비트 스트림 등과 같은 요인에 따라 이미지 데이터를 처리(예컨대, 텍스쳐 코딩)하는 데에 슈퍼 블록 크기나 매크로 블록 크기가 이용될 수 있다. 예컨대, 블록 포메이션이 32x32 블록 포메이션일 것으로 결정되면, 슈퍼 블록 크기가 이용될 수 있으나, 블록 포메이션이 16x32 블록 포메이션이나 32x16 블록 포메이션일 것으로 결정되면, 매크로 블록 크기가 이용될 수 있다. 각각의 32x32 슈퍼 블록에 대하여, 모션 코딩 모듈(210)은 32x32 슈퍼 블록 유닛에 모션 추정(ME) 연산을 수행하고(슈퍼 블록 기반 ME), 4개의 16x16 매크로 블록(즉, 32x32 슈퍼 블록의 4개의 4분할) 중 하나에 모션 추정 연산을 수행하여(매크로 블록 기반 ME), 슈퍼 블록 기반 ME의 하나 이상의 메트릭(예컨대, SAD, MAD, MSE) 및 매크로 블록 기반 ME의 대응하는 메트릭을 각각 생성하도록 동작할 수 있다. 본 기술 분야에서 잘 알려진 다양한 임의의 ME 기법이 슈퍼 블록 레벨 결정을 수행하는데 이용될 수 있다. 모션 코딩 모듈(210)은 슈퍼 블록 기반 ME의 메트릭을 매크로 블록 기반 ME의 대응하는 메트릭과 비교하여 이미지 데이터의 32x32 슈퍼 블록이 슈퍼 블록 레벨에서 처리될 것인지를 결정할 수 있다. 슈퍼 블록 기반 ME의 SAD가 매크로 블록 기반 ME의 SAD보다 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 이미지 데이터의 32x32 슈퍼 블록이 슈퍼 블록 레벨에서 처리될 것이라고 결정한다.
그렇지 않고, 32x32 슈퍼 블록이 슈퍼 블록 레벨에서 처리되지 않을 것이라고 모션 코딩 모듈(210)이 결정하면(예컨대, 매크로 블록 기반 ME의 SAD가 슈퍼 블록 기반 ME의 SAD보다 크거나 같을 때), 모션 코딩 모듈(210)은 또한 16x16 매크로 블록이 처리될 것인지 결정할 수 있다. 모션 코딩 모듈(210)은 32x32 슈퍼 블록을 32x32 슈퍼 블록의 하나 이상의 서브 블록으로 분할할 수 있다. 예컨대, 모션 코딩 모듈(210)은 32x32 슈퍼 블록을 4개의 16x16 매크로 블록으로 4등분할 수 있다. 각각의 16x16 매크로 블록에 대하여, 모션 코딩 모듈(210)은 이미지 데이터의 매크로 블록이 매크로 블록 레벨에서 처리될 것인지 결정할 수 있으며, 여기서 매크로 블록 크기 또는 미디엄 블록 크기가 블록 포메이션, 추정된 비트 스트림 등과 같은 요인에 따라 이미지 데이터를 처리(에컨대, 텍스쳐 코딩)하기 위해 사용될 수 있다. 예컨대, 블록 포메이션이 16x16 블록 포메이션이라 결정되면, 매크로 블록 크기가 사용될 수 있지만, 블록 포메이션이 8x16 또는 16x8의 블록 포메이션이라 결정되면, 미디엄 블록 크기가 사용될 수 있다. 슈퍼 블록 레벨에서 처리되지 않을 것이라 결정된 32x32 슈퍼 블록의 각각의 4분할(16x16 매크로 블록)에 대하여, 모션 코딩 모듈(210)은 16x16 매크로 블록 유닛에 ME 연산을 수행하고(매크로 블록 기반 ME), 4개의 8x8 미디엄 블록(즉, 16x16 매크로 블록의 4개의 4분할)에 ME 연산을 수행하여(미디엄 블록 기반 ME), 매크로 블록이 매크로 블록 레벨에서 처리될 지를 결정할 수 있다. 모션 코딩 모듈(210)은 매크로 블록 기반 ME의 메트릭 중 하나(예컨대, SAD)와 미디엄 블록 기반 ME의 대응하는 메트릭을 비교할 수 있다. 비교 결과에 기초하여, 모션 코딩 모듈(210)은 코딩 블록 레벨이 매크로 블록 레벨에서인지 결정할 수 있다. 매크로 블록 기반 ME의 SAD가 미디엄 블록 기반 ME의 SAD보다 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 매크로 블록이 매크로 블록 레벨에서 처리될 것이라고 결정한다.
그렇지 않고, 모션 코딩 모듈(210)이 16x16 매크로 블록이 매크로 블록 레벨에서 처리되지 않을 것이라고(즉, 16x16 매크로 블록이 처리되지 않아야 한다고) 결정하면, 모션 코딩 모듈(210)은 또한 미디엄 블록이 처리될 것이라고 결정할 수 있다. 모션 코딩 모듈(210)은 16x16 매크로 블록을 4개의 8x8 미디엄 블록으로 분할할 수 있으며, 각각의 8x8 미디엄 블록에 대하여, 8x8 미디엄 블록 유닛과 4개의 4x4 마이크로 블록(micro block)(즉, 8x8 매크로 블록의 4개의 4분할)에 ME 연산을 수행하여 미디엄 블록이 처리될지를 결정할 수 있다. 모션 코딩 모듈(210)은 미디엄 블록 기반 ME의 SAD와 마이크로 블록 기반 ME의 SAD를 비교하여, 이에 따라 미디엄 블록이 미디엄 블록 레벨에서 처리될 것인지 또는 마이크로 블록 레벨에서 처리될 것인지를 결정(즉, 8x8 미디엄 블록이 처리되어야 하는지 또는 4x4 마이크로 블록이 처리되어야 하는지를 결정)할 수 있다. 미디엄 블록 기반 ME의 SAD가 마이크로 블록 기반 ME의 SAD보다 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 코딩 블록 레벨이 미디엄 블록 레벨에 있다고 결정한다. 아니라면, 모션 코딩 모듈(210)은 코딩 블록 레벨이 마이크로 블록 레벨에 있다고 결정한다.
상기 결정된 코딩 블록 레벨에 따라, 모션 코딩 모듈(210)은 블록 레벨이 결정된 이미지 데이터의 블록의 모션 코딩을 위하여 블록 포메이션을 결정하도록 동작할 수 있다. 코딩 블록 레벨의 각각은 하나 이상의 블록 포메이션과 연관될 수 있으며, 이와 함께 모션 코딩 모듈(210)은 결정된 블록 포메이션에서 이미지 데이터에 대한 모션 코딩을 수행할 수 있다. 도 3은 이미지 데이터의 가변적인 크기의 모션 코딩을 위하여 각각의 코딩 블록 레벨에 대한 블록 포메이션의 예시적인 실시예를 도시한다. 도 3a에서 도시된 바와 같이, (i)슈퍼 블록 레벨은 3개의 블록 포메이션(32x32, 32x16, 및 16x32 블록 포메이션)을 포함하는 블록 포메이션의 그룹(301)과 연관되고, (ii)매크로 블록 레벨은 3개의 블록 포메이션(16x16, 16x8, 8x16 블록 포메이션)을 포함하는 블록 포메이션의 그룹(302)과 연관되고, (iii)미디엄 블록 레벨은 3개의 블록 포메이션(8x8, 8x4, 4x8 블록 포메이션)을 포함하는 블록 포메이션의 그룹(303)과 연관되며, (iv)마이크로 블록 레벨은 4x4 블록 포메이션을 포함하는 블록 포메이션의 그룹(304)과 연관된다. 이러한 방식으로, 모션 코딩 모듈(210)은 블록 레벨의 결정에 따라 이미지 데이터의 모션 코딩을 위하여 블록 포메이션 중 하나를 결정할 수 있다. 예컨대, 코딩 블록 레벨이 슈퍼 블록 레벨에 있다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 32x32 슈퍼 블록 포메이션, 32x16 서브 슈퍼 블록 포메이션 및 16x32 서브 슈퍼 블록 포메이션 중에서 블록 포메이션을 결정할 수 있다.
도 3b는 블록 포메이션이 모션 코딩 모듈(210)에 의하여 결정된 블록 레벨에 따라 매핑(mapping)되는 울트라 블록의 예시를 도시한다. 모션 코딩 모듈(210)은 울트라 블록(305)의 서브 블록에 대한 블록 레벨을 결정할 수 있다. 예컨대, 모션 코딩 모듈(210)은 슈퍼 블록 레벨에 있는 울트라 블록(305)의 좌상부 4분할(306), 좌하부 4분할(307) 및 우하부 4분할(308)이 슈퍼 블록 레벨에 있고 우상부 4분할(309)이 슈퍼 블록 레벨보다 낮은 블록 레벨에 있다고 결정할 수 있다. 도시된 바와 같이, 코딩 블록 레벨의 그러한 결정에 기초하여, 모션 코딩 모듈(210)은 슈퍼 블록 레벨(301)(도 3a)에 포함된 블록 포메이션 중 좌상부 4분할(306)에 대하여 32x32 블록 포메이션을 결정한다. 울트라 블록(305)의 좌하부 4분할(307)에 대하여, 모션 코딩 모듈(210)은 두 개의 16x32 블록 포메이션을 결정한다. 울트라 블록(305)의 우하부 4분할(308)에 대하여, 모션 코딩 모듈(210)은 두 개의 32x16 블록 포메이션을 결정한다. 울트라 블록(305)의 우상부 4분할(309)에 대하여, 모션 코딩 모듈(210)은 블록 레벨 결정의 상기 기술된 프로세스를 통하여 블록 포메이션을 결정한다. 예컨대, 모션 코딩 모듈(210)은 슈퍼 블록(즉, 우상부 4분할(309))의 좌상부 4분할, 좌하부 4분할, 및 우하부 4분할이 매크로 블록 레벨에 있고, 우상부 4분할은 매크로 블록 레벨보다 낮은 블록 레벨에 있다고 결정할 수 있다. 전술한 블록 레벨 및 블록 포메이션은 단지 하나의 예시이며 기타의 블록 레벨 및 블록 포메이션이 설계 요구에 따라 사용될 수 있다는 것이 인정되어야 한다.
모션 코딩 모듈(210)은 임의의 다양한 잘 알려진 모션 코딩 알고리즘을 이용하여 상기 결정된 코딩 블록 레벨 및 블록 포메이션에 기초하여 이미지 데이터로 모션을 추정하고 보상할 수 있다. 예컨대, 모션 코딩 모듈(210)은 상기 결정된 블록 포메이션을 적용하여 MPEG 2, MPEG 4, H.263, H.264 등과 같은 비디오 관련 표준에 규정된 모션 추정(ME) 및 모션 보상(MC) 알고리즘을 수행할 수 있다. 이러한 방식으로, 도 2에서 도시된 바와 같이, 모션 코딩 모듈(210)은 모션 보상된 이미지 데이터를 생성(예컨대, 잔상 이미지 데이터를 생성)하고 모션 벡터, 코딩 블록 레벨, 블록 포메이션 등과 같은 모션 정보를 출력하도록 동작 가능할 수 있다.
일 실시예에서, 텍스쳐 코딩 모듈(220)은 모션 코딩 모듈(210)로부터 모션 보상된 이미지 데이터 및 모션 정보를 수신할 수 있으며 모션 코딩 모듈(210)에 의해 결정된 코딩 블록 레벨 및 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩(예컨대, DCT)을 위한 블록 크기(예컨대, DCT 블록 크기)를 결정할 수 있다. 도 4a는 이미지 데이터의 가변적인 블록 크기의 텍스쳐 코딩을 위한 코딩 블록 크기의 예시적인 실시예를 도시한다. 블록 레벨 및 블록 포메이션에 따라, 텍스쳐 코딩 모듈(220)은 이미지 데이터의 가변적인 크기의 텍스쳐 코딩에 대한 코딩 블록 크기(예컨대, 32x32, 16x16, 8x8 및 4x4 DCT 블록) 중 하나를 선택할 수 있다.
도 5는 도 3의 코딩 블록 포메이션 및 도 4a의 코딩 블록 크기 사이의 관계의 예시를 도시한다. 도시된 바와 같이, (i)블록 레벨이 슈퍼 블록 레벨이라고 모션 코딩 모듈(210)이 결정하면, 502에 나타난 바와 같이, 텍스쳐 코딩 모듈(220)은 텍스쳐 코딩(예컨대, DCT 변환)을 위하여 32x32 블록 크기(예컨대, DCT 블록 크기) 또는 16x16 블록 크기를 선택할 수 있고; (ii)블록 레벨이 매크로 블록 레벨이라고 모션 코딩 모듈(210)이 결정하면, 504에 나타난 바와 같이, 텍스쳐 코딩 모듈(220)은 16x16 블록 크기 또는 8x8 블록 크기를 선택할 수 있으며; (iii)블록 레벨이 미디엄 또는 마이크로 블록 레벨이라고 모션 코딩 모듈(210)이 결정하면, 506에 나타난 바와 같이, 텍스쳐 코딩 모듈(220)은 8x8 블록 크기 또는 4x4 블록 크기를 선택할 수 있다.
텍스쳐 코딩 모듈(220)은 코딩 포메이션을 더 참조하여 코딩 블록 크기를 결정할 수 있다. 블록 레벨 슈퍼 블록 레벨일 때, 블록 포메이션이 32x32 슈퍼 블록이라고 모션 코딩 모듈(210)이 결정하면, 텍스쳐 코딩 모듈(220)은 모션 코딩 모듈(210)에 의하여 결정된 32x32 슈퍼 블록에서 이미지 데이터의 텍스쳐 코딩(예컨대, DCT)을 위하여 32x32 및 16x16 블록 크기 중 하나를 결정한다. 그렇지 않고, 블록 포메이션이 32x16 또는 16x32 서브 슈퍼 블록이라고 모션 코딩 모듈(210) 결정하면, 텍스쳐 코딩 모듈(220)은 텍스쳐 코딩을 위하여 16x16 블록 크기를 결정한다. 블록 레벨의 각각에 대한 블록 크기를 결정하기 위해 상기 코딩 포메이션에 대하여 참조가 이루어질 수 있다는 것이 인정되어야 한다.
도 4b는 도 5에서 도시된 바와 같은 블록 포메이션 및 블록 크기 사이의 관계를 도 3b의 블록 포메이션에 적용함으로써 울트라 블록(예컨대, 도 3b의 울트라 블록(305))으로 매핑된 블록 크기의 예시를 도시한다. 도 4b에서 도시된 바와 같이, 도 3b에서의 울트라 블록(305)의 좌상부 4분할(306)(32x32 블록 포메이션)에 대하여, 32x32 블록 크기 및 16x16 블록 크기의 후보 블록 크기 중에서 32x32 블록 크기가 결정된다. 울트라 블록(305)의 좌하부 4분할(307) 및 우하부 4분할(308)(각각 16x32 블록 포메이션 및 32x16 블록 포메이션)에 대하여, 16x16 블록 크기가 결정된다. 우상부 4분할(309)에 대하여, 블록 크기는 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 블록 포메이션의 각각에 따라 매핑된다.
텍스쳐 코딩 모듈(220)은 임의의 다양한 잘 알려진 텍스쳐 코딩 알고리즘을 이용하여 상기 결정된 블록 크기를 이용해 이미지 데이터(예컨대, 참조 프레임에서의 모션 보상된 이미지 데이터 및 타겟 프레임에서의 이미지 데이터 사이의 차이에 해당하는 잔상 이미지 데이터)를 압축할 수 있다는 것이 인정되어야 한다. 예컨대, 텍스쳐 코딩 모듈(220)은 상기 결정된 블록 크기를 MPEG 2, MPEG 4, H.263, H.264 등과 같은 비디오 관련 표준에 규정된 텍스쳐 코딩 알고리즘에 적용할 수 있다.
도 1, 도 2, 도 6, 도 7, 도 8 및 도 9를 참조하여, 코딩 구조를 결정하기 위한 방법의 예시적인 실시예가 설명된다. 도 6은 코딩 구조를 결정하기 위한 방법의 예시적인 실시예의 예시적인 흐름도를 도시한다. 인코더(140)는 입력 모듈(110)을 통하여 이미지 데이터를 수신할 수 있다(블록(620)). 인코더(140)는 예컨대, 이미지 캡쳐 장치를 이용하여 캡쳐된 비디오의 이미지 프레임(들)로부터 생산되거나 생성된 디지털 이미지 데이터를 메모리(130)로부터 읽어올 수 있다. 인코더(140)의 모션 코딩 모듈(210)은 디지털 이미지 데이터(예컨대, 픽셀 값)를 하나 이상의 기본 이미지 처리 유닛으로 분할할 수 있으며, 이는 그룹으로 처리될 이미지 데이터의 블록이다. 예컨대, 모션 코딩 모듈(210)은 디지털 이미지 데이터를 64 픽셀 x 64 라인의 크기를 가지는 울트라 블록 유닛으로 분할할 수 있다. 모션 코딩 모듈(210)은 각각의 기본 이미지 처리 유닛을 서브 블록(예컨대, 32x32 슈퍼 블록)으로 더 분할할 수 있다.
모션 코딩 모듈(210)은 제1 블록 레벨 결정을 수행하여 각각의 서브 블록을 처리하기 위한 코딩 블록 레벨을 결정할 수 있다(블록(640)). 모션 코딩 모듈(210)은 기본 이미지 처리 유닛(예컨대, 64x64 울트라 블록)의 각각의 서브 블록(예컨대, 64x64 울트라 블록의 4분할인 32x32 슈퍼 블록)이 제1 블록 레벨(예컨대, 슈퍼 블록 레벨)에서 처리될 것인지를 결정할 수 있다. 일 실시예에서, 각각의 32x32 슈퍼 블록에 대하여, 모션 코딩 모듈(210)은 제1 유닛(예컨대, 32x32 슈퍼 블록 유닛)에서 ME 연산을 수행하여 슈퍼 블록 기반 ME의 하나 이상의 메트릭(예컨대, SAD, MAD, MSE)을 생성할 수 있다. 모션 코딩 모듈(210)은 제2 유닛(예컨대, 4개의 16x16 매크로 블록의 유닛)에서 ME 연산을 수행하여 매크로 블록 기반 ME의 메트릭을 생성할 수 있다. 모션 코딩 모듈(210)은 슈퍼 블록 기반 ME의 메트릭을 매크로 블록 기반 ME의 대응하는 메트릭과 비교할 수 있다. 슈퍼 블록 기반 ME의 메트릭(예컨대, SAD)이 매크로 블록 기반 ME의 메트릭보다 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 슈퍼 블록이 슈퍼 블록 레벨에서 처리될 것이라고 결정한다. 슈퍼 블록이 슈퍼 블록 레벨에서 처리될 것이라고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 블록(642)으로 진행하여 결정된 코딩 블록 레벨에 따라 서브 블록의 각각에서 이미지 데이터의 모션 코딩을 위하여 블록 포메이션을 결정한다. 모션 코딩 모듈(210)은 도 3a에 도시된 바와 같은 제1 블록 레벨(슈퍼 블록 레벨)에 포함된 블록 포메이션(예컨대, 32x32, 32x16 및 16x32 블록 포메이션) 중 하나를 선택할 수 있다. 텍스쳐 코딩 모듈(220)은 블록(642)에서 결정된 블록 포메이션에 따라 서브 블록의 각각에서 이미지 데이터의 텍스쳐 코딩을 위해 블록 크기를 결정할 수 있다(블록(644)). 텍스쳐 코딩 모듈(220)은, 도 5에서 도시된 블록 포메이션 및 블록 크기 사이의 관계를 참조하여, 텍스쳐 코딩(예컨대, DCT 변환)을 위해 32x32 블록 크기나 16x16 블록 크기를 선택할 수 있다.
모션 코딩 모듈(210)이 블록(640)에서 슈퍼 블록이 슈퍼 블록 레벨에서 처리되지 않을 것이라고 결정하면(예컨대, 매크로 블록 기반 ME의 SAD가 슈퍼 블록 기반 ME의 SAD보다 클 때), 모션 코딩 모듈(210)은 블록(660)으로 진행하여 제2 블록 레벨 결정을 수행해 이미지 데이터의 코딩 블록 레벨이 제2 블록 레벨(예컨대, 매크로 블록 레벨)인지를 결정한다. 코딩 블록 레벨이 매크로 블록 레벨이라고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 블록(662)으로 진행하여 결정된 코딩 블록 레벨에 따라 이미지 데이터의 모션 코딩을 위해 블록 포메이션을 결정한다. 모션 코딩 모듈(210)은 도 3a에 도시된 바와 같은 제2 블록 레벨(매크로 블록 레벨)에 포함된 블록 포메이션(16x16, 16x8 및 8x16 블록 포메이션) 중 하나를 선택할 수 있다. 텍스쳐 코딩 모듈(220)은 블록(662)에서 결정된 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩을 위하여 블록 크기를 결정할 수 있다(블록(664)). 텍스쳐 코딩 모듈(220)은, 도 5에서 도시된 관계를 참조하여, 텍스쳐 코딩을 위해 16x16 블록 크기나 8x8 블록 크기를 선택할 수 있다.
모션 코딩 모듈(210)이 블록(660)에서 매크로 블록이 매크로 블록 레벨에서 처리되지 않을 것이라고 결정하면, 모션 코딩 모듈(210)은 블록(680)으로 진행하여 제3 블록 레벨 결정을 수행해 이미지 데이터의 코딩 블록 레벨이 제3 블록 레벨(예컨대, 미디엄 블록 레벨)인지 결정한다. 코딩 블록 레벨이 미디엄 블록 레벨이라고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 블록(682)으로 진행하여 코딩 블록 레벨에 따라 이미지 데이터의 모션 코딩을 위하여 블록 포메이션을 결정한다. 모션 코딩 모듈(210)은 도 3a에 도시된 바와 같은 제3 블록 레벨(미디엄 블록 레벨)에 포함된 블록 포메이션(8x8, 8x4 및 4x8 블록 포메이션) 중 하나를 선택할 수 있다. 텍스쳐 코딩 모듈(220)은 블록(682)에서 결정된 블록 포메이션에 따라 이미지 데이터의 텍스쳐 코딩을 위하여 블록 크기를 결정할 수 있다(블록(684)). 도 5에서 도시된 관계를 참조하여, 텍스쳐 코딩 모듈(220)은, 텍스쳐 코딩을 위하여 8x8 블록 크기나 4x4 블록 크기를 선택할 수 있다. 블록(680)에서 코딩 블록 레벨이 미디엄 블록 레벨이 아니라고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 블록(686)으로 진행하여 모션 코딩을 위하여 4x4 블록 포메이션을 선택하고 텍스쳐 코딩 모듈(220)은 텍스쳐 코딩을 위하여 4x4 블록 크기를 선택할 수 있다.
이러한 방식으로, 모션 코딩 모듈(210)은 (i)슈퍼 블록 레벨, 매크로 블록 레벨, 및 미디엄 블록 레벨 중에서 코딩 블록 레벨을 결정할 수 있고; (ii)이미지 데이터의 모션 코딩을 위한 블록 포메이션을 결정할 수 있으며; (iii) 이미지 데이터의 텍스쳐 코딩을 위한 블록 크기를 결정할 수 있다. 모션 코딩 모듈(210)은 결정된 블록 포메이션에서 이미지 데이터로 ME 연산을 수행하여, 이에 따라 모션 벡터와 같은 모션 정보를 출력할 수 있다. 텍스쳐 코딩 모듈(220)은 결정된 블록 크기에 따라 텍스처 코딩을 수행하여 코딩된 비트 스트림을 생성할 수 있다. 상기 설명된 코딩 블록 레벨, 블록 포메이션, 및 블록 크기는 코딩 구조를 표현하는 일 예시일 뿐이며, 제한을 의도한 것은 아니라는 것이 이해되어야 한다. 상기 코딩 구조 표현 방법이 세개의 코딩 레벨을 이용하여 설명되었지만, 코딩 포맷(format) 및 구조의 구현/응용 요건에 따라 다양한 코딩 레벨이 고려될 수 있다는 것이 인정되어야 한다. 다양한 코딩 포메이션 및 코딩 블록 크기가 상이한 코딩 레벨에 대하여 고려될 수 있다. 본 기술 분야에서 잘 알려진 다양한 임의의 ME 기법이 블록 레벨 결정을 수행하는 데에 사용될 수 있다는 것이 이해되어야 한다. 또한 본 개시에 따라 준비된 인코더는 다양한 어플리케이션에 사용될 수 있다는 것이 인정되어야 한다.
도 7은 도 6의 제1 블록 레벨 결정을 위한 동작의 예시적인 실시예의 상세한 흐름도를 도시한다. 64x64 울트라 블록의 각각의 4분할에 대하여, 모션 코딩 모듈(210)은 32x32 슈퍼 블록 유닛에 ME 연산을 수행하고 4개의 16x16 매크로 블록의 유닛에 ME 연산을 수행하여, 64x64 울트라 블록의 4분할(32x32 슈퍼 블록)이 슈퍼 블록 레벨에서 처리될 것인지 아닌지를 결정할 수 있다(블록(710)). 모션 코딩 모듈(210)은 슈퍼 블록 기반 ME의 메트릭(예컨대, SAD, MAD, MSE) 중 하나와 매크로 블록 기반 ME의 대응하는 메트릭 중 하나를 비교하여 이에 따라 코딩 블록 레벨이 슈퍼 블록 레벨에 있는지 아닌지를 결정할 수 있다(블록(720)). 슈퍼 블록 기반 ME의 SAD가 매크로 블록 기반 ME의 SAD보다 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 32x32 슈퍼 블록이 슈퍼 블록 레벨에서 처리될 것이라고 결정하고 블록(740)으로 진행한다. 아니라면, 모션 코딩 모듈(210)은 도 8의 블록(810)으로 진행하여 도 6의 제2 블록 레벨 결정을 수행한다(블록(730)).
모션 코딩 모듈(210)은 두 개의 32x16 서브 슈퍼 블록을 포함하는 유닛에 ME 연산을 수행하고, 두 개의 16x32 서브 슈퍼 블록을 포함하는 유닛에 ME 연산을 수행하여, 32x16 서브 슈퍼 블록 기반 SAD 및 16x32 서브 슈퍼 블록 기반 SAD를 각각 생성할 수 있다(블록(740)). 모션 코딩 모듈(210)은 세 개의 SAD, 즉 (i)블록(740)에서 생성되는 32x16 서브 슈퍼 블록 기반 SAD, (ii)블록(740)에서 생성되는 16x32 서브 슈퍼 블록 기반 SAD, 및 (iii)블록(710)에서 생성되는 32x32 슈퍼 블록 기반 SAD의 비교에 기초하여 모션 코딩을 위해 블록 포메이션을 결정할 수 있다(블록(750)). 모션 코딩 모듈(210)은 가장 작은 SAD를 생성하는 32x32 블록 포메이션, 32x16 블록 포메이션, 또는 16x32 블록 포메이션을 선택할 수 있다. 32x32 슈퍼 블록 기반 SAD가 상기 언급한 세개의 SAD 중에서 가장 작다고 모션 코딩 모듈(210)이 결정하면, 모션 코딩 모듈(210)은 모션 코딩에 사용될 블록 포메이션으로서 32x32 블록 포메이션을 결정할 수 있다. 아니면, 모션 코딩 모듈(210)은, 두 개의 서브 슈퍼 블록 기반 SAD 중 어느 하나가 다른 것보다 작은지에 따라, 32x16 블록 포메이션 또는 16x32 블록 포메이션을 블록 포메이션으로서 선택할 수 있다.
블록(760)에서 32x32 블록 포메이션이 블록 포메이션으로서 결정되는지 체크하여, 그렇다면, 텍스쳐 코딩 모듈(220)은 블록(770)으로 진행하여 결정된 32x32 블록 포메이션에 따라 텍스쳐 코딩을 위하여 블록 크기를 결정한다. 텍스쳐 코딩 모듈(220)은 32x32 블록 포메이션이 결정된 32x32 슈퍼 블록에서 이미지 데이터에 대한 32x32 텍스쳐 코딩 및 16x16 텍스쳐 코딩을 수행할 수 있다. 텍스쳐 코딩은 DCT 변환, 아다마르 변환(Hadamard transform) 등을 수행하는 것을 포함할 수 있으나, 이에 제한되지는 않는다. 텍스쳐 코딩 모듈(220)은 임의의 다양한 엔트로피 코딩 연산(entropy coding operation)을 수행하여 32x32 텍스쳐 코딩 및 16x16 텍스쳐 코딩에 대한 추정된 비트 스트림을 생성할 수 있다. 일 실시예에서, 텍스쳐 코딩 모듈(220)은 증가된 효율 및 연산 속도를 위하여 시뮬레이트된 엔트로피 코딩(simulated entropy coding)을 수행할 수 있다. 텍스쳐 코딩 모듈(220)은 추정된 비트 스트림의 양의 비교에 따라 32x32 블록 크기를 사용할지 또는 16x16 블록 크기를 사용할지를 결정할 수 있다. 텍스쳐 코딩 모듈(220)은 32x32 텍스쳐 코딩 및 16x16 텍스쳐 코딩에 대한 비트 스트림의 양을 비교하여 이에 따라 32x32 블록 크기 또는 16x16 블록 크기 중 하나를 선택할 수 있다. 텍스쳐 코딩 모듈(220)은, 예컨대, 비트 스트림의 시뮬레이트된 시도(simulated trial) 및 RD 최적화(Rate Distortion Optimization)에 기초하여, 가장 작은 양의 비트 스트림을 생산할 수 있는 블록 크기를 결정할 수 있다. 32x32 텍스쳐 코딩이 16x16 텍스쳐 코딩의 그것보다 작은 양의 비트 스트림을 생산하면, 텍스쳐 코딩 모듈(220)은 텍스쳐 코딩을 위해 32x32 블록 크기를 선택한다. 블록(760)에서 16x16 블록 포메이션이 블록 포메이션으로서 결정된다고 텍스쳐 코딩 모듈(220)이 결정하면, 텍스쳐 코딩 모듈(220)은 블록(780)으로 진행하여 진정 텍스쳐 코딩(real texture coding)(예컨대, DCT 변환)을 위하여 블록 크기로서 16x16 블록 크기를 선택한다. 텍스쳐 코딩 모듈(220)은 결정된 블록 크기에 기초하여 진정 텍스쳐 코딩을 수행하고 엔트로피 코딩(예컨대, 허프만 코딩(Huffman coding), 런-렝스 코딩(run-length coding) 등)을 수행하여 전송될 진정 비트 스트림(real bit steam)을 생성할 수 있다. 본 기술분야에서 잘 알려진 임의의 다양한 텍스쳐 코딩 기법이 상기 텍스쳐 코딩을 수행하기 위해 이용될 수 있다는 것이 이해되어야 한다.
도 8은 도 6의 제2 블록 레벨 결정을 위한 동작의 예시적인 실시예의 상세한 흐름도를 도시한다. 앞서 언급한 바와 같이, 도 7의 블록(720)에서, 모션 코딩 모듈(210)이 32x32 슈퍼 블록에 대하여 슈퍼 블록 기반 ME의 SAD가 매크로 블록 기반 ME의 SAD보다 작지 않다고 결정하면, 모션 코딩 모듈(210)은 도 8의 블록(810)으로 진행한다. 도 7을 참조하여 상기 설명된 슈퍼 블록 레벨 결정과 유사한 방식으로, 모션 코딩 모듈(210)은 슈퍼 블록 레벨에서 처리되지 않을 것이라고 결정된 32x32 슈퍼 블록에 대한 매크로 블록 레벨 결정을 수행할 수 있다(블록(810)). 모션 코딩 모듈(210)은 32x32 슈퍼 블록을 4개의 16x16 매크로 블록으로 4등분 할 수 있다. 각각의 16x16 매크로 블록에 대하여, 모션 코딩 모듈(210)은 16x16 매크로 블록의 유닛에 ME 연산을 수행하고, 4개의 8x8 미디엄 블록(즉, 16x16 매크로 블록의 4개의 4분할)의 유닛에 ME 연산을 수행하여, 16x16 매크로 블록의 코딩 블록 레벨이 매크로 블록 레벨에 있는지 아닌지를 결정할 수 있다. 모션 코딩 모듈(210)은 매크로 블록 기반 ME의 SAD 및 미디엄 블록 기반 ME의 SAD를 비교할 수 있다(블록(820)). 매크로 블록 기반 ME의 SAD가 미디엄 블록 기반 ME의 SAD보다 작으면, 모션 코딩 모듈(210)은 블록(840)으로 진행하여 두 개의 서브 매크로 블록 기반 ME를 수행한다(16x8 및 8x16). 모션 코딩 모듈(210)은 세 개의 SAD, 즉 (i)블록(840)에서 생성되는 16x8 서브 매크로 블록 기반 SAD, (ii)블록(840)에서 생성되는 8x16 서브 매크로 블록 기반 SAD, 및 (iii)블록(810)에서 결정되는 16x16 매크로 블록 기반 SAD를 비교할 수 있다(블록(850)). 모션 코딩 모듈(210)은 블록(850)의 비교 결과에 기초하여 모션 코딩을 위해 블록 포메이션을 결정할 수 있다(블록(860)). 모션 코딩 모듈(210)은 가장 작은 SAD를 가지는 16x16 블록 포메이션, 16x8 블록 포메이션 또는 8x16 블록 포메이션을 선택할 수 있다. 블록(860)에서 텍스쳐 코딩 모듈(220)이 모션 코딩을 위해 블록 포메이션으로서 16x16 블록 포메이션을 선택하면, 텍스쳐 코딩 모듈(220)은 블록(870)으로 진행하여 16x16 텍스쳐 코딩 및 8x8 텍스쳐 코딩을 수행해 16x16 텍스쳐 코딩 및 8x8 텍스쳐 코딩의 각각에 대한 추정된 비트 스트림을 생성한다. 텍스쳐 코딩 모듈(220)은 블록(770)에서 도 7을 참조하여 상기 설명한 바와 유사한 방식으로 텍스쳐 코딩을 위하여 16x16 블록 크기를 사용할지 또는 8x8 블록 크기를 사용할지를 결정할 수 있다(블록(870)). 텍스쳐 코딩 모듈(220)이 블록(860)에서 블록 포메이션으로서 16x8 블록 포메이션 또는 8x16 블록 포메이션을 선택하면, 텍스쳐 코딩 모듈(220)은 블록(880)으로 진행하여 텍스쳐 코딩(예컨대, DCT 변환)을 위하여 블록 크기로서 8x8 블록 크기를 선택한다. 텍스쳐 코딩 모듈(220)은 결정된 블록 크기에 기초하여 진정 텍스쳐 코딩을 수행하고 엔트로피 코딩(예컨대, 허프만 코딩, 런-길이 코딩 등)을 수행하여 전송될 진정 비트 스트림을 생성할 수 있다.
16x16 매크로 블록에 대하여 블록(820)에서 매크로 블록 기반 ME의 SAD가 미디엄 블록 기반 ME의 SAD보다 작지 않으면, 모션 코딩 모듈(210)은 도 9의 블록(910)으로 진행한다(블록(830)). 도 7을 참조하여 상기 설명된 슈퍼 블록 레벨 결정과 유사한 방식으로, 모션 코딩 모듈(210)은 매크로 블록 레벨에서 처리되지 않을 것이라고 결정된 16x16 매크로 블록에 대하여 미디엄 블록 레벨 결정을 수행할 수 있다(블록(910)). 모션 코딩 모듈(210)은 16x16 매크로 블록을 하나 이상의 서브 블록(예컨대, 각각의 4분할이 8x8 미디엄 블록인 16x16 매크로 블록의 4개의 4분할)으로 분할할 수 있다. 모션 코딩 모듈(210)은 8x8 미디엄 블록의 유닛에 ME 연산을 수행하고 4개의 4x4 마이크로 블록의 유닛에 ME 연산을 수행하여, 8x8 미디엄 블록이 미디엄 블록 레벨에서 처리될 것인지 아닌지를 결정할 수 있다. 모션 코딩 모듈(210)은 8x8 미디엄 블록 기반 ME의 SAD와 4x4 마이크로 블록 기반 ME의 SAD를 비교할 수 있다(블록(920)). 미디엄 블록 기반 ME의 SAD가 마이크로 블록 기반 ME의 SAD보다 작으면, 모션 코딩 모듈(210)은 블록(940)으로 진행하여 두 개의 서브 미디엄 블록 기반 ME(8x4 및 4x8)를 수행한다. 아니라면, 모션 코딩 모듈(210)은 블록(930)으로 진행하여 블록 포메이션을 4x4 블록 포메이션이도록 선택하고 블록 크기를 4x4 블록 크기이도록 선택한다. 모션 코딩 모듈(210)은 세 개의 SAD, 즉 (i)블록(940)에서 생성되는 8x4 서브 미디엄 블록 기반 SAD, (ii)블록(940)에서 생성되는 4x8 서브 미디엄 블록 기반 SAD, 및 (iii)블록(910)에서 결정되는 8x8 미디엄 블록 기반 SAD를 비교할 수 있다(블록(950)). 모션 코딩 모듈(210)은 블록(950)의 비교 결과에 기초하여 모션 코딩을 위하여 블록 포메이션을 결정할 수 있다(블록(960)). 모션 코딩 모듈(210)은 가장 작은 SAD를 가지는 8x8 블록 포메이션, 8x4 블록 포메이션 또는 4x8 블록 포메이션을 선택할 수 있다. 텍스쳐 코딩 모듈(220)이 블록(960)에서 모션 코딩을 위하여 블록 포메이션으로서 8x8 블록 포메이션을 선택하면, 텍스쳐 코딩 모듈(220)은 블록(970)으로 진행하여 8x8의 시뮬레이트된 텍스쳐 코딩 및 4x4의 시물레이트된 텍스쳐 코딩을 수행해 8x8 텍스쳐 코딩 및 4x4 텍스쳐 코딩의 각각에 대한 추정된 비트 스트림을 생성한다. 블록(770)에서 도 7을 참조하여 상기 설명한 바와 유사한 방식으로 텍스쳐 코딩 모듈(220)은 텍스쳐 코딩을 위하여 8x8 블록 크기를 사용할지 또는 4x4 블록 크기를 사용할지를 결정할 수 있다(블록(970)). 블록(960)에서 텍스쳐 코딩 모듈(220)이 블록 포메이션으로서 8x4 블록 포메이션 또는 4x8 블록 포메이션을 선택하면, 텍스쳐 코딩 모듈(220)은 블록(980)으로 진행하여 텍스쳐 코딩(예컨대, DCT 변환)을 위하여 블록 크기로서 4x4 블록 크기를 선택한다. 텍스쳐 코딩 모듈(220)은 결정된 블록 크기에 기초하여 진정 텍스쳐 코딩을 수행하고 엔트로피 코딩(예컨대, 허프만 코딩, 런-길이 코딩 등)을 수행하여 전송될 진정 비트 스트림을 생성할 수 있다.
당업자는, 여기에 개시된 본 프로세스와 방법 및 기타 프로세스와 방법에 대하여, 그 프로세스 및 방법에서 수행되는 기능이 다른 순서로 구현될 수 있다는 것을 인정할 것이다. 또한, 개시된 단계 및 동작은 단지 예시로서 제공된 것일 뿐이며, 일부 단계 및 동작은 개시된 실시예의 본질을 벗어나지 않고, 선택적이거나 더 적은 단계 및 동작으로 조합되거나, 추가적인 단계 및 동작으로 확장될 수 있다.
본 개시는 다양한 태양의 예시로서 의도된 본 출원에 기술된 특정 실시예들에 제한되지 않을 것이다. 당업자에게 명백할 바와 같이, 많은 수정과 변형들이 그 사상과 범위를 벗어나지 않으면서 이루어질 수 있다. 여기에 열거된 것들에 더하여, 본 개시의 범위 안에서 기능적으로 균등한 방법과 장치가 위의 설명으로부터 당업자에게 명백할 것이다. 그러한 수정과 변형들은 첨부된 청구항의 범위에 들어가도록 의도된 것이다. 본 개시는 첨부된 청구항과 그러한 청구항에 부여된 균등물의 전 범위에 의해서만 제한될 것이다. 본 개시가 물론 다양할 수 있는 특정 방법, 시약, 합성 구성 또는 생물학적 시스템에 제한되지 않는 것으로 이해될 것이다. 또한, 여기에서 사용된 용어는 특정 실시예를 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않음이 이해될 것이다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 일반적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 일반적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C,등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). "A, B 또는 C 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 어떠한 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
또한, 마쿠쉬 그룹을 이용하여 본 개시의 특징 또는 양상이 기술될 때는, 당업자라면 본 개시가 또한 마쿠쉬 그룹의 임의의 개별 구성원 또는 구성원의 서브그룹을 이용하여 기술됨을 이해할 것이다.
서면의 기재를 제공하는 것과 같은 어떠한 그리고 모든 목적을 위해서, 본 개시에 기재된 모든 범위는 모든 어떠한 가능한 하위범위 및 그 하위범위의 조합을 또한 포괄함이 이해 되어야 한다. 임의의 나열된 범위는, 그 동일한 범위가 적어도 동일한 이분 범위, 삼분 범위, 사분 범위, 오분 범위, 십분 범위 등으로 분할될 수 있으며, 그러한 동일 범위를 충분히 기술하는 것으로 용이하게 인식될 수 있다. 제한되지 않은 예로서, 본 개시에 기재된 각 범위는, 하위 삼분, 중간 삼분, 상위 삼분 등으로 용이하게 분할될 수 있다. 또한, "까지(up to)", "적어도(at least)", “더 큰(greater than)”, “더 적은(less than)” 등과 같은 모든 언어는 인용된 수를 포함하며, 상술한 바와 같은 하위 범위로 분할될 수 있는 범위들을 나타냄이 이해되어야 한다. 마지막으로, 범위는 각 개별 구성요소를 포함됨이 이해되어야 한다. 따라서, 예를 들어, 1 내지 3 셀(cell)을 가지는 그룹은 1, 2 또는 3 셀을 가지는 그룹을 나타낸다. 유사하게, 1 내지 5 셀을 가지는 그룹은 1, 2, 3, 4 또는 5 셀을 가지는 그룹을 나타내는 등이다.
전술한 바로부터, 본 개시의 다양한 실시예들은 예시의 목적으로 여기에서 기술되었음과, 본 개시의 사상과 범위를 벗어나지 않으면서 다양한 수정이 이루어질 수 있음이 이해될 것이다. 따라서, 여기에서 개시된 다양한 실시예들은 제한하는 것으로 의도되지 않으며, 진정한 범위 및 사상은 이하의 청구항에 의해 나타난다.

Claims (20)

  1. 이미지 데이터(image data)를 처리하기 위하여 복수의 코딩 블록 레벨(coding block level) 중에서 코딩 블록 레벨을 결정하고, 상기 결정된 코딩 블록 레벨에 따라 상기 이미지 데이터의 모션 코딩(motion coding)을 위하여 복수의 블록 포메이션(block formation) 중에서 블록 포메이션을 결정하도록 구성되는 모션 코딩 모듈; 및
    상기 결정된 블록 포메이션에 따라 상기 이미지 데이터의 텍스쳐 코딩(texture coding)을 위하여 복수의 블록 크기 중에서 블록 크기를 결정하여 이에 따라 코딩된 비트 스트림(coded bit stream)을 생성하도록 구성되는 텍스쳐 코딩 모듈
    을 포함하는 인코딩 장치.
  2. 제1항에 있어서,
    상기 모션 코딩 모듈은 상기 모션 코딩 모듈에 의하여 결정된 상기 블록 포메이션의 유닛(unit)에서 모션 추정(motion estimation(ME)) 연산을 수행하여 이에 따라 모션 정보를 출력하도록 더 구성되는, 인코딩 장치.
  3. 제2항에 있어서,
    상기 모션 정보 및 상기 코딩된 비트 스트림을 멀티플렉싱(multiplex)하도록 구성되는 멀티플렉서(multiplexer(MUX))를 더 포함하는 인코딩 장치.
  4. 제1항에 있어서,
    상기 모션 코딩 모듈은 상기 이미지 데이터를 하나 이상의 기본 이미지 처리 유닛(basic image processing unit)으로 분할하고 각각의 기본 이미지 처리 유닛을 서브 블록(sub-block)으로 4등분(quadrisect)하여 상기 서브 블록의 각각에 대한 상기 코딩 블록 레벨을 결정하도록 더 구성되는, 인코딩 장치.
  5. 제4항에 있어서,
    상기 모션 코딩 모듈은 상기 서브 블록의 각각에 대하여, 제1 유닛에서 제1 ME 연산을 수행하고, 제2 유닛에서 제2 ME 연산을 수행하도록 더 구성되는, 인코딩 장치.
  6. 제5항에 있어서,
    상기 모션 코딩 모듈은 상기 제1 유닛에서의 상기 제1 ME 연산의 메트릭(metric)과 상기 제2 유닛에서의 상기 제2 ME 연산의 메트릭을 비교하여 이에 따라 상기 메트릭의 비교 결과에 기초하여, 상기 서브 블록의 각각의 상기 코딩 블록 레벨이 제1 블록 레벨에 있는지 결정하는, 인코딩 장치.
  7. 제6항에 있어서,
    상기 코딩 블록 레벨이 상기 제1 블록 레벨에 있다고 상기 모션 코딩 모듈이 결정하면, 상기 모션 코딩 모듈은 상기 블록 포메이션을 32x32 슈퍼 블록 포메이션, 32x16 서브 슈퍼 블록 포메이션 및 16x32 서브 슈퍼 블록 포메이션 중 하나로 결정하도록 구성되는, 인코딩 장치.
  8. 제7항에 있어서,
    상기 블록 포메이션이 32x32 슈퍼 블록 포메이션이라고 상기 모션 코딩 모듈이 결정하면, 상기 텍스쳐 코딩 모듈은 상기 32x32 슈퍼 블록 포메이션에서 상기 이미지 데이터에 대한 32x32 DCT 코딩 및 16x16 DCT 코딩을 수행하도록 구성되는, 인코딩 장치.
  9. 제8항에 있어서,
    상기 텍스쳐 코딩 모듈은 상기 32x32 DCT 코딩에 의해 생성된 제1 비트 스트림의 양과 상기 16x16 DCT 코딩에 의해 생성된 제2 비트 스트림의 양을 비교하여 상기 32x32 슈퍼 블록 포메이션에서 상기 이미지 데이터에 대한 상기 텍스처 코딩을 위한 상기 블록 크기를 결정하도록 더 구성되는, 인코딩 장치.
  10. 제7항에 있어서,
    상기 블록 포메이션이 상기 32x16 서브 슈퍼 블록 포메이션 및 상기 16x32 서브 슈퍼 블록 포메이션 중 하나라고 상기 모션 코딩 모듈이 결정하면, 상기 텍스쳐 코딩 모듈은 상기 결정된 블록 포메이션에서 상기 이미지 데이터에 대한 16x16 DCT 코딩을 수행하도록 구성되는, 인코딩 장치.
  11. 제6항에 있어서,
    상기 서브 블록의 각각의 상기 코딩 블록 레벨이 상기 제1 블록 레벨에 있지 않다고 상기 모션 코딩 모듈이 결정하면, 상기 모션 코딩 모듈은 상기 서브 블록의 각각을 매크로 블록(macro block)으로 4등분하고, 각각의 매크로 블록에 대하여, 매크로 블록의 유닛에서 ME 연산을 수행하고, 미디엄 블록의 유닛에서 ME 연산을 수행하여, 각각의 매크로 블록의 상기 코딩 블록 레벨이 매크로 블록 레벨에 있는지를 결정하도록 더 구성되는, 인코딩 장치.
  12. 적어도 하나의 이미지 프레임(image frame)을 가지는 입력 비디오(video)를 수신하도록 구성되고, 상기 이미지 프레임을 이미지 데이터로 변환하도록 구성되는 입력 모듈;
    인코더;
    상기 입력 모듈 및 상기 인코더의 동작을 제어하도록 구성되는 컨트롤러(controller); 및
    상기 이미지 데이터를 저장하도록 구성된 메모리
    를 포함하는 이미지 처리 시스템(image processing system)으로서,
    상기 인코더는,
    상기 이미지 데이터를 처리하기 위하여 복수의 코딩 블록 레벨 중에서 코딩 블록 레벨을 결정하고, 상기 결정된 코딩 블록 레벨에 따라 상기 이미지 데이터의 모션 코딩을 위하여 복수의 블록 포메이션 중에서 블록 포메이션을 결정하도록 구성되는 모션 코딩 모듈; 및
    상기 결정된 블록 포메이션에 따라 상기 이미지 데이터의 텍스쳐 코딩을 위하여 복수의 블록 크기 중에서 블록 크기를 결정하여 이에 따라 코딩된 비트 스트림을 생성하도록 구성되는 텍스쳐 코딩 모듈을 포함하는, 이미지 처리 시스템.
  13. 제12항에 있어서,
    상기 코딩된 비트 스트림을 유선 또는 무선 통신 프로토콜(communication protocol)을 통하여 적어도 하나의 외부 장치로 송신하도록 구성되는 통신 모듈을 더 포함하는 이미지 처리 시스템.
  14. 이미지 데이터를 수신하는 단계;
    상기 이미지 데이터를 하나 이상의 기본 이미지 처리 유닛으로 분할하고, 각각의 기본 이미지 처리 유닛을 서브 블록으로 분할하여 상기 서브 블록의 각각을 처리하기 위하여 복수의 코딩 블록 레벨 중에서 코딩 블록 레벨을 결정하는 단계;
    상기 결정된 코딩 블록 레벨에 따라 상기 서브 블록의 각각에서 상기 이미지 데이터의 모션 코딩을 위하여 복수의 블록 포메이션 중에서 블록 포메이션을 결정하는 단계; 및
    상기 결정된 블록 포메이션에 따라 상기 서브 블록의 각각에서 상기 이미지 데이터의 텍스쳐 코딩을 위하여 복수의 블록 크기 중에서 블록 크기를 결정하는 단계
    를 포함하는 이미지를 처리하기 위한 방법.
  15. 제14항에 있어서,
    상기 결정된 블록 포메이션의 유닛에서 ME 연산을 수행하여 이에 따라 모션 정보를 출력하는 단계를 더 포함하는 이미지를 처리하기 위한 방법.
  16. 제14항에 있어서,
    상기 코딩 블록 레벨을 결정하는 단계는 상기 서브 블록의 각각에 대하여, 제1 유닛에서 ME 연산을 수행하고, 제2 유닛에서 ME 연산을 수행하여, 이에 따라 상기 서브 블록의 각각의 상기 코딩 블록 레벨이 제1 블록 레벨에 있는지 결정하는 단계를 포함하는, 이미지를 처리하기 위한 방법.
  17. 제16항에 있어서,
    상기 코딩 블록 레벨이 상기 제1 블록 레벨로 결정되면, 상기 블록 포메이션은 32x32 슈퍼 블록 포메이션, 32x16 서브 슈퍼 블록 포메이션 및 16x32 서브 슈퍼 블록 포메이션 중에서 결정되는, 이미지를 처리하기 위한 방법.
  18. 제17항에 있어서,
    상기 블록 포메이션이 상기 32x32 슈퍼 블록 포메이션으로 결정되면, 상기 블록 크기를 결정하는 단계는 상기 32x32 슈퍼 블록 포메이션에서 상기 이미지 데이터에 대한 32x32 DCT 코딩 및 16x16 DCT 코딩을 수행하는 단계를 더 포함하는, 이미지를 처리하기 위한 방법.
  19. 제18항에 있어서,
    상기 블록 크기를 결정하는 단계는 상기 32x32 DCT 코딩에 의해 생성된 제1 비트 스트림의 양과 상기 16x16 DCT 코딩에 의해 생성된 제2 비트 스트림의 양을 비교하는 단계를 포함하는, 이미지를 처리하기 위한 방법.
  20. 제17항에 있어서,
    상기 블록 포메이션이 상기 32x16 서브 슈퍼 블록 포메이션 및 상기 16x32 서브 슈퍼 블록 포메이션 중 하나로 결정되면, 상기 방법은 상기 결정된 블록 포메이션에서 상기 이미지 데이터에 대하여 16x16 DCT 코딩을 수행하는 단계를 더 포함하는 이미지를 처리하기 위한 방법.
KR1020127023634A 2010-02-17 2010-12-13 코딩 구조 KR101354014B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/707,447 2010-02-17
US12/707,447 US8532408B2 (en) 2010-02-17 2010-02-17 Coding structure
PCT/KR2010/008894 WO2011102597A1 (en) 2010-02-17 2010-12-13 Coding structure

Publications (2)

Publication Number Publication Date
KR20120118501A KR20120118501A (ko) 2012-10-26
KR101354014B1 true KR101354014B1 (ko) 2014-01-23

Family

ID=44369693

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127023634A KR101354014B1 (ko) 2010-02-17 2010-12-13 코딩 구조

Country Status (5)

Country Link
US (5) US8532408B2 (ko)
JP (1) JP5578743B2 (ko)
KR (1) KR101354014B1 (ko)
CN (2) CN102763412B (ko)
WO (1) WO2011102597A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160140381A (ko) * 2015-05-29 2016-12-07 삼성전자주식회사 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8577164B2 (en) * 2009-01-19 2013-11-05 Telefonaktiebolaget L M Ericsson (Publ) Image processing
WO2014190468A1 (en) * 2013-05-27 2014-12-04 Microsoft Corporation Video encoder for images
EP3120556B1 (en) 2014-03-17 2021-01-13 Microsoft Technology Licensing, LLC Encoder-side decisions for screen content encoding
CN103957421B (zh) * 2014-04-14 2017-05-31 上海大学 一种基于纹理复杂度的hevc编码尺寸快速判定方法
US10924743B2 (en) 2015-02-06 2021-02-16 Microsoft Technology Licensing, Llc Skipping evaluation stages during media encoding
US10038917B2 (en) 2015-06-12 2018-07-31 Microsoft Technology Licensing, Llc Search strategies for intra-picture prediction modes
US10136132B2 (en) 2015-07-21 2018-11-20 Microsoft Technology Licensing, Llc Adaptive skip or zero block detection combined with transform size decision
WO2017064763A1 (ja) * 2015-10-14 2017-04-20 ユニ・チャーム株式会社 吸収性物品に係る単票状シートの搬送方法、及び搬送装置
US10275646B2 (en) * 2017-08-03 2019-04-30 Gyrfalcon Technology Inc. Motion recognition via a two-dimensional symbol having multiple ideograms contained therein

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060078053A1 (en) * 2004-10-07 2006-04-13 Park Seung W Method for encoding and decoding video signals

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021891A (en) 1990-02-27 1991-06-04 Qualcomm, Inc. Adaptive block size image compression method and system
JPH11146396A (ja) * 1997-11-13 1999-05-28 Nippon Telegr & Teleph Corp <Ntt> 動画像圧縮符号化・復号化方法、動画像圧縮符号化・復号化装置、動画像符号化伝送方法、動画像符号化伝送システムおよび動画像圧縮符号化・復号化プログラムを記録した記録媒体
JP2003250161A (ja) * 2001-12-19 2003-09-05 Matsushita Electric Ind Co Ltd 符号化装置及び復号化装置
JP2003259377A (ja) * 2002-03-06 2003-09-12 Matsushita Electric Ind Co Ltd 動画像符号化方法、動画像復号化方法および符号列フォーマット
DE102004041664A1 (de) * 2004-08-27 2006-03-09 Siemens Ag Verfahren zum Codieren und Decodieren, sowie Codier- und Decodiervorrichtung zur Videocodierung
KR100896279B1 (ko) * 2005-04-15 2009-05-07 엘지전자 주식회사 영상 신호의 스케일러블 인코딩 및 디코딩 방법
CN103118252B (zh) 2005-09-26 2016-12-07 三菱电机株式会社 运动图像编码装置以及运动图像译码装置
JP4977094B2 (ja) * 2008-06-25 2012-07-18 株式会社東芝 画像符号化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060078053A1 (en) * 2004-10-07 2006-04-13 Park Seung W Method for encoding and decoding video signals

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160140381A (ko) * 2015-05-29 2016-12-07 삼성전자주식회사 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기
KR102606241B1 (ko) 2015-05-29 2023-11-24 삼성전자주식회사 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기

Also Published As

Publication number Publication date
US20110200264A1 (en) 2011-08-18
US9924170B2 (en) 2018-03-20
US20150043651A1 (en) 2015-02-12
JP2013520124A (ja) 2013-05-30
US8891891B2 (en) 2014-11-18
US20160269729A1 (en) 2016-09-15
US20140010285A1 (en) 2014-01-09
US10051271B2 (en) 2018-08-14
CN102763412B (zh) 2015-06-03
KR20120118501A (ko) 2012-10-26
US20160269728A1 (en) 2016-09-15
WO2011102597A1 (en) 2011-08-25
CN102763412A (zh) 2012-10-31
CN104822064A (zh) 2015-08-05
JP5578743B2 (ja) 2014-08-27
US8532408B2 (en) 2013-09-10
CN104822064B (zh) 2018-07-31
US10051272B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
KR101354014B1 (ko) 코딩 구조
JP5596801B2 (ja) 監視システム
TWI673687B (zh) 畫像編碼裝置、畫像解碼裝置、畫像編碼方法、畫像解碼方法及記憶媒體
CN103281527B (zh) 图像编解码方法及相关装置
JP7271580B2 (ja) 画像の符号化・復号化方法および装置、電子機器ならびにシステム
EP3177015A1 (en) Image prediction method and related device
JP2016226001A (ja) デコーダおよび復号方法
WO2020103800A1 (zh) 视频解码方法和视频解码器
KR20220145405A (ko) 피쳐 양자화/역양자화를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
CN105282558A (zh) 帧内像素预测方法、编码方法、解码方法及其装置
CN105474642A (zh) 使用频域差对图像集合进行重新编码
CN103402091B (zh) 云桌面图像分类与编码方法
JP2021529477A (ja) 画像の符号化方法、復号化方法、エンコーダ、およびデコーダ
TW201436542A (zh) 利用內容資訊改善視訊編碼的系統與方法
KR20170026387A (ko) 인코딩 또는 디코딩을 위한 이미지 샘플들을 예측하기 위한 방법 및 장치
US20160373688A1 (en) Non-transitory computer-readable storage medium, coded data generation method and coded data generation device
US11838519B2 (en) Image encoding/decoding method and apparatus for signaling image feature information, and method for transmitting bitstream
KR20230028745A (ko) 영상 분석을 이용한 비디오 부호화/복호화 방법 및 장치
WO2013144932A1 (en) Encoding and transmitting video streams
CN103313055B (zh) 一种基于分割的色度帧内预测方法、及视频编码解码方法
Zhang et al. Fast CU splitting in HEVC intra coding for screen content coding
JP7027044B2 (ja) 画像符号化装置、画像符号化方法及びプログラム
WO2023173929A1 (zh) 编解码方法和装置
WO2020119742A1 (zh) 块划分方法、视频编解码方法、视频编解码器
CN118020290A (zh) 用存储器高效预测模式选择来编码和解码视频的***和方法

Legal Events

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

Payment date: 20161227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200109

Year of fee payment: 7