KR20190091179A - 이미지 처리 장치 및 이미지 처리 장치의 동작 방법 - Google Patents
이미지 처리 장치 및 이미지 처리 장치의 동작 방법 Download PDFInfo
- Publication number
- KR20190091179A KR20190091179A KR1020180041786A KR20180041786A KR20190091179A KR 20190091179 A KR20190091179 A KR 20190091179A KR 1020180041786 A KR1020180041786 A KR 1020180041786A KR 20180041786 A KR20180041786 A KR 20180041786A KR 20190091179 A KR20190091179 A KR 20190091179A
- Authority
- KR
- South Korea
- Prior art keywords
- component
- bit
- data
- compression
- chroma
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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 a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/182—Methods 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 a pixel
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Ultra Sonic Daignosis Equipment (AREA)
- Sewing Machines And Sewing (AREA)
- Image Processing (AREA)
Abstract
이미지 처리 장치 및 이미지 처리 장치의 동작 방법이 제공된다. 이미지 처리 장치는 제1 성분 및 제2 성분을 포함하는 이미지 데이터를 처리하는 멀티미디어 IP; 상기 멀티미디어 IP에 의해 액세스(access)되는 메모리 및; 상기 이미지 데이터에 대해 압축을 수행하여 압축 데이터를 생성하고, 압축 데이터를 상기 메모리에 저장하는 프레임 버퍼 컴프레서(Frame Buffer Compressor, FBC)를 포함하고, 상기 프레임 버퍼 컴프레서는, 상기 이미지 데이터의 상기 제1 성분과 상기 제2 성분의 압축 순서를 제어하는 압축 관리 모듈을 포함한다.
Description
본 발명은 이미지 처리 장치 및 이미지 처리 장치의 동작 방법에 관한 것이다.
비디오 고해상도 영상 및 고프레임율(high-frame rate) 영상의 필요성이 대두되면서 이미지 처리 장치의 여러 멀티미디어 IP(Intellectual Property)가 메모리에 액세스(access)되는 양 즉, 밴드위스(bandwidth)가 크게 증가하게 되었다.
밴드위스가 증가하게 되면 이미지 처리 장치의 처리 능력이 한계에 도달하여 비디오 영상의 녹화 및 재생 동작시에 속도가 저하되는 문제가 발생할 수 있다.
이에 따라서, 멀티미디어 IP가 메모리에 액세스할 때, 데이터의 크기를 압축하는 방식이 고려되고 있다. 예를 들어, 메모리에 데이터를 라이트(write)하기 전에 데이터를 압축(compress)하고, 메모리에서 데이터를 리드(read)하기 전에는 압축된 데이터를 압축 해제(decompress)할 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 압축 품질이 뛰어난 이미지 데이터 압축을 수행하는 이미지 처리 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 압축 품질이 뛰어난 이미지 데이터 압축을 수행하는 이미지 처리 장치의 동작 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 이미지 처리 장치는, 제1 성분 및 제2 성분을 포함하는 이미지 데이터를 처리하는 멀티미디어 IP; 멀티미디어 IP에 의해 액세스(access)되는 메모리 및; 이미지 데이터에 대해 압축을 수행하여 압축 데이터를 생성하고, 압축 데이터를 메모리에 저장하는 프레임 버퍼 컴프레서(Frame Buffer Compressor, FBC)를 포함하고, 프레임 버퍼 컴프레서는, 이미지 데이터의 제1 성분과 제2 성분의 압축 순서를 제어하는 압축 관리 모듈을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 이미지 처리 장치는, YUV 포맷을 따르는 이미지 데이터를 처리하는 멀티미디어 IP; 멀티미디어 IP에 의해 액세스되는 메모리 및; 이미지 데이터에 대해 압축을 수행하여 압축 데이터를 생성하고, 압축 데이터를 메모리에 저장하는 프레임 버퍼 컴프레서를 포함하고, 프레임 버퍼 컴프레서는, 이미지 데이터의 YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분(Chroma component)에 대한 압축이, 이미지 데이터의 YUV 포맷 중 Y 성분을 포함하는 루마 성분(Luma component)에 대한 압축보다 먼저 수행되도록 압축 순서를 제어하는 압축 관리 모듈을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 이미지 처리 장치의 동작 방법은, YUV 포맷을 따르는 이미지 데이터에 대한 목표 압축률(target compression ratio)에 기반하여 총 목표 비트(total target bit)를 연산하고, YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분을 압축하기 위한 크로마 성분 목표 비트(target bit)를 연산하고, 크로마 성분 목표 비트를 할당하여 크로마 성분을 압축하고, 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트(used bit)를 이용하여, YUV 포맷 중 Y 성분을 포함하는 루마 성분에 대한 루마 성분 목표 비트를 연산하고, 루마 성분 목표 비트를 할당하여 루마 성분을 압축하고, 루마 성분에 대한 압축 데이터의 루마 성분 사용 비트와, 크로마 성분 사용 비트의 합이 총 목표 비트 미만인 경우, 루마 성분에 대한 압축 데이터 뒤에 더미 비트(dummy bit)를 부가하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1 내지 도 3은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치를 설명하기 위한 블록도이다.
도 4는 도 1 내지 도 3의 프레임 버퍼 컴프레서를 세부적으로 설명하기 위한 블록도이다.
도 5는 도 4의 인코더를 세부적으로 설명하기 위한 블록도이다.
도 6은 도 4의 디코더를 세부적으로 설명하기 위한 블록도이다.
도 7은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 420 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 422 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 9 내지 도 11은 본 발명의 몇몇 실시예들에 따른 YUV 420 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 12 내지 도 13는 본 발명의 몇몇 실시예들에 따른 YUV 422 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 4는 도 1 내지 도 3의 프레임 버퍼 컴프레서를 세부적으로 설명하기 위한 블록도이다.
도 5는 도 4의 인코더를 세부적으로 설명하기 위한 블록도이다.
도 6은 도 4의 디코더를 세부적으로 설명하기 위한 블록도이다.
도 7은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 420 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 422 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 9 내지 도 11은 본 발명의 몇몇 실시예들에 따른 YUV 420 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 12 내지 도 13는 본 발명의 몇몇 실시예들에 따른 YUV 422 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 1 내지 도 3은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예에 따른 이미지 처리 장치는 멀티미디어 IP(Intellectual Property)(100), 프레임 버퍼 컴프레서(Frame Buffer Compressor, FBC)(200), 메모리(300) 및 시스템 버스(400)를 포함한다.
멀티미디어 IP(100)는 이미지 처리 장치의 이미지 처리를 직접적으로 수행하는 파트일 수 있다. 즉, 멀티미디어 IP(100)는 비디오 영상의 캠코딩(camcoding), 플레이백(play back) 등 영상의 녹화와 재생을 수행하기 위한 여러 모듈을 의미할 수 있다.
멀티미디어 IP(100)는 카메라 등 외부로부터 제1 데이터를 수신하여 제2 데이터로 변환시킬 수 있다. 이 때, 상기 제1 데이터는 동영상 또는 이미지 로(raw) 데이터일 수 있다. 상기 제2 데이터는 멀티미디어 IP(100)에 의해서 생성된 데이터로서 멀티미디어 IP(100)가 처리중인 데이터도 포함할 수 있다. 즉, 멀티미디어 IP(100)는 여러 단계를 거쳐 상기 제2 데이터를 메모리(300)에 저장하고, 다시 갱신하는 것을 반복할 수 있다. 상기 제2 데이터는 이러한 단계 중에 있는 모든 데이터를 포함할 수 있다. 다만, 상기 제2 데이터는 메모리(300)에 저장될 때 제3 데이터의 형태로 저장될 수 있으므로, 메모리(300)에 상기 제2 데이터는 메모리(300)에 저장되기전 또는 메모리(300)에서 리드된 이후의 데이터를 의미할 수 있다. 이에 대해서는 추후에 더 자세히 설명한다.
구체적으로, 멀티미디어 IP(100)는 이미지 신호 프로세서(ISP)(110), 흔들림 보정 모듈(G2D)(120), 멀티 포맷 코덱(MFC)(130), GPU(140) 및 디스플레이(150)를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다. 즉, 멀티미디어 IP(100)는 상술한 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150) 중 적어도 일부만을 포함할 수도 있다. 즉, 멀티미디어 IP(100)는 동영상이나 이미지를 처리하기 위해서 메모리(300)에 액세스해야하는 처리 모듈을 의미할 수 있다.
이미지 신호 프로세서(110)는 상기 제1 데이터를 받아 이를 전처리하여 상기 제2 데이터로 변환시킬 수 있다. 이 때, 상기 제1 데이터는 RGB 방식의 이미지 소스 데이터일 수 있다. 예를 들어, 이미지 신호 프로세서(110)는 RGB 방식의 상기 제1 데이터를 YUV 방식의 상기 제2 데이터로 변환할 수 있다.
이 때, RGB 방식의 데이터란, 빛의 3원색을 기반으로 색을 표현한 데이터 포맷을 의미한다. 즉, 빨강(RED), 초록(GREEN), 파랑(BLUE) 세 종류의 색을 이용하여 이미지를 표현하는 방식이다. 이에 반해서, YUV 방식은 밝기 즉, 휘도(luma) 신호와 색차(chroma) 신호를 분리해서 표현하는 데이터 포맷을 의미한다. 즉, Y는 휘도 신호를 의미하고, U(Cb)와 V(Cr)는 각각 색차 신호를 의미한다. U는 휘도 신호와 청색 신호 성분의 차를 의미하고, V는 휘도 신호와 적색 신호 성분의 차를 의미한다.
이러한 YUV 방식의 데이터는 예를 들어, Y=0.3R+0.59G +0.11B, U=(B-Y)x0.493, V=(R-Y)x0.877와 같은 변환식을 이용하여 RGB 방식의 데이터로부터 변환되어 획득될 수 있다.
사람의 눈은 휘도 신호에는 민감하지만 색 신호에는 덜 민감하므로, YUV 방식의 데이터는 RGB 방식의 데이터에 비해서 압축이 더 용이할 수 있다. 이에 따라서, 이미지 신호 프로세서(110)는 RGB 방식의 상기 제1 데이터를 YUV 방식의 상기 제2 데이터로 변환할 수 있다.
이미지 신호 프로세서(110)는 상기 제1 데이터를 상기 제2 데이터로 변환한 뒤에 메모리(300)에 저장할 수 있다.
흔들림 보정 모듈(120)은 이미지 혹은 동영상 데이터의 흔들림 보정을 수행할 수 있다. 흔들림 보정 모듈(120)은 상기 제1 데이터 혹은 메모리(300)에 저장된 상기 제2 데이터를 리드(read)하여 흔들림 보정을 수행할 수 있다. 이 때, 흔들림 보정이란, 동영상 데이터에서 카메라의 흔들림을 감지하여 이를 제거하는 것을 의미한다.
흔들림 보정 모듈(120)은 상기 제1 데이터 또는 상기 제2 데이터의 흔들림을 보정하여 새로운 상기 제2 데이터를 생성 또는 갱신하고, 이를 메모리(300)에 저장할 수 있다.
멀티 포맷 코덱(130)은 동영상 데이터를 압축하는 코덱일 수 있다. 일반적으로, 동영상 데이터는 크기가 매우 크므로, 이의 크기를 줄이는 압축 모듈이 필요하다. 동영상 데이터는 복수의 프레임 간의 연관관계를 통해서 압축이 가능하고, 이를 수행하는 것이 멀티 포맷 코덱(130)일 수 있다. 멀티 포맷 코덱(130)은 제1 데이터 또는 메모리(300)에 저장된 상기 제2 데이터를 리드(read)하여 압축할 수 있다.
멀티 포맷 코덱(130)은 상기 제1 데이터 또는 상기 제2 데이터를 압축하여 새로운 제2 데이터를 생성하거나 상기 제2 데이터를 갱신하고, 이를 메모리(300)에 저장할 수 있다.
GPU(Graphics Processing Unit)(140)는 이차원 혹은 3차원 그래픽의 연산 및 생성을 할 수 있다. GPU(140)는 상기 제1 데이터 혹은 메모리(300)에 저장된 상기 제2 데이터를 연산 처리할 수 있다. GPU(140) 그래픽 데이터의 처리에 특화되어 병렬적으로 그래픽 데이터를 처리할 수 있다.
GPU(140)는 상기 제1 데이터 또는 상기 제2 데이터를 압축하여 새로운 제2 데이터를 생성하거나 상기 제2 데이터를 갱신하고, 이를 메모리(300)에 저장할 수 있다.
디스플레이(150)는 메모리(300)에 저장된 상기 제2 데이터를 화면에 표시할 수 있다. 디스플레이(150)는 다른 멀티미디어 IP(100) 즉, 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130) 및 GPU(140)가 처리한 이미지 데이터 즉, 상기 제2 데이터를 화면에 표시할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)는 각각 개별적으로 동작할 수 있다. 즉, 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)는 각각 메모리(300)에 개별적으로 액세스하여 데이터를 라이트 또는 리드할 수 있다.
프레임 버퍼 컴프레서(200)는 멀티미디어 IP(100)가 메모리(300)에 개별적으로 액세스하기 전에 상기 제2 데이터를 압축하여 상기 제3 데이터로 변환시킨다. 프레임 버퍼 컴프레서(200)는 상기 제3 데이터를 멀티미디어 IP(100)로 다시 전송하고, 멀티미디어 IP(100)는 상기 제3 데이터를 메모리(300)로 전송할 수 있다.
이에 따라서, 메모리(300)에는 프레임 버퍼 컴프레서(200)에 의해서 압축된 상기 제3 데이터가 저장될 수 있다. 반대로, 메모리(300)에 저장된 상기 제3 데이터는 멀티미디어 IP(100)에 의해서 로드되고, 프레임 버퍼 컴프레서(200)로 전송될 수 있다. 프레임 버퍼 컴프레서(200)는 상기 제3 데이터를 압축 해제(decompress)하여 상기 제2 데이터로 변환시킬 수 있다. 프레임 버퍼 컴프레서(200)는 상기 제2 데이터를 다시 멀티미디어 IP(100)로 전송할 수 있다.
즉, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)가 개별적으로 메모리(300)에 액세스할 때마다 프레임 버퍼 컴프레서(200)가 상기 제2 데이터를 상기 제3 데이터로 압축하여 메모리(300)에 전달할 수 있다. 반대로, 메모리(300)에서 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)로 데이터 요청이 있을 때마다 프레임 버퍼 컴프레서(200)는 상기 제3 데이터를 상기 제2 데이터로 압축 해제하여 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)로 각각 전송할 수 있다.
메모리(300)는 프레임 버퍼 컴프레서(200)가 생성한 상기 제3 데이터를 저장하고, 저장된 상기 제3 데이터를 프레임 버퍼 컴프레서(200)가 압축 해제할 수 있도록 프레임 버퍼 컴프레서(200)에 제공할 수 있다.
시스템 버스(400)는 멀티미디어 IP(100)와 메모리(300)가 각각 연결될 수 있다. 구체적으로, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)는 개별적으로 시스템 버스(400)에 연결될 수 있다. 시스템 버스(400)는 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)와 메모리(300)가 서로 데이터를 전송하는 경로가 될 수 있다.
프레임 버퍼 컴프레서(200)는 시스템 버스(400)와는 연결되지 않고, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)가 각각 메모리에 액세스할 때 상기 제2 데이터를 상기 제3 데이터로, 상기 제3 데이터를 상기 제2 데이터로 변환시키는 작업을 할 수 있다.
다음으로 도 2를 참조하면, 본 발명의 몇몇 실시예에 따른 이미지 처리 장치의 프레임 버퍼 컴프레서(200)는 시스템 버스(400)와 직접 연결될 수 있다.
프레임 버퍼 컴프레서(200)는 멀티미디어 IP(100)와는 직접적으로 연결되지는 않고, 시스템 버스(400)를 통해서 서로 연결될 수 있다. 구체적으로, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)가 각각 시스템 버스(400)를 통해서 프레임 버퍼 컴프레서(200)와 데이터를 서로 전송하고, 이를 통해서 메모리(300)에 데이터를 전송할 수 있다.
즉, 압축 과정에서는 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)가 각각 시스템 버스(400)를 통해서 프레임 버퍼 컴프레서(200)로 상기 제2 데이터를 전송할 수 있다. 이어서, 프레임 버퍼 컴프레서(200) 상기 제2 데이터를 상기 제3 데이터로 압축하고, 이를 다시 메모리(300)에 시스템 버스(400)를 통해서 전송할 수 있다.
마찬가지로, 압축 해제 과정에서도 메모리(300)에 저장된 상기 제3 데이터를 시스템 버스(400)를 통해서 프레임 버퍼 컴프레서(200)가 전송받고, 이를 상기 제2 데이터로 압축 해제할 수 있다. 이어서, 프레임 버퍼 컴프레서(200)가 시스템 버스(400)를 통해서, 상기 제2 데이터를 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)로 각각 전송할 수 있다.
다음으로 도 3을 참조하면, 본 발명의 몇몇 실시예에 따른 이미지 처리 장치는 메모리(300)와 시스템 버스(400)가 프레임 버퍼 컴프레서(200)를 통해서 서로 연결될 수 있다.
즉, 메모리(300)는 시스템 버스(400)에 직접적으로 연결되지 못하고, 프레임 버퍼 컴프레서(200)를 통해서만 시스템 버스(400)에 연결될 수 있다. 또한, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)는 시스템 버스(400)와 직접 연결될 수 있다. 따라서, 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)는 프레임 버퍼 컴프레서(200)를 거쳐서만 메모리(300)에 액세스할 수 있다.
본 명세서에서 제2 데이터는 이미지 데이터(10)로, 제3 데이터는 압축 데이터(20)로도 참조하기로 한다.
도 4는 도 1 내지 도 3의 프레임 버퍼 컴프레서를 세부적으로 설명하기 위한 블록도이다.
도 4를 참조하면, 프레임 버퍼 컴프레서(200)는 인코더(210) 및 디코더(220)를 포함할 수 있다.
인코더(210)는 멀티미디어 IP(100)로부터 이미지 데이터(10)를 받아 압축 데이터(20)를 생성할 수 있다. 이 때, 이미지 데이터(10)는 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)로부터 각각 전송될 수 있다. 압축 데이터(20)는 멀티미디어 IP(100) 및 시스템 버스(400)를 통해서 메모리(300)로 전송될 수 있다.
반대로, 디코더(220)는 메모리(300)에 저장된 압축 데이터(20)를 이미지 데이터(10)로 압축 해제할 수 있다. 이미지 데이터(10)는 멀티미디어 IP로 전달될 수 있다. 이 때, 이미지 데이터(10)는 멀티미디어 IP(100)의 이미지 신호 프로세서(110), 흔들림 보정 모듈(120), 멀티 포맷 코덱(130), GPU(140) 및 디스플레이(150)로 각각 전달될 수 있다.
도 5는 도 4의 인코더를 세부적으로 설명하기 위한 블록도이다.
도 5를 참조하면, 인코더(210)는 제1 모드 셀렉터(219), 예측 모듈(211), 양자화 모듈(213), 엔트로피 인코딩 모듈(215) 및 패딩 모듈(217)을 포함한다.
제1 모드 셀렉터(219)는 인코더(210)가 무손실(loseless) 모드로 동작할 지, 손실(lossy) 모드로 동작할 지를 결정할 수 있다. 제1 모드 셀렉터(219)에 따라서, 인코더(210)가 무손실 모드로 동작하는 경우에는, 이미지 데이터(10)는 도 3의 무손실 경로(Lossless)를 따라서 압축되고, 인코더(210)가 손실 모드로 동작하는 경우에는, 이미지 데이터(10)는 손실 경로(Lossy)를 따라서 압축될 수 있다.
제1 모드 셀렉터(219)는 멀티미디어 IP(100)로부터 무손실 압축을 할것인지 손실 압축을 할 것인지를 결정하는 신호를 수신할 수 있다. 이 때, 무손실 압축이란, 데이터의 손실 없이 압축하는 것을 의미하고, 데이터에 따라서 압축률이 달라지는 방식을 의미한다. 이와 달리 손실 압축이란, 데이터가 일부 손실되는 압축으로서, 무손실 압축에 비해서 압축률이 더 높고, 미리 설정한 고정된 압축률을 가질 수 있다.
제1 모드 셀렉터(219)는 무손실 모드인 경우에는 무손실 경로(Lossless)를 따라서, 예측 모듈(211), 엔트로피 인코딩 모듈(215) 및 패딩 모듈(217)로 이미지 데이터(10)를 유도할 수 있다. 반대로, 제1 모드 셀렉터(219)는 손실 모드인 경우에는 손실 경로(Lossy)를 따라서, 예측 모듈(211), 양자화 모듈(213) 및 엔트로피 인코딩 모듈(215)로 이미지 데이터(10)를 유도할 수 있다.
예측 모듈(211)은 이미지 데이터(10)를 예측 데이터와 잔차 데이터로 나누어 표현할 수 있다. 예를 들어, 하나의 픽셀이 0~255의 값을 가지고 있는 경우에는 이를 표현하기 위해서 픽셀당 8bit의 데이터가 필요할 수 있다. 이에 대해서, 인접한 픽셀이 유사한 값을 가지는 경우에는 인접한 픽셀과의 차이 즉, 잔차만을 표현하여도 데이터의 손실은 없고, 표현하기 위한 데이터 bit의 수는 대폭 감소할 수 있다. 예를 들어, (253, 254, 255)의 값을 가지는 픽셀이 연속한 경우에는 예측 데이터를 253으로 한다면, (253(예측), 1(잔차), 2(잔차))의 잔차 데이터 표현으로 충분하고, 이러한 잔차 데이터 표현을 위한 픽셀당 bit수는 2bit로 매우 작아질 수 있다.
따라서, 예측 모듈(211)은 이미지 데이터(10)를 예측 데이터와 잔차 데이터로 나누어 전체적인 이미지 데이터(10)의 크기를 압축할 수 있다. 물론, 예측 데이터를 무엇으로 하는지에 대해서는 여러가지 방법이 가능할 수 있다.
예측 모듈(211)은 픽셀 단위로 예측을 수행하거나, 블록 단위로 예측을 수행할 수 있다. 이 때, 블록이란 복수의 인접한 픽셀이 이루는 영역을 의미할 수 있다.
양자화 모듈(213)은 예측 모듈(211)에 의해서 압축된 이미지 데이터(10)를 추가적으로 더 압축할 수 있다. 양자화 모듈(213)은 미리 설정된 양자화 계수를 통해서, 이미지 데이터(10)의 하위 비트를 제거할 수 있다. 구체적으로, 데이터를 양자화 계수를 곱함으로써 그 대표값을 선택하되, 소수점 이하를 버림으로서 손실이 발생할 수는 있다. 픽셀 데이터의 값이 0 내지 28-1(=255)사이라면, 양자화 계수는 1/(2n-1)(여기서, n은 8 이하의 정수)로 정의될 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
이 때, 제거된 하위 비트는 추후에 복원되지 않아 손실될 수 있다. 따라서, 양자화 모듈(213)은 손실 모드에서만 활용될 수 있다. 다만 손실 모드는 무손실 모드에 비해서 압축률이 상대적으로 높을 수 있고, 미리 설정된 고정 압축률을 가질 수 있어 추후에 압축률에 대한 정보다 별도로 필요하지 않을 수 있다.
엔트로피 인코딩 모듈(215)은 손실 모드에서의 양자화 모듈(213)에 의해서 압축된 이미지 데이터(10) 또는 무손실 모드에서의 예측 모듈(211)에 의해서 압축된 이미지 데이터(10)를 엔트로피 코딩을 통해서 압축할 수 있다. 이 때, 엔트로피 코딩은 빈도수에 따라서 비트수를 할당하는 방식을 활용할 수 있다.
엔트로피 인코딩 모듈(215)은 허프만 코딩(Huffman coding)을 사용하여 이미지 데이터(10)를 압축할 수 있다. 또는, 엔트로피 인코딩 모듈(215)은 익스포넨셜 골룸 코딩(exponential golomb coding) 또는 골룸 라이스 코딩(golomb rice coding)을 통해서 이미지 데이터(10)를 압축할 수 있다. 이 때, 엔트로피 인코딩 모듈(215)은 k값을 통해서 테이블을 생성할 수 있어 간단하게 이미지 데이터(10)를 압축할 수 있다.
패딩 모듈(217)은 무손실 모드에서 엔트로피 인코딩 모듈(215)에 의해서 압축된 이미지 데이터(10)에 패딩(padding)을 수행할 수 있다. 여기서, 패딩이란 특정한 크기에 맞추기 위해서 무의미한 데이터를 추가하는 것을 의미할 수 있다. 이에 대해서는 추후에 더 자세히 설명한다.
패딩 모듈(217)은 무손실 모드뿐만 아니라 손실 모드에서도 활성화될 수 있다. 손실 모드에서는 이미지 데이터(10)가 양자화 모듈(213)에 의해서 압축될 때 목적하였던 압축률보다 더 많이 압축될 수 있다. 이러한 경우에 손실 모드에서도 패딩 모듈(217)을 거쳐 압축 데이터(20)로 변환되어 메모리(300)로 전송될 수 있다.
압축 관리 모듈(218)은 이미지 데이터(10)의 제1 성분과 제2 성분의 압축 순서를 제어한다. 여기서 이미지 데이터(10)는 YUV 포맷을 따르는 이미지 데이터일 수 있다.
이 경우 제1 모드 셀렉터(219)는 인코더(210)가 손실(lossy) 모드로 동작하는 것으로 결정하고, 이에 따라, 이미지 데이터(10)는 도 5의 손실 경로(Lossy)를 따라서 압축된다. 즉, 압축 관리 모듈(218)이 이미지 데이터(10)의 제1 성분과 제2 성분의 압축 순서를 제어하는 것은, 프레임 버퍼 컴프레서(200)가 손실 압축 알고리즘(lossy compression algorithm)을 이용하여 이미지 데이터(10)에 대한 압축을 수행하는 경우가 전제된다.
구체적으로, 이미지 데이터(10)는 제1 성분 및 제2 성분을 포함할 수 있다. 여기서 제1 성분은 예컨대 YUV 포맷 중 Y 성분을 포함하는 루마 성분(Luma component)(앞서 설명한 "휘도 신호"에 대응됨)을 포함할 수 있고, 제 2 성분은 예컨대 YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분(Chroma component)(앞서 설명한 "색차 신호"에 대응됨)을 포함할 수 있다.
압축 관리 모듈(218)은 이미지 데이터(10)의 제1 성분과 제2 성분의 압축 순서를 결정하고, 프레임 버퍼 컴프레서(200)는 압축 관리 모듈(218)에 의해 결정된 압축 순서에 따라 제1 성분 및 제2 성분을 압축한다.
즉, 압축 관리 모듈(218)은 이미지 데이터(10)의 제1 성분과 제2 성분의 압축 순서를 결정하면, 프레임 버퍼 컴프레서(200)는 상기 압축 순서에 따라 인코더(210)의 예측 모듈(211), 양자화 모듈(213) 및 엔트로피 인코딩 모듈(215)을 이용하여 이미지 데이터(10)를 압축한다.
이후, 프레임 버퍼 컴프레서(200)는 제1 성분에 대한 압축 데이터와 상기 제2 성분에 대한 압축 데이터를 병합하여 단일 비트 스트림을 생성하고, 생성된 단일 비트 스트림을 메모리(300)에 라이트(write)할 수 있다. 또한, 프레임 버퍼 컴프레서(200)는, 메모리(300)로부터 단일 비트 스트림을 리드(read)하고, 리드한 단일 비트 스트림을 압축 해제하여 멀티미디어 IP(100)에 제공할 수 있다.
이와 같은 동작을 수행하는 압축 관리 모듈(218)에 대한 더욱 세부적인 내용은 도 9 내지 도 15를 참조하여 후술하도록 한다.
도 6은 도 4의 디코더를 세부적으로 설명하기 위한 블록도이다.
도 6을 참조하면, 디코더(220)는 제2 모드 셀렉터(229), 언패딩 모듈(227), 엔트로피 디코딩 모듈(225), 역양자화 모듈(223) 및 예측 보상 모듈(221)을 포함한다.
제2 모드 셀렉터(229)는 메모리(300)에 저장된 압축 데이터(20)가 무손실 압축되었는지 손실 압축되었는지를 판단할 수 있다. 이 때, 제2 모드 셀렉터(229)는 헤더의 유무를 통해서 무손실 모드 및 손실 모드 중 어느 모드에 의해서 압축 데이터(20)가 압축되었는지를 판단할 수 있다. 이에 대해서는 추후에 더 자세히 설명한다.
제2 모드 셀렉터(229)는 무손실 모드인 경우에는 무손실 경로(Lossless)를 따라서, 언패딩 모듈(227), 엔트로피 디코딩 모듈(225) 및 예측 보상 모듈(221)로 압축 데이터(20)를 유도할 수 있다. 반대로, 제2 모드 셀렉터(229)는 손실 모드인 경우에는 손실 경로(Lossy)를 따라서, 엔트로피 디코딩 모듈(225), 역양자화 모듈(223) 및 예측 보상 모듈(221)로 압축 데이터(20)를 유도할 수 있다.
언패딩 모듈(227)은 인코더(210)의 패딩 모듈(217)에 의해서 패딩된 데이터의 패딩된 부분을 제거할 수 있다.
엔트로피 디코딩 모듈(225)은 엔트로피 인코딩 모듈(215)에 의해서 압축된 데이터를 압축 해제할 수 있다. 엔트로피 디코딩 모듈(225)은 허프만 코딩, 익스포넨셜 골룸 코딩 또는 골룸 라이스 코딩을 통해서 압축 해제를 수행할 수 있다. 압축 데이터(20)는 k값을 포함하고 있으므로, 엔트로피 디코딩 모듈(225)은 상기 k값을 이용하여 디코딩을 수행할 수 있다.
역양자화 모듈(223)은 양자화 모듈(213)에 의해서 압축된 데이터를 압축 해제할 수 있다. 역양자화 모듈(223)은 양자화 모듈(213)에서 정해진 양자화 계수를 이용하여 압축된 압축 데이터(20)를 복원할 수 있으나, 압축 과정에서 손실된 부분까지 완벽하게 복원할 수는 없다. 따라서, 역양자화 모듈(223)은 손실 모드에서만 활용될 수 있다.
예측 보상 모듈(221)은 예측 모듈(211)에 의해서 예측 데이터와 잔차 데이터로 표현된 데이터를 복원할 수 있다. 예측 보상 모듈(221)은 예를 들어, (253(예측), 1(잔차), 2(잔차))의 잔차 데이터 표현을 (253, 254, 255)으로 변환시킬 수 있다.
예측 보상 모듈(221)은 예측 모듈(211)에 따라 픽셀 단위 또는 블록 단위로 수행된 예측을 복원할 수 있다. 이에 따라서, 압축 데이터(20)가 복원 혹은 압축 해제되어 멀티미디어 IP(100)로 전송될 수 있다.
압축 해제 관리 모듈(228)은 도 5와 관련하여 앞서 설명한 압축 관리 모듈(218)이 이미지 데이터(10)의 압축을 수행하기 위해 결정했던 제1 성분과 제2 성분의 압축 순서가, 압축 데이터(20)를 압축 해제할 때에 적절하게 반영될 수 있는 작업을 수행할 수 있다.
본 발명의 몇몇 실시예에 따른 이미지 처리 장치의 이미지 데이터(10)는 YUV 방식의 데이터일 수 있다. 이 때, YUV 방식의 데이터는 YUV 420 포맷과 YUV 422 포맷을 가질 수 있다.
도 7은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 420 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 1 내지 도 7을 참조하면, 프레임 버퍼 컴프레서(200)의 인코더(210) 및 디코더(220)는 3가지 동작 모드를 가질 수 있다. YUV 420 포맷의 이미지 데이터(10)는 16 x 16 크기의 휘도 신호 블록(Y)과 각각 8 x 8 크기의 제1 색차 신호 블록(Cb 또는 U) 및 제2 색차 신호 블록(Cr 또는 V)을 가질 수 있다. 여기서 각각의 블록의 크기는 몇 개의 행과 열로 정렬된 픽셀을 포함하는지를 의미하고, 16 x 16의 크기는 16개의 행과 16개의 열을 가지는 복수의 픽셀들이 구성하는 블록의 크기를 의미한다.
프레임 버퍼 컴프레서(200)는 ①연결 모드(Concatenation mode), ②일부 연결 모드(Partial concatenation mode) 및 ③분리 모드(Separation mode)의 3가지 동작 모드를 포함할 수 있다. 이러한 3가지 모드는 데이터의 압축 포맷에 대한 것으로서, 손실 모드 및 무손실 모드와 별개로 정해지는 동작 모드일 수 있다.
먼저, 연결 모드(①)는 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)을 모두 같이 압축하고 압축 해제하는 동작 모드이다. 즉, 연결 모드(①)에서는 도 5와 같이 압축의 단위 블록이 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)이 결합된 블록일 수 있다. 이에 따라서, 압축의 단위 블록의 크기는 16 x 24일 수 있다.
일부 연결 모드(②)는 휘도 신호 블록(Y)은 별도로 압축 및 압축 해제되지만, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)은 서로 결합하여 같이 압축 및 압축 해제될 수 있다. 이에 따라서, 휘도 신호 블록(Y)은 원래 크기 그대로 16 x 16이고, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)이 결합된 블록은 16 x 8일 수 있다.
분리 모드(③)는 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)을 모두 별도로 압축 및 압축 해제하는 동작 모드이다. 이 때, 압축 및 압축 해제의 단위 블록의 크기를 동일하게 하기 위해서, 휘도 신호 블록(Y)은 원래 크기인 16 x 16로 유지하되, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)은 16 x 16의 크기로 크게할 수 있다.
이에 따라서, 휘도 신호 블록(Y)의 개수가 N개이면, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)의 개수는 각각 N/4개로 줄어들 수 있다.
본 발명의 몇몇 실시예에 따른 이미지 처리 장치의 프레임 버퍼 컴프레서(200)가 연결 모드(①)로 동작하는 경우에는 메모리(300)에 대한 한번의 액세스 요청을 통해서 필요한 모든 데이터를 리드할 수 있다. 특히, 멀티미디어 IP(100)에서 YUV 방식이 아닌 RGB 방식의 데이터가 필요한 경우에는 연결 모드(①)로 동작하는 것이 유리하다. 왜냐하면, 연결 모드(①)에서 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)을 한꺼번에 획득할 수 있고, RGB 데이터를 획득하기 위해서는 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)이 모두 필요하기 때문이다.
이에 반해서, 분리 모드(③)는 압축 단위 블록이 연결 모드(①)에 비해서 작아지면 더 낮은 하드웨어 리소스를 요구할 수 있다. 따라서, 멀티미디어 IP(100)에서 RGB 방식이 아닌 YUV 방식의 데이터가 필요할 때는 분리 모드(③)가 더 유리할 수 있다.
마지막으로, 일부 연결 모드(②)는 연결 모드(①)와 분리 모드(③)를 절충한 모드로서, 연결 모드(①)에 비해서는 낮은 하드웨어 리소스를 요구하고, RGB 데이터가 필요한 경우에도 메모리(300)에 대한 액세스 요청이 분리 모드(③)에 비해서 적은 횟수(2회)로 가능할 수 있다.
제1 모드 셀렉터(219)는 3개의 모드 즉, 연결 모드(①), 일부 연결 모드(②) 및 분리 모드(③) 중 어느 모드로 이미지 데이터(10)를 압축할 것인지를 결정할 수 있다. 제1 모드 셀렉터(219)는 연결 모드(①), 일부 연결 모드(②) 및 분리 모드(③) 중 어느 모드로 동작할지에 대한 신호를 멀티미디어 IP(100)에게 제공받을 수 있다.
제2 모드 셀렉터(229)는 제1 모드 셀렉터(219)가 연결 모드(①), 일부 연결 모드(②) 및 분리 모드(③) 중 어느 모드로 압축하였는지에 따라서 압축 데이터(20)를 압축 해제할 수 있다.
도 8은 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 YUV 422 포맷 데이터에 대한 3가지 동작 모드를 설명하기 위한 개념도이다.
도 1 내지 도 6 및 도 8을 참조하면, 프레임 버퍼 컴프레서(200)의 인코더(210) 및 디코더(220)는 YUV 422 포맷에 대해서도 3가지 동작 모드를 가질 수 있다. YUV 422 포맷의 이미지 데이터(10)는 16 x 16 크기의 휘도 신호 블록(Y)과 각각 16 x 8 크기의 제1 색차 신호 블록(Cb 또는 U) 및 제2 색차 신호 블록(Cr 또는 V)을 가질 수 있다.
연결 모드(①)에서는 압축의 단위 블록이 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)이 결합된 블록일 수 있다. 이에 따라서, 압축의 단위 블록의 크기는 16 x 32일 수 있다.
일부 연결 모드(②)는 휘도 신호 블록(Y)은 별도로 압축 및 압축 해제되지만, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)은 서로 결합하여 같이 압축 및 압축 해제될 수 있다. 이에 따라서, 휘도 신호 블록(Y)은 원래 크기 그대로 16 x 16이고, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)이 결합된 블록은 16 x 16일 수 있다. 따라서, 휘도 신호 블록(Y)과 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)이 결합된 블록의 크기가 동일할 수 있다.
분리 모드(③)는 휘도 신호 블록(Y), 제1 색차 신호 블록(Cb) 및 제2 색차 신호 블록(Cr)을 모두 별도로 압축 및 압축 해제하는 동작 모드이다. 이 때, 압축 및 압축 해제의 단위 블록의 크기를 동일하게 하기 위해서, 휘도 신호 블록(Y)은 원래 크기인 16 x 16로 유지하되, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)은 16 x 16의 크기로 크게할 수 있다.
이에 따라서, 휘도 신호 블록(Y)의 개수가 N개이면, 제1 색차 신호 블록(Cb)과 제2 색차 신호 블록(Cr)의 개수는 각각 N/2개로 줄어들 수 있다.
이제 도 9 내지 도 15를 참조하여, 앞서 설명한 이미지 처리 장치의 동작을 설명하도록 한다. 이하 설명하는 이미지 처리 장치의 동작은 도 7 및 도 8과 관련하여 앞서 설명한 연결 모드(①)에서 수행될 수 있다.
도 9 내지 도 11은 본 발명의 몇몇 실시예들에 따른 YUV 420 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 9 및 도 10은, 이미지 데이터(10)가 YUV 420 포맷을 따르는 경우, 이미지 데이터(10)에 대한 목표 압축률(target compression ratio)은 50 %이고, 컬러 뎁스(color depth)는 8 비트인 경우를 도시하고 있다.
도 9를 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(510Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(510Cb) 및 Cr 평면(510Cr)에 해당한다.
Y 평면(510Y)의 경우, 목표 압축률이 50 % 이고 컬러 뎁스가 8 비트이므로, 루마 성분 목표 비트(target bit)는 다음과 같이 연산될 수 있다.
루마 성분 목표 비트 = 16 X 16 X 8 X 0.5 비트 = 128 X 8 비트
Cb 평면(510Cb) 및 Cr 평면(510Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 8 X 8 X 8 X 0.5 비트 = 32 X 8 비트
Cr 평면 성분 목표 비트 = 8 X 8 X 8 X 0.5 비트 = 32 X 8 비트
이에 따라, Cb 평면 성분 목표 비트와 Cr 평면 성분 목표 비트를 합한 크로마 성분 목표 비트는 64 X 8 비트가 된다.
이와 같이 연산된 목표 비트에 따라 루마 성분과 크로마 성분을 압축하게 되면 루마 성분과 크로마 성분 모두에 대해 서로 동일한 50 %의 압축률로 압축을 하는 셈이 된다.
압축 결과에 해당하는 압축 비트 스트림(512)은 예컨대 Y 성분 비트 스트림(512Y), Cb 성분 비트 스트림(512Cb), Cr 성분 비트 스트림(512Cr)의 순서를 갖는 단일 비트 스트림으로서 형성될 수 있다. 그러나 본 발명의 범위는 이에 제한되지 않으며, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(512)을 생성할 수 있다. 즉, 압축 비트 스트림(512) 내에서의 Y 성분 비트 스트림(512Y), Cb 성분 비트 스트림(512Cb), Cr 성분 비트 스트림(512Cr)의 순서는 도 9에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙(interleaving) 병합하여 압축 비트 스트림(512)을 생성할 수 있다. 즉, 압축 비트 스트림(512) 내에서 Y 성분 비트 스트림(512Y), Cb 성분 비트 스트림(512Cb), Cr 성분 비트 스트림(512Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.
예를 들어, 압축 비트 스트림(512)은 이미지 데이터(10)의 제1 픽셀에 대한 Y 성분 비트 스트림, 상기 제1 픽셀에 대한 Cb 성분 비트 스트림, 상기 제1 픽셀에 대한 Cr 성분 비트 스트림, 이미지 데이터(10)의 제2 픽셀에 대한 Y 성분 비트 스트림, 상기 제2 픽셀에 대한 Cb 성분 비트 스트림, 상기 제2 픽셀에 대한 Cr 성분 비트 스트림이 이어지는 순서로 인터리빙 병합될 수 있으며, Y, Cb, Cr 성분의 인터리빙 순서 역시 임의의 순서로 결정될 수 있다.
일반적으로 사람의 눈은 색상보다 밝기의 변화에 더 민감하다. 따라서 YUV 포맷을 따르는 이미지 데이터(10)에 있어서 크로마 성분보다는 루마 성분의 중요도가 더 높다고 할 수 있다.
그런데 YUV 포맷을 따르는 이미지 데이터(10)를 압축하는 경우, 크로마 성분의 픽셀 상호 연관도(pixel correlation)가 루마 성분보다 높기 때문에, 예측이 더 수월하게 이루어지고, 이에 따라 크로마 성분의 압축 효율이 루마 성분보다 더 높게 나오게 된다.
따라서 이미지 데이터(10)를 압축한 압축 데이터(20)의 압축 품질을 더 높이기 위해서는, 압축 효율이 낮은 루마 성분에 압축 효율이 좋은 크로마 성분보다 더 많은 비트를 할당함으로써, 루마 성분에 대한 압축률을 상대적으로 높이는 방법을 고려할 수 있다.
이제 도 10을 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(520Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(520Cb) 및 Cr 평면(520Cr)에 해당한다.
본 실시예에서, 압축 관리 모듈(218)은 프레임 버퍼 컴프레서(200)가 크로마 성분을 먼저 압축한 후, 루마 성분을 압축하도록 압축 순서를 제어한다. 이를 위해, 압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전에, 먼저 크로마 성분 목표 비트를 연산한다.
Cb 평면(520Cb) 및 Cr 평면(520Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 8 X 8 X 8 X 0.5 비트 = 32 X 8 비트
Cr 평면 성분 목표 비트 = 8 X 8 X 8 X 0.5 비트 = 32 X 8 비트
압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전, 크로마 성분 목표 비트를 할당하여 크로마 성분에 대한 압축을 먼저 수행한다. 구체적으로 압축 관리 모듈(218)은, 크로마 성분 사용 비트(used bit)가 크로마 목표 비트보다 적으면서도 가장 가까운 값이 되도록 QP 값 및 엔트로피 k값을 결정하여 크로마 성분에 대한 압축을 수행한다.
그 결과, Cb 평면 성분에 대한 압축에 28 X 8 비트가 사용되고, Cb 평면 성분에 대한 압축에 30 X 8 비트가 사용되었다고 가정하자. 즉, 본 실시예에서, 크로마 성분 사용 비트((28 + 30) X 8 비트)는 크로마 성분 목표 비트((32 +32) X 8 비트)보다 적다.
압축 관리 모듈(218)은 이와 같은 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트를 이용하여 상기 루마 성분에 대한 루마 성분 목표 비트를 연산한다.
이제 압축 관리 모듈(218)은 루마 성분 목표 비트를 다음과 같이 연산할 수 있다.
루마 성분 목표 비트 = 총 목표 비트(total target bit) - 크로마 성분 사용 비트 = 192 X 8 비트 - (28 + 30) X 8 비트 = 132 X 8 비트
여기서 총 목표 비트는 16 X 16 사이즈의 Y 평면(520Y), 8 X 8 사이즈의 Cb 평면(520Cb) 및 8 X 8 사이즈의 Cr 평면(520Cr)의 경우, 총 (16 + 8) X 16 X 0.5 = 192의 사이즈에 컬러 뎁스 값 8을 곱한 값이다. 그리고 0.5는 목표 압축률을 의미한다.
압축 관리 모듈(218)은 이와 같이 연산된 루마 성분 목표 비트를 할당하여 루마 성분에 대한 압축을 수행한다.
본 실시예에 따르면, 도 9의 128 비트의 Y 성분 비트 스트림(512Y), 32 비트의 Cb 성분 비트 스트림(512Cb) 및 32 비트의 Cr 성분 비트 스트림(512Cr)을 포함하는 압축 비트 스트림(512)과 달리, 28 비트의 Cb 성분 비트 스트림(522Cb), 30 비트의 Cr 성분 비트 스트림(522Cr) 및 134 비트의 Y 성분 비트 스트림(522Y)을 포함하는 압축 비트 스트림(522)이 압축 결과가 된다.
앞서 설명한 바와 같이, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(522)을 생성할 수 있다. 즉, 압축 비트 스트림(522) 내에서의 Y 성분 비트 스트림(522Y), Cb 성분 비트 스트림(522Cb), Cr 성분 비트 스트림(522Cr)의 순서는 도 10에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙 병합하여 압축 비트 스트림(522)을 생성할 수 있다. 즉, 압축 비트 스트림(522) 내에서 Y 성분 비트 스트림(522Y), Cb 성분 비트 스트림(522Cb), Cr 성분 비트 스트림(522Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.이와 같이, 동일한 총 목표 비트 내에서, 중요도가 높고 압축 효율이 상대적으로 낮은 루마 성분에 더 많은 비트를 할당하고, 비교적 그렇지 않은 크로마 성분에 더 적은 비트를 할당함으로써, 이미지 데이터(10)를 압축한 압축 데이터(20)의 압축 품질을 향상시킬 수 있다.
다음으로, 도 11을 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(530Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(530Cb) 및 Cr 평면(530Cr)에 해당한다.
본 실시예에서, 압축 관리 모듈(218)은 프레임 버퍼 컴프레서(200)가 크로마 성분을 먼저 압축한 후, 루마 성분을 압축하도록 압축 순서를 제어한다. 이를 위해, 압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전에, 먼저 크로마 성분 목표 비트를 연산한다. 그런데 도 10의 실시예와 다른 점은, 압축 관리 모듈(218)은 사전에 크로마 성분에 대한 압축률을 50 %보다 적은 예컨대 40.625 %로 설정할 수 있다.
이에 따라 Cb 평면(530Cb) 및 Cr 평면(530Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 8 X 8 X 8 X 0.40625 비트 = 26 X 8 비트
Cr 평면 성분 목표 비트 = 8 X 8 X 8 X 0.40625 비트 = 26 X 8 비트
압축 관리 모듈(218)은 예컨대 40.625 %로 사전 설정된 압축률에 따라 크로마 성분에 대한 압축을 먼저 수행한다. 구체적으로 압축 관리 모듈(218)은, 상기 사전 설정된 압축률에 따르도록 QP 값 및 엔트로피 k값을 결정하여 크로마 성분에 대한 압축을 수행한다. 그 결과, Cb 평면 성분에 대한 압축에 26 X 8 비트가 사용되고, Cb 평면 성분에 대한 압축에 26 X 8 비트가 사용되었다.
이제 압축 관리 모듈(218)은 루마 성분 목표 비트를 다음과 같이 연산할 수 있다.
루마 성분 목표 비트 = 총 목표 비트- 사전 설정된 압축률에 따른 크로마 성분 목표 비트 = 192 X 8 비트 - (26 + 26) X 8 비트 = 140 X 8 비트
여기서 총 목표 비트는 16 X 16 사이즈의 Y 평면(530Y), 8 X 8 사이즈의 Cb 평면(530Cb) 및 8 X 8 사이즈의 Cr 평면(530Cr)의 경우, 총 (16 + 8) X 16 X 0.5 = 192의 사이즈에 컬러 뎁스 값 8을 곱한 값이다. 그리고 0.5는 목표 압축률을 의미한다.
압축 관리 모듈(218)은 이와 같이 연산된 루마 성분 목표 비트를 할당하여 루마 성분에 대한 압축을 수행한다.
즉, 본 실시예를 비롯한 본 발명의 몇몇 실시예들에서, 이미지 데이터(10)가 YUV 420 포맷을 따르는 경우, 크로마 성분 목표 비트는, 압축 관리 모듈(218)에 의해 총 목표 비트 / 3 X W (단, W는 1 이하의 양의 실수)로 연산될 수 있다. 예를 들어, 도 11의 실시예는 W의 값이 0.40625인 경우를 나타낸다.
본 실시예에 따르면, 도 9의 128 비트의 Y 성분 비트 스트림(512Y), 32 비트의 Cb 성분 비트 스트림(512Cb) 및 32 비트의 Cr 성분 비트 스트림(512Cr)을 포함하는 압축 비트 스트림(512)과 달리, 26 비트의 Cb 성분 비트 스트림(532Cb), 26 비트의 Cr 성분 비트 스트림(532Cr) 및 140 비트의 Y 성분 비트 스트림(522Y)을 포함하는 압축 비트 스트림(532)이 압축 결과가 된다.
앞서 설명한 바와 같이, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(532)을 생성할 수 있다. 즉, 압축 비트 스트림(532) 내에서의 Y 성분 비트 스트림(532Y), Cb 성분 비트 스트림(532Cb), Cr 성분 비트 스트림(532Cr)의 순서는 도 11에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙 병합하여 압축 비트 스트림(532)을 생성할 수 있다. 즉, 압축 비트 스트림(532) 내에서 Y 성분 비트 스트림(532Y), Cb 성분 비트 스트림(532Cb), Cr 성분 비트 스트림(532Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.
이와 같이, 동일한 총 목표 비트 내에서, 중요도가 높고 압축 효율이 상대적으로 낮은 루마 성분에 더 많은 비트를 할당하고, 비교적 그렇지 않은 크로마 성분에 더 적은 비트를 할당함으로써, 이미지 데이터(10)를 압축한 압축 데이터(20)의 압축 품질을 향상시킬 수 있다.
도 12 내지 도 14는 본 발명의 몇몇 실시예들에 따른 YUV 422 포맷 데이터에 대한 이미지 처리 장치의 동작을 설명하기 위한 개략도이다.
도 12 및 도 13은, 이미지 데이터(10)가 YUV 420 포맷을 따르는 경우, 이미지 데이터(10)에 대한 목표 압축률은 50 %이고, 컬러 뎁스는 8 비트인 경우를 도시하고 있다.
도 12를 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(540Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(540Cb) 및 Cr 평면(540Cr)에 해당한다.
Y 평면(540Y)의 경우, 목표 압축률이 50 % 이고 컬러 뎁스가 8 비트이므로, 루마 성분 목표 비트는 다음과 같이 연산될 수 있다.
루마 성분 목표 비트 = 16 X 16 X 8 X 0.5 비트 = 128 X 8 비트
Cb 평면(540Cb) 및 Cr 평면(540Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 16 X 8 X 8 X 0.5 비트 = 64 X 8 비트
Cr 평면 성분 목표 비트 = 16 X 8 X 8 X 0.5 비트 = 64 X 8 비트
이에 따라, Cb 평면 성분 목표 비트와 Cr 평면 성분 목표 비트를 합한 크로마 성분 목표 비트는 128 X 8 비트가 된다.
이와 같이 연산된 목표 비트에 따라 루마 성분과 크로마 성분을 압축하게 되면 루마 성분과 크로마 성분 모두에 대해 서로 동일한 50 %의 압축률로 압축을 하는 셈이 된다.
압축 결과에 해당하는 압축 비트 스트림(542)은 예컨대 Y 성분 비트 스트림(542Y), Cb 성분 비트 스트림(542Cb), Cr 성분 비트 스트림(542Cr)의 순서를 갖는 단일 비트 스트림으로서 형성될 수 있다. 그러나 본 발명의 범위는 이에 제한되지 않으며, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(542)을 생성할 수 있다. 즉, 압축 비트 스트림(542) 내에서의 Y 성분 비트 스트림(542Y), Cb 성분 비트 스트림(542Cb), Cr 성분 비트 스트림(542Cr)의 순서는 도 12에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙 병합하여 압축 비트 스트림(542)을 생성할 수 있다. 즉, 압축 비트 스트림(542) 내에서 Y 성분 비트 스트림(542Y), Cb 성분 비트 스트림(542Cb), Cr 성분 비트 스트림(542Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.
예를 들어, 압축 비트 스트림(542)은 이미지 데이터(10)의 제1 픽셀에 대한 Y 성분 비트 스트림, 상기 제1 픽셀에 대한 Cb 성분 비트 스트림, 상기 제1 픽셀에 대한 Cr 성분 비트 스트림, 이미지 데이터(10)의 제2 픽셀에 대한 Y 성분 비트 스트림, 상기 제2 픽셀에 대한 Cb 성분 비트 스트림, 상기 제2 픽셀에 대한 Cr 성분 비트 스트림이 이어지는 순서로 인터리빙 병합될 수 있으며, Y, Cb, Cr 성분의 인터리빙 순서 역시 임의의 순서로 결정될 수 있다.
이제 도 13을 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(550Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(550Cb) 및 Cr 평면(550Cr)에 해당한다.
본 실시예에서, 압축 관리 모듈(218)은 프레임 버퍼 컴프레서(200)가 크로마 성분을 먼저 압축한 후, 루마 성분을 압축하도록 압축 순서를 제어한다. 이를 위해, 압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전에, 먼저 크로마 성분 목표 비트를 연산한다.
Cb 평면(520Cb) 및 Cr 평면(520Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 16 X 8 X 8 X 0.5 비트 = 64 X 8 비트
Cr 평면 성분 목표 비트 = 16 X 8 X 8 X 0.5 비트 = 64 X 8 비트
압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전, 크로마 성분 목표 비트를 할당하여 크로마 성분에 대한 압축을 먼저 수행한다. 구체적으로 압축 관리 모듈(218)은, 크로마 성분 사용 비트가 크로마 목표 비트보다 적으면서도 가장 가까운 값이 되도록 QP 값 및 엔트로피 k값을 결정하여 크로마 성분에 대한 압축을 수행한다.
그 결과, Cb 평면 성분에 대한 압축에 62 X 8 비트가 사용되고, Cb 평면 성분에 대한 압축에 60 X 8 비트가 사용되었다고 가정하자. 즉, 본 실시예에서, 크로마 성분 사용 비트((62 + 60) X 8 비트)는 크로마 성분 목표 비트((64 +64) X 8 비트)보다 적다.
압축 관리 모듈(218)은 이와 같은 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트를 이용하여 상기 루마 성분에 대한 루마 성분 목표 비트를 연산한다.
이제 압축 관리 모듈(218)은 루마 성분 목표 비트를 다음과 같이 연산할 수 있다.
루마 성분 목표 비트 = 총 목표 비트(total target bit) - 크로마 성분 사용 비트 = 256 X 8 비트 - (62 + 60) X 8 비트 = 134 X 8 비트
여기서 총 목표 비트는 16 X 16 사이즈의 Y 평면(550Y), 8 X 8 사이즈의 Cb 평면(550Cb) 및 8 X 8 사이즈의 Cr 평면(550Cr)의 경우, 총 (16 + 8 + 8) X 16 X 0.5 = 256의 사이즈에 컬러 뎁스 값 8을 곱한 값이다. 그리고 0.5는 목표 압축률을 의미한다.
압축 관리 모듈(218)은 이와 같이 연산된 루마 성분 목표 비트를 할당하여 루마 성분에 대한 압축을 수행한다.
본 실시예에 따르면, 도 12의 128 비트의 Y 성분 비트 스트림(542Y), 64 비트의 Cb 성분 비트 스트림(542Cb) 및 64 비트의 Cr 성분 비트 스트림(542Cr)을 포함하는 압축 비트 스트림(542)과 달리, 62 비트의 Cb 성분 비트 스트림(552Cb), 60 비트의 Cr 성분 비트 스트림(552Cr) 및 134 비트의 Y 성분 비트 스트림(552Y)을 포함하는 압축 비트 스트림(552)이 압축 결과가 된다.
앞서 설명한 바와 같이, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(552)을 생성할 수 있다. 즉, 압축 비트 스트림(552) 내에서의 Y 성분 비트 스트림(552Y), Cb 성분 비트 스트림(552Cb), Cr 성분 비트 스트림(552Cr)의 순서는 도 13에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙 병합하여 압축 비트 스트림(552)을 생성할 수 있다. 즉, 압축 비트 스트림(552) 내에서 Y 성분 비트 스트림(552Y), Cb 성분 비트 스트림(552Cb), Cr 성분 비트 스트림(552Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.
이와 같이, 동일한 총 목표 비트 내에서, 중요도가 높고 압축 효율이 상대적으로 낮은 루마 성분에 더 많은 비트를 할당하고, 비교적 그렇지 않은 크로마 성분에 더 적은 비트를 할당함으로써, 이미지 데이터(10)를 압축한 압축 데이터(20)의 압축 품질을 향상시킬 수 있다.
다음으로, 도 14를 참조하면, 이미지 데이터(10)의 제1 성분, 즉 루마 성분은 이미지 데이터(10)의 Y 평면(560Y)에 해당하고, 이미지 데이터(10)의 제2 성분, 즉 크로마 성분은 이미지 데이터(10)의 Cb 평면(560Cb) 및 Cr 평면(560Cr)에 해당한다.
본 실시예에서, 압축 관리 모듈(218)은 프레임 버퍼 컴프레서(200)가 크로마 성분을 먼저 압축한 후, 루마 성분을 압축하도록 압축 순서를 제어한다. 이를 위해, 압축 관리 모듈(218)은 루마 성분 목표 비트를 연산하기 전에, 먼저 크로마 성분 목표 비트를 연산한다. 그런데 도 13의 실시예와 다른 점은, 압축 관리 모듈(218)은 사전에 크로마 성분에 대한 압축률을 50 %보다 적은 예컨대 40.625 %로 설정할 수 있다.
이에 따라 Cb 평면(560Cb) 및 Cr 평면(560Cr)의 경우, Cb 평면 성분 목표 비트 및 Cr 평면 성분 목표 비트는 각각 다음과 같이 연산될 수 있다.
Cb 평면 성분 목표 비트 = 16 X 8 X 8 X 0.40625 비트 = 52 X 8 비트
Cr 평면 성분 목표 비트 = 16 X 8 X 8 X 0.40625 비트 = 52 X 8 비트
압축 관리 모듈(218)은 예컨대 40.625 %로 사전 설정된 압축률에 따라 크로마 성분에 대한 압축을 먼저 수행한다. 구체적으로 압축 관리 모듈(218)은, 상기 사전 설정된 압축률에 따르도록 QP 값 및 엔트로피 k값을 결정하여 크로마 성분에 대한 압축을 수행한다. 그 결과, Cb 평면 성분에 대한 압축에 52 X 8 비트가 사용되고, Cb 평면 성분에 대한 압축에 52 X 8 비트가 사용되었다.
이제 압축 관리 모듈(218)은 루마 성분 목표 비트를 다음과 같이 연산할 수 있다.
루마 성분 목표 비트 = 총 목표 비트- 사전 설정된 압축률에 따른 크로마 성분 목표 비트 = 256 X 8 비트 - (52 + 52) X 8 비트 = 152 X 8 비트
여기서 총 목표 비트는 16 X 16 사이즈의 Y 평면(560Y), 8 X 8 사이즈의 Cb 평면(560Cb) 및 8 X 8 사이즈의 Cr 평면(560Cr)의 경우, 총 (16 + 8 + 8) X 8 = 256의 사이즈에 컬러 뎁스 값 8을 곱한 값이다. 그리고 0.5는 목표 압축률을 의미한다.
압축 관리 모듈(218)은 이와 같이 연산된 루마 성분 목표 비트를 할당하여 루마 성분에 대한 압축을 수행한다.
즉, 본 실시예를 비롯한 본 발명의 몇몇 실시예들에서, 이미지 데이터(10)가 YUV 422 포맷을 따르는 경우, 크로마 성분 목표 비트는, 압축 관리 모듈(218)에 의해 총 목표 비트 / 2 X W (단, W는 1 이하의 양의 실수)로 연산될 수 있다. 예를 들어, 도 14의 실시예는 W의 값이 0.5인 경우를 나타낸다.
본 실시예에 따르면, 도 12의 128 비트의 Y 성분 비트 스트림(542Y), 64 비트의 Cb 성분 비트 스트림(542Cb) 및 64 비트의 Cr 성분 비트 스트림(542Cr)을 포함하는 압축 비트 스트림(542)과 달리, 52 비트의 Cb 성분 비트 스트림(562Cb), 52 비트의 Cr 성분 비트 스트림(562Cr) 및 152 비트의 Y 성분 비트 스트림(562Y)을 포함하는 압축 비트 스트림(562)이 압축 결과가 된다.
앞서 설명한 바와 같이, 프레임 버퍼 컴프레서(200)는 제1 성분(예컨대 루마 성분) 및 제2 성분(예컨대 크로마 성분)에 대한 압축 순서와 다른 임의의 순서로 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 병합하여 압축 비트 스트림(562)을 생성할 수 있다. 즉, 압축 비트 스트림(532) 내에서의 Y 성분 비트 스트림(562Y), Cb 성분 비트 스트림(562Cb), Cr 성분 비트 스트림(562Cr)의 순서는 도 14에 도시된 것과 다를 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 프레임 버퍼 컴프레서(200)는, 제1 성분에 대한 압축 데이터와 제2 성분에 대한 압축 데이터를 인터리빙 병합하여 압축 비트 스트림(562)을 생성할 수 있다. 즉, 압축 비트 스트림(532) 내에서 Y 성분 비트 스트림(562Y), Cb 성분 비트 스트림(562Cb), Cr 성분 비트 스트림(562Cr)은 예컨대 이미지 데이터(10)의 픽셀 단위 별로 반복되는 Y, Cb, Cr 성분들의 비트 스트림들이 임의의 순서로 혼합된 형태로 생성될 수 있다.
이와 같이, 동일한 총 목표 비트 내에서, 중요도가 높고 압축 효율이 상대적으로 낮은 루마 성분에 더 많은 비트를 할당하고, 비교적 그렇지 않은 크로마 성분에 더 적은 비트를 할당함으로써, 이미지 데이터(10)를 압축한 압축 데이터(20)의 압축 품질을 향상시킬 수 있다.
도 15는 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 15를 참조하면, 본 발명의 몇몇 실시예들에 따른 이미지 처리 장치의 동작 방법은, 크로마 성분에 대한 목표 비트를 연산(S1501)하는 것을 포함한다.
구체적으로, 이미지 처리 장치는, 크로마 성분에 대한 목표 비트를 연산하기 전에, YUV 포맷을 따르는 이미지 데이터(10)에 대한 목표 압축률에 기반하여 총 목표 비트를 연산한 후, YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분을 압축하기 위한 크로마 성분 목표 비트를 연산한다.
또한, 상기 방법은, 크로마 성분 목표 비트를 할당하여 크로마 성분을 압축(S1503)하는 것을 포함한다.
또한, 상기 방법은, 크로마 성분에 대한 압축 비트(compressed bit) 즉, 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트를 획득(S1505)하고, 이를 이용하여, YUV 포맷 중 Y 성분을 포함하는 루마 성분에 대한 루마 성분 목표 비트를 연산하는 것(S1507)을 포함한다.
또한, 상기 방법은, 루마 성분 목표 비트를 할당하여 루마 성분을 압축(S1509)하는 것을 포함한다.
나아가, 상기 방법은, 루마 성분에 대한 압축 데이터의 루마 성분 사용 비트와, 크로마 성분 사용 비트의 합이 총 목표 비트 미만인 경우, 루마 성분에 대한 압축 데이터 뒤에 더미 비트(dummy bit)를 부가하는 것을 더 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 멀티미디어 IP
200: 프레임 버퍼 컴프레서
300: 메모리
200: 프레임 버퍼 컴프레서
300: 메모리
Claims (20)
- 제1 성분 및 제2 성분을 포함하는 이미지 데이터를 처리하는 멀티미디어 IP;
상기 멀티미디어 IP에 의해 액세스(access)되는 메모리 및;
상기 이미지 데이터에 대해 압축을 수행하여 압축 데이터를 생성하고, 압축 데이터를 상기 메모리에 저장하는 프레임 버퍼 컴프레서(Frame Buffer Compressor, FBC)를 포함하고,
상기 프레임 버퍼 컴프레서는, 상기 이미지 데이터의 상기 제1 성분과 상기 제2 성분의 압축 순서를 제어하는 압축 관리 모듈을 포함하는 이미지 처리 장치. - 제1항에 있어서,
상기 프레임 버퍼 컴프레서는, 상기 압축 관리 모듈에 의해 결정된 압축 순서에 따라 상기 제1 성분 및 상기 제2 성분을 압축한 후, 상기 제1 성분에 대한 압축 데이터와 상기 제2 성분에 대한 압축 데이터를 병합하여 단일 비트 스트림을 생성하는 이미지 처리 장치. - 제2항에 있어서,
상기 프레임 버퍼 컴프레서는, 상기 제1 성분 및 상기 제2 성분에 대한 상기 압축 순서와 다른 임의의 순서로 상기 제1 성분에 대한 압축 데이터와 상기 제2 성분에 대한 압축 데이터를 병합하여 상기 단일 비트 스트림을 생성하는 이미지 처리 장치. - 제2항에 있어서,
상기 프레임 버퍼 컴프레서는, 상기 제1 성분에 대한 압축 데이터와 상기 제2 성분에 대한 압축 데이터를 인터리빙(interleaving) 병합하여 상기 단일 비트 스트림을 생성하는 이미지 처리 장치. - 제2항에 있어서,
상기 프레임 버퍼 컴프레서는, 상기 단일 비트 스트림을 상기 메모리에 라이트(write)하는 이미지 처리 장치. - 제1항에 있어서,
상기 이미지 데이터는 YUV 포맷을 따르는 이미지 데이터이고,
상기 제1 성분은 상기 YUV 포맷 중 Y 성분을 포함하는 루마 성분(Luma component)을 포함하고,
상기 제2 성분은 상기 YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분(Chroma component)을 포함하는 이미지 처리 장치. - 제6항에 있어서,
상기 압축 관리 모듈은, 상기 프레임 버퍼 컴프레서가 상기 크로마 성분을 먼저 압축한 후, 상기 루마 성분을 압축하도록 압축 순서를 제어하는 이미지 처리 장치. - 제7항에 있어서,
상기 압축 관리 모듈은,
상기 이미지 데이터에 대한 목표 압축률(target compression ratio)에 기반하여 총 목표 비트(total target bit)와, 상기 크로마 성분에 대한 크로마 성분 목표 비트(target bit)를 연산하고,
상기 크로마 성분 목표 비트를 할당하여 상기 크로마 성분을 압축하고,
상기 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트(used bit)를 이용하여 상기 루마 성분에 대한 루마 성분 목표 비트를 연산하고,
상기 루마 성분 목표 비트를 할당하여 상기 루마 성분을 압축하는 이미지 처리 장치. - 제8항에 있어서,
상기 크로마 성분 사용 비트는 상기 크로마 성분 목표 비트보다 적은 이미지 처리 장치. - 제8항에 있어서,
상기 이미지 데이터가 YUV 420 포맷을 따르는 경우, 상기 크로마 성분 목표 비트는,
상기 총 목표 비트 / 3 X W (단, W는 1 이하의 양의 실수)로 연산되는 이미지 처리 장치. - 제8항에 있어서,
상기 이미지 데이터가 YUV 422 포맷을 따르는 경우, 상기 크로마 성분 목표 비트는,
상기 총 목표 비트 / 2 X W (단, W는 1 이하의 양의 실수)로 연산되는 이미지 처리 장치. - 제8항에 있어서,
상기 루마 성분 목표 비트는, 상기 총 목표 비트에서 상기 크로마 성분 사용 비트를 감산함으로써 연산되는 이미지 처리 장치. - YUV 포맷을 따르는 이미지 데이터를 처리하는 멀티미디어 IP;
상기 멀티미디어 IP에 의해 액세스(access)되는 메모리 및;
상기 이미지 데이터에 대해 압축을 수행하여 압축 데이터를 생성하고, 압축 데이터를 상기 메모리에 저장하는 프레임 버퍼 컴프레서(Frame Buffer Compressor, FBC)를 포함하고,
상기 프레임 버퍼 컴프레서는, 상기 이미지 데이터의 상기 YUV 포맷 중 Cb 및 Cr 성분을 포함하는 크로마 성분(Chroma component)에 대한 압축이, 상기 이미지 데이터의 상기 YUV 포맷 중 Y 성분을 포함하는 루마 성분(Luma component)에 대한 압축보다 먼저 수행되도록 압축 순서를 제어하는 압축 관리 모듈을 포함하는 이미지 처리 장치. - 제13항에 있어서,
상기 압축 관리 모듈은,
상기 이미지 데이터에 대한 목표 압축률(target compression ratio)에 기반하여 총 목표 비트(total target bit)와, 상기 크로마 성분에 대한 크로마 성분 목표 비트(target bit)를 연산하고,
상기 크로마 성분 목표 비트를 할당하여 상기 크로마 성분을 압축하고,
상기 크로마 성분에 대한 압축 데이터의 크로마 성분 사용 비트(used bit)를 이용하여 상기 루마 성분에 대한 루마 성분 목표 비트를 연산하고,
상기 루마 성분 목표 비트를 할당하여 상기 루마 성분을 압축하는 이미지 처리 장치. - 제14항에 있어서,
상기 크로마 성분 사용 비트는 상기 크로마 성분 목표 비트보다 적은 이미지 처리 장치. - 제15항에 있어서,
상기 압축 관리 모듈은, 상기 크로마 성분 사용 비트가 상기 크로마 목표 비트보다 적으면서도 가장 가까운 값이 되도록 QP 값 및 엔트로피 k값을 결정하는 이미지 처리 장치. - 제14항에 있어서,
상기 이미지 데이터가 YUV 420 포맷을 따르는 경우, 상기 크로마 성분 목표 비트는,
상기 총 목표 비트 / 3 X W (단, W는 1 이하의 양의 실수)로 연산되는 이미지 처리 장치. - 제14항에 있어서,
상기 이미지 데이터가 YUV 422 포맷을 따르는 경우, 상기 크로마 성분 목표 비트는,
상기 총 목표 비트 / 2 X W (단, W는 1 이하의 양의 실수)로 연산되는 이미지 처리 장치. - 제14항에 있어서,
상기 루마 성분 목표 비트는, 상기 총 목표 비트에서 상기 크로마 성분 사용 비트를 감산함으로써 연산되는 이미지 처리 장치. - 제14항에 있어서,
상기 압축 관리 모듈은 상기 루마 성분에 대한 압축 데이터의 루마 성분 사용 비트와, 상기 크로마 성분 사용 비트의 합이 상기 총 목표 비트 미만인 경우, 상기 루마 성분에 대한 압축 데이터 뒤에 더미 비트(dummy bit)를 부가하는 이미지 처리 장치.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/181,957 US10819965B2 (en) | 2018-01-26 | 2018-11-06 | Image processing device and method for operating image processing device |
SG10201810709TA SG10201810709TA (en) | 2018-01-26 | 2018-11-29 | Image processing device and method for operating image processing device |
TW107144252A TWI820063B (zh) | 2018-01-26 | 2018-12-10 | 影像處理裝置及影像處理裝置的操作方法 |
CN201910039320.0A CN110087082B (zh) | 2018-01-26 | 2019-01-16 | 图像处理装置和用于操作图像处理装置的方法 |
US17/034,403 US11445160B2 (en) | 2018-01-26 | 2020-09-28 | Image processing device and method for operating image processing device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180010128 | 2018-01-26 | ||
KR1020180010128 | 2018-01-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190091179A true KR20190091179A (ko) | 2019-08-05 |
KR102523959B1 KR102523959B1 (ko) | 2023-04-20 |
Family
ID=67615965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180041786A KR102523959B1 (ko) | 2018-01-26 | 2018-04-10 | 이미지 처리 장치 및 이미지 처리 장치의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR102523959B1 (ko) |
SG (1) | SG10201810709TA (ko) |
TW (1) | TWI820063B (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494869B2 (en) * | 2020-09-30 | 2022-11-08 | Realtek Semiconductor Corporation | Image processor having a compressing engine performing operations on each row of M*N data block |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090067067A (ko) * | 2007-12-19 | 2009-06-24 | 소니 가부시끼 가이샤 | 시각적 무손실 비디오 데이터 압축 |
US20110206289A1 (en) * | 2010-02-22 | 2011-08-25 | Salih Dikbas | Guaranteed-Rate Tiled Image Data Compression |
-
2018
- 2018-04-10 KR KR1020180041786A patent/KR102523959B1/ko active IP Right Grant
- 2018-11-29 SG SG10201810709TA patent/SG10201810709TA/en unknown
- 2018-12-10 TW TW107144252A patent/TWI820063B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090067067A (ko) * | 2007-12-19 | 2009-06-24 | 소니 가부시끼 가이샤 | 시각적 무손실 비디오 데이터 압축 |
US20110206289A1 (en) * | 2010-02-22 | 2011-08-25 | Salih Dikbas | Guaranteed-Rate Tiled Image Data Compression |
Also Published As
Publication number | Publication date |
---|---|
TW201941594A (zh) | 2019-10-16 |
SG10201810709TA (en) | 2019-08-27 |
TWI820063B (zh) | 2023-11-01 |
KR102523959B1 (ko) | 2023-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8639049B1 (en) | Systems and methods for image coding and processing | |
US11445160B2 (en) | Image processing device and method for operating image processing device | |
US10887616B2 (en) | Image processing devices having enhanced frame buffer compressors therein | |
US11991347B2 (en) | Image processing device | |
US20210250575A1 (en) | Image processing device | |
CN105472442A (zh) | 一种用于超高清帧率上变换的片外缓存压缩*** | |
US11190810B2 (en) | Device and method for compressing image data using quantization parameter and entropy tables | |
US11153586B2 (en) | Image processing device and frame buffer compressor | |
KR102523959B1 (ko) | 이미지 처리 장치 및 이미지 처리 장치의 동작 방법 | |
KR102543449B1 (ko) | 이미지 처리 장치 및 이미지 처리 장치의 동작 방법 | |
US20220036922A1 (en) | Frame buffer compressing circuitry and image processing apparatus | |
KR102465206B1 (ko) | 이미지 처리 장치 | |
TWI846680B (zh) | 影像處理裝置及操作影像處理裝置之方法 | |
TWI795480B (zh) | 用於執行資料解壓縮的影像處理裝置及用於執行資料壓縮的影像處理裝置 | |
US12052307B2 (en) | Image processing device and method for operating image processing device | |
US20220201340A1 (en) | Image processing device and method for operating image processing device | |
US20220201060A1 (en) | Image processing device and method for operating image processing device | |
KR20220149124A (ko) | 이미지 신호 프로세서, 이미지 신호 프로세서 동작 방법 및 상기 이미지 신호 프로세서를 포함하는 이미지 처리 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |