KR100827679B1 - 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법 - Google Patents

통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법 Download PDF

Info

Publication number
KR100827679B1
KR100827679B1 KR1020060077026A KR20060077026A KR100827679B1 KR 100827679 B1 KR100827679 B1 KR 100827679B1 KR 1020060077026 A KR1020060077026 A KR 1020060077026A KR 20060077026 A KR20060077026 A KR 20060077026A KR 100827679 B1 KR100827679 B1 KR 100827679B1
Authority
KR
South Korea
Prior art keywords
transform
value
block
sub
clock
Prior art date
Application number
KR1020060077026A
Other languages
English (en)
Other versions
KR20080015562A (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 엠텍비젼 주식회사
Priority to KR1020060077026A priority Critical patent/KR100827679B1/ko
Publication of KR20080015562A publication Critical patent/KR20080015562A/ko
Application granted granted Critical
Publication of KR100827679B1 publication Critical patent/KR100827679B1/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/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/423Methods 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 characterised by memory arrangements
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

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

Abstract

본 발명은 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법에 관한 것이다. 본 발명의 바람직한 일 실시예에 따르면, 트랜스폼(transform)을 수행하는 모듈에 있어서, 정해진 크기의 블록의 픽셀값들을 입력받는 제1 버퍼; 상기 픽셀값들을 제1 방향의 서브 블록 단위로 입력받고 코덱 유형 정보를 입력받아 상응하는 트랜스폼을 수행하여 1차 변환값을 산출하는 트랜스폼부; 및 상기 1차 변환값을 제2 방향으로 저장하는 트랜스포즈 메모리를 포함하되, 상기 트랜스폼부는 상기 제1 방향으로 서브 블록 단위로 독출된 상기 1차 변환값을 이용하여 트랜스폼을 수행하여 2차 변환값을 산출하는 것을 특징으로 하는 트랜스폼 모듈이 제공될 수 있다. 따라서, 본 발명에 의해 둘 이상의 비디오 코덱에서 범용적으로 이용될 수 있다.
Figure R1020060077026
통합 코덱, integrated codec, 트랜스폼, transform

Description

통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법{Inverse transform module and method for integrated video codec}
도 1은 일반적인 H.264/RV(Real Video) 디코더의 구성을 개략적으로 나타낸 블록도.
도 2는 일반적인 MPEG-4/WMV(Windows Media Video) 디코더의 구성을 개략적으로 나타낸 블록도.
도 3은 본 발명의 바람직한 일 실시예에 따른 트랜스폼을 위한 모듈의 블록 구성도.
도 4는 본 발명의 바람직한 일 실시예에 따른 제1 버퍼에 저장된 블록을 예시한 도면.
도 5는 본 발명의 바람직한 일 실시예에 따른 트랜스폼부의 블록 구성도.
도 6는 본 발명의 바람직한 일 실시예에 따른 코덱 유형에 따른 참조 계수를 예시한 표.
도 7은 본 발명의 바람직한 일 실시예에 따른 트랜스폼 모듈이 8×8 크기의 블록에 대해 2차 트랜스폼을 수행하는 과정을 나타낸 순서도.
도 8은 본 발명의 바람직한 일 실시예에 따른 트랜스폼부가 변환값을 산출하는 과정을 나타낸 순서도.
도 9는 본 발명의 바람직한 다른 실시예에 따른 트랜스폼부의 블록 구성도.
도 10은 본 발명의 바람직한 다른 실시예에 따른 트랜스폼 모듈의 블록 구성도.
<도면의 주요 부분에 대한 부호의 설명>
310: 제1 버퍼
320 : 트랜스폼부(inverse transform)
330 : 트랜스포즈 메모리(transpose memory)
340 : 제2 버퍼
본 발명은 비디오 코덱의 트랜스폼 모듈 및 방법에 관한 것으로, 다양한 부호화/복호화 표준(다양한 코덱)에 범용적으로 이용될 수 있는 통합 트랜스폼 모듈 및 방법에 관한 것이다.
현존하는 많은 비디오 압축 표준들은 영상의 공간적 중복성을 감소시키기 위해 DCT(discrete cosine transform)를 주로 사용하였다. 그러나 종래의 DCT는 소수점 연산을 이용함으로써 데이터 손실이 불가피한 문제점이 발생되었다. 이로 인해, 최근의 비디오 압축 표준들은 소수점 연산을 사용하는 DCT를 대신하여 정수 연산으 로 변환을 수행하는 Integer Transform을 사용함으로써 소수점 연산에 따른 데이터 손실을 방지하였다. 그러나, 이와 같은 트랜스폼(transform)은 각각의 동영상 표준에 따라(예를 들어, MPEG-4, H.264, WMV, RV 등) 각각 상이하여 하나의 표준에 따른 트랜스폼이 다른 동영상 코덱에서는 동작되지 않은 문제점이 있다. 이와 같은 문제점으로 인해, 통합 코덱의 경우 각각의 동영상 코덱에 따른 트랜스폼 블록을 개별적으로 설계함으로써 하드웨어 개발시 칩 면적이 전체적으로 증가하는 단점이 존재한다.
따라서, 상술한 문제점을 해결하기 위한 본 발명의 목적은 각각의 비디오 코덱에서 각각 상이하게 사용되는 트랜스폼을 행렬식으로 재정의하여 둘 이상의 상이한 코덱에서 범용으로 적용될 수 있는 통합 코덱을 위한 트랜스폼 모듈 및 방법을 제공하는 것이다.
본 발명의 다른 목적은 통합 코덱에서 이용될 수 있는 단일 트랜스폼 모듈을 제공함으로써, 하드웨어 칩 면적을 최소화할 수 있는 통합 코덱을 위한 트랜스폼 모듈 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 단일 트랜스폼 모듈을 제공함으로써 시스템의 개발 단가를 낮출 수 있는 통합 코덱을 위한 트랜스폼 모듈 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 다양한 형태의 통합 코덱 시스템에 적용할 수 있 으며, 이로 인해 개발 시간을 단축하여 시장경쟁에서 우위를 선점할 수 있는 통합 코덱을 위한 트랜스폼 모듈 및 방법을 제공하는 것이다.
이외의 본 발명의 목적들은 하기의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 바람직한 일 측면에 따르면 동영상 코덱별로 상이한 트랜스폼을 수행할 수 있는 단일 트랜스폼 모듈이 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 트랜스폼(transform)을 수행하는 모듈에 있어서, 정해진 크기의 블록의 픽셀값들을 입력받는 제1 버퍼; 상기 픽셀값들을 제1 방향의 서브 블록 단위로 입력받고 코덱 유형 정보를 입력받아 상응하는 트랜스폼을 수행하여 1차 변환값을 산출하는 트랜스폼부; 및 상기 1차 변환값을 제2 방향으로 저장하는 트랜스포즈 메모리를 포함하되, 상기 트랜스폼부는 상기 제1 방향으로 서브 블록 단위로 독출된 상기 1차 변환값을 이용하여 트랜스폼을 수행하여 2차 변환값을 산출하는 것을 특징으로 하는 트랜스폼 모듈이 제공될 수 있다.
상기 트랜스폼부는, 코덱 유형 정보에 따른 하나 이상의 참조 계수를 저장하고 있는 참조 계수 테이블; 상기 서브 블록의 입력 픽셀들 및 상기 코덱 유형 정보에 따라 미리 설정된 참조 계수를 승산하여 제1 중간값을 각각 산출하는 승산부; 둘 이상의 제1 중간값을 이용하여 제2 중간값을 각각 산출하며, 둘 이상의 제2 중간값을 이용하여 제3 중간값을 산출하는 가감산부; T 클럭이면 상기 제3 중간값을 상기 가감산부로부터 입력받아 저장하는 레지스터; T+1 클럭이면 상기 제3 중간값을 상기 가감산부로부터 입력받아 상기 레지스터에 저장된 값과 가감 연산을 수행하여 변환값을 산출하는 가감산기; 및 코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하는 보정부를 포함할 수 있다.
상기 블록의 상기 제1 방향의 픽셀의 개수가 2N이면, 상기 승산부는 T 클럭인 경우 각각의 홀수번째 입력 픽셀값들을 입력받으며, T+1 클럭인 경우 각각의 짝수번째 입력 픽셀값들을 입력받을 수 있다.
상기 블록의 상기 제1 방향의 픽셀의 개수가 N이면, 상기 가감산부는 상기 제3 중간값을 상기 변환값으로 보정부로 출력할 수 있다. 여기서, 상기 N은 4일 수 있다.
상기 트랜스폼부는 입력된 복수의 입력 픽셀값을 하나의 변환값으로 산출하여 출력할 수 있다.
상기 정해진 크기의 블록은 2×2, 4×4, 4×8, 8×4 및 8×8 중 어느 하나의 크기일 수 있다.
상기 제1 방향은 수평 방향 또는 수직 방향 중 어느 하나이며, 상기 제2 방향은 상기 수평 방향 또는 상기 수직 방향 중 다른 하나일 수 있다.
본 발명의 바람직한 다른 실시예에 따르면, 트랜스폼을 수행하는 모듈에 있어서, 정해진 크기의 블록의 픽셀값들을 입력받는 제1 버퍼; 상기 픽셀값들을 제1 방향의 서브 블록 단위로 입력받고 코덱 유형 정보를 입력받아 상응하는 트랜스폼을 수행하여 1차 변환값을 산출하는 제1 트랜스폼부; 상기 1차 변환값을 제2 방향 으로 저장하는 트랜스포즈 메모리; 및 상기 1차 변환값을 상기 제1 방향의 서브 블록 단위로 독출받아 상기 참조 계수를 이용하여 트랜스폼을 수행하여 2차 변환값을 산출하는 제2 트랜스폼부를 포함하는 트랜스폼 모듈이 제공될 수 있다.
본 발명의 바람직한 다른 측면에 따르면, 동영상 코덱별로 상이한 트랜스폼을 수행할 수 있는 트랜스폼 모듈이 임의의 블록에 대해 2차원 트랜스폼을 수행하는 방법이 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 트랜스폼 모듈 임의의 블록에 대해 2차원 트랜스폼을 수행하는 방법에 있어서, (a) 입력되는 미리 정해진 크기의 블록의 픽셀값들을 제1 방향의 서브 블록 단위로 입력받아 미리 설정된 참조 계수값들을 이용하여 1차 변환값을 산출하는 단계; (b) 상기 1차 변환값을 트랜스포즈 메모리에 제2 방향으로 저장하는 단계; 및 (c) 상기 제1 방향으로 서브 블록 단위로 독출된 상기 1차 변환값과 상기 참조 계수를 이용하여 2차 변환값을 산출하는 단계를 포함하는 트랜스폼 방법이 제공될 수 있다.
상기 (a) 단계 및 상기 (c) 단계는 각각, 상기 서브 블록의 각각의 입력 픽셀을 미리 정해진 순서대로 입력받아 상기 참조 계수값과 승산하여 제1 중간값을 각각 산출하는 단계; 둘 이상의 제1 중간값을 가감하여 제2 중간값을 각각 산출하고, 둘 이상의 제2 중간값을 가감하여 제3 중간값을 산출하여 출력하는 단계; 클럭이 T 클럭인지 또는 T+1 클럭인지 여부를 판단하는 단계; 만일 T 클럭이면 상기 제3 중간값을 레지스터에 저장하고, 만일 T+1 클럭이면 T 클럭에 산출되어 상기 레지 스터에 저장된 값과 상기 제3 중간값을 가감하여 변환값을 산출하는 단계; 및 만일 T+1 클럭이면 코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하여 출력하는 단계를 포함할 수 있다.
상기 (a) 단계 및 상기 (c) 단계는 각각, 상기 입력 픽셀의 개수가 N개인지 여부를 판단하는 단계; 만일 N개라고 판단되면, 상기 서브 블록의 각각의 입력 픽셀을 미리 정해진 순서대로 입력받아 상기 참조 계수값과 승산하여 제1 중간값을 각각 산출하는 단계; 둘 이상의 제1 중간값을 이용하여 제2 중간값을 각각 산출하고, 둘 이상의 제2 중간값을 가감하여 제3 중간값을 산출하고, 상기 제3 중간값을 변환값으로 출력하는 단계; 및 코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하여 출력하는 단계를 포함할 수 있다. 여기서, 상기 N은 4인 자연수일 수 있다.
상기 블록의 픽셀값은 현재 프레임과 참조 프레임의 픽셀간의 차이 정보일 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하 게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, MPEG-4/JPEG에 사용되는 Transform은 DCT(Discrete Cosine Transform) / IDCT(Inverse Discrete Cosine Transform)이고, H.264/WMV/RV에 사용되는 Transform은 DCT 연산을 정수화 시킨 Integer Transform이지만, 본 발명의 설명에 있어서 편의를 도모하고자 모두 IDCT라고 칭하기로 한다.
도 1은 일반적인 H.264/RV 디코더의 구성을 개략적으로 나타낸 블록도이며, 도 2는 일반적인 MPEG-4/WMV 디코더의 구성을 개략적으로 나타낸 블록도이다. 본 발명에 따른 통합 트랜스폼 모듈에 대해 설명하기 전에 우선 이해와 설명의 편의를 위해 도 1및 도 2를 참조하여 종래의 디코더의 구성에 대해 간략하게 설명하기로 한다.
도 1에서 보여지는 바와 같이, 일반적인 H.264/RV 디코더(100)는 엔트로피 디코딩부(entropy decoder, 110), 역 양자화부(inverse quantization, 115), IDCT부(inverse discrete cosine transform, 120), 인트라 예측부(intra prediction, 125), 모션 보상부(motion compensation, 130) 및 디블러킹 필터부(deblocking filter, 135)를 포함하여 구성된다.
엔트로피 디코딩부(110)는 입력된 비트스트림(즉, 인코딩된 비트스트림)을 정해진 가변길이 부호화 방법(VLC: variable length coding)를 이용하여 복호화한다. 예를 들어, 엔트로피 디코딩부(110)는 입력된 비트스트림을 가변길이 부호화 방법을 이용하여 복호화하여 MD(motion difference)와 차이정보(residual-참조 프레임(reference frame)과 현재 프레임(current frame)간의 차이값)가 복호된다. 엔트로피 디코딩부(110)에 의해 복호된 차이정보는 참조 프레임과 현재 프레임의 차이값(즉, 픽셀의 차이값)은 인코딩 과정에서 차이정보를 IDCT를 수행한 후 양자화 과정을 거치게 되므로, 역으로 양자화된 차이정보(설명의 편의를 위해, A라고 가정하자)임을 알 수 있다.
역 양자화부(115)는 엔트로피 디코딩부(110)에 의해 복호된 차이정보(A)를 역 양자화한다(편의상 역 양자화된 차이정보를 A'라고 가정하자). 역 양자화부(115)는 인코딩시에 지정된 양자화값(QP :quantization parameter)를 이용하여 역 양자화를 수행한다.
IDCT부(120)는 역 양자화부(115)를 통해 역 양자화된 차이정보(A')를 역 IDCT를 수행하여 차이정보를 생성한다. 즉, IDCT부(120)를 통해 트랜스폼된 차이정보는 참조 프레임과 현재 프레임의 실제 차이에 따른 픽셀값일 수 있다. 예를 들어, IDCT부(120)는 4×4 DCT와 같은 특성을 갖는 integer transform이 수행된다.
인트라 예측부(125)는 디코딩되는 블록(block)과 이전 디코딩된 하나 이상의 블록들과의 유사성을 비교하여 가장 유사한 블록의 픽셀값과 IDCT부(120)에 의해 역 IDCT된 차이정보를 이용하여 VOP(video object plane)를 생성한다.
모션 보상부(130)는 이전 디코딩된 프레임과 IDCT부(120)를 통해 생성된 차 이정보를 이용하여 VOP를 생성한다. 인트라 예측부(125) 및 모션 보상부(130)는 선택적으로 동작되도록 제어될 수 있다. 이는 당업자에게는 자명한 사항이므로 상세한 설명은 생략하기로 한다.
디블러킹 필터부(135)는 생성된 VOP의 블록간의 경계면의 화질 열화를 개선하기 위해 필터링을 수행하여 블록간의 경계면을 부드럽게 보정한다.
도 2를 참조하면, MPEG-4 및 WMV 디코더(200)가 예시되어 있다. 도 2에서 보여지는 바와 같이, MPEG-4 및 WMV 디코더(200)는 엔트로피 디코딩부(210)를 수행한 후 인트라 예측부(215)를 수행한 후 역 양자화부(220)를 수행하는 것이 다를뿐 이외의 각각의 장치들의 개략적인 기능은 동일하므로 이에 대한 중복되는 설명은 생략하기로 한다.
일반적으로 동영상 코덱은 현재 프레임을 인코딩하는 과정에서 현재 프레임 정보를 그대로 인코딩하지 않고, 참조 프레임과의 차이정보에 대해 인코딩을 수행한다. 이때, 차이 정보를 이산코사인변환을 수행함으로써 에너지를 단지 몇 개의 변환 계수로 집중되는 에너지 응집(energy compaction) 효과를 얻을 수 있다. 이로 인해, 부호화 효율을 높일 수 있다. 이와 같은 변환 과정은 각각의 코덱별로 상이하게 구성된다.
이하, 이해의 편의를 위해, 각각의 코덱별 트랜스폼 방법에 대해 간략하게 설명하기로 한다. 도 1에 예시된 H.264 코덱의 경우, 4×4 트랜스폼(transform)을 지원하며, WMV 코덱은 8×8, 8×4, 4×8, 4×4 트랜스폼을 지원한다. 즉, 각각의 코덱은 코덱별로 최적화된 2차원 트랜스폼을 수행한다. 이로 인해, 하나 이상의 동 영상 인코딩/디코딩을 지원하는 통합 코덱의 경우 각각 상이한 트랜스폼을 위한 변환부를 각각 별도로 구비해야만 하는 문제점이 있었다.
JPEG/MPEG-4의 N×N 포워드 트랜스폼(forward transform)은 수학식1과 같다.
Figure 112006058114919-pat00001
여기서, x, y는 샘플 도메인(sample domain)내의 공간 좌표이며, 0, 1, 2, …, N-1일 수 있다. 여기서, N-1은 자연수이다. 그리고, u, v는 트랜스폼 도메인(transform domain)내의 좌표이며, 0, 1, 2, …, N-1일 수 있다. 그리고,
Figure 112006058114919-pat00002
는 u, v가 '0'이면
Figure 112006058114919-pat00003
이고, 그 외이면 1이다. 수학식1의 트랜스폼의 역 트랜스폼은 수학식2와 같다.
Figure 112006058114919-pat00004
그리고, WMV(window media video)의 N×N 역 트랜스폼은 수학식3과 같다.
Figure 112006058114919-pat00005
여기서, M,N은 4 또는 8이며,
Figure 112006058114919-pat00006
은 (0 0 0 0 1 1 1 1)의 1×8의 열벡 터(column vector)이고,
Figure 112006058114919-pat00007
는 길이가 4인 영벡터(즉, 제로 컬럼 벡터(zero column vector))이다. 또한,
Figure 112006058114919-pat00008
은 길이가 M인 하나의 행벡터(row vector)이며,
Figure 112006058114919-pat00009
,
Figure 112006058114919-pat00010
,
Figure 112006058114919-pat00011
,
Figure 112006058114919-pat00012
는 역 양자화된 변환 계수 블록(inverse quantized transform coefficient block, 예를 들어, 역 변환을 위해 입력되는 블록일 수 있음)으로, 블록의 각각의 변환 계수의 값은 -2048 이상이며, 2047 미만인 정수일 수 있다. 그리고,
Figure 112006058114919-pat00013
,
Figure 112006058114919-pat00014
,
Figure 112006058114919-pat00015
,
Figure 112006058114919-pat00016
는 중간 행렬로써, 행렬내의 각각의 값은 -4096 이상이며, 4095 미만인 정수일 수 있다. 또한,
Figure 112006058114919-pat00017
,
Figure 112006058114919-pat00018
,
Figure 112006058114919-pat00019
,
Figure 112006058114919-pat00020
은 역 변환된 블록(inverse transformed block)으로 블록내의 각각의 값은 -512 이상이며, 512미만인 정수일 수 있다. 또한,
Figure 112006058114919-pat00021
,
Figure 112006058114919-pat00022
는 WMV에서 지원하는 역 변환(transform)을 위해 미리 설정된 참조 계수 블록으로 수학식4, 수학식 5와 같다.
Figure 112006058114919-pat00023
Figure 112006058114919-pat00024
그리고, H.264 코덱의 경우, 3가지 트랜스폼이 선택적으로 사용된다. 예를 들어, 인트라 코딩에서 16×16 매크로 블록(macroblock)에서 루미넌스(luminance) 정보는 하기 수학식6를 이용한 4×4 하다마드(hadamard) 트랜스폼이 사용되며, 크로미넌스(chrominance) 정보는 하기 수학식7를 이용한 2×2 하다마드 트랜스폼이 사용되고, 참조 프레임과 현재 프레임의 픽셀간의 차이정보는 하기 수학식8을 이용하여 4×4 트랜스폼이 사용된다.
Figure 112006058114919-pat00025
Figure 112006058114919-pat00026
Figure 112006058114919-pat00027
여기서,
Figure 112006058114919-pat00028
이다.
마지막으로, 리얼비디오(RealVideo, 이하 "RV"라 칭함)는 수학식9를 이용하여 4×4 포워드 트랜스폼를 수행한다.
Figure 112006058114919-pat00029
상술한 바와 같이, 각각의 동영상 코덱은 서로 다른 트랜스폼 방법을 정의하여 지원하고 있다. 이로 인해, 하나 이상의 동영상 코덱을 지원하는 멀티 코덱의 경우 각각의 동영상 코덱별로 상이한 트랜스폼을 각각 별도로 설계하여 구비함으로써 전체적인 코덱의 면적이 증가하게 되는 문제점이 발생하였다.
이로 인해, 본 발명은 각각의 동영상 코덱별로 상이한 트랜스폼을 행렬식으로 재정의하여 하나의 트랜스폼 모듈에서 각각의 코덱에 따른 트랜스폼을 수행할 수 있도록 구현하였다. 본 발명에 따른 트랜스폼 모듈에 대해 설명하기 이전에 이해와 설명의 편의를 위해 각각의 동영상 코덱별 트랜스폼을 재정리한 수학식에 대 해서 간략하게 설명하기로 한다.
우선, JPEG/MPEG-4의 트랜스폼을 하나 이상의 4×4 행렬식으로 재정리하면 수학식10과 같다.
Figure 112006058114919-pat00030
여기서,
Figure 112006058114919-pat00031
이고,
Figure 112006058114919-pat00032
이며,
Figure 112006058114919-pat00033
이고,
Figure 112006058114919-pat00034
이며,
Figure 112006058114919-pat00035
이고,
Figure 112006058114919-pat00036
이며,
Figure 112006058114919-pat00037
이다.
그리고, WMV의 8×8 트랜스폼을 행렬식으로 재정리하면 수학식11과 같다.
Figure 112006058114919-pat00038
여기서, A는 12, B는 16, C는 6, D는 16, E는 15, F는 9, G는 4인 정수일 수 있다.
WMV의 4×4 트랜스폼을 행렬식으로 재정리하면 수학식12과 같다.
Figure 112006058114919-pat00039
여기서, A는 17, B는 22, C는 10인 정수일 수 있다.
또한, H.264 코덱의 루미넌스 정보의 트랜스폼을 행렬식으로 재정리하면 수학식13과 같으며, 차이정보(residual)의 트랜스폼을 행렬식으로 재정리하면 수학식14와 같다.
Figure 112006058114919-pat00040
Figure 112006058114919-pat00041
마지막으로, 리얼비디오의 트랜스폼을 행렬식으로 재정리하면 수학식15와 같다.
Figure 112006058114919-pat00042
여기서, A는 13, B는 17, C는 7인 정수일 수 있다.
이와 같이 행렬식으로 재정리된 트랜스폼은 하기의 수학식16과 같은 공통되는 행렬식으로 나타낼 수 있다.
Figure 112006058114919-pat00043
여기서, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15는 코덱별로 상이한 참조 계수로 0보다 큰 정수 일 수 있다. 하기에서 설명되는 본 발명에 따른 트랜스폼 모듈은 수학식16과 같이 공통되는 행렬식을 이용하여 트랜스폼을 수행한다. 이에 대해서는 하기에서 관련 도면을 참조하여 상세히 설명하기로 한다.
예를 들어, JPEG/MPEG-4의 8×8 이산여현트랜스폼(DCT)의 경우, 수학식10을 참조하면, 수학식16을 4회 수행하여 트랜스폼을 수행할 수 있음을 알 수 있다.
도 3은 본 발명의 바람직한 일 실시예에 따른 트랜스폼을 위한 모듈의 블록 구성도이며, 도 4는 본 발명의 바람직한 일 실시예에 따른 제1 버퍼에 저장된 블록을 예시한 도면이고, 도 5는 본 발명의 바람직한 일 실시예에 따른 트랜스폼부의 블록 구성도이며, 도 6는 본 발명의 바람직한 일 실시예에 따른 코덱 유형에 따른 참조 계수를 예시한 표이다. 이하, 트랜스폼 모듈(300)은 수학식16에 따른 행렬식을 이용하여 각각의 코덱별 트랜스폼을 수행할 수 있으며, 이를 위해, 멀티 코덱의 제어부(미도시)로부터 코덱 유형 정보를 입력받는 것을 가정하여 설명하기로 한다.
도 3을 참조하면, 본 발명의 바람직한 일 실시예에 따른 트랜스폼을 위한 모 듈(300)은 제1 버퍼(310), 트랜스폼부(320), 트랜스포즈 메모리(330) 및 제2 버퍼(340)를 포함하여 구성된다.
제1 버퍼(310)는 코덱 유형에 따라 트랜스폼을 수행할 블록의 픽셀값을 입력받아 일시적으로 저장한다. 여기서, 블록의 크기는 4×4, 4×8, 8×4, 8×8 크기 중 어느 하나일 수 있다.
예를 들어, JPEG/MPEG-4 코덱이라면, 블록의 크기는 8×8일 수 있으며, H.264 코덱이면 블록의 크기는 4×4, 2×2 중 어느 하나일 수 있다.
제1 버퍼(310)에 저장된 블록의 픽셀값들은 서브 블록 단위로(예를 들어, 제1 방향(즉, 수평 방향)) 하기에서 설명될 트랜스폼부(320)로 입력된다. 이하, 이해와 설명의 편의를 위해, 제1 버퍼(310)에서 트랜스폼부(320)로 입력되는 서브 블록의 각각의 픽셀값을 "입력 픽셀값"이라 칭하기로 한다. 여기서, 서브 블록의 픽셀의 개수는 4개 일 수 있다. 여기서, 블록의 각각의 픽셀값들은 현재 프레임과 참조 프레임의 픽셀간의 차이 정보일 수 있다.
예를 들어, 블록의 크기가 도 4에 예시된 바와 같이, 8×8이라고 가정하자. 서브 블록은 제1 방향(예를 들어, 수평 방향)을 기준으로, 제1 입력 픽셀값, 제3 입력 픽셀값, 제5 입력 픽셀값, 제7 입력 픽셀값이 하나의 서브 블록(311a, …, 318a)이 되며, 제2 입력 픽셀값, 제4 입력 픽셀값, 제6 입력 픽셀값, 제8 입력 픽셀값이 하나의 서브 블록(311b, …, 318b)이 된다.
트랜스폼부(320)는 제1 버퍼(310)를 통해 제어부의 제어에 의해 서브 블록 단위로 입력 픽셀값들을 입력받고, 멀티 코덱의 제어부를 통해 코덱 유형 정보에 따른 참조 계수를 입력받아 상응하는 트랜스폼을 수행하여 변환값을 산출한다. 여기서, 코덱 유형별 참조 계수는 도 6에 예시되어 있다. 도 6에서 pi는
Figure 112006058114919-pat00044
일 수 있다. 또한, 트랜스폼부(320)는 4개의 입력 픽셀값들을 입력받아 하나의 변환값을 산출하여 출력할 수 있다.
본 명세서에서는 트랜스폼부(320)가 도 6과 같은 참조 계수 테이블을 포함하고 있는 것을 가정하여 이를 중점으로 설명하나 구현 방법에 따라 코덱 유형 정보에 따라 선택된 참조 계수값을 각각 별도로 입력받아 서브 블록에 대해 트랜스폼을 수행할 수도 있음은 당연하다.
도 5를 참조하면, 본 발명의 바람직한 일 실시예에 따른 트랜스폼부(320)는 승산부(510), 가감산부(520) 및 보정부(530)를 포함하여 구성된다.
승산부(510)는 제1 버퍼(310)를 통해 입력된 입력 픽셀값과 코덱 유형에 따른 참조 계수를 승산하여 제1 중간값을 산출하여 가감산부(520)로 출력한다. 여기서, 승산부(510)는 산출된 제1 중간값을 각각의 승산기(510a, 510b, 510c, 510d)에 연결된 레지스터(515a, 515b, 515c, 515d)에 일시적으로 저장할 수도 있다.
예를 들어, 승산부(510)는 T 클럭(clock)이면, 제1 버퍼(310)로부터 제1 방향의 홀수번째 입력 픽셀값들(예를 들어, 제1 입력 픽셀값, 제3 입력 픽셀값, 제5 입력 픽셀값, 제7 입력 픽셀값)을 입력받아 참조 계수와 승산하여 각각의 레지스터(515a, 515b, 515c, 515d)에 저장할 수 있다. 그러나, 승산부(510)는 T+1 클럭(clock)이면, 제1 버퍼(310)로부터 제1 방향의 짝수번째 입력 픽셀값들(예를 들어, 제2 입력 픽셀값, 제4 입력 픽셀값, 제6 입력 픽셀값, 제8 입력 픽셀값)을 입 력받아 참조 계수와 승산하여 각각의 레지스터(515a, 515b, 515c, 515d)에 저장할 수 있다. 여기서, T 클럭과 T+1 클럭은 반복적으로 수행될 수 있다. 예를 들어, 제1 버퍼(310)의 제1 방향의 픽셀의 개수가 8개이면, T 클럭에는 홀수번째 픽셀값들로 구성된 서브 블록이 트랜스폼부(320)로 입력되며, T+1 클럭에는 짝수번째 픽셀값들로 구성된 서브 블록이 트랜스폼부(320)로 입력될 수 있다. 반면에 제1 버퍼(310)의 제1 방향의 픽셀의 개수가 4개이며, 제1 방향의 서브 블록 단위로 순차적으로 트랜스폼부(320)로 입력될 수 있다.
가감산부(520)는 승산부(510)를 통해 산출된 제1 중간값을 가감하여 변환값을 산출하여 보정부(530)로 전달한다.
가감산부(520)는 4개의 가감산기(520a, 520b, 520c, 520d)를 포함한다. 제1 가감산기(520a)는 제1 승산기(510a)와 제2 승산기(510b)에 의해 산출된 제1 중간값을 입력받아 가산 또는 감산하여 제3 가감산기(520c)로 출력한다. 본 발명에 따른 트랜스폼부(320)는 "0"이상의 양의 정수값만을 입력받아 승산을 수행한다. 상술한 바와 같이, 본 발명에 따른 트랜스폼부(320)는 수학식16과 같이 재정의된 행렬식을 이용하여 트랜스폼을 수행하도록 구현되었기 때문에 각각의 가감산기는 선택적으로 감산 또는 가산 중 어느 하나를 수행할 수 있다.
그리고, 제2 가감산기(520b)는 제3 승산기(510c)와 제4 승산기(510d)에 의해 산출된 제1 중간값을 입력받아 가감하여 제3 가감산기(520c)로 출력한다. 설명의 편의를 위해, 제1 가감산기(520a), 제2 가감산기(520b)에 의해 산출된 값을 제2 중간값이라 칭하기로 한다.
그리고, 제3 가감산기(520c)는 제1 가감산기(520a)와 제2 가감산기(520b)에 의해 산출된 제2 중간값을 가감하여 변환값을 산출하여 제5 레지스터(525) 또는 제4 가감산기(520d) 중 어느 하나로 출력한다. 여기서, 블록의 크기가 4×4이면, 제3 가감산기(520c)는 산출된 제3 중간값을 보정부(530)로 출력할 수 있다.
예를 들어, 제3 가감산기(520c)는 제어부의 제어에 의해 제1 가감산기(520a)와 제2 가감산기(520b)를 통해 제2 중간값을 입력받아 가감하여 제3 중간값을 산출하여 제5 레지스터(525)에 저장한다. 그리고, 그 다음 서브 블록에 대해 승산 및 가감 연산을 수행하여 제3 중간값을 산출하여 제4 가감산기(520d)로 출력한다.
예를 들어, 제3 가감산기(520c)는 T 클럭에서는 산출된 변환값을 제5 레지스터(525)에 일시적으로 저장하며, T+1 클럭이면 산출된 변환값을 제4 가감산기(520d)로 전달할 수 있다.
제4 가감산기(520d)는 제어부의 제어에 의해 T+1 클럭인 경우, 제5 레지스터(525)와 제3 가감산기(520c)를 통해 제3 중간값들을 입력받아 가감하여 변환값을 산출하여 보정부(530)로 출력한다.
보정부(530)는 코덱 유형에 따른 정밀도 정보를 입력받아 제4 가감산기(520d)로부터 입력된 변환값을 보정하여 출력한다.
예를 들어, MPEG-4 또는 JPEG의 트랜스폼 연산을 수행하게 되면 변환값이 30비트(예를 들어, -1073741824 ~ +1073741823)까지 확장되게 된다. 이는 코싸인(cosine) 함수 값에
Figure 112006058114919-pat00045
을 승산하여 연산을 수행하기 때문이다. 따라서, 보정부(530)는 이를 고려하여 하위 데이터를 잘라내어 이를 보정해야만 한다. 즉, 변환 값에
Figure 112006058114919-pat00046
를 나누어주어야만 한다. 이경우 하위 비트를 자르는 경우 반올림 연산을 수행하여 잘라내게 된다.
예를 들어, 하위 11비트를 잘라내는 경우는
Figure 112006058114919-pat00047
에 해당하는 값인 1024를 가산한 후 하위 11비트를 잘라내게 된다. 그리고, 코덱 유형 정보에 따르는 트랜스폼 연산 수행후 변환값이 존재해야할 범위내로 보정한다. 즉, MPEG-4의 경우 트랜스폼 수행 후 변환값은 -2048 ~ + 2047 내에 존재해야만 한다. 따라서, 하위 비트를 잘라낸 후 변환값이 예를 들어, 2080이면, 해당 범위 내로 보정하여 출력한다.
상술한 바와 같이, 트랜스폼부(320)는 제1 버퍼(310)를 통해 블록을 미리 설정된 서브 블록단위로 입력받아 연산(예를들어, 승산 및 가감 연산)을 수행하여 하나의 변환값을 산출하여 출력할 수 있다. 또한, 트랜스폼부(320)는 블록이 8×8의 크기이면, 하나의 변환값을 출력하기 위해, T 클럭에서는 제1 방향의 홀수번째 입력 픽셀값을 입력받아 연산을 수행하고, T+1 클럭에서는 짝수번째 입력 픽셀값을 입력받아 연산을 수행한 후 각각 연산된 값을 가감하여 변환값을 산출할 수 있다.
반면에, 트랜스폼부(320)는 블록의 크기가 4×4이면, 제3 가감산기(520c)까지의 연산으로 변환값을 산출할 수 있다. 따라서, 블록의 크기가 4×4이면, 트랜스폼부(320)는 제3 가감산기(520c)에 의해 산출된 값을 제5 레지스터(525) 또는 제4 가감산부(520d) 중 어느 하나로 출력하지 않고 보정부(530)로 출력할 수 있다. 그리고, 보정부(530)는 제어부를 통해 코덱 유형에 따른 정밀도 정보를 입력받아 이에 상응하여 변환값을 비트단위로 이동(shift)하거나 절단(clip)하여 코덱 유형에 따른 트랜스폼 특성에 상응하도록 정밀도를 조정하여 최종 변환된 변환값을 출력할 수 있다.
다시 도3을 참조하여, 트랜스포즈 메모리(330)는 트랜스폼부(320)를 통해 1차 변환된 값(이하 편의상 "1차 변환값"이라 칭하기로 함)을 입력받아 미리 정해진 제2 방향(예를들어, 수직 방향)으로 저장한다. 트랜스포즈 메모리(330)에 저장된 1차 변환값은 제어부의 제어에 의해 제1 방향으로 서브 블록 단위로 독출되어 트랜스폼부(320)로 출력될 수 있다.
이와 같이, 트랜스포즈 메모리(330)에 제2 방향으로 1차 변환값을 저장함으로써 별도의 연산 수행 없이 전치행렬 연산을 수행한 것과 동일한 효과를 얻을 수 있는 이점이 있다.
제2 버퍼(340)는 트랜스포즈 메모리(330)에 저장된 1차 변환값이 트랜스폼부(320)를 통해 정해진 연산(예를 들어, 승산, 가감산, 쉬프트, 절단(clip) 등)을 수행하여 산출된 2차 변환값을 입력받아 일시적으로 저장할 수 있다.
도 7은 본 발명의 바람직한 일 실시예에 따른 트랜스폼 모듈이 8×8 크기의 블록에 대해 2차 트랜스폼을 수행하는 과정을 나타낸 순서도이다. 이하에서 수행되는 각각의 단계는 멀티 코덱의 제어부(미도시)에 의해 제어되는 것을 가정하여 설명하기로 한다.
단계 710에서 제1 버퍼(310)는 트랜스폼을 수행할 임의의 블록의 픽셀값들을 입력받아 제1 방향으로 서브 블록 단위로 트랜스폼부(320)로 출력한다. 여기서, 블 록의 크기는 8×8이며, 서브 블록은 4개의 입력 픽셀들을 포함할 수 있다.
단계 715에서 트랜스폼부(320)는 제1 버퍼(310)로부터 서브 블록 단위로 입력 픽셀들을 입력받고, 제어부로부터 코덱 유형에 따른 참조 계수를 입력받아 연산을 수행하여 변환값(즉, 1차 변환값)을 산출하여 트랜스포즈 메모리(330)로 출력한다. 여기서, 트랜스포즈 메모리(330)는 1차 변환값을 제2 방향으로 저장할 수 있다(단계 720). 이하, 트랜스폼부(320)의 동작 수행 과정은 하기에서 도 8을 참조하여 상세히 설명하기로 한다.
단계 725에서 제어부는 제1 버퍼(310)에 저장된 블록의 모든 픽셀에 대해 서브 블록 단위로 1차 트랜스폼이 수행되었는지 여부를 판단한다.
예를 들어, 동영상 코덱별로 블록의 크기가 상이하므로 트랜스폼부(320)가 서브 블록을 몇회 입력받아 트랜스폼을 수행했는지 여부를 판단하여 1차 트랜스폼 완료 여부를 판단할 수 있다. 즉 블록이 8×8의 크기라면, 제1 방향으로 2개의 서브 블록으로 구성된다. 이때, 본 발명에 따른 트랜스폼부(320)는 제1 방향에 상응하여 하나의 변환값을 산출하기 위해 2개의 서브 블록에 대해 연산이 수행되어야 하므로, 8개의 변환값을 산출하기 위해서는 16개의 서브 블록이 입력됨을 알 수 있다.
만일 블록의 모든 픽셀값들에 대해 1차 트랜스폼이 수행되었다고 판단되면, 단계 730에서 트랜스폼부(320)는 제어부의 제어에 의해 트랜스포즈 메모리(330)로부터 제1 방향으로 서브 블록 단위로 1차 변환값들을 독출받는다.
단계 735에서 트랜스폼부(320)는 입력된 1차 변환값과 참조 계수를 이용하여 2차 트랜스폼을 수행하여 2차 변환값을 산출하여 제2 버퍼(340)로 출력한다. 이에 제2 버퍼(340)는 2차 변환값을 제2 방향(예를 들어, 수직 방향)으로 저장할 수 있다.
단계 730 및 단계 735는 트랜스포즈 메모리(330)에 저장된 모든 1차 변환값들에 대해 서브 블록 단위로 2차 트랜스폼이 수행될때까지 반복 수행된다.
수학식11을 참조하면, 트랜스폼을 위해 재정리된 행렬식이 서로 대칭 관계에 있음을 알 수 있다. 편의를 위해, 수학식11의 행렬식의 첫번째 행렬식을 제1 서브 블록, 그 다음을 제2 서브 블록, 제3 서브 블록, 제4 서브 블록이라 칭하기로 하자. 여기서,
Figure 112006058114919-pat00048
,
Figure 112006058114919-pat00049
, …,
Figure 112006058114919-pat00050
은 트랜스폼부(320)를 통해 산출된 변환값일 수 있다.
Figure 112006058114919-pat00051
는 제1 서브 블록의 제1 행을 연산한 값과, 제2 서브 블록의 제1 행을 연산한 값을 가산하여 산출되며,
Figure 112006058114919-pat00052
은 제1 서브 블록의 제1 행과 제2 서브 블록의 제2 행을 연산한 값을 감산하여 산출됨을 알 수 있다. 즉, 제1 서브 블록과 제3 서브 블록이 동일하며, 제2 서브 블록과 제4 서브 블록이 동일함을 알 수 있다. 따라서, 트랜스폼 모듈(300)은 제1 변환값을 산출한 후, 제8 변환값을 산출하고, 제2 변환값을 산출한 후, 제6 변환값을 산출하도록 할 수 있다. 이로 인해, 트랜스폼 모듈(300)은 하나의 블록에 대해 변환값을 산출을 위한 연산 수행 횟수를 대략 50% 정도 줄일 수 있는 이점이 있다.
도 8은 본 발명의 바람직한 일 실시예에 따른 트랜스폼부가 변환값을 산출하 는 과정을 나타낸 순서도이다. 이하에서는 블록의 크기가 8×8인 경우, 트랜스폼부(320)가 블록의 각각의 픽셀값들을 제1 방향으로 서브 블록 단위로 입력받아 상응하는 트랜스폼을 수행하는 것을 중점으로 설명하기로 한다.
단계 810에서 승산부(510)는 제1 버퍼(310)로부터 제1 방향으로 서브 블록 단위로 입력 픽셀값들을 입력받는다. 그리고, 승산부(510)는 제어부로부터 코덱 유형에 따른 참조 계수를 입력받아 입력 픽셀들과 승산하여 제1 중간값을 각각 산출하여 제1 가감산부(521)로 출력한다(단계 815). 여기서, 클럭의 동기화를 위해, 승산부(510)는 각각의 레지스터(515a, 515b, 515c, 515d)에 산출된 제1 중간값을 일시적으로 저장한 후, 클럭에 따라 동시에 제1 가감산부(521)로 출력하도록 할 수도 있다.
예를 들어, T 클럭이면, 승산부(510)는 제1 버퍼(310)로부터 제1 방향으로 홀수번째 입력 픽셀들을 입력받을 수 있다. 즉, 승산부(510)는 제1 입력 픽셀, 제3 입력 픽셀, 제5 입력 픽셀, 제7 입력 픽셀을 입력받을 수 있다. 반면에, 클럭이 T+1 클럭이면, 승산부(510)는 제1 버퍼(310)로부터 제1 방향으로 짝수번째 입력 픽셀들을 입력받을 수 있다. 즉, 승산부(510)는 제2 입력 픽셀, 제4 입력 픽셀, 제6 입력 픽셀, 제8 입력 픽셀을 입력받을 수 있다.
만일, 트랜스폼부(320)가 2차 변환을 수행하는 경우라면, 승산부(510)는 트랜스포즈 메모리(330)에 저장된 1차 변환값을 제1 방향으로 서브 블록 단위로 독출받아 코덱 유형에 따라 미리 설정된 참조 계수값들을 이용하여 제1 중간값을 산출하여 제1 가감산부(521)로 출력할 수 있다.
단계 820에서 제1 가감산부(521)는 승산부(510)를 통해 입력된 제1 중간값들을 가감하여 제2 중간값을 각각 산출하여 제3 가감산기(520c)로 출력한다. 그리고, 제3 가감산기(520c)는 제1 가감산부(521)를 통해 입력된 제2 중간값들을 가감하여 제3 중간값을 산출한다(단계 825).
단계 830에서 제어부는 클럭이 T+1 클럭인지 여부를 판단한다.
만일 T+1 클럭이 아니라고 판단되면, 단계 835에서 제3 가감산기(520c)는 산출된 제3 중간값을 제5 레지스터(525)에 저장한다.
그러나 만일 T+1 클럭이라고 판단되면, 단계 840에서 제3 가감산기(520c)는 산출된 제3 중간값을 제4 가감산기(520d)로 출력한다.
그리고, 단계 845에서 제4 가감산기(520d)는 제5 레지스터(525)에 저장된 값(즉, T 클럭에 산출된 제3 중간값)과 T+1 클럭에 제3 가감산기(520c)로부터 산출되어 입력된 제3 중간값을 가감하여 변환값을 산출하여 보정부(530)로 출력한다.
단계 850에서 보정부(530)는 코덱 유형 정보에 따라 변환값을 비트단위로 이동 또는 절단하여 코덱 유형에 상응하는 범위 내의 값으로 정밀도를 조정하여 출력한다.
도 8은 블록의 크기가 8×8인 경우를 중점으로 설명한 것으로, 만일 블록의 크기가 4×4이면, 단계 820에서 제3 가감산기(520c)는 둘 이상의 제2 중간값들을 가감하여 산출한 제3 중간값을 변환값으로 보정부(530)로 출력할 수 있다. 즉, 단계 830 내지 단계 845는 스킵(skip)될 수 있다.
도 9는 본 발명의 바람직한 다른 실시예에 따른 트랜스폼부의 블록 구성도이다.
도 9를 참조하면, 본 발명의 다른 실시예에 따른 트랜스폼부(900)는 4×4 행렬 연산을 수행하는 부분을 두개를 구비하여 8×8 블록에 대한 연산을 수행하도록 할 수 있다. 편의상 4×4 행렬 연산을 수행하는 부분의 첫번째 부분을 제1 연산부(901)라 칭하며, 두번째 부분을 제2 연산부(902)라 칭하기로 하자. 제1 연산부(901)와 제2 연산부(902)는 도 5에서 설명한 트랜스폼부(320)에서 제5 레지스터(525)와 제4 가감산기(520d)를 제외한 승산부(510)와 가감산부(520)와 동일하므로 이에 대한 별도의 설명은 생략하기로 한다.
이와 같이, 트랜스폼부(900)는 8개의 입력 픽셀에 대해 제1 연산부(901)에서는 홀수번째 입력 픽셀들을 입력받아 연산을 수행하고, 제2 연산부(902)에서는 짝수번째 입력 픽셀들을 입력받아 연산을 수행한 후 제7 가감산기(920g)를 통해 가감하여 보정부(930)에 의해 코덱 유형에 따른 정밀도로 변환되어 변환값을 산출할 수 있다. 예를 들어, 제1 연산부(901)는 제1 입력 픽셀, 제3 입력 픽셀, 제5 입력 픽셀, 제7 입력 픽셀을 입력받고 코덱 유형에 따른 참조 계수를 입력받아 연산을 수행할 수 있으며, 제2 연산부(902)는 제2 입력 픽셀, 제4 입력 픽셀, 제6 입력 픽셀, 제8 입력 픽셀을 입력받고 코덱 유형에 따른 참조 계수를 입력받아 연산을 수행할 수 있다.
만일, 제1 버퍼(310)에 저장된 블록의 크기가 4×4라면, 제1 연산부(901)는 제1 입력 픽셀, 제2 입력 픽셀, 제3 입력 픽셀, 제4 입력 픽셀순으로 입력받고 코 덱 유형에 따른 참조 계수를 입력받아 연산을 수행하여 연산된 값을 제7 가감산부(920g)는 바이패스(bypass)하고 보정부(930)로 출력할 수 있다. 이로 인해, 보정부(930)는 제어부의 제어에 의해 코덱 유형에 따른 정밀도로 연산된 값을 변환하여 변환값을 출력할 수 있다.
도 10은 본 발명의 바람직한 다른 실시예에 따른 트랜스폼 모듈의 블록 구성도이다.
도 10에서 보여지는 바와 같이, 본 발명의 바람직한 다른 실시예에 따른 트랜스폼 모듈(1000)은 제1 버퍼(1010), 제1 트랜스폼부(1020), 트랜스포즈 메모리(1030), 제2 트랜스폼부(1040) 및 제2 버퍼(1050)를 포함하여 구성된다. 트랜스폼 모듈(1000)의 각각의 기능은 도 3에서 설명한 트랜스폼 모듈(300)과 동일하므로 이에 대한 설명은 생략하기로 한다.
제1 트랜스폼부(1020)는 제1 버퍼(1010)로부터 제1 방향으로 서브 블록 단위로 입력 픽셀값을 입력받아 1차 변환값을 산출하여 트랜스포즈 메모리(1030)로 출력한다. 그리고, 제2 트랜스폼부(1040)는 트랜스포즈 메모리(1030)에 저장된 1차 변환값을 제1 방향으로 서브 블록 단위로 입력받아 2차 변환값을 산출하여 제2 버퍼(1050)로 출력한다. 이와 같이, 트랜스포즈 메모리(1030) 전단/후단에 트랜스폼부(1020, 1040)를 구비하도록 설계함으로써 2차 트랜스폼 수행 시간을 줄일 수 있는 이점이 있다.
상술한 바와 같이, 본 발명에 통합 코덱을 위한 트랜스폼 모듈 및 방법을 제공함으로써, 각각의 동영상 코덱에서 각각 상이하게 사용되는 트랜스폼을 행렬식으로 재정의하여 하나 이상의 코덱에서 범용적으로 사용할 수 있는 효과가 있다.
또한, 본 발명은 통합 코덱에서 이용될 수 있는 단일 트랜스폼 모듈을 제공함으로써 하드웨어 칩 면적을 최소화할 수 있는 효과도 있다.
또한, 본 발명은 단일 트랜스폼 모듈을 제공함으로써 시스템의 개발 단가를 낮출 수 있는 효과도 있다.
또한, 본 발명은 다양한 형태의 통합 코덱 시스템에 적용할 수 있으며, 이로 인해 개발 시간을 단축하여 시장경쟁에서 우위를 선점할 수 있는 효과도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (14)

  1. 트랜스폼(transform)을 수행하는 모듈에 있어서,
    정해진 크기의 블록의 픽셀값들을 입력받는 제1 버퍼;
    상기 픽셀값들을 제1 방향의 서브 블록 단위로 입력받고 코덱 유형 정보를 입력받아 상응하는 트랜스폼을 수행하여 1차 변환값을 산출하는 트랜스폼부; 및
    상기 1차 변환값을 제2 방향으로 저장하는 트랜스포즈 메모리를 포함하되,
    상기 트랜스폼부는 상기 제1 방향으로 서브 블록 단위로 독출된 상기 1차 변환값을 이용하여 트랜스폼을 수행하여 2차 변환값을 산출하되,
    상기 제1 방향은 수평 방향 또는 수직 방향 중 어느 하나이며,
    상기 제2 방향은 상기 수평 방향 또는 상기 수직 방향 중 다른 하나인 것을 특징으로 하는 것을 특징으로 하는 트랜스폼 모듈.
  2. 제 1항에 있어서,
    상기 트랜스폼부는,
    코덱 유형 정보에 따른 하나 이상의 참조 계수를 저장하고 있는 참조 계수 테이블;
    상기 서브 블록의 입력 픽셀들 및 상기 코덱 유형 정보에 따라 미리 설정된 참조 계수를 승산하여 제1 중간값을 각각 산출하는 승산부;
    둘 이상의 제1 중간값을 이용하여 제2 중간값을 각각 산출하며, 둘 이상의 제2 중간값을 이용하여 제3 중간값을 산출하는 가감산부;
    T 클럭이면 상기 제3 중간값을 상기 가감산부로부터 입력받아 저장하는 레지스터;
    T+1 클럭이면 상기 제3 중간값을 상기 가감산부로부터 입력받아 상기 레지스터에 저장된 값과 가감 연산을 수행하여 변환값을 산출하는 가감산기; 및
    코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하는 보정부를 포함하는 것을 특징으로 하는 트랜스폼 모듈.
  3. 제 2항에 있어서,
    상기 블록의 상기 제1 방향의 픽셀의 개수가 2N이면, 상기 승산부는 T 클럭인 경우 각각의 홀수번째 입력 픽셀값들을 입력받으며, T+1 클럭인 경우 각각의 짝수번째 입력 픽셀값들을 입력받는 것을 특징으로 하는 트랜스폼 모듈.
  4. 제 2항에 있어서,
    상기 블록의 상기 제1 방향의 픽셀의 개수가 N이면, 상기 가감산부는 상기 제3 중간값을 상기 변환값으로 보정부로 출력하는 것을 특징으로 하는 트랜스폼 모듈.
  5. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.
    상기 N은 4인 것을 특징으로 하는 트랜스폼 모듈.
  6. 제 5항에 있어서,
    상기 트랜스폼부는 입력된 복수의 입력 픽셀값을 하나의 변환값으로 산출하여 출력하는 것을 특징으로 하는 트랜스폼 모듈
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제 1항에 있어서,
    상기 정해진 크기의 블록은 2×2, 4×4, 4×8, 8×4 및 8×8 중 어느 하나의 크기인 것을 특징으로 하는 트랜스폼 모듈.
  8. 삭제
  9. 트랜스폼을 수행하는 모듈에 있어서,
    정해진 크기의 블록의 픽셀값들을 입력받는 제1 버퍼;
    상기 픽셀값들을 제1 방향의 서브 블록 단위로 입력받고 코덱 유형 정보를 입력받아 상응하는 트랜스폼을 수행하여 1차 변환값을 산출하는 제1 트랜스폼부;
    상기 1차 변환값을 제2 방향으로 저장하는 트랜스포즈 메모리; 및
    상기 1차 변환값을 상기 제1 방향의 서브 블록 단위로 독출받아 상기 참조 계수를 이용하여 트랜스폼을 수행하여 2차 변환값을 산출하는 제2 트랜스폼부를 포함하되,
    상기 제1 방향은 수평 방향 또는 수직 방향 중 어느 하나이며,
    상기 제2 방향은 상기 수평 방향 또는 상기 수직 방향 중 다른 하나인 것을 특징으로 하는 트랜스폼 모듈.
  10. 트랜스폼 모듈 임의의 블록에 대해 2차원 트랜스폼을 수행하는 방법에 있어서,
    (a) 입력되는 미리 정해진 크기의 블록의 픽셀값들을 제1 방향의 서브 블록 단위로 입력받아 미리 설정된 참조 계수값들을 이용하여 1차 변환값을 산출하는 단계;
    (b) 상기 1차 변환값을 트랜스포즈 메모리에 제2 방향으로 저장하는 단계; 및
    (c) 상기 제1 방향으로 서브 블록 단위로 독출된 상기 1차 변환값과 상기 참조 계수를 이용하여 2차 변환값을 산출하는 단계를 포함하되,
    상기 블록의 픽셀값은 현재 프레임과 참조 프레임의 픽셀간의 차이 정보인 것을 특징으로 하는 트랜스폼 방법.
  11. 제 10항에 있어서,
    상기 (a) 단계 및 상기 (c) 단계는 각각,
    상기 서브 블록의 각각의 입력 픽셀을 미리 정해진 순서대로 입력받아 상기 참조 계수값과 승산하여 제1 중간값을 각각 산출하는 단계;
    둘 이상의 제1 중간값을 가감하여 제2 중간값을 각각 산출하고, 둘 이상의 제2 중간값을 가감하여 제3 중간값을 산출하여 출력하는 단계;
    클럭이 T 클럭인지 또는 T+1 클럭인지 여부를 판단하는 단계;
    만일 T 클럭이면 상기 제3 중간값을 레지스터에 저장하고, 만일 T+1 클럭이면 T 클럭에 산출되어 상기 레지스터에 저장된 값과 상기 제3 중간값을 가감하여 변환값을 산출하는 단계; 및
    만일 T+1 클럭이면 코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하여 출력하는 단계를 포함하는 트랜스폼 방법.
  12. 제 10항에 있어서,
    상기 (a) 단계 및 상기 (c) 단계는 각각,
    상기 입력 픽셀의 개수가 N개인지 여부를 판단하는 단계;
    만일 N개라고 판단되면, 상기 서브 블록의 각각의 입력 픽셀을 미리 정해진 순서대로 입력받아 상기 참조 계수값과 승산하여 제1 중간값을 각각 산출하는 단 계;
    둘 이상의 제1 중간값을 이용하여 제2 중간값을 각각 산출하고, 둘 이상의 제2 중간값을 가감하여 제3 중간값을 산출하고, 상기 제3 중간값을 변환값으로 출력하는 단계; 및
    코덱 유형 정보에 따라 상기 변환값의 정밀도를 조정하여 출력하는 단계를 포함하는 트랜스폼 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제 12항에 있어서,
    상기 N은 4인 것을 특징으로 하는 트랜스폼 방법.
  14. 삭제
KR1020060077026A 2006-08-16 2006-08-16 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법 KR100827679B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060077026A KR100827679B1 (ko) 2006-08-16 2006-08-16 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060077026A KR100827679B1 (ko) 2006-08-16 2006-08-16 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법

Publications (2)

Publication Number Publication Date
KR20080015562A KR20080015562A (ko) 2008-02-20
KR100827679B1 true KR100827679B1 (ko) 2008-05-07

Family

ID=39383991

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060077026A KR100827679B1 (ko) 2006-08-16 2006-08-16 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법

Country Status (1)

Country Link
KR (1) KR100827679B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10257512B2 (en) 2015-10-21 2019-04-09 Samsung Electronics Co., Ltd. Electronic apparatus and method for designing multi-format decoder

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107452041B (zh) * 2016-05-31 2020-07-31 阿里巴巴集团控股有限公司 图片的生成方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030187895A1 (en) 2002-04-01 2003-10-02 Vivian Hsiun Inverse discrete cosine transform supporting multiple decoding processes
KR20040048702A (ko) * 2002-12-04 2004-06-10 엘지전자 주식회사 디지털 비디오 포맷을 지원하는 엠펙 비디오 디코딩 시스템
KR20070028951A (ko) * 2005-09-08 2007-03-13 삼성전자주식회사 멀티 코덱용 변환 장치 및 방법과 멀티 코덱용 역변환 장치및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030187895A1 (en) 2002-04-01 2003-10-02 Vivian Hsiun Inverse discrete cosine transform supporting multiple decoding processes
KR20040048702A (ko) * 2002-12-04 2004-06-10 엘지전자 주식회사 디지털 비디오 포맷을 지원하는 엠펙 비디오 디코딩 시스템
KR20070028951A (ko) * 2005-09-08 2007-03-13 삼성전자주식회사 멀티 코덱용 변환 장치 및 방법과 멀티 코덱용 역변환 장치및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10257512B2 (en) 2015-10-21 2019-04-09 Samsung Electronics Co., Ltd. Electronic apparatus and method for designing multi-format decoder

Also Published As

Publication number Publication date
KR20080015562A (ko) 2008-02-20

Similar Documents

Publication Publication Date Title
US10721481B2 (en) Method and apparatus for motion compensation prediction
KR101958842B1 (ko) 내부 예측을 위한 적응적 이산 코사인 변환 및 이산 사인 변환을 이용한 낮은 복잡도의 변환 코딩
JP2023179682A (ja) 隣接サンプル減少を伴う線形またはアフィン変換を使用するイントラ予測
US20080232705A1 (en) Method and apparatus for image encoding and image decoding
KR20110135787A (ko) 엣지-적응 변환을 이용한 영상 부호화/복호화 시스템 및 방법
JP2024015184A (ja) 画像復号装置及び方法及びプログラム
KR100827679B1 (ko) 통합 비디오 코덱을 위한 트랜스폼 모듈 및 방법
KR101419689B1 (ko) H.264/avc 복호기에서 역양자화 및 역변환을 수행하는 복호화 장치 및 이를 이용한 복호화 방법
CN116847082A (zh) 视频编码方法和装置
KR100788971B1 (ko) 통합 코덱을 위한 역 트랜스폼 모듈 및 방법
JP6154753B2 (ja) 動画像復号装置、動画像復号方法、およびプログラム
JP2008092137A (ja) 画像符号化装置及び画像符号化方法
CN113261279A (zh) 预测值的确定方法、编码器、解码器以及存储介质
JP2008227602A (ja) 直交変換・量子化装置
JP2007306528A (ja) 動画像復号装置および動画像復号方法
JPH06303596A (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
FPAY Annual fee payment
FPAY Annual fee payment

Payment date: 20170329

Year of fee payment: 10