KR20200096862A - 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(ebc) 회로 - Google Patents

잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(ebc) 회로 Download PDF

Info

Publication number
KR20200096862A
KR20200096862A KR1020190131210A KR20190131210A KR20200096862A KR 20200096862 A KR20200096862 A KR 20200096862A KR 1020190131210 A KR1020190131210 A KR 1020190131210A KR 20190131210 A KR20190131210 A KR 20190131210A KR 20200096862 A KR20200096862 A KR 20200096862A
Authority
KR
South Korea
Prior art keywords
quantized
transformed residual
block
entropy coding
residual levels
Prior art date
Application number
KR1020190131210A
Other languages
English (en)
Other versions
KR102267215B1 (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 KR20200096862A publication Critical patent/KR20200096862A/ko
Application granted granted Critical
Publication of KR102267215B1 publication Critical patent/KR102267215B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic 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/124Quantisation
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/186Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

임베디드 코덱(EBC; Embedded codec) 회로는, 복수의 이미지 블록의 입력 이미지에 관한 복수의 블록의 양자화되고-변환된 잔차 레벨들을 저장하는 메모리, 및 복수의 블록 중의 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하는 인코더 회로를 포함한다. 인코더 회로는, 제1 블록에서 DC-AC(Direct Current-to-Alternating Current) 스캔 순서로, 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식을 적용하고, 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합을 적용한다. 인코딩된 이미지 블록의 비트스트림은, 인코더 회로에 의해, 제1 엔트로피 코딩 방식, 및 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 의해 생성된다.

Description

잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(EBC) 회로{EMBEDDED CODEC (EBC) CIRCUITRY FOR POSITION DEPENDENT ENTROPY CODING OF RESIDUAL LEVEL DATA}
관련 출원에 대한 상호-참조/참조에 의한 포함
없음
분야
본 개시내용의 다양한 실시예는 임베디드 코덱(EBC; embedded codec) 회로에서의 이미지 및 비디오 압축과 압축해제 기술에 관한 것이다. 더 구체적으로, 본 개시내용의 다양한 실시예는 잔차 레벨 데이터(residual level data)의 위치 의존적 엔트로피 코딩(position dependent entropy coding)을 위한 EBC 회로에 관한 것이다.
최근 이미지 압축을 위한 촬영 기술의 발전으로 인해, 시각적 품질의 현저한 저하없이 및/또는 메모리 이용률에 영향을 미치지 않고 상이한 해상도들(예를 들어, Full High Definition(HD) 4K 해상도 및 8K 해상도)을 갖는 이미지들을 저장할 수 있는 이미지 캡처 및 디스플레이 디바이스에서의 온칩 코덱에 대한 수요가 증가하게 되었다. 통상적으로, 엔트로피 코딩 단계에서, 이미지 블록에 대한 잔차 레벨들 중 일부를 인코딩하는데 이용되는 비트 수는, 이미지 블록에 대한 모든 유형의 잔차 레벨들에 대한 종래의 균일한 엔트로피 코딩 방식의 이용에 의해 야기될 수 있는 잉여 비트를 포함할 수 있다. 엔트로피 코딩 단계에서의 비트 수에서의 잉여는, 이미지 블록에 대한 정보의 측면에서 더 많은 밀집성을 갖는 영역을 나타낼 수 있는 제1 블록에서의 잔차 레벨들의 위치에 관계없이 균일한 엔트로피 코딩 방식이 적용될 때 더 변한다.
본 출원의 나머지 부분에서 도면을 참조하여 개시되는 바와 같이, 본 개시내용의 일부 양태들과의 설명된 시스템의 비교를 통해, 종래의 및 전통적인 접근법의 추가적인 제한 및 단점들이 본 기술분야의 통상의 기술자에게 명백해질 것이다.
청구항들에서 더욱 완전하게 개시되는 바와 같이, 실질적으로, 도면들 중 적어도 하나에 도시되거나 및/또는 이와 관련하여 설명된 바와 같이, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(EBC) 회로 및 방법이 제공된다.
본 개시내용의 이들 및 다른 피쳐들 및 이점들은, 전체적으로 유사한 참조 번호는 유사한 부분을 나타내는 첨부된 도면들과 함께, 본 개시내용의 이하의 상세한 설명의 검토로부터 이해될 수 있을 것이다.
도 1은, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(EBC) 회로 및 기타의 회로들을 갖는 예시적인 미디어 디바이스를 도시하는 블록도이다.
도 2는, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 다양한 주변 컴포넌트들을 갖는 임베디드 코덱(EBC) 회로를 도시하는 블록도이다.
도 3a 및 도 3b는, 본 개시내용의 한 실시예에 따른, 입력 이미지 블록의 양자화되고-변환된 잔차 레벨들의 블록에 대한 제1 히스토그램 분포 및 제2 히스토그램 분포를 집합적으로 도시한다.
도 4a는, 본 개시내용의 한 실시예에 따른, 도 2의 EBC 회로에 의한 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 예시적인 동작들을 도시하는 흐름도이다.
도 4b는, 본 개시내용의 한 실시예에 따른, 도 2의 EBC 회로에 의한 2차원(2D) 이미지 블록에 관한 순차적 인코딩 방식의 적용에 의한 상이한 블록 출력들을 도시하는 도면이다.
도 5a 및 도 5b는, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 예시적인 방법을 도시한 흐름도를 집합적으로 도시한다.
본 개시내용의 다양한 실시예들은 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 방법 및 임베디드 코덱(EBC) 회로에서 발견될 수 있다. EBC 회로는, 이미지 블록에 관한 순차적 인코딩 방식의 적용에 의해 인코딩된 이미지 블록의 비트스트림의 생성을 처리할 수 있는 메모리 및 인코더 회로를 포함할 수 있다. 개시된 EBC 회로는, 양자화되고-변환된 잔차 레벨들의 2개의 상이한 세트로의 분류에 기초하여 양자화되고-변환된 잔차 레벨들을 블록 단위로 인코딩하도록 구성될 수 있다. 분류에 의해, 상이한 세트들의 양자화되고-변환된 잔차 레벨들은, 비트스트림에 대한 비트레이트에서의 변동을 역시 감안할 수 있는, 상이한 엔트로피 코딩 방식들에 의해 적절히 인코딩될 수 있다. 제1 블록에서의 양자화되고-변환된 잔차 레벨의 위치에 기초한 적절한 엔트로피 코딩 방식의 적용은, 샘플 당 요구되는 비트 수 및 인코딩된 이미지 블록의 비트스트림에 대한 비트 레이트 측면에서 효율적인, 코드의 생성을 야기할 수 있다. 서브-블록 레벨에서의 위치-의존적 엔트로피 코딩 방식의 적용은, 이미지 블록을 인코딩하는데 통상적으로 요구되는 비트 수를 더욱 감소시킬 수 있다.
예를 들어, 제1 세트의 양자화되고-변환된 잔차 레벨들은, Huffman 테이블 세트로부터 한 Huffman 테이블을 선택할 수 있는 Huffman 엔트로피 코딩 방식의 적용에 의해 인코딩될 수 있다. Huffman 테이블의 선택은, 블록에서의 양자화되고-변환된 잔차 레벨의 위치에 의존할 수 있고, 또한 이전에 코딩된 양자화되고-변환된 잔차 레벨들의 절대 값에 의존할 수 있다. 제2 세트의 양자화되고-변환된 잔차 레벨들에 대해, k차 지수-Golomb 코딩 방식이 이용될 수 있다.
도 1은, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(EBC) 회로 및 기타의 회로들을 갖는 예시적인 미디어 디바이스를 도시하는 블록도이다. 도 1을 참조하면, 프로세서(106), 임베디드 코덱(EBC) 회로(108), 및 외부 메모리(110)를 포함하는 미디어 디바이스(102)가 도시되어 있다. 일부 실시예들에서, 이미지 센서(104)는, 프로세서(106), EBC 회로(108), 및 외부 메모리(110)에 통신가능하게 결합될 수 있다. 이미지 센서(104), 프로세서(106), EBC 회로(108) 및 외부 메모리(110)를 상호접속하는 시스템 버스(112)가 더 도시되어 있다.
미디어 디바이스(102)는, 비압축 원시 이미지 및/또는 비디오를 인코딩된(즉, 압축된) 이미지 및/또는 비디오로서 외부 메모리(110)에 저장하도록 구성될 수 있는 적절한 로직, 회로, 인터페이스를 포함할 수 있다. 미디어 디바이스(102)는 또한, 미디어 콘텐츠(예를 들어, 인코딩된 이미지 및/또는 비디오)의 인코딩 뿐만 아니라 디코딩과, 나아가, 디코딩된 미디어 콘텐츠의 미디어 디바이스(102)와 인터페이스된 디스플레이 스크린에서의 재생을 관리하도록 구성될 수 있다. 미디어 디바이스(102)는, 미디어 디바이스(102)에서 미디어 콘텐츠의 오프라인(네트워크없는) 인코딩을 위한 기타의 계산 회로와 함께, (EBC 회로(108) 등의) 전용 온칩 코덱 회로, 및 (비압축 또는 인코딩되지 않은) 이미지의 저장을 위한 외부 메모리(110)를 포함할 수 있다. 일부 실시예들에서, 미디어 디바이스(102)는 또한, 비압축 파일 포멧인 원시 이미지 파일 포멧(예를 들어, 14비트의 비트깊이를 갖는 원시 이미지)으로 이미지를 캡처하기 위해 (이미지 센서(104) 등의) 하나 이상의 이미지 센서를 포함할 수 있다. 이러한 경우에, 캡처된 이미지는 미디어 디바이스(102)의 EBC 회로(108)에 의해 인코딩될 수 있다. 미디어 디바이스(102)의 예는, 디지털 카메라, 휴대형 통신 디바이스(예를 들어, 랩탑, 스마트폰, 태블릿, 패블릿, 스마트 와치, 스마트 안경 등), 미디어 서버, 워크스테이션, 데스크탑 컴퓨터, 및 증강 현실/가상 현실/혼합 현실(AR/VR/MR) 디바이스를 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
도 1에 도시되지 않았지만, 미디어 디바이스(102)는 또한, (도 1에 도시되지 않은) 통신 네트워크를 통한, 다른 주변 디바이스 또는 피어-접속된 디바이스들과의, 인코딩된 및/또는 원시 비압축 이미지 및/또는 비디오의 공유를 관리하도록 구성될 수 있는 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스 및 통신 네트워크의 상세한 설명은 간결성을 위해 본 개시내용에서 생략되었다.
이미지 센서(104)는 이미지 센서(104)의 시야(FOV; field of view)에 있는 장면의 원시 비압축 이미지 또는 원시 비압축 이미지 시퀀스를 캡처하도록 구성될 수 있는 적절한 로직, 회로 및 인터페이스를 포함할 수 있다. 이미지 센서(104)는, CMOS(complementary-metal-oxide semiconductor) 센서 등의, 능동 픽셀 센서(active pixel sensor)로서 구현될 수 있다. 일부 실시예들에서, 이미지 센서(104)는, 능동 픽셀 센서 대신에, (CCD(charged coupled device) 센서, 오버샘플링된 2진 이미지 센서, 평면 푸리에 캡처 어레이(PFCA), 배면 조사형(BSI 또는 BI) 센서 등의) 수동 픽셀 센서로서 구현될 수 있다. 도시되지는 않았지만, 이미지 센서(104)는 또한, 이미지 센서(104)로부터의 이미지 데이터에 따라 동작하도록 구성된 전문화된 마이크로프로세서(또는 마이크로제어기), 프레임 버퍼에 저장된 이미지를 처리하기 위한 GPU(graphic processing unit), 및/또는 이미지 센서(104)와 통합된 메모리를 포함할 수 있다.
프로세서(106)는, 전용 메모리(예를 들어, 외부 메모리(110) 또는 EBC 회로(108)의 온칩 메모리)에 저장된 정의된 명령어들을 실행하도록 구성될 수 있는 적절한 로직, 회로 및 인터페이스를 포함할 수 있다. 프로세서(106)는 본 기술분야에 공지된 다수의 프로세서 기술들에 기초하여 구현될 수 있다. 프로세서(106)의 예는, GPU(Graphical Processing Unit), (전문화된 이미지 코프로세서 등의) 프로세서를 위한 코프로세서, 전문화된 디지털 신호 프로세서, 중앙 처리 유닛(CPU), x86 기반의 프로세서, x64 기반의 프로세서, RISC(Reduced Instruction Set Computing) 프로세서, ASIC(Application-Specific Integrated Circuit) 프로세서, CISC(Complex Instruction Set Computing) 프로세서를 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
EBC 회로(108)는, 특정한 압축 인자에 따라, 복수의 이미지 블록(예를 들어, 16x9 이미지 블록 또는 8x4 이미지 블록)을 인코딩하고, 또한, EBC 회로(108)에서 수신된 명령어들에 응답하여, 인코딩된 복수의 이미지 블록을 디코딩하도록 구성될 수 있는 적절한 로직, 회로, 및 인터페이스를 포함할 수 있다. 복수의 이미지 블록은, 입력 이미지(즉, 원시 비압축 이미지), 또는 이미지 센서(104)에 의한 스캔 후, 이미지 센서(104)로부터 회수된 2차원(2D) 픽셀 어레이의 일부일 수 있다. EBC 회로(108)는 또한, 외부 메모리(110)로의 인코딩된 이미지 블록(들)의 비트스트림의 저장을 관리하거나, 전용 통신 네트워크를 통한, 다른 미디어 디바이스(예를 들어, 휴대형 미디어 재생기)로의 인코딩된 이미지 블록(들)의 비트스트림의 전송을 관리할 수 있다.
EBC 회로(108)는 미디어 디바이스(102)의 다른 계산 회로들과 인터페이스된 전문화된 하드웨어 인코더/디코더로서 구현될 수 있다. 이러한 구현에서, EBC 회로(108)는 특정한 계산 회로에 관한 특정한 폼팩터와 연관될 수 있다. 특정한 계산 회로의 예는, FPGA(Field Programmable Gate Array), PLD(Programmable Logic Devices), ASIC(Application Specific Integrated Circuit), PL-ASIC(Programmable ASIC), ASSP(application specific integrated part), 표준 마이크로프로세서(MPU) 또는 디지털 신호 프로세서(DSP) 기반의 SOC(System-on-Chip)를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 또 다른 실시예에 따르면, EBC 회로(108)는 또한, EBC 회로(108)의 동작들을 병렬화하기 위해 그래픽 처리 유닛(GPU)과 인터페이스될 수 있다. 역시 또 다른 실시예에 따르면, EBC 회로(108)는, 메모리에 저장된 프로그램가능한 명령어와 미디어 디바이스(102)의 하드웨어 회로 상의 로직 유닛들(또는 프로그램가능한 로직 유닛들)의 조합으로서 구현될 수 있다.
외부 메모리(110)는, (비압축 원시 또는 인코딩된) 입력 이미지 또는 입력 이미지 시퀀스를 저장하도록 구성될 수 있는 적절한 로직, 회로 및 인터페이스를 포함할 수 있다. 외부 메모리(110)는 또한, 이미지 센서(104)로부터 회수된 원시 비압축 이미지 블록(2D)을 저장하는 이미지 버퍼로서 역할하도록 구성될 수 있다. 추가로, 외부 메모리(110)는, 인코딩된 이미지 블록(들)의 비트스트림을 생성하기 위해 EBC 회로(108)에 의해 선택적으로 적용될 수 있는 순차적 인코딩/디코딩 방식과 연관된 명령어를 저장할 수 있다. 한 예시적인 실시예에서, 외부 메모리(110)는, EBC 회로(108)와 외부적으로 인터페이스될 수 있는 동적 랜덤 액세스 메모리(DRAM) 회로일 수 있다. 또 다른 예시적인 실시예에서, 외부 메모리(110)는, EBC 회로(108)와 외부적으로 인터페이스될 수 있는 SRAM(static random access memory) 회로일 수 있다. 외부 메모리(110)의 구현의 추가적인 예는, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 전기적으로 소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM), 하드 디스크 드라이브(HDD), 솔리드-스테이트 드라이브(SSD), CPU 캐시, 또는 보안 디지털(SD) 카드를 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
도 1에 도시되지는 않았지만, 미디어 디바이스(102)는, AVC(Advanced Video Codec)/MPEG-4/AVC(Media Experts Group) 또는 H.264, MPEG-4/HEVC 또는 H.265 등을 포함할 수 있는 공지된 코덱 표준에 의해 구현될 수 있는 비디오 코덱을 더 포함할 수 있다. 추가로, 비디오 코덱은, FFmpeg, Xvid, DIVx, VP1-9, Windows Media Codec, FFav 등을 포함할 수 있는 다른 코덱 라이브러리에 의해 지원될 수 있다.
시스템 버스(112)는, 미디어 디바이스(102)의 상이한 컴포넌트들에 결합된 데이터 채널 세트(또는 전도성 경로)를 포함할 수 있는 하드웨어 버스일 수 있다. 대안으로서, 시스템 버스(112)는 미디어 디바이스(102)의 상이한 컴포넌트들의 적어도 데이터 포트, 어드레스 포트, 및 제어 신호 포트를 상호접속할 수 있다. 예를 들어, 시스템 버스(112)는, 이미지 센서(104), 프로세서(106), EBC 회로(108), 외부 메모리(110) 및 기타의 회로들을 서로 상호접속할 수 있다. 시스템 버스(112)는, 미디어 디바이스(102)의 상이한 온보드 컴포넌트들 사이의 직렬 데이터 통신 또는 병렬화된 데이터 통신을 용이화하도록 구성될 수 있다. 시스템 버스(112)의 예는, 8 비트 병렬 단일 시스템 버스, 16 비트 병렬 단일 시스템 버스, 32 비트 병렬 단일 시스템 버스, 64 비트 병렬 단일 시스템 버스, 직렬 데이터 버스 등을 포함할 수 있다.
동작시에, 입력 이미지의 복수의 이미지 블록(즉, 2D 이미지 블록)이 미디어 디바이스(102)의 외부 메모리(110)에 의해 수신될 수 있다. 일부 실시예들에서, 제1 이미지 블록은, (이미지 센서(104) 등의) 온칩 이미지 센서 또는 미디어 디바이스(102)에 접속된 카메라 디바이스로부터 순차적으로 복수의 이미지 블록으로부터 회수될 수 있다. 다른 실시예들에서, 복수의 이미지 블록은, 미디어 디바이스(102)의 영구 저장소에 저장되어 있거나, 카메라, 데이터 서버 등의 다른 미디어 저장 디바이스로부터 외부적으로 수신된 비압축 원시 이미지의 논리적 파티션으로부터 회수될 수 있다.
EBC 회로(108)는, 외부 메모리(110) 또는 이미지 센서(104)로부터 순차적으로 복수의 이미지 블록으로부터 제1 이미지 블록을 수신하도록 구성될 수 있다. EBC 회로(108)는, 제1 이미지 블록에 관해 순차적 인코딩 방식을 실행하여 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있다. 유사하게, EBC 회로(108)는, 복수의 이미지 블록에 관해 순차적 인코딩 방식을 실행하여 입력 이미지의 압축된 이미지 데이터의 비트스트림을 생성하도록 구성될 수 있다. 압축된 이미지 데이터의 비트스트림은 인코딩된 이미지 블록의 생성된 비트스트림을 포함할 수 있다. 압축된 이미지 데이터의 비트스트림은, 압축된 이미지 데이터의 비트스트림을 획득하기 위해 복수의 이미지 블록의 인코딩 단계에서 적용되는 순차적 인코딩 방식을 나타낼 수 있는 헤더 정보를 포함할 수 있다. 순차적 인코딩 방식은, 순방향 변환, 후속되는 양자화, 잔차 예측, 및 하나 이상의 엔트로피 코딩 방식의 순차적 적용을 포함할 수 있다. 순차적 인코딩 방식에서, EBC 회로(108)는 또한, 입력 이미지의 복수의 이미지 블록 중에서 제1 이미지 블록을 선택하도록 구성될 수 있다. 그 후, EBC 회로(108)는, 제1 이미지 블록에 관해 순방향 변환을 적용하여 복수의 변환 계수를 생성하도록 구성될 수 있다.
한 실시예에 따르면, 순방향 변환은, 입력 이미지의 복수의 이미지 블록 중의 제1 이미지 블록에 관해 1차원 행 직접 코사인 변환(1D 행 DCT) 변환 및 1D 열 DCT의 순차적 적용을 포함할 수 있다. 1D 행 DCT와 후속되는 1D 열 DCT의 순차적 적용은, 행-열 DCT 방법(row-column DCT method)이라고 지칭될 수 있다. 행-열 DCT 방법에서, 1D 행 DCT와 1D 열 DCT의 순차적 적용에 의해 제1 이미지 블록에 대해 2D DCT가 계산될 수 있다. 여기서, 1D 행 DCT의 적용은 복수의 행 방향 변환 계수를 생성하기 위한 제1 이미지 블록의 각각의 행에 관한 1D DCT 변환의 적용에 대응할 수 있고, 1D 열 DCT의 적용은 복수의 변환 계수를 생성하기 위한 행 방향 변환된 계수들의 블록의 각각의 열에 관한 1D DCT의 적용에 대응한다.
한 실시예에 따르면, 순방향 변환은, (정규직교 베이스(orthonormal base) 또는 고유벡터(eigenvector) 패밀리를 포함하는) 정현파 단위 변환 패밀리에 기초할 수 있다. 1D 순방향 변환의 예는, 유형 I-VIII DCT(Discrete Cosine Transform), 유형 I-VIII 이산 사인 변환(DST), 이산 웨이블릿 변환(DWT), 및 듀얼-트리 복합 웨이블릿 변환(DCWT)을 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
한 실시예에 따르면, 제1 이미지 블록은, YCbCr 색 공간에서 휘도 이미지 블록, 크로마-블루 이미지 블록 또는 크로마-레드 이미지 블록의 조합으로서 표현될 수 있다. 이러한 경우에, EBC 회로(108)는, 행-열 DCT 방법 등의 순방향 변환을, 휘도 이미지 블록, 크로마-레드 이미지 블록, 및 크로마-블루 이미지 블록에 별개로 적용하여, 각각, 변환 계수들의 루마 블록, 크로마-U 블록 및 크로마-V 블록을 생성하도록 구성될 수 있다.
EBC 회로(108)는 또한, 제1 이미지 블록에 대한 복수의 변환 계수를 양자화하여 복수의 양자화되고-변환된 레벨을 생성하도록 구성될 수 있다. 유사하게, 제1 이미지 블록 이외의 이미지 블록들에 관한 복수의 변환 계수는 더 양자화되어 대응하는 복수의 양자화되고-변환된 레벨을 생성할 수 있다. 따라서, EBC 회로(108)는, 복수의 이미지 블록 중의 각각의 이미지 블록에 대한 복수의 변환 계수의 순차적 양자화 후에 복수의 블록의 양자화되고-변환된 레벨들을 생성하도록 구성될 수 있다.
한 실시예에 따르면, EBC 회로(108)는, 루마 블록, 크로마-U 블록 및 크로마-V 블록 각각에서 복수의 변환 계수를 양자화하여 대응하는 복수의 양자화되고-변환된 레벨을 생성하도록 구성될 수 있다. 복수의 양자화되고-변환된 레벨은 복수의 이산화된 양자화 빈(quantization bin)에 의해 서로 분리될 수 있다. 복수의 양자화 빈에 대한 스텝 크기는 또한, 변환 계수들의 1D 서브-블록을 복수의 양자화되고-변환된 레벨로 효율적으로 양자화하기 위해 적응적으로(또는 균일하게) 선택될 수 있다. 각각의 양자화되고-변환된 레벨은 양자화 빈의 상한 및 하한으로부터의 중간 값일 수 있고, 예를 들어 "(155,175)"의 양자화 빈은, "(155 + 175)/2", 즉, "165"의 양자화되고-변환된 레벨을 포함할 수 있다. 양자화에 의해, EBC 회로(108)는 시각적으로 현저한 품질 저하없이 변환 도메인 데이터(즉, 제1 이미지 블록에 대한 복수의 변환 계수)로부터 중복된 계수 정보를 제거할 수 있다.
복수의 양자화 빈은, 미디어 콘텐츠를 인코딩 또는 디코딩하기 위해 적응적 양자화 방식에 따라 정의된 레이트로 달라질 수 있는 양자화 파라미터(QP)에 기초하여 결정될 수 있다. QP는, 0으로부터 인코딩된 이미지 블록(즉, 2D 이미지 블록)의 비트스트림의 비트깊이까지 변할 수 있다. 예를 들어, 압축된 이미지 블록의 8 비트 비트스트림에 대한 QP는, 제1 블록의 변환 계수들에 대해 "7” 및 제2 블록의 변환 계수들에 대해 "0"으로서 선택될 수 있고, 이것은, 제1 블록의 변환 계수들이 제2 블록보다 더 미세한 스텝 크기로 양자화될 수 있고 제2 블록은 전혀 양자화되지 않을 수 있다는 것을 암시할 수 있다.
EBC 회로(108)는 또한, 복수의 블록의 양자화되고-변환된 레벨들에 관해 잔차 예측 방식을 적용하도록 구성될 수 있고 여기서, 각각의 블록은, 제1 이미지 블록 등의, 대응하는 2D 이미지 블록에 대한 복수의 양자화되고-변환된 레벨을 포함할 수 있다. 잔차 예측 방식의 적용 후, 복수의 블록의 양자화되고-변환된 레벨들로부터 복수의 블록의 양자화되고-변환된 잔차 레벨들이 획득될 수 있다. 한 실시예에 따르면, EBC 회로(108)는, 복수의 이미지 블록 중의 제1 이미지 블록에 대한 루마 블록, 크로마-U 블록, 및 크로마-V 블록에서 복수의 양자화되고-변환된 레벨에 관해 잔차 예측 방식을 선택적으로 적용하도록 구성될 수 있다. 한 예로서, 잔차 예측 방식의 선택적 적용은, 루마 블록의 DC 양자화되고-변환된 레벨(들)만이 PCM(Pulse Code Modulation) 코딩되고, 크로마-U 및 크로마-V 블록의 모든 DC 및 AC 양자화되고-변환된 레벨들은 PCM 코딩된다는 것을 포함할 수 있다.
대응하는 복수의 이미지 블록에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨들은, 외부 메모리(110) 또는 EBC 회로(108) 내의 온칩 메모리(예를 들어, 전용 SRAM 또는 온칩 캐쉬) 등의 메모리에 저장될 수 있다. 잔차 예측 방식의 예는, PCM 방식, DPCM(Differential Pulse Code Modulation) 방식, 또는 ADPCM(Adaptive DPCM) 방식을 포함할 수 있지만, 이것으로 제한되는 것은 아니다. DPCM 및 ADPCM 방식에서, 각각의 양자화되고-변환된 레벨을 이용하는 것 대신에, 기준 양자화 레벨로부터 잔차가 예측된다.
제1 블록은, DC 양자화되고-변환된 잔차 레벨 및 복수의 AC 양자화되고-변환된 잔차 레벨을 더 포함할 수 있는, 복수의 양자화되고-변환된 잔차 레벨을 포함할 수 있다. 예를 들어, "64"개의 양자화되고-변환된 잔차 레벨들의 "8x8"블록은, "1"개의 DC 양자화되고-변환된 잔차 레벨 및 "63"개의 AC 양자화되고-변환된 잔차 레벨을 포함할 수 있다. 여기서, "DC" 및 "AC"는, 각각, 제로 주파수 및 비제로 주파수를 보이는 양자화되고-변환된 잔차 레벨을 나타낸다. 다시 말해서, "DC"는 이미지 블록 또는 서브-블록에서 제1 항인 직류(DC) 항을 나타내고, 따라서 제로 주파수를 보이며, 나머지 요소들은, 이미지 압축 도메인에서 잘 알려진 비제로 주파수를 보이는 교류 전류(AC) 항(AC 값 또는 계수라고도 함)라고 알려져 있다. 따라서, AC 양자화되고-변환된 잔차 레벨은 AC 계수의 양자화되고-변환된 잔차 레벨에 대응하고, DC 양자화되고-변환된 잔차 레벨은 DC 계수의 양자화되고-변환된 잔차 레벨에 대응한다.
한 실시예에 따르면, EBC 회로(108)는, 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을 엔트로피 인코딩하기 위해, 제1 블록의 복수의 양자화되고-변환된 잔차 레벨의 절대 값들의 히스토그램 분포를 계산하도록 구성될 수 있다. 히스토그램 분포는 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨의 절대 값의 변동 정도를 나타낼 수 있다. 달리 말하면, 히스토그램 분포는, 양자화되고-변환된 잔차 레벨의 범위를 나타내는 상이한 빈들을 포함할 수 있고, 복수의 양자화되고-변환된 잔차 레벨들 각각은 적절한 빈에 할당될 수 있으며, 상이한 빈들은 대응하는 빈에 할당된 양자화되고-변환된 잔차 레벨들의 카운트를 나타낼 수 있다. 히스토그램 분포는, 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을 분류하기 위해 EBC 회로(108)에 의해 이용될 수 있다.
EBC 회로(108)는, 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. 이 분류는, 복수의 양자화되고-변환된 잔차 레벨 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값의 비교에 기초하여 이루어질 수 있다. 예를 들어, 제1 세트는 "5"(즉, 임계 레벨 값)보다 큰 절대 값을 갖는 모든 양자화되고-변환된 잔차 레벨을 포함할 수 있고, 제2 세트는 5(즉, 임계 레벨 값)보다 작거나 같은 절대 값을 갖는 모든 양자화되고-변환된 잔차 레벨을 포함할 수 있다.
분류는 논리적인 분류일 수 있으며, 여기서 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨은, 양자화되고-변환된 잔차 레벨들의 분류에 의한 재배열없이 여전히 단일 블록으로서 처리될 수 있다. 엔트로피 코딩 단계에서, EBC 회로(108)는, 제1 블록의 특정한 위치에서의 양자화되고-변환된 잔차 레벨이 제1 세트의 양자화되고-변환된 잔차 레벨들 또는 제2 세트의 양자화되고-변환된 잔차 레벨들에 속하는지를 검출할 필요가 있을 수 있다. EBC 회로(108)가 제1 블록을 스캐닝하는 동안, 양자화되고-변환된 잔차 레벨이 제1 세트의 양자화되고-변환된 잔차 레벨들로부터 나온 것으로 식별될 때마다, EBC 회로(108)는, 이러한 양자화되고-변환된 잔차 레벨에 관해 제1 엔트로피 코딩 방식(예를 들어, Huffman 엔트로피 코딩 방식)을 적용하도록 구성될 수 있다. EBC 회로(108)가 제1 블록을 스캐닝하는 동안, 양자화되고-변환된 잔차 레벨이 제2 세트의 양자화되고-변환된 잔차 레벨들로부터 나온 것으로 식별될 때마다, EBC 회로(108)는, 제1 엔트로피 코딩 방식(예를 들어, Huffman 엔트로피 코딩 방식)에 기초하여 스킵 코드를 생성하도록 구성될 수 있다. 스킵 코드는, (예를 들어, 인코더 회로 또는 디코더 회로에 의해) 검출될 때, 현재 스캔된 양자화되고-변환된 잔차 레벨(또는 비트들의 인코딩된 부분)이 제2 세트의 양자화되고-변환된 잔차 레벨들에 속하고 임계 레벨 값보다 큰 절대 값을 갖는다는 것을 나타내는 트리거 코드(trigger code)로서 작용할 수 있다. 그 후, EBC 회로(108)는, 대응하는 양자화되고-변환된 잔차 레벨에 대한 스킵 코드가 생성된 후, 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨 잔차 레벨에 관해 제2 엔트로피 코딩 방식(예를 들어, k차 exp-Golomb 엔트로피 코딩 방식)을 적용하도록 구성될 수 있다. (스킵 코드를 생성하기 위한) 제1 엔트로피 코딩 방식 또는 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합은, 제1 블록에서 EBC 회로(108)에 추종되는 DC-AC 스캔 순서에 따라, 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨에 관해 적용될 수 있다. DC-AC 스캔 순서는, DC 양자화되고-변환된 잔차 레벨이 스캔되고, 후속해서 제1 블록 내의 AC 양자화되고-변환된 잔차 레벨이 뒤따르는 스캐닝 시퀀스일 수 있다. 따라서, 제1 블록 내의 DC-AC 스캔 순서에 따라 양자화되고-변환된 잔차 레벨의 위치에 기초한 상이한 엔트로피 코딩 방식들의 선택적 적용은, 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨에 대한 위치 의존적 엔트로피 코딩 방식이라고 지칭될 수 있다.
EBC 회로(108)는 또한, 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식의 적용 및 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식 및 제2 엔트로피 코딩 방식의 조합의 적용이라는 선택적 적용에 의해 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있다. 스킵 코드는 비트스트림의 일부일 수 있고, 제2 세트의 양자화되고-변환된 잔차 레벨들에 속할 수 있는 양자화되고-변환된 잔차 레벨과 연관된 코드(양자화되고-변환된 잔차 레벨을 나타내는 비트 세트)에 선행할 수 있다.
예를 들어, "4x4" 블록은, "16"개의 양자화되고-변환된 잔차 레벨을 포함할 수 있고, 이 중 "9"개의 양자화되고-변환된 잔차 레벨은 임계 레벨 값 "5"보다 큰 절대 값을 가질 수 있으며, "7"개의 양자화되고-변환된 잔차 레벨은 "5" 이하의 절대 값을 가질 수 있다. EBC 회로(108)는, Huffman 엔트로피 코딩 방식의 적용에 의해 "9"개의 양자화되고-변환된 잔차 레벨을 인코딩하여 "3 비트/코드"의 "9"개의 Huffman 코드(또는 코드들), 즉, 총 "27 비트"의 비트스트림을 생성하도록 구성될 수 있다. "7"개의 양자화되고-변환된 잔차 레벨의 절대 값이 "5"보다 높기 때문에, Huffman 코드는 이러한 양자화되고-변환된 잔차 레벨을 인코딩하기 위해 더 많은 비트를 취할 수 있다. 따라서, EBC 회로(108)는, 스킵 코드의 "2 비트"를 생성하고, ("7”개의 양자화되고-변환된 잔차 레벨로부터의) 양자화되고-변환된 잔차 레벨 및 임계 레벨 값의 차이에 관한 지수-Golomb 방식의 적용에 의해 양자화되고-변환된 잔차 레벨과 임계 레벨 값(예를 들어, "7" 내지 "5" 또는 "2")의 차이를 인코딩하도록 구성될 수 있다. exp-Golomb 엔트로피 코딩 방식은 다른 엔트로피 코딩 방식들보다 적은 수의 비트를 이용하여 작은 값을 인코딩하기 때문에, "7"개의 양자화되고-변환된 잔차 레벨이 레벨 당 "3 비트"에 의해 인코딩될 수 있다. 따라서, "7"개의 양자화되고-변환된 잔차 레벨은 레벨 당 "3" 비트 및 스킵 코드 당 추가 "2" 비트, 즉, 총 "35" 비트에 의해 인코딩될 수 있다. "7"개의 양자화되고-변환된 잔차 레벨에 대한 Huffman 코드는 레벨 당 "5” 비트 이상을 이용할 수 있으므로, 위치-기반의 엔트로피 코딩은, 제1 블록의 양자화되고-변환된 잔차 레벨들을 인코딩하기 위한 비트의 양을 감소시켜, 제1 블록의 양자화되고-변환된 잔차 레벨들에 대한 압축 인자를 증가시키는데 도움이 될 수 있다.
한 실시예에 따르면, EBC 회로(108)의 (도 1에 도시되지 않은) EBC 디코더 회로는, 상이한 코딩 테이블들(예를 들어, Huffman 엔트로피 코딩 방식, 지수-Golomb 엔트로피 코딩 방식 등을 위한 커스텀 코딩 테이블) 및 양자화 테이블들을 미리저장하도록 구성될 수 있다. 따라서, 인코딩된 이미지 블록의 비트스트림은 상이한 코딩 테이블들 및 양자화 테이블들을 포함할 필요가 없을 수 있다. 한 실시예에 따르면, EBC 회로(108)는, 인코딩된 이미지 블록의 비트스트림을 디코딩하기 위해 상이한 디코딩 방식들을 이용할 수 있는 외부 디코더들에 의해 비트스트림이 디코딩될 수 있도록, 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있다. 이러한 경우에, EBC 회로(108)는, 인코딩된 이미지 블록의 비트스트림과 연관된 헤더 정보 또는 상이한 메타스트림에서, 상이한 코딩 테이블들(예를 들어, Huffman 엔트로피 코딩 방식, 지수-Golomb 엔트로피 코딩 방식 등을 위한 커스텀 코딩 테이블들) 및 양자화 테이블들을 추가하도록 구성될 수 있다. 비트스트림에서 이러한 커스텀 테이블 및 양자화 테이블을 추가함으로써, EBC 회로(108)의 출력은 다른 디코더 회로에 의해 디코딩될 수 있다.
한 실시예에 따르면, 인코딩된 이미지 블록의 비트스트림은, 외부 메모리(110) 또는 EBC 회로(108)의 온칩 메모리 등의 메모리에 (2D 이미지 등의) 입력 이미지의 일부로서 저장될 수 있다. 인코딩된 이미지 블록의 비트스트림은 상이한 응용들에서 복수의 구현을 가질 수 있다. 구현들 중 일부는 본 명세서에서 간략하게 제시되었다. 한 구현에서, 프로세서(106)는, 시스템 버스(112)를 통해, 인코딩된 1D 이미지 블록의 비트스트림을, 미디어 디바이스(102)의 시스템 버스(112)와 통신가능하게 결합된(또는 인터페이스된) 디스플레이 회로(예를 들어, 비디오 카드)의 프레임 버퍼(또는 프레임 저장소)에 전송하도록 구성될 수 있다. 프레임 버퍼는 디스플레이 회로에 대한 압축된 프레임 버퍼로서 역할할 수 있다. (도 1에 도시되지 않은) 디스플레이 회로는, 이미지 블록의 비트스트림을 디코딩하고 또한 활용하여 미디어 디바이스(102)의 디스플레이 스크린 상에 이미지 조각을 디스플레이할 수 있다. 또 다른 구현에서, 프로세서(106)는, 미디어 디바이스(102) 내의 비디오 디코더의 디코더 픽처 버퍼(DPB), 이미지 디코더의 버퍼 메모리, 또는 비디오 코덱의 코딩된 픽처 버퍼(CPB) 등의, 디코더 버퍼에, 시스템 버스(112)를 통해, 인코딩된 이미지 블록의 비트스트림을 전송하도록 구성될 수 있다.
한 예시적인 구현에서, 미디어 디바이스(102)는, 디지털 비디오 카메라 또는 디지털 이미지 카메라 등의 카메라일 수 있고, 인코딩된 이미지 블록의 비트스트림은, 카메라의 CMOS 센서로부터 직접 수신되는 픽셀 값들의 2D 어레이에 대응할 수 있다. 특정한 시나리오에서, EBC 회로(108)는 CMOS 센서 회로에서 구현될 수 있다. EBC 회로(108)의 상세한 동작은, 예를 들어, 도 2, 도 3 및 도 4에서 더 상세히 설명되었다.
도 2는, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 다양한 주변 컴포넌트들을 갖는 임베디드 코덱(EBC) 회로를 도시하는 블록도이다. 도 2는 도 1의 요소들과 연계하여 설명된다. 도 2를 참조하면, EBC 회로(108)의 블록도(200)가 도시되어 있다. EBC 회로(108)는, 입력/출력(I/O) 인터페이스(202), 온칩 메모리(204), 인코더 회로(206), 및 디코더 회로(208)를 포함할 수 있다. 블록도(200)에서, 시스템 버스(112)를 통해 EBC 회로(108)에 통신가능하게 결합된, 이미지 센서(104), 프로세서(106), 및 외부 메모리(110)가 도시되어 있다. 일부 실시예들에서, 프로세서(106) 및 외부 메모리(110)는, 본 개시내용의 범위로부터 벗어나지 않으면서 EBC 회로(108) 내부에서 구현될 수 있다.
I/O 인터페이스(202)는, 시스템 버스(112)를 통해, 다른 주변 회로들, 예를 들어, 외부 메모리(110), 프로세서(106), 또는 이미지 센서(104)로부터의 통신 데이터의 교환을 용이화하기 위해 복수의 I/O 포트를 관리하도록 구성될 수 있는 적절한 로직, 회로 및 인터페이스를 포함할 수 있다. 통신 데이터는, 인코딩된 이미지 블록의 비트스트림, 제어 신호, CPU 명령어 등을 포함할 수 있다. I/O 포트의 구성은, EBC 회로(108)의 명세, 예를 들어 ASIC, FPGA 또는 SoC 칩에서의 물리적 I/O 핀에 의존할 수 있다.
온칩 메모리(204)는, 이미지 블록을 인코딩하기 위해 EBC 회로(108)의 상이한 컴포넌트들에 의해 이용될 수 있는 상이한 동작 데이터들(예를 들어, 변환 도메인 데이터, 잔차 레벨, 양자화 레벨, 엔트로피 코딩된 비트 등)를 저장하도록 구성될 수 있는 적절한 로직, 회로 및 인터페이스를 포함할 수 있다. 온칩 메모리(204)가 저장하도록 구성될 수 있는 동작 데이터의 예는, 인코딩된 이미지 블록의 비트스트림, 변환 도메인 데이터, 양자화되고-변환된 레벨, 양자화되고-변환된 잔차 레벨, 및 1D/2D 이미지 블록을 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 온칩 메모리(204)는, R/W 속도, 메모리 크기, 제조 인자 등의 정의된 메모리 명세로 설계된 특정한 메모리로서 구현될 수 있다. 온칩 메모리(204)의 예는, 정적 랜덤 액세스 메모리(SRAM), 동적 액세스 메모리(DRAM) 및 정적 동적 RAM(SD-RAM)을 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
인코더 회로(206)는, 온칩 메모리(204) 또는 외부 메모리(110) 등의 메모리에 저장된 이미지 블록에 관한 순차적 인코딩 방식(위치 의존적 엔트로피 코딩 방식 포함)의 적용에 의해, 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있는 적절한 로직, 회로, 및 인터페이스를 포함할 수 있다. 인코더 회로(206)는, 입력된 이미지 블록의 밀집화 효율 및/또는 압축 인자를 개선하기 위해 (이미지 블록에 대응하는) 한 블록의 양자화되고-변환된 잔차 레벨들을 인코딩하는데 이용될 수 있는 비트 수를 감소시키도록 최적화될 수 있다. 일부 실시예들에서, 인코더 회로(206)는, ASIC, 프로그램가능한 로직 디바이스(PLD), SOC, FPGA, 디지털 신호 프로세서(DSP) 또는 다른 전문화된 회로 중 하나에 기초하여 구현될 수 있는 하드웨어 인코더 칩일 수 있다. 다른 실시예들에서, 인코더 회로(206)는, 온칩 메모리(204)에서 하드웨어 및 저장된 명령어 세트(예를 들어, VHDL 또는 HDL 로직에 기초한 명령어)의 조합으로서 구현될 수 있다.
디코더 회로(208)는, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들 등의 상이한 세트들로의, 양자화되고-변환된 잔차 레벨들의 분류를 트리거하는 비트스트림 내의 헤더 정보 및 스킵 코드 세트에 기초하여 인코딩된 이미지 블록의 비트스트림을 디코딩하도록 구성될 수 있는 적절한 로직, 회로, 및 인터페이스를 포함할 수 있다. 디코더 회로(208)는, 디코더 회로(208)가 인코딩된 이미지 블록의 비트스트림을 디코딩하기 위한 기준으로서 역할할 수 있는 미리 저장된 양자화 테이블 및 코딩 테이블을 가질 수 있다. 일부 실시예들에서, 디코더 회로(208)는, ASIC, 프로그램가능한 로직 디바이스(PLD), SOC, FPGA, 디지털 신호 프로세서(DSP) 또는 다른 전문화된 회로 중 하나에 기초하여 구현될 수 있는 하드웨어 인코더 칩일 수 있다. 다른 실시예들에서, 디코더 회로(208)는, 온칩 메모리(204)에서 하드웨어 및 저장된 명령어 세트(예를 들어, VHDL 또는 HDL 로직에 기초한 명령어)의 조합으로서 구현될 수 있다.
동작시에, 입력 이미지의 복수의 이미지 블록으로부터 복수의 블록의 양자화되고-변환된 잔차 레벨들이 생성되어 외부 메모리(110) 또는 온칩 메모리(204) 등의 메모리에 더 저장될 수 있다. 복수의 블록은, 입력 이미지의 조각이라고도 하는 복수의 이미지 블록에 대응하는 잔차 레벨 데이터일 수 있다. 복수의 블록의 양자화되고-변환된 잔차 레벨들은, 복수의 블록의 양자화되고-변환된 레벨들에 대한 1D 순방향 변환, 후속되는 양자화, 및 잔차 예측의 순차적 적용에 기초하여 생성될 수 있다. 예를 들어 "1280 x 720" 입력 이미지는 "80"개의 "16x9" 이미지 블록을 갖는다. 인코더 회로(206)는, "16x1" 행 DCT-II 변환, "80"개의 이미지 블록 중의 각각의 "16x9" 이미지 블록에 관한 "16x1" 열 DCT-II 변환, 양자화 파라미터 "7"의 양자화, 및 후속되는 "80"개의 이미지 블록 중의 각각의 "16x9" 블록에서의 양자화되고-변환된 레벨들의 PCM 코딩의 순차적 적용에 의해, 복수의 "16x9" 블록의 양자화되고-변환된 잔차 레벨들을 생성하도록 구성될 수 있다.
복수의 블록의 양자화되고-변환된 잔차 레벨들을 엔트로피 인코딩하기 위해, 인코더 회로(206)는, 외부 메모리(110) 또는 온칩 메모리(204) 등의 메모리로부터 복수의 블록 중 제1 블록을 회수하도록 구성될 수 있다. 제1 블록은, DC 양자화되고-변환된 잔차 레벨 및 복수의 AC 양자화되고-변환된 잔차 레벨을 포함할 수 있고, 예를 들어, "16x16"블록은 1개의 DC 양자화되고-변환된 잔차 레벨 및 "15"개의 AC 양자화되고-변환된 잔차 레벨을 가질 수 있다.
소정 실시예에서, 제1 블록은, 대응하는 이미지 블록이 휘도 이미지 블록일 때 루마 블록이고, 제1 블록은, 대응하는 이미지 블록이 크로마 이미지 블록일 때 크로마-U 또는 크로마-V 블록이다. 또한, 제1 RGB 이미지 블록에 대해, 인코더 회로(206)는, RGB(또는 BGR) 이미지 블록을, 루마 블록, 크로마-U 블록, 및 크로마-V 블록으로 변환하도록 구성될 수 있다. 루마 블록, 크로마-U 블록, 또는 크로마-V 블록에서의 AC 양자화되고-변환된 잔차 레벨들의 절대 값은, 고주파 AC 양자화되고-변환된 잔차 레벨들 및 저주파 AC 양자화되고-변환된 잔차 레벨들을 갖는 특정한 영역을 나타낼 수 있는 패턴에 따라 변할 수 있다.
제1 블록에서의 DC 및 AC 양자화되고-변환된 잔차 레벨들의 위치는, (제1 블록에 대응하는) 제1 이미지 블록 내의 복수의 픽셀 값에 관한 1D 행 변환 및 1D 열 변환의 연속적인 적용을 위해 선택된 방향(예를 들어, 스캔 순서)에 기초할 수 있다. 예를 들어, 1D 행 DCT 변환의 적용은 제1 위치에서 DC 변환 계수를 생성하고, 제1 블록의 상이한 행들 내의 후속 위치들에서 나머지 AC 변환 계수를 생성할 수 있다. 유사하게, 1D 행 변환의 적용 후 1D 열 DCT 변환의 연속적인 적용은, 제1 위치에서 DC 변환 계수를 생성하고, 제1 블록의 상이한 열들 내의 후속 위치들에서 나머지 AC 변환 계수들을 생성할 수 있다.
인코더 회로(206)는, 복수의 블록 중의 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. 복수의 양자화되고-변환된 잔차 레벨들의 분류는, 복수의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값의 비교에 기초하여 이루어질 수 있다. 이 비교는, 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값이 임계 레벨 값보다 작거나 같거나 큰지에 대한 체크에 대응할 수 있다. 한 실시예에 따르면, 제1 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 임계 레벨 값 이하일 수 있다. 한 실시예에 따르면, 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 임계 레벨 값보다 크다.
한 실시예에 따르면, 인코더 회로(206)는 제1 블록(예를 들어, 루마 블록, 크로마-U 블록 또는 크로마-V 블록)에서의 복수의 양자화되고-변환된 잔차 레벨의 히스토그램 분포를 생성하도록 구성될 수 있다. 히스토그램 분포는 복수의 빈을 가질 수 있다, 예를 들어, 제1 빈은 양자화되고-변환된 잔차 레벨들의 절대 값에 대해 "[0, 5]" ("5" 포함)의 범위를 가질 수 있다. 후속 빈들은, "[0, 5]"의 범위를 초과하는 양자화되고-변환된 잔차 레벨들의 절대 값을 커버할 수 있다. 인코더 회로(206)는, 제1 빈의 범위 내에서 절대 값들을 가질 수 있는 양자화되고-변환된 잔차 레벨들을, 제1 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. 유사하게, 인코더 회로(206)는, 제1 빈의 범위를 초과하는 절대 값들을 가질 수 있는 양자화되고-변환된 잔차 레벨들을, 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다.
인코더 회로(206)는 또한, 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식을 적용하고, 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식 및 제2 엔트로피 코딩 방식의 조합을 적용하도록 구성될 수 있다. 제1 엔트로피 코딩 방식, 또는 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용은, 제1 블록에서 DC-AC 스캔 순서로 실행될 수 있다. 제1 블록에서의 DC-AC 스캔 순서는, DC 양자화되고-변환된 잔차 레벨들이 스캔되고, 후속해서 제1 블록에서의 AC 양자화되고-변환된 잔차 레벨이 뒤따를 수 있는 스캐닝 시퀀스일 수 있다. 더 구체적으로, DC-AC 스캔 순서를 따름으로써, 인코더 회로(206)는 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식 사이에서 전환하도록 구성될 수 있다. 이 전환은, 제1 블록에서의 양자화되고-변환된 잔차 레벨(DC 또는 AC)의 위치, 및 제1 블록의 특정한 위치에서의 양자화되고-변환된 잔차 레벨이 제1 세트의 양자화되고-변환된 잔차 레벨에 놓여 있는지 또는 제2 세트의 양자화되고-변환된 잔차 레벨에 놓여 있는지에 기초할 수 있다.
한 실시예에 따르면, 제1 엔트로피 코딩 방식은 Huffman 엔트로피 코딩 방식일 수 있고 제2 엔트로피 코딩 방식은 exp-Golomb 엔트로피 코딩 방식일 수 있다. 인코더 회로(206)는 또한, 한 세트의 미리-명시된 Huffman 테이블에 기초하여 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성될 수 있다. 제1 세트의 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식에 따라 엔트로피 코딩될 수 있다. 미리-명시된 Huffman 테이블 세트는, 제1 세트의 디폴트 Huffman 테이블들 및 제2 세트의 위치-특유의 Huffman 테이블들을 포함할 수 있다.
한 실시예에 따르면, 미리-명시된 Huffman 테이블 세트는, 제1 위치-특유의 Huffman 테이블("T0"), 제2 위치-특유의 Huffman 테이블("T1"), 제3 위치-특유의 Huffman 테이블("T2")을 포함할 수 있다. 또한, 미리-명시된 Huffman 테이블 세트는, 루마 블록에 대한 제1 디폴트 Huffman 테이블("T3"), 및 크로마-U 또는 크로마-V 블록에 대한 제2 디폴트 Huffman 테이블("T4")을 포함할 수 있다. 표 1은 다음과 같이 미리-명시된 Huffman 테이블 세트를 보여준다 :
Figure pat00001
표 1 : 미리-명시된 Huffman 테이블들
표 1에서, 상이한 양자화되고-변환된 잔차 레벨들, 즉, "0", "1", "-1", abs("2"), abs("3"), abs("4") 및 abs("5")에 대한 Huffman 코드가, 각각, T0, T1, T2, T3 및 T4에 제공되었다. 추가로, 제1 블록에서 DC-AC 스캔 순서의 특정한 위치에서의 검출된 양자화되고-변환된 잔차 레벨이 임계 레벨 값(예를 들어, 임계 값 "5")보다 클 때 생성되는 스킵 코드에 대한 Huffman 코드. 디폴트 Huffman 테이블 및 위치-특유의 Huffman 테이블의 선택은, 엔트로피 코딩 단계에서 인코더 회로(206)에 의해 추종되는 상이한 규칙들에 기초하여 이루어질 수 있다. 규칙이 여기서 논의되었다.
한 실시예에 따르면, 인코더 회로(206)는, 제1 블록에서의 DC-AC 스캔 순서에 따라, 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하기 위해 (예를 들어, 표 1, T3 또는 T4에 도시된 바와 같은) 제1 세트의 디폴트 Huffman 테이블로부터 한 디폴트 Huffman 테이블을 선택하도록 구성될 수 있다. 엔트로피 코딩 단계에서 루마 블록 및 크로마(U 또는 V) 블록으로부터 양자화되고-변환된 잔차 레벨이 선택될 때마다 제1 세트의 디폴트 Huffman 테이블들이 디폴트 테이블로서 선택될 수 있다. 제1 세트의 디폴트 Huffman 테이블들이 선택되는 경우, 상이한 위치들에서의 양자화되고-변환된 잔차 레벨은, 제1 블록에서의 양자화되고-변환된 잔차 레벨의 절대 값에 대응하여 나열된 Huffman 코드에 의해 코딩될 수 있다.
한 실시예에 따르면, 이전에 코딩된 양자화되고-변환된 잔차 레벨의 절대 값이 "5" 등의 임계 레벨 값보다 클 때마다, 제1 블록의 현재 위치에서 특정한 양자화되고-변환된 잔차 레벨에 대한 Huffman 코드를 생성하기 위해 제1 세트의 디폴트 Huffman 테이블들(예를 들어, 표 1에 도시된 T3 또는 T4)로부터 한 디폴트 Huffman 테이블이 선택될 수 있다. 한 실시예에 따르면, 인코더 회로(206)는 또한, 제1 블록에서의 각각의 양자화되고-변환된 잔차 레벨의 특정한 위치에 기초하여, (예를 들어, 표 1, T0, T1 및 T2에 도시된 바와 같은) 제2 세트의 위치-특유의 Huffman 테이블들로부터 한 위치-특유의 Huffman 테이블을 선택하도록 구성될 수 있다. 위치-특유의 Huffman 테이블은, 제1 블록에서의 DC-AC 스캔 순서에 따라, 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 선택될 수 있다.
예를 들어, 양자화되고-변환된 잔차 레벨들의 "4x4"블록이 다음과 같이 주어질 수 있다 :
Figure pat00002
블록 (B)에서, "4x4", 즉, "16"개의 양자화되고-변환된 잔차 레벨이 있고, 여기서, 제1 양자화되고-변환된 잔차 레벨은 "-21"의 값을 갖는 DC 양자화되고-변환된 잔차 레벨이고 나머지 양자화되고-변환된 잔차 레벨들은 AC 양자화되고-변환된 잔차 레벨이다. 블록 (B)를 엔트로피 코딩하기 위해, 블록 (B)에서의 복수의 양자화되고-변환된 잔차 레벨은 제1 세트 및 제2 세트로 분류된다. 제1 세트는, "5" 이하, 즉 "0, 0, 0, 0, 0, 0 1, 1, 1, 2, 3, 5 및 5"의 양자화되고-변환된 잔차 레벨들의 절대 값을 가질 수 있다. 유사하게, 제2 세트는, "5"보다 큰, 즉, "6, 7, 및 21"의 양자화되고-변환된 잔차 레벨들의 절대 값을 가질 수 있다.
인코더 회로(206)는, 양자화되고-변환된 잔차 레벨들이 블록 (B)에서 인코더 회로(206)에 의해 액세스될 수 있는 시퀀스(또는 위치)를 명시할 수 있는, DC-AC 스캔 순서로 블록 (B)를 스캔하도록 구성될 수 있다. 그 후, 인코더 회로(206)는, 현재 위치에서, 양자화되고-변환된 잔차 레벨이 제1 세트로부터 나온 것인지 또는 제2 세트로부터 나온 것인지에 기초하여, Huffman 엔트로피 코딩 방식, 또는 Huffman 엔트로피 코딩 방식과 exp-Golomb 엔트로피 코딩 방식의 조합을 선택적으로 적용하도록 구성될 수 있다. 현재 위치에서, 양자화되고-변환된 잔차 레벨이 제1 세트의 일부인 경우, 인코더 회로(206)는, (예를 들어, 블록 (B)가 루마 블록 또는 코마 블록인 경우) 디폴트 Huffman 테이블에 기초하여 양자화되고-변환된 잔차 레벨에 대한 Huffman 코드를 생성하도록 구성될 수 있다.
한 실시예에 따르면, DC-AC 스캔 순서에서, 인코더 회로(206)는, 제1 블록의 현재 위치에서 양자화되고-변환된 잔차 레벨이 제2 세트의 양자화되고-변환된 잔차 레벨들의 일부일 수 있다는 것을 식별하도록 구성될 수 있다. 이러한 경우에, 인코더 회로(206)는 또한, 제1 엔트로피 코딩 방식, 예를 들어 Huffman 엔트로피 코딩 방식에 따라, 제2 세트의 양자화되고-변환된 잔차 레벨들의 중의 각각의 양자화되고-변환된 잔차 레벨에 대한 스킵 코드를 생성하도록 구성될 수 있다. 스킵 코드가 생성되어, 디코더 회로(208)가, 디코딩 단계에서, 각각의 양자화되고-변환된 잔차 레벨을 제1 세트의 양자화되고-변환된 잔차 레벨들 또는 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하는 것을 허용할 수 있다.
스킵 코드가 생성된 후, 인코더 회로(206)는, 제2 세트의 양자화되고-변환된 잔차 레벨들에 관한 제2 엔트로피 코딩 방식(예를 들어, exp-Golomb 엔트로피 코딩 방식)의 적용에 기초하여, 제2 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성될 수 있다. exp-Golomb 엔트로피 코딩 방식은, k차 exp-Golomb 엔트로피 코딩 방식일 수 있고, 여기서 k의 값은 이미지 블록의 내용에 기초하여 미리 정의되거나 맞게 적응될 수 있다. 각각의 양자화되고-변환된 잔차 레벨은, 제2 세트의 양자화되고-변환된 잔차 레벨들의 각각의 양자화되고-변환된 잔차 레벨에 대한 스킵 코드의 생성 후에 인코딩될 수 있다. 스킵 코드의 연속적인 생성과 이에 후속되는 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨에 대한 인코딩된 코드는, 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 대응할 수 있다.
일부 실시예들에서, 표 1에 도시된 바와 같이, 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 한 양자화되고-변환된 잔차 레벨에 대해, 스킵 코드는 (Huffman 엔트로피 코딩 방식의 적용이라고 언급되는) 미리-명시된 Huffman 테이블 세트에 기초하여 생성될 수 있다. 그 후, 인코더 회로(206)는 동일한 양자화되고-변환된 잔차 레벨에 대한 exp-Golomb 코드를 생성하도록 구성될 수 있다. 대안으로서, 스킵 코드는, 양자화되고-변환된 잔차 레벨이 임계 레벨 값(예를 들어, "5")을 초과한다는 것을 이미 나타내기 때문에, 인코더 회로(206)는, 양자화되고-변환된 잔차 레벨과 임계 레벨 값 사이의 절대 차이에 대한 exp-Golomb 코드를 생성하도록 구성될 수 있다. 따라서, 인코딩된 양자화되고-변환된 잔차 레벨들에 대한 스킵 코드가 디코딩 단계에서 검출될 때마다, 디코더 회로(208)는, exp-Golomb 코드를, 양자화되고-변환된 잔차 레벨의 실제 값과 임계 레벨 값 레벨 값 사이의 절대 차이로서 취급하도록 구성될 수 있다. 추가로, exp-Golomb 코드가 디코딩될 수 있으므로, 임계 레벨 값의 추가는 양자화되고-변환된 잔차 레벨의 실제 값을 다시 반환할 수 있다. 이러한 경우에, exp-Golomb 엔트로피 코딩 방식의 구현은, 특히 exp-Golomb 엔트로피 코딩 방식의 적용을 위한 인코더 회로(206)로의 입력이 (예를 들어, 전형적으로 "0-3" 범위의) 더 작은 입력 값들을 포함할 때, Huffman 엔트로피 코딩 방식에 비해 더 적은 수의 비트의 이용을 야기할 수 있다.
인코더 회로(206)는 또한, 제1 블록에서 추종되는 DC-AC 스캔 순서에 따라 제1 엔트로피 코딩 방식 및 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 의해 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있다. 일부 실시예들에서, 생성된 비트스트림은, 미디어 디바이스(102)에서의 나중의 단계에서 이용하기 위해, 온칩 메모리(204) 및 외부 메모리(110) 등의 메모리에 저장될 수 있다. 다른 실시예들에서, 생성된 비트스트림은, EBC 회로(108) 내부의 디코더 회로(208), 또는 외부 비디오 코덱이나 이미지 코덱 회로에 직접 전송될 수 있다. 인코더 회로(206) 및 구현된 엔트로피 코딩 방식의 상세사항은, 예를 들어, 도 3a, 도 3b, 도 4a 및 도 4b에서 더 상세하게 설명되었다.
도 3a 및 도 3b는, 본 개시내용의 한 실시예에 따른, 입력 이미지 블록의 양자화되고-변환된 잔차 레벨들의 블록에 대한 제1 히스토그램 분포 및 제2 히스토그램 분포를 집합적으로 도시한다. 도 3a 및 도 3b를 참조하면, 제1 히스토그램 분포(300A) 및 제2 히스토그램 분포(300B)가 도시되어 있다.
도 3a를 참조하면, 인코더 회로(206)는, 샘플 당 "4" 비트 등의, 샘플 당 특정한 비트들에서 제1 히스토그램 분포(300A)를 생성하기 위하여, (DC-AC 스캔 순서에 따라) 양자화되고-변환된 잔차 레벨들의 루마 블록(즉, 제1 블록)을 스캔하도록 구성될 수 있다. 제1 히스토그램 분포(300A)는, "5" 등의, 특정한 빈 크기의 (X 축을 따라 표현된) 상이한 히스토그램 빈들로의, 루마 블록(즉, 제1 블록)의 (Y 축을 따라 표현된) 양자화되고-변환된 잔차 레벨의 카운트를 제공할 수 있다. 도시된 바와 같이, 1D 행 DCT 변환 및 1D 열 DCT 변환의 적용 후, 양자화되고-변환된 잔차 레벨들의 최대 개수는 "0 내지 5"의 범위에 놓여 있고, 나머지 양자화되고-변환된 잔차 레벨들의 개수는 값 "5”의 위에 놓여 있다. 따라서, 히스토그램 분포에 기초하여, 인코더 회로(206)는 "5" 등의 임계 레벨 값을 설정하도록 구성될 수 있다. 루마 블록에서, "5" 이하의 모든 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식의 적용을 받을 수 있다. 나머지 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식의 적용을 받아, 임계 레벨 값 "5"를 초과하는 절대 값을 갖는 (디코더 회로(208) 또는 인코더 회로(206)에서의) 양자화되고-변환된 잔차 레벨의 존재를 고유하게 나타낼 수 있는 스킵 코드를 생성할 수 있다. 그 후, 대응하는 양자화되고-변환된 잔차 레벨에 대한 각각의 스킵 코드에 대해, 인코더 회로(206)는, 루마 블록에서의 대응하는 양자화되고-변환된 잔차 레벨에 대한 exp-Golomb 코드를 생성하도록 구성될 수 있다.
도 3b를 참조하면, 인코더 회로(206)는, 샘플 당 "4" 비트 등의, 샘플 당 특정한 비트들에서 제2 히스토그램 분포(300B)를 생성하기 위하여, (DC-AC 스캔 순서에 따라) 양자화되고-변환된 잔차 레벨들의 크로마 블록(즉, 제1 블록)을 스캔하도록 구성될 수 있다. 제2 히스토그램 분포(300B)는, "5" 등의, 특정한 빈 크기의 (X 축을 따라 표현된) 상이한 히스토그램 빈들로의, 크로마-U 또는 크로마-V 블록의 (Y 축을 따라 표현된) 양자화되고-변환된 잔차 레벨의 카운트를 제공할 수 있다. 도시된 바와 같이, 1D 행 DCT 변환 및 1D 열 DCT 변환의 적용 후, 양자화되고-변환된 잔차 레벨들의 최대 개수는 "0 내지 5"의 범위에 놓여 있고, 나머지 양자화되고-변환된 잔차 레벨들의 개수는 값 "5”의 위에 놓여 있다. 따라서, 히스토그램 분포에 기초하여, 인코더 회로(206)는 "5" 등의 임계 레벨 값을 설정하도록 구성될 수 있다. 크로마 블록에서, "5" 이하의 모든 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식의 적용을 받을 수 있다. 나머지 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식의 적용을 받아, 임계 레벨 값 "5"를 초과하는 절대 값을 갖는 (디코더 회로(208) 또는 인코더 회로(206)에서의) 양자화되고-변환된 잔차 레벨의 존재를 고유하게 나타낼 수 있는 스킵 코드를 생성할 수 있다. 그 후, 대응하는 양자화되고-변환된 잔차 레벨에 대한 각각의 스킵 코드에 대해, 인코더 회로(206)는, 루마 블록에서의 대응하는 양자화되고-변환된 잔차 레벨에 대한 exp-Golomb 코드를 생성하도록 구성될 수 있다.
도 4a는, 본 개시내용의 한 실시예에 따른, 도 2의 EBC 회로에 의한 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 예시적인 동작들을 도시하는 흐름도이다. 도 4a는, 도 1, 도 2, 도 3a 및 도 3b의 요소들과 연계하여 설명된다. 도 4a를 참조하면, 404에서 시작하는 흐름도(400A)가 도시되어 있다. 흐름도(400A)는 제1 블록(402)의 양자화되고-변환된 잔차 레벨들의 위치 의존적 엔트로피 코딩의 적용 흐름을 기술한다.
도시된 바와 같이, 제1 블록(402)은, 복수의 양자화되고-변환된 잔차 레벨, 즉, A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, 및 A44를 포함하는 "4x4" 블록일 수 있다. 여기서, A11은 DC 양자화되고-변환된 잔차 레벨이고 나머지 A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, 및 A44는 AC 양자화되고-변환된 잔차 레벨일 수 있다. 인코더 회로(206)는 DC-AC 스캔 순서로 제1 블록(402)을 스캔하도록 구성될 수 있고, 여기서 DC 양자화되고-변환된 잔차 레벨이 먼저 스캔되고, 후속해서 AC 양자화되고-변환된 잔차 레벨의 프로그레시브 행 방향 스캔이 이어진다.
404에서, 양자화되고-변환된 잔차 레벨 "A11"의 절대 값이 "5"이하인지가 결정될 수 있다. 여기서, "5"는, 도 3a 및 도 3b에 기술된 바와 같이, 임계 레벨 값일 수 있다. 인코더 회로(206)는, 양자화되고-변환된 잔차 레벨 "A11"의 절대 값이 "5" 이하인지를 결정하도록 구성될 수 있다. "A11"의 절대 값이 "5"보다 작거나 같은 경우, 제어는 406으로 간다. 그렇지 않으면, 제어는 408로 간다.
406에서, "A11"은 제1 세트의 양자화되고-변환된 잔차 레벨들로 분류될 수 있다. 인코더 회로(206)는, "A11"을 제1 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. "A11"의 제1 세트로의 분류는, "A11"의 절대 값이 임계 레벨 값 "5"보다 작거나 같다는 것을 나타낼 수 있다. 또한, 이러한 분류는, "A11"이 Huffman 엔트로피 코딩 방식에 의해 엔트로피 코딩될 수 있다는 것을 나타낼 수 있다.
408에서, "A11"은 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류될 수 있다. 인코더 회로(206)는, "A11"을 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. "A11"의 제2 세트로의 분류는, "A11"의 절대 값이 임계 레벨 값 "5"보다 크다는 것을 나타낼 수 있다. 또한, 이러한 분류는, "A11"이 제1 세트로부터 자신을 분리하고 exp-Golomb 엔트로피 코딩 방식에 의해 추가로 엔트로피 코딩되기 위해 스킵 코드를 필요로 할 수 있다는 것을 나타낼 수 있다.
410에서, "A11"이 루마 블록의 일부인지가 결정될 수 있다. 루마 블록은, RGB(Red-Green-Blue)(또는 BGR) 이미지 블록의 변환인 휘도 이미지 블록에 대응한다. 인코더 회로(206)는, "A11"에 대한 Huffman 코드를 생성하기에 적절한 Huffman 테이블을 선택하기 위해 "A11"이 루마 블록의 일부인지를 결정하도록 구성될 수 있다. "A11"이 루마 블록의 일부인 경우, 제어는 412로 간다. 그렇지 않으면, 제어는 414로 간다.
412에서, "A11"에 대한 Huffman 코드는 루마 블록에 대한 디폴트 Huffman 테이블에 기초하여 생성될 수 있다. 인코더 회로(206)는, 루마 블록에 대한 디폴트 Huffman 테이블에 기초하여, "A11"에 대한 Huffman 코드를 생성하도록 구성될 수 있다. 일부 실시예들에서, 디폴트 Huffman 테이블 대신에, 인코더 회로(206)는, 미리-명시된 Huffman 테이블 세트(예를 들어, 도 2의 테이블 1에 제공된 T0, T1, T2, T3 및 T4)로부터 한 Huffman 테이블을 선택하도록 구성될 수 있다. 특정한 Huffman 테이블의 선택은, 루마 블록(즉, 제1 블록)에서, "A11" 등의, 선택된 양자화되고-변환된 잔차 레벨의 위치에 의존할 수 있다. 또한, 일부 실시예들에서, 특정한 Huffman 테이블의 선택은, 루마 블록에서 추종되는 DC-AC 스캔 순서에 의존할 수 있다.
414에서, "A11"에 대한 Huffman 코드는, 크로마 블록(예를 들어, Cb/크로마-U 또는 Cr/크로마-V 블록)에 대한 디폴트 Huffman 테이블에 기초하여 생성될 수 있다. 인코더 회로(206)는, 크로마 블록에 대한 디폴트 Huffman 테이블에 기초하여, "A11"에 대한 Huffman 코드를 생성하도록 구성될 수 있다. 일부 실시예들에서, 디폴트 Huffman 테이블 대신에, 인코더 회로(206)는, 미리-명시된 Huffman 테이블 세트(예를 들어, 도 2의 테이블 1에 제공된 T0, T1, T2, T3 및 T4)로부터 한 Huffman 테이블을 선택하도록 구성될 수 있다. 특정한 Huffman 테이블의 선택은, 크로마 블록(즉, 제1 블록)에서, "A11" 등의, 선택된 양자화되고-변환된 잔차 레벨의 위치에 의존할 수 있다. 또한, 일부 실시예들에서, 특정한 Huffman 테이블의 선택은, 크로마 블록에서 추종되는 DC-AC 스캔 순서에 의존할 수 있다.
416에서, 미리-명시된 Huffman 테이블 세트로부터의 한 디폴트 Huffman 테이블에 기초하여 "A11"에 대한 스킵 코드가 생성될 수 있다. 인코더 회로(206)는 "A11"에 대한 스킵 코드를 생성하도록 구성될 수 있다. 스킵 코드는, 인코더 회로(206)가 "A11"에 대한 적용가능한 엔트로피 코딩 방식 및 "A11" 클래스 중 적어도 하나를 식별하도록 돕기 위해 생성될 수 있다. 또한, 디코더 회로(208)에 의해 비트스트림에서 검출될 때 스킵 코드는 후속 비트들이 임계 레벨 값 "5"보다 큰 절대 값을 갖는 양자화되고-변환된 잔차 레벨로부터 나오는 것으로 취급하고, 비트스트림에서 스킵 코드에 뒤따르는 후속 비트들에 대해, exp-Golomb 엔트로피 디코딩 방식 등의 엔트로피 디코딩 방식을 선택하도록 디코더 회로(208)를 트리거할 수 있다.
418에서, "A11"에 대해 exp-Golomb 코드가 생성될 수 있다. 인코더 회로(206)는, "A11"에 대한 스킵 코드가 생성된 후에 "A11"에 대한 exp-Golomb 코드를 생성하도록 구성될 수 있다. 소정 실시예들에서, exp-Golomb 코드는, "A11"과 임계 레벨 값 "5" 사이의 절대 차이에 대해 생성될 수 있다. 이러한 구현에서, exp-Golomb 코드는, "A11"의 전체 값이 아닌 차이만을 저장할 수 있고, 그 결과, 보통은 "A11"의 값을 저장하는데 요구되는 비트 수를 감소시킬 수 있다.
420에서, 제어는, "A12" 등의, 다음 차례의 양자화되고-변환된 잔차 레벨로 이동할 수 있다. 인코더 회로(206)는, "A12" 등의 제1 블록(402)에서의 다음 차례의 양자화되고-변환된 잔차 레벨로 제어를 이동시키도록 구성될 수 있다.
도 4b는, 본 개시내용의 한 실시예에 따른, 도 2의 EBC 회로에 의한 2D 이미지 블록에 관한 순차적 인코딩 방식의 적용에 의한 상이한 블록 출력들을 도시하는 도면이다. 도 4b는 도 1, 도 2, 도 3a, 도 3b, 및 도 4a의 요소들과 연계하여 설명된다. 도 4b를 참조하면, 양자화되고-변환된 잔차 레벨들의 상이한 블록들, 즉, 행 DCT 루마 블록, 열 DCT 루마 블록, 행 DCT 크로마 블록, 및 열 DCT 크로마 블록이 도시되어 있다. 행 DCT 루마 블록, 열 DCT 루마 블록, 행 DCT 크로마 블록, 및 열 DCT 크로마 블록에서, 상이한 지역들은, 대응하는 블록들을 인코딩하는데 이용될 미리-명시된 Huffman 테이블 세트(예를 들어, 표 1에 도시된 T0, T1, T2, T3 및 T4)로부터 한 Huffman 테이블을 명시하는 것으로 나타났다.
도 5a 및 도 5b는, 본 개시내용의 한 실시예에 따른, 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 예시적인 방법을 도시한 흐름도를 집합적으로 도시한다. 도 5는, 도1, 도 2, 도 3a, 도 3b, 도 4a, 및 도 4b의 요소들과 연계하여 설명된다. 도 5a 및 도 5b를 참조하면, 플로차트(500)가 도시되어 있다. 플로차트(500)는, 502에서 시작하여 504로 진행하는 동작들을 기술할 수 있다.
504에서, 입력 이미지는 복수의 이미지 블록으로 분할될 수 있다. 인코더 회로(206)는, 입력 이미지, 예를 들어 "1280x720" 입력 이미지를, 복수의 이미지 블록, 예를 들어 복수의 16x16 이미지 블록으로 분할하도록 구성될 수 있다.
506에서, 1D 행 DCT 변환 및 1D 열 DCT 변환, 후속되는 양자화, 및 잔차 예측의 순차적 적용이 복수의 이미지 블록에 관해 실행되어, 복수의 블록의 양자화되고-변환된 잔차 레벨을 생성할 수 있다. 인코더 회로(206)는, 복수의 이미지 블록에 관해, 1D 행 DCT 변환 및 1D 열 DCT 변환, 후속되는 양자화, 및 잔차 예측의 순차적 적용을 실행하여, 복수의 블록의 양자화되고-변환된 잔차 레벨을 생성하도록 구성될 수 있다.
508에서, 입력 이미지의 복수의 이미지 블록에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨이 저장될 수 있다. (온칩 메모리(204) 또는 외부 메모리(110) 등의) 메모리는, 입력 이미지의 복수의 이미지 블록에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨을 저장하도록 구성될 수 있다.
510에서, 제1 블록의 각각의 위치에서의 양자화되고-변환된 잔차 레벨이 임계 레벨 값보다 작거나 같은지가 결정될 수 있다. 인코더 회로(206)는, 제1 블록의 각각의 위치에서의 양자화되고-변환된 잔차 레벨이 임계 레벨 값보다 작거나 같은지를 결정하도록 구성될 수 있다. 제1 블록의 각각의 위치에서의 양자화되고-변환된 잔차 레벨이 임계 레벨 값보다 작거나 같은 경우, 제어는 508로 간다. 그렇지 않으면, 제어는 512로 간다.
512에서, 복수의 블록 중 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨 중 하나 이상이, 제1 세트의 양자화되고-변환된 잔차 레벨들로 분류될 수 있다. 인코더 회로(206)는, 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨 중 하나 이상을 제1 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다.
514에서, 제1 블록에서 DC-AC 스캔 순서로 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해 제1 엔트로피 코딩 방식이 적용될 수 있다. 인코더 회로(206)는, 제1 블록에서 DC-AC 스캔 순서로 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해 제1 엔트로피 코딩 방식을 적용하도록 구성될 수 있다.
516에서, 복수의 블록 중 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨 중 하나 이상이, 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류될 수 있다. 인코더 회로(206)는, 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨 중 하나 이상을 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다.
518에서, 제1 블록에서 DC-AC 스캔 순서로 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해, 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합이 적용될 수 있다. 인코더 회로(206)는, 제1 블록에서 DC-AC 스캔 순서로 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합을 적용하도록 구성될 수 있다.
520에서, 제1 블록에서 추종되는 DC-AC 스캔 순서에 따라, 제1 엔트로피 코딩 방식, 및 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 의해, 인코딩된 이미지 블록의 비트스트림이 생성될 수 있다. 인코더 회로(206)는, 제1 블록에서 추종되는 DC-AC 스캔 순서에 따라 제1 엔트로피 코딩 방식 및 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 의해 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성될 수 있다. 제어는 종료로 간다.
본 개시내용의 소정 실시예들은, (EBC 회로(108) 등의) 임베디드 코덱(EBC) 회로에서 발견될 수 있다. 본 개시내용의 다양한 실시예는, (온칩 메모리(204) 또는 외부 메모리(110) 등의) 메모리, 및 메모리에 통신가능하게 결합된 (인코더 회로(206) 등의) 인코더 회로를 포함할 수 있는 EBC 회로를 제공할 수 있다. 메모리는, 입력 이미지의 복수의 이미지 블록에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨을 저장하도록 구성될 수 있다. 인코더 회로는, 복수의 블록 중의 제1 블록 내의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하도록 구성될 수 있다. 이 분류는, 복수의 양자화되고-변환된 잔차 레벨 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값의 비교에 기초하여 이루어질 수 있다. 인코더 회로는 또한, 제1 블록에서 DC-AC 스캔 순서로, 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식을 적용하고, 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식 및 제2 엔트로피 코딩 방식의 조합을 적용하도록 구성될 수 있다. 일부 실시예들에서, 제1 블록에서의 DC-AC 스캔 순서는, DC 양자화되고-변환된 잔차 레벨들이 스캔되고, 후속해서 제1 블록에서의 AC 양자화되고-변환된 잔차 레벨이 뒤따를 수 있는 스캐닝 시퀀스이다. 인코딩된 이미지 블록의 비트스트림은, 제1 블록에서 추종되는 DC-AC 스캔 순서에 따라, 제1 엔트로피 코딩 방식, 및 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 적용에 의해, 인코더 회로에 의해 추가로 생성될 수 있다.
한 실시예에 따르면, 인코더 회로는, 복수의 이미지 블록에 관해 순차적 인코딩 방식을 실행하여 입력 이미지의 압축된 이미지 데이터의 비트스트림을 생성하도록 구성될 수 있다. 압축된 이미지 데이터의 비트스트림은 인코딩된 이미지 블록의 생성된 비트스트림을 포함할 수 있다. 압축된 이미지 데이터의 비트스트림은, 압축된 이미지 데이터의 비트스트림을 획득하기 위해 복수의 이미지 블록의 인코딩 단계에서 적용되는 순차적 인코딩 방식을 나타낼 수 있는 헤더 정보를 포함할 수 있다. 순차적 인코딩 방식은, 순방향 변환, 후속되는 양자화, 잔차 예측, 및 선택된 제1 엔트로피 코딩 방식 또는 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합의 순차적 적용을 포함할 수 있다. 인코더 회로는, 복수의 블록의 입력 이미지에 관한 순차적 인코딩 방식의 적용에 기초하여 복수의 블록의 양자화되고-변환된 잔차 레벨을 생성하도록 구성될 수 있다. 순방향 변환은, 복수의 블록의 입력 이미지들에 관한 1차원 행 직접 코사인 변환(1D 행 DCT) 변환 및 1D 열 DCT의 순차적 적용을 포함할 수 있다.
한 실시예에 따르면, 복수의 양자화되고-변환된 잔차 레벨 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값과의 비교는, 각각의 양자화되고-변환된 잔차 레벨의 절대 값이 임계 레벨 값보다 작거나 같은지의 체크에 대응할 수 있다. 일부 경우에, 제1 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 임계 레벨 값보다 작거나 같다. 다른 경우에, 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 임계 레벨 값보다 크다.
소정 실시예에서, 제1 블록은, 대응하는 이미지 블록이 휘도 이미지 블록일 때 루마 블록이고, 제1 블록은, 대응하는 이미지 블록이 크로마 이미지 블록일 때 크로마-U 또는 크로마-V 블록일 수 있다.
한 실시예에 따르면, 제1 엔트로피 코딩 방식은 Huffman 엔트로피 코딩 방식일 수 있고 제2 엔트로피 코딩 방식은 지수-Golomb 엔트로피 코딩 방식일 수 있다. 인코더 회로는, 한 세트의 미리-명시된 Huffman 테이블에 기초하여 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성될 수 있다. 제1 세트의 양자화되고-변환된 잔차 레벨들은 Huffman 엔트로피 코딩 방식에 따라 엔트로피 코딩될 수 있다. 미리-명시된 Huffman 테이블 세트는, 제1 세트의 디폴트 Huffman 테이블들 및 제2 세트의 위치-특유의 Huffman 테이블들을 포함할 수 있다. 한 실시예에 따르면, 인코더 회로는 또한, 제1 블록에서의 DC-AC 스캔 순서에 따라, 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하기 위해 제1 세트의 디폴트 Huffman 테이블로부터 한 디폴트 Huffman 테이블을 선택하도록 구성될 수 있다. 또 다른 실시예에 따르면, 인코더 회로는 또한, 제1 블록에서의 각각의 양자화되고-변환된 잔차 레벨의 특정한 위치에 기초하여, 제2 세트의 위치-특유의 Huffman 테이블들로부터 한 위치-특유의 Huffman 테이블을 선택하도록 구성될 수 있다. 위치-특유의 Huffman 테이블은, 제1 블록에서의 DC-AC 스캔 순서에 따라, 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 선택될 수 있다.
한 실시예에 따르면, 인코더 회로는 또한, 제1 엔트로피 코딩 방식에 따라, 제2 세트의 양자화되고-변환된 잔차 레벨들의 중의 각각의 양자화되고-변환된 잔차 레벨에 대한 스킵 코드를 생성하도록 구성될 수 있다. 스킵 코드는 미리-명시된 Huffman 테이블 세트에 기초하여 생성될 수 있다. 스킵 코드가 생성되어, 디코더 회로가, 각각의 양자화되고-변환된 잔차 레벨을 제1 세트의 양자화되고-변환된 잔차 레벨들 또는 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하는 것을 허용할 수 있다. 따라서, 인코더 회로는 또한, 제2 세트의 양자화되고-변환된 잔차 레벨들에 관한 제2 엔트로피 코딩 방식의 적용에 기초하여, 제2 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성될 수 있다. 각각의 양자화되고-변환된 잔차 레벨은, 제2 세트의 양자화되고-변환된 잔차 레벨들의 각각의 양자화되고-변환된 잔차 레벨에 대한 스킵 코드의 생성 후에 인코딩될 수 있다.
본 개시내용은, 하드웨어, 또는 하드웨어와 소프트웨어의 조합으로 실현될 수 있다. 본 개시내용은, 적어도 하나의 컴퓨터 시스템에서 중앙집중형 방식으로, 또는 상이한 요소들이 수 개의 상호접속된 컴퓨터 시스템들에 걸쳐 분산되어 있을 수 있는 분산형 방식으로 실현될 수 있다. 여기서 설명된 방법을 실행하도록 맞게 적응된 컴퓨터 시스템 또는 다른 장치가 적절할 수도 있다. 하드웨어 및 소프트웨어의 조합은, 로딩되고 실행될 때, 여기서 설명된 방법을 수행하도록 컴퓨터 시스템을 제어할 수 있는 컴퓨터 프로그램을 갖춘 범용 컴퓨터 시스템일 수 있다. 본 개시내용은 다른 기능들도 역시 수행하는 집적 회로의 일부를 포함하는 하드웨어로 실현될 수도 있다.
본 개시내용은 또한, 여기서 설명된 방법들의 구현을 가능하게 하고 컴퓨터 시스템에 로딩될 때 이들 방법을 실행할 수 있는 모든 피쳐들을 포함하는 컴퓨터 프로그램 제품에 임베딩될 수도 있다. 컴퓨터 프로그램은, 본 정황에서, 정보 처리 능력을 가진 시스템으로 하여금, 특정 기능을, 곧바로, 또는 a) 또 다른 언어, 코드 또는 표기로의 변환; b) 상이한 자료 형태로의 재생산 중 어느 하나 또는 양쪽 모두 이후에, 수행하게 하도록 의도된 한 세트의 명령어로 이루어진, 임의의 언어로 된, 임의의 표현, 코드 또는 표기를 의미한다.
본 개시내용이 소정 실시예들을 참조하여 기술되었지만, 본 기술분야의 통상의 기술자라면, 본 개시내용의 범위로부터 벗어나지 않고 다양한 변경이 이루어질 수 있고 균등물로 대체될 수 있다는 것을 이해할 것이다. 또한, 특정한 상황 또는 재료를 그 범위로부터 벗어나지 않고 본 개시내용의 교시에 맞게 적응시키도록 많은 수정이 이루어질 수 있다. 따라서, 본 개시내용은 개시된 특정 실시예로 제한되지 않으며, 본 개시내용은 첨부된 청구항들의 범위 내에 속하는 모든 실시예를 포함하는 것으로 의도된다.

