KR102400372B1 - 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀 값들의 인코딩에 관련된 방법 및 인코더 - Google Patents
디지털 이미지의 무손실 압축을 달성하기 위한 픽셀 값들의 인코딩에 관련된 방법 및 인코더 Download PDFInfo
- Publication number
- KR102400372B1 KR102400372B1 KR1020200052826A KR20200052826A KR102400372B1 KR 102400372 B1 KR102400372 B1 KR 102400372B1 KR 1020200052826 A KR1020200052826 A KR 1020200052826A KR 20200052826 A KR20200052826 A KR 20200052826A KR 102400372 B1 KR102400372 B1 KR 102400372B1
- Authority
- KR
- South Korea
- Prior art keywords
- line
- pixels
- unencoded
- encoding
- pixel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image 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
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/413—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/4115—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures involving the recognition of specific patterns, e.g. by symbol matching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- 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/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- 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
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/88—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
-
- 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
-
- 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/93—Run-length coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩을 위한 인코더(131; 800) 및 방법. 상기 다수의 라인들의 각각에 대하여, 인코더(131; 800)는 라인의 비인코딩된 픽셀들 값들을 획득한다(701). 또한, 상기 다수의 라인들의 각각에 대하여, 인코더(131; 800)는 라인의 하나 이상의 픽셀들의 각각에 대하여, 디지털 이미지의 상기 무손실 압축에서 픽셀(x)의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를, 라인의 하나 이상의 픽셀들의 각각에 대하여 결정한다(702). 결정은 상기 비인코딩된 픽셀 값이 상기 라인의 다른 가장 근접한 이웃하는 픽셀들(N1, N2)의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초한다.
Description
본원에서의 실시예들은 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩에 관련된 방법 및 배열체들에 관한 것이다.
디지털 이미지는 전형적으로 픽셀들의 어레이(array of pixels)로서 정의된다. 어레이에서의 픽셀들의 수는 통상적으로 해상도(resolution)로서 지칭된다. 각각의 픽셀은 픽셀의 포지션(position)에 대하여 이미지에 대한 정보를 포함하는 하나 이상의 픽셀 값들에 의해 표현되고, 즉, 이러한 하나 이상의 픽셀 값들과 연관된다. 그레이스케일(grayscale) 이미지에서, 픽셀은 그 픽셀의 강도(intensity)를 설명하는 비-음수 정수 값에 의해 표현된다. 이미지의 비트-심도(bit-depth)는 픽셀이 가질 수 있는 값들의 범위를 정의한다. 그레이스케일 이미지들은 전형적으로 8 내지 16 비트들의 픽셀 심도를 가지고, 이것은 픽셀 범위가 [0; 2N-1]인 것을 의미하고, 여기서, N은 픽셀 심도이다.
산업적인 시각 카메라들 및 공장 및 로지스틱(logistic) 자동화를 위한 시스템들은 3 차원(three-dimensional; 3D) 머신 시각에 기초할 수 있고, 여기서, 객체의 3D-이미지들은 캡처된다. 3D-이미지들에 의해, 기존의 이미지에서와 같은 오직 2 차원(two-dimensions; 2D)인 픽셀들에 관한 정보, 예컨대, 강도 및/또는 컬러가 아닌, 또는 적어도 이러한 정보뿐만 아니라, "높이" 또는 "심도" 정보를 또한 포함하는 이미지들로 지칭된다. 프로세싱은 그 다음으로, 3D 이미지들로부터 객체의 특성들, 즉, 객체의 3D-특성들을 추출하고, 그리고 예컨대, 다양한 3D 이미지 포맷들로 변환하기 위하여 적용될 수 있다. 높이에 대한 이러한 정보는 범위 데이터(range data)로서 지칭될 수 있고, 여기서, 범위 데이터는 이에 따라, 이미징되고 있는 객체의 높이 측정으로부터, 또는 다시 말해서, 객체의 범위 또는 거리 측정들로부터의 데이터에 대응할 수 있다. 대안적으로 또는 추가적으로, 픽셀은 이미징된 에어리어에서의 광의 산란(scattering) 또는 광의 특정 파장의 반사와 같은 다른 재료 성질들에 대응할 수 있다.
이 때문에, 픽셀 값은 예컨대, 픽셀의 강도 및/또는 범위 데이터 및/또는 재료 성질들에 관련될 수 있다.
디지털 데이터 압축은 원래의 표현보다 더 적은 비트들을 이용하여 정보를 인코딩하는 작업이다. 이것의 목적은 전형적으로, 저장 공간을 감소시키거나 전송 대역폭을 최소화하기 위한 것이다. 디지털 파일들에서의 중복적인 정보를 최소화함으로써, 데이터는 무손실 또는 손실 중의 어느 하나로 압축될 수 있다. 비-파괴적인 것으로서 또한 알려진 무손실 압축은 압축 프로세스가 완벽하게 반전가능할 때이고, 이것은 압축이 원래의 정보의 정확한 복사본(copy)을 달성하기 위하여 반전될 수 있다는 것을 의미한다. 손실 압축은 전형적으로, 압축 알고리즘에서의 양자화(quantization) 때문에, 이것이 달성될 수 없을 때이다.
무손실 압축 기법들은 본 개시내용에서의 주요 관심사항이다.
이미지들에 대하여 설계된 압축 알고리즘들은 전형적으로, 역상관 단계(decorrelation step) 및 그 이후의 엔트로피 코딩(entropy coding)으로 구성된다. 정상적인 계속적 이미지들은 이웃하는 픽셀들 사이의 높은 상관(correlation), 즉, 공간적 중복성(spatial redundancy)을 가지므로, 역상관 단계는 이 중복성을 최소화하기 위하여 이용되고, 이에 따라, 이미지 엔트로피를 감소시킨다.
무손실 이미지 압축 기법들은 2 개의 카테고리들, 예측 기반 및 사전-기반 기법들로 분할될 수 있다.
예컨대, 소위 렘펠-지브-웰치(Lempel-Ziv-Welch; LZW) 알고리즘, 산술 코딩(arithmetic coding) 알고리즘들, 및 소위 허프만 코딩(Huffman coding) 알고리즘들을 포함하는 많은 양호하게 개발된 사전-기반 압축 알고리즘들이 있다. 이들에서는, 반복적인 그리고 빈번하게 발생하는 패턴들은 더 짧은 코드워드(codeword)들을 배정받는다. 코드워드들의 테이블은 이미지의 통계들에 기초하여 생성되고, 그 다음으로, 이미지를 인코딩하기 위하여 이용된다. 확률 테이블은 통상적으로, 이미지가 압축될 수 있는 통계적 모델을 구축하기 위하여 이미지가 2 번(또는 그 초과) 스캐닝되는 소위 2 패스 방법(two pass method)들에 의해 생성된다. 또 다른 접근법은 인코더가 핸들링할 이미지들의 가정들에 기초하여 생성되는 고정된 확률 테이블을 이용하는 것이다.
확률-기반 알고리즘들은 이웃하는, 즉, 인접한 픽셀들에 기초하여 현재의 픽셀 값을 예측함으로써, 그리고 그 다음으로, 예측과 실제적인 픽셀 값 사이의 차이의 예측 오차, 즉, 잔차 값(residual value)을 인코딩함으로써, 이미지들에서의 공간적 중복성을 활용한다. 인코딩은 하나의 패스(pass)에서 행해질 수 있다. 예측 기반 알고리즘들은 예컨대, 무손실 압축, 컨텍스트-기반(Context-based), 적응적, 무손실 이미지 코덱(Context-based, Adaptive, Lossless Image Codec; CALIC), 고속 효율적 및 무손실 이미지 압축 시스템(Fast Efficient & Lossless Image Compression System; FELICS), 및 확장된-라이스(extended-Rice) 무손실 압축의 구현인 SZIP을 지원하는 공동 사진 전문가 그룹 LS(Joint Photographic Experts Group LS; JPEG-LS)에서 이용된다.
제조, 조립, 및 품질 제어와 같은 고도로 자동화된 산업들에서는, 예컨대, 카메라 및 이미징 기반 시스템에 의해 제공된 바와 같이, 고속 및 정밀한 센서들 및 측정이 필요하다. 이러한 시스템들은 추가의 프로세싱을 위하여, 비압축된 이미지 데이터를 기가비트 이더넷(Gigabit Ethernet; GbE) 상에서 호스트 컴퓨터로 전송할 수 있다. 이미지들이 낮은 레이턴시(latency)로 수신기에서 예상되거나 심지어 필요하므로, 이더넷 링크의 대역폭은 카메라 동작을 위한 제한을 설정한다. 더 고속의 이더넷 통신을 허용하기 위한 하드웨어 업그레이드들은 높은 비용이 나오고, 스루풋(throughput)을 증가시키는 비용 효율적인 해결책들이 바람직하다.
기존의 디지털 그레이스케일 및 RGB-이미지들 뿐만 아니라 범위 데이터를 갖는 3D 이미지들은 전형적으로, 압축을 위하여 사용될 수 있는 높은 공간적 및 시간적 중복성을 가진다. JPEG-LS, CALICS, 및 런 길이 인코딩(Run Length Encoding; RLE)으로서 또한 알려진 런 길이 코딩(Run Length coding; RLC)과 같은 무손실 압축 방식들은 정보 밀도를 증가시키고 이미지 파일들의 크기를 감소시키기 위하여 이용될 수 있다. 이 때문에, 이러한 해결책들 및 충분히 높은 압축(compression) 및 압축해제(decompression) 속력은 오직 비압축된 이미지 데이터의 경우에 가능한 것과 비교하여, 통신 링크, 예컨대, 이더넷 링크(Ethernet link) 상에서 스루풋을 증가시키기 위하여 사용될 수 있다.
이 때문에, 카메라 시스템들에서는, 이미지 데이터 대역폭이 매우 높을 수 있고, 때때로, 기가비트 이더넷과 같은 물리적 전송 계층은 성능을 제한한다. 그러므로, 무손실 압축은 시스템의 성능을 증가시킬 수 있다. 무손실은 카메라 시스템이 측정들을 수행하기 위하여 이용되고 있을 때에 바람직하거나 종종 심지어 필요하다.
US 2016249064 A1은 무손실 데이터 압축 및 압축해제 장치, 시스템, 및 방법을 개시한다. 목적은 그 대역폭을 증가시키기 위하여 기가비트 이더넷 접속과 같은 무손실 방식으로 전송되어야 할 이미지 데이터의 평균 수량(quantity)을 증강(augment)시키기 위한 것이다. 압축을 위한 비디오 이미지 파일은 복수의 라인 세그먼트(line segment)들을 포함하고, 각각의 라인 세그먼트는 M 픽셀들의 길이 및 H 비트들의 헤더(header)를 가지고, 각각의 픽셀은 t 비트들에 의해 표현된다. 비인코딩된 이미지 파일로부터, 제 1 세그먼트 길이 M 픽셀들을 가지는 제 1 라인 세그먼트에서의 제 1 수의 비인코딩된 픽셀 값들이 판독된다. 비인코딩된 이미지 파일로부터, 제 2 길이 M을 가지는 제 2 라인 세그먼트의 제 2 수의 비인코딩된 픽셀 값들이 추가로 판독된다. 그 다음으로, 제 1 및 제 2 비인코딩된 픽셀 값들의 각각 사이의 차이들이 결정된다. 오직 제 1 및 제 2 비인코딩된 픽셀 값들의 각각 사이의 차이들은 세그먼트에서의 각각의 픽셀 값에 대한 주어진 수의 비트들에 대한 가장 작은 수의 비트들 t를 이용하여 인코딩되고, 여기서, t는 1 내지 N 사이의 정수로서 정의된다.
상기한 것을 고려하면, 목적은 무손실 압축을 달성하고 대역폭 제한된 통신 링크 상에서 전송을 용이하게 하기 위한 디지털 이미지의 픽셀 값들의 인코딩에 관한 것과 같은, 하나 이상의 개선들 또는 종래 기술에 대한 대안들을 제공하기 위한 것이다.
본원에서의 실시예들의 제 1 양태에 따르면, 목적은 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩을 위한 인코더에 의해 달성된다. 인코더는 상기 다수의 라인들의 각각에 대하여, 라인의 비인코딩된 픽셀들 값들을 획득하도록 구성된다. 인코더는 상기 다수의 라인들의 각각에 대하여, 디지털 이미지의 상기 무손실 압축에서 픽셀의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를, 라인의 하나 이상의 픽셀들의 각각에 대하여 결정하도록 구성된다. 결정은 상기 비인코딩된 픽셀 값이 상기 라인의 다른 가장 근접한 이웃하는 픽셀들의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초한다.
본원에서의 실시예들의 제 2 양태에 따르면, 목적은 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩을 위하여 인코더에 의해 수행된 방법에 의해 달성된다. 인코더는 상기 다수의 라인들의 각각에 대하여, 라인의 비인코딩된 픽셀들 값들을 획득한다. 인코더는 추가로, 상기 다수의 라인들의 각각에 대하여, 디지털 이미지의 상기 무손실 압축에서 픽셀의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를, 라인의 하나 이상의 픽셀들의 각각에 대하여 결정하도록 구성된다. 결정은 상기 비인코딩된 픽셀 값이 상기 라인에서의 다른 가장 근접한 이웃하는 픽셀들의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초한다.
본원에서의 실시예들의 제 3 양태에 따르면, 목적은 하나 이상의 프로세서들에 의해 실행될 때, 인코더로 하여금, 제 2 양태에 따른 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램에 의해 달성된다.
본원에서의 실시예들의 제 4 양태에 따르면, 목적은 제 3 양태에 따른 컴퓨터 프로그램을 포함하는 캐리어(carrier)에 의해 달성된다.
예컨대, 동일한 라인에서의 예측자(predictor)들에 대응하는 참조 픽셀들의 동일한 라인에서의 다른 픽셀 값들에 기초하여 디지털 이미지의 상기 무손실 압축에서 픽셀의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를 결정함으로써, 특히, 디지털 이미지가 범위 데이터를 갖는 3D 이미지일 때, 고속 및 자원 효율적인 하드웨어 구현이 가능하게 된다. 픽셀 값들은 라인 독립적으로 인코딩되고 디코딩될 수 있고, 무손실 압축을 위한 적당한 인코딩은 픽셀 값 당 결정, 예컨대, 선택될 수 있고, 결정과 동일한 참조 픽셀들에 기초할 수 있다.
본원에서의 실시예들의 예들은 다음에서 간략하게 설명되는 첨부된 개략적인 도면들을 참조하여 더 상세하게 설명된다.
도 1a는 3D 이미지들의 제공을 위한, 그리고 본원에서의 실시예들이 적용될 수 있는 삼각측량(triangulation) 기반 측정 시스템을 개략적으로 예시한다.
도 1b는, 카메라 유닛에서 인코더를 갖고, 디코더를 갖는 수신 유닛으로의 통신 링크 상에서의 인코딩된 데이터의 송신을 위한, 그리고 본원에서의 시스템 실시예들이 적용될 수 있는 시스템을 개략적으로 예시한다.
도 2는 2 개의 경우들에 대한 예측 컨텍스트(prediction context)를 개략적으로 예시한다.
도 3은 가정된 확률 분포를 개략적으로 예증한다.
도 4는 런 길이 코딩(RLC) 원리의 2 개의 예들을 개략적으로 예시한다.
도 5는 현재의 픽셀에 관한 액션들을 요약하는 형태로 모델링 스테이지(modeling stage)를 개략적으로 예시하고 예증하는 플로우차트이다.
도 6a 내지 도 6b는 데이터 팩커(data packer)에 각각 관련되는 2 개의 상이한 상황들을 개략적으로 예시한다.
도 7은 본원에서의 실시예들에 따른 방법의 실시예들을 개략적으로 예시하는 플로우차트이다.
도 8은 본원에서의 실시예들에 따른 인코더의 실시예들, 및 도 7과 관련하여 설명된 방법 및 액션들을 수행하기 위하여 인코더가 어떻게 구성될 수 있는지를 예시하기 위한 기능적인 블록도이다.
도 9는 인코더로 하여금, 도 7과 관련하여 설명된 방법 및 액션들을 수행하게 하기 위하여, 컴퓨터 프로그램 및 그 캐리어들에 관련되는 실시예들을 예시하는 개략도이다.
도 1a는 3D 이미지들의 제공을 위한, 그리고 본원에서의 실시예들이 적용될 수 있는 삼각측량(triangulation) 기반 측정 시스템을 개략적으로 예시한다.
도 1b는, 카메라 유닛에서 인코더를 갖고, 디코더를 갖는 수신 유닛으로의 통신 링크 상에서의 인코딩된 데이터의 송신을 위한, 그리고 본원에서의 시스템 실시예들이 적용될 수 있는 시스템을 개략적으로 예시한다.
도 2는 2 개의 경우들에 대한 예측 컨텍스트(prediction context)를 개략적으로 예시한다.
도 3은 가정된 확률 분포를 개략적으로 예증한다.
도 4는 런 길이 코딩(RLC) 원리의 2 개의 예들을 개략적으로 예시한다.
도 5는 현재의 픽셀에 관한 액션들을 요약하는 형태로 모델링 스테이지(modeling stage)를 개략적으로 예시하고 예증하는 플로우차트이다.
도 6a 내지 도 6b는 데이터 팩커(data packer)에 각각 관련되는 2 개의 상이한 상황들을 개략적으로 예시한다.
도 7은 본원에서의 실시예들에 따른 방법의 실시예들을 개략적으로 예시하는 플로우차트이다.
도 8은 본원에서의 실시예들에 따른 인코더의 실시예들, 및 도 7과 관련하여 설명된 방법 및 액션들을 수행하기 위하여 인코더가 어떻게 구성될 수 있는지를 예시하기 위한 기능적인 블록도이다.
도 9는 인코더로 하여금, 도 7과 관련하여 설명된 방법 및 액션들을 수행하게 하기 위하여, 컴퓨터 프로그램 및 그 캐리어들에 관련되는 실시예들을 예시하는 개략도이다.
본원에서의 실시예들은 예시적인 실시예들이다. 이 실시예들은 반드시 상호 배타적인 것은 아니라는 것이 주목되어야 한다. 하나의 실시예로부터의 컴포넌트들은 또 다른 실시예에서 존재하는 것으로 암암리에 가정될 수 있고, 그 컴포넌트들이 다른 예시적인 실시예들에서 어떻게 이용될 수 있는지는 당해 분야의 당업자에게 자명할 것이다.
본원에서의 실시예들을 향한 개발로서, 현존하는 무손실 압축 기법들의 연구는 이들이 소위 라인 스캔 이미지 데이터와 함께 어떻게 수행하는지 그리고 픽셀 값들이 언제 범위 데이터에 관련되는지에 대하여 수행되었다. 라인 스캔 이미지 데이터는 이미지의 이미지 데이터가 예컨대, 한 번에 픽셀들의 하나의 라인씩 이미지 데이터를 감지하고 제공하도록 구성된 센서를 갖는 카메라에 의해, 한 번에 하나의 라인씩 스캔되거나 제공될 때에 발생한다. 라인 스캔 이미지의 특수한 경우는 소위 "광의 시트(sheet of light)" 또는 레이저-라인 3D 삼각측량에 의해 제공된 이미지 데이터이다. 3D 머신 시각 시스템들은 종종 능동 삼각측량(active triangulation)에 기초한다. 이러한 시스템에서는, 특정 광 패턴으로 객체를 조명하는 광원이 있다. 예컨대, 레이저 광에 의해 생성된 특정 광 패턴으로서 광의 시트를 이용하는 것이 보편적이다.
도 1a는 이러한 시스템, 즉, 측정 시스템(100)의 예를 개략적으로 예시한다. 시스템(100)은 능동 삼각측량을 위하여 구성된 머신 시각 시스템에 대응할 수 있다. 측정 시스템(100)은 광의 시트로서 예증되고 예시된 도면에서, 특정 광 패턴(111)으로 이미징되어야 할 객체들을 조명하기 위한 광원(110), 예컨대, 레이저를 포함한다. 광은 레이저 광일 수 있지만, 레이저 광일 필요가 없을 수 있다. 도시된 예에서, 객체들은 자동차(car)의 형태인 제 1 객체(120) 및 기어 휠 구성(gear wheel construction)의 형태인 제 2 객체(121)에 의해 예증된다. 특정 광 패턴(111)이 객체 상에서 입사할 때, 이것은 특정 광 패턴(111)이 객체를 교차할 때에 관측될 수 있는, 객체 상의 특정 광 패턴(111)의 투영(projection)에 대응한다. 예를 들어, 도시된 예에서, 광의 시트로서 예증된 특정 광 패턴(111)은 제 1 객체(120) 상에서의 광 라인(112)으로 귀착된다. 특정 광 패턴(111)은 객체에 의해, 더 구체적으로, 도시된 예에서 교차점에서의, 즉, 광 라인(112)에서의 객체의 부분들에 의해 반사된다. 측정 시스템(100)은 특정 광 패턴이 객체들에 의해 반사될 때, 이미지 센서 상의 입사 광이 되도록, 광원(110) 및 이미징되어야 할 객체들과 관련하여 배열되는 이미지 센서(도시되지 않음)를 포함하는 카메라 유닛(130)을 더 포함한다. 이미지 센서는 입사 광을 이미지 데이터로 변환하기 위한, 칩으로서 전형적으로 구현된 배열체(arrangement)이다. 반사에 의해, 이미지 센서 상에서 상기 입사 광을 야기시키는 객체의 상기 부분들은 이에 의해, 카메라 유닛(130) 및 이미지 센서에 의해 캡처될 수 있고, 대응하는 이미지 데이터는 추가의 이용을 위하여 생성될 수 있고 제공될 수 있다. 예를 들어, 도시된 예에서, 특정 광 패턴(111)은 제 1 객체(120)의 자동차 지붕의 부분 상의 광 라인(112)에서, 카메라 유닛(130) 및 이미지 센서를 향해 반사될 것이고, 카메라 유닛(130) 및 이미지 센서는 이에 의해, 자동차 지붕의 상기 부분에 대한 정보를 갖는 이미지 데이터를 생성할 수 있고 제공할 수 있다. 측정 시스템(100)의 기하구조, 예컨대, 이미지 센서 좌표들이 세계 좌표들, 예컨대, 이미징되는 객체 및 그 컨텍스트에 대하여 관련된 좌표계(123), 예컨대, 데카르트(Cartesian)의 좌표들에 어떻게 관련되는지의 지식으로, 이미지 데이터는 3D 특성들, 예컨대, 적당한 포맷으로 이미징되는 객체의 3D 형상 또는 프로파일에 대한 정보로 변환될 수 있다.
객체의 다수의 부분들이 조명되고, 실제로 전형적으로, 객체들을 스캐닝함으로써 이미지 센서 상에서 반사된 광을 야기시키도록, 예컨대, 광원(110) 및/또는 제 1 객체(120) 또는 제 2 객체(121)와 같은 이미징되어야 할 객체를 이동시킴으로써, 객체의 더 완전한 3D 형상을 설명하는 이미지 데이터는 예컨대, 제 1 객체(120)의 도시된 프로파일들(140-1 내지 140-K)과 같은 객체의 다수의 연속적인 프로파일들에 대응하여 생성될 수 있다. 도면에서 표시된 바와 같이, 컨베이어 벨트(conveyor belt)(122) 또는 유사한 것은 전형적으로 정지된 광원(110) 및 카메라 유닛(130)으로 특정 광 패턴(112)을 통해 객체들을 이동시키기 위하여 이용될 수 있어서, 각각의 객체의 모든 부분들 또는 광원(110)과 대면하는 적어도 모든 부분들이 조명된다. 상기 3D 특성들, 예컨대, 상기 3D 형상(들) 또는 프로파일에 대한 정보는 임의의 적당한 포맷으로 3D 특성들을 설명하는 데이터를 포함할 수 있다.
위로부터 이해된 바와 같이, 카메라 유닛(130) 및 이미지 센서에 의해 제공된, 예컨대, 제 1 객체(120)의 이미지는 픽셀들의 다수의 라인들을 포함하고, 여기서, 각각의 라인은 도면에서 예시된 바와 같은 그리고 픽셀 값들로서 범위 데이터를 갖는 스캐닝된 프로파일에 대응할 수 있다. 픽셀들의 라인들은 스캔 동안에 순차적으로 제공될 수 있다.
도 1a에서와 같은 구성을 이용하는 장점은 라인 왜곡(line distortion)이 하나의 방향으로 집중되고, 이것은 계산들을 단순화하고 교정 복잡도(calibration complexity)를 감소시킨다는 것이다. 단점들은 객체의 카메라 뷰(view)들이 각도를 이루고, 이것은 카메라가 더 높은 필드의 심도(depth of field)를 필요로 한다는 것과, 객체가 높이에 있어서 변동될 때, 레이저 라인의 일부 부분들이 차단될 수 있고, 이에 의해, 카메라에게 비가시적일 수 있다는 것을 의미한다. 레이저-라인이 차단되었거나 강도가 설정된 임계치 미만이었던 프로파일에서의 픽셀들은 누락 데이터(missing data)로 칭해지고, 생성된 이미지에서, 누락 데이터를 식별하는 동일한 정의된 값, 예컨대, 0을 갖는 계속적으로 발생하는 픽셀들로서 전형적으로 보일 것이다.
카메라 유닛(130) 및 이미지 센서에 의해 제공된 이미지들은 전형적으로, 카메라 유닛 외부에서의 추가의 프로세싱을 위하여, 예컨대, 호스트 컴퓨터 또는 유사한 것으로 전송, 예컨대, 송신하기 위하여 바람직하고, 배경에서 논의된 바와 같은 상황이 발생할 수 있다. 즉, 통신 링크, 예컨대, 기가비트 이더넷과 같은 물리적 전송 계층은 송신이 이것을 회피하고 증가된 성능을 가능하게 하기 위하여 이에 따라 이용될 수 있기 전에, 전형적으로 무손실이어야 하는 성능 및 압축을 제한할 수 있다.
도 1b는 디지털 이미지의 인코딩, 예컨대, 무손실 압축, 및 통신 링크(140), 예컨대, 기가비트 이더넷 링크 상에서의 인코딩된 데이터의 송신을 위한 시스템(200)을 개략적으로 예시한다. 여기서, 인코딩은 카메라 유닛, 예컨대, 카메라 유닛(130)으로서 여기에서 도시된 카메라 또는 이미지 캡처링 장치 내에 포함될 수 있는 인코더(131), 예컨대, 인코딩 디바이스 또는 인코더 회로부에 의해 수행되고, 즉, 인코더(131)를 갖는 카메라 유닛은 도 1a에서의 카메라 유닛(130)일 수 있다. 인코딩된 이미지 데이터는 카메라 유닛(130), 또는 오히려 그 이미지 센서에 의해 캡처되고 비-파괴적으로 압축된, 즉, 무손실 압축인 이미지 데이터에 대응할 수 있다. 인코더(131)에 의해 제공된 인코딩된 이미지 데이터는 송신기(132), 예컨대, 카메라 유닛(130) 내에 또한 포함되고, 통신 링크 상에서 인코딩된 이미지 데이터를 송신하도록 구성되는 회로부 또는 모듈에 의해 획득될 수 있다. 송신기(132)는 통신 링크를 인터페이싱하는, 카메라 유닛(130)의 입력/출력(I/O) 회로부 또는 모듈의 일부일 수 있다. 수신 유닛(150), 예컨대, 호스트 컴퓨터 내에 포함되거나 호스트 컴퓨터에 대응하고 있는 예컨대, 디바이스 또는 장치는 통신 링크(140) 상에서 인코딩된 이미지 데이터를 수신하도록 구성될 수 있다. 수신 유닛(150)은 수신기(151), 예컨대, 통신 링크(140)를 인터페이싱하는 입력/출력(I/O) 회로부 또는 모듈의 일부일 수 있고 통신 링크(140) 상에서의 수신에 의해 인코딩된 이미지 데이터를 획득하도록 구성된 송신 회로부 또는 모듈을 포함할 수 있다. 도시된 수신 유닛은, 인코더(131)에 의해 인코딩되었던, 예컨대, 압축되었던 이미지 데이터를 디코딩, 예컨대, 압축해제하도록 구성된 디코더(152)를 또한 포함할 수 있다. 카메라 유닛(130) 및 수신 유닛(150)은 실제적으로, 당업자에 의해 인식된 바와 같은, 그러나 단순화의 이유들로 여기에서 도시되지 않은 추가의 회로부 및/또는 모듈들을 또한 포함한다. 예를 들어, 수신 유닛(150)은, 무손실 압축의 경우에, 즉, 그 이미지 센서와 같은 카메라 유닛(130)에 의해 제공된 바와 같은, 인코딩 전과 동일한 이미지 정보에 대해 이에 따라 동작할 수 있는 디코딩된 이미지 데이터의 저장 및/또는 추가의 프로세싱을 위한 수단 및/또는 액세스를 제공할 수 있다.
위에서 언급된 바와 같은 범위 데이터의 픽셀 값들은 보통의 그레이스케일 이미지의 픽셀 값들에 필적한다. 제공된 비트 심도는 정상적인 경우, 예컨대, 12-비트 심도인 것에 있어서 8, 12, 또는 16-비트로 설정될 수 있고, 이것은 픽셀 값들이 0 내지 212-1, 즉, 0 내지 4095의 범위에 있고, 예컨대, 누락 데이터를 식별하는 값, 예컨대, 0을 또한 포함한다는 것을 의미한다. 이미지 라인의 픽셀 폭(pixel width)은 어떤 카메라가 이용될 때에 예컨대, 2560 픽셀들일 수 있다.
3D 이미지들 및 기존의 그레이스케일 이미지들의 범위 데이터의 픽셀 값들 사이에서 발견된 주요 차이는 위에서 언급된 바와 같은 누락 데이터의 존재이다.
위에서 언급된 바와 같은 라인 스캔 데이터와 함께 이용하기 위하여 적당한 이미지 데이터의 압축을 위한 인코더에 의해 충족되어야 할 바람직한 요건들은 인코더가 실시간 애플리케이션, 즉, 범위 데이터의 실시간 인코딩을 위하여 적당해야 한다는 것, 적어도 1.5 내지 2의 압축 비율이 가능하다는 것, 및 인코더의 스루풋이 기가비트 이더넷의 스루풋을 초과해야 한다는 것, 즉, >125MB/s인 것을 포함한다. 인코더는 바람직하게는 하드웨어로 구현되고, 그 다음으로, 구현을 위하여 필요한 하드웨어 자원들의 양을 낮추는 것 및 인코딩된 데이터의 제공에서의 레이턴시를 낮추는 것이 또한 바람직하다.
압축 비율은 인코더가 얼마나 많이 압축할 수 있는지, 즉, 전형적인 이미지, 여기에서는 위에서 설명된 바와 같은 전형적인 범위 데이터 이미지의 크기를 감소시킬 수 있는지를 표시하고 있다. 압축 비율을 설명하는 또 다른 방법은 압축 전에 데이터를 표현하기 위하여 요구된 비트들의 수 내지 압축 후에 요구된 비트들의 수 사이의 관계이다. 여기에서의 스루풋은 얼마나 많은 비인코딩된 입력 이미지 데이터가 각각의 초(second)에 프로세싱될 수 있고, 이에 따라, 인코딩된 압축된 이미지 데이터로 귀착될 수 있는지에 관련된다.
인코더의 출력을 디코딩하기 위한 디코더에 대하여, 디코더는 마찬가지로 인코더와 정합하기 위하여 적어도 충분히 낮은, 저 연산 오버헤드(low computational overhead) 및 저 레이턴시(low latency)를 갖는 것이 바람직하다.
상기한 것을 유념하면서, 현존하는 압축 알고리즘들의 포괄적인 연구는 인코더, 예컨대, 인코더(131)가 기초할 수 있는 적당한 무손실 이미지 압축 알고리즘들을 평가하고 발견하기 위하여 수행되었다.
일부 현존하는 알고리즘들, 예컨대, 배경에서 설명된 바와 같은 2-패스 알고리즘들은 덜 적당한 것으로 발견되었다. 컨텍스트 픽셀-값들, 알고리즘 파라미터들, 및 통계적인 모델들은 전형적으로 압축 동안에 저장될 필요가 있다. 압축은 실시간으로 그리고 전형적으로 높은 빈도로 수행되어야 하므로, 래스터-스캔(raster-scan) 순서화된 알고리즘들이 선호되는 것으로 발견되었다. 래스터-스캔 순서는 이미지가 픽셀 대 픽셀(pixel by pixel)로, 라인 대 라인(line by line)으로 프로세싱된다는 것을 의미한다. 일부 알고리즘들은 이미지를 블록들로 분할하고, 각각의 블록은 개별적으로 프로세싱된다. 그러나, 이것은 프로세싱 전에 이미지의 몇몇 라인들의 버퍼링을 요구할 것이어서, 더 큰 레이턴시 및/또는 이미지 데이터의 비인코딩된 라인들의 저장/버퍼링에 대한 큰 필요성으로 귀착될 것이다. 이것은 예컨대, 배경에서 설명된 종래 기술의 해결책에 대한 경우이고, 여기서, 2 개의 라인들이 이용된다.
또한, 하드웨어인 구현은 실시간으로 그리고 바람직한 속력들로 작동할 수 있어야 하므로, 파이프라인 스테이지들이 상대적으로 단순해야 한다. 그러므로, 단순한 로직 및 산술 동작들로 실현될 수 있는 알고리즘들은 다른 알고리즘들에 비해 선호되어야 한다. 또한, 파이프라인에서의 데이터 종속성들은 회피되어야 하고, 이 때문에, 압축 동안에 업데이트되는 동적 모델들이 더 양호하게 회피될 수 있다.
또한, 다수의 상이한 범위 데이터 이미지들에서의 엔트로피의 연구는 엔트로피를 감소시키기 위하여 적용된 상이한 역상관 방법들로 수행되었다. 엔트로피는 압축성(compressibility)을 평가하기 위하여 이용될 수 있다. 이미지의 엔트로피는 이미지가 얼마나 많이 압축될 수 있는지에 대한 하부 경계를 표시한다. 픽셀 심도를 엔트로피로 분할함으로써, 압축 비율의 근사적인 한계가 달성될 수 있다.
적어도 일부 적응(adaptation) 및 수정(modication) 후에 유망한 것으로 발견되었던 압축 방법은 FELICS에서 이용된 것이다.
상기한 것은 위에서 설명된 바와 같은 범위 데이터 이미지들의 압축가능한 성질들을 여전히 활용할 수 있으면서, 단순하고 고속이며 자원 효율적이도록 설계된 인코딩 방법의 개발로 귀착되었다. 본원에서의 실시예들은 상기 결과적인 인코딩 방법에 기초한다.
인코딩 방법은 감소들 및 추가들의 양자를 수반하는 수정들로, 현존하는 FELICS 알고리즘에 기초한 바와 같이 가장 용이하게 설명될 수 있다. FELICS의 설명은 예컨대, P. G. Howard 및 J. S. Vitter , Proceedings DCC '93: Data Compression Conference, March 1993, "Fast and efficient lossless image compression", 페이지 351-360, 10.1109/DCC.1993.253114에서, 그리고 T. Tsai 및 Y. Lee, IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Jan 2010, volume 18, "Design and Analysis of High-Throughput Lossless Image Compression Engine Using VLSI-Oriented FELICS Algorithm", 페이지 39-52, 10.1109/TVLSI.2008.2007230, ISSN 1063-8210에서 발견될 수 있다.
다음에서 원래의 또는 보통의 FELICS로서 지칭될 수 있는 현존하는 FELICS 알고리즘은 위에서 설명된 연구로부터의 통찰들 전에 당연한 시작점이 아니었다는 것이 주목되어야 한다. 원래의 FELICS는 이와 같이, 수정들이 없다면, 매우 적당하지 않다. 예를 들어, 원래의 FELICS는 컨텍스트가 다수의 라인들의 픽셀들을 수반하는, 개별적인 픽셀들에 대한 동적 예측 컨텍스트를 이용하는 이미지의 인코딩에 있다.
요컨대, 본원에서의 실시예들이 기초하는 인코딩 방법은 2 개의 주요 스테이지들, 즉, 그것이 예측 기반으로 하는 예측/모델링 및 엔트로피 코딩을 포함한다. 모델링 스테이지는 엔트로피를 감소시키도록, 즉, 정보 밀도를 증가시키도록 노력한다. 동일한 라인 상의 2 개의 선행하는 픽셀 값들을 현재의 픽셀의 예측을 위한 컨텍스트로서 이용하는 것이 모델링 스테이지에서 선호된다. 픽셀의 픽셀 값은 기존의 이미지의 경우에 픽셀의 강도, 또는 위에서 설명된 바와 같은 범위 데이터를 갖는 3D 이미지의 경우에 범위, 즉, 객체 높이 측정에 관련될 수 있다. 예측 오차는 그 다음으로, 본원에서의 단순화된 변형이 단순화된 조절된 2진 코딩(Simplified Adjusted Binary Coding; SABC)으로서 지칭되는, FELICS에서 이용된 바와 같은 조절된 2진 코딩(Adjusted Binary Coding; ABC)의 수정된 단순화된 변형, 또는 FELICS에서 이용된 바와 같은 골롬-라이스 코딩(Golomb-Rice Coding; GRC)의 변형의 어느 하나를 이용하는 코딩 단계에서 인코딩된다. 이것에 추가적으로, 본원에서 인코딩 방법은 컨텍스트가 누락 데이터를 표시할 때, 런 길이 모드로 적응적으로 스위칭한다. 런 길이 모드에서, 코딩은 런 길이 인코딩(RLE)으로서 또한 지칭될 수 있는 런 길이 코딩(RLC)이다. RLC는 이와 같이 알려진 방법이고, 이하에서 별도로 간략하게 설명된다. 소스 코딩(source coding)은 전형적으로 가변 길이의 비트-스트링들을 출력하고, 그러므로, 데이터 또는 비트 팩커(packer)가 바람직하다. 데이터 팩커는 인입하는 비트-스트링들을, 통신 링크, 예컨대, 기가비트 이더넷 링크와 같은 통신 링크(140) 상에서 예컨대, 송신되어야 할 최종적인 코드로서 출력될 수 있는 고정된 길이 데이터 워드들로 팩킹(pack)해야 한다. 이미지는 라인-독립적으로 그리고, 예컨대, 라인-독립적인 스캔 순서로 압축되므로, 각각의 라인의 총 결과적인 코드 길이는 압축된 코드와 함께 출력되어야 한다. 이것은 라인들 사이의 데이터 종속성들을 제거하고, 디코더가 다수의 라인들 상에서 병렬로 동작하는 것을 허용한다.
이 때문에, 본원에서의 실시예들이 기초하고 있는 인코딩 방법은 예측 기반이고, 이것을 위하여, 인코딩하기 위한 픽셀 대상과 동일한 라인에서의 2 개의 선행하는 픽셀들의 컨텍스트를 이용한다. 상이한 인코딩 기법들은 컨텍스트에 기초하여 이용된다. 어떤 픽셀 값의 인코딩을 제공하기 위하여 어느 인코딩 기법이 이용되어야 하는지, 예컨대, SABC, GRC의 상기 변형, 또는 RLC의 어느 하나인지는 또한, 컨텍스트에 기초하여 결정된다. 이것은 위에서 설명된 바와 같이, 이미지들, 그리고 특히, 범위 데이터 이미지들의 무손실 압축의 단순하고, 고속이며 자원 효율적인 구현을 가능하게 한다.
다음으로, 본 개시내용의 인코딩 방법의 상기 2 개의 주요 스테이지들, 즉, 예측/모델링 및 인코딩 스테이지들 뿐만 아니라, 데이터 팩커가 약간 더 상세하게 설명될 것이다. 인코딩 스테이지는 상기 3 개의 인코딩 기법들, 즉, SABC, GRC의 상기 변형, 및 RLC로 분할되어 설명될 것이다.
1. 예측/
모델링
스테이지
언급된 바와 같이, 픽셀 값들은 라인-독립적 스캔 순서로 인코딩되어야 한다. 이미지들은 보통의 래스터 스캔 순서로 스캐닝될 수 있지만, 각각의 라인은 다른 것들로부터 완전히 개별적으로 인코딩되어야 한다. 이것은 2 차원들이 잔차들을 계산하기 위하여 전형적으로 이용되는, 이미지들을 위한 가장 예측적 이미지 압축 기법들과는 상이하다. 동일한 라인으로부터의 국소적 예측자들로 개별적으로 라인들을 인코딩함으로써, 인터-라인(inter-line) 데이터 종속성들이 제거된다. 라인들이 개별적으로 인코딩되면, 예측 모델은 이것을 참작해야 한다. 예를 들어, 예측 모델은 FELICS의 원래의 예측 모델과 비교하여 약간 조절되어야 한다. 기본적으로, FELICS의 예측 템플릿(prediction template)으로부터의 최초의 2 개의 경우들, 경우 1 및 2는 그 대신에, 이미지의 모든 라인들을 위하여 이용된다. 각각의 라인의 최초의 2 개의 픽셀들은 비인코딩된 상태로 통과되고, 픽셀들의 나머지는 2 개의 가장 근접한 선행하는 픽셀들을 컨텍스트 모델로서 이용한다.
도 2는 2 개의 경우들에 대한 예측 컨텍스트를 개략적으로 예시한다. 경우 1은 예측 및 인코딩을 위한 대상이 아닌 2 개의 최초의 픽셀들, 여기에서는, 라인의 x1, x2에 관련된다. 경우 2는 현재의 픽셀로서 픽셀 x6에 대하여 여기에서 도시된, 라인의 모든 다른 픽셀들에 대한 것이고, 라인의 2 개의 가장 근접한 선행하는 픽셀들은 참조 픽셀들 N1 및 N2, 즉, 예측자들이다.
원래의 FELICS는 그 예측자들에 따른 값들의 확률 분포가 어떻게 보이는지의 실험적으로 검증된 가정을 이용한다. 그러나, 본 발명에서의 예측자들은 동일한 라인 상의 선행하는 2 개의 값들에 오직 종속되므로, 가정된 확률 분포 함수는 조절되어야 한다.
도 3은 조절된 가정된 확률 분포가 보일 수 있는 것을 개략적으로 예증한다. L은 2 개의 선행하는 픽셀들 N1, N2의 가장 낮은 픽셀 값이고, H는 가장 높은 값이다. 델타 는 H 및 L 사이의 차이이다. 당업자는 x의 값이 계속적인 이미지에 대하여 N2보다 N1에 더 근접해야 한다는 것을 가정할 수 있고, 이것은 도면에서 L 및 H 사이의 점선으로 귀착될 것이다. 그러나, 이것은 현재의 픽셀의 픽셀 값이 범위 내에, 즉, L 및 H 사이에 있고 이하에서 참조되는 SABC를 이용하여 인코딩될 때에는 활용되지 않는다. 그러므로, 범위 내에서의 확률 분포는 도면에서의 실선에 의해 예시된 바와 같이 평탄한 것으로 고려될 수 있다.
라인의 현재의 픽셀의 픽셀 값이 어떻게 예측되는지는 그 컨텍스트, 즉, 여기에서는, 그것이 동일한 라인에서의 2 개의 가장 근접한 선행하는 픽셀들에 어떻게 관련되는지에 따라 이하에서 설명된 바와 같다.
이하의 표 1은 예측 오차에 대응하는 잔차 값 이 현재의 픽셀의 픽셀 값 x가 그 예측자들, 즉, 여기에서는 그 가장 근접한 이웃하는 픽셀들 N1 및 N2의 픽셀들 값들 L 및 H에 어떻게 관련되는지에 따라 어떻게 계산될 수 있는지를 개시한다. 이것은 도 2와 관련하여 위에서 설명된 경우 2에서의 상황에 관련된다.
인식된 바와 같이, 잔차 계산은 원래의 FELICS에 대한 경우 2에 대응할 수 있다.
잔차 계산에 추가적으로, 적응적 런 길이 인코딩을 위한, 즉, RLC를 이용하는 누락 데이터의 경우들에서와 같이, 평탄한 영역들을 검출하기 위한 방법이 도입된다. 런 모드가 이용되어야 하는지를 결정하기 위하여 이용된 컨텍스트는 위와 동일한 컨텍스트에 기초할 수 있다. 즉, 현재의 픽셀 값과 함께, 동일한 라인에서의 2 개의 가장 근접한 선행하는 픽셀들은 인코더가 런 모드에 진입해야 하는지 또는 그렇지 않은지 여부를 결정하기 위하여 이용된다. N1, N2, 및 x가 모두 동일하고, 전형적으로, 누락 데이터를 식별하는 미리 결정된 값, 예컨대, 0일 경우에, 인코더는 런 모드에 진입해야 한다. 즉, 적어도 3 개의 연속 발생하는 픽셀들이 동일한 값을 가질 때, 이것은 누락 데이터에 기인하고, 또한, 라인을 따르는 추가의 픽셀들은 누락 데이터일 가능성이 있다.
도 4는 2 개의 상이한 예들에서 위에서 표시된 런 길이 모드 및 RLC 코딩 원리를 개략적으로 예시한다. 런 길이 모드에 진입할 때, 현재의 픽셀 x는 런 길이 모드에 대한 시작 픽셀 rStart가 되고 이 픽셀 및 후속 픽셀들은 픽셀이 상이한 픽셀 값을 가질 때까지(예 1), 또는 라인 종료(End Of Line; EOL)에 도달될 경우에(예 2) 인코딩된다는 것이 도시되어 있다. 상이한 픽셀 값 또는 EOL을 갖는 최초 픽셀은 런 모드의 종료 픽셀 rEnd가 된다. 런 모드가 언제 정지되는지에 따라, rCount 픽셀들의 수가 RLC를 이용하여 인코딩된다. 이것은 이하에서 추가로 논의된다.
도 5는 동일한 라인에서의 가장 근접한 선행하는 픽셀들 N1, N2로 픽셀 값 x를 갖는 현재의 픽셀에 관한 액션들을 요약하는 형태로 모델링 스테이지를 개략적으로 예시하고 예증하는 플로우차트이다. 명칭들 x, N1, N2 등은 위에서 설명된 바와 같다.
이하의 액션들은 임의의 적당한 순서로 취해질 수 있고 및/또는 이것이 가능하고 적당할 때에 시간에 있어서 전체적으로 또는 부분적으로 중첩하여 수행될 수 있다.
액션(502)에서는, x가 L 및 H의 컨텍스트에서 어디에 상주(reside)하는지가 결정된다.
액션(504)에서는, 어느 인코더, 즉, 인코딩 기법이 코딩 스테이지에서 이용되어야 하는지, 예컨대, 이하에서 추가로 설명된 바와 같은 SABC 또는 GRC의 변형 중의 어느 하나가 이용되어야 하는지가 결정된다.
액션(505)에서는, 런 모드가 다음 픽셀을 위하여 활성화되어야 하는지가 결정된다.
액션(506)에서는, 런 모드인지 또는 그렇지 않은지가 체크된다.
런 모드인 경우에, 액션(507)에서는, 현재의 픽셀 값에 기초하여, 또는 라인의 종료인 경우에, 런 모드가 종료되어야 하는지가 체크된다.
런 모드가 종료되어야 할 경우에, 액션(508)에서는, 런 모드의 진출이 있고, rCount는 예컨대, 런 모드에 대한 픽셀 값들 대상을 인코딩하기 위하여 이용되어야 할 출력으로 제공되고, 그 밖의 경우에는, 액션(509)에서, rCount가 증분된다.
상기한 것은 예컨대, 라인의 최초 픽셀 등에서 시작하여, 라인의 모든 픽셀들에 대하여 모두 수행될 때까지, 라인의 모든 픽셀들에 대하여 수행될 수 있다. 그것은 이미지의 모든 라인들에 대하여 이것과 같이 추가로 수행될 수 있다.
2. 인코딩
스테이지
인코딩 스테이지의 목적은 기본적으로, 모델링 스테이지로부터 잔차를 수신하고 잔차를 가능한 한 적은 비트들로 인코딩하기 위한 것이다. 결과적으로, 인코딩 스테이지의 출력은 가변 비트 길이이다.
이미 언급된 바와 같이, 이용되어야 할 인코딩 기법들은 SABC, FELICS에서와 같은 GRC의 변형, 및 RLC로부터 결정될 수 있다. 어느 소스 코딩 방식이 특정 픽셀을 위하여 이용되도록 결정되는지는 예컨대, 이하의 표 2에서 예증된 바와 같이, 1 또는 2 비트들의 어느 하나의 인덱스 코드로 인코딩될 수 있다.
이 때문에, 픽셀 x가 범위 내에 상주할 때, 인덱스 코드는 0일 수 있고, SABC가 이용될 수 있다. 픽셀이 범위 미만 또는 범위 초과에 상주할 때, 인덱스 코드들은 각각 10 및 11일 수 있고, GRC이 변형이 이용될 수 있다. 인덱스 코드는 RLC가 2.3 RLC 아래에서 이하에 추가로 설명된 바와 같이 이용되는 런 길이 모드를 위하여 이용될 필요가 없을 수 있다.
2.1 GRC
본 인코딩 방법을 위하여 이용되도록 제안된 GRC는 이미 표시된 바와 같이, FELICS에서 이용된 것과 유사하다. 주요 차이는 정적 k-값이 그 대신에 이용되어야 한다는 것이고, 이것은 k-값이 이미지에서의 모든 컨텍스트들에 대하여 동일해야 한다는 것을 의미한다. 그러나, 이미지들이 상이한 애플리케이션들에서 변동될 것이고 어떤 애플리케이션 및/또는 상황을 위한 가장 적당한 k-값이 선택될 수 있으므로, k-값은 셋업 스테이지 또는 유사한 것에서 조절될 수 있다. 추가적으로, k-값이 적절하게 선택되지 않고, 이것이 상기한 것으로 인해 어려울 수 있을 때, 일부 상황들에서의 큰 잔차들은 매우 큰 코드워드로 귀착될 수 있으므로, 1진 코드(unary code)들의 최대 코드 길이가 이용되어야 한다. 1진 코드의 최대 코드 길이는 여기에서 qmax로서 지칭된다. GRC(위에서 참조)를 위하여 이용된 인덱스 코드가 비트 길이 2일 때, qmax는 qmax = N - 2로서 정의될 수 있고, 여기서, N은 비트-심도이어서, 1진 코드를 선행하는 인덱스 코드는 비트-심도와 동일한 최대 길이를 가진다. qmax 코드는 1진 코드들과 같이, 종료부에서의 제로를 선행할 필요가 없다. qmax에 도달될 때, 나머지를 갖는 1진 코드를 후행하는 대신에, 그 보통의 2진 표현을 갖는 원래의 픽셀 값이 그 대신에 또는 추가적으로 제공될 수 있다. 예를 들어, 비트-심도가 8일 경우에, 현재의 픽셀 값 x = 100, = 25, k = 0이고, 컨텍스트로부터의 결론은 현재의 픽셀이 범위 미만이고, 본 인코딩 방법의 GRC 변형에 다른 코드워드는 다음과 같을 것이다:
이것은 동일한 파라미터들에 대하여 FELICS에서 이용된 보통의 GRC로부터 기인할 코드워드와 비교될 수 있다:
2.2
SABC
FELICS에서 이용된 조절된 2진 코딩(ABC)은 예컨대, 이용되고 있는 다른 예측자들로 인해, 도 3과 관련하여 위에서 논의된 이유들로, 본 인코딩 방법에 대하여 유효하지 않아야 하는 확률 분포를 가정한다. 본 인코딩 방법에 대하여, 원래의 FELICS에서의 보통의 ABC는 그러므로 추가로 단순화될 수 있고, 이것은 SABC로 귀착될 수 있다. SABC에서는, FELICS에 의해 이용된 보통의 ABC에서의 회전 시프트-동작(rotational shift-operation)들이 제거될 수 있다. 보통의 ABC는 3 개의 절차들: 파라미터 연산, 원형 회전, 및 코드워드 생성을 요구한다. 이 동작들은 하드웨어 구현을 위하여 적당한 산술 동작들로 변환될 수 있다. 그러나, 프로세싱 속력은 이것에 의해 심각하게 제한될 수 있다. SABC에서, 2진 값은 x가 L 또는 H에 근접한 에지의 경우들에는 오직이 아니라 항상 upper_bound 비트들을 이용하여 코딩된다. 이것은 일부 경우들에 있어서, 원래의 FELICS와 비교하여, 코드워드를 표현하기 위하여 하나의 여분의 비트를 이용하는 차선의 코드가 이용될 수 있다는 것을 의미한다.
SABC가 선호되지만, 원래의 FELICS에서와 같은 ABC가 또한 이용될 수 있고, 그러나 하드웨어 구현의 경우에는 일부 단점들을 갖는다는 것이 주목되어야 한다. 도 3과 관련하여 위에서 논의된 바와 같은 가정된 확률 분포로, 또한, SABC 및 보통의 ABC 이외의 다른 2진 코딩 기법들이 당업자에 의해 인식되어야 하는 바와 같이, 범위 내의 픽셀들을 위하여 이용될 수 있다.
일반적으로, 픽셀 값 id에 기초하여 결정된 픽셀 값의 압축을 위한 인코딩의 유형은 "범위 내" 영역 또는 "범위 외"(초과 또는 미만) 영역들이고, 예컨대, 구현을 용이하게 하고, 비용을 감소시키고, 더 낮은 레이턴시를 달성하는 등을 위하여, 개개의 영역에서의 확률 분포, 및 추가적으로 또한, 구현을 위한 하드웨어 구현에 관한 것과 같은 다른 요건들을 참작해야 한다.
2.3
RLC
도 4와 관련하여 위에서 설명된 바와 같이, 런 길이 모드 및 RLC는 누락 데이터를 더 효율적으로 핸들링하기 위하여, 그리고 동일한 값의 더 긴 런들의 확률이 예컨대, 0 인, 누락 데이터로부터 기인하는 것 이외의 픽셀 값들에 대하여 매우 낮으므로 이용된다. RLC는 원래의 FELICS에서 이용되지 않는다.
심지어 매우 평탄한 표면들은 높이-맵(height-map)에서, 즉, 높이 측정들로부터 기인하는 것과 같은 픽셀 값들에서 일부 잡음 및 불일치들을 가질 것이다. 이것은 테스트 범위 데이터 이미지들의 범위를 이용하여 실험적으로 증명되었다. RLC가 보통의 GRC에 비해 유리한 더 긴 런들에 대하여, 런들의 대부분은 누락 데이터에 대응하는 제로들의 런들인 것으로 보였다. 제로 이외의 값들의 런들은 종종 너무 짧아서, 특히, 런의 최초의 2 픽셀들이 RLC를 이용하지 않고 여전히 코딩될 수 있다는 것을 고려하면, RLC가 유리하지 않다. 도 4와 관련하여 위에서 이미 표시된 바와 같이, 런 길이 모드에 진입될 때, rStart 및 rEnd 사이의 픽셀들의 수가 카운팅된다. rEnd에 도 4의 예 1에서와 같이 도달될 때, 현재의 픽셀 x는 RLC를 이용하는 것이 아니라, 예컨대, 그 대신에 SABC 또는 GRC를 이용하여 인코딩될 것이고, 누적된 런 카운트(cumulated run count), 즉, rCount는 보통의 2진 값으로서 인코딩될 수 있다. 도 4의 예 2에서, 라인 종료에 도달될 때, 인코더는 런 모드를 진출할 것이고, 누적된 런 카운트, 즉, rCount는 보통의 2진 값으로서 인코딩될 수 있다. 예컨대, 이용된 카메라, 예컨대, 그 이미지 센서에 의해 결정된 2560 픽셀들의 최대 라인 폭의 경우에, 3 픽셀들이 rStart를 결정하기 위하여 이용되므로, 인코딩된 런의 최대 길이는 2557이다. 이것으로 인해, 런 길이는 log2(2557) = 12 비트들을 이용하여 2진 값으로서 항상 인코딩될 수 있다. 디코더는 디폴트로 미리 결정된 순서로, 예컨대, 좌측으로부터 우측으로 라인들을 디코딩할 수 있으므로, 즉, 이와 같이 디코딩하는 것이 미리 결정될 수 있으므로, 런 길이 모드가 활성인 것, 또는 오히려, RLC가 이용될 것이라는 것을 디코더에 통지하기 위하여 임의의 인덱스 비트들이 필요하지 않을 수 있다. 디코더는 최후 3 개의 디코딩된 픽셀들을 주시함으로써 자동적으로 이것을 해결할 수 있다.
예컨대, 도 4와 관련하여 위에서 설명된 바와 같이, RLC가 라인 종료 전에 종료될 때, N1 및 N2는 양자 모두 0일 수 있고, 그것은 런 길이 모드에 진입하기 전과 같이 계속될 수 있다. 또 다른 옵션은 라인의 최초의 픽셀이었던 것처럼, 즉, 런 길이 모드의 종료 후의 최초의 2 개의 픽셀들이 그 다음으로, 인코딩을 위한 대상이 아닐 것이라는 것, 즉, 픽셀 값들이 비인코딩된 상태로 남아 있는 것처럼 시작하는 것이다. 또 추가의 옵션은 런 길이 모드 전의 가장 최근의 N1 및 N2에 대한 정보, 및 그것은 "누락 데이터"에 대응하지 않았던 라인에서의 가장 근접한 이전의 N1, N2와 같이, 런 길이 모드에 진입하기 위한 결정의 일부가 아니었다는 것을 "기억", 즉, 메모리에서 저장하는 것이다.
3. 데이터
팩커
소스 코더가 가변 길이 비트 스트링들을 출력하므로, 데이터 팩커는 이 비트 스트링을 고정된 크기 데이터 워드들, 즉, 동일한 크기의 데이터 워드들로 연접(concatenate)하기 위하여 이용되어야 한다. 코드워드의 최대 길이는 위에서 설명된 바와 같은 비트-심도의 2 배이다. 인코더가 최대 16 비트들의 비트-심도를 핸들링하도록 설계될 경우에, 최대 코드워드 길이는 이에 따라 32 비트들이다. 그러므로, 데이터 팩커는 이 경우에, 32 비트들 워드를 팩킹하고 출력하도록 설계되어야 한다. 32-비트 워드 크기는 또한, 이미징 시스템들에서 전형적으로 이용되는 것이다. 데이터 팩커에서 버퍼 오버플로우(buffer overflow)를 회피하기 위하여, 이용된 버퍼는 적어도 2 배 크기, 예컨대, 64 비트들 폭이어야 한다. 32 비트들의 완전한 워드가 이용가능할 때, 그것은 출력될 수 있고 버퍼가 시프트되어, 출력되지 않았던 픽셀들을 오직 남긴다. 이러한 방법으로, 인코더는 일정한 비트 폭의 워드들을 항상 출력할 수 있다. 이미지의 라인들이 개별적으로 인코딩되어야 하므로, 라인이 종료되는 특수한 경우가 있다.
도 6a 내지 도 6b는 라인 종료에 도달될 때, 즉, 위와 같은 데이터 워드로 "팩킹하기 위한", 즉, 삽입되어야 할 라인의 더 많은 인코딩된 픽셀 값들이 없을 때를 고려하기 위하여 관련되는 상이한 경우들을 각각 개략적으로 예시한다. 도시된 경우들에 있어서, x1은 비트들이 1 및 동일한 픽셀 x1에 속하고, 즉, 여기에서의 경우들은 라인 종료에 언제 도달되는지를 보여주도록 작용하므로, 여기에서는 이에 따라, 라인의 최후 픽셀인 이 픽셀의 인코딩된 픽셀 값의 일부라는 것을 표시한다. 코드 길이, 즉, 픽셀 x1의 인코딩된 픽셀 값의 길이는 도면에서 보여진 바와 같이 9 비트들이다. 라인에서 x1을 선행하는 픽셀들에 속하는 비트들은 x2 및 x3으로 나타내어진다.
도 6a는 완전한 32 비트 워드가 라인 종료에서 이용가능하지 않을 때, 즉, 라인의 최후의 픽셀, 여기에서는 x1의 인코딩된 픽셀 값으로부터의 비트들이 데이터 워드, 여기에서는 32 비트를 완전히 "채우지(fill)" 않을 때를 도시한다. 예를 들어, 버퍼가 (이하에서 논의된 도 6b에서와 같이) 라인의 선행하는 픽셀들의 비트들을 포함하지 않을 때이다. 이 경우에, 제로들은 전체 32 비트 워드가 이용가능하고 출력될 수 있을 때까지 종료부에서 연접될 수 있고, 즉, 삽입될 수 있고, 이 경우에, 출력 32 비트 워드는 픽셀 x1의 인코딩된 픽셀 값을 오직 포함할 것이다. 디코딩 시에, 그것은 간단히, 픽셀 x1의 인코딩된 픽셀 값에 대한 유효한 비트들을 오직 얻기 위하여 데이터 워드를 절단(truncate)하는 문제일 수 있다.
도 6b는 버퍼의 관점으로부터, 정확하게 하나의 32 비트 워드가 라인 종료에서 이용가능할 때, 즉, 라인의 최후의 픽셀, 여기에서는 x1의 인코딩된 픽셀 값으로부터의 비트들이 입력되고, 이에 의해, 데이터 워드, 여기에서는 상기 32 비트 워드를 완전히 "채울" 때를 도시한다. 라인에서의 선행하는 픽셀들, 여기에서는 픽셀들 x2 및 x3의 인코딩된 픽셀 값들의 비트들은 이미 버퍼에 있었고, 그 다음으로, 상기 32 비트 데이터 워드는 픽셀 x1의 인코딩된 픽셀 값으로부터의 비트들, 여기에서는 5 비트들로 완료된 상태로 되고, 데이터 워드는 출력될 수 있고 대응하는 비트들은 버퍼로부터 제거될 수 있다. 이 경우에, 출력은 이에 따라, "정상적인 것" 즉, 간단히 32 비트 워드의 출력일 수 있다.
도 6b는 또한, 버퍼의 관점으로부터, 32 비트 초과 워드가 이용가능할 때, 여기에서는, 버퍼가 도 6b에서의 상황 후에 x1로부터 나머지 (4) 비트들을 시프트하였을 때를 도시한다. 버퍼 시프트의 원리는 이와 같이 예시되고, 인식된 바와 같이, 상황은 그 다음으로 도 6a에서와 유사하고, 대응하는 방식으로 관리될 수 있다.
상기한 것으로부터 이해된 바와 같이, 상이한 라인들의 픽셀 값들은 데이터 워드에서 혼합되지 않고, 이것은 혼합되지 않는 것이 라인들의 병렬 디코딩을 프로세싱하는 것을 용이하게 하고 인코딩 동안에 회피되었던 라인 종속성의 종류를 이 스테이지에서 도입하는 것이 불필요할 것이기 때문에 유익하다.
위에서 기재된 바와 같이, 인코딩 방법은 라인-독립적인 래스터 스캔 순서로 이미지를 인코딩할 수 있다. 이것에 대한 이유는 인코딩된 라인들이 예컨대, 수신 유닛(120)에 대응하는 호스트 컴퓨터 상에서 병렬로 디코딩될 수 있도록 하기 위한 것이고, 이것은 총 디코딩 시간을 감소시킬 것이다. 32 비트 워드가 출력될 때마다, 카운터는 증분될 수 있다. 라인이 인코딩되었을 때, 특정 라인에 대하여 도달된 총 카운트, 예컨대, 정수 값은 코드들, 즉, 인코딩된 픽셀 값들을 포함하는 것 이외의 별도의 벡터, 즉, 데이터 어레이에서 저장될 수 있다. 벡터는 이미지의 라인 당 별도의 값, 예컨대, 그 라인에 대한 카운터에 의해 도달된 수, 즉, 누적된 카운트에 대응하는 값으로 형성될 수 있고, 여기서, 각각의 이러한 값은 이에 따라, 이미지의 인코딩된 픽셀들 값들을 포함하는 데이터 워드들 사이에서 대응하는 라인이 어디에서 시작하는지를 식별할 것이다.
카운트는 인코딩된 이미지 데이터와 함께, 통신 링크(110), 예컨대, 기가비트 이더넷 링크 상에서 전송될 수 있다. 카운트에 대한 정보는 바람직하게는, 예컨대, 인코딩된 데이터를 위하여 이용된 채널로부터 분리된 보조 채널 상에서 전송될 수 있다. 통신 링크가 소위 GenlCam/GigE 시각(Vision) 링크일 경우에, 카운트, 예컨대, 벡터는 소위 청크 데이터(chunk data)로서 전송될 수 있다.
라인 독립성을 유지하는 것에 추가적으로, 카운트, 즉, 데이터 워드들 사이에서 각각의 라인이 별도로 어디에서 시작하는지에 대한 정보를 전송하는 추가의 장점은 데이터가 통신 링크에서 손실될 경우에, 데이터가 이 라인들에 대하여 손실될 것이지만, 이미지의 나머지를 디코딩하는 것이 여전히 가능할 것이라는 점이다.
호스트 컴퓨터의 디코더, 예컨대, 소프트웨어로 구현될 수 있는 디코더(122)는 이에 의해, 벡터로부터의 정보와 함께, 압축된 이미지를 획득할 수 있다. 이러한 방법으로, 디코더는 획득된 압축된 데이터, 예컨대, 32 비트 워드들의 비트 스트링에서 개별적인 라인들을 발견할 수 있고, 이 라인들을 병렬로 압축해제할 수 있다.
지금까지, 설명은 인코더의 관점으로부터 행해졌다. 그러나, 인식되어야 하는 바와 같이, 이것에 기초하여, 디코더는 설계하고 구현하기가 상당히 간단하다. 인코더, 모델링, 인코딩, 데이터 팩킹 등에 의해 수행된 액션들의 스테이지들 및 액션들은 간단하게 반전될 수 있다. 디코더, 예컨대, 디코더(152)는 예컨대, 각각의 라인의 코드 크기를 포함하는 상기 벡터와 함께, 데이터 워드들에서의 압축된 데이터의 스트링을 수신할 수 있다. 라인 시작이 발견된 후에, 그것은 다른 라인들로부터 개별적으로 디코딩될 수 있다. 디코더는 얼마나 많은 픽셀들이 "지금까지" 디코딩되었는지를 항상 알 것이므로, 디코더는 코드의 크기를 알 필요가 없고, 예상된 라인 폭은 전형적으로는 미리 알려지고, 실제적으로는 항상 미리 알려질 수 있다.
도 7은 위에서 논의된 인코딩 방법에 기초하여 본원에서의 실시예들에 따른 방법의 실시예들을 개략적으로 예시하는 플로우차트이다.
방법을 형성할 수 있는 이하의 액션들은 픽셀들의 다수의 라인들을 포함하는 디지털 이미지, 예컨대, 위에서 논의된 바와 같은 범위 데이터를 포함할 수 있는 라인 스캐닝된 디지털 이미지의 픽셀 값들의 인코딩을 위한 것이다. 방법 및 그 액션들은 다음에서 예로서 이용될 인코더(131)에 의해 수행될 수 있다. 즉, 인코딩은 디지털 이미지의 무손실 압축을 달성하기 위한 것이다.
인코딩은 이에 따라, 디지털 이미지, 즉, 그 이미지 데이터의 압축을 위한 것이어야 하고, 그 압축은 무손실, 즉, 비-파괴적이어야 한다.
이하의 액션들은 상기 다수의 라인들의 각각에 대하여, 즉, 전체 이미지가 이에 의해 인코딩될 수 있고, 예컨대, 압축될 수 있도록 수행된다. 또한, 이하의 액션들은 임의의 적당한 순서로 취해질 수 있고 및/또는 이것이 가능하고 적당할 때에 시간에 있어서 전체적으로 또는 부분적으로 중첩하여 수행될 수 있다.
액션(701)
인코더(131)는 라인의 비인코딩된 픽셀들 값들을 획득하고, 예컨대, 도 1b에서의 카메라 유닛(130)과 같은 카메라의 이미지 센서로부터 이들을 수신하고, 여기서, 각각의 라인은 예컨대, 도 1a에서 예시된 바와 같이 캡처된 프로파일에 대응할 수 있다. 픽셀 값들은 인코더가 동작하는 이미지 센서, 예컨대, 카메라 유닛(130)의 이미지 센서의 출력에 의해 결정된 레이트에서와 같은 시간에서 라인 당 예컨대, 하나의 라인 당 획득될 수 있다.
액션(702)
인코더(131)는 라인의 하나 이상의 픽셀들의 각각에 대하여, 디지털 이미지의 상기 무손실 압축에서, 픽셀, 예컨대, 픽셀 x의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를 결정한다. 결정은 상기 비인코딩된 픽셀 값이 상기 라인에서의 다른 가장 근접한 이웃하는 픽셀들, 예컨대, 픽셀들 N1, N2의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초한다. 인코딩은 무손실 압축을 위한 인코딩이어야 한다. 어느 인코딩이 이용되어야 하는지를 결정하는 것은 어느 인코딩 기법이 이용될 것인지를 결정하기 위한 것일 수 있다. 결정은 다른 라인들의 픽셀 값들에 독립적이어야 하고, 즉, 동일한 라인의 픽셀 값들에 오직 기초하여야 한다. 또한, 이와 같은 인코딩은 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초할 수 있다.
이 액션은 예컨대, 위의 액션들(501 내지 505)에 전체적으로 또는 부분적으로 대응할 수 있고, 예측/모델링 스테이지와 관련하여 위에서 그리고 섹션 "1. 예측/모델링 스테이지" 아래에서 설명되었던 것에 전체적으로 또는 부분적으로 대응할 수 있다.
상기 가장 근접한 이웃하는 픽셀들은 바람직하게는 선행하는 픽셀들, 예컨대, 라인을 따르는 어떤 방향에서 N1, N2와 같은 2 개의 가장 근접한 선행하는 픽셀들이다. 픽셀들을 선행하는 2 개의 가장 근접한 픽셀들은 이에 따라, 결정을 위한 픽셀 대상, 예컨대, 현재의 픽셀에 대응하는 픽셀 x를 선행하고 있어야 한다.
라인은 2 개의 방향들을 가지고, 어떤 방향은 그것들 중의 임의의 것, 전형적으로, 라인의 최초 픽셀로부터 최후 픽셀까지의 미리 결정된 것일 수 있다. 이 방향은 픽셀들 값들이 판독되거나 동작되고 있는 순서에 대응하는 방향일 수 있고, 라인과 연관된 동작 방향으로서 지칭될 수 있다.
상기 다수의 후속하여 발생하는 픽셀들이 누락 데이터를 표시할 수 있거나 식별할 수 있는 동일한 미리 결정된 값, 예컨대, 0을 가질 경우와 같이, 상기 다수의 후속하여 발생하는 픽셀들의 각각에 대한 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들, 예컨대, N1, N2의 비인코딩된 픽셀 값들과 동일할 경우에, 예컨대, 위에서 언급된 바와 같은 rStart 내지 sEnd 사이에서 하나 이상의 후속하여 발생하는 픽셀들의 픽셀 값들의 인코딩을 위하여 RLC를 이용하는 것이 결정될 수 있다.
이것은 RLC가 어떻게 이용되고 그 다음으로 적용되도록 결정될 수 있는지에 관한 상기 설명에 전체적으로 또는 부분적으로 대응할 수 있다.
픽셀 값들 또는 적어도 일부는 상기 가장 근접한 이웃하는 픽셀들을 이용하는 예측 및 예측의 연산된 잔차 값에 기초하여 인코딩되어야 하고, 연산된 잔차 값은 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들 중의 적어도 하나의 비인코딩된 픽셀에 어떻게 관련되는지에 기초한다.
이것은 위에서 논의된 연구로부터 기인하는 적당한 인코딩 방법의 결론들을 따른다. RLC는 전형적으로 예측에 기초하는 것으로 고려되지 않지만, SABC, GRC, 및 심지어 RLC의 전부는 동일한 예측자들을 심지어 이용하는 예측에 기초할 수 있다는 것이 주목될 수 있다. 어떤 경우에도, RLC에 추가적으로, 예측에 기초한 픽셀 값들, 예컨대, 누락 데이터에 대응하지 않는 모든 픽셀 값들의 인코딩이 있어야 한다.
상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들, 예컨대, N1, N2의 상기 비인코딩된 픽셀 값들 사이에 있을 경우에 상기 비인코딩된 픽셀 값의 인코딩을 위하여, 위에서 설명된 바와 같은 SABC와 같은, 제 1 유형의 코딩, 예컨대, 제 1 유형의 무손실 코딩을 이용하고, 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들, 예컨대, N1, N2의 상기 비인코딩된 픽셀 값들의 임의의 하나 미만 또는 초과일 경우에 상기 비인코딩된 픽셀 값의 인코딩을 위하여, 위에서 설명된 바와 같이 수정된 GRC와 같은, 예컨대, GRC에 기초한, 또 다른 제 2 유형의 코딩, 예컨대, 제 2 유형의 무손실 코딩을 이용하는 것이 결정될 수 있다. 양자의 제 1 및 제 2 유형의 코딩은 이에 따라, 예측 기반이어야 한다.
이것은 예컨대, 위에서 논의되고 도 4에서 예시된 바와 같이, 예측의 확률 분포를 활용하는 것을 가능하게 한다. 상이한 유형들의 코딩은 이에 따라, 제기 중인 코딩이 관련되는 범위들에서의 예측의 확률 분포를 활용해야 한다. 위에서 언급된 바와 같이, 예컨대, FELICS 또는 다른 2진 코딩에서 이용된 바와 같은 기존의 ABC는 SABC 대신에 이용될 수 있다는 것이 주목된다. 또한, GRC 이외의 다른 코딩은 제 2 유형을 위하여 고려될 수 있다.
그럼에도 불구하고, 위에서 언급된 바와 같이, 상기 제 2 유형의 코딩은 바람직하게는, 컨텍스트 독립적인 k-값 및 미리 결정된 최대 코드 길이를 이용하도록 구성된 골롬-라이스 코딩, 즉, GRC이다. k-값은 이에 따라, 상기 가장 근접한 이웃하는 픽셀들에 독립적일 수 있고, 예컨대, 라인의 모든 픽셀들에 대하여, 또는 전체 디지털 이미지에 대하여 동일할 수 있다. 후자는 위에서 이미 표시된 이유들로 선호될 수 있다.
액션(703)
인코더(131)는 그 다음으로, 결정에 기초하여, 인코딩된 픽셀 값들을 제공할 수 있고, 인코딩된 값들은 인코더(131)에 의해 인코딩된 상기 비인코딩된 픽셀 값들이고, 디지털 이미지의 상기 무손실 압축의 일부이다. 이것은 인코더(131)가 결정에 기초하여, 상기 비인코딩된 픽셀 값들 중의 하나 이상을 인코딩된 픽셀 값들로 각각 인코딩하고, 및/또는 인코더가 먼저, 결정에 전체적으로 또는 부분적으로 독립적인 상기 비인코딩된 픽셀들 값들 중의 하나 이상을 인코딩하고, 그 다음으로, 결정에 기초하여 인코딩된 값들을 선택하는 것을 포함할 수 있다. 예컨대, 하드웨어 구현의 이유들로, 먼저, 예컨대, 자동적으로, 다수의 유형들의 인코딩 기법들을 이용하여 각각의 비인코딩된 픽셀 값, 또는 적어도 일부 비인코딩된 픽셀 값들을 인코딩하고, 그 다음으로, 결정에 기초하여 인코딩된 값들을 선택함으로써 인코딩된 픽셀을 제공하는 것이 유익할 수 있다.
이 액션은 인코딩 스테이지와 관련하여 위에서, 그리고 섹션 "2. 인코딩 스테이지" 아래에서 설명되었던 것에 전체적으로 또는 부분적으로 대응할 수 있다.
액션(704)
인코더(131)는 다수의 동일 길이 데이터 워드들에서 포함된 각각의 라인의 인코딩된 픽셀들 값들을 제공할 수 있다.
즉, 미리 결정된 길이 데이터 워드들은, 각각이 어떤 길이의 비트 스트링에 대응하는, 고정된, 전형적으로 동일 길이 데이터 워드들에 대응한다. 동일 길이 데이터 워드들, 예컨대, 32 비트들이 예컨대, 이용될 수 있고, 길이는 예컨대, 구현을 위하여 이용된 하드웨어에 기초하여 미리 결정될 수 있다.
라인의 상이한 픽셀들의 인코딩된 픽셀 값들은 상기 동일 길이 데이터 워드들 사이에서 데이터 워드들을 공유할 수 있고, 상이한 라인들의 인코딩된 픽셀 값들은 상기 동일 길이 데이터 워드들 사이에서 별도의 데이터 워드들에 있을 수 있다. 즉, 픽셀 값들은 고정 길이 데이터 워드들에서 "팩킹"되지만, 보존된 라인은 인코딩으로부터 독립적이다.
이에 따라, 디지털 이미지의 압축된 데이터를 포함할 수 있는 동일 길이 데이터 워드들은 그 다음으로, 수신기, 예컨대, 수신 유닛(150), 예컨대, 호스트 컴퓨터의 수신기(151)로 송신될 수 있다. 송신은 이에 따라, 대역폭 제한들과 연관될 수 있는 통신 링크, 예컨대, 통신 링크(140) 상에서 있을 수 있다.
데이터 워드들의 인코딩된 픽셀 값들은 그 다음으로, 디코더(152)에 의해 디코딩될 수 있고, 이에 의해, 압축된 디지털 이미지의 압축해제가 달성될 수 있다.
이 액션은 데이터 팩커에 관련하여 위에서, 예컨대, 섹션 "3. 데이터 팩커" 아래에서 설명되었던 것에 전체적으로 또는 부분적으로 대응할 수 있다.
액션(705)
인코더(131)는 각각의 라인과 연관시켜서, 상기 인코딩된 픽셀 값들을 포함하는 상기 동일 길이 데이터 워드들 내에서 라인의 시작 위치를 식별하는 개개의 식별자를 제공할 수 있다. 이에 따라, 라인 당 하나의 이러한 식별자가 있을 수 있다. 인식된 바와 같이, 식별자들은 별도이고, 즉, 동일 길이 데이터 워드들로부터 별도로 제공되어야 하고, 즉, 데이터 워드들에서 포함되지 않아야 한다.
각각의 식별자는 예컨대, 식별자가 예컨대, 디지털 이미지의 최초 라인의 인코딩된 픽셀 값들을 포함하는 최초 데이터 워드의 시작부와 관련하여 연관되는 라인의 시작 포지션을 식별하는 값일 수 있다. 라인 당 픽셀들의 수는 디지털 이미지 및 예컨대, 이용된 이미지 센서에 의해 결정되고, 그러므로, 본원에서의 실시예들의 맥락에서 미리 결정된 것으로 고려될 수 있다. 라인 당 픽셀들의 수는 예컨대, 디지털 이미지를 생성하기 위하여 이용된 이미지 센서의 해상도 및/또는 설정들에 의해 결정될 수 있다.
식별자는 모든 라인들에 대한, 즉, 전체 디지털 이미지의 인코딩된 픽셀 값들을 포함하는 데이터 워드들 내에서 어떤 라인의 모든 픽셀들 값들을 발견하는 것을 가능하게 한다. 이 때문에, 어떤 라인의 인코딩된 픽셀 값들은 식별자 및 라인 당 픽셀들의 수에 대한 지식에 기초하여 발견될 수 있고 획득될 수 있다. 인코딩된 픽셀 값들은 그 다음으로, 원래의 비인코딩된 픽셀 값들로 디코딩될 수 있다. 이것은 라인들의 디코딩이 병렬로 수행될 수 있고 라인의 인코딩된 픽셀 값들을 포함하는 데이터 워드가 획득, 예컨대, 수신되자마자 시작할 수 있다는 것을 의미한다. 식별자들은 예컨대, 라인 당 하나의 값으로, 위에서 설명된 바와 같은 1 차원 어레이 또는 벡터에서 포함된 값들의 형태로 예컨대, 제공될 수 있고, 상기 데이터 워드들과 연관시켜서 제공될 수 있고, 예컨대, 동일한 또는 별도의 데이터 채널들을 이용하여, 병렬로 또는 데이터 워드들의 전송과 함께 디코더로 전송될 수 있다.
다시 말해서, 식별자들은 디지털 이미지의 라인 당 하나의 값을 포함하는 데이터 구조에서의 별도의 값들로서 제공될 수 있고, 각각의 값은 상기 동일 길이 데이터 워드들 사이에서, 참조 데이터 워드, 예컨대, 최초의 데이터 워드에 관련하여 개개의 라인의 시작 위치를 표시할 수 있다. 최초의 데이터 워드는 전형적으로, 디지털 이미지의 최초의 픽셀의 픽셀 값들을 포함하는 데이터 워드일 수 있다.
예컨대, 벡터에서의 식별자들은 동일 길이 데이터 워드들과 함께, 즉, 동일 길이 데이터 워드들과 연관시켜서 수신기로 전송될 수 있다. 식별자들은 이에 따라, 통신 링크(140) 상에서 데이터 워드들과 함께 송신될 수 있고, 수신기(151)에 의해 수신될 수 있고, 데이터 워드들의 인코딩된 픽셀 값들은 디코더(152)에 의해 디코딩될 수 있고, 이에 의해, 압축된 디지털 이미지의 압축해제가 달성될 수 있다.
또한, 이 액션은 데이터 팩커에 관련하여 위에서, 예컨대, 섹션 "3. 데이터 팩커" 아래에서 설명되었던 것에 전체적으로 또는 부분적으로 대응할 수 있다.
도 8은 인코더(131)에 대응할 수 있는 인코더(800)의 실시예들을 예시하기 위한 개략적인 블록도이다. 개략적인 블록도는 또한, 인코더(800), 예컨대, 디바이스(131)가 어떻게 도 7과 관련하여 위에서 논의된 방법 및 액션들을 수행하도록 구성될 수 있는지의 실시예들을 예시하기 위한 것이다.
이 때문에, 인코더(800)는 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 상기 디지털 이미지의 픽셀 값들의 인코딩을 위한 것이다.
인코더(800)는 프로세싱 수단과 같은 프로세싱 모듈(801), 예컨대, 하나 이상의 프로세싱 회로들을 포함하는 하나 이상의 하드웨어 모듈들, 프로세서들과 같은 회로부, 및/또는 상기 방법 및/또는 액션들을 수행하기 위한 하나 이상의 소프트웨어 모듈들을 포함할 수 있다.
인코더(800)는 컴퓨터 프로그램(803)을 포함하거나 저장하는 것과 같이 포함할 수 있는 메모리(802)를 더 포함할 수 있다. 컴퓨터 프로그램(803)은 상기 방법 및/또는 액션들을 수행하기 위하여 인코더(800)에 의해 직접적으로 또는 간접적으로 실행가능한 '명령어들' 또는 '코드'를 포함한다. 메모리(802)는 하나 이상의 메모리 유닛들을 포함할 수 있고, 본원에서의 실시예들의 기능들 및 액션들에 관여되거나 이러한 기능들 및 액션들을 수행하기 위한, 구성들, 데이터, 및/또는 값들과 같은 데이터를 저장하도록 추가로 배열될 수 있다.
또한, 인코더(800)는 하드웨어 모듈(들)을 예증하는 바와 같이, 데이터를 프로세싱하고 예컨대 인코딩하는 것에 관여된 프로세싱 회로부(804)를 포함할 수 있고, 하나 이상의 프로세서들 또는 프로세싱 회로들을 포함할 수 있거나 이에 대응할 수 있다. 프로세싱 모듈(들)(801)은 프로세싱 회로부(804)를 포함할 수 있고, 예컨대, 프로세싱 회로부(804)의 "형태로 구체화될 수 있거나" 또는 프로세싱 회로부(804)에 "의해 실현될" 수 있다. 이 실시예들에서, 메모리(802)는 프로세싱 회로부(804)에 의해 실행가능한 컴퓨터 프로그램(803)을 포함할 수 있고, 이에 의해, 인코더(800)는 상기 방법 및/또는 그 액션들을 수행하도록 동작하거나 구성된다.
전형적으로, 인코더(800), 예컨대, 프로세싱 모듈(들)(801)은 정보를 다른 디바이스들로 및/또는 다른 디바이스들로부터 전송하고 및/또는 수신하는 것, 예컨대, 디지털 이미지의 압축된 이미지 데이터에 대응하는 인코딩된 픽셀 값들을 수신 유닛(120)으로 전송하는 것과 같은, 다른 유닛들 및/또는 디바이스들로 및/또는 다른 유닛들 및/또는 디바이스들로부터의 임의의 통신을 예컨대, 수행함으로써, 이러한 임의의 통신에 관여되도록 구성된 입력/출력(I/O) 모듈(들)(805)을 포함한다. I/O 모듈(들)(805)은 적용가능할 때, 모듈(들)을 획득, 예컨대, 수신함으로써, 및/또는 모듈(들)을 제공, 예컨대, 전송함으로써 예증될 수 있다.
또한, 일부 실시예들에서, 인코더(800), 예컨대, 프로세싱 모듈(들)(801)은 본원에서의 실시예들의 액션들을 수행하기 위한 하드웨어 및/또는 소프트웨어 모듈(들)을 예증하는 바와 같이, 획득 모듈(들), 제공 모듈(들), 인코딩 모듈(들) 중의 하나 이상을 포함한다. 이 모듈들은 프로세싱 회로부(804)에 의해 전체적으로 또는 부분적으로 구현될 수 있다.
인코더(800), 및/또는 프로세싱 모듈(들)(801), 및/또는 프로세싱 회로부(804), 및/또는 I/O 모듈(들)(805), 및/또는 획득 모듈(들)은 이에 따라, 상기 다수의 라인들의 각각에 대하여, 도 7과 관련하여 위에서 설명된 바와 같이, 라인의 상기 비인코딩된 픽셀 값들을 획득하도록 동작할 수 있거나 구성될 수 있다.
또한, 인코더(800), 및/또는 프로세싱 모듈(들)(801), 및/또는 프로세싱 회로부(804), 및/또는 결정 모듈(들)은 상기 다수의 라인들의 각각에 대하여, 도 7과 관련하여 위에서 설명된 바와 같이, 디지털 이미지의 상기 무손실 압축에서, 픽셀, 예컨대, 현재의 픽셀 x의 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를, 라인의 상기 하나 이상의 픽셀들의 각각에 대하여 결정하도록 동작할 수 있거나 구성될 수 있다.
또한, 인코더(800), 및/또는 프로세싱 모듈(들)(801), 및/또는 프로세싱 회로부(804), 및/또는 I/O 모듈(들)(805), 및/또는 제공 모듈(들)은 이에 따라, 결정에 기초하여, 도 7과 관련하여 위에서 설명된 바와 같이, 상기 인코딩된 픽셀 값들을 제공하도록 동작할 수 있거나 구성될 수 있다.
또한, 인코더(800), 및/또는 프로세싱 모듈(들)(801), 및/또는 프로세싱 회로부(804), 및/또는 I/O 모듈(들)(805), 및/또는 제공 모듈(들)은 이에 따라, 도 7과 관련하여 위에서 설명된 바와 같이, 상기 수의 동일 길이 데이터 워드들에서 포함된 각각의 라인의 인코딩된 픽셀들 값들을 제공하도록 동작할 수 있거나 구성될 수 있다.
또한, 인코더(800), 및/또는 프로세싱 모듈(들)(801), 및/또는 프로세싱 회로부(804), 및/또는 I/O 모듈(들)(805), 및/또는 제공 모듈(들)은 이에 따라, 도 7과 관련하여 위에서 설명된 바와 같이, 각각의 라인과 연관시켜서, 상기 동일 길이 데이터 워드들 내에서 라인의 시작 위치를 식별하는 상기 개개의 식별자를 제공하도록 동작할 수 있거나 구성될 수 있다.
도 9는 위에서 논의된 상기 인코더(800)로 하여금 상기 방법 및 액션들을 수행하게 하기 위하여 컴퓨터 프로그램 및 그 캐리어들에 관련된 일부 실시예들을 예시하는 개략도이다. 컴퓨터 프로그램은 컴퓨터 프로그램(803)일 수 있고, 프로세싱 회로부(804) 및/또는 프로세싱 모듈(들)(801)에 의해 실행될 때, 인코더(800)로 하여금 위에서 설명된 바와 같이 수행하게 하는 명령어들을 포함한다. 일부 실시예들에서는, 컴퓨터 프로그램을 포함하는 캐리어, 또는 더 구체적으로, 데이터 캐리어, 예컨대, 컴퓨터 프로그램 제품이 제공된다. 캐리어는 전자 신호, 광학 신호, 라디오 신호, 및 컴퓨터 판독가능 저장 매체, 예컨대, 도면에서 개략적으로 예시된 바와 같은 컴퓨터 판독가능 저장 매체(901) 중의 하나일 수 있다. 컴퓨터 프로그램(802)은 이에 따라, 컴퓨터 판독가능 저장 매체(901) 상에서 저장될 수 있다. 캐리어에 의해, 일시적인 전파 신호가 제외될 수 있고, 데이터 캐리어는 대응하게도, 비-일시적 데이터 캐리어로 명명될 수 있다. 컴퓨터 판독가능 저장 매체인 데이터 캐리어의 비-제한적인 예들은 메모리 카드 또는 메모리 스틱, CD 또는 DVD와 같은 디스크 저장 매체, 또는 하드 드라이브(들) 또는 솔리드 스테이트 드라이브(들)(Solid State Drive; SSD)에 전형적으로 기초하는 대용량 저장 디바이스이다. 컴퓨터 판독가능 저장 매체(901)는 컴퓨터 네트워크(902), 예컨대, 인터넷 또는 로컬 영역 네트워크(Local Area Network; LAN) 상에서 액세스가능한 데이터를 저장하기 위하여 이용될 수 있다. 컴퓨터 프로그램(803)은 또한, 순수한 컴퓨터 프로그램(들)으로서 제공될 수 있거나, 파일 또는 파일들 내에 포함될 수 있다. 파일 또는 파일들은 컴퓨터 판독가능 저장 매체(901) 상에서 저장될 수 있고, 예컨대, 서버를 통해, 예컨대, 도면에서 표시된 바와 같은 컴퓨터 네트워크(902) 상에서, 예컨대, 다운로드를 통해 이용가능할 수 있다. 서버는 예컨대, 웹 또는 파일 전송 프로토콜(File Transfer Protocol; FTP) 서버일 수 있다. 파일 또는 파일들은 예컨대, 프로세싱 회로부(804)에 의한 실행에 의해, 위에서 설명된 바와 같이 상기 제 1 노드가 수행하게 하기 위하여 상기 제 1 노드로의 직접적인 또는 간접적인 다운로드를 위한, 그리고 상기 제 1 노드 상에서의 실행을 위한 예컨대, 실행가능한 파일들일 수 있다. 파일 또는 파일들은 또한 또는 대안적으로, 상기 인코더(800)로 하여금, 위에서 설명된 바와 같이 수행하게 하는 추가의 다운로드 및 실행 전에, 이들이 실행가능하게 하기 위하여 동일한 또는 또 다른 프로세서(들)를 수반하는 중간 다운로드 및 편집(compilation)을 위한 것일 수 있다.
상기에서 언급된 임의의 프로세싱 모듈(들) 및 회로(들)는 소프트웨어 및/또는 하드웨어 모듈로서, 예컨대, 현존하는 하드웨어로 및/또는 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit; ASIC), 필드-프로그래밍가능 게이트 어레이(Field-Programmable Gate Array; FPGA) 등으로서 구현될 수 있다는 것에 주목한다. 또한, 상기에서 언급된 임의의 하드웨어 모듈(들) 및/또는 회로(들)는 예컨대, 단일 ASIC 또는 FPGA 내에 포함될 수 있거나, 개별적으로 패키징되든지 또는 시스템-온-칩(System-on-a-Chip; SoC)으로 조립되든지 간에, 몇몇 별도의 하드웨어 컴포넌트들 사이에서 분산될 수 있다는 것에 주목한다.
당해 분야의 당업자들은 또한, 본원에서 개시된 모듈들 및 회로부가 하드웨어 모듈들, 소프트웨어 모듈들, 아날로그 및 디지털 회로들, 및/또는 하나 이상의 프로세서들에 의해 실행될 때, 노드(들) 및 디바이스(들)가 전술한 방법들 및 액션들을 수행하도록 구성되게 및/또는 전술한 방법들 및 액션들을 수행하게 할 수 있는, 예컨대, 메모리에서 저장된 소프트웨어 및/또는 펌웨어로 구성된 하나 이상의 프로세서들의 조합을 지칭할 수 있다는 것을 인식할 것이다.
본원에서의 식별자에 의한 식별은 묵시적 또는 명시적일 수 있다. 식별은 예컨대, 어떤 컴퓨터 프로그램 또는 프로그램 제공자를 위한 어떤 컨텍스트에서 고유할 수 있다.
본원에서 이용된 바와 같이, 용어 "메모리"는 디지털 정보를 저장하기 위한 데이터 메모리, 전형적으로, 하드 디스크, 자기 스토리지, 매체, 휴대용 컴퓨터 디스켓 또는 디스크, 플래시 메모리, 랜덤 액세스 메모리(Random Access Memory; RAM) 등을 지칭할 수 있다. 또한, 메모리는 프로세서의 내부 레지스터 메모리일 수 있다.
또한, 제 1 노드, 제 2 노드, 제 1 기지국, 제 2 기지국 등과 같은 임의의 나열하는 용어는 이와 같이 비-제한적인 것으로 고려되어야 하고, 이와 같은 용어는 어떤 계층적 관계를 암시하지 않는다는 것에 주목한다. 반대로 임의의 명시적 정보가 없다면, 나열에 의한 명명은 단지 상이한 명칭들을 달성하는 방법으로 고려되어야 한다.
본원에서 이용된 바와 같이, 표현 "~하도록 구성된"은 프로세싱 회로가 소프트웨어 또는 하드웨어 구성에 의해, 본원에서 설명된 액션들 중의 하나 이상을 수행하도록 구성되거나 구비된다는 것을 의미할 수 있다.
본원에서 이용된 바와 같이, 용어들 "수" 또는 "값"은 2진수, 실수, 허수, 또는 유리수 등과 같은 임의의 종류의 숫자를 지칭할 수 있다. 또한, "수" 또는 "값"은 글자 도는 글자들의 스트링과 같은 하나 이상의 문자들일 수 있다. 또한, "수" 또는 "값"은 비트 스트링에 의해 표현될 수 있다.
본원에서 이용된 바와 같이, 표현 "할 수 있다(may)" 및 "일부 실시예들에서"는 전형적으로, 설명된 특징들이 본원에서 개시된 임의의 다른 실시예와 조합될 수 있다는 것을 표시하기 위하여 이용되었다.
도면들에서, 오직 일부 실시예들에서 존재할 수 있는 특징들은 전형적으로, 점선 또는 파선을 이용하여 그려진다.
본원에서 이용된 바와 같이, 표현 "송신" 및 "전송"은 전형적으로 상호 교환가능하다.
단어 "포함한다(comprise)" 또는 "포함하는(comprising)"을 이용할 때, 그것은 비제한적인 것으로서 해독될 것이고, 즉, "~로 적어도 구성되는"을 의미한다.
본원에서의 실시예들은 위에서 설명된 실시예들로 제한되지는 않는다. 다양한 대안들, 수정들, 및 등가물들이 이용될 수 있다. 그러므로, 상기 실시예들은 첨부하는 청구항들에 의해 정의되는 본 개시내용의 범위를 제한하는 것으로서 취해지지 않아야 한다.
Claims (15)
- 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩을 위한 인코더(131; 800)로서,
상기 인코더(131; 800)는 상기 다수의 라인들의 각각에 대하여:
상기 라인의 비인코딩된 픽셀들 값들을 획득하고(701); 그리고
상기 라인의 하나 이상의 픽셀들의 각각에 대하여, 상기 디지털 이미지의 상기 무손실 압축에서 픽셀(x)의 상기 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를 결정 - 상기 결정은 상기 비인코딩된 픽셀 값이 상기 라인의 다른 가장 근접한 이웃하는 픽셀들(N1, N2)의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초하고, 상기 가장 근접한 이웃하는 픽셀들(N1, N2)은 상기 픽셀(x)이 있는 라인과 동일한 라인에서 2 개의 가장 근접한 선행하는 픽셀들(N1, N2)임 - 하도록(702)
구성되고,
상기 라인의 하나 이상의 후속하여 발생하는 픽셀들의 각각에 대한 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들과 동일할 경우에, 상기 라인의 하나 이상의 후속하여 발생하는 픽셀들의 픽셀 값들의 인코딩을 위하여, 런 길이 코딩(Run Length Coding; RLC)을 이용하는 것으로 결정되며,
상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들 사이에 있을 경우에, 상기 비인코딩된 픽셀 값의 인코딩을 위하여 제 1 유형의 코딩을 이용하고, 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들의 임의의 하나의 픽셀 값 미만 또는 초과일 경우에, 상기 비인코딩된 픽셀 값의 인코딩을 위하여 또 다른 제 2 유형의 코딩을 이용하는 것으로 결정되는 것인, 인코더. - 삭제
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 제 2 유형의 코딩은 컨텍스트 독립적인 k-값 및 미리 결정된 최대 코드 길이를 이용하도록 구성된 골롬-라이스 코딩(Golomb-Rice coding)인 것인, 인코더. - 제 1 항에 있어서,
상기 인코더(131; 800)는 또한,
상기 결정에 기초하여, 인코딩된 픽셀 값들을 제공하도록(703) 구성되고, 인코딩된 픽셀 값들은 상기 인코더(131; 800)에 의해 인코딩된 상기 비인코딩된 픽셀 값들이고, 상기 디지털 이미지의 상기 무손실 압축의 일부인 것인, 인코더. - 제 8 항에 있어서,
상기 인코더(131; 800)는 또한,
다수의 동일 길이 데이터 워드들에 포함된 각각의 라인의 상기 인코딩된 픽셀들 값들을 제공하도록(704) 구성되는, 인코더. - 제 9 항에 있어서,
라인의 상이한 픽셀들의 상기 인코딩된 픽셀 값들은 상기 동일 길이 데이터 워드들 사이에서 데이터 워드들을 공유하고, 상이한 라인들의 인코딩된 픽셀 값들은 상기 동일 길이 데이터 워드들 사이에서 별도의 데이터 워드들에 있는 것인, 인코더. - 제 9 항에 있어서,
상기 인코더(131; 800)는 추가로:
각각의 라인과 연관시켜서, 상기 인코딩된 픽셀 값들을 포함하는 상기 동일 길이 데이터 워드들 내에서 상기 라인의 시작 위치를 식별하는 개개의 식별자를 제공하도록(705) 구성되는, 인코더. - 제 11 항에 있어서,
상기 식별자들은 상기 디지털 이미지의 라인 당 하나의 값을 포함하는 데이터 구조에서의 별도의 값들로서 제공되고, 각각의 값은 상기 동일 길이 데이터 워드들 사이에서, 참조 데이터 워드에 관련하여 개개의 라인의 시작 위치를 표시하는 것인, 인코더. - 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀들의 다수의 라인들을 포함하는 디지털 이미지의 픽셀 값들의 인코딩을 위하여 인코더(131, 800)에 의해 수행된 방법으로서,
상기 다수의 라인들의 각각에 대하여:
- 상기 라인의 비인코딩된 픽셀들 값들을 획득하는 단계(701); 및
- 상기 라인의 하나 이상의 픽셀들의 각각에 대하여, 상기 디지털 이미지의 상기 무손실 압축에서 픽셀(x)의 상기 비인코딩된 픽셀 값의 인코딩을 위하여 어느 인코딩이 이용되어야 하는지를 결정하는 단계(702) - 상기 결정은 상기 비인코딩된 픽셀 값이 상기 라인의 다른 가장 근접한 이웃하는 픽셀들(N1, N2)의 비인코딩된 픽셀 값들에 어떻게 관련되는지에 기초하고, 상기 가장 근접한 이웃하는 픽셀들(N1, N2)은 상기 픽셀(x)이 있는 라인과 동일한 라인에서 2 개의 가장 근접한 선행하는 픽셀들(N1, N2)임 - 를 포함하고,
상기 라인의 하나 이상의 후속하여 발생하는 픽셀들의 각각에 대한 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들과 동일할 경우에, 상기 라인의 하나 이상의 후속하여 발생하는 픽셀들의 픽셀 값들의 인코딩을 위하여, 런 길이 코딩(Run Length Coding; RLC)을 이용하는 것으로 결정되며,
상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들 사이에 있을 경우에, 상기 비인코딩된 픽셀 값의 인코딩을 위하여 제 1 유형의 코딩을 이용하고, 상기 비인코딩된 픽셀 값이 상기 가장 근접한 이웃하는 픽셀들(N1, N2)의 상기 비인코딩된 픽셀 값들의 임의의 하나의 픽셀 값 미만 또는 초과일 경우에, 상기 비인코딩된 픽셀 값의 인코딩을 위하여 또 다른 제 2 유형의 코딩을 이용하는 것으로 결정되는 것인, 인코더에 의해 수행된 방법. - 인코더(131; 800)에 의해 실행될 때, 인코더(131; 800)로 하여금 제 13 항에 따른 방법을 수행하게 하는 명령어들을 포함하는, 매체에 저장된 컴퓨터 프로그램(803).
- 제 14 항에 따른 컴퓨터 프로그램(803)을 포함하는 캐리어로서,
상기 캐리어는 컴퓨터 판독가능 저장 매체(901)인 것인, 캐리어.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19172426.9A EP3734973B1 (en) | 2019-05-02 | 2019-05-02 | Method and encoder relating to encoding of pixel values to accomplish lossless compression of a digital image |
EP19172426.9 | 2019-05-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200127899A KR20200127899A (ko) | 2020-11-11 |
KR102400372B1 true KR102400372B1 (ko) | 2022-05-23 |
Family
ID=66397072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200052826A KR102400372B1 (ko) | 2019-05-02 | 2020-04-29 | 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀 값들의 인코딩에 관련된 방법 및 인코더 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11645785B2 (ko) |
EP (1) | EP3734973B1 (ko) |
JP (1) | JP6985452B2 (ko) |
KR (1) | KR102400372B1 (ko) |
CN (1) | CN111885385B (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112565793B (zh) * | 2020-11-26 | 2022-11-01 | 华侨大学 | 一种基于预测差值分类熵编码的图像无损压缩方法 |
CN112887729B (zh) * | 2021-01-11 | 2023-02-24 | 西安万像电子科技有限公司 | 图像编解码的方法和装置 |
FR3124673B1 (fr) * | 2021-06-24 | 2023-09-29 | Valeo Vision | Procédé de gestion d'une image dans un dispositif d'éclairage automobile et dispositif d'éclairage automobile |
CN113566855A (zh) * | 2021-08-11 | 2021-10-29 | 珠海格力电器股份有限公司 | 编码盘、编码器、电机及编码器工作方法 |
US20230122359A1 (en) | 2021-10-15 | 2023-04-20 | Lognovations Holdings, Llc | Encoding / Decoding System and Method |
CN116405574B (zh) * | 2023-06-08 | 2023-08-08 | 中国人民解放军总医院第二医学中心 | 一种远程医疗图像优化通讯方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170237795A1 (en) * | 2005-04-20 | 2017-08-17 | Infocus Corporation | Interconnection mechanism for multiple data streams |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060051157A (ko) * | 2004-10-29 | 2006-05-19 | 마이크로소프트 코포레이션 | 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법 |
US7580585B2 (en) * | 2004-10-29 | 2009-08-25 | Microsoft Corporation | Lossless adaptive Golomb/Rice encoding and decoding of integer data using backward-adaptive rules |
JP2006311055A (ja) | 2005-04-27 | 2006-11-09 | Fuji Xerox Co Ltd | 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム |
JP4468858B2 (ja) | 2005-06-01 | 2010-05-26 | オリンパスイメージング株式会社 | データ符号化装置、データ符号化方法、プログラム |
CN101404765B (zh) * | 2008-10-24 | 2010-12-08 | 宁波大学 | 一种交互式多视点视频编码方法 |
CN102970531B (zh) * | 2012-10-19 | 2015-04-22 | 西安电子科技大学 | Jpeg-ls近无损图像压缩编码器硬件实现方法 |
JP6310747B2 (ja) * | 2014-03-31 | 2018-04-11 | 株式会社メガチップス | データ記憶制御装置およびデータ記憶制御方法 |
CN104038765A (zh) * | 2014-06-26 | 2014-09-10 | 天津大学 | 面向硬件实现的快速高效无损图像压缩方法 |
US9686560B2 (en) | 2015-02-23 | 2017-06-20 | Teledyne Dalsa, Inc. | Lossless data compression and decompression apparatus, system, and method |
CN106803959B (zh) * | 2017-02-28 | 2019-12-27 | 腾讯科技(深圳)有限公司 | 视频图像编码、解码方法、编码、解码装置及可读存储介质 |
CN109040789B (zh) * | 2017-04-08 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法 |
CN109379598B (zh) * | 2018-09-12 | 2021-11-19 | 合肥埃科光电科技有限公司 | 一种基于fpga实现的图像无损压缩方法 |
-
2019
- 2019-05-02 EP EP19172426.9A patent/EP3734973B1/en active Active
-
2020
- 2020-04-29 KR KR1020200052826A patent/KR102400372B1/ko active IP Right Grant
- 2020-04-30 CN CN202010360614.6A patent/CN111885385B/zh active Active
- 2020-05-01 US US16/864,338 patent/US11645785B2/en active Active
- 2020-05-01 JP JP2020081254A patent/JP6985452B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170237795A1 (en) * | 2005-04-20 | 2017-08-17 | Infocus Corporation | Interconnection mechanism for multiple data streams |
Non-Patent Citations (2)
Title |
---|
B. Carpentieri, et. al., "Lossless compression of continuous-tone images", Proceedings of the IEEE ( Volume: 88, Issue: 11, Nov. 2000), 2000.11.30.* |
Tsung-Han Tsai, et. al., "Design and Analysis of High-Throughput Lossless Image Compression Engine Using VLSI-Oriented FELICS Algorithm", IEEE Transactions on Very Large Scale Integration (VLSI) Systems ( Volume: 18, Issue: 1, Jan. 2010), 2009.03.27.* |
Also Published As
Publication number | Publication date |
---|---|
CN111885385A (zh) | 2020-11-03 |
US11645785B2 (en) | 2023-05-09 |
EP3734973A1 (en) | 2020-11-04 |
JP2020184762A (ja) | 2020-11-12 |
EP3734973B1 (en) | 2023-07-05 |
KR20200127899A (ko) | 2020-11-11 |
US20200349741A1 (en) | 2020-11-05 |
CN111885385B (zh) | 2023-11-28 |
JP6985452B2 (ja) | 2021-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102400372B1 (ko) | 디지털 이미지의 무손실 압축을 달성하기 위한 픽셀 값들의 인코딩에 관련된 방법 및 인코더 | |
US11895307B2 (en) | Block-based predictive coding for point cloud compression | |
US5818877A (en) | Method for reducing storage requirements for grouped data values | |
US11875541B2 (en) | Predictive geometry coding in G-PCC | |
JP6923677B2 (ja) | ビデオ圧縮におけるエントロピーコーディングのための選択的ミキシング | |
US5045852A (en) | Dynamic model selection during data compression | |
EP0066697B1 (en) | A method and system for compressing grey scale image data | |
US7304590B2 (en) | Arithmetic decoding apparatus and method | |
CN115211117A (zh) | 用于在基于几何形状的点云压缩中的预测变换的预测器索引信令 | |
US11475600B2 (en) | Method and device for digital data compression | |
CN112740702A (zh) | 点云的编解码方法和装置 | |
EP1075087A2 (en) | Variable length coding method and apparatus | |
CN116057579A (zh) | 点云解码装置、点云解码方法和程序 | |
EP1333679B1 (en) | Data compression | |
CN116325731A (zh) | 点云编解码方法与***、及点云编码器与点云解码器 | |
WO1999037085A2 (en) | Arithmetic coding-based facsimile compression with error detection | |
Khursheed et al. | Selection of bi-level image compression method for reduction of communication energy in wireless visual sensor networks | |
Hussin et al. | A comparative study on improvement of image compression method using hybrid DCT-DWT techniques with huffman encoding for wireless sensor network application | |
CN116582689A (zh) | 用于资源受限编码环境中的低延迟视频传输的无损压缩 | |
Sayood | Data Compression. | |
EP3991303A1 (en) | Features of range asymmetric number system encoding and decoding | |
JP3985465B2 (ja) | 画像符号化装置、画像復号装置および画像符号化復号装置ならびにそれらの方法 | |
KR102109768B1 (ko) | Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기 | |
JP2010074444A (ja) | 画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、及び、コンピュータプログラム | |
Hinnerson | A Resource Efficient, HighSpeed FPGA Implementation of Lossless Image Compression for 3D Vision |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |