KR20070046952A - 이미지 압축에서의 레이트 제어 방법 및 시스템 - Google Patents

이미지 압축에서의 레이트 제어 방법 및 시스템 Download PDF

Info

Publication number
KR20070046952A
KR20070046952A KR1020077006863A KR20077006863A KR20070046952A KR 20070046952 A KR20070046952 A KR 20070046952A KR 1020077006863 A KR1020077006863 A KR 1020077006863A KR 20077006863 A KR20077006863 A KR 20077006863A KR 20070046952 A KR20070046952 A KR 20070046952A
Authority
KR
South Korea
Prior art keywords
block
threshold
image
budget
quantized
Prior art date
Application number
KR1020077006863A
Other languages
English (en)
Other versions
KR100904797B1 (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 KR20070046952A publication Critical patent/KR20070046952A/ko
Application granted granted Critical
Publication of KR100904797B1 publication Critical patent/KR100904797B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • 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/115Selection of the code volume for a coding unit prior to coding
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

이미지를 압축하기 위한 방법 및 시스템이 설명된다. 이미지 데이터의 블록에 연관된 다수의 변형되고 양자화된 값들이 액세스된다. 블록은 이미지 내 위치에 대응한다. 블록의 런-길이 인코딩 중에 인코딩된 비트의 수의 카운트가 이루어진다. 블록의 런-길이 인코딩은 카운트가 제한치에 도달하면 종료된다.
이미지, 압축

Description

이미지 압축에서의 레이트 제어 방법 및 시스템{METHODS AND SYSTEMS FOR RATE CONTROL IN IMAGE COMPRESSION}
본 발명의 실시예들은 일반적으로 이미지 압축에 관한 것이다.
이미지 데이터는 이미지의 충실도(fidelity)에 큰 영향을 미치지 않고 이미지에 관련된 데이터의 양을 줄이기 위해 압축(인코딩)될 수 있다. JPEG(Joint Photographic Experts Group) 압축 표준과 같은 이미지 압축 표준은 이미지 데이터의 양을 충분히 감소시킨다.
JPEG 인코딩에서, 입력 이미지는 매크로 블록으로도 언급되는 MCU(macro code units, minimum coded units)로 분해(decompose)될 수 있다. 각 MCU는 전형적으로 8x8 값의 어레이인 다수의 블록을 포함한다. 블록은 별개의 이미지나 이미지의 컬러 컴포넌트 각각과 연관될 수 있다. 예컨대, MCU는 휘도 블록(luminance block)(예컨대, Y-블록) 및 두 개의 색상 블록(chrominance block)(예컨대, U-블록 및 V-블록)을 포함할 수 있다.
각 블록을 주파수 공간(DCT 계수로도 언급됨)으로 변환하기 위해 이산 코사인 변환(discrete cosine transform; DCT)이 수행된다. 일반적으로, 대다수 이미지는 고 주파수 정보를 거의 포함하지 않으므로, 변환된 이미지 데이터의 대다수는 저 주파수 컴포넌트에 집중된다. 각 8x8 블록에서 64 DCT 계수(한 개의 “DC"계수이고 63개의 ”AC" 계수)가 생성된다. DCT 변환 그 자체는 데이터의 양을 줄이지 않는다.
양자화에서, 주파수 정보의 일부가 본질적으로 폐기되어, 더 적은 비트가 이미지를 기술하는데 사용될 수 있다. 예컨대, 픽셀당 256개의 가능한 컬러 레벨(예컨대, 가장 밝은 것에서 가장 어두운 것까지)이 있을 수 있음을 고려하라. 따라서, 양자화 전에 각 레벨은 8비트들의 고유 조합에 의해 식별될 수 있다. 그러나, 양자화를 사용해서 256개의 가능한 레벨은 16 레벨의 16 스텝으로 양자화될 수 있는데, 각 스텝은 4비트만의 고유 조합으로 식별된다.
저 주파수 DCT 계수는 상대적은 다수의 비트를 사용해서 더 이산적으로 양자화될 수 있고, 고 주파수 DCT 계수는 상대적으로 작은 수의 비트를 사용해서 더 조잡한 베이시스(basis)로 양자화될 수 있다. 그래서, 저 주파수 계수는 16 스텝으로 양자화될 수 있고 각 스텝은 상술한 바와 같이 4비트를 사용해서 표시되고, 고 주파수 계수는 2 스텝으로 양자화될 수 있고 각 스텝은 1비트로 표시된다.
DCT 계수에 적용되는 양자화 스텝은 양자화 테이블로 불리는 8x8 어레이 내에 정렬되어서, 양자화 테이블 내의 엔트리는 DCT 계수 어레이 내의 위치에 해당한다. 양자화 테이블은 압축량("압축비")을 조정하는데, 양자화 스텝의 크기를 특정하기 때문이다. 양자화 스텝이 더 클수록, 압축비가 더 커지지만, 재구성된(압축해제된 또는 디코딩된) 이미지의 질이 적당하게 감소한다. 역으로, 더 작은 양자화 스텝은 압축이 안 된 데이터에 더 가깝게 표현되는 것을 의미하고, 이로 인해 재구성된 이미지의 질은 증가하나 압축비는 줄어든다.
양자화 후에, 압축 프로세스는 양자화된 데이터를 비트스트림으로 인코딩하고 직렬화하는(seriallize) 런-길이(run-length) 인코딩(예컨대, 허프만 인코딩)으로 완결된다. 비트스트림의 사이즈(비트나 바이트 단위로 측정)는 양자화 정도에 따라 변하며, 이미지 데이터의 함수이다.
압축 방식의 바람직한 특징은 압축비의 제어("레이트 제어"로 불려짐)이다. 레이트 제어는 목표 압축비가 특정되었음을 의미하고, 목표 압축비에 따라서 이미지 데이터가 압축되면 결과 비트스트림의 길이는 목표 크기 이하이다. 적절한 레이트 제어로, 압축된 데이터를 위한 파일 공간이나 압축된 데이터를 전송하기 위한 대역폭을 효과적으로 할당하는 것이 가능한데, 필요한 압축 데이터량이 대략적으로 알려져있기 때문이다. 그렇지 아니하고, 너무 적은 파일 공간이 할당되면, 압축 데이터가 할당된 파일 공간에 맞지 않거나 이용가능한 전송 대역폭을 초과할 수 있다.
상술한 바와 같이, 압축비 및 출력 품질(예컨대, 복원 이미지의 품질)은 양자화 값을 변경함으로써 제어된다. JPEG 인코딩에서, 양자화 값들은 인코딩 전에 선택되고 값들의 한 세트가 전체 이미지에 제공된다. 유감스럽게도, (압축되지 않은) 데이터 입력량 및 양자화의 선택된 집합에 대해서, (압축된) 출력 데이터의 양을 정확하게 예측하는 것은 불가능하다. 실제로, 출력 비트스트림의 크기는 이미지별로 달라질 수 있고, 가장 나쁜 경우에는 입력 비트스트림보다 더 커질 수 있다. 출력 비트스트림 크기의 불확실성은 문제가 되는데, 상술한 바와 같이 압축된 데이터의 양이 할당된 파일 공간에 적당히 맞기에는 너무 크거나 주어진 할당된 전송 대역폭으로 전송하기에는 너무 클 수 있기 때문이다.
압축된 데이터의 양이 너무 크면, 양자화 값의 새로운 세트가 선택될 수 있고 데이터가 다시 압축될 수 있다. 프로세스는 목표 압축비(예컨대, 목표 비트스트림이나 파일 크기)가 될 때까지 반복된다. 그래서, 종래의 기술은 다수의 반복을 필요로 할 수 있어서, 인코딩 시간 및 컴퓨팅 자원(전력, 메모리, 프로세서 사이클 등)의 사용을 증가시킨다. 목표 비트스트림이나 파일 사이즈를 초과하는 위험성은 양자화 값을 더 크게 선택해서 저감될 수 있으나, 복구된 이미지의 품질을 너무 과도하게 줄여야 한다.
따라서, 효과적으로 화상 데이터를 목표 압축 비율로 압축할 수 있는 시스템 및/또는 방법이 바람직하다. 본 발명에 따른 실시예들은 이와 같은 이점 및 기타 다른 이점들을 제공한다.
본 발명의 일 실시예에서, 변형되고 양자화된 화상 데이터의 각 블록(예컨대, 각 휘도 및 크로미넌스 블록)에 제한치 또는 버짓(budget)이 할당된다. 그와 같은 일 실시예에서, 버짓의 사이즈는 해당 블록이 연관된 화상 내 위치의 함수이다. 버짓은 각 블록마다 상이할 수도 있고 동일할 수도 있다. 일 실시예에서, 전체 버짓의 합은 목표 비트스트림 또는 파일의 사이즈보다 크지 않다.
일 실시예에서, 하나의 블록에서 변환되고 양자화된 화상 데이터에 대한 런-길이 인코딩 동안, 인코딩되는(예컨대, 비트스트림으로 직렬화(serialize)되는) 비트의 수가 카운팅된다. 카운트가 해당 블록에 지정된 제한치에 도달하면, 그 블록의 인코딩이 종결된다. 즉, 블록이 완전히 인코딩되기 이전에 버짓이 소진될 경우 엔드-오브-블록(end-of-block) 코드를 실시함으로써 변환되고 양자화된 값들 중 아직 런-길이 인코딩되지 않은 값들은 본질적으로 폐기된다.
또 다른 실시예에서, 어느 블록이 전체 버짓을 소비하지 않은 채 인코딩된 경우, 그 버짓의 모든 나머지 부분은 또 다른 블록의 버짓에 가산될 수 있다.
또 다른 실시예에서, 각 버짓 내에 제1 임계치가 정의된다. 제1 임계치는 본질적으로 해당 버짓에 의해 적용되는 한도에 대해 마진을 형성한다. 그러한 실시예에서, 제1 임계치에 도달하면, 제2 임계치를 충족시키지 않는 모든 나머지(예컨대, 아직 인코딩되지 않은) 변환되고 양자화된 값들은 영(0)으로 설정된다(사실상, 이들은 폐기된다). 제2 임계치는 변환되고 양자화된 값들의 사이즈와 연관된다. 제1 및 제2 임계치들은 프로그램 가능하고 인코딩 과정 동안 변경될 수 있다.
요컨대, 본 발명의 실시예들에 따르면, 화상 데이터의 블록들 간에 배분되고 블록 별(block-by-block) 기반으로 적용되는 버짓을 형성함으로써 속도 제어가 효과적으로 달성된다. 일 실시예에서, 추후 런-길이 인코딩되고, 대개는 화상 충실도(fidelity)에 별로 기여하지 않은 값들에 대응하는, 블록 내 변환되고 양자화된 값들은 폐기되어(인코딩되지 않아), 화상 충실도를 크게 줄이는 일 없이 압축되는 데이터의 양을 감소시킨다. 또 다른 실시예에서, 대개는 화상 충실도에 크게 기여하지 않는 "더 적은" 변환되고 양자화된 값들(예컨대, 앞서 언급된 제2 임계치를 충족시키지 않는 값들)이 폐기되고(인코딩되지 않고), 역시 화상 충실도를 크게 줄이는 일 없이 압축되는 데이터의 양을 감소시킨다.
전술한 목적 및 이점 뿐만 아니라, 본 발명의 다양한 실시예들의 목적 및 이점들에 대해서도, 당업자라면 첨부 도면에 도시된 실시예들에 관한 다음의 상세한 설명을 참조함으로써 잘 알 수 있을 것이다.
본 명세서에 포함되고 그 일부를 이루는 첨부 도면은, 상세한 설명과 함께 본 발명의 실시예들을 예시하고, 본 발명의 원리를 설명하는데 이용된다.
도 1a는 본 발명에 따른 실시예들이 구현되는 시스템의 일 예에 관한 블록도,
도 1b는 본 발명에 따른 실시예들이 구현되는 시스템의 또 다른 예에 관한 블록도,
도 2는 본 발명의 일 실시예에 따른 인코딩 및 디코딩 프로세스의 데이터 흐름을 보여주는 데이터 흐름도,
도 3은 본 발명의 일 실시예에 따른 인코딩 프로세스의 단계들을 보여주는 데이터 흐름도,
도 4는 본 발명의 일 실시예에 따른 인코딩 프로세스의 단계들을 보여주는 데이터 흐름도,
도 5는 본 발명의 일 실시예에 따라 속도 제어를 달성하는데 이용될 수 있는 버짓의 일 예에 관한 그래프를 도시한 도면,
도 6a는 본 발명의 일 실시예에 따라 압축될 수 있는 화상을 도시한 도면,
도 6b는 본 발명의 일 실시예에 따라 속도 제어를 달성하는데 이용될 수 있는 버짓의 일 예에 관한 그래프를 도시한 도면,
도 7은 본 발명의 일 실시예에 따라 데이터를 압축하기 위한 일 방법의 흐름도,
도 8은 본 발명의 또 다른 실시예에 따라 데이터를 압축하기 위한 일 방법의 흐름도.
상세한 설명 중에 참조되는 도면은 특별히 언급된 경우를 제외하고는 축척에 따라 도시된 것으로 이해되어서는 안된다.
이하, 본 발명의 다양한 실시예들에 대한 상세한 설명이 이루어질 것이며, 이들의 예들이 첨부된 도면에 도시되어 있다. 본 발명은 이들 실시예들과 관련하여 설명될 것이나, 이들이 본 발명을 이들 실시예들로 한정하고자 하는 것은 아님을 알 것이다. 반대로, 본 발명은 첨부된 청구항들에 정의된 본 발명의 취지 및 범위 내에 속할 수 있는 대안들, 개조들 및 균등물들을 포함한다. 이에 더해, 이하 본 발명의 상세한 설명에서는, 본 발명의 자세한 이해를 제공하기 위해 여러 상세한 설명들이 제시된다. 그러나, 본 발명은 이들 상세한 설명들이 없이도 실시될 수 있음을 알 것이다. 다른 경우에 있어서, 공지된 방법들, 절차들, 부품들 및 회로들은 본 발명의 특징을 불필요하게 불명료하게 하지 않기 위해서 상세히 설명되지 않았다.
후술되는 상세한 설명의 몇몇 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 절차들, 논리 블록들, 프로세싱 및 다른 심볼 표현들로 제공된다. 이들 설명들 및 표현들은 데이터 처리 기술 분야의 당업자들이 다른 당업자들에게 그들의 연구를 가장 효과적으로 알리기 위해 사용되는 수단들이다. 본 발명에 있어서, 절차, 논리 블록, 프로세스 또는 이와 유사한 것들은 원하는 결과로 유도하는 일관된 일련의 단계들 또는 명령들로 고려된다. 이들 단계들은 물리량들의 물리적 조작들을 사용한다. 일반적으로, 반드시 그렇지는 않지만, 이들 물리량들은 컴퓨터 시스템 내에서 저장, 전달, 결합, 비교 및 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취할 수 있다. 많은 경우 있어서, 일반 용어의 사용 용법에 따라, 이들 신호들을 트랜잭션들, 비트들, 값들, 소자들, 심벌들, 문자들, 프래그먼트들, 픽셀들 또는 이와 유사한 것들로 언급하는 것이 용이하다는 것이 증명되었다.
그러나, 이들 전부와 이들과 유사한 용어들은 적절한 물리량들과 연관되어야 하며, 이들 물리량들에 적용되는 편의상의 부호일 뿐임을 명심해야 할 것이다. 명시적으로 이와 달리 표시된 경우를 제외하면, 후술할 논의에 의해 명백한 바와 같이, "액세스(accessing)", "유지(maintaining)", "카운팅(counting)", "압축(compressing)", "압축해제(decompressing)", "인코딩(encoding)", "디코딩(decoding)", "증가(increasing)", "종료(concluding)", "변환(transforming)", "양자화(quantizing)", "수신(receiving)", "할당(assigning)", "선택(selecting)", "감소(reducing)" 또는 이와 유사한 것들은 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작들 및 프로세스들(예를 들어, 도 7 및 8 각각 의 흐름도 700 및 800)을 말한다. 이러한 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치는 컴퓨터 시스템 메모리들, 레지스터들 또는 다른 이러한 정보 저장, 전송 또는 표시 장치들 내의 (전자) 물리량들로 표현되는 데이터를 조작 또는 변환한다. 본 발명은 다른 컴퓨터 시스템들에 사용하기에 적합하다.
도 1a는 본 발명에 따른 실시예들이 구현될 수 있는 시스템(100)의 블록도이다. 시스템(100)은 본 발명에 따라 실시예들의 특정 기능을 구현하는 실행 플랫폼의 부품들을 나타낸다. 도 1a에 도시된 바와 같이, 시스템(100)은 호스트 인터페이스(101)를 통해 그래픽 프로세서(105)에 연결된 마이크로프로세서(102)를 포함한다. 호스트 인터페이스(101)는 마이크로프로세서(102)와 그래픽 프로세서(105) 간에 그들 각각의 형식에 따라 데이터를 번역하며, 데이터를 이들 간에 교환하는 것을 제어한다. 마이크로프로세서(102) 그래픽 프로세서(105)는 메모리 제어기(106)를 통해 메모리(107)에 연결된다. 시스템(100) 실시예에 있어서, 메모리(107)는 공유 메모리(sharef memory)이며, 메모리(107)는 마이크로프로세서(102) 및 그래픽 프로세서(105) 모두에 대한 명령들 및 데이터를 저장한다. 공유 메모리(107)로의 액세스는 메모리 제어기(106)를 통해 이루어진다. 공유 메모리(106)는 또한 연결된 디스플레이(108)를 구동하는 픽셀 데이터를 저장하기 위한 비디오 프레임 버퍼를 포함한다.
전술한 바와 같이, 본 발명의 특정 프로세스들 및 단계들은 일 실시예에 있어서, 컴퓨터 시스템{예를 들어, 시스템(100)}의 판독가능한 메모리{예컨대, 메모리(107)} 내에 위치하는 일련의 명령들(예를 들어, 소프트웨어 프로그램)로서 구현 되며, 시스템(100)의 마이크로프로세서(102) 및 그래픽 프로세서(105)에 의해 실행된다. 명령들이 실행되면, 상기 명령들은 시스템(100)으로 하여금 후술할 본 발명의 실시예들의 기능들은 구현하도록 한다. 다른 실시예에 있어서, 본 발명의 특정 프로세스들 및 단계들은 하드웨어 내에서(예를 들어, 그래픽 프로세서(105)를 사용하여) 구현된다.
추가적으로, 도 1a의 부품들은 개별적인 부품들로 그려졌으나, 몇몇 부품들은 현대적인 반도체 제조 공정들에 의해 제공되는 높은 수준의 집적 기술의 이점을 활용한 단일 집적 회로 장치(예를 들어, 단일 집적 회로 다이)로 구현될 수 있다. 예를 들어, 일 실시예에 있어서, 마이크로프로세서(102), 호스트 인터페이스(101), 그래픽 프로세서(105), 및 메모리 제어기(101)는 단일 집적 회로 다이로 제조된다.
도 1b는 본 발명의 다른 실시예에 따른 시스템(120)을 도시한다. 시스템(120)은 도 1a의 시스템(100)과 상당히 유사하다. 그러나, 시스템(120)은 전용 시스템 메모리(127)를 갖는 마이크로프로세서(102) 및 전용 그래픽 메모리(126)를 갖는 그래픽 프로세서(105)를 사용한다. 시스템(120)의 일 실시예에 있어서, 시스템 메모리(127)는 마이크로프로세서(102) 상에서 실행되는 프로세스들/스레드들(threads)에 대한 명령들 및 데이터를 저장하고, 그래픽 메모리(126)는 그래픽 프로세서(105) 상에 실행되는 프로세스들/스레드들에 대한 명령들 및 데이터를 저장한다. 그래픽 메모리(126)는 디스플레이(108)를 구동하는 프레임 버퍼 내의 픽셀 데이터를 저장한다. 도 1a의 시스템(100)과 같이, 시스템(120)의 하나 또는 그 이상의 부품들은 단일 집적 회로 다이로 집적될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 인코딩 프로세스(222) 및 데이터 디코딩 프로세스(224) 내의 데이터 흐름을 도시하는 데이터 흐름도(200)이다. 인코딩 프로세스(222)는 아래에 더욱 상세히 설명되는 인코딩 방법을 사용하여 데이터(221)를 압축(인코딩)한다. 도 2의 디코딩 프로세스(224)는 재구성된 데이터(225)를 생성하기 위해 압축된 데이터(223)를 압축해제(재구성)한다. 더욱 중요하게, 본 발명의 일 실시예에 따르면, 아래에 더욱 상세히 설명될 바와 같이, 압축된 데이터(223)의 양은 목표 파일에 맞거나(fit into) 가용 전송 대역폭을 초과하지 않을 것이다. 압축 데이터(223)는 이에 후속하여 디코더로 인출되거나 스트림된다. 이와 달리, 압축 데이터(223)는 그것이 인코딩됨에 따라, 저장되는 대신에 또는 저장과 병행하여, 디코더로 스트림될 수 있다.
도 3은 본 발명의 일 실시예에 따른 인코딩 프로세스(222)의 단계들을 도시한 데이터 흐름도이다. 일 실시예에서, 인코딩 프로세스(222)는 JPEG를 실질적으로 따르는 압축 방식을 사용하여 구현되나, 본 발명이 이에 한정되는 것은 아니다.
인코딩 프로세스(222)는 이산 코사인 변환(DCT)(331), 양자화(332) 및 런-길이 인코딩(run-length encoding)(333)을 포함한다. DCT(331)에서, 데이터(221)의 블록 각각(도 2)은 DCT 계수로 변환된다. 데이터의 8x8 블록 각각에 대해서, 64개의 DCT 계수가 만들어진다(하나의 DC 계수와 63개의 AC 계수).
양자화(332)(도 3)에 있어서, 일부 주파수 정보는 본질적으로 폐기되어 이미지를 묘사하기 위해 더 적은 비트가 사용될 수 있다. 더 낮은 주파수 DCT 계수는 상대적으로 큰 수의 비트를 사용하여 더 이산적으로 양자화될 수 있는 반면, 더 높 은 주파수 DCT 계수는 상대적으로 적은 수의 비트를 사용하여 더 자연적으로(on a cruder basis) 양자화될 수 있다.
양자화(332) 후, 런-길이 인코딩(333)(예컨대, 허프만 인코딩)이 수행되어 양자화된 데이터를 인코딩하고 직렬화(serialize)한다. 런-길이 인코딩 동안, 자주 반복된 스트링은 코드, 즉 가장 일반적으로 발생하는 스트링으로 대체되어 더 짧은 코드를 얻는다. 인코딩된 데이터는 파일에 저장될 수 있고, 후에 그 파일로부터 인코딩된 데이터가 판독되고 디코더로 스트리밍될 수 있다. 대안적으로는, 인코딩된 데이터는 데이터가 인코딩된 채로 디코더로 스트리밍될 수 있다.
중요한 것은, 본 발명의 실시예들에 따라, 비율 제어(예컨대, 목표 파일 또는 비트스트림 사이즈)가 더 신뢰성있게 이루어질 수 있고, 양자화(332) 및 런-길이 인코딩(333) 사이에서 오고 가는 반복의 수의 감소가 기대된다는 것이다.
도 4는 본 발명의 일 실시예에 따른 인코딩 프로세스{예컨대, 도 2 및 3의 인코딩 프로세스(222)}에서의 단계들을 도시한 데이터 흐름도이다. 도 4의 예에서, 이미지(401)는 이미지 영역(410)으로 표시되는 다수의 이미지 영역들을 포함한다. 일 실시예에서, 이미지 영역(410)은 다수의 데이터 블록을 포함하는 매크로블록 또는 MCU에 의해 표시된다. 도 4의 예에서, 이미지 영역(410)과 연관된 것은 Y 블록(420)(예컨대, 휘도 블록), U 블록(420) 및 V 블록(422)(예컨대, 색차 블록)이다. 그러나, 본 발명은 YUV 포맷의 사용에 한정되지 않는다. 대신에, 예컨대, RGB(적색, 녹색, 청색) 포맷 또는 CMYK(청녹색, 자홍색, 황색, 흑색) 포맷이 사용될 수 있다.
본 실시예에서, 각각의 블록(420, 421 및 422)은 8x8 데이터 배열로 구성된다. Y 블록(422)을 예로 들어보면, 블록 각각의 데이터는 8x8 배열(블록 431)의 DCT 계수로 변환된다. 변환된 블록(431)에서, 제1값(예컨대, 블록 431의 왼쪽 위 구석에 있는 값)은 DC값(이 값은 평균 밝기를 설정한다)을 나타낸다. 블록(431)의 나머지 값들은 AC값을 나타낸다. AC값들은 DC값으로부터의 변화를 기술한다. 일반적으로, 블록(431)의 값들은 DCT 계수들을 나타낸다.
본 실시예에서, 블록(431)의 DCT 계수들은 양자화된다. 블록(432)은 양자화된 DCT 계수들을 나타낸다. 다음으로, 블록(432)의 변환되고 양자화된 데이터는 예컨대, 런-길이 인코딩을 사용하여 비트스트림으로 인코딩되고 직렬화된다. 다음으로, 결과 데이터는 파일에 기록되거나 디코더에 스트리밍될 수 있다.
일 실시예에서, 블록(432)의 변환되고 양자화된 데이터는 도 4에 도시된 바와 같이 지그재그 방식으로 판독되거나 스캔된다. 그러나, 본 발명은 이에 한정되는 것은 아니다. 예를 들어, 블록(432)의 데이터는 행 별로(row-by-row) 또는 열 별로(column-by-column) 판독될 수 있다.
본 발명의 실시예들에 따라, 버짓(budget) 또는 제한치가 블록 각각에 할당된다. 버짓은 블록(432)으로부터 인코딩될 수 있는 비트의 수를 제한한다. 버짓 또는 제한치는 블록(432)의 변환되고 양자화된 데이터의 런-길이 인코딩 동안 시행된다. 일 실시예에서, 블록(432)의 값들이 판독되고 인코딩됨에 따라, 각각의 값과 연관된 비트의 수가 카운트된다. 그 카운트가 해당 버짓 제한치에 다다르면, 블록(432)의 인코딩이 종결된다. 일 실시예에서, 엔드-오브-블록(end-of-block) 코드가 비트스트림에 삽입되어 블록(432)으로부터 인코딩된 데이터의 끝을 나타내고, 블록(432)의 모든 나머지(인코딩되지 않은) 값들은 폐기된다.
버짓은 특정 이미지 컴포넌트와 연관된 모든 블록에서 동일할 수 있고, 또는 블록에 따라 변할 수 있다. 따라서, 예컨대 모든 Y 블록은 동일한 버짓을 가질 수 있고, 또는 서로 다른 버짓을 가질 수 있다. 또한, 특정 MCU 또는 이미지 영역과 연관된 각각의 블록은 동일한 버짓 또는 상이한 버짓을 가질 수 있다. 즉, 예컨대 Y 블록(420), U 블록(421) 및 V 블록(422)은 모두 동일한 이미지 영역(410)과 연관되어 있다 하더라도 서로 다른 버짓을 가질 수 있으며, 동일한 버짓을 가질 수도 있다.
이미지(401)의 일부 영역과 연관된 블록들에 할당된 버짓이, 해당 이미지의 다른 영역과 연관된 블록들에 할당된 버짓보다 더 큰 것이 바람직할 수 있다. 즉, 이미지의 다른 지역보다 더 중요한 것으로 생각되는 이미지(401)의 하나 이상의 지역이 있을 수 있으며, 상대적으로 더 중요한 지역에 연관된 블록들에 더 큰 버짓을 할당하는 것이 바람직할 수 있다. 예를 들어, 초상화에서, 재구성된 이미지가 초상화의 주제(일반적으로 이미지의 중심을 향해 위치함)를 보다 정확하게 묘사하고, 주제의 주변에 있는 이미지 영역들(예컨대, 특히 이미지의 가장자리)에는 덜 신경쓰는 것이 바람직할 수 있다. 이하 도 6a에서 더 상세히 설명되는 바와 같이, 사용자는 이미지의 중심 또는 일부 다른 초점(반드시 중심인 것은 아님)을 정의할 수 있고, 블록들은 상기 지점으로부터의 거리에 따라 버짓이 할당된다.
도 4의 전체 이미지(401)를 인코딩하기 위해 사용가능한 총 버짓은 목표 파 일 또는 비트스트림 사이즈를 넘지 않는다. 즉, 블록들에 할당된 개개의 버짓들의 총합(비트 단위)은 목표 파일 또는 비트스트림 사이즈를 넘지 않는다. 따라서, 각각의 블록이 그 각각의 버짓 내에서 인코딩되므로, 이미지(401)가 압축되는 경우, 인코딩된 이미지 데이터는 그에 할당된 저장 공간의 양 내에 들어가게 될 것이다.
본 발명에 따른 실시예들은 적어도 수 개의 상이한 접근법을 사용하여 구현될 수 있다. 한 접근법에 따르면, 블록별(block-by-block) 버짓이 각각의 블록에 대하여 개별적으로 시행된다. 즉, 블록에 버짓이 할당되고, 그 블록의 런-길이 인코딩 동안, 인코딩되는 비트의 수가 그 블록에 대하여만 카운트된다. 블록의 런- 길이 인코딩은 그 블록에 대한 모든 데이터가 인코딩되거나 버짓 제한치에 도달할 때까지 계속된다.
다른 접근법에 따르면, 한 블록으로부터 다음 블록으로 누적 카운트가 유지되며, 버짓이 그에 따라 증가된다. 제1 블록 내의 데이터가 런-길이 인코딩됨에 따라, 인코딩되는 비트 수가 카운트된다. 제1 블록의 런-길이 인코딩은 모든 데이터가 직렬화(serialize)되거나 버짓 한계에 도달할 때까지 계속될 것이다. 제1 블록의 런-길이 인코딩의 종료 이후, 인코딩될 제2 블록에 할당된 버짓의 양만큼 버짓이 증가된다. 제2 블록의 데이터가 런-길이 인코딩됨에 따라, 인코딩되는 비트 수가 카운트되며, 제2 블록에 대한 카운트는 제1 블록에 대한 카운트가 중단되는 데에서 계속된다.
이상의 접근법 어느쪽에 따르든지, 블록에 대한 버짓이 완전히 소비되지 않는 경우가 존재할 수 있다. 즉, 블록 내의 변환되고 양자화된 값들 모두가 버짓 한계에 도달하기 전에 런-길이 인코딩되는 상황이 존재할 것이다.
전술한 접근법 중 후자에 따르면, 사용되지 않은 제1 블록에 대한 버짓의 모든 부분은 제2 블록의 런-길이 인코딩 동안 적용되는 버짓으로 자동으로 이월될 것이다.
전술한 접근법 중 전자에 따르면, 하나의 블록에 대한 버짓의 모든 남은 부분은 다른 블록의 버짓을 증가시키는데 사용될 수 있다. 예를 들어, 하나의 블록의 런-길이 인코딩이 종결되면, 그 블록에 대한 버짓의 모든 사용되지 않은 부분이 인코딩될 다음 블록의 버짓에 부가될 수 있다. 대안적으로, 하나의 블록에 대한 버짓의 사용되지 않은 부분은 저장소에 유지되어 임의의 다른 블록에 적용될 수 있으며, 이는 반드시 인코딩될 다음 블록일 필요는 없다. 예를 들어, 전술한 바와 같이, 이미지의 일 부분은 다른 부분보다 더 중요하게 여겨질 수 있으며, 그 부분에 대하여는 이미지의 다른 부분보다 더 큰 버짓을 가지도록 하는 것이 바람직할 수 있다. 따라서, 하나의 블록으로부터의 버짓의 사용되지 않은 부분은 이미지의 상대적으로 더 중요한 부분과 연관된 블록의 버짓에 부가될 수 있다. 유사한 맥락에서, 사용되지 않은 버짓 부분은 저장소에 축적될 수 있으며, 더 중요하다고 간주되는 블록들을 필요에 따라 저장소에서 가져올 수 있다.
이미지 컴포넌트의 일 유형에 관련된 블록으로부터의 사용되지 않은 버짓이 이미지 컴포넌트의 다른 일 유형에 관련된 블록의 버짓으로 적용될 수 있음을 주의하여야 한다. 즉, 예를 들어, Y-블록의 인코딩 후에 남은 모든 버짓은 다른 Y-블록의 버짓이나 U-블록 또는 V-블록의 버짓에 부가될 수 있다.
도 5는 본 발명의 일 실시예에 따라 레이트 제어(rate control)를 이루는데 사용될 수 있는 버짓의 일례의 그래프이다. 도 5의 예는, 누적 카운트가 한 블록으로부터 다음 블록으로 유지되고, 그에 따라 버짓이 증가되는 위에 제시된 접근법에 대응한다. 따라서, (인코딩된 비트의 수로 표현되는) 도 5에 도시된 버짓은 한 블록으로부터 다음 블록으로 누적된 누적값이다. 실제로, 블록 1에 할당된 버짓량은 B1, 블록 2에 할당된 버짓량은 B2-B1, 블록 3에 할당된 버짓량은 B3-B2 등이다.
도 5는 각각의 블록에 동일한 양의 버짓이 할당되는 것을 나타내는 것으로 보인다. 그러나, 전술한 바와 같이, 본 발명은 이에 한정되지 않으며, 상이한 버짓들이 블록들에 할당될 수 있다.
일 실시예에 따르면, 각각의 블록의 버짓 내에서 임계치(threshold)가 설정된다. 도 5의 예에 따르면, 블록 1에 대한 버짓은 임계치(T1)를 포함하며, 이는 비트로 측정될 때 버짓 제한치(B1)보다 작다. 임계치는 본질적으로 버짓 제한치에 대한 마진(margin)을 정의한다. 임계치는 인코딩 과정 동안 변할 수 있는 프로그램 가능한 값이다.
일 실시예에 따르면, 블록의 런-길이 인코딩 동안, 인코딩된 비트 수가 버짓 내 임계치("제1 임계치")에 도달하면, 그 블록의 나머지 인코딩 동안, 제2 임계치 값보다 "작은" 변환되고 양자화된 값들은 인코딩되지 않는다. 이러한 일 실시예에 따르면, 제2 임계치는 변환되고 양자화된 값들의 각각의 크기(magnitude)에 대응한다. 따라서, 예를 들어, 인코딩된 비트 수가 제1 임계치를 초과하면, 제2 임계치 에 의하여 특정된 것보다 작은 크기를 가지는 변환되고 양자화된 값은 인코딩되지 않을 것이다(예컨대, 그 값이 영(0)으로 설정됨). 대안적으로, 제2 임계치는 변환되고 양자화된 값을 인코딩하는데 필요한 비트 수에 대응할 수 있다. 그러한 경우, 예를 들어, 인코딩된 비트 수가 제1 임계치를 초과하면, 비트 내에 제2 임계치를 충족시키지 않는 길이를 가지는 변환되고 양자화된 값은 인코딩되지 않을 것이다.
인코딩되는 블록 내의 값들의 크기에 적용되는 제2 임계치 값은 프로그램 가능한 값이다. 제2 임계치의 값은 블록을 런-길이 인코딩하는 과정 동안 변경될 수 있다. 예를 들어, 제1 (버짓) 임계치에 도달하면, 인코딩된 비트 수가 버짓 한계에 접근함에 따라 제2 임계치의 값이 증가되어, 점진적으로 블록 내의 더 큰 변환되고 양자화된 값들이 인코딩되고, 인코딩되도록 남은 값들 중 가장 큰 값에 대한 버짓을 남길 수 있다. 대안적으로, 제1 임계치에 도달한 후, 버짓이 예상한 것만큼 빨리 소진되지 않으면 제2 임계치의 값이 감소될 수 있다. 또한, 제2 임계치 값은 한 블록에서 다음 블록으로 인코딩이 진행함에 따라 변할 수 있다. 따라서, 제2 임계치 값은 블록에 따라 다를 수 있다.
도 6a는 본 발명의 일 실시예에 따라 압축될 수 있는 이미지(601)를 도시하고 있다. 전술한 바와 같이, 이미지(601)의 일부 부분에 연관된 블록에 대하여 이미지(601)의 다른 부분에 연관된 블록에 할당된 버짓보다 더 큰 버짓이 할당되는 것이 바람직할 수 있다. 즉, 이미지의 다른 영역보다 더 중요한 것으로 간주되는 이미지의 하나 이상의 영역이 존재할 수 있으며, 상대적으로 더 중요한 영역에 연 관된 블록에 더 큰 버짓을 할당하는 것이 바람직할 수 있다.
일 실시예에서, 아마도 사용자에 의해, 위치(615)가 이미지(601) 내에서 특정된다. 위치(615)는 가장 중요한 것으로 간주되는 이미지(601)의 영역에 대응한다. 위치(615)는 이미지(601) 내의 어디든지 위치될 수 있다. 디폴트 위치 또한, 이를테면 이미지(601)의 중앙과 같이 특정될 수 있다.
일 실시예에서, 블록에 할당된 버짓(budget)은 이미지(601) 내의 그 블록의 위치의 함수이다. 그러한 일 실시예에서, 블록의 위치는 블록과 위치(615) 사이의 거리에 의해 정의된다. 따라서, 예를 들면, 이미지 부분(MCU)(610)에서 위치(615)까지의 거리 및 이미지 부분(MCU)(611)에서 위치(615)까지의 거리에 따라 각각 서로 다른 버짓이 이미지 부분(610) 내의 블록 및 이미지 부분(611) 내의 블록에 할당될 수 있다. 도 6a의 예에서, 이미지 부분(611)이 이미지 부분(610) 보다 위치(615)에 가깝기 때문에, 이미지 부분(611) 내의 블록에 상위 버짓이 할당될 수 있다.
이미지 부분(611)에서 위치(615)까지의 거리는, 예를 들면 다음과 같이 주어진다:
거리(distance) = sqrt[(x-xo)2 + (y-yo)2];
여기서 (xo, yo)는 위치(615)와 연관된 좌표이고 (x, y)는 이미지 부분(611)과 연관된 좌표이며, "sqrt"는 제곱근(square-root)을 의미한다. 그러면 (x, y)에서의 블록에 대한 버짓은 다음의 식을 이용하여 할당될 수 있다:
버짓(budget) = a - b * sqrt[(x-xo)2 + (y-yo)2];
여기서 "a" 및 "b"는 프로그램 가능한 상수이다. "a" 및 "b"의 값은 버짓으로 양의 값이 산출되도록 선택될 수 있다.
거리의 계산을 단순화하기 위해, 아래와 같은 형태의 공식이 대신 사용될 수 있다:
거리 = c * abs(x-xo) + d * abs(y-yo);
여기서 "abs"는 절대값을 의미하며, "c" 및 "d"는 프로그램 가능한 상수이다. 그러면 (x, y)에서의 블록에 대한 버짓은 다음의 식을 이용하여 할당될 수 있다:
버짓 = e - c * abs(x-xo) - d * abs(y-yo);
여기서 "e"도 역시 프로그램 가능한 상수이고, "c," "d" 및 "e"는 버짓으로 양의 값이 산출되도록 선택될 수 있다. "c" 및 "d"의 값은 이미지(601)의 형태에 따라 선택될 수 있다. 예를 들면, "c" 및 "d"는 정사각형 모양의 이미지에 대해서는 동일할 수 있으나 직사각형 모양의 이미지에 대해서는 상이할 수 있다.
상이한 값의 "a," "b," "c," "d," 및 "e"가 상이한 이미지 구성 요소에 적용될 수 있다. 즉, 예를 들면, Y-블록에 대한 "a," "b," "c," "d," 및 "e"의 값은 U-블록 또는 V-블록에 대한 "a," "b," "c," "d," 및 "e" 값과 다를 수 있다. 거리를 산출하는 다른 방법이 사용될 수 있다. 또한, 블록에 할당된 버짓의 크기는 블록과 연관된 이미지 부분과 위치(615) 사이의 거리와는 다른 기준을 이용하여 결정될 수 있다.
도 6b는 본 발명의 일 실시예에 따른 레이트 제어(rate control)를 이루기 위해 사용될 수 있는 버짓의 일례의 그래프이다. 도 6b에 도시된 버짓은 누적적(cumulative) 버짓의 예이다(여기서 버짓은 하나의 블록에서 다음 블록까지 축적되는 누적값이다). 도 6a의 예에서, 이미지 부분 내의 블록에 할당된 버짓은 도 6a의 블록과 연관된 이미지 부분과 위치(615) 사이의 거리의 함수이다.
도 6b의 예시 버짓은 도 6a의 행(620)에 대응하는 것이다. 행(620)은 이미지 부분(MCU)(1 내지 11)을 포함하지만, 이미지의 행 내에 임의의 수의 이미지 부분이 있을 수 있다. 버짓은 누적 버짓이기 때문에, 행(620)의 이미지 부분(1)에 대한 블록과 연관된 버짓 제한치는, 보통, 이미지 부분(1)에 대한 블록에 할당된 버짓의 양에, 행(620)에 앞서 인코딩된 행의 끝에서의 누적적 버짓을 더한 것과 동일하다(이미지(601)가 행 단위로 인코딩되었다고 가정한다). 행(620) 내의 각각의 연속적인 이미지 부분에 대한 버짓은 각각의 양만큼씩 증가되며, 상기 양은 이미지 부분과 위치(615) 사이의 거리의 함수이다. 따라서, 도 6b에 도시된 바와 같이, 누적적 버짓은 위치(615)에 접근함에 따라 더 가파른 경사도를 가지며, 위치(615)로의 거리가 증가하면 경사도는 완만해진다.
도 7은 본 발명의 일 실시예에 따른, 컴퓨터로 구현된(computer-implemented) 데이터 압축 방법의 흐름도(700)이다. 도 8은 본 발명의 다른 실시예에 따른, 컴퓨터로 구현된 데이터 압축 방법의 흐름도(800)이다. 특정 단계들이 흐름도(700 및 800)에 개시되어 있으나, 그러한 단계들은 본보기일 뿐이다. 즉, 본 발명은 다양한 다른 단계들 또는 흐름도(700 및 800)에 기술된 단계의 변형을 수행하는데 매우 적합하다. 흐름도(700 및 800)의 단계들은 기재된 것과 다른 순서로 수행될 수 있으며, 또한 흐름도(700 및 800)의 단계들이 도시된 시퀀스에 있어서 반드시 수행되어야 하는 것은 아니라는 점을 인식할 것이다.
도 7을 참조하면, 흐름도(700)는 단계(702)에서 시작된다. 단계(702)에서, 변환되고 양자화된(quantized) 값의 블록(예컨대, 도 4의 블록(432))이 액세스된다.
도 7의 단계(703)에서, 블록의 버짓이 계산된다. 상기 기술된 바와 같이, 버짓은 블록에 할당된 버짓의 양을 포함하며, 또한 이전에 인코딩된 다른 블록의 버짓으로부터 남은 모든 부분을 포함할 수 있다.
일 실시예에서, 블록의 값은 런-길이 인코딩된다. 단계(704)에서, 블록의 값이 액세스되고 상기 값과 연관된 비트의 수가 카운트된다.
단계(706)에서, 단계(704)로부터의 카운트 수는 블록에 할당된 버짓이 초과되었는지 아닌지를 결정하는데 이용된다. 남은 버짓이 없는 경우, 또는 남은 버짓이 단계(704)에서 액세스된 값을 인코딩하기에 충분하지 않은 경우, 흐름도(700)는 단계(707)로 진행한다. 그렇지 않은 경우, 흐름도(700)는 단계(708)로 진행한다.
단계(707)에서, 본 실시예에 있어서, 블록(예로, 도 4의 블록(432))의 남은 값은 인코딩되지 않는다. 사실상, 남은 값은 인코딩된 데이터에 엔드-오브-블록(end-of-block) 코드를 삽입함으로써 제거된다. 흐름도(700)는 단계(716)로 진행한다.
도 7의 단계(708)에서, 일 실시예에서, 버짓(budget) 내의 제1 임계치 값(threshold value)에 도달하거나 초과되었는지에 대해 판단한다. 상기 설명된 바와 같이, 제1 문턱은 버짓 제한치에 대한 마진(margin)을 설정한다. 만약 제1 임계치에 도달하거나 초과되지 않는다면, 흐름도(700)는 단계(712)로 진행한다. 그렇지 않으면, 흐름도(700)는 단계(710)로 진행한다.
단계(710)에서, 제2 임계치가 충족되는지에 대해 판단한다. 상기 설명된 바와 같이, 제2 임계치는 단계(704)에서 액세스된 값과 관련된 크기(예를 들어, 비트의 크기 또는 개수)에 대응한다. 만약 단계(704)에서 액세스된 값이 제2 문턱을 충족하지 않으면, 흐름도(700)는 단계(714)로 진행한다. 그렇지 않으면, 흐름도(700)는 단계(712)로 진행한다.
단계(712)에서, 단계(704)에서 액세스된 값("가까운 값(value at hand)")은 인코딩되고 인코딩된 비트의 개수는 카운트된다. 카운트는 가까운 값과 관련된 비트의 개수뿐만 아니라 가까운 값에 앞서 인코딩된 블록 내의 임의의 다른 값과 관련된 비트의 개수를 포함한다. 블록 내에 다음 값을 인코딩하기 위해 충분한 버짓이 남아있는지를 판단하기 위해, 카운트가 상기 블록(706)에서 사용된다.
단계(714)에서, 가까운 값이 블록 내의 마지막 값인지에 대해 판단한다. 마지막 값이 아니면, 흐름도(700)는 단계(704)로 돌아가며, 인코딩 프로세스는 블록 내의 새로운 값에 대해 시작된다. 그렇지 않으면, 흐름도(700)는 단계(716)로 진행한다.
단계(716)에서, 블록이 인코딩될 마지막 블록인지에 대해 판단한다. 마지막 블록이면, 흐름도(700)는 종료된다. 그렇지 않으면, 흐름도(700)는 단계(718)로 진행한다.
단계(718)에서, 만약 블록이 인코딩된 후 남아있는 버짓이 있다면, 버짓의 나머지 부분은, 변환되고 양자화된 데이터 값의 또 다른 블록, 아마도 인코딩될 다음 블록에 할당된 버짓에 더해질 수 있다. 다른 대안으로, 버짓의 나머지 부분은 예비(reserve)에 위치하고 추후에 필요할 때 사용될 수 있다. 가까운 블록의 인코딩은 따라서 종료되고, 흐름도(700)는 다음 블록의 인코딩을 위해 단계(702)로 돌아간다.
이제 도 8을 참조하면, 단계(802)에서, 이미 데이터의 제1 블록(예를 들어, 도 4의 블록(432))과 관련된 복수의 변환되고 양자화된 제1 값들이 액세스된다. 제1 블록은 이미지 내에서 제1 위치와 관련된다.
도 8의 단계(804)에서, 제1 블록의 런-길이(run-length) 인코딩 동안 인코딩되는 비트의 개수가 카운트된다.
단계(806)에서 제1 블록의 인코딩은, 제1 블록에 적용되는 버짓 제한치에 도달될 때까지 계속된다. 즉, 만약 카운트가 제1 블록에 적용되는 버짓 제한치에 도달하면, 제1 블록의 런-길이 인코딩은 종결되며, 만약 버짓 제한치에 도달하지 않으면, 제1 블록의 데이터는 전체로서 인코딩될 수 있다.
단계(810)에서, 제1 블록의 인코딩이 종료되면, 이미지 데이터의 제2 블록과 관련된 복수의 변환되고 양자화된 제2 값들이 액세스된다. 제2 블록은 이미지 내에서 제2 위치와 관련된다.
단계(812)에서, 단계(806)에서 언급된 버짓 제한치가 증가하여 제2 블록의 인코딩을 고려한(account for) 새로운 제한치를 설정한다. 새로운 제한치는 제1 블록의 인코딩 동안 소비되지 않았던 버짓의 모든 부분을 포함할 것이다.
단계(814)에서, 단계(804)에서 시작된 카운트는 제2 블록의 런-길이 인코딩 동안 계속된다. 카운트가 새로운 제한에 도달하면 제2 블록의 런-길이 인코딩은 종료되고, 그렇지 않으면 제2 블록 데이터가 전체로 인코딩될 때까지 계속된다. 흐름도(800)는 인코딩될 각 블록 데이터에 대해 상기와 같은 방법으로 계속된다.
흐름도(800)에 기술된 방법은 상기 기술된 본 발명의 다른 특징을 포함하도록 확장될 수 있다. 예를 들어, 블록 내의 변환되고 양자화된 값이 인코딩되고 인코딩된 비트의 개수가 카운트 됨에 따라, 제1 임계치(블록에 적용되는 버짓 제한치 내) 및 제2 임계치(인코딩된 값의 사이즈에 대응)은 상기 기술된 바와 같이 적용될 수 있다.
요약하건대, 본 발명의 실시예는, 불필요한 반복 없이, 및 이미지 충실도(fidelity)를 현저하게 감소시키지 않은 채, 목표 파일 또는 비트스트림(bitstream) 사이즈로 이미지 데이터를 효과적으로 압축하는 방법 및 시스템을 제공한다. 일 실시예에서, 런-길이 인코딩의 프로세스에 추후 인코딩되는 블록 내의 변환되고 양자화된 값, 및 이미지 충실도에 덜 영향을 주는 값에 일반적으로 대응하는 값이 폐기되어(인코딩 되지 않음), 이미지 충실도를 현저하게 줄이지 않고 압축데이터의 양을 감소시킨다. 일 실시예에서, "더 작은" 변환되고 양자화된 값(예를 들어, 상기 언급된 제2 임계치를 충족시키지 않는 값)으로, 일반적으로 이미지 충실도에 현저하게 영향을 주지 않는 값은 폐기되어(인코딩 되지 않음), 이미지 충실도를 유지하면서 압축 데이터의 양을 감소시킨다.
본 발명에 따른 실시예는 하드웨어 또는 소프트웨어 또는 이들의 조합에 구현될 수 있다. 예를 들어, 이미지의 인코딩 동안 사용되는 특정 타입의 정보가 저장될 수 있고, 필요한 반복 횟수를 줄여 계속적인 인코딩의 효율을 향상시키기 위해, 이미지의 계속적인 인코딩 동안 계속적으로 사용되는 정보가 저장될 수 있다.
JPEG 인코딩에 대해 설명하였지만, 본 발명은 여기에 제한되지 않는다. 예를 들어, 본 발명에 따른 실시예는 MPEG(Motion Pictures Expert Group) 인코딩에 역시 적용될 수 있다.
크게 요약하면, 본 명세서는 이미지를 압축하는 방법 및 시스템을 공지한다. 이미지 데이터 블록과 관련된 복수의 변환되고 양자화된 값이 액세스된다. 블록은 이미지 내의 위치에 대응한다. 블록의 런-길이 인코딩 동안 인코딩된 비트 개수의 카운트가 이루어진다. 카운트가 제한치에 도달하면, 블록의 런-길이 인코딩은 종료된다.
본 발명의 실시예가 기술되어 있다. 본 발명이 특정 실시예로 기술되어 있지만, 본 발명은 이러한 실시예에 의해 제한되는 것으로 해석되어서는 안되며, 아래의 청구항에 따라 해석되어야 한다.

Claims (28)

  1. 이미지를 압축하는 방법으로서, 상기 방법은,
    이미지 데이터의 제1 블록과 연관되며, 변형되고 양자화된 복수의 제1 값들을 액세스하는 단계-상기 제1 블록은 상기 이미지 내의 제1 위치에 대응하며, 상기 값들 각각은 다수의 비트로서 표시됨-; 및
    상기 제1 블록의 런-길이 인코딩 중에 인코딩된 비트 수의 카운트를 유지하는 단계-상기 제1 블록의 상기 런-길이 인코딩은 상기 카운트가 제한치에 도달하면 종료됨-
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 제한치는 상기 제1 위치에 따라 결정되는 값을 갖는 방법.
  3. 제1항에 있어서,
    상기 이미지 내의 제2 위치에 대응하는 데이터의 제2 블록을 인코딩하기 위하여 상기 제한치를 증가시키는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    이미지 데이터의 제2 블록 내에 연관되며, 변형되고 양자화된 복수의 제2 값들을 액세스하는 단계-상기 제2 블록은 상기 이미지 내의 제2 위치에 대응함-;
    상기 제2 블록의 인코딩을 고려한(account for) 새로운 제한치를 설정하도록 상기 제한치를 일정량 증가시키는 단계; 및
    상기 제2 블록의 런-길이 인코딩 중에 상기 카운트를 증가시키는 단계-상기 제2 블록의 상기 런-길이 인코딩은 상기 카운트가 상기 새로운 제한치에 도달하면 종료됨-
    를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 일정량은 상기 제2 위치에 따라 결정되는 방법.
  6. 제1항에 있어서,
    상기 카운트에 대한 제1 임계치를 확인하는 단계-상기 제1 임계치는 상기 제한치에 대한 마진(margin)을 설정하며, 상기 제1 임계치에 도달하면 제2 임계치를 충족시키지 못한 변형되고 양자화된 값들이 인코딩되지 않음-
    를 더 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서, 상기 제2 임계치는 상기 변형되고 양자화된 값들의 사이즈에 적용되며, 상기 제2 임계치를 충족시키지 않는 변형되고 양자화된 값들은 영(0)으로 설정되는 방법.
  8. 제6항에 있어서, 상기 제2 임계치는 상기 런-길이 인코딩 중에 변경되는 방법.
  9. 제1항에 있어서, 상기 제1 블록은 상기 이미지 내의 제1 위치에 대응하며, 상기 제1 블록은 상기 제1 위치에 대응하는 이미지 데이터의 복수의 블록들 중 한 블록이고, 상기 복수의 블록들 내의 각각의 블록의 런-길이 인코딩 중에 인코딩된 비트의 수는 각각의 제한치에 좌우되는 방법.
  10. 제1항에 있어서,
    압축되지 않은 이미지 데이터의 블록을 수신하는 단계;
    변형된 데이터를 생성하기 위하여 이산 코사인 변형을 사용하여 상기 압축되지 않은 이미지 데이터를 변형시키는 단계; 및
    상기 변형된 데이터를 양자화하여 상기 변형되고 양자화된 데이터를 생성하는 단계
    를 더 포함하는 방법.
  11. 변형되고 양자화된 데이터의 복수의 제1 블록들을 포함하는 이미지 데이터를 압축하는 방법으로서, 상기 방법은,
    제1 버짓(budget)을 상기 복수의 제1 블록들 내의 제1 블록에 할당하는 단계 -상기 제1 버짓은 상기 제1 블록을 인코딩할 수 있는 비트들의 수에 대한 제한치를 포함함-; 및
    상기 제1 블록을 인코딩하는 단계-상기 제1 블록에 할당된 제1 버짓을 초과하지 않으면 상기 제1 블록의 상기 인코딩이 계속되며, 초과하면 상기 제1 블록의 상기 인코딩이 중단됨-
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 블록의 상기 인코딩 후에 남아있는 상기 제1 버짓의 일부를 상기 복수의 제1 블록들 내의 제2 블록에 할당되는 제2 버짓에 추가하는 단계
    를 더 포함하는 방법.
  13. 제11항에 있어서, 상기 제1 블록은 복수의 변형되고 양자화된 값들을 포함하며, 상기 변형되고 양자화된 값들 각각은 각각의 비트들의 수에 의해 표시되고, 상기 인코딩은,
    변형되고 양자화된 값을 선택하는 단계; 및
    상기 변형되고 양자화된 값에 연관되는 비트들의 수만큼 상기 제1 버짓을 감소시키는 단계
    를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 제1 버짓 내의 제1 임계치를 확인하는 단계-상기 제1 임계치에 도달하지 않으면, 상기 런-길이 인코딩 중에, 제2 임계치를 충족시키지 못하는 변형되고 양자화된 값들이 선택되지 않음-
    를 더 포함하는 방법.
  15. 제14항에 있어서, 상기 제2 임계치는 상기 변형되고 양자화된 값들의 사이즈에 대응하며, 상기 제2 임계치를 충족시키지 않는 변형되고 양자화된 값들은 영으로 설정되는 방법.
  16. 제14항에 있어서, 상기 변형되고 양자화된 값들의 크기는 상기 제2 임계치에 대비하여 측정되며, 상기 제2 임계치를 충족시키지 않는 변형되고 양자화된 값들은 영으로 설정되는 방법.
  17. 제14항에 있어서,
    상기 인코딩 중에 상기 제2 임계치를 변경하는 단계
    를 더 포함하는 방법.
  18. 제11항에 있어서, 상기 제1 블록은 이미지 내의 위치에 대응하며, 상기 제1 버짓은 상기 위치에 대응하는 값을 갖는 방법.
  19. 제11항에 있어서,
    상기 제1 블록은 이미지 내의 위치에 대응하고,
    상기 제1 블록은 상기 위치에 대응하는 복수의 제2 블록들 중 한 블록이며,
    상기 복수의 제2 블록들 내의 각각의 블록은 인코딩 중에 각각의 버짓(budget)에 좌우되는 방법.
  20. 메모리; 및
    이미지를 압축하는 방법을 실행하기 위한 프로세서를 포함하며,
    상기 방법은,
    이미지 데이터의 제1 블록과 연관된 복수의 변형되고 양자화된 제1 값들을 액세스하는 단계 - 상기 제1 블록은 상기 이미지 내의 제1 위치에 대응하며, 상기 값들 각각은 다수의 비트로서 나타내어짐 -; 및
    상기 제1 블록의 런 길이 인코딩 동안 인코딩된 비트 수의 카운트(count)를 유지하는 단계 - 상기 제1 블록의 상기 런 길이 인코딩은 상기 카운트가 제한치에 도달하면 종료됨 -
    를 포함하는 시스템.
  21. 제20항에 있어서,
    상기 제한치는 상기 제1 위치에 따라 결정되는 값을 갖는 시스템.
  22. 제20항에 있어서,
    상기 이미지 내의 제2 위치에 대응하는 데이터의 제2 블록을 인코딩하기 위해 상기 제한치가 증가되는 시스템.
  23. 제20항에 있어서,
    상기 방법은,
    이미지 데이터의 제2 블록과 연관된 복수의 변형되고 양자화된 제2 값들을 액세스하는 단계 - 상기 제2 블록은 상기 이미지 내의 제2 위치에 대응함 -;
    상기 제2 블록의 인코딩을 고려한 새로운 제한치를 설정하도록 상기 제한치를 일정량 증가시키는 단계; 및
    상기 제2 블록의 런 길이 인코딩 동안 상기 카운트를 증가시키는 단계 - 상기 제2 블록의 상기 런 길이 인코딩은 상기 카운트가 상기 새로운 제한치에 도달하면 종료됨 -
    를 더 포함하는 시스템.
  24. 제23항에 있어서,
    상기 일정량은 상기 제2 위치에 따라 결정되는 시스템.
  25. 제20항에 있어서,
    상기 방법은 상기 카운트를 위한 제1 임계치를 확인하는 단계를 더 포함하며,
    상기 제1 임계치는 상기 제한치에 마진(margin)을 설정하고, 상기 제1 임계치에 도달하면 제2 임계치를 충족시키는 변형되고 양자화된 값들은 인코딩되지 않는 시스템.
  26. 제25항에 있어서,
    상기 제2 임계치는 상기 변형되고 양자화된 값들의 사이즈에 적용되며, 상기 제2 임계치를 충족시키지 않는 변형되고 양자화된 값들은 영(0)으로 설정되는 시스템.
  27. 제25항에 있어서,
    상기 제2 임계치는 상기 런-길이 인코딩 동안 변경되는 시스템.
  28. 제20항에 있어서,
    상기 제1 블록은 상기 이미지 내의 제1 위치에 대응하고, 상기 제1 블록은 상기 제1 위치에 해당하는 이미지 데이터의 복수의 블록들 중 한 블록이며, 상기 복수의 블록들 중 각각의 블록의 런-길이 인코딩 동안 인코딩된 비트의 수는 각각의 제한치에 좌우되는 시스템.
KR1020077006863A 2004-10-08 2005-10-05 이미지 데이터 압축 방법 및 시스템 KR100904797B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/962,311 2004-10-08
US10/962,311 US7747095B2 (en) 2004-10-08 2004-10-08 Methods and systems for rate control in image compression

Publications (2)

Publication Number Publication Date
KR20070046952A true KR20070046952A (ko) 2007-05-03
KR100904797B1 KR100904797B1 (ko) 2009-06-25

Family

ID=36145396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077006863A KR100904797B1 (ko) 2004-10-08 2005-10-05 이미지 데이터 압축 방법 및 시스템

Country Status (8)

Country Link
US (1) US7747095B2 (ko)
EP (1) EP1797520B1 (ko)
JP (1) JP4440308B2 (ko)
KR (1) KR100904797B1 (ko)
CN (1) CN101036151B (ko)
AT (1) ATE519173T1 (ko)
TW (1) TWI318827B (ko)
WO (1) WO2006041994A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007318597A (ja) * 2006-05-29 2007-12-06 Opt Kk 広角レンズによる撮像データの圧縮方法、圧縮装置、広角カメラ装置およびモニタシステム
JP4521835B2 (ja) * 2008-02-12 2010-08-11 株式会社ディジタルメディアプロフェッショナル 画像処理装置
TWI405467B (zh) * 2009-11-25 2013-08-11 Novatek Microelectronics Corp 影像壓縮的位元速率控制電路與方法
US8548057B2 (en) 2011-01-25 2013-10-01 Microsoft Corporation Video coding redundancy reduction
US9066117B2 (en) * 2012-02-08 2015-06-23 Vixs Systems, Inc Container agnostic encryption device and methods for use therewith
US9749645B2 (en) * 2012-06-22 2017-08-29 Microsoft Technology Licensing, Llc Coded-block-flag coding and derivation
CN103036575B (zh) * 2012-12-14 2015-09-30 天津瑞能电气有限公司 一种变频器内部数据的压缩方法
EP2965288A4 (en) * 2013-03-08 2016-07-27 Intel Corp IMAGE ENCODING TECHNIQUES BASED ON AREA OF INTEREST
US9031336B2 (en) * 2013-04-10 2015-05-12 Southwest Research Institute Systems and methods for hybrid compression of spectral image data
CN105100810B (zh) * 2014-05-16 2018-02-13 中国科学院声学研究所 一种成像声纳实时处理系统中的图像压缩解压方法及系统
WO2023165599A1 (en) * 2022-03-03 2023-09-07 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for visual data processing

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084791A (en) 1988-05-10 1992-01-28 Quantum Corporation Head position control system for fixed drive including position encoder, temperature sensor and embedded fine servo information
JPH07505268A (ja) 1992-03-17 1995-06-08 ゾーラン コーポレイション 改良されたビットレート制御とブロック割り付けを有する画像圧縮コーダ
DE4334353A1 (de) 1993-10-08 1995-04-13 Merck Patent Gmbh Verfahren und Träger für die Gelpermeationschromatographie
US5576765A (en) 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5761466A (en) 1994-05-09 1998-06-02 Lsi Logic Corporation Soft programmable single-cycle/pipelined micro-programmed control system
US5598222A (en) 1995-04-18 1997-01-28 Hatachi American, Ltd. Method and apparatus for decoding multiple video bitstreams using a common memory
EP0758513B1 (en) 1995-02-24 1999-08-25 Koninklijke Philips Electronics N.V. Device and method for coding video pictures
GB2306831B (en) * 1995-10-30 2000-05-24 Sony Uk Ltd Video data compression
JPH10243399A (ja) 1997-02-25 1998-09-11 Sharp Corp 符号量制御装置及び該符号量制御装置を含む動画像符号化装置
JPH10336649A (ja) 1997-05-30 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> 動画像符号化方法および装置
FI107496B (fi) 1997-07-18 2001-08-15 Nokia Mobile Phones Ltd Kuvan kompressointi
US6049330A (en) 1997-08-28 2000-04-11 Oak Technology, Inc. Method and apparatus for optimizing storage of compressed images in memory
US6259479B1 (en) 1997-09-17 2001-07-10 Sony Corporation Letterbox filter apparatus and method
US5990812A (en) 1997-10-27 1999-11-23 Philips Electronics North America Corporation Universally programmable variable length decoder
US6185253B1 (en) 1997-10-31 2001-02-06 Lucent Technology, Inc. Perceptual compression and robust bit-rate control system
WO1999038333A1 (en) 1998-01-26 1999-07-29 Sgs-Thomson Microelectronics Asia Pacific (Pte) Ltd. One-pass variable bit rate moving pictures encoding
EP1062625A4 (en) * 1998-03-20 2005-08-31 Mitsubishi Electric Corp IMAGE CODING WITH LOSS / WITHOUT LOSS OF INTEREST REGIONS
US6956899B2 (en) 1998-03-23 2005-10-18 International Business Machines Corporation Precise bit control apparatus with look-ahead for MPEG encoding
KR20010083063A (ko) 1998-06-25 2001-08-31 벤자민 에프 커틀러 가변 길이 코딩 및 디코딩 처리 회로, 및 그 방법
US6212645B1 (en) 1998-10-09 2001-04-03 Mediaq Inc. Programmable and flexible power management unit
US6570922B1 (en) 1998-11-24 2003-05-27 General Instrument Corporation Rate control for an MPEG transcoder without a priori knowledge of picture type
JP4041245B2 (ja) 1999-05-14 2008-01-30 京セラ株式会社 画像符号化装置
JP3703728B2 (ja) * 2000-03-17 2005-10-05 松下電器産業株式会社 映像信号符号化装置、映像信号符号化方法
KR100341063B1 (ko) * 2000-06-28 2002-06-20 송문섭 실시간 영상 통신을 위한 율제어 장치 및 그 방법
US7224837B2 (en) 2000-10-11 2007-05-29 Screenpeaks Ltd. Digital video broadcasting
US7209643B2 (en) 2001-02-02 2007-04-24 Matsushita Electric Industrial Co., Ltd. Recording apparatus and method, playback apparatus and method, recording medium, program, and computer-readable recording medium
US6760035B2 (en) 2001-11-19 2004-07-06 Nvidia Corporation Back-end image transformation
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US6653955B1 (en) 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
US6961376B2 (en) 2002-06-25 2005-11-01 General Instrument Corporation Methods and apparatus for rate control during dual pass encoding
CN1295652C (zh) * 2002-08-20 2007-01-17 宏正自动科技股份有限公司 图像资料编码方法
US7822955B2 (en) 2003-01-21 2010-10-26 Arm Limited Data processing apparatus and method for utilizing endianess independent data values
US7095784B2 (en) 2003-04-14 2006-08-22 Silicon Intergrated Systems Corp. Method and apparatus for moving picture compression rate control using bit allocation with initial quantization step size estimation at picture level
US7254176B2 (en) 2003-05-23 2007-08-07 Silicon Integrated Systems Corp. Apparatus for variable bit rate control in video compression and target bit allocator thereof
US7194031B2 (en) 2003-07-09 2007-03-20 Silicon Integrated Systems Corp. Rate control method with region of interesting support
CN1296010C (zh) * 2003-07-28 2007-01-24 东软飞利浦医疗设备系统有限责任公司 针对原始ct图像数据的压缩及解压缩方法
EP1675399A3 (en) 2004-12-23 2009-04-29 Bitband Technologies Ltd. Fast channel switching for digital TV

Also Published As

Publication number Publication date
CN101036151A (zh) 2007-09-12
US20060078211A1 (en) 2006-04-13
ATE519173T1 (de) 2011-08-15
JP2008516532A (ja) 2008-05-15
WO2006041994A8 (en) 2006-06-22
TW200629748A (en) 2006-08-16
US7747095B2 (en) 2010-06-29
TWI318827B (en) 2009-12-21
CN101036151B (zh) 2010-05-26
JP4440308B2 (ja) 2010-03-24
WO2006041994A1 (en) 2006-04-20
EP1797520A2 (en) 2007-06-20
EP1797520B1 (en) 2011-08-03
KR100904797B1 (ko) 2009-06-25
EP1797520A4 (en) 2009-05-27

Similar Documents

Publication Publication Date Title
KR100904797B1 (ko) 이미지 데이터 압축 방법 및 시스템
JP4927888B2 (ja) ゴロム・ライスを使用する無損失フレーム内符号化
US9258568B2 (en) Quantization method and apparatus in encoding/decoding
CN107864379B (zh) 一种应用于视频编解码的压缩方法
US20100034478A1 (en) Image encoding apparatus and method of controlling the same
JP2005517316A (ja) 構成可能なパターン最適化器
US6614942B1 (en) Constant bitrate algorithm for block based image compression
JP2891773B2 (ja) ディジタル画像シーケンスを処理する方法および装置
JPH02100487A (ja) 画像データ圧縮装置
US20090016624A1 (en) Method of graphics and image data compression
US8942490B2 (en) Method of high performance image compression
WO2000013135A2 (en) Method and apparatus for image compression
WO2024022359A1 (zh) 一种图像编解码方法及装置
US20060278725A1 (en) Image encoding and decoding method and apparatus, and computer-readable recording medium storing program for executing the method
TWI788805B (zh) 影像壓縮方法與電路系統
JP2001145106A (ja) 画像圧縮装置及び方法
EP1629675B1 (en) Fixed bit rate, intraframe compression and decompression of video
CN115150624A (zh) 影像压缩方法与电路系统
EP1892965A2 (en) Fixed bit rate, intraframe compression and decompression of video
JP2001309381A (ja) 画像処理装置及びその方法と記憶媒体
JP2001231009A (ja) 画像データ格納装置および方法
JP4041245B2 (ja) 画像符号化装置
JP7465073B2 (ja) 画像符号化装置及びその制御方法及びプログラム
US7787537B2 (en) Method and apparatus for low-memory high-performance discrete cosine transform coefficient prediction
JP2005086353A (ja) 画像処理装置及びその制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
J501 Disposition of invalidation of trial
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130522

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140521

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150519

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180601

Year of fee payment: 10