Claims (20)

  1. 임베디드 코덱(EBC; embedded codec) 회로로서,
    복수의 이미지 블록의 입력 이미지에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨을 저장하도록 구성된 메모리; 및
    인코더 회로를 포함하고,
    상기 인코더 회로는 :
    상기 복수의 양자화되고-변환된 잔차 레벨 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값과의 비교에 기초하여, 상기 복수의 블록 중의 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하고;
    상기 제1 블록에서 직류-교류(DC-AC; direct current-to-alternating current) 스캔 순서로, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식을 적용하고, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 상기 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합을 적용하며;
    상기 제1 블록에서 추종되는 상기 DC-AC 스캔 순서에 따라, 상기 제1 엔트로피 코딩 방식, 및 상기 제1 엔트로피 코딩 방식과 상기 제2 엔트로피 코딩 방식의 조합의 적용에 의해, 인코딩된 이미지 블록의 비트스트림을 생성하도록 구성된, EBC 회로.
  2. 제1항에 있어서, 상기 인코더 회로는 또한, 상기 복수의 이미지 블록에 관해 순차적 인코딩 방식을 실행하여, 상기 입력 이미지의 압축된 이미지 데이터의 비트스트림을 생성하도록 구성되고, 상기 압축된 이미지 데이터의 비트스트림은 인코딩된 이미지 블록의 상기 생성된 비트스트림을 포함하는, EBC 회로.
  3. 제2항에 있어서, 상기 압축된 이미지 데이터의 비트스트림은, 상기 압축된 이미지 데이터의 비트스트림을 획득하기 위해 상기 복수의 이미지 블록의 인코딩 단계에서 적용되는 상기 순차적 인코딩 방식을 나타내는 헤더 정보를 포함하고, 상기 순차적 인코딩 방식은, 순방향 변환, 후속되는 양자화, 잔차 예측, 및 상기 선택된 제1 엔트로피 코딩 방식 또는 상기 제1 엔트로피 코딩 방식과 상기 제2 엔트로피 코딩 방식의 조합의 순차적 적용을 포함하는, EBC 회로.
  4. 제3항에 있어서, 상기 인코더 회로는 또한, 상기 복수의 블록의 입력 이미지에 관한 상기 순차적 인코딩 방식의 적용에 기초하여 상기 복수의 블록의 양자화되고-변환된 잔차 레벨을 생성하도록 구성된, EBC 회로.
  5. 제3항에 있어서, 상기 순방향 변환은, 상기 복수의 블록의 입력 이미지에 관한 1차원 행 직접 코사인 변환(1D 행 DCT) 변환 및 1D 열 DCT의 순차적 적용을 포함하는, EBC 회로.
  6. 제1항에 있어서, 상기 비교는 각각의 양자화되고-변환된 잔차 레벨의 절대 값이 상기 임계 레벨 값보다 작거나 같은지에 대한 체크에 대응하는, EBC 회로.
  7. 제1항에 있어서, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 상기 임계 레벨 값보다 작거나 같은, EBC 회로.
  8. 제1항에 있어서, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨의 절대 값은 상기 임계 레벨 값보다 큰, EBC 회로.
  9. 제1항에 있어서, 상기 제1 블록은 대응하는 이미지 블록이 휘도 이미지 블록일 때 루마 블록인, EBC 회로.
  10. 제1항에 있어서, 상기 제1 블록은 대응하는 이미지 블록이 크로마 이미지 블록일 때 크로마-U 또는 크로마-V 블록인, EBC 회로.
  11. 제1항에 있어서, 상기 제1 엔트로피 코딩 방식은 Huffman 엔트로피 코딩 방식이고, 상기 제2 엔트로피 코딩 방식은 지수-Golomb 엔트로피 코딩 방식인, EBC 회로.
  12. 제11항에 있어서, 상기 인코더 회로는 또한, 미리-명시된 Huffman 테이블 세트에 기초하여 상기 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성되고, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들은 상기 Huffman 엔트로피 코딩 방식에 따라 엔트로피 코딩되는, EBC 회로.
  13. 제12항에 있어서, 상기 미리-명시된 Huffman 테이블 세트는, 제1 세트의 디폴트 Huffman 테이블들 및 제2 세트의 위치-특유의 Huffman 테이블들을 포함하는, EBC 회로.
  14. 제13항에 있어서, 상기 인코더 회로는 또한, 상기 제1 블록에서의 상기 DC-AC 스캔 순서에 따라, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하기 위해 상기 제1 세트의 디폴트 Huffman 테이블들로부터 한 디폴트 Huffman 테이블을 선택하도록 구성된, EBC 회로.
  15. 제13항에 있어서, 상기 인코더 회로는 또한, 상기 제1 블록에서의 각각의 양자화되고-변환된 잔차 레벨의 특정한 위치에 기초하여, 상기 제2 세트의 위치-특유의 Huffman 테이블들로부터 한 위치-특유의 Huffman 테이블을 선택하도록 구성되고, 상기 위치-특유의 Huffman 테이블은, 상기 제1 블록에서의 상기 DC-AC 스캔 순서에 따라, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하기 위해 선택되는, EBC 회로.
  16. 제1항에 있어서, 상기 인코더 회로는 또한, 상기 제1 엔트로피 코딩 방식에 따라, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨에 대한 스킵 코드를 생성하도록 구성되고, 상기 스킵 코드는 미리-명시된 Huffman 테이블 세트에 기초하여 생성되는, EBC 회로.
  17. 제16항에 있어서, 상기 스킵 코드가 생성되어, 디코더 회로가, 각각의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 또는 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하는 것을 허용하는, EBC 회로.
  18. 제16항에 있어서, 상기 인코더 회로는 또한, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들에 관한 상기 제2 엔트로피 코딩 방식의 적용에 기초하여 상기 제2 세트의 양자화되고-변환된 잔차 레벨들을 인코딩하도록 구성되고, 각각의 양자화되고-변환된 잔차 레벨은, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들 중의 각각의 양자화되고-변환된 잔차 레벨에 대한 상기 스킵 코드의 생성 후에 인코딩되는, EBC 회로.
  19. 제1항에 있어서, 상기 제1 블록에서의 상기 DC-AC 스캔 순서는, DC 양자화되고-변환된 잔차 레벨들이 스캔되고, 후속해서 상기 제1 블록에서의 AC 양자화되고-변환된 잔차 레벨이 뒤따르는 스캐닝 시퀀스인, EBC 회로.
  20. 방법으로서,
    메모리 및 인코더 회로를 포함하는 임베디드 코덱(EBC) 회로에서 :
    상기 메모리에 의해, 복수의 이미지 블록의 입력 이미지에 대한 복수의 블록의 양자화되고-변환된 잔차 레벨을 저장하는 단계;
    상기 인코더 회로에 의해, 상기 복수의 양자화되고-변환된 잔차 레벨 중의 각각의 양자화되고-변환된 잔차 레벨과 임계 레벨 값과의 비교에 기초하여, 상기 복수의 블록 중의 제1 블록에서의 복수의 양자화되고-변환된 잔차 레벨을, 제1 세트의 양자화되고-변환된 잔차 레벨들 및 제2 세트의 양자화되고-변환된 잔차 레벨들로 분류하는 단계;
    상기 인코더 회로에 의해, 상기 제1 블록에서 DC-AC 스캔 순서로, 상기 제1 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 제1 엔트로피 코딩 방식을 적용하고, 상기 제2 세트의 양자화되고-변환된 잔차 레벨들에 관해서는 상기 제1 엔트로피 코딩 방식과 제2 엔트로피 코딩 방식의 조합을 적용하는 단계; 및
    상기 인코더 회로에 의해, 상기 제1 블록에서 추종되는 상기 DC-AC 스캔 순서에 따라, 상기 제1 엔트로피 코딩 방식, 및 상기 제1 엔트로피 코딩 방식과 상기 제2 엔트로피 코딩 방식의 조합의 선택적 적용에 의해, 인코딩된 이미지 블록의 비트스트림을 생성하는 단계
    를 포함하는 방법.
KR1020190131210A 2019-02-06 2019-10-22 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(ebc) 회로 KR102267215B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/268,554 US10728555B1 (en) 2019-02-06 2019-02-06 Embedded codec (EBC) circuitry for position dependent entropy coding of residual level data
US16/268,554 2019-02-06

Publications (2)

Publication Number Publication Date
KR20200096862A true KR20200096862A (ko) 2020-08-14
KR102267215B1 KR102267215B1 (ko) 2021-06-22

Family

ID=71783431

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190131210A KR102267215B1 (ko) 2019-02-06 2019-10-22 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(ebc) 회로

Country Status (4)

Country Link
US (1) US10728555B1 (ko)
JP (1) JP7020466B2 (ko)
KR (1) KR102267215B1 (ko)
CN (1) CN111541895B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116634168B (zh) * 2023-07-26 2023-10-24 上海方诚光电科技有限公司 一种基于工业相机的图像无损处理方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050162531A1 (en) * 1999-06-30 2005-07-28 Logitech Europe S.A. Video camera with major functions implemented in host software
US20060092053A1 (en) * 2004-10-29 2006-05-04 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
KR100914160B1 (ko) * 2001-07-02 2009-08-28 퀄컴 인코포레이티드 골롬-라이스를 이용하는 무손실의 프레임내 인코딩
KR100925968B1 (ko) * 2001-12-17 2009-11-09 마이크로소프트 코포레이션 컴퓨터 시스템에서 비디오 시퀀스의 복수의 비디오 화상을 처리하는 방법, 시스템 및 컴퓨터 판독가능 매체
KR20170016849A (ko) * 2014-06-09 2017-02-14 퀄컴 인코포레이티드 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
US20180234694A1 (en) * 2017-02-15 2018-08-16 Sony Corporation Variable length coding of header data for image compression

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4368575B2 (ja) 2002-04-19 2009-11-18 パナソニック株式会社 可変長復号化方法、可変長復号化装置およびプログラム
DE50305419D1 (de) 2002-05-02 2006-11-30 Fraunhofer Ges Forschung Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
JP2006333500A (ja) 2006-07-10 2006-12-07 Mitsubishi Electric Corp 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法
KR101539240B1 (ko) 2007-06-14 2015-07-30 삼성전자주식회사 영상 데이터의 엔트로피 부호화, 복호화 방법 및 장치
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
WO2011013192A1 (ja) 2009-07-27 2011-02-03 株式会社東芝 画像符号化方法および画像復号方法
CN102714730B (zh) * 2010-01-15 2016-05-04 汤姆森特许公司 使用压缩感测的视频编解码
KR20160093105A (ko) * 2010-04-23 2016-08-05 엠앤케이홀딩스 주식회사 영상 부호화 장치 및 방법
CN101895756B (zh) * 2010-07-15 2012-10-31 北京大学 视频图像块的编码、解码、重构方法及系统
US9641846B2 (en) * 2010-10-22 2017-05-02 Qualcomm Incorporated Adaptive scanning of transform coefficients for video coding
CN107317586B (zh) * 2011-01-14 2020-11-06 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
US20130003859A1 (en) * 2011-06-30 2013-01-03 Qualcomm Incorporated Transition between run and level coding modes
EP2611156A1 (en) 2011-12-30 2013-07-03 Samsung Electronics Co., Ltd Apparatus and method for encoding depth image by skipping discrete cosine transform (dct), and apparatus and method for decoding depth image by skipping dct
JP2014011481A (ja) * 2012-06-27 2014-01-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US9930348B2 (en) 2014-03-14 2018-03-27 Qualcomm Incorporated Coefficient level coding in a video coding process
US9538044B2 (en) 2015-03-20 2017-01-03 Kyocera Document Solutions Inc. Apparatus and method for data decoding
CN108028942B (zh) * 2015-06-04 2020-06-26 清华大学 像素预测方法、编码方法、解码方法及其装置、存储介质
WO2017151877A1 (en) * 2016-03-02 2017-09-08 MatrixView, Inc. Apparatus and method to improve image or video quality or encoding performance by enhancing discrete cosine transform coefficients

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050162531A1 (en) * 1999-06-30 2005-07-28 Logitech Europe S.A. Video camera with major functions implemented in host software
KR100914160B1 (ko) * 2001-07-02 2009-08-28 퀄컴 인코포레이티드 골롬-라이스를 이용하는 무손실의 프레임내 인코딩
KR100925968B1 (ko) * 2001-12-17 2009-11-09 마이크로소프트 코포레이션 컴퓨터 시스템에서 비디오 시퀀스의 복수의 비디오 화상을 처리하는 방법, 시스템 및 컴퓨터 판독가능 매체
US20060092053A1 (en) * 2004-10-29 2006-05-04 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
KR20170016849A (ko) * 2014-06-09 2017-02-14 퀄컴 인코포레이티드 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
US20180234694A1 (en) * 2017-02-15 2018-08-16 Sony Corporation Variable length coding of header data for image compression

