KR101461209B1 - 2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치 - Google Patents
2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR101461209B1 KR101461209B1 KR1020137032384A KR20137032384A KR101461209B1 KR 101461209 B1 KR101461209 B1 KR 101461209B1 KR 1020137032384 A KR1020137032384 A KR 1020137032384A KR 20137032384 A KR20137032384 A KR 20137032384A KR 101461209 B1 KR101461209 B1 KR 101461209B1
- Authority
- KR
- South Korea
- Prior art keywords
- image
- input image
- entropy
- lower resolution
- pixel
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
하위 해상도 이미지들을 이용하는 이미지 압축 및 압축 해제를 위한 방법들, 시스템들 및 제조물들이 개시된다. 이미지 압축은 입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하는 단계, 복수의 엔트로피 코드 세트를 포함하는 제1 하위 해상도 이미지를 포함하는 하나 이상의 하위 해상도 이미지를 생성하는 단계, 엔트로피 코드를 포함하는 하나 이상의 압축 파라미터를 제어하기 위해, 생성된 하나 이상의 하위 해상도 이미지를 이용하여 입력 이미지를 인코딩하는 단계, 및 인코딩된 입력 이미지 및 생성된 하나 이상의 하위 해상도 이미지를 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계를 포함한다. 이미지 압축 해제는 인코딩된 압축된 입력 이미지 및 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지에 액세스하기 위해 이미지 파일을 분해하는 단계, 및 복수의 압축 파라미터 각각을 제어하기 위해 각각의 하위 해상도 이미지를 이용하여 인코딩된 압축된 입력 이미지를 디코딩하는 단계를 포함한다.
Description
본 발명은 일반적으로 이미지 압축에 관한 것이다.
디지털 카메라들, 카메라 장착 이동 전화들 및 핸드헬드 장치들, 및 다른 편리한 이미지 캡처 장치들의 광범위한 유효성은 많은 수의 이미지들이 다양한 웹 기반 이미지 애플리케이션들 상에 정기적으로 업로드되게 하였다. 이들과 같은 애플리케이션들은 효율, 품질 및 유연성을 개선한 이미지 압축 기술들에 대한 계속적인 요구를 강조한다.
휴대용 네트워크 그래픽(PNG:Portable Network Graphics) 포맷은 인터넷과 같은 네트워크들 상에서 이미지들을 저장 및 전송하기 위해 자주 사용되는 포맷이다. 그래픽 교환 포맷(GIF:Graphics Interchange Format), 태그 이미지 파일 포맷(TIFF:Tagged Image File Format) 및 공동 사진 전문가 그룹(JPEG:Joint Photographic Experts Group)과 같은 다른 이미지 포맷들도 인터넷 환경에서 자주 사용된다. PNG 및 GIF는 무손실 압축 방법들로 간주되는 반면, JPEG는 유손실(lossy) 압축 방법이다. TIFF는 때때로 유손실 또는 무손실 압축을 이용할 수 있다. 이러한 기술들 각각은 이미지 압축에 있어서 많은 이익을 제공한다. 그러나, 이들 기술 각각은 효율, 품질 또는 유연성에서 단점을 갖는다.
따라서, 광범위하게 채용 및 지원될 수 있고, 현재 이용 가능한 기술들보다 향상된 효율 및 품질을 제공하는 이미지 압축 기술이 요구된다.
하위 해상도 이미지들(sub-resolution images)을 이용하는 이미지 압축 및 압축 해제(decompression)를 위한 방법들, 시스템들 및 제조물들(articles of manufacture)이 개시된다. 이미지 압축을 위해, 이들은 입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하는 단계, 복수의 엔트로피 코드 세트를 포함하는 제1 하위 해상도 이미지를 포함하는 하나 이상의 하위 해상도 이미지를 생성하는 단계, 엔트로피 코드를 포함하는 하나 이상의 압축 파라미터를 제어하기 위해, 생성된 하나 이상의 하위 해상도 이미지를 이용하여 입력 이미지를 인코딩하는 단계, 및 인코딩된 입력 이미지 및 생성된 하나 이상의 하위 해상도 이미지를 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계를 포함한다.
이미지 압축을 위한 다른 실시예는 입력 이미지로부터 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지를 생성하는 단계, 복수의 압축 파라미터 각각을 제어하기 위해 각각의 하위 해상도 이미지를 이용하여 입력 이미지를 인코딩하는 단계, 및 인코딩된 입력 이미지 및 생성된 하위 해상도 이미지들을 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계를 포함한다.
이미지 압축 해제를 위한 실시예들은 인코딩된 압축된 입력 이미지 및 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지에 액세스하기 위해 이미지 파일을 분해하는 단계, 인코딩된 압축된 입력 이미지를 각각의 하위 해상도 이미지를 이용하여 디코딩하여, 복수의 압축 파라미터 각각을 제어하는 단계, 및 디코딩된 입력 이미지를 출력하는 단계를 포함한다.
다양한 실시예들의 추가적인 특징들 및 장점들은 물론, 구조 및 동작이 첨부 도면들을 참조하여 아래에 상세히 설명된다. 본 발명은 본 명세서에서 설명되는 특정 실시예들로 한정되지 않는다는 점에 유의한다. 그러한 실시예들은 본 명세서에서 예시의 목적으로만 제공된다. 관련 분야(들)의 기술자들에게는 본 명세서에 포함된 가르침들에 기초하는 추가적인 실시예들이 명백할 것이다.
본 발명의 실시예들이 참조되며, 그 예들이 첨부 도면들에 도시될 수 있다. 이들 도면은 한정이 아니라 예시적인 것을 의도한다. 본 발명은 일반적으로 이들 실시예와 관련하여 설명되지만, 이들 실시예는 범위를 한정하지 않는다는 것을 이해해야 한다.
도 1은 일 실시예에 따른 이미지 압축 및 인코딩 기술을 나타내는 흐름도이다.
도 2는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 전처리 기술을 나타내는 흐름도이다.
도 3은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 공간 예측 기술을 나타내는 흐름도이다.
도 4는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 컬러 변환 기술(color transformation technique)을 나타내는 흐름도이다.
도 5는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 초기 픽셀 기반 압축 기술을 나타내는 흐름도이다.
도 6은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 엔트로피 코드 결정 기술을 나타내는 흐름도이다.
도 7은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 범용 이미지 인코딩 기술을 나타내는 흐름도이다.
도 8은 일 실시예에 따른 인코더의 블록도이다.
도 9는 일 실시예에 따른, 도 8의 인코더와 관련될 수 있는 데이터를 나타내는 블록도이다.
도 10은 일 실시예에 따른 압축된 이미지 파일 포맷의 블록도이다.
도 11은 일 실시예에 따른 이미지 압축 해제 및 디코딩 기술을 나타내는 흐름도이다.
도 12는 일 실시예에 따른 디코더의 블록도이다.
도 13은 일 실시예에 따른 컴퓨터 시스템이다.
도 1은 일 실시예에 따른 이미지 압축 및 인코딩 기술을 나타내는 흐름도이다.
도 2는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 전처리 기술을 나타내는 흐름도이다.
도 3은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 공간 예측 기술을 나타내는 흐름도이다.
도 4는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 컬러 변환 기술(color transformation technique)을 나타내는 흐름도이다.
도 5는 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 초기 픽셀 기반 압축 기술을 나타내는 흐름도이다.
도 6은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 엔트로피 코드 결정 기술을 나타내는 흐름도이다.
도 7은 일 실시예에 따른, 도 1의 이미지 압축 및 인코딩 기술에서 사용되는 범용 이미지 인코딩 기술을 나타내는 흐름도이다.
도 8은 일 실시예에 따른 인코더의 블록도이다.
도 9는 일 실시예에 따른, 도 8의 인코더와 관련될 수 있는 데이터를 나타내는 블록도이다.
도 10은 일 실시예에 따른 압축된 이미지 파일 포맷의 블록도이다.
도 11은 일 실시예에 따른 이미지 압축 해제 및 디코딩 기술을 나타내는 흐름도이다.
도 12는 일 실시예에 따른 디코더의 블록도이다.
도 13은 일 실시예에 따른 컴퓨터 시스템이다.
본 명세서에서는 특정 응용들을 위한 예시적인 실시예들이 설명되지만, 실시예들은 그에 한정되지 않는다는 것을 이해해야 한다. 본 명세서에서의 가르침들의 사상 및 범위, 및 실시예들이 상당히 유용할 추가적인 분야들 내에서 다른 실시예들이 가능하며, 실시예들에 대한 변경들이 이루어질 수 있다. 게다가, 하나의 실시예와 관련하여 특정 특징, 구조 또는 특성이 설명될 때, 명시적으로 설명되는지의 여부에 관계없이 그러한 특징, 구조 또는 특성을 다른 실시예들과 관련하여 실행하는 것은 관련 분야의 기술자의 지식 내에 있다고 할 것이다.
본 발명은 일반적으로 이미지들의 압축을 위한 방법들, 시스템들 및 제조물들에 관련된다. 본 명세서에 구체적으로 개시되는 것들을 포함하는 실시예들은 무손실 또는 거의 무손실 이미지 압축을 달성하면서도 처리 효율, 이미지 품질 및 저장에 있어서 상당한 장점들을 달성한다. 현재 인기 있는 PNG 이미지 압축과 실시예들 사이의 일부 차이들이 그 예가 된다.
실시예들은 유사한 통계치를 갖는 입력 이미지의 영역들에 대한 엔트로피 코드들의 개별 세트들을 생성한다. 각각의 생성된 엔트로피 코드는 하위 해상도 이미지(즉, 더 낮은 해상도를 가지며, 따라서 입력 이미지보다 작은 이미지들)에 저장되며, 이어서 이는 입력 이미지 내의 픽셀들의 엔트로피 인코딩을 제어하는 데 사용된다. 이를 행함으로써, 이미지의 이차원 공간에서 근접하는 픽셀들의 엔트로피 특성들이 실시예들에서 유리하게 이용된다. 이와 달리, PNG는 선형 메모리의 블록들에 대한 엔트로피를 인코딩하는데, 즉 이미지가 바이트 스트림으로 변환된 후에 엔트로피 코딩된다. 입력 이미지들 내에 이차원 근접하여 존재하는 엔트로피 특성들은 PNG에서 효과적으로 이용되지 못하는데, 이것은 선형 바이트 스트림이 엔트로피 인코딩되기 때문이다. 더욱이, 하위 해상도 이미지를 이용하여 상이한 영역들에 대한 엔트로피 코드들을 지정함으로써, 실시예들은 디코딩 프로세스 동안 엔트로피 코드들을 더 비용 효과적으로 변경할 수 있다.
또한 공간 예측과 관련하여, 이미지 내에서 이차원 근접하여 발생하는 유사성들이 실시예들에서 각각의 직사각 블록에 대한 공간 예측기를 지정하기 위해 효과적으로 사용된다. 공간 예측기들은 하위 해상도 이미지에 저장되며, 이어서 이는 공간 예측을 제어하는 데 사용된다. 이와 달리, PNG는 국지적 영역들의 통계적 유사성의 특별한 고려 없이 입력 이미지의 각각의 행에 대한 공간 예측기를 지정한다.
실시예들은 크로스-컬러 컴포넌트 예측기를 이용하여 공간 예측 에러를 예측함으로써 상이한 컬러 채널들 간의 상관성을 레버리지한다. 실시예들은 입력 이미지 내의 동일 컬러의 컴포넌트들 간의 상호 관계(inter-relationships)를 유리하게 이용하기 위해 개별 엔트로피 코드를 이용하여 각각의 컬러 채널을 인코딩한다. PNG는 모든 컬러 채널들에 대해 공통 엔트로피 코드를 이용한다.
PNG는 컬러들의 정적 팔레트를 정의하는 반면, 실시예들은 입력 이미지의 영역들에 대한 국지적으로 정의된 컬러 팔레트들(color palettes)을 도입한다. 팔레트는 해싱 기술을 이용하여 동적으로 생성되며, 이는 컬러 특성들을 개선할 수 있다.
더욱이, 실시예들은 하위 해상도 이미지들을 이용하여 이미지 압축 및 엔트로피 인코딩의 다양한 양태들을 제어한다. 하위 해상도 이미지들은 입력 이미지를 저장하는 데 사용된 것들과 동일한 기술들을 이용하여 저장될 수 있다.
도 1-7은 압축 방법의 실시예들의 다양한 양태들을 도시한다. 도 8-10 및 13은 실시예들에 따른 시스템들을 도시한다.
도 1은 일 실시예에 따른 이미지 압축 및 엔트로피 인코딩을 위한 방법(100)을 도시한다. 이 방법은 예를 들어 도 8-10 및 13과 관련하여 후술하는 바와 같은 시스템을 이용하여 구현될 수 있다. 방법(100)은 도시된 순서대로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수 있다.
단계 102에서, 입력 이미지에 대해 전처리가 수행된다. 입력 이미지는 디지털화된 사진 또는 다른 디지털 이미지일 수 있다. 입력 이미지는 메모리 내에 픽셀들의 논리적 직사각 어레이로서 표현될 수 있다. 픽셀은 하나 이상의 바이트일 수 있다. 일 실시예에 따르면, 픽셀은 4 바이트이며, 적색, 녹색, 청색 및 알파 채널들을 포함한다. 전처리 단계 102는 입력 이미지의 픽셀들을 처리할 수 있으며, 따라서 전처리 후에 입력 이미지는 향상된 압축을 산출한다. 일 실시예에 따르면, 단계 102에서 알파 대체(alpha replacement), 컬러 개별화(color discretization) 및 팔레트 선택이 수행될 수 있다. 전처리 단계 102는 도 2와 관련하여 아래에 더 설명된다.
단계 104에서, 입력 이미지 또는 더 구체적으로는 전처리된 입력 이미지에 대해 공간 예측이 수행된다. 구체적으로, 이 분야의 기술자들에게 공지된 바와 같이, 공간 예측은 하나 이상의 이전에 발생한 픽셀에 기초하여 픽셀을 예측하는 것을 지칭한다. 예측 값과 실제 값의 사이의 차이가 공간 예측 이미지 내의 픽셀 위치(position)에 기록된다. 더욱이, 선택된 공간 예측기들의 하위 해상도 이미지가 저장된다.
입력 이미지는 사전 결정된 크기의 직사각 영역들("블록들")로 분할될 수 있다. 블록들은 예를 들어 16 x 16 픽셀들과 같은 임의의 크기를 가질 수 있다. 동일 또는 상이한 크기의 블록들이 공간 예측, 컬러 공간 변환 및 엔트로피 코드 선택에 사용될 수 있다.
각각의 블록 내의 각각의 픽셀에 대해, 공간 예측기들의 세트가 시도된다. 시도되는 공간 예측기들의 세트는 사전 구성될 수 있거나 동적으로 결정될 수 있다. 일 실시예에 따르면, 공간 예측기들의 세트는 현재 픽셀("현재 픽셀"이라는 용어는 현재 처리되고 있는 픽셀을 지칭하는 데 사용됨) 좌측에 있는 개별 픽셀들 또는 픽셀들의 조합들 및/또는 현재 픽셀 위의 하나 이상의 행인 픽셀들을 포함한다. 현재 픽셀의 좌측 또는 위에 있는 픽셀들은 현재 픽셀 전에 처리된, 이미지 내의 픽셀들의 좌-우 상-하 처리 순서를 따른다는 점에 유의한다.
블록에 대해 선택된 공간 예측기는 블록 내의 픽셀들의 공간 예측 값들과 각각의 실제 값 사이의 차이들의 최소 합 엔트로피(least sum entropy)를 산출하는 공간 예측기일 수 있다. 따라서, 실시예들에서, 공간 예측기들은 각각의 블록에 국지적인 엔트로피를 최적화하는 방식으로 결정된다.
일부 실시예들에서, 현재 블록에 대한 공간 예측기를 선택할 때 고려되는 기준들은 공간 예측 값들과 실제 값들 간의 차이들의 절대값의 최소화, 및 사전 결정된 이웃 픽셀들을 예측기로서 그리고/또는 예측기의 일부로서 선호하는 편향성(bias)을 포함한다. 차이들의 절대값의 최소화는 이미지 전반에서 엔트로피를 줄일 수 있다. 일 실시예에 따르면, 절대값들의 최소화는 블록 내의 각각의 픽셀에 대한 차이의 절대값의 최소화에 기초하거나, 블록에 대한 차이의 합 절대값(sum absolute value)의 최소화에 기초할 수 있다. 다른 실시예에 따르면, 절대값들의 최소화는 차이 값들의 모집단(population) 카운트들의 가중 합을 최소화함으로써 적어도 부분적으로 달성될 수 있다. 예를 들어, 가중은 큰 절대값들보다 작은 절대값들을 선호하기 위해 지수(exponential) 또는 가우스 방식(Gaussian)일 수 있다.
이어서, 각각의 블록에 대해 선택된 공간 예측기들이 공간 예측기 하위 해상도 이미지 내에 기록된다. 공간 예측에 대한 추가적인 상세들이 도 3과 관련하여 아래에 설명된다.
단계 106에서, 입력 이미지의 컬러 공간 변환이 수행된다. 입력 이미지의 컬러 공간 변환은 공간 예측 전에 또는 후에 수행될 수 있다. 설명되는 실시예들에서, 컬러 공간 변환에 대한 입력은 공간 예측 차이들을 픽셀 값들로서 포함하는 중간 입력 이미지이다.
컬러 공간 변환은 컬러 컴포넌트들 간의 상관성을 식별하고 기록하는 단계를 포함한다. 예를 들어, 녹색과 적색, 녹색과 청색 및 적색과 청색 간의 상관성들이 식별되고, 컬러 상관성 팩터들로서 기록된다. 따라서, 처음에 녹색, 적색 및 청색에 대한 3개의 개별 컬러 값을 포함했던 픽셀은 컬러 변환 후에는 녹색에 대한 최초의 컬러 값에 의해 그리고 적색과 청색에 대한 상관성 팩터들을 이용하여 결정된 값들에 의해 표현될 수 있다. 적색은 적색 대 녹색에 관련된 상관성 팩터로서 표현될 수 있고, 청색은 청색 대 적색에 관한 상관성 팩터 또는 청색 대 녹색에 관한 상관성 팩터 중 하나 이상으로서 표현될 수 있다.
상관성 팩터들은 하위 해상도 이미지 내에 저장된다. 입력 이미지 내의 컬러 값들은 각각의 상관성 팩터들에 기초하여 적색 및 청색에 대한 예측 에러들을 포함하도록 변경된다. 컬러 공간 변환은 도 4와 관련하여 아래에 더 설명된다.
단계 108에서, 입력 이미지의 초기 픽셀 기반 압축이 수행된다. 여기서 설명되는 실시예에서, 초기 픽셀 기반 압축에 대한 입력은 공간 예측 및 컬러 변환 처리가 이미 수행된 입력 이미지이다. 그러나, 단계 108은 방법(100)의 흐름 내의 다른 위치들에서 수행될 수 있으며, 따라서 다른 실시예들에서는 단계 104 및 106의 전 또는 후의 입력 이미지를 가질 수 있다.
각각의 픽셀에 대해, 초기 픽셀 기반 압축은 역방향 참조(backward reference), 픽셀 또는 팔레트 참조 중 하나를 삽입하도록 동작한다. 이 분야의 기술자들은 역방향 참조들을 삽입함에 의한 압축이 전통적인 LZ77에서는 바이트들에 기초하여 수행된다는 것을 인식할 것이다. LZ77과 달리, 실시예들에서는 역방향 참조들의 삽입이 픽셀들에 기초한다. 픽셀 기반 압축은 이미지 내의 이차원 근접 특성들의 보다 양호한 이용을 가능하게 하여 압축을 개선한다. 일 실시예에 따르면, (본 명세서에서 "이머징(emerging) 컬러 팔레트"로서 지칭되는) 팔레트가 픽셀 기반 압축 동안 동적으로 채워질 수 있다. 입력 이미지의 초기 픽셀 기반 압축은 도 5와 관련하여 아래에 더 설명된다.
단계 110에서, 단계 108로부터 출력된 압축된 입력 이미지에 대해 이차원 장소(locality) 변환을 수행한다. 이차원 장소 변환은 압축된 이미지 내의 위치 정보를 식별하고, 대응하는 이차원 거리를 나타내는 코드를 이용하여 그 위치 정보를 인코딩하도록 동작한다. 예를 들어, 역방향 참조는 압축(예를 들어, 단계 108) 동안 픽셀 거리로서 처음 삽입될 수 있다. 이차원 장소 변환은 그 픽셀 거리를 대응하는 이차원 거리에 대한 짧은 코드(short code)로 대체할 수 있다. 사전 구성된 이차원 장소 코드 테이블이 각각의 짧은 코드와 선택된 대응하는 상대적 픽셀 거리들 간의 관계를 지정한다. 일 실시예에 따르면, 사전 구성된 테이블은 현재 픽셀 주위의 16 x 8 픽셀 이웃에 대한 짧은 코드들을 지정한다. 이러한 짧은 코드들은 현재 픽셀에 대한 그들의 유클리드 거리에 의해 배열된다. 예를 들어, 바로 이웃하는 영역들에 대한 짧은 코드들을 이용함으로써, 바로 위의 하나 이상의 이전 행으로부터의 픽셀들에 대한 (비트 면에서) 더 싼 참조들이 가능해진다.
단계 112에서, 엔트로피 코드들이 결정되고, 엔트로피 코드들에 대한 하위 해상도 이미지가 기록된다. 엔트로피 코드들은 유사한 통계치들을 갖는 이미지의 국지적 영역들(예를 들어, 블록들 또는 블록들의 클러스터들)에 대해 결정된다. 각각의 픽셀을 인코딩하는 데 사용되는 엔트로피 코드들 또는 엔트로피 코드들에 대한 참조들은 엔트로피 하위 해상도 이미지로서 지칭되는 하위 해상도 이미지 내에 저장된다. 엔트로피 코드 결정은 도 6과 관련하여 아래에 더 설명된다.
단계 114에서, 입력 이미지가 엔트로피 코딩된다. 일 실시예에 따르면, 엔트로피 코딩에 대한 입력은 공간 예측, 컬러 변환, 픽셀 압축 및 이차원 장소 변환이 수행된 입력 이미지일 수 있다.
엔트로피 코딩은 입력 이미지에 대해 픽셀별로 좌에서 우로 그리고 위에서 아래로 수행된다. 이미지의 각각의 위치(location)에서, 엔트로피 인코딩은 엔트로피 하위 해상도 이미지에서 참조되는 엔트로피 코드에 기초하여 결정된다. 도 6과 관련하여 후술하는 바와 같이, 입력 이미지의 각각의 블록에 대해 엔트로피 코드 세트가 결정된다. 엔트로피 코드 세트는 컬러들, 거리들 등에 대한 각각의 엔트로피 코드를 포함할 수 있다. 엔트로피 하위 해상도 이미지는 입력 이미지 내의 대응 픽셀에 대해 사용될 엔트로피 코드 세트를 지정할 수 있다. 엔트로피 코드는 현재 픽셀의 블록에 기초하여 액세스된다. 엔트로피 코드들은 예를 들어 허프먼(Huffman) 코드들 및 산술 코드들에 기초할 수 있다.
단계 116에서, 엔트로피 코딩된 압축된 이미지가 메모리, 영구 메모리로 출력되거나, 다른 엔티티로 전송된다. 엔트로피 코딩된 이미지의 출력은 압축된 엔트로피 코딩된 입력 이미지, 하위 해상도 이미지들, 및 입력 이미지를 복원하기 위해 압축 해제하는 데 필요한 다른 정보를 포함하는, 도 10과 관련하여 설명되는 것과 같은 압축된 엔트로피 코딩된 이미지 파일의 형성을 포함할 수 있다.
도 2는 입력 이미지를 전처리하기 위한 방법(200)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(200)은 전술한 방법(100)의 단계 102를 수행하는 데 사용될 수 있다. 방법(200)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 202에서, 입력 이미지에 대해 알파 대체가 수행된다. 알파 대체는 입력 이미지 내의 엔트로피를 줄이기 위한 기술이다. 알파 대체는 알파 값들 중 일부, 예를 들어 고유한 알파 값들 또는 이미지 내에 드물게 나타나는 것들을 이미지 내에 더 일반적으로 나타나는 알파 값들로 대체하도록 동작한다. 예를 들어, 일 실시예에 따르면, PNG, TIFF 및 GIF와 같은 이미지 포맷들 내에 나타나는 것들과 같은 반투명 값들(translucent values)을 또한 갖는 특별한 컬러 값들을 처리하여, 이들을 대응하는 특정 반투명 값들을 포함하도록 보정함으로써 최초 포함된 반투명 값을 제거한다. 이 프로세스는 알파 채널 내의 엔트로피를 감소시키도록 동작한다.
임의 수의 픽셀들이 반투명한 것으로 마킹될 수 있으며, 따라서 그들에 대해 알파 대체가 수행될 수 있다. 일 실시예에 따르면, 반투명성(translucency)은 적색, 녹색 및 청색에 대한 개별 컬러 값들로서 지정되는 것이 아니라, 대신 대응하는 알파 값에 대한 오프셋으로서 지정된다. 알파에 대한 오프셋들을 이용하여 반투명 적색, 녹색 및 청색을 지정하는 것은 특정 RGB 트리플릿에 대한 알파의 배수가 존재하는 경우에도 실시예로 하여금 반투명 정보를 유지할 수 있게 해준다. 오프셋을 이용하여 알파 값을 지정하는 것의 부수적 효과로서, 알파 채널의 엔트로피가 감소될 수 있다.
단계 204에서, 컬러 개별화가 수행될 수 있다. 일 실시예에 따르면, 컬러 개별화 및 축소화(compatification)는 컬러들의 동적 범위를 팩킹(pack)시키도록 동작하며, 따라서 예측은 단지 또는 주로 최초 이미지 내에 있는 것들과 같은 컬러 값들 및/또는 예측 에러 값들을 산출할 것이다. 이것은 예측 이미지가 최초 이미지보다 더 많은 고유 심벌들을 가져야 하는 필요성을 피하거나 줄인다.
예를 들어, 컬러 개별화 및 축소화를 갖지 않는 실시예들에서, 예측기는 2개의 컬러 값을 고려하고, 이러한 2개의 고려되는 값들의 평균을 픽셀에 대한 예측 컬러로서 예측할 수 있다. 그러나, 평균값은 최초 이미지 내의 어딘가에 있었던 컬러가 아닐 수 있으며, 따라서 예측 신호는 새로운 심벌을 도입했을 것이다. 최초 이미지 내에 아직 존재하지 않았던 새로운 값들을 산출하는 예측들 및/또는 예측 에러들의 가능성을 줄이도록 컬러들의 동적 범위를 팩킹시키는 것은 새로운 심벌들의 추가를 최소화한다. 결과적으로, 예측 이미지는 전통적인 기술들에 비해 감소된 엔트로피를 가질 수 있다.
단계 206에서, 옵션으로서, 팔레트 선택이 수행된다. 일 실시예에 따르면, 팔레트 선택은 이미지에서 소수의 컬러들만이 인코딩되는 것이 필요할 때 수행된다. 팔레트 선택은 다수의 픽셀이 단일 픽셀로 팩킹되게 한다.
도 3은 공간 예측을 수행하기 위한 방법(300)을 도시한다. 일 실시예에 따르면, 방법(300)은 전술한 방법(100)의 단계 104를 수행하는 데 사용될 수 있다. 방법(300)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 302에서, 공간 예측기들이 결정된다. 단계 104와 관련하여 전술한 바와 같이, 개시되는 실시예들은 블록에서의 예측 차이들이 최소화되게 하는 공간 예측기들을 찾도록 동작한다. 다른 실시예에서는, 블록 내의 공간 예측 차이들의 엔트로피의 최소화, 공간 예측 차이들의 절대값의 최소화 및 이웃 픽셀 블록들을 선호하는 선택 기준의 편향과 같은, 그러나 이에 한정되지 않는 다른 기준들을 이용하여 블록의 국지적 특성들 및 옵션으로서 전역적 특성들에 대한 공간 예측기의 선택을 최적화할 수 있다.
전술한 바와 같이, 현재 픽셀을 예측하기 위하여 선택된 픽셀(들)은 이전에 처리된 픽셀 위치들 중 임의의 픽셀 위치로부터의 픽셀일 수 있다. 일 실시예에 따르면, 사전 구성된 공간 예측기 코드 테이블이 복수의 픽셀 위치 및 픽셀 조합 각각에 대한 코드를 지정한다. 예컨대, 공간 예측기 코드 테이블은 비예측을 위한 코드, 개별 픽셀들을 복사하기 위한 복수의 코드, 및 둘 이상의 픽셀을 평균하기 위한 복수의 코드를 포함할 수 있다. 따라서, 현재 픽셀의 예측은 하나 이상의 픽셀에 기초할 수 있다.
입력 이미지를 인코딩하기 위한 공간 예측기들은 전술한 기준들 중 하나 이상에 의해 결정되는 비용 함수에 기초하여 블록별로 선택된다. 블록에서, 모든 픽셀들은 동일한 선택된 공간 예측기와 관련된다.
단계 304에서, 각각의 블록에 대해 선택된 공간 예측기들은 공간 예측기 하위 해상도 이미지 내에 저장된다. 하위 해상도 이미지 내의 픽셀은 입력 이미지 내의 블록을 나타낸다.
압축된 엔트로피 코딩된 입력 이미지를 저장하는 데 사용된 것과 동일한 저장 기술이 각각의 하위 해상도 이미지를 저장하는 데 사용될 수 있다. 하위 해상도 이미지들에 대한 것을 포함하는, 압축된 엔트로피 코딩된 이미지들을 저장하기 위한 범용 기술이 도 7과 관련하여 아래에 개시된다.
단계 306에서, (전처리되거나 되지 않은) 입력 이미지를 처리하여, 공간 예측기 하위 해상도 이미지에 따라 공간 예측들을 인코딩한다. 블록 내의 각각의 픽셀에 대해, 예측 값이 공간 예측기 하위 해상도 이미지에 저장된 대응하는 공간 예측기에 기초하여 결정된다. 이어서, 예측 값과 실제 값 간의 차이가 픽셀 내로 인코딩된다. 공간 예측은 입력 이미지 전반의 픽셀들을 처리하도록 진행되므로, 공간 예측기 하위 해상도 이미지는 각각의 블록에 적용되는 공간 예측기를 제어한다.
도 4는 이미지의 컬러 공간 변환을 위한 방법(400)을 도시한다. 일 실시예에 따르면, 방법(400)은 전술한 방법(100)의 단계 106을 수행하는 데 사용될 수 있다. 방법(400)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 402에서, 컬러 상관성들이 결정된다. 컬러 컴포넌트들 간의 컬러 상관기들이 블록별로 결정된다. 각각의 블록에 대해, 픽셀들 또는 더 구체적으로 적색, 녹색, 청색(RGB) 값들을 분석하여 이들 간의 상관성들을 결정한다. 일 실시예에 따르면, 녹색과 적색, 적색과 청색 및 녹색과 청색 간의 상관성들이 결정된다. 컬러 상관기들은 적색 및 청색 채널들에서 엔트로피를 줄이도록 동작한다. 예를 들어, 해당 픽셀에서 적색을 녹색 값의 팩터로서 표현함으로써, 실시예들은 적색 채널에서 엔트로피를 줄인다. 예를 들어, 전통적인 시스템들에서 인코딩되는 바와 같이 각각의 픽셀이 각각 8:6:2 및 4:3:0의 RGB를 갖는 2개의 블록을 고려한다. 일 실시예에 따르면, 이 정보는 8:X:Y 및 4:X:Y로서 인코딩될 수 있으며, 여기서 X 및 Y는 75% 및 25%에 대한 코드들이다. 따라서, 컬러 변환은 인접 블록들 간의 컬러 관계들을 이용함으로써 적색 및 청색 채널들의 엔트로피를 줄일 수 있다.
컬러 상관기들의 공통 세트가 각각의 블록에 대해 결정된다. 블록에 대한 상관기들은 예를 들어 평균에 기초하여 또는 현재 블록 내의 가장 자주 발생하는 컬러 값들에 기초하여 선택될 수 있다. 일 실시예에 따르면, 블록에 대한 상관기들은 적색 및 청색 컴포넌트들의 엔트로피 및 절대값들을 결합하는 휴리스틱을 최소화하는 방식으로 결정될 수 있다. 예를 들어, 블록 내의 녹색 대 적색의 모든 값들이 테스트될 수 있고, 최저 휴리스틱을 산출하는 값이 선택될 수 있다. 또한, 블록 내의 녹색 대 청색 및 적색 대 청색의 모든 조합들이 테스트될 수 있고, 최저 휴리스틱을 갖는 조합이 선택될 수 있다. 더욱이, 일부 실시예들에서는, 현재 블록의 위 또는 좌측에 있는 블록들로부터의 선택된 상관기들과 유사한 상관기 값들이 선택을 위해 약간 선호될 수 있다.
단계 404에서, 선택된 상관성 팩터들이 컬러 상관성 하위 해상도 이미지 내에 저장된다. 컬러 상관성 하위 해상도 이미지에서, 각각의 픽셀은 입력 이미지 내의 블록을 나타낸다. 하위 해상도 이미지 내의 각각의 픽셀은 녹색 대 적색, 녹색 대 청색 및 적색 대 청색의 상관성 팩터들을 각각 저장한다. 이들 팩터는 양 또는 음의 상관성들이 지시될 수 있는 방식으로 저장될 수 있다.
단계 406에서, 컬러 변환이 입력 이미지 내에 인코딩된다. 입력 이미지 내의 적색 및 청색 채널들은 이제 컬러 상관성 예측의 예측 에러를 나타내도록 변경된다. 구체적으로, 컬러 예측들이 후술하는 바와 같이 인코딩된다. 녹색은 예측되지 않으며, 따라서 저장 값은 실제 녹색 값이다. 적색은 컬러 상관성 하위 해상도 이미지에서 지정되는 현재 블록에 대응하는 녹색 대 적색 상관성 팩터에 기초하여 녹색으로부터 예측된다. 컬러 상관성 팩터에 기초하는 적색 예측 값과 적색 컴포넌트에 대한 이전에 인코딩된 공간 예측 에러 간의 차이가 이제 인코딩된다. 청색은 녹색 및 적색 중 하나 이상으로부터 예측될 수 있다. 일 실시예에 따르면, 녹색 및 적색 양자가 청색 값의 예측에 사용되는 경우, 녹색 대 청색 및 적색 대 청색 예측들의 평균이 청색 컴포넌트에 대한 예측 값으로 취해진다. 청색이 예측되는 모드는 사전 구성될 수 있다. 따라서, 적색 및 청색 채널들의 인코딩은 컬러 상관성 하위 해상도 이미지에서 지정되는 상관성 팩터들에 따라 제어된다.
도 5는 입력 이미지의 픽셀 기반 압축을 위한 방법(500)을 도시한다. 일 실시예에 따르면, 방법(500)은 방법(100)의 단계 108을 수행하는 데 사용될 수 있다. 단계 502-516은 좌에서 우로 그리고 위에서 아래로의 이동 패턴으로 픽셀들을 트래버싱(traversing)함에 의한 이미지의 처리를 나타낸다. 방법(500)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 502에서, 처리될 다음 픽셀이 선택된다. 처리는 통상적으로 좌상(top left) 픽셀에서 시작될 것이다. 다른 반복들에서, 후속 픽셀이 선택된다. 선택된 다음 픽셀은 현재 픽셀로서 지칭된다.
단계 504-508은 입력 이미지를 압축하는 프로세스에서 현재 픽셀에 대해 수행될 수 있는 각각의 동작의 비용을 결정한다. 일 실시예에 따르면, 3개 개별 옵션, 즉 1) 역방향 참조의 삽입, 2) 픽셀의 삽입 및 3) 팔레트 엔트리의 삽입이 고려될 수 있다.
"역방향 참조"는 지정된 하나 이상의 픽셀이 이미지 압축을 위해 현재 픽셀의 위치에 복사될 수 있다는 것을 지시한다. 예를 들어, 현재 픽셀이 모두가 컬러 C인 3개 픽셀의 스트링의 시작이고, 현재 픽셀의 200 픽셀 앞인 이전에 처리된 위치에 3개의 컬러 C 픽셀의 스트링이 존재했던 경우, 실시예들은 현재 픽셀에 매칭되는 200 픽셀 앞에 대한 참조, 및 참조되는 픽셀에서 시작되는 3개 픽셀의 스트링의 길이를 지시하는 역방향 참조를 삽입할 수 있다. 역방향 참조는 거리 및 길이 값에 의해 지정된다. 거리는 현재 픽셀로부터 참조되는 픽셀까지의 거리를 나타내며, 길이는 참조되는 픽셀이 복사될 수 있는, 현재 픽셀로부터의 픽셀들의 수를 나타낸다.
픽셀의 삽입은 압축 이미지 내의 현재 픽셀의 삽입을 지칭한다. 일부 상황들에서, 이것은 픽셀에 대한 가장 비용 효율적인 동작일 수 있다.
팔레트 엔트리의 삽입은 압축 이미지 내의 인덱스의 삽입을 지칭한다. 일부 실시예들에서, 팔레트 엔트리의 삽입은 또한 팔레트 내의 대응하는 컬러 엔트리의 삽입을 포함할 수 있다. 이미지를 통해 픽셀 기반 압축이 진행됨에 따라 이머징 컬러 팔레트가 동적으로 형성된다. 각각의 픽셀 위치에서, 이머징 팔레트 내에 컬러 값을 삽입하고, 압축 이미지 내에 대응하는 팔레트 인덱스를 삽입하는 비용이 고려된다. 이머징 팔레트의 크기는 사전 구성될 수 있다. 일 실시예에 따르면, 적색/녹색/청색/알파 값들을 나타내는 32비트 정수가 사전 결정된 승수에 의해 승산된다. 크기에 기초하여, 결과적인 정수로부터의 일부 비트들이 이머징 컬러 팔레트를 나타내는 어레이 내로의 인덱스로서 사용된다. 예를 들어, 128의 이머징 팔레트 크기에 대해, 7개의 비트가 인덱스 값으로 사용될 수 있다. 압축되지 않은 픽셀 스트림으로부터의 각각의 컬러 값에 대해, 다양한 방식들 중 하나의 방식으로 인덱스가 결정될 수 있다. 일 실시예에 따르면, 컬러의 인덱스는 전술한 컬러의 바이트 표현의 사전 정의된 시작 위치로부터의 7개의 인접하는 연속 비트에 기초하여 결정된다. 다른 실시예에 따르면, 컬러 값에 대해 모듈로(modulo) 연산을 수행하여 이머징 팔레트 내로의 해시 인덱스를 결정할 수 있다. 일 실시예에 따르면, 하나의 이머징 컬러 팔레트가 입력 이미지에 대해 사용될 수 있다. 다른 실시예들에서, 개별 이머징 팔레트가 각각의 영역에 대해 정의될 수 있다. 예를 들어, 새로운 이머징 팔레트가 입력 이미지의 x축을 따라 32 픽셀마다 생성될 수 있다.
단계 504에서, 현재 픽셀에서 역방향 참조를 삽입하는 비용이 결정된다. 전술한 바와 같이, 역방향 참조의 삽입은 픽셀까지의 거리 및 길이의 삽입을 포함한다. 길이는 참조되는 픽셀로부터 시작하는, 복사될 수 있는 픽셀들의 수를 지칭한다. 비용은 현재 픽셀에 대응하는 압축 이미지 내의 위치에 거리 및 길이를 삽입하는 비용을 포함한다. 이러한 비트 삽입 비용은 현재 픽셀의 위치에서 시작하는, 복사될 수 있는 역방향 참조로부터의 픽셀들의 수와 동일한 수의 픽셀들을 복사할 필요가 없을 때의 비용 절감과 함께 고려된다. 예를 들어, 역방향 참조의 인코딩에 5 바이트가 필요하고, 3개 픽셀의 길이가 지시되는 경우, 크기 1 바이트의 픽셀들의 경우에 역방향 참조 삽입의 비용은 5-3 = 2 바이트일 것이다. 다른 실시예에 따르면, 역방향 참조의 비용은 삽입 비용에만 기초하는데, 즉, 역방향 참조의 인코딩이 5 바이트를 필요로 하는 경우, 삽입 비용은 5 바이트이다.
일 실시예에 따르면, 최장 역방향 참조가 선택된다. 다른 실시예에 따르면, 아마도 상이한 거리 및 길이 특성들을 갖는 둘 이상의 역방향 참조가 비교되고, 가장 비용 효율적인 역방향 참조가 선택된다.
단계 506에서, 입력 이미지 내에 픽셀을 삽입하는 비용이 결정된다. 이 비용은 하나의 픽셀을 삽입하는 비트 비용으로서 간주될 수 있다.
단계 508에서, 이머징 팔레트 인덱스를 삽입하는 비용이 결정된다. 이머징 팔레트 엔트리를 삽입하는 비용은 인덱스 엔트리의 크기로서 간주될 수 있다.
단계 510에서, 단계 504-508에서의 비용 결정들에 기초하여, 최소 비용 동작이 결정되고, 최소 비용 동작이 현재 픽셀 위치에 기록된다. 비용은 비트 비용들에 기초하여 결정된다.
단계 512에서, 입력 이미지의 최종 픽셀에 도달하였는지를 결정한다. 그렇지 않은 경우, 단계 502-512가 다음 픽셀에 대해 트래버설 패턴으로 반복된다.
단계 512에서, 현재 픽셀이 최종 픽셀인 것으로 결정되는 경우, 처리는 단계 514로 진행한다. 단계 514에서, 최종 픽셀로부터의 경로를 역추적하여 이미지를 압축하기 위한 최소 비용 경로의 역을 결정한다.
단계 514에서, 결정된 경로를 반전시켜, 이미지에 대한 압축의 최소 비용 경로를 트래버싱하기 위해 수행될 압축 동작들을 산출한다. 경로는 역방향 참조들의 인코딩, 픽셀 값들의 인코딩, 및 픽셀 위치들에서의 팔레트 인덱스 값들의 인코딩 중 하나 이상을 포함할 수 있다. 단계 514의 종료시에, 입력 이미지는 픽셀 기반 압축을 완료하였다.
도 6은 엔트로피 코드들을 결정하기 위한 방법(600)을 도시한다. 일 실시예에 따르면, 방법(600)은 전술한 방법(100)의 단계 112를 수행하는 데 사용될 수 있다. 방법(600)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 602에서, 엔트로피 코딩될 이미지가 수신된다. 일 실시예에 따르면, 수신된 이미지는 픽셀 기반 압축 프로세스를 통과하였다. 픽셀 기반 압축 전에, 입력 이미지에 대해 공간 예측 및 컬러 공간 변환이 수행되었을 수 있다. 그러나, 방법(600)은 다른 타입의 입력 이미지들에도 적용될 수 있다.
단계 604에서, 입력 이미지로부터 블록들이 결정된다. 일 실시예에 따르면, 크기 16 x 16의 블록들이 결정된다. 다른 블록 크기들도 가능하다.
단계 606에서, 각각의 블록에 대해 통계치들이 결정된다. 통계치들은 적색, 녹색, 청색, 알파 컬러 컴포넌트들에 대해, 거리 코드들, 역방향 참조 길이 코드들에 대해 그리고 팔레트 해시 값들에 대해 개별적으로 결정될 수 있다. 통계치들은 각각의 통계치에 대한 픽셀들의 수를 카운트할 수 있는 히스토그램 형태로 결정될 수 있다.
단계 608에서, 블록들은 각각의 블록의 통계치들의 유사성에 따라 클러스터링된다. 일 실시예에 따르면, 확률론적(stochastic) 클러스터링이 수행된다. 확률론적 클러스터링은 먼저 각각의 블록을 클러스터로서 간주한 후에 클러스터를 무작위로 반복 선택함으로써 수행될 수 있다. 이어서, 선택된 수의 클러스터들 중에서 가장 유사한 클러스터가 발견되고, 선택된 클러스터와 발견된 클러스터가 결합된다. 이러한 클러스터링 동작은 클러스터들의 수가 결정된 클러스터들의 임계 수로 감소할 때까지 진행될 수 있다. 클러스터들의 임계 수는 또한 비용 함수에 기초하여 결정될 수 있다. 예를 들어, 각각의 클러스터에 대한 엔트로피 코드를 저장하기 위한 비용이 모델링될 수 있으며, 각각의 엔트로피 코드들의 크기는 클러스터들에 대한 블록들의 분포에 의존한다. 일 실시예에서, 예를 들어, 확률론적 알고리즘은 클러스터들의 수를 약 1000개 내지 약 50개의 클러스터로 줄이도록 동작한다.
단계 610에서, 클러스터링이 정밀화된다(refined). 이 단계는 블록과 그의 클러스터 사이의 매치의 정밀도(accuracy)를 개선하기 위해 블록들(또는 블록 통계치들)을 클러스터들로 이동시킴으로써 확률론적으로 결정된 클러스터들을 정밀화하도록 동작한다. k-평균 알고리즘과 같은 클러스터링 알고리즘이 이 단계에서 사용될 수 있다. 다른 실시예에 따르면, 각각의 블록은 그에 대한 최적의 클러스터를 결정하기 위해 분석되고, 그곳으로 이동되며, 따라서 출력(저장)할 예상 비트 수가 최소화된다. 각각의 이동 후에, 이동을 보상하기 위해 통계치들이 조정된다. 이러한 동작은 모든 블록들을 정밀하게 클러스터링하기 위해 사전 결정된 횟수 동안 또는 출력할 예상 비트 수가 감소될 때까지 반복될 수 있다.
단계 612에서, 각각의 클러스터에 대한 엔트로피 코드가 결정된다. 따라서, 클러스터들은 유사한 특성들을 갖는 블록들을 함께 그룹화하였으므로, 결과적인 엔트로피 코드들은 각각의 클러스터의 특성들에 대해 고유하게 결정된다. 더욱이, 각각의 클러스터 내에서, 개별 엔트로피 코드들이 녹색, 적색, 청색, 알파 및 거리 컴포넌트들에 대해 결정된다. 실시예들에서, 동일 엔트로피 코드가 녹색, 팔레트 인덱스 및 길이 컴포넌트들에 대해 사용될 수 있다. 임의의 기술을 이용하여, 각각의 클러스터에 그리고 각각의 클러스터 내에서 컬러 및 거리 컴포넌트들 각각에 고유한, 허프만 코드와 같은, 그러나 이에 한정되지 않는 엔트로피 코드를 결정할 수 있다.
단계 614에서, 각각의 블록에 대한 엔트로피 코드가 결정된다. 구체적으로, 엔트로피 코드들의 세트("엔트로피 코드 세트")가 적색, 녹색, 청색, 알파 컬러 컴포넌트들에 대한, 거리 코드들, 역방향 참조 길이 코드들에 대한 그리고 팔레트 해시 값들에 대한 개별 엔트로피 코드들을 포함한다. 이것은 특정 블록이 속하는 클러스터를 식별함으로써 결정될 수 있다.
단계 616에서, 엔트로피 코드 세트들이 저장되고, 각각의 픽셀에 적용되는 엔트로피 코드가 엔트로피 코드 하위 해상도 이미지 내에 지정된다. 엔트로피 코드 하위 해상도 이미지는 예를 들어 입력 이미지 내의 각각의 16 x 16 블록에 대해 하나의 픽셀을 저장한다. 엔트로피 코드 하위 해상도 이미지 내의 각각의 픽셀은 입력 이미지 내의 대응 블록에 적용될 엔트로피 코드들의 세트를 지정한다. 예를 들어, 하위 해상도 이미지 내의 픽셀의 녹색 컴포넌트는 저장된 엔트로피 코드 세트들 내의 대응하는 엔트로피 코드들의 세트의 위치에 대한 참조를 이용하여 갱신될 수 있다. 엔트로피 코드들의 세트는 5개의 개별 엔트로피 코드, 즉 녹색/픽셀 인덱스/역방향 참조 길이에 대한 엔트로피 코드; 및 적색, 청색, 알파 및 거리 컴포넌트들에 대한 엔트로피 코드를 포함할 수 있다. 이들 엔트로피 코드 각각은 허프만 코딩 및 실행 길이 코딩(run-length coding)을 이용하여 개별적으로 성문화(codified)될 수 있다.
엔트로피 코드 하위 해상도 이미지는 다른 하위 해상도 이미지들 및 압축된 엔트로피 코딩된 입력 이미지를 저장하는 데 사용되는 것과 동일한 기술을 이용하여 저장될 수 있다. 이미지들의 저장은 도 7과 관련하여 후술된다.
도 7은 압축되고 엔트로피 코딩된 형태로 이미지들을 저장하기 위한 방법(700)을 도시한다. 일 실시예에 따르면, 방법(700)은 압축된 엔트로피 코딩된 입력 이미지는 물론, 하위 해상도 이미지들(예컨대, 엔트로피 하위 해상도 이미지, 컬러 상관성 하위 해상도 이미지, 및 공간 예측기 하위 해상도 이미지)도 저장하는 데 사용될 수 있다. 방법(700)은 도시된 순서로 발생하지 않을 수 있으며, 단계들 모두를 필요로 하지는 않을 수도 있다.
단계 702에서, 입력 이미지에 대해 픽셀 기반 압축이 수행된다. 양태들에서 LZ77과 유사하지만, 예시적인 픽셀 기반 압축이 바이트들 대신에 픽셀들에 적용된다. 도 5는 예시적인 픽셀 기반 압축 방법을 도시한다. 픽셀 기반 압축의 출력은 픽셀들, 역방향 참조들 및 팔레트 인덱스 값들을 갖는 픽셀 스트림이다.
단계 704에서, 픽셀 기반 압축으로부터의 출력에 대해 이차원 장소 변환이 수행된다. 이차원 장소 변환은 이차원 근접도에 기초하여 픽셀 거리들 내에 있는 거리들을 코드들로 변환한다. 예시적인 이차원 변환이 위에서 방법(100)의 단계 110과 관련하여 설명되었다.
단계 706에서, 입력 이미지가 (예를 들어, 16 x 16 픽셀들의) 블록들로 분할되고, 각각의 블록에 대한 통계치들이 결정된다. 통계치들은 적색, 녹색, 청색, 알파 및 거리 컴포넌트들에 대해 개별적으로 수집될 수 있다. 통계치들은 (역방향 참조들의) 길이 및 픽셀 인덱스 값들에 대해서도 수집될 수 있다. 일 실시예에 따르면, 녹색/ 길이/픽셀 인덱스 값들에 대한 통계치들이 결합될 수 있다. 블록들에 대한 통계치들의 결정은 방법(600)의 단계 604-606과 관련하여 위에서 설명되었다.
단계 708에서 블록들은 통계치들의 유사성에 따라 클러스터링되며, 단계 710에서 클러스터들은 블록들과 각각의 클러스터 간의 매치를 개선하도록 정밀화된다. 단계 712에서, 클러스터들에 대해 엔트로피 코드들이 결정된다. 블록들의 클러스터링, 클러스터들의 정밀화 및 각각의 클러스터들에 대한 엔트로피 코드들의 결정은 방법(600)의 단계 608, 610 및 612 각각과 관련하여 설명되었다.
단계 714에서, 엔트로피 하위 해상도 이미지가 저장된다. 엔트로피 하위 해상도 이미지의 저장은 방법(700)에서 정의되는 것과 동일한 저장 기술을 이용할 수 있다. 따라서, 방법(700)은 이미지들의 순환 저장(recursive storage)을 정의한다. 엔트로피 코드 하위 해상도 이미지의 저장은 방법(600)의 단계 616과 관련하여 위에 설명되었다.
단계 716에서, 입력 이미지가 엔트로피 인코딩된다. 입력 이미지의 엔트로피 인코딩은 방법(100)의 단계 114와 관련하여 위에 설명되었다.
도 8은 일 실시예에 따른 인코더(800)를 도시한다. 인코더(800)는 전처리 모듈(802), 공간 예측기(804), 컬러 공간 변환기(806), 픽셀 압축기(808), 이차원 장소 변환 모듈(810), 엔트로피 코드 생성 모듈(814), 이미지 저장 모듈(812) 및 압축된 이미지 파일 출력 모듈(816)을 포함한다.
전처리 모듈(802)은 이미지들이 더 양호하게 압축될 수 있도록 이미지들을 전처리하도록 구성된다. 전처리 모듈(802)은 예를 들어 이미지가 압축되기 전에 이미지의 엔트로피를 줄이도록 동작할 수 있다. 전처리 모듈(802)은 알파 대체 맵퍼(822), 컬러 개별화기(824) 및 팔레트 선택기(826)를 포함한다.
알파 대체 맵퍼(822)는 선택된 알파 값들을 제거 또는 대체하도록 구성된다. 일 실시예에 따르면, 알파 대체 모듈은 방법(200)의 단계 202를 구현할 수 있다.
컬러 개별화기(824)는 예측기들에 대한 값들의 동적 범위를 조정함으로써 최초 이미지 내에 있지 않는 예측 값들을 제거하거나 줄임으로써 결과적인 엔트로피를 줄이도록 구성된다. 일 실시예에 따르면, 컬러 개별화기(824)는 방법(200)의 단계 204를 구현할 수 있다.
팔레트 선택기(826)는 데이터 구조들 내의 더 가까운 다수의 컬러를 팩킹시킴으로써 이미지가 사전 결정된 수보다 적은 컬러들만을 가질 때 인접 픽셀들 간의 공동 분포들의 엔트로피를 줄이도록 구성된다. 일 실시예에 따르면, 팔레트 선택기(826)는 방법(200)의 단계 206을 구현할 수 있다.
공간 예측기(804)는 공간 예측을 구현하도록 구성된다. 공간 예측은 예를 들어 방법(100)의 단계 104와 관련하여 그리고 방법(300)과 관련하여 설명되었다.
컬러 공간 변환기(806)는 컬러 공간 변환을 구현하도록 구성된다. 컬러 공간 변환은 예를 들어 방법(100)의 단계 106 및 방법(400)과 관련하여 위에서 설명되었다. 위의 실시예들은 RGB 컬러 모델과 관련하여 설명되었다. YUV 컬러 모델과 같은, 그러나 이에 한정되지 않는 다른 컬러 모델들도 이용될 수 있다.
픽셀 압축기(808)는 입력 이미지의 픽셀 기반 압축을 수행하도록 구성된다. 일 실시예에 따르면, 픽셀 압축기(808)는 방법(700)의 단계 702와 관련하여 설명된 바와 같은 픽셀 기반 압축을 구현하도록 구성된다. 픽셀 압축기(808)는 역방향 참조 삽입 모듈(832), 그리디(greedy) 압축기 모듈(834), 최소 비용 압축기 모듈(836) 및 팔레트 삽입 모듈(838)을 포함한다.
역방향 참조 모듈(832)은 현재 픽셀이 이전에 발생한 픽셀을 참조함으로써 압축될 수 있는지를 결정하고, 그러한 경우에 참조되는 픽셀에 대한 픽셀 거리 및 길이를 삽입하도록 동작한다. 역방향 참조의 삽입은 도 5의 단계 504와 관련하여 위에서 설명되었다.
팔레트 삽입 모듈(838)은 각각의 픽셀에 대한 인덱스 값을 결정하도록 동작하는 한편, 각각의 픽셀을 처리할 때 이머징 컬러 팔레트를 동적으로 구성한다. 대응하는 픽셀에 대한 팔레트 엔트리에 대한 인덱스 참조를 결정한 후, 팔레트 삽입 모듈(838)은 역방향 참조의 비용 및 픽셀 삽입의 비용에 대한 비용 비교가 유리한 경우에 그 인덱스를 압축 이미지 내에 삽입할 수 있다.
이머징 팔레트의 생성은 압축 프로세스 동안 각각의 픽셀을 처리하기 위해 팔레트 삽입 모듈(838)이 호출될 때 진행된다. 각각의 픽셀은 컬러 값(예를 들어, RGB 또는 RGBA)을 포함할 수 있다. 컬러 값은 대응한 공간 예측 및/또는 컬러 변환 예측에서의 에러를 나타낼 수 있다. 현재 픽셀의 값으로부터 해시 인덱스가 생성된다. 일 실시예에 따르면, 픽셀의 사전 결정된 비트 위치로부터 사전 결정된 수의 비트들이 선택된다. 선택된 비트들은 해시 인덱스로서 사용된다. 이어서, 해시 인덱스에 기초하여 픽셀(예로서, 컬러 값)이 테이블 내에 삽입된다. 각각의 컬러에 대한 해시 위치를 결정하는 다른 방법들이 가능하며, 본 발명의 범위 내에서 고려된다.
최소 비용 압축기(836)는 입력 이미지에 대한 최소 비용 압축을 결정하도록 구성된다. 최소 비용 압축기(836)는 입력 이미지의 각각의 픽셀에서 a) 역방향 참조들의 삽입; b) 현재 픽셀의 삽입; 및 c) 팔레트 엔트리에 대한 인덱스의 삽입의 하나 이상의 옵션 중에서 선택한다. 선택은 비용 분석에 기초한다. 도 5는 입력 이미지를 압축하기 위해 최소 비용 압축기(836)에 의해 구현될 수 있는 방법(500)을 설명한다.
그리디 압축기 모듈(834)은 최장 역방향 참조, 픽셀의 복사 및 팔레트 인덱스의 삽입 중에서 선택함으로써 입력 이미지를 압축하도록 구성된다. 역방향 참조들을 삽입하고, 픽셀들을 복사하고, 팔레트 엔트리들을 삽입하는 동작들은 방법(500)의 단계 504, 506 및 508 각각과 관련하여 위에서 설명되었다. 그리디 압축기 모듈(834)은 압축 레벨보다 속도가 더 중요할 때 사용되는 더 빠른 압축 기술로서 동작할 수 있다. 따라서, 예를 들어, 역방향 참조들을 고려할 때, 그리디 압축기 모듈(834)은 픽셀 삽입 및 팔레트 인덱스 삽입에 대한 비용 비교를 위해 최장 매칭 시퀀스를 갖는 역방향 스트링만을 고려할 수 있다.
이차원 변환 모듈(810)은 이차원 거리에 기초하여 픽셀 거리들의 발생들을 더 짧은 코드들로 대체하도록 구성된다. 일 실시예에 따르면, 이차원 변환 모듈(810)은 방법(100)의 단계 110과 관련하여 전술한 처리를 구현할 수 있다.
엔트로피 코드 생성 모듈(814)은 유사한 통계치들을 갖는 입력 이미지의 각각의 영역에 대한 엔트로피 코드들을 생성하도록 구성된다. 일 실시예에 따르면, 블록 클러스터 모듈(842)은 입력 이미지에 대한 사전 결정된 크기의 블록들을 결정한 후에, 통계치들의 유사성에 따라 블록들을 클러스터링한다. 엔트로피 코드 생성 모듈(814)은 각각의 클러스터에 대한 개별 엔트로피 코드를 생성하고, 해당 클러스터의 특성들에 대한 코드를 최적화할 수 있다. 각각의 클러스터에 대해 엔트로피 코드들의 세트가 생성될 수 있다. 엔트로피 코드 생성 모듈(814)은 입력 이미지의 각각의 블록에 대한 엔트로피 코드들을 저장하기 위한 엔트로피 하위 해상도 이미지를 생성하도록 더 구성된다. 블록 클러스터 모듈(842)은 방법(600)의 단계 604-610 및/또는 방법(700)의 단계 706-710과 관련하여 전술한 처리를 구현할 수 있다. 엔트로피 코드 생성 모듈(814)은 방법(600)의 단계 612-616 및/또는 방법(700)의 단계 712-716과 관련하여 전술한 처리를 구현할 수 있다.
이미지 저장 모듈(812)은 압축된 엔트로피 코딩된 입력 이미지, 및 입력 이미지에 기초하여 생성된 하위 해상도 이미지들 각각을 저장하도록 구성된다. 일 실시예에 따르면, 이미지 저장 모듈(812)은 방법(700)과 관련하여 전술한 처리를 구현할 수 있다. 전술한 바와 같이, 방법(700)은 순환적 정의(recursive definition)를 이용하여 이미지를 저장한다. 예를 들어, 단계 714는 동일 방법(700)을 이용하여 엔트로피 코드 하위 해상도 이미지의 저장을 요청한다.
압축된 이미지 파일 출력 모듈(816)은 예를 들어 방법(100)에 기초한 처리 후에 완전한 압축된 엔트로피 코딩된 입력 이미지를 파일 내로 출력하거나, 디코딩을 위해 다른 엔티티로 전송되도록 출력하도록 구성된다. 출력으로서의 완전한 압축된 엔트로피 코딩된 입력 이미지는 특히 압축된 엔트로피 코딩된 입력 이미지 및 하위 해상도 이미지들을 포함한다. 압축된 엔트로피 코딩된 입력 이미지를 저장하는 예시적인 파일이 아래의 도 10에 예시된다.
도 9는 일 실시예에 따른 이미지들의 압축에 있어서의 데이터 엔티티들을 나타낸다. 입력 이미지(900)는 압축을 위해 인코더(800)에 입력되는 압축되지 않은 이미지이다. 압축된 엔트로피 코딩된 이미지(904)는 완전히 압축되고 엔트로피 코딩된 입력 이미지이다. ("중간 이미지들"로도 지칭되는) 입력 이미지 중간 포맷들(902)은 입력 이미지가 필요로 하는, 압축되지 않은 입력 이미지와 압축된 엔트로피 코딩된 이미지 사이의 이미지 포맷들의 여러 중간 스테이지를 지칭한다. 그 예는 전처리 모듈(802)로부터의 그리고 임의의 그의 서브모듈로부터의 출력, 공간 예측기(804)로부터의 출력, 컬러 공간 변환기(806)로부터의 출력, 픽셀 압축기(808) 및 임의의 그의 서브모듈로부터의 출력, 및 이차원 장소 변환 모듈(810)로부터의 출력을 포함한다.
공간 예측기 하위 해상도 이미지(906), 컬러 상관성 하위 해상도 이미지(908) 및 엔트로피 하위 해상도 이미지(910) 각각은 입력 이미지 내의 각각의 블록(예로서, 16 x 16 픽셀 영역)에 대한 픽셀을 포함한다. 공간 예측기 하위 해상도 이미지(906)는 입력 이미지의 각각의 블록에 대해 선택된 공간 예측기들을 저장한다. 컬러 상관성 하위 해상도 이미지(908)는 입력 이미지 내의 각각의 블록에 대한 컬러 상관성 팩터들을 저장한다. 엔트로피 하위 해상도 이미지(910)는 입력 이미지의 각각의 블록에 대한 엔트로피 코드들의 세트들에 대한 참조들을 저장한다.
일 실시예에 따르면, 이머징 팔레트(920)는 각각의 엔트리가 해시 인덱스(922) 및 팔레트 값(924)을 포함하는 해시 테이블이다. 팔레트 값들(924)은 컬러들을 포함한다. 해시 인덱스(922)는 대응하는 컬러 값들 중 하나로부터의 비트들을 이용하여 계산된 인덱스에 대응한다.
이차원 코드 테이블(930)은 선택된 픽셀 거리들에 대한 짧은 코드들로 구성된다. 짧은 코드들은 이미지 내의 픽셀 위치들 간의 이차원 거리들을 나타낸다. 이차원 코드 테이블(930)의 각각의 엔트리는 2개의 픽셀 사이의 픽셀 거리를 나타내는 상대적 픽셀 거리 엔트리(932), 및 그 거리를 표현하는 짧은 이차원 코드(936)를 포함할 수 있다.
공간 예측기 코드 테이블(940)은 복수의 공간 예측기를 표현하는 코드들로 구성된다. 전술한 바와 같이, 공간 예측기는 개별 픽셀 또는 둘 이상의 픽셀의 조합에 기초할 수 있다.
도 10은 압축된 엔트로피 코딩된 이미지(904)를 저장할 수 있는 파일 포맷(1000)의 내용의 블록도를 나타낸다. 이미지 포맷(1000)은 압축된 엔트로피 코딩된 입력 이미지(904)를 영구 메모리에 저장하는 데 사용될 수 있다. 더욱이, 이미지 포맷(1000)은 압축된 엔트로피 코딩된 입력 이미지(904)를 압축 해제를 위해 다른 엔티티로 전송하기 위한 포맷으로서 사용될 수 있다. 이 분야의 기술자는 다른 요소들이 파일 포맷(1000)에 포함될 수 있다는 것을 이해할 것이다.
이미지 크기(1002)는 이미지 파일의 크기를 나타낸다. 크기는 바이트 단위로 지정될 수 있다. 블록 크기(1006)는 압축 프로세스에서 사용된 블록들의 크기(예를 들어, 16 x 16 픽셀들)를 나타낸다. 팔레트 해시 정보(1004)는 해시 인덱스 크기 및 팔레트 엔트리들을 포함하지만 이에 한정되지 않는 컬러 팔레트에 대한 정보를 나타낸다. 저장된 엔트로피 하위 해상도 이미지(1012), 저장된 컬러 상관성 하위 해상도 이미지(1014) 및 저장된 공간 예측기 하위 해상도 이미지(1016)는 저장된 각각의 하위 해상도 이미지이다. 저장된 엔트로피 하위 해상도 이미지는 엔트로피 코드 세트들(1008)에 대한 참조들을 포함할 수 있다. 예를 들어, 참조는 엔트로피 코드 세트들(1008)로부터의 엔트로피 코드 세트를 식별하는 정수일 수 있다. 전술한 바와 같이, 각각의 하위 해상도 이미지는 입력 이미지를 압축 및 저장하는 데 사용된 것과 동일한 프로세스를 이용하여 순환 방식으로 저장될 수 있다. 저장된 압축된 엔트로피 코딩된 입력 이미지(1022)는 압축된 엔트로피 코딩된 입력 이미지의 비트 스트림이다.
예를 들어 저장된 압축된 엔트로피 코딩된 입력 이미지(1022)와 같이 방법(100)을 이용하여 인코딩된 이미지의 수신시, 대응하는 디코더가 단계 116-102 중 일부 단계의 반전을 수행하여, 압축 해제되고 디코딩된 입력 이미지를 획득할 수 있다. 도 11은 일 실시예에 따른, 디코딩 프로세스를 수행하는 방법(1100)을 도시한다.
단계 1102에서, 압축된 엔트로피 코딩된 이미지 파일을 처리하여, 압축된 엔트로피 코딩된 입력 이미지, 압축된 하위 해상도 이미지들, 및 입력 이미지를 복원하기 위한 압축 해제에 필요한 다른 정보를 획득한다. 압축된 하위 해상도 이미지들은 엔트로피 코드 하위 해상도 이미지, 공간 예측기 하위 해상도 이미지 및 컬러 상관성 하위 해상도 이미지의 압축 버전들을 포함한다. 압축된 엔트로피 코딩된 이미지 파일의 내용은 도 10과 관련하여 위에서 설명되었다. 전술한 바와 같이, 각각의 압축된 하위 해상도 이미지는 입력 이미지를 압축하는 데 사용된 것과 동일한 방법(100)을 순환적으로 이용하여 저장되었을 수 있다. 따라서, 방법(1100)은 각각의 압축된 엔트로피 코딩된 하위 해상도 이미지에 대해 각각 수행되어, 대응하는 압축 해제된 하위 해상도 이미지들을 획득할 수 있다. 설명의 편의를 위해, 방법(1100)의 단계들은 입력 이미지의 디코딩과 관련하여 후술된다.
단계 1104에서, 엔트로피 코딩된 입력 이미지의 디코딩이 수행된다. 입력 이미지를 인코딩하는 데 사용되는 엔트로피 코드들은 엔트로피 코드 하위 해상도 이미지 내의 대응하는 픽셀에 기초하여 결정된다. 전술한 바와 같이, 엔트로피 코드 하위 해상도 이미지의 각각의 픽셀은 입력 이미지 내의 블록에 대응하며, 블록에 대해 사용되는 엔트로피 코드 세트를 지정한다. 엔트로피 코드 하위 해상도 이미지는 대응하는 엔트로피 코드 세트에 대한 각각의 블록을 위한 참조를 포함할 수 있다. 엔트로피 코드 세트들은 디코더에 대해 개별적으로, 분해된 이미지에서 또는 개별 전송을 통해 이용 가능할 수 있다. 엔트로피 코드들을 디코딩함으로써, 엔트로피 코딩된 입력 이미지로부터 압축된 입력 이미지가 획득된다.
단계 1106에서, 이차원 장소 변환이 반전된다. 예를 들어, 이차원 장소 변환 코드가 포함된 압축된 입력 이미지 내의 각각의 위치에서, 값이 대응하는 실제 픽셀 거리로 대체된다. 이차원 장소 변환 거리 코드들은 디코더에 대해 개별적으로, 분해된 이미지에서, 개별 전송을 통해 또는 구성을 통해 이용 가능할 수 있다.
단계 1108에서, 압축된 입력 이미지가 압축 해제된다. 전술한 바와 같이, 입력 이미지의 압축 동안, 역방향 참조, 픽셀 또는 팔레트 참조 중 하나를 입력 이미지의 좌상(top-left) 픽셀로부터 우하(bottom-right) 픽셀까지 각각의 픽셀 위치 내에 삽입함으로써 픽셀 기반 압축이 수행되었다. 압축 해제 동안, 압축된 입력 이미지를 좌상 픽셀로부터 우하 픽셀까지 트래버싱하여, 역방향 참조로부터의 데이터, 픽셀 값 또는 컬러 팔레트로부터의 값을 삽입한다. 입력 이미지의 초기 압축과 관련하여 전술한 바와 같이, 이머징 팔레트는 압축 해제 프로세스가 압축된 입력 이미지의 픽셀들을 통해 진행함에 따라 구성된다. 압축된 픽셀 위치들이 트래버싱됨에 따라, 컬러 값들의 해시 테이블을 채움으로써 이머징 팔레트가 동적으로 구성된다. 팔레트 인덱스가 삽입된, 압축된 입력 이미지 내의 위치를 만날 때, 이것은 동적으로 구성된 이머징 팔레트로부터의 대응하는 컬러 값으로 대체된다. 픽셀 압축 해제 단계(1108)로부터의 출력은 인코더에 의해 수행된 컬러 공간 변환, 공간 예측 및 다른 전처리 단계들의 인코딩들을 여전히 포함하는 압축 해제된 입력 이미지이다.
단계 1110에서, 입력 이미지 내의 컬러 공간 변환들이 디코딩된다. 인코딩된 컬러 공간 변환들은 전술한 바와 같이 각각의 상관성 팩터에 기초하는 적색 및 청색에 대한 예측 에러들로 컬러 값들을 대체하였다. 상관성 팩터들은 컬러 상관성 하위 해상도 이미지 내에서 이용 가능하다. 컬러 상관성 하위 해상도 이미지 내에 저장된 상관성 팩터들을 이용하여, 디코딩 프로세스는 컬러 값들을 컬러 상관성을 갖지 않은 그들의 값들로 복귀시킨다.
단계 1112에서, 인코딩 동안 수행된 공간 예측이 반전된다. 공간 예측은 공간 예측 하위 해상도 이미지에서 이용 가능한 공간 예측기들을 이용하여 반전된다. 각각의 픽셀에 대해, 예측 값 또는 더 정확하게는 예측 에러 값이 실제의 대응하는 픽셀 값으로 대체된다.
단계 1114에서, 인코더에 의해 수행된 하나 이상의 전처리 단계들이 반전된다. 인코딩 동안 수행된 전처리 단계들은 예를 들어 알파 대체, 컬러 개별화 및 팔레트 선택 중 하나 이상을 포함할 수 있다. 이들 전처리 단계 각각은 인코딩 방법(100)과 관련하여 전술하였다.
방법(1100)의 완료시, 최초 입력 이미지의 디코딩된 버전이 획득된다.
도 12는 일 실시예에 따른 디코더(1200)를 도시한다. 디코더(1200)는 입력 이미지 디코더(1201) 및 이미지 파일 분해기(1202)를 포함한다. 입력 이미지 디코더(1201)는 엔트로피 디코더(1204), 이차원 변환 디코더(1206), 픽셀 압축 해제기(1208), 팔레트 생성기(1210), 컬러 공간 변환 디코더(1212), 공간 예측 디코더(1214) 및 전처리 디코더(1216)를 포함한다. 일 실시예에 따르면, 디코더(1200)는 방법(100)과 같은 프로세스를 이용하여 이전에 인코딩된 이미지를 디코딩하기 위해 방법(1200)을 수행한다.
이미지 파일 분해기(1202)는 방법(100)과 같은 인코딩 프로세스에 의해 생성된, 압축된 인코딩된 이미지 파일을 입력으로서 취하고, 인코딩된 압축된 입력 이미지, 하위 해상도 이미지들, 및 입력 이미지의 디코딩을 돕는 다른 저장된 컴포넌트들을 추출하도록 동작한다. 도 10은 이미지 파일 분해기(1202)에 입력되는 압축된 인코딩된 이미지 파일의 예시적인 포맷을 도시한다. 입력 이미지 디코더(1201)는 후술하는 바와 같이 인코딩된 압축된 입력 이미지를 디코딩하도록 동작한다. 일 실시예에 따르면, 하위 해상도 이미지들 각각도 입력 이미지 디코더(1201)를 이용하여 디코딩된다.
엔트로피 디코더(1204)는 인코딩 프로세스에 의해 압축된 입력 이미지에 대해 수행된 엔트로피 인코딩을 반전시키도록 동작한다. 엔트로피 디코딩 프로세스는 (압축된 인코딩된 이미지 파일로부터 디코딩된) 엔트로피 하위 해상도 이미지를 이용하여 입력 이미지의 각각의 블록에 대한 엔트로피 코드를 선택한다.
이차원 변환 디코더(1206)는 인코더에 의해 압축된 입력 이미지에 삽입된 이차원 변환 코드들을 실제 픽셀 거리들로 대체하도록 동작한다.
픽셀 압축 해제기(1208)는 인코더에 의해 수행된 초기 압축을 반전시키도록 동작한다. 일 실시예에 따르면, 이미지 압축 해제기는 이차원 거리 코드들이 대체된 후의 엔트로피 디코딩된 압축된 이미지를 입력으로서 취한다. 압축 해제 동안, 압축된 입력 이미지를 좌상 픽셀로부터 우하 픽셀까지 트래버싱하여, 역방향 참조로부터의 데이터, 픽셀 값 또는 컬러 팔레트로부터의 값을 삽입한다.
팔레트 생성기(1210)는 입력 이미지의 압축 해제 동안 (위에서 "이머징 팔레트"로서 지칭된) 컬러 팔레트를 동적으로 생성하도록 동작한다. 방법(1100)의 단계 1108과 관련하여 설명된 바와 같이, 압축된 픽셀 위치들이 트래버싱됨에 따라, 컬러 값들의 해시 테이블을 채움으로써 이머징 팔레트가 동적으로 구성된다.
컬러 공간 변환 디코더(1212)는 압축 해제된 입력 이미지를 입력으로서 취하고, 인코더에 의해 삽입된 컬러 공간 변환 코딩을 반전시키도록 동작한다. 컬러 공간 하위 해상도 이미지 내에 블록별로 저장된 컬러 상관기들은 컬러 공간 변환을 디코딩하는 데 사용된다. 컬러 공간 디코딩은 방법(1100)의 단계 1110과 관련하여 전술하였다.
공간 예측 디코더(1214)는 인코딩 프로세스 동안 인코딩된 공간 예측들을 디코딩하도록 동작한다. 각각의 블록에 대한 공간 예측기들은 공간 예측기 하위 해상도 이미지에서 이용 가능하다.
전처리 디코더(1216)는 예를 들어 인코딩 프로세스 동안 수행되었을 수 있는 알파 대체, 컬러 개별화 및 팔레트 선택과 같은 전처리 단계들 중 임의의 단계를 반전시키도록 동작한다. 전처리 디코더(1216)의 출력은 완전히 디코딩된 입력 이미지이다.
도 13은 도 1-7에 도시된 인코딩 방법들, 도 11에 도시된 디코딩 방법, 인코더(800) 및/또는 디코더(1200)와 같은 실시예들이 구현될 수 있는 컴퓨터 시스템(1300)을 도시한다. 시스템(1300)은 명령어들을 실행하고 픽셀 정보를 포함하는 정보를 처리하기 위한 임의의 컴퓨터 또는 전자 프로세서를 포함할 수 있는 프로세서(1302)를 포함한다. 프로세서(1302)는 명령어들의 임의의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(1302)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(1302)는 예를 들어 컴퓨터, 이동 컴퓨팅 장치, 스마트폰, 셋톱 박스, 엔터테인먼트 플랫폼, 서버, 카메라 또는 다른 이미지 캡처 장치, 서버 팜, 클라우드 컴퓨터 등에 포함될 수 있다.
프로세서(1302)는 버스(1308)를 통해 메모리(1304)에 접속될 수 있다. 메모리(1304)는 시스템(1300)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(1304)는 예를 들어 랜덤 액세스 메모리(RAM:random access memory) 및/또는 동적 RAM(DRAM:dynamic RAM)을 포함할 수 있다. 메모리(1304)는 시스템(1300)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(1304)는 예를 들어 이미지 처리 모듈(112)의 명령어들을 포함하는 시스템(1300)의 명령어들을 저장하는 데에도 사용될 수 있다. 시스템(1300)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(1302)를 포함할 수 있다.
버스(1308)는 시스템(1300)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(1308)는 예를 들어 시스템(1300)의 컴포넌트들 사이에, 예를 들어 프로세서(1302)와 메모리(1304) 사이에 데이터를 운반할 수 있다. 버스(1308)는 시스템(1300)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치(1306)는 (예를 들어, 메모리(1304)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 시스템(1300)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치(1306)는 시스템(1300) 내의 프로세서(1302)에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 영구 저장 장치(1306)는 예를 들어 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스(1310)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 압축될 이미지들이 입출력 장치 인터페이스(1310)를 통해 수신될 수 있다.
네트워크 인터페이스(1312)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(1312)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 압축될 이미지들은 네트워크 인터페이스(1312)를 통해 수신될 수 있다.
위에서 본 발명은 지정된 기능들 및 이들의 관계들의 구현을 예시하는 기능 빌딩 블록들의 도움으로 설명되었다. 본 명세서에서 이러한 기능 빌딩 블록들의 경계들은 설명의 편의를 위해 임의로 정의되었다. 지정된 기능들 및 이들의 관계들이 적절히 수행되는 한, 대안 경계들이 정의될 수 있다.
특정 실시예들의 위의 설명은 본 발명의 일반 특성을 충분히 개시하며, 따라서 본 발명의 일반 개념으로부터 벗어나지 않고 과도한 실험 없이도 기술 내의 지식을 적용함으로써 다양한 응용들을 위해 그러한 특정 실시예들을 쉽게 변경 및/또는 적응시킬 수 있다. 따라서, 그러한 적응들 및 변경들은 본 명세서에서 제공되는 가르침 및 인도에 기초하여, 개시된 실시예들의 균등물들의 의미 및 범위 내에 있는 것으로 의도된다. 본 명세서의 표현 또는 용어는 한정이 아니라 설명의 목적을 위한 것이며, 따라서 본 명세서의 용어 또는 표현은 기술자에 의해 가르침 및 인도를 고려하여 해석되어야 한다는 것을 이해해야 한다.
본 발명의 넓이 및 범위는 임의의 전술한 실시예들에 의해 한정되는 것이 아니라, 오직 아래의 청구항들 및 이들의 균등물들에 따라 정의되어야 한다.
Claims (28)
- 입력 이미지를 압축하기 위한 방법으로서,
상기 입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하는 단계;
하위 해상도 이미지를 생성하는 단계 - 상기 하위 해상도 이미지에서의 각각의 픽셀은 상기 복수의 엔트로피 코드 세트 중 하나의 엔트로피 코드 세트를 저장하고, 상기 엔트로피 코드 세트는 상기 입력 이미지에서의 대응하는 픽셀들을 인코딩함 -;
엔트로피 코드를 포함하는 압축 파라미터를 제어하기 위해 상기 생성된 하위 해상도 이미지를 이용하여 상기 입력 이미지를 인코딩하는 단계; 및
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지를 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계
를 포함하는, 입력 이미지 압축 방법. - 입력 이미지를 압축하기 위한 방법으로서,
상기 입력 이미지로부터, 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지들을 생성하는 단계 - 상기 각각의 하위 해상도 이미지들 각각에서의 각각의 픽셀은 상기 복수의 압축 파라미터 중 하나의 압축 파라미터를 인코딩하고, 상기 압축 파라미터는 상기 입력 이미지에서의 픽셀들의 세트를 인코딩함 -;
상기 복수의 압축 파라미터 각각을 제어하기 위해 상기 각각의 하위 해상도 이미지들을 이용하여 상기 입력 이미지를 인코딩하는 단계; 및
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지들을 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계
를 포함하는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 각각의 하위 해상도 이미지들을 생성하는 단계는,
상기 입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하는 단계; 및
제1 하위 해상도 이미지를 생성하는 단계 - 상기 제1 하위 해상도 이미지에서의 각각의 픽셀은 상기 복수의 엔트로피 코드 세트 중 하나의 엔트로피 코드 세트를 저장하고, 상기 엔트로피 코드 세트는 상기 입력 이미지에서의 대응하는 픽셀들을 인코딩함 -
를 포함하는, 입력 이미지 압축 방법. - 제3항에 있어서,
상기 복수의 엔트로피 코드 세트를 결정하는 단계는,
상기 입력 이미지를 복수의 블록으로 분할하는 단계;
상기 복수의 블록으로부터의 각각의 블록들에 대한 엔트로피 통계치들을 결정하는 단계;
복수의 블록 클러스터를 형성하기 위해 상기 결정된 엔트로피 통계치들의 유사성들에 따라 상기 복수의 블록을 클러스터링하는 단계; 및
상기 블록 클러스터들 각각에 대한 엔트로피 코드를 결정하는 단계
를 포함하는, 입력 이미지 압축 방법. - 제4항에 있어서,
형성되는 블록 클러스터들의 수는 상기 제1 하위 해상도 이미지의 비트들에서의 크기의 최소화에 기초하여 결정되는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 각각의 하위 해상도 이미지들을 생성하는 단계는,
상기 입력 이미지의 각각의 블록에 대해, 예측의 엔트로피를 줄이도록 구성되는 공간 예측기를 결정하는 단계; 및
상기 각각의 블록들에 대한 상기 공간 예측기를 포함하는 제2 하위 해상도 이미지를 생성하는 단계
를 포함하는, 입력 이미지 압축 방법. - 제6항에 있어서,
상기 입력 이미지를 인코딩하는 단계는 상기 제2 하위 해상도 이미지로부터 상기 입력 이미지의 각각의 블록들에 대한 상기 공간 예측기를 결정하는 단계를 포함하는, 입력 이미지 압축 방법. - 제6항에 있어서,
상기 공간 예측기들을 결정하는 단계는 상기 블록에 대한 인코딩 비용, 상기 복수의 블록에 대한 예측 에러, 및 이웃 픽셀들에 대해 선택된 공간 예측기들에 대한 편향성(bias)의 최소화에 또한 기초하는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 각각의 하위 해상도 이미지들을 생성하는 단계는,
상기 입력 이미지의 각각의 블록들에 대해, 상기 블록의 픽셀들 내의 둘 이상의 컬러 컴포넌트 사이의 상관성들에 대응하는 컬러 상관성 팩터들을 결정하는 단계; 및
상기 각각의 블록들에 대한 상기 컬러 상관성 팩터들을 포함하는 제3 하위 해상도 이미지를 생성하는 단계
를 포함하는, 입력 이미지 압축 방법. - 제9항에 있어서,
상기 블록에 대한 상기 컬러 상관성 팩터들을 결정하는 단계는,
녹색 컴포넌트, 적색 컴포넌트 및 청색 컴포넌트 중 임의의 2개의 컴포넌트 사이의 상관성들; 및
상기 블록 내의 적색 및 청색 채널들 내의 엔트로피의 감소
에 또한 기초하는, 입력 이미지 압축 방법. - 제9항에 있어서,
상기 입력 이미지를 인코딩하는 단계는 상기 제3 하위 해상도 이미지로부터 액세스되는 상기 컬러 상관성 팩터들을 적어도 부분적으로 이용하여 예측 에러를 결정하는 단계를 포함하는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 입력 이미지를 인코딩하는 단계는 개별 엔트로피 코드들을 이용하여 적색, 청색, 녹색 및 알파 채널들을 인코딩하는 단계를 포함하는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 입력 이미지를 인코딩하는 단계는 상기 입력 이미지의 하나 이상의 블록의 각각의 그룹들에 대해 국지적으로 컬러 팔레트(color palette)를 결정하는 단계를 포함하는, 입력 이미지 압축 방법. - 제13항에 있어서,
상기 컬러 팔레트는 해싱 기술을 이용하여 동적으로 결정되는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지들을 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계는 제1 인코딩 기술을 이용하여 상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지들을 저장하는 단계를 포함하는, 입력 이미지 압축 방법. - 제2항에 있어서,
상기 인코딩하는 단계는
중간 이미지를 생성하기 위해, 상기 입력 이미지 내의 각각의 픽셀들에 대해, 각각의 비용들에 기초하여, 역방향 참조(backward reference)를 더 일찍 발생한 픽셀에 삽입하는 것, 상기 픽셀을 삽입하는 것 또는 컬러 팔레트 엔트리로부터의 인덱스를 삽입하는 것 중 하나로부터의 동작을 선택하는 단계; 및
상기 중간 이미지의 제1 픽셀로부터 최종 픽셀까지의 동작들의 최소 비용 경로를 결정하는 단계
를 포함하는, 입력 이미지 압축 방법. - 제16항에 있어서,
상기 역방향 참조는 픽셀들에서 지정되는, 입력 이미지 압축 방법. - 제16항에 있어서,
상기 역방향 참조는 이차원 평면에서의 거리에 대한 사전 결정된 거리 코드들을 이용하여 지정되는, 입력 이미지 압축 방법. - 제16항에 있어서,
상기 각각의 비용들 각각은 대응하는 동작에 대한 출력 비트들의 수를 포함하는, 입력 이미지 압축 방법. - 제2항에 있어서,
오프셋을 이용하여 상기 입력 이미지 내의 반투명 적색, 녹색 및 청색 값들을 갖는 픽셀들의 알파 값들을 조정하는 단계를 더 포함하는, 입력 이미지 압축 방법. - 제20항에 있어서,
상기 알파 값들을 조정하는 단계는 결과적인 예측 에러들에서 새로운 심벌들을 줄이기 위해 상기 입력 이미지 내의 컬러들의 동적 범위를 팩킹(packing)시키는 단계를 포함하는, 입력 이미지 압축 방법. - 인코더로서,
프로세서;
상기 프로세서에 결합된 메모리;
상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하고;
하위 해상도 이미지를 생성하게 하도록 구성되는 엔트로피 코드 생성 모듈 - 상기 하위 해상도 이미지에서의 각각의 픽셀은 상기 복수의 엔트로피 코드 세트 중 하나의 엔트로피 코드 세트를 저장하고, 상기 엔트로피 코드 세트는 상기 입력 이미지에서의 대응하는 픽셀들을 인코딩함 -;
상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
압축 파라미터를 제어하기 위해 상기 생성된 하위 해상도 이미지를 이용하여 상기 입력 이미지를 인코딩하게 하도록 구성되는 이미지 저장 모듈; 및
상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지를 압축된 엔트로피 코딩된 이미지 파일로서 출력하게 하도록 구성되는 압축된 이미지 파일 출력 모듈
을 포함하는 인코더. - 제22항에 있어서,
상기 엔트로피 코드 생성 모듈은 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
상기 입력 이미지를 복수의 블록으로 분할하고;
상기 복수의 블록으로부터의 각각의 블록들에 대한 엔트로피 통계치들을 결정하고;
복수의 블록 클러스터를 형성하기 위해 상기 결정된 엔트로피 통계치들의 유사성들에 따라 상기 복수의 블록을 클러스터링하고;
상기 블록 클러스터 각각에 대한 엔트로피 코드를 결정하게 하도록 또한 구성되는 인코더. - 제22항에 있어서,
상기 압축된 이미지 파일 출력 모듈은 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 제1 인코딩 기술을 이용하여 상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지의 인코딩된 버전을 저장하게 하도록 또한 구성되는 인코더. - 컴퓨팅 장치에 의해 실행될 때 상기 컴퓨팅 장치로 하여금,
입력 이미지 내의 통계적으로 유사한 영역들에 기초하여 복수의 엔트로피 코드 세트를 결정하는 동작;
하위 해상도 이미지를 생성하는 동작 - 상기 하위 해상도 이미지에서의 각각의 픽셀은 상기 복수의 엔트로피 코드 세트 중 하나의 엔트로피 코드 세트를 저장하고, 상기 엔트로피 코드 세트는 상기 입력 이미지에서의 대응하는 픽셀들을 인코딩함 -;
엔트로피 코드를 포함하는 압축 파라미터를 제어하기 위해 상기 생성된 하위 해상도 이미지를 이용하여 상기 입력 이미지를 인코딩하는 동작; 및
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지를 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 동작
을 포함하는 동작들을 수행하게 하는 명령어들이 인코딩되어 있는 컴퓨터 판독 가능 저장 매체를 포함하는 제조물(article of manufacture). - 인코딩된 입력 이미지를 압축 해제하기 위한 방법으로서,
상기 인코딩된 입력 이미지 및 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지들에 액세스하기 위해, 압축된 엔트로피 코딩된 이미지 파일을 분해하는 단계 - 상기 각각의 하위 해상도 이미지들 각각에서의 각각의 픽셀은 상기 복수의 압축 파라미터 중 하나의 압축 파라미터를 인코딩하고, 상기 압축 파라미터는 원래의 이미지에서의 픽셀들의 세트를 인코딩함 -;
상기 복수의 압축 파라미터 각각을 제어하기 위해 상기 각각의 하위 해상도 이미지들을 이용하여 상기 인코딩된 입력 이미지를 디코딩하는 단계; 및
상기 디코딩된 입력 이미지를 출력하는 단계
를 포함하는, 인코딩된 입력 이미지 압축 해제 방법. - 디코더로서,
프로세서;
상기 프로세서에 결합된 메모리;
상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
인코딩된 압축된 입력 이미지 및 복수의 압축 파라미터 각각에 대한 각각의 하위 해상도 이미지들에 액세스하기 위해, 압축된 엔트로피 코딩된 이미지 파일을 분해하게 하도록 구성되는 이미지 파일 분해기 - 상기 각각의 하위 해상도 이미지들 각각에서의 각각의 픽셀은 상기 복수의 압축 파라미터 중 하나의 압축 파라미터를 인코딩하고, 상기 압축 파라미터는 원래의 이미지에서의 픽셀들의 세트를 인코딩함 -; 및
상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
상기 복수의 압축 파라미터 각각을 제어하기 위해 상기 각각의 하위 해상도 이미지들을 이용하여 상기 인코딩된 입력 이미지를 디코딩하게 하도록 구성되는 입력 이미지 디코더
를 포함하는 디코더. - 입력 이미지를 압축하기 위한 방법으로서,
상기 입력 이미지의 복수의 블록에 대해, 예측의 엔트로피를 줄이도록 구성된 각각의 공간 예측기들을 결정하는 단계 - 상기 결정하는 단계는 상기 복수의 블록에 대한 인코딩 비용, 상기 복수의 블록에 대한 예측 에러들, 및 이웃 픽셀들에 대해 선택된 공간 예측기들에 대한 편향성을 최소화하는 단계를 포함함 -;
각각의 블록들에 대한 공간 예측기들을 포함하는 하위 해상도 이미지들을 생성하는 단계;
복수의 압축 파라미터 각각을 제어하기 위해 상기 하위 해상도 이미지들을 이용하여 상기 입력 이미지를 인코딩하는 단계; 및
상기 인코딩된 입력 이미지 및 상기 생성된 하위 해상도 이미지들을 압축된 엔트로피 코딩된 이미지 파일로서 출력하는 단계
를 포함하는, 입력 이미지 압축 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/288,445 | 2011-11-03 | ||
US13/288,445 US8615138B2 (en) | 2011-11-03 | 2011-11-03 | Image compression using sub-resolution images |
PCT/US2012/063290 WO2013067327A2 (en) | 2011-11-03 | 2012-11-02 | Image compression using sub-resolution images |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130143678A KR20130143678A (ko) | 2013-12-31 |
KR101461209B1 true KR101461209B1 (ko) | 2014-11-14 |
Family
ID=47295153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137032384A KR101461209B1 (ko) | 2011-11-03 | 2012-11-02 | 2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치 |
Country Status (9)
Country | Link |
---|---|
US (2) | US8615138B2 (ko) |
EP (1) | EP2761873A2 (ko) |
JP (1) | JP2014525183A (ko) |
KR (1) | KR101461209B1 (ko) |
CN (1) | CN103703779B (ko) |
AU (1) | AU2012332327B2 (ko) |
CA (1) | CA2831967C (ko) |
DE (1) | DE202012013410U1 (ko) |
WO (1) | WO2013067327A2 (ko) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8615138B2 (en) | 2011-11-03 | 2013-12-24 | Google Inc. | Image compression using sub-resolution images |
EP2865185A4 (en) * | 2012-06-26 | 2016-08-03 | Intel Corp | LAYER AND CHANNEL SURVEY SAMPLING |
US9654777B2 (en) | 2013-04-05 | 2017-05-16 | Qualcomm Incorporated | Determining palette indices in palette-based video coding |
US10291827B2 (en) | 2013-11-22 | 2019-05-14 | Futurewei Technologies, Inc. | Advanced screen content coding solution |
JP6164360B2 (ja) * | 2014-03-14 | 2017-07-19 | 富士通株式会社 | 画像符号化装置、画像復号装置、画像符号化方法、及び画像復号方法 |
WO2015139176A1 (zh) * | 2014-03-17 | 2015-09-24 | 富士通株式会社 | 基于调色板的编码装置、方法以及图像处理设备 |
CA2942737A1 (en) * | 2014-03-17 | 2015-09-24 | Nokia Technologies Oy | Method and technical equipment for video encoding and decoding |
CN106030651B (zh) | 2014-03-21 | 2019-06-07 | 华为技术有限公司 | 利用改进的颜色表和索引图编码方法的高级屏幕内容编码 |
US10091512B2 (en) | 2014-05-23 | 2018-10-02 | Futurewei Technologies, Inc. | Advanced screen content coding with improved palette table and index map coding methods |
JP6328277B2 (ja) * | 2014-06-20 | 2018-05-23 | 寰發股▲ふん▼有限公司HFI Innovation Inc. | ビデオ符号化(coding)のパレット予測器シグナリング方法 |
US10687064B2 (en) | 2014-08-04 | 2020-06-16 | Qualcomm Incorporated | Palette mode encoding and decoding with inferred pixel scan order |
KR102216656B1 (ko) | 2014-09-02 | 2021-02-17 | 삼성전자주식회사 | 이미지 처리 방법 및 그 전자 장치 |
US10158866B2 (en) * | 2014-09-26 | 2018-12-18 | Qualcomm Incorporated | Parsing dependency reduction for palette index coding |
GB2531005A (en) | 2014-10-06 | 2016-04-13 | Canon Kk | Improved encoding process using a palette mode |
AU2015345649A1 (en) | 2014-11-12 | 2017-06-08 | Hfi Innovation Inc. | Methods of escape pixel coding in index map coding |
CN114630131B (zh) * | 2014-11-12 | 2023-11-07 | 寰发股份有限公司 | 索引映射编解码中的跳出像素编解码方法 |
JP6122516B2 (ja) | 2015-01-28 | 2017-04-26 | 財團法人工業技術研究院Industrial Technology Research Institute | エンコーディング方法及びエンコーダ |
EP3248377B1 (en) * | 2015-02-16 | 2022-05-04 | HFI Innovation Inc. | Method and apparatus for palette predictor initialization for palette coding in video and image compression |
US10148981B2 (en) * | 2015-03-20 | 2018-12-04 | Mediatek Singapore Pte. Ltd. | Methods of palette coding with inter-prediction in video coding |
US9460365B1 (en) | 2015-03-24 | 2016-10-04 | Intel Corporation | Clustered palette compression |
CN107534782B (zh) * | 2015-04-08 | 2020-09-08 | 寰发股份有限公司 | 视频编解码中调色板模式编解码方法 |
US9544608B1 (en) | 2015-07-03 | 2017-01-10 | Microsoft Technology Licensing, Llc | Lossless image compression for few-colored images |
US10356432B2 (en) * | 2015-09-14 | 2019-07-16 | Qualcomm Incorporated | Palette predictor initialization and merge for video coding |
CN105578191B (zh) * | 2015-12-15 | 2018-12-07 | 辽宁师范大学 | 基于直方图滑动窗口的索引图基色选择方法 |
CN108121764B (zh) | 2016-11-26 | 2022-03-11 | 星克跃尔株式会社 | 图像处理装置、图像处理方法、电脑程序及电脑可读取记录介质 |
US11892311B2 (en) | 2016-11-26 | 2024-02-06 | Thinkware Corporation | Image processing apparatus, image processing method, computer program and computer readable recording medium |
JP7320352B2 (ja) * | 2016-12-28 | 2023-08-03 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元モデル送信方法、三次元モデル受信方法、三次元モデル送信装置及び三次元モデル受信装置 |
US10872180B2 (en) * | 2017-01-20 | 2020-12-22 | Hamilton Sunstrand Corporation | Complex feature cloning in additive manufacturing datasets |
US10313715B2 (en) * | 2017-04-27 | 2019-06-04 | Nanning Fugui Precision Industrial Co., Ltd. | Transmission method for video data and device employing same |
CN110915215B (zh) * | 2017-05-26 | 2024-03-08 | 谷歌有限责任公司 | 使用神经网络的图块化图像压缩 |
US10362319B2 (en) * | 2017-06-04 | 2019-07-23 | Apple Inc. | Techniques for compressing multiple-channel images |
US10362325B2 (en) * | 2017-06-04 | 2019-07-23 | Apple Inc. | Techniques for compressing multiple-channel images |
CN107801026B (zh) * | 2017-11-09 | 2019-12-03 | 京东方科技集团股份有限公司 | 图像压缩方法及装置、图像压缩及解压缩系统 |
US10776957B2 (en) | 2018-10-02 | 2020-09-15 | Samsung Electronics Co., Ltd. | Online image compression in hardware |
US11025913B2 (en) * | 2019-03-01 | 2021-06-01 | Intel Corporation | Encoding video using palette prediction and intra-block copy |
US11770535B2 (en) * | 2021-02-19 | 2023-09-26 | Samsung Display Co., Ltd. | Systems and methods for joint color channel entropy encoding with positive reconstruction error |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947592B2 (en) * | 1997-11-27 | 2005-09-20 | Seiko Epson Corporation | Encoding method of a color image and its encoding device and a decoding method of the color image and its decoding device |
US20090060356A1 (en) | 2004-11-18 | 2009-03-05 | Maynard Stephen L | Methods and apparatus for encoding and decoding images |
KR20120112773A (ko) * | 2010-01-08 | 2012-10-11 | 노키아 코포레이션 | 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램 |
KR20120118498A (ko) * | 2010-02-08 | 2012-10-26 | 노키아 코포레이션 | 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0759086A (ja) * | 1993-07-30 | 1995-03-03 | Canon Inc | 画像処理装置 |
WO1995014350A1 (en) * | 1993-11-15 | 1995-05-26 | National Semiconductor Corporation | Quadtree-structured walsh transform coding |
US5805735A (en) * | 1995-03-02 | 1998-09-08 | Apple Computer, Inc. | Method and apparatus for compression of digitized image data using variable color fidelity |
JPH09200535A (ja) * | 1996-01-18 | 1997-07-31 | Canon Inc | 画像処理装置およびその方法 |
US6563953B2 (en) | 1998-11-30 | 2003-05-13 | Microsoft Corporation | Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock |
US6853755B2 (en) * | 2001-03-28 | 2005-02-08 | Sharp Laboratories Of America, Inc. | Method and apparatus for adaptive compression of scanned documents |
US7688894B2 (en) | 2003-09-07 | 2010-03-30 | Microsoft Corporation | Scan patterns for interlaced video content |
EP1538844A3 (en) * | 2003-11-26 | 2006-05-31 | Samsung Electronics Co., Ltd. | Color image residue transformation and encoding method |
JP4418762B2 (ja) * | 2004-05-07 | 2010-02-24 | キヤノン株式会社 | 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体 |
US7006700B2 (en) * | 2004-06-25 | 2006-02-28 | Avocent Corporation | Digital video compression command priority |
JP2006128944A (ja) * | 2004-10-27 | 2006-05-18 | Canon Inc | 情報処理装置及び情報処理方法、画像形成装置、プログラム、記憶媒体、印刷システム |
JP4493551B2 (ja) * | 2005-06-09 | 2010-06-30 | オリンパスイメージング株式会社 | データ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラム |
KR101088375B1 (ko) * | 2005-07-21 | 2011-12-01 | 삼성전자주식회사 | 가변 블록 변환 장치 및 방법 및 이를 이용한 영상부호화/복호화 장치 및 방법 |
KR101200865B1 (ko) * | 2006-03-23 | 2012-11-13 | 삼성전자주식회사 | 영상의 부호화 방법 및 장치, 복호화 방법 및 장치 |
JP5143120B2 (ja) * | 2006-03-23 | 2013-02-13 | サムスン エレクトロニクス カンパニー リミテッド | 画像の符号化方法及び装置、復号化方法及び装置 |
US7778472B2 (en) * | 2006-03-27 | 2010-08-17 | Qualcomm Incorporated | Methods and systems for significance coefficient coding in video compression |
JP4771288B2 (ja) * | 2006-04-03 | 2011-09-14 | 富士ゼロックス株式会社 | データ処理装置及びプログラム |
JP4717704B2 (ja) | 2006-04-26 | 2011-07-06 | ルネサスエレクトロニクス株式会社 | データ処理装置およびデータ処理方法 |
US8275045B2 (en) | 2006-07-12 | 2012-09-25 | Qualcomm Incorporated | Video compression using adaptive variable length codes |
KR101266168B1 (ko) * | 2006-08-16 | 2013-05-21 | 삼성전자주식회사 | 영상의 부호화, 복호화 방법 및 장치 |
WO2009083838A1 (en) * | 2007-12-21 | 2009-07-09 | Koninklijke Philips Electronics, N.V. | Methods and apparatus for efficient distribution of image data |
US8705623B2 (en) * | 2009-10-02 | 2014-04-22 | Texas Instruments Incorporated | Line-based compression for digital image data |
JP2011205693A (ja) * | 2011-06-14 | 2011-10-13 | Sharp Corp | 画像復号装置及び画像符号化装置 |
US8615138B2 (en) | 2011-11-03 | 2013-12-24 | Google Inc. | Image compression using sub-resolution images |
-
2011
- 2011-11-03 US US13/288,445 patent/US8615138B2/en not_active Expired - Fee Related
-
2012
- 2012-11-02 AU AU2012332327A patent/AU2012332327B2/en active Active
- 2012-11-02 JP JP2014520416A patent/JP2014525183A/ja active Pending
- 2012-11-02 KR KR1020137032384A patent/KR101461209B1/ko active IP Right Grant
- 2012-11-02 DE DE202012013410.8U patent/DE202012013410U1/de not_active Expired - Lifetime
- 2012-11-02 CN CN201280036377.1A patent/CN103703779B/zh active Active
- 2012-11-02 EP EP12795920.3A patent/EP2761873A2/en not_active Ceased
- 2012-11-02 CA CA2831967A patent/CA2831967C/en active Active
- 2012-11-02 WO PCT/US2012/063290 patent/WO2013067327A2/en active Application Filing
-
2013
- 2013-11-15 US US14/081,323 patent/US8977066B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947592B2 (en) * | 1997-11-27 | 2005-09-20 | Seiko Epson Corporation | Encoding method of a color image and its encoding device and a decoding method of the color image and its decoding device |
US20090060356A1 (en) | 2004-11-18 | 2009-03-05 | Maynard Stephen L | Methods and apparatus for encoding and decoding images |
KR20120112773A (ko) * | 2010-01-08 | 2012-10-11 | 노키아 코포레이션 | 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램 |
KR20120118498A (ko) * | 2010-02-08 | 2012-10-26 | 노키아 코포레이션 | 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
CN103703779A (zh) | 2014-04-02 |
KR20130143678A (ko) | 2013-12-31 |
AU2012332327A1 (en) | 2013-11-21 |
US20130114893A1 (en) | 2013-05-09 |
CN103703779B (zh) | 2016-01-20 |
JP2014525183A (ja) | 2014-09-25 |
AU2012332327B2 (en) | 2014-04-10 |
US20140072239A1 (en) | 2014-03-13 |
CA2831967A1 (en) | 2013-05-10 |
US8977066B2 (en) | 2015-03-10 |
CA2831967C (en) | 2015-06-02 |
WO2013067327A3 (en) | 2013-07-25 |
US8615138B2 (en) | 2013-12-24 |
WO2013067327A2 (en) | 2013-05-10 |
EP2761873A2 (en) | 2014-08-06 |
DE202012013410U1 (de) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101461209B1 (ko) | 2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치 | |
CN102017634B (zh) | 重新排序的变换系数的多级表示 | |
CN112188197B (zh) | 通道间点云属性解码方法、装置以及可读存储介质 | |
WO2015120818A1 (zh) | 图像编码、解码方法及装置 | |
KR20160114570A (ko) | 고정폭 가변길이의 화소 샘플값 문자열의 매칭이 강화된 영상 압축 방법 및 장치 | |
JP2005333622A (ja) | イメージおよびビデオの予測可逆符号化 | |
JP2017507519A (ja) | データ符号化及び復号化 | |
CN113795870B (zh) | 一种对点云属性编解码的方法、装置及存储介质 | |
CN112218077B (zh) | 通道间点云属性编码方法、装置以及可读存储介质 | |
JP2016226001A (ja) | デコーダおよび復号方法 | |
GB2496209A (en) | Entropy encoder with first and second, bypass encoding systems | |
CN104754362B (zh) | 使用精细划分块匹配的图像压缩方法 | |
CN105027560A (zh) | 确定用于变换系数的二进制码字的方法 | |
US10652541B2 (en) | Method and device for encoding video data | |
TW202044836A (zh) | 用於視訊寫碼中的調色板語法的分組寫碼 | |
CN107770527B (zh) | 使用邻近编码参数和最近编码参数的数据压缩方法和装置 | |
KR100717002B1 (ko) | 영상 부호화 및 복호화 장치와, 그 방법, 및 이를 수행하기위한 프로그램이 기록된 기록 매체 | |
GB2496210A (en) | Context adaptive (CABAC) data encoding and decoding | |
CN106941610B (zh) | 基于改进方块编码的二值roi掩模编码方法 | |
CN107770543B (zh) | 多类匹配参数中按顺序递增截断值的数据压缩方法和装置 | |
EP1217827A1 (en) | Image encoding device and method therefor, image decoding method and method therefor, and computer-readable recorded medium on which image encoding program and image decoding program are recorded | |
US9245352B1 (en) | Systems and methods for near lossless image compression | |
KR100495001B1 (ko) | 이미지 압축 부호화 방법 및 시스템 | |
JP2024523912A (ja) | 点群属性の符号化方法、点群属性の復号方法及び端末 | |
JP2008228229A (ja) | 画像符号化装置及びその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171023 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181024 Year of fee payment: 5 |