Also Published As

Publication number Publication date
JP7020466B2 (ja) 2022-02-16
KR102267215B1 (ko) 2021-06-22
CN111541895A (zh) 2020-08-14
US20200252613A1 (en) 2020-08-06
CN111541895B (zh) 2022-04-22
US10728555B1 (en) 2020-07-28
JP2020127188A (ja) 2020-08-20

Similar Documents

Publication Publication Date Title
CN105453570B (zh) 用于下一代视频的对分区数据的内容自适应熵编码
JP2022523925A (ja) 映像コンテンツを処理するための方法及びシステム
EP3386199B1 (en) Lossless compression method and system appled to video hard decoding
US10645410B2 (en) Video decoding apparatus
US10645386B1 (en) Embedded codec circuitry for multiple reconstruction points based quantization
KR102267792B1 (ko) 이미지 블록에 관한 픽셀-도메인 전처리 동작들에 기초한 이미지 블록 코딩
CN115836525A (zh) 用于从多个交叉分量进行预测的方法和系统
US10728557B2 (en) Embedded codec circuitry for sub-block based entropy coding of quantized-transformed residual levels
KR102267215B1 (ko) 잔차 레벨 데이터의 위치 의존적 엔트로피 코딩을 위한 임베디드 코덱(ebc) 회로
US10798419B2 (en) Embedded codec circuitry for sub-block based encoding of quantized prediction residual levels
WO2023048070A1 (en) Systems and methods for compression of feature data using joint coding in coding of multi-dimensional data
WO2023197032A1 (en) Method, apparatus and system for encoding and decoding a tensor
KR102267322B1 (ko) 정교화 비트들의 서브블록 기반의 할당을 위한 임베디드 코덱 회로
WO2023027873A1 (en) Multi-level latent fusion in neural networks for image and video coding
JP2020127188A5 (ko)
US10652543B2 (en) Embedded codec circuitry and method for frequency-dependent coding of transform coefficients
WO2023276809A1 (en) Systems and methods for compressing feature data in coding of multi-dimensional data
WO2023037977A1 (en) Systems and methods for reducing noise in reconstructed feature data in coding of multi-dimensional data
KR102636100B1 (ko) 데드존에 기초하여 양자화를 수행하는 인코더 및 이를 포함하는 비디오 처리 시스템
KR20240030922A (ko) Mpeg-vcm에 기반하여 인공신경망을 분산 처리하는 npu 및 방법
JP2022548685A (ja) 画像データの符号化及び復号化
CN117981317A (zh) 用于在多维数据的编码中使用联合编码来压缩特征数据的系统和方法

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