상기한 문제점들을 해결하기 위해, 본 발명에 따른 화상 부호화 장치는 다음의 구성을 갖는다.
즉, 화소값을 부호화하는 화상 부호화 장치로서,
부호화된 화소의 값을 이용하여 주목 화소값을 부호화하는 제1 부호화 유닛;
상기 주목 화소와 직전의 화소가 동일한 값을 갖는 수를 런으로서 카운트하여, 상기 카운트된 런에 기초하여 부호화 데이터를 출력하는 제2 부호화 유닛; 및
상기 제1 부호화 유닛에 의한 부호화와 상기 제2 부호화 유닛에 의한 부호화를 절환하는 스위칭 유닛
을 포함하며,
상기 주목 화소 직전 화소의 값이 상기 제2 부호화 유닛에 의해 부호화되는 경우에는, 상기 제1 부호화 유닛은 직전의 화소를 포함하지 않는 부호화된 화소의 값을 이용하여 상기 주목 화소를 부호화하고, 상기 직전 화소의 값이 상기 제2 부호화 유닛에 의해 부호화되지 않는 경우에는, 직전의 화소를 포함하는 부호화된 화소의 값을 이용하여 상기 주목 화소를 부호화하는 화상 부호화 장치가 제공된다.
본 발명의 다른 특징들 및 이점들은 첨부 도면을 참조하여 설명된 이하의 상세한 설명으로부터 명백해질 것이며, 도면 전체에서 동일하거나 유사한 부분들은 동일한 참조부호들로 표시한다.
상세한 설명에 포함되어 그 일부를 구성하고 있는 첨부도면들은, 상세한 설명과 함께 본 발명의 실시예들을 설명하며, 본 발명의 원리들을 설명하는 역할을 한다.
<실시예>
본 발명의 바람직한 실시예들이 첨부 도면을 참조하여 이하에 상세히 기술될 것이다.
[제1 실시예]
도 1은 제1 실시예에 따른 화상 부호화 장치의 블록도이다. 도 1에 도시된 바와 같이, 제1 실시예에 따른 화상 처리 장치는, 색 카운트 판정 유닛(101), 근방 일치 정보 부호화 유닛(102), 성분값 예측 부호화 유닛(103), 런렝스 부호화 유닛(104), 부호 생성 유닛(105), 스위치(106), 부호열 형성 유닛(107), 버퍼(201)를 포함한다. 도 1에서, 참조부호 108, 109, 110, 206, 207은 신호 라인을 의미한다. 동일한 참조부호들은 종래의 화상 처리 장치의 처리 블록의 동작과 동일한 동작을 수행하는 블록들을 의미하며, 그에 대한 설명은 생략한다. 도 1의 장치에서의 화상 부호화 처리를 설명한다. 제1 실시예에서는, 예측 선택 신호(m) = 4이다.
제1 실시예에 따른 화상 처리 장치에 의해 부호화될 화상 데이터는 RGB 컬러의 화상 데이터이다. 각 성분(색 성분)은 8비트(다중값)로 0 내지 255의 휘도값을 표현하는 화소 데이터로 형성된다. 제1 실시예는 RGB 컬러 화상을 대상으로 삼고 있지만, 하나의 화소에 복수의 성분을 갖는 화상(예를 들어, CMYK 색 화상) 또는 모노크롬 다중값 화상(monochrome multi-value image)이어도 된다. 부호화될 화상 데이터는 W개의 수평 화소, H개의 수직 화소를 갖는다. 입력 화상 데이터는 W×H×3바이트의 데이터량을 갖는다. 수평 우측 방향은 X 좌표의 플러스 방향, 수직 하측 방향은 Y 좌표의 플러스 방향으로 정의한다. 입력 화상 데이터의 입력 순서는 래스터순이며, 각 화소는 R, G, B의 순으로 데이터를 레이아웃함으로써 형성된다.
제1 실시예에 따른 화상 처리 장치 내의 각 유닛의 동작을 설명한다.
부호화될 화상 데이터가 신호 라인(206)으로부터 순차적으로 입력되어, (2라인의 용량을 갖는) 버퍼(201)에 저장된다. 화소 데이터의 입력 순서는 래스터 스캔순이며, 각 화소의 성분 데이터는 R, G, B의 순서로 입력된다. R, G, B 성분은 각각 0, 1, 2의 성분 번호로 정의한다. 화상의 상부 좌측 코너를 좌표(0, O)로서 정의하고, 수평 우측 화소 위치 x, 수직 하측 화소 위치 y에서의 화소의 성분 번호(C)의 값을 P(x, y, C)로 나타낸다. 예를 들면, 위치(x,y) = (3,4)인 화소가 (R,G,B) = (255,128,0)라는 값을 갖는 경우, P(3,4,0) = 255, P(3,4,1) = 128, P(3,4,2) = 0이다.
도 24에 도시된 바와 같이, 색 카운트 판정 유닛(101)은 색 카운트 계산 유닛(101a), 선택기(101b), 레지스터(101c), 래치(101d)로 구성된다. 레지스터(101c), 래치(101d), 선택기(101b)에 대한 세부 내용은 후술될 것이다. 다음 설명에서는, 선택기(1O1b)는 데이터 "a"를 선택하여, 그것을 색 카운트 계산 유닛(101a)에 출력한다.
주목 화소(X)(대상 화소)의 각 성분에 대하여, 색 카운트 계산 유닛(101a)은, 버퍼(201)로부터 도 3의 4개의 주변 화소 "a", "b", "c", "d"의 값들을 수신하여, 화소들(Xa, Xb, Xc, Xd)을 얻는다. (x,y)를 주목 화소의 위치라고 하면, Xa, Xb, Xc, Xd는 다음과 같이 표현된다:
Xa = (P(x-1,y,0), P(x-1,y,1), P(X-1,y,2))
Xb = (P(x,y-1,0), P(x,y-1,1), P(x,y-1,2))
Xc = (P(x-1,y-1,0), P(x-1,y-l,1), P(x-1,y-1,2))
Xd = (P(x+1,y-1,0), P(x+1,y-1,1), P(x+1,y-1,2))
색 카운트 계산 유닛(101a)은 4개의 화소들(Xa, Xb, Xc, Xd)에 포함된 색 종류 수를 검출하여, 그 색 카운트(Nc)를 신호 라인(109) 상으로 출력한다. 보다 구체적으로는, 색 카운트 계산 유닛(101a)은 4개의 화소로부터 2개의 화소를 추출함으로써 각각 준비된 6개의 쌍들 (Xa,Xb), (Xa,Xc), (Xa,Xd), (Xb,Xc), (Xb,Xd), (Xc, Xd) 간에 동일한 색을 갖는 추출된 쌍들의 수를 카운트한다. 색 카운트 계산 유닛(101a)은 카운트가 "0"이면 4색, "1"이면 3색, "2" 또는 "3"이면 2색, "6"이면 1색이라고 판단한다. 색 카운트 계산 유닛(101a)은 그 색 카운트(Nc)를 신호 라인(109) 상으로 출력한다.
근방 일치 정보 부호화 유닛(102)은 신호 라인(109)을 통해 입력된 색 카운트(Nc), 주목 화소(X), 및 이웃 화소들(Xa, Xb, Xc, Xd)에 기초하여 이웃 화소 상태 정보 및 벡터 정보를 생성한다. 근방 일치 정보 부호화 유닛(102)은 근방 화소 상태 정보를 신호 라인(108) 상으로 출력한다. 근방 일치 정보 부호화 유닛(102)은 벡터 정보를 내부적으로 부호화하여, 그 부호 워드를 신호 라인(110) 상으로 출력한다.
도 11은 본 실시예에서의 근방 일치 정보 부호화 유닛(102)의 보다 세부적인 내부 구성을 도시한 블록도이다. 도 11에 도시된 바와 같이, 근방 일치 정보 부호화 유닛(102)은 근방 일치 판정 유닛(1101), 일치 화소 위치 부호화 유닛(1102), 및 선택기(1104)로 구성된다. 참조부호 1103는 신호 라인을 의미한다. 선택기(1104)를 설치한 이유는 이하에 상세히 설명한다. 본 설명에서는, 선택기(1104) 가 데이터 "a"를 선택한다.
근방 일치 정보 부호화 유닛(102)에서 수행되는 처리가 도 11을 참조하여 설명될 것이다.
근방 일치 판정 유닛(1101)으로부터 신호 라인(1103)으로 출력된 벡터 정보가 설명될 것이다.
근방 일치 판정 유닛(1101)은 주목 화소(X)와 동일색을 갖는 화소가 4개의 주변 화소(Xa, Xb, Xc, Xd)에 존재하는지의 여부를 밝혀, 일치 화소가 존재하는 경우에는 그 화소의 상대 위치를 특정하기 위한 벡터 정보를 생성한다. 근방 일치 판정 유닛(1101)은 신호 라인(1103)으로 벡터 정보를 출력한다. 그 벡터 정보는 신호 라인(109)을 통해 입력된 색 카운트(Nc)에 의존하여 결정된다. 근방 일치 판정 유닛(1101)에 의한 처리들은 각각의 색 카운트(Nc)에 대해 설명될 것이다.
색 카운트(Nc)가 4인 경우, 즉, Xa, Xb, Xc, Xd 모두가 다른 화소값을 갖는 경우, 근방 일치 판정 유닛(1101)은 무조건적으로 "4"를 벡터 정보로서 출력한다.
색 카운트(Nc)가 1인 경우, 즉, Xa 내지 Xd가 동일한 색을 갖는 경우, 주목 화소(X)는 근방 화소(Xa)와 비교된다. 근방 일치 판정 유닛(1101)은, X = Xa이면, "O"을; X ≠ Xa이면 "1"을 벡터 정보로서 출력한다.
색 카운트(Nc)가 2인 경우, 즉, Xa 내지 Xd 중 각각 동일한 색을 갖는 두 쌍이 존재하는 경우, 제1 화소값(색)(X1) 및 X1과는 다른 제2 화소값(X2)이 Xa, Xb, Xc, Xd의 순으로 획득된다. 근접 일치 판정 유닛(1101)은, X = X1이면 "0"; X = X2이면 "1"; X ≠ X1이고 X ≠ X2이면 "2"를 벡터 정보로서 출력한다. Xa, Xb, Xc, Xd의 순서에서, 제1 화소(X1)는 Xa이다. 제2 화소(X2)는 Xa와는 다른 값을 갖는 Xb, Xc, Xd 중 어느 하나이다.
색 카운트(Nc)가 3인 경우, 즉, Xa 내지 Xd에 동일한 색을 갖는 한 쌍이 존재하는 경우, 제1 화소값(X1), 제2 화소값(X2), 제3 화소값(X3)이 Xa, Xb, Xc, Xd의 순서로 획득된다. 근접 일치 판정 유닛(1101)은, X = X1이면 "0"; X = X2이면 "1"; X = X3이면 "2", X ≠ X1이고 X ≠ X2이고 X≠ X3이면 "3"을 벡터 정보로서 출력한다. Xa, Xb, Xc, Xd의 순서에서, 화소(X1)는 Xa이다. 화소값(X2)은 Xb, Xc, Xd의 순으로 첫번째의 Xa와 일치하지 않는 화소이다. 화소값(X3)은 X2 뒤에 오며, X2와 일치하지 않는 화소이다.
근방 일치 판정 유닛(1101)으로부터 신호 라인(108)에 출력될 근방 화소 상태 정보를 설명한다.
근방 화소 상태 정보는 주목 화소(X)와 동일한 색을 갖는 화소가 근방의 4개의 화소에 존재하는지의 여부를 나타낸다. 보다 구체적으로는, 근방 일치 판정 유닛(1101)은 신호 라인(1103)에 출력된 벡터 정보와 신호 라인(109)을 통해 입력된 색 카운트(Nc)를 비교한다. 그 벡터 정보가 색 카운트(Nc)와 일치하는 경우, 근방 일치 판정 유닛(1101)은 근방 화소 상태 정보로서 신호 라인(108)에 "0"을 출력하고, 그렇지 않으면, "1"을 출력한다. 색 카운트 Nc = 4인 경우에 대해, 근방 일치 판정 유닛(1101)은 항상 "1"을 출력한다. 색 카운트 Nc ≠ 4(= 3 또는 그 미만)인 경우에 대해서는, 주목 화소(X)가 4개의 주위 화소들(Xa, Xb, Xc, Xd) 중 어느 화소와도 일치하지 않으면, 근방 일치 판정 유닛(1101)은 "1"을 출력하고; 주목 화 소(X)가 이들 중 적어도 어느 하나와 일치하면, "O"을 출력한다.
도 12는 벡터 정보와 근방 화소 상태 정보와의 관계를 도시한다. 도 12로부터 알 수 있는 바와 같이, 근방 화소 상태 정보는, 주목 화소(X)의 근방의 4개의 화소에 포함되는 색 카운트(Nc)가 3 이하이고, 그 4개의 근방 화소들이 주목 화소(X)와 동일한 색을 갖는 적어도 하나의 화소를 포함하는 경우, "0"이다. 다시 말해, 근방 화소 상태 정보는, 주목 화소(X)의 근방에 있는 N개(제1 실시예에서 N= 4)의 화소들 중에 동일한 색을 갖는 적어도 한쌍이 존재하고, 주목 화소(X)가 근방 화소들 중 임의의 화소와 동일한 색을 갖는 경우에, "0"이다.
도 11로 돌아가서, 일치 화소 위치 부호화 유닛(1102)은 신호 라인(1103)으로부터 입력된 벡터 정보를 부호화하고, 결과의 부호 워드를 신호 라인(110)으로 출력한다. 제1 실시예에서, 일치 화소 위치 부호화 유닛(1102)은 색 카운트(Nc)에 따라서 도 15a 내지 도 15c의 부호표를 절환하여 선택된 것을 사용한다. 색 카운트(Nc)가 4인 경우, 일치 화소 위치 부호화 유닛(1102)은 어떠한 부호도 출력하지 않는다. 일치 화소 위치 부호화 유닛(1102)이 어떤 부호를 출력한다고 해도, 그 부호는 후술될 최종 화상 데이터의 부호 워드로 사용되지는 않는다.
상술된 동작에 의해, 벡터 정보의 부호 워드가 신호 라인(110) 상에 출력되어, 근방 화소 상태 정보가 신호 라인(108) 상으로 출력된다.
도 1로 돌아가서, 부호 생성 유닛(105)은 근방 일치 정보 부호화 유닛(102)으로부터의 근방 화소 상태 정보(신호 라인(108) 상의 신호), 벡터 정보의 부호 워드(신호 라인(110) 상의 신호), 성분값 예측 부호화 유닛(103)으로부터의 부호 워 드에 기초하여, 출력될 부호 워드를 생성한다. 부호 생성 유닛(105)은 부호 워드를 스위치(106)에 출력한다. 근방 일치 정보 부호화 유닛(102)은 앞서 이미 설명되었으므로, 성분값 예측 부호화 유닛(103)을 설명한다.
성분값의 예측 부호화는 JPEG 무손실 부호화 모드 또는 무손실 부호화와 준-무손실 부호화의 국제 표준 방식인 JPEG-LS(ITU-T T.87 | IS0/IEC 14495-1)에 정규 모드로서 규정된 방식을 이용할 수 있다. 설명의 편의를 위해서, 간단한 구성을 설명한다.
도 10은 성분값 예측 부호화 유닛(103)의 내부 구성의 서브블록을 도시한 블록도이다. 도 10에 도시된 바와 같이, 성분값 예측 부호화 유닛(103)은 성분값 예측 유닛(2O2), 감산기(2O3), 예측 오차 부호화 유닛(701), 및 선택기(702)로 구성된다. 참조부호 108은 상술된 근방 화소 상태 정보를 입력하기 위한 신호 라인을 의미한다. 선택기(702)를 설치한 이유가 후술될 것이다. 본 설명에서는, 선택기(702)는 데이터 "a"를 선택한다. 동일한 참조부호는 "발명이 속하는 기술분야 및 그 분야의 종래기술"란에서 도 2를 참조하여 기술한 처리 블록과 동일한 기능을 수행하는 블록들을 의미하므로, 그 설명은 생략한다.
상술된 종래 방식과 동일한 동작에 의해, 성분값 예측 유닛(202)은 주목 화소(X) 주변에 각 성분에 대한 화소값 "a", "b", "c"으로부터 예측값(p)를 생성한다. 감산기(203)는 주목 화소의 성분 값(x)(x는 R, G, B 중 어느 하나)으로부터의 차분(예측 오차) e = x - p를 생성하여, 그 예측 오차(e)를 예측 오차 부호화 유닛(701)에 입력한다. 제1 실시예에서, 성분값 예측 유닛(202)에 입력된 예측 선택 신호(m)를 고정값 "4"로 설정하고, 모든 성분값을 식 "a + b - c"에 의해 예측한다. 예측 오차 부호화 유닛(7O1)은 Golomb 부호를 이용함으로써 예측 오차(e)를 부호화한다.
Golomb 부호화는 음이 아닌 정수값을 부호화하고, 그 특징으로서 파라미터 변수 k에 따라 상이한 확률 모델들에 기초한 부호화를 달성할 수 있다. Golomb 부호화는 부호화될 심볼과 파라미터 변수(k)로부터 부호 워드를 얻을 수 있으므로, 어떤 부호표도 요구되지 않는다. Go1omb 부호화의 일 형태가 ISO와 ITU-T에 의해 국제 표준으로 권고된 JPEG-LS(IS0/IEC 14495-1 | ITU-T Recommendation T.87)에서 예측 오차 부호화 방식으로서 채용되었다. 제1 실시예에서는 감산기(203)로부터 출력된 예측 오차(e)를 다음 식에 따라서 음이 아닌 정수값(V로 정의됨)으로 변환하여, V를 선택된 파라미터(k)로 Golomb 부호화한다:
e ≥ O인 경우, V = 2 × e
e < 0인 경우, V = -2 × e - 1
부호화 파라미터(k)에서 음이 아닌 정수값(V)를 Golomb 부호화하는 절차는 다음과 같다.
V를 k 비트씩 우측으로 이동하여 정수값(m)을 얻는다. V의 부호는 m개의 "O"에 후속하는 "1"(가변 길이부)와 V의 하위 k 비트(고정 길이부)의 조합으로부터 형성된다. 도 16은 k = O, 1, 2, 3에서의 Golomb 부호의 일례를 도시한다. 상술된 부호의 형성 방법은 단지 일례이며, 고정 길이부와 가변 길이부를 대체해서도 유일 복호가능 부호(uniquely decodable code)를 형성할 수 있다. 그 부호는 0과 1을 대체하여서도 형성할 수 있다. 부호화 파라미터(k)의 선택 방법으로서, 소정의 단위로 최적의 파라미터(k)를 선택하는 방법 및 그 파라미터(k)를 부호열에 포함시키는 방법을 포함한 여러가지 방법을 생각할 수 있다. 제1 실시예는 JPEG-LS와 동일한 방법에 의해 부호화 동안 파라미터(k)를 업데이트하는 방법을 채택한다. 부호화 파라미터(k)를 선택하는 방법을 기술한다.
예측 오차 부호화 유닛(1001)은, 부호화된 화소 수를 유지하는 카운터(N) 및 각 성분마다 부호화된 예측 오차들의 절대값들의 합을 유지하는 카운터(A[C])(C는 0 내지 2의 성분 번호)를 포함한다. 부호화 시작시, 카운터(N)를 1로, 카운터 A[0] 내지 A[2]를 2로 설정한다. 부호화될 각성분 값마다 N×2^k가 A[C]를 초과하지 않는 최대값(k)을 얻는다. 예측 오차(e)는 k를 이용하여 상술된 절차에 의해 Golomb 부호화되고, 부호 워드를 출력한다(x^y는 x의 y 승을 의미함).
각 성분의 부호화 처리 후에, k는 A[C]에 예측 오차의 절대값 |e|를 더함으로써 업데이트된다. 이 경우, N은 모든 성분의 부호화 처리 후에 1만큼 증가하여 업데이트된다. A[C]와 N을 소정의 범위 내로 제한하기 위해서는, N이 소정값(예를 들어, 32)에 도달하는 타이밍에 A[C]와 N을 1/2로 업데이트하는 처리가 적용된다. 예측 오차 부호화 유닛(1001)은 신호 라인(108)을 통해 입력된 근방 화소 상태 정보가 "1"인 경우에만 동작한다.
제1 실시예에 따른 성분값 예측 부호화 유닛(103)의 처리 내용을 설명했다. 이제, 부호 생성 유닛(105)을 설명한다.
제1 실시예에서, 도 1에 도시된 바와 같이, 부호 생성 유닛(105)은 4가지의 정보: 성분값 예측 부호화 유닛(103)으로부터 출력된 R, G, B 성분의 예측 부호 워드, 근방 일치 정보 부호화 유닛(102)으로부터 출력된 벡터 정보의 부호 워드, 근방 화소 상태 정보, 및 색 카운트(Nc)를 수신한다. 이들 4가지 정보에 기초하여, 부호 생성 유닛(105)은 처리 A 내지 C 중 어느 하나를 처리한다.
[처리 A]
근방 화소 상태 정보가 "0"인 경우, 즉, 도 12에 도시된 바와 같이, 주목 화소(X)의 근방의 4개의 화소에 포함된 색 수가 3 이하인 경우, 주목 화소(X)와 동일한 색을 갖는 화소가 4개의 근방 화소 내에 존재하는 경우, 부호 생성 유닛(105)은 입력된 벡터 정보의 부호 워드만을 출력한다.
[처리 B]
색 카운트 Nc<4이고 근방 화소 상태 정보가 "1"인 경우, 즉, 도 12에 도시된 바와 같이, 주목 화소(X)의 근방의 4개의 화소에 포함된 색 수가 3 이하이고, 주목 화소(X)와 동일한 색을 갖는 화소가 4개의 근방 화소 내에 존재하지 않은 경우, 부호 생성 유닛(105)은 입력된 벡터 정보의 부호 워드에 계속하여, 성분값 예측 부호화 유닛(103)으로부터 출력된 R, G, B의 예측 부호 워드를 출력한다.
[처리 C]
색 카운트 Nc = 4인 경우, 부호 생성 유닛(105)은 성분값 예측 부호화 유닛(103)으로부터 출력된 R, G, B의 예측 부호 워드만을 출력하고, 벡터 정보의 부호 워드는 출력하지 않는다.
도 8a 내지 도 8c는 부호 생성 유닛(105)으로부터 출력되는 부호 데이터를 도시한다. 도 8a는 처리 A의 결과를, 도 8b는 처리 B의 결과를, 도 8c는 처리 C의 결과를 도시한다.
도 1로 돌아가서, 본 실시예의 런렝스 부호화 유닛(104)에 대하여 설명한다.
런렝스 부호화 유닛(104)은 동일한 화소값의 런(run)을 카운트하는 카운터 RL을 유지한다. 카운터 RL은 주목 화소(X)의 직전의 화소의 색 카운트(Nc)가 "1" 이외의 값을 가지고, 주목 화소의 색 카운트(Nc)가 "1"이 된 경우에 카운트를 시작한다. 일단 카운트를 시작하면, 그 화소 수는 색 카운트(Nc)에 무관하게, 주목 화소(X)가 직전 화소의 값(Xa)과 다른 색을 갖거나, 한 라인의 최종 화소의 처리가 종료할 때까지 화소 수를 계속 카운트한다. 런이 종료한 경우(어떤 런도 카운트될 수 없음), 카운터 RL에 유지되는 값을 런렝스 부호화하여, 스위치(106)에 출력한다. 런렝스 부호화 유닛(104)은 런을 카운트하고 있는지, 아니면 카운트하고 있지 않은지를 나타내는 상태 정보를 신호 라인(115)을 통해 스위치(106)에 출력한다. 런이 종료한 경우, 런렝스 부호화 유닛(104)은 이러한 결과에 대한 정보를 신호 라인(116)에 출력하며, 이 신호 라인(116)의 의미는 후술한다.
런렝스는 여러가지 방법으로 부호화될 수 있다. 제1 실시예는 국제 표준 방식 JPEG-LS에서의 런 모드를 이용한 런렝스와 동일한 방법을 이용하므로, 세부사항에 대해서는 생략한다.
도 1의 스위치(106)를 설명한다.
설명에 앞서, Xi를 주목 화소; Nci를 주목 화소(Xi) 근방의 4개의 화소의 색 카운트; Xi-1을 주목 화소(Xi) 직전의 화소; Nci-1를 화소(Xi-1) 근방의 4개의 화소의 색 카운트로서 정의한다. 부호화 생성 유닛(105)으로부터 출력된 부호화 데이터(도 8a 또는 도 8b에서 부호화된 데이터)를 화소 부호화 데이터라 칭하고, 런렝스 부호화 유닛(104)으로부터 출력된 부호화 데이터를 런렝스 부호화 데이터라 칭하여, 이 부호화 데이터들을 구별한다. 런렝스 부호화 유닛(104)으로부터 신호 라인(115) 상으로 출력된 상태 정보는, 런이 측정되는 동안에는 "1"이며, 어떠한 런도 측정되지 않을 때는 "0"이다.
ㆍ 상태 정보가 "0"인 경우:
스위치(106)는 단자 "a"를 선택하여, 주목 화소(Xi)의 부호화 데이터를 선택하고, 이를 부호열 형성 유닛(107)에 출력한다. 이 때, Nci-1 ≠ 1이고 Nci = 1이면, 스위치(106)는, 화소 부호화 데이터를 부호열 형성 유닛(107)에 출력한 후, 단자 b로 절환된다. 스위치(106)가 단자 b로 절환되는 이유는, 런렝스 부호화 유닛(104)이 상술된 조건 하에서 런을 측정하기 시작하여, 런이 측정되는 동안 어떠한 화소 부호화 데이터도 출력되지 않기 때문이다. 상기 조건 이외의 조건 하에서는, 스위치(106)는 단자 "a"를 계속 선택한다.
ㆍ 상태 정보가 "1"인 경우:
스위치(106)는 단자 b를 선택한다. 이 때, 런렝스 부호화 유닛(104)은 런렝스 부호화 유닛(104)이 런을 측정하는 동안, 어떤 런렝스 부호화 데이터도 출력하지 않으므로, 스위치(106)는 어떤 데이터도 부호열 형성 유닛(107)으로 출력하지 않는다. 런렝스 부호화 유닛(104)이 런의 종료를 검출한 경우에는, 런렝스 부호화 데이터를 출력한다. 런렝스 부호화 데이터를 출력한 후에, 런렝스 부호화 유닛(104)은 그 상태 정보를 "0"으로 변경한다. 그 상태는 런의 측정이 종료한 후에 "1"에서 "0"으로 변경된다. 주목 화소(X)와 그 직전의 화소(Xa) 간의 관계가 X ≠ Xa이거나, X = Xa인 경우에 런의 측정을 종료하여, 주목 화소(X)는 그 라인의 종단에 위치된다. 전자의 경우에는, 주목 화소의 화소 부호화 데이터를 출력하기 위해서, 런렝스 부호화 데이터를 출력한 직후에, 단자 "a"를 선택한다.
상술된 바와 같이, 화상을 부호화하기에 앞서, 부호열 형성 유닛은 부가 정보(예를 들어, 예측 선택 신호(m), 화상의 수평 및 수직 화소 수, 화소를 형성하는 성분의 수 및 각 성분의 정밀도)를 헤더로서 출력한다. 그 헤더에 후속하여, 부호열 형성 유닛은 스위치(106)를 통해 입력된 부호화 데이터를 순차적으로 출력한다. 출력 목적지가 저장 장치인 경우, 부호화 데이터는 파일로서 출력된다.
도 9는 부호열 형성 유닛(107)으로부터 출력된 부호화 데이터의 구조를 도시한다. 도 9에서, 런렝스 부호화 데이터와 화소 부호화 데이터의 순서는 임의적이다. 도 9는 런렝스 부호화 데이터와 화소 부호화 데이터가 마커와 같은 임의의 특정 휴지부 없이 혼재가능함을 도시한다. 제1 실시예에 따른 화상 처리 장치에서는 예측 선택 신호(m)를 고정값으로 설정하고, 헤더로부터 배제될 수도 있다.
도 9에서, 헤더 직후의 부호화 데이터가 런렝스 부호화 데이터인 것은 다음의 이유 때문이다. 상기 설명에 따르면, 주목 화소가 부호화될 화상 데이터의 상부 좌측 코너에 위치될 경우, 예측 값을 획득하는데 사용되는 "a", "b", "c"가 화 상 영역 외부에 있으며, a = b = c = O로서 취급된다. 보다 구체적으로는, a = b = c이므로, 주목 화소(X) 주위의 화소들의 색 카운트(Nc)는 "1"이며, 적어도 0 이상의 런렝스 부호화 데이터가 출력된다.
제1 실시예에서, 근방 일치 정보 부호화 유닛(102) 내의 일치 화소 위치 부호화 유닛(1102)은, 색 카운트(Nc)에 기초하여, 도 15a 내지 도 15c의 부호화표들 중 하나를 이용하여 부호화를 수행한다. 대안으로, 색 카운트(Nc)와는 무관하게, 도 7에 도시된 하나의 표를 이용하여 벡터 정보의 부호 워드를 생성할 수 있다. 색 카운트 Nc = 1인 경우, 벡터 정보가 0이든 1이든 관계없이, 그 부호 워드는 1 비트로 형성되기에 충분하다. 반대로, 도 7에서는 2 비트 이상의 부호 워드가 생성되므로, 도 15a 내지 도 15c에 도시된 바와 같이, 색 카운트(Nc)에 따라서 벡터 정보 부호화표를 절환하는 것이 바람직하다.
도 1의 신호(116), 도 10의 선택기(702), 도 11의 선택기(1104), 도 24의 선택기(101b), 레지스터(101c), 및 래치(101d)를 설치한 이유와, 그 동작을 설명한다.
상기 설명으로부터 이해되는 바와 같이, 주목 화소(X)의 색과 그 직전의 화소(Xa)의 색이 서로 다른 경우, 런렝스 부호화 유닛(104)에 의한 런은 종단한다. 이 때, 카운터 RL에 저장된 값을 런렝스 부호화하고, 이어서 그 주목 화소(X)의 화소 부호화 데이터가 출력된다. 주목 화소(X)에 관하여, X ≠ Xa이며, 도 12로부터 용이하게 이해할 수 있는 바와 같이, 벡터 정보가 "0"을 취할 수는 없다.
명백하게, 도 8a에 도시된 바와 같이, 데이터가 벡터 정보의 부호 워드만으 로 형성될 경우에 부호화 효율이 가장 높게 된다. 런 종단으로 판정된 주목 화소(X)를 Xa(또한 X1)과는 다른 화소(Xf)와 비교한 경우, X = Xf의 확률 때문에, 보다 높은 압축율이 기대될 수 있음을 이해할 수 있다. 화소(Xf)는 주목 화소(X) 근방에 위치되는 것이 바람직하다. 제1 실시예에서는 이전 런렝스 부호화시에 런 종단으로 판정된 화소를 화소(Xf)로서 채택한다. 다시 말해서, 현재의 런렝스 부호화시에 런 종단으로 판정된 주목 화소(X)는 런이 다음의 런렝스 부호화시에 종단을 결정할 때에 사용되는 근방 화소(Xf)로서 저장 및 유지된다.
도 18은 주목 화소(X)가 런렝스 부호화 데이터를 종단하는 경우의 입력 화상의 일례를 도시한다. 주목 화소(X) 직전의 런렝스 부호화 데이터는, 그 런의 기원으로서 역할을 하는 화소(1801)와 동일한 색을 갖는 화소가 연속하여 주목 화소(X)에서 색을 변경하는 경우를 도시한다. 화소(1802)에서, 이전 런의 종단을 검출한다. 이 상황에서, 주목 화소의 화소 부호화 데이터를 생성하기 위해, 색 카운트 판정 유닛(101)은, 화소 데이터 "a" 대신에 주목 화소의 근방의 화소들 "b", "c", "d" 및 화소(1802)의 화소 데이터 "f"에 기초하여, 색 카운트(Nc)를 다시 계산한다. 근방 일치 정보 부호화 유닛(102)이 벡터 정보를 부호화하고, 근방 화소 상태 정보를 다시 생성한다. 성분값 예측 부호화 유닛(103)은 화소 데이터 "f", "b", "c"에 기초하여 예측값 p를 획득하고, 주목 화소(X)에 대한 예측 오차 부호화 처리를 수행한다.
상기 프로세스를 구현하기 위해서, 런의 종단이 검출된 경우에, 런렝스 부호화 유닛(104)은 그 때의 주목 화소(X)의 데이터(R, G, B 성분 데이터)를 유지하기 위해, 신호(116) 상에 런 종단 검출 정보를 출력한다.
도 24에 도시된 바와 같이, 신호 라인(116)을 통해 런 종단 검출 정보를 수신할 시에, 색 수 판정 유닛(101) 내의 래치(101d)는 레지스터(101c)의 데이터를 래치하여, 선택기(101b), 근방 일치 정보 부호화 유닛(102), 및 성분값 예측 부호화 유닛(103)에 화소 데이터(f)로서 출력한다. 또한, 래치(101d)에 의한 저장 및 래치 후, 레지스터(101c)는 이전에 저장/유지된 데이터를 그 때의 주목 화소(X)의 데이터로 덮어쓴다(업데이트한다). 즉, 레지스터(101c)는 주목 화소(X)의 데이터를 유지하고, 래치(101d)는 이전의 런렝스 부호 워드의 런이 종단하는 화소 데이터(f)를 래치한다. 화상 데이터의 부호화 처리를 시작하여, 최초로 런렝스 부호화를 수행하는 경우, 어떠한 데이터(f)도 존재하지 않는다. 따라서, 하나의 화상 데이터를 부호화하기에 앞서, 적절한 값, 예를 들어, "0"을 레지스터(101c)에서 R, G, B 성분으로 설정한다. 이러한 값들은 그 값들이 복호측 값과 동일한 한, "0"으로 한정되는 것이 아니다.
신호 라인(116)을 통해 런 종단 검출 정보를 수신할 시, 선택기(101b)는 데이터 "a" 대신에 데이터 "f"를 색 카운트 연산 유닛(101a)으로 출력한다. 색 카운트 계산 유닛은 주목 화소(X) 근방의 화소들 "b", "c", "d"와 화소 "f"에 기초하여, 색 카운트(Nc)를 다시 계산한다.
근방 일치 정보 부호화 유닛(102)이 신호 라인(116)을 통해 런 종단 검출 정보를 수신한 경우, 선택기(1104)가 화소 데이터(f)를 선택하도록 한다. 근방 일치 정보 부호화 유닛(102)은 벡터 정보를 다시 생성하고, 이를 다시 부호화하고, 신호 라인(110)에 그 부호화된 벡터 정보를 출력하고, 근방 화소 상태 정보(108)를 신호 라인(108)에 다시 출력한다.
또한, 성분값 예측 부호화 유닛(103)이 신호 라인(116)을 통해 런 종단 검출 정보를 수신한 경우, 선택기(702)가 화소 데이터 "f"를 선택하도록 한다. 예측 성분값 부호화 유닛(103)은 예측 선택 신호 및 데이터 "f", "b", "c"의 성분값들에 기초하여, 주목 화소의 부호 워드의 예측치를 계산한다.
상술된 바와 같이, 런렝스 부호화 유닛(104)으로부터 신호 라인(115) 상으로 출력된 상태 신호가 "1"에서 "0"으로 변경되는 경우, 스위치(106)는 런렝스 부호화 유닛(104)으로부터 입력된 런렝스 부호화 데이터를 출력한다. 스위치(106)는 런렝스 부호화 데이터를 부호열 형성 유닛(107)에 출력하고, 이어서 데이터 "a" 대신에 데이터 "f"에 기초하여 색 카운트 판정 유닛(101), 근방 일치 정보 부호화 유닛(102), 및 성분값 예측 부호화 유닛(103)에 의해 생성된 주목 화소(X)에 대응하는 화소 부호화 데이터를 출력한다.
상술된 바와 같이, 제1 실시예에 따르면, 화상 처리 장치는 근방 일치 정보 부호화 유닛(102), 성분값 예측 부호화 유닛(103), 및 런렝스 부호화 유닛(104)을 포함한다. 화상 처리 장치는 부호화될 주목 화소(X)의 주위의 부호화된 화소(Xa, Xb, Xc, Xd) 내에 존재하는 색 수에 따라서 이 유닛들의 부호화 방법의 종류를 스위칭함으로써 부호화를 실행한다. 특히, 화소 부호화 데이터 및 런렝스 부호화 데이터 간의 절환은 부호화된 화소 위치의 정보에 따라서 결정된다. 따라서, 부호화 데이터는 부호화 방법의 종류가 스위칭되었다는 것을 나타내는 임의의 특정 식별 정보를 요구하지 않는다.
제1 실시예에 따르면, 런렝스 부호화 유닛(104)이 주목 화소(X)가 런을 종단한 것으로 판정한 경우, 색 카운트 판정 유닛(101), 근방 일치 정보 부호화 유닛(102), 및 성분값 예측 부호화 유닛은, 통상의 예측 부호화 시에 참조되어야 하는 화소 데이터(Xa) 대신에 다른 위치의 화소(Xf)를 일시적으로 참조함으로써, 재계산을 수행한다. 화소 부호화 데이터의 출력 형식으로서 도 8a의 형식이 채택되는 경우의 확률 저하가 억제될 수 있고, 보다 높은 압축 효율을 기대할 수 있다.
예를 들어, 도 13에 도시된 바와 같이, 소정의 주기성을 가지고 매 4개의 화소마다 한 화소값이 배치되는 화상으로부터 형성되는 화상 데이터 내의 주목 화소(X)를 부호화할 시, 4개의 주변 화소들 "a", "b", "c", "d"이 동일한 화소값을 갖기 때문에 처리는 런렝스 부호화 모드로 들어간다. 그러나, 런은 길이 0으로 종단하여, 그 처리는 벡터 정보의 부호화로 이동한다. 4개의 주위 화소들을 참조하면, 어떠한 일치 화소도 검출되지 않아, 벡터 정보가 예측된대로 부호화되어, 부호화 효율이 저감된다. 반대로, 직전의 런의 종단으로서 역할을 하는 화소(Xf)를 참조함으로써 벡터 정보가 부호화되고, 화소(Xf)가 주목 화소(X)와 일치할 확률이 높아져, 부호화 효율이 향상된다.
< 변형예의 설명 >
제1 실시예는 도 1의 구성에 기초하여 설명되었지만, 제1 실시예와 동일한 처리가 컴퓨터 프로그램에 의해 구현될 수 있다.
도 14는 장치가 소프트웨어에 의해 구현되는 경우의 기본 장치(PC 등) 구성 을 도시하는 블록도이다.
도 14에서, 참조부호 1401은 RAM(1402) 및 ROM(1403)에 저장된 프로그램 및 데이터를 이용함으로써 장치 전체를 제어하는 CPU를 의미하고, 또한 후술될 화상 부호화 및 복호 처리를 실행한다.
RAM(1402)은 I/F(1409)를 통해 외부 저장 장치(1407), 저장 매체 드라이브(1408), 또는 외부 장치로부터 다운로드된 프로그램 및 데이터를 저장하는데 사용된다. RAM(1402)은 또한 CPU(1401)가 각종 처리들을 실행할 경우, 작업 영역으로서 사용된다. 도 1에 도시된 버퍼(201), 허프만표 메모리(204) 등도 RAM(1402)에 할당된다.
ROM(1403)은 부트 프로그램, 장치 설정 프로그램, 및 데이터를 저장한다.
참조부호 1404, 1405는 사용자가 CPU(1401)에 각종 명령들을 입력할 수 있도록 하는 키보드 및 포인팅 장치(예컨대, 마우스)를 각각 의미한다.
참조부호 1406은 CRT, 액정 화면 등으로 구성된 디스플레이 장치를 의미하며, 화상 및 문자와 같은 정보를 디스플레이할 수 있다.
외부 저장 장치(1407)는 하드디스크 드라이브와 같은 대용량 정보 저장 장치이다. 외부 저장 장치(1407)는 OS, 후술되는 화상 부호화 및 복호 처리를 위한 프로그램, 부호화될 화상 데이터, 복호될 화상의 부호화 데이터 등을 저장한다. 프로그램 및 데이터는 CPU(1401)의 제어하에서 RAM(1402) 내의 소정의 영역으로 로딩된다.
저장 매체 드라이브(1408)는 CD-ROM 또는 DVD-ROM과 같은 저장 매체에 기록 된 프로그램 및 데이터를 판독하고, RAM(1402) 및 외부 저장 장치(1407)에 그 판독된 프로그램 및 데이터를 출력한다. 저장 매체는 후술될 화상 부호화 및 복호 처리를 위한 프로그램, 부호화될 화상 데이터, 복호될 화상의 부호화 데이터 등을 기록할 수도 있다. 이 경우, 저장 매체 드라이브(1408)는 CPU(1401)의 제어하에 이 프로그램들 및 데이터를 RAM(1402) 내의 소정의 영역에 로드한다.
I/F(1409)는 외부 장치를 화상 처리 장치에 접속시켜, 그 화상 처리 장치와 외부 장치 간의 데이터 통신을 허용한다. 예를 들어, I/F(1490)는 부호화될 화상 데이터, 복호될 화상의 부호화 데이터 등을 본 장치의 RAM(1402), 외부 저장 장치(1407), 또는 기록 매체 드라이브(1408)에 입력할 수 있도록 한다. 참조부호 1410은 상기 유닛들을 접속시키는 버스를 의미한다.
상기 구성에서, 제1 처리와 동일한 처리가 소프트웨어에 의해 구현될 경우, 도 1에 도시된 색 카운트 판정 유닛(101)으로 대표되는 각종 구축 성분에 대응하는 처리는, 소프트웨어에서 함수, 서브루틴 등으로 구현된다. 또한, 본 변형예에서도, 편의를 위해 도 1의 처리 유닛들의 명칭들을 그대로 사용한다. 처리를 시작하기에 앞서, 버퍼(201)가 CPU(1401)에 의해 RAM(1402)에 할당된다.
도 17은 본 변형예에 따른 화상 처리 장치에 의한 부호화 처리의 흐름을 도시하는 플로우차트이다. 도 17에 따른 프로그램을 RAM(1402)에 로드하여 CPU(1401)로 실행함으로써, 도 17에 도시된 플로우차트에 따른 처리를 달성한다. 본 변형예에 따른 어플리케이션 프로그램의 전체 흐름을 도 17을 참조하여 설명한다.
부호열 형성 유닛(107)은 부호화될 화상의 부가 정보를 포함하는 헤더을 생성하여, 출력한다(단계 S1901). 주목 화소의 수직 위치를 유지하는 카운터 y를 0으로 설정하고, 런렝스 부호화 유닛(104) 내에 유지된 카운터 RL을 0으로 초기화하고, 런 종단 검출시 참조 화소(Xf)의 각 성분 값을 "0"으로 초기화한다(단계 S1902). 또한, 주목 화소의 수평 위치를 유지하는 카운터 x를 0으로 설정한다(단계 S1903). 색 카운트 판정 유닛(101)이 (x, y) 좌표의 주목 화소(X) 주변의 화소들 "a", "b", "c", "d"의 색 카운트(Nc)를 얻는다(단계 S1904). 주목 화소가 부호화될 화상의 제1 라인에 위치된 경우, "b", "c", "d"(도 3 참조) 중 어느 것도 존재하지 않으며, 이 주변 화소들의 RGB 각 성분 값들은 0으로 설정된다. x = 0인 경우, 주변 화소 "a"도, "c"도 존재하지 않으므로, 이들의 RGB는 성분 값들은 0으로 설정된다. 그러나, RGB 성분값들이 복호 처리시의 값들과 동일한 한, 이 값들로 제한되지 않는다.
단계 S1905에서, 색 카운트(Nc)가 1인지 또는 카운터 RL이 0 이외의 값을 유지하는지를 판정한다. 색 카운트 Nc = 1 또는 카운터 RL이 0 이외의 값을 유지하면(단계 S1905에서 YES), 처리는 단계 S1914로 이동한다. 상기 조건이 부합하지 않으면(단계 S1905에서 NO), 처리는 단계 S1906으로 이동한다.
처리가 단계 S1906으로 이동한 후에, 근방 일치 정보 부호화 유닛(102)은 주목 화소에 대한 벡터 정보를 부호화하여, 부호 생성 유닛(105)을 통해 그 부호 워드를 출력한다. 처리는 단계 S1907로 진행하여 주목 화소 위치에서의 근방 화소 상태 정보가 "1"인지의 여부를 판정한다(단계 S1907). 근방 화소 상태 정보가 "1" 인 경우(단계 S1907에서 YES), 처리는 단계 S1923으로 진행하고, 성분값 예측 부호화 유닛(103)이 각 R, G, B 성분을 예측 부호화한다.
단계 S1909에서, 부호 생성 유닛(105) 및 성분값 예측 부호화 유닛(103)으로부터 출력된 부호 워드를 부호열 형성 유닛(107)에 의해 소정의 포맷으로로 변환하여, 주목 화소에 대한 부호열을 형성한다(단계 S1909). 이어서, 주목 화소의 수평 위치를 유지하는 카운터 x가 1만큼 증분된다(단계 S1910). 카운트 x는 화상의 수평 화소 카운트(W)와 비교된다. x < W이면(단계 S1911에서 YES), 처리는 단계 S1904로 돌아가서 다음 화소에 대한 부호화 처리를 수행한다. x ≥ W이면(단계 S1911에서 NO), 처리는 단계 S1912로 이동한다(단계 S1911).
단계 S1905에서 색 카운트 Nc = 1 또는 카운터 RL이 0 이외의 값을 유지한다고 판정된 경우, 처리는 단계 S1914로 이동하여 주목 화소(X)(카운터 x, y로 나표현되는 화소값 m)를 직전 화소의 값(Xa)과 비교한다.
X ≠ Xa이면(단계 S1914에서 NO), 처리는 단계 S1920로 진행한다.
X = Xa이면(단계 S1914에서 YES), 런렝스 부호화 유닛(104)에 보유된 카운터 RL은 1만큼 증분된다(단계 S1915). 다음으로, 주목 화소의 수평 위치를 보유하는 카운터 x가 1만큼 증분된다(단계 S1916). 단계 S1917에서, 카운터 x를 화상의 수평 화소 카운트 W와 비교한다. x < W이면, 처리는 단계 S1914로 돌아가서 다음 런을 계속해서 카운트한다. x ≥ W이면, 런이 화상의 우측 종단에 도달한다. 이 때, 런렝스를 마무리하여, 런렝스 부호화 유닛(104)이 카운터 RL에 의해 보유된 런렝스를 부호화한다. 런렝스 부호화 유닛(104)으로부터 출력된 부호는 스위치(106) 를 통해 부호열 형성 유닛(107)으로 보내져서, 소정 포맷의 부호열을 형성한다(단계 S1918). 런렝스 부호화 종료 후에, 카운터 RL은 0으로 리셋된다(단계 S1919). 스위치(106)의 접속은 단자 "a"로 변경된다. 처리는 단계 S1912로 이동하고, 부호화 처리의 대상은 다음 라인으로 이동한다.
처리가 단계 S1914로부터 단계 S1920으로 진행하면, 직전 화소의 값(Xa)과는 다른 화소값(X)의 출현에 의해 런이 종결됨을 의미한다. 따라서, 런렝스 부호화 유닛(104)는 카운터 RL가 보유한 런렝스를 부호화하여 부호를 출력한다. 런렝스 부호화 유닛(104)으로부터 출력된 부호 워드는 스위치(106)를 통해 부호열 형성 유닛(107)으로 보내지고, 소정 포맷의 부호열을 형성한다. 런렝스 부호화의 종료 후에, 카운터 RL은 0으로 리셋된다(단계 S1921). 이 때, 직전 화소(Xa)의 데이터는 Xf의 값으로 치환된다(단계 S1701). 단계 S1702에서, Xf의 데이터는 주목 화소(X)의 데이터로 업데이트된다. 단계 S1703에서, 색 수는 화소들 "f", "b", "c", "d"에 기초하여 다시 계산되고, 처리는 단계 S1906으로 진행한다. 화소 데이터(Xa)는 화소 데이터(Xf)로 치환되었으므로, 처리는 단계 S1906 이후에 화소들 "f", "b", "c", "d"에 기초한다. 결과적으로, 주목 화소의 화소 부호화 데이터가 생성되며, 스위치(106)의 접속은 단자 "a"로 변경된다.
단계 S1912에서, 주목 화소의 수직 위치를 유지하는 카운터 y는 1만큼 증분된다. 카운터 y는 화상의 수직 화소 카운트 H와 비교된다. y < H이면(단계 S1913에서 YES), 처리는 단계 S1903으로 돌아가서 다음 라인의 화소도 유사하게 처리한다. y ≥ H이면(단계 S1913에서 NO), 대상 화상의 부호화 처리를 종료한다(단계 S1913).
상술된 바와 같이, 변형예도 제1 실시예와 동일한 작용 효과를 달성할 수 있다.
이후 복호 처리를 설명한다. 복호 처리는 기본적으로 부호화 처리와 쌍을 이룬다. 이 경우, 상기 처리에 의해 부호화된 화상 데이터를 복호하는 처리 절차들이 도 25의 플로우차트를 참조하여 설명한다. 다음 설명에서, 복호될 주목 화소(X)가 화상의 경계에 위치될 경우, 참조 화소들 "a", "b", "c", "d" 중 어느 것도 존재하지 않으므로, 이 성분값들은 0으로 설정된다.
단계 S2101에서, 복호될 부호화 데이터가 (RAM에 할당된) 부호 버퍼에 입력되고, 부호화 데이터의 헤더를 분석하여 복호에 필요한 부가 정보를 추출한다. 주목 화소의 수직 위치를 유지하는 카운터 y는 0으로 설정된다(단계 S2102). 이 때, 참조 화소(Xf)의 R, G, B 데이터를 0으로 초기화하고, 플래그 FLAG를 "0"로 초기화한다(단계 S2102). 이 플래그 FLAG를 RAM에 할당하여, 런렝스 부호 워드를 복호하였는지를 판정하는데 사용한다.
단계 S2103에서, 주목 화소의 수평 위치를 유지하는 카운터 x를 0으로 설정한다(단계 S2103).
좌표(x, y)에 위치한 화소에 주목하여, 복호된 주위 화소(Xa, Xb, Xc, Xd)를 참조함으로써 색 카운트(Nc)를 획득한다(단계 S2104). 주목 화소가 화상의 상부 좌측 코너에 위치되면, Xa, Xb, Xc, Xd는 "0"으로 취급된다.
단계 S2105에서, 색 카운트(Nc)가 "1"인지의 여부가 판정된다. 색 카운 트(Nc)가 1이면(단계 S2105에서 YES), 처리는 단계 S2114로 이동하고; NO이면, 단계 S2110로 이동한다.
단계 S2110에서, 색 카운트(Nc)를 4와 비교한다. Nc = 4이면, 주목 화소는 성분값 예측 부호화 데이터(도 8c의 부호화 데이터)이고, 그 주목 화소의 각 성분을 복호한다(단계 S2108).
단계 S2110에서, Nc ≠ 4라고 판정되면, 그 주목 화소는 벡터 정보의 부호 워드이며, 그 부호 워드는 단계 S2106에서 벡터 정보로 복호된다. 이 벡터 정보의 부호 워드의 복호는, 도 15a 내지 도 15c에 도시된 바와 같이, 색 수에 대응하는 표를 사용한다.
얻어진 벡터 정보와 색 카운트(Nc)와 일치하면, 근방 화소 상태 정보 "1"이 생성되고; 서로 일치하지 않으면, "0"이 생성된다. 근방 화소 상태 정보가 "1"인지의 여부가 단계 S2107에서 판정된다(도 12 참조). 근방 화소 상태 정보가 "1"인 경우, 주목 화소의 부호화 데이터가 도 8b의 데이터 구조를 갖는다. 근방 화소 상태 정보가 "0"인 경우, 주목 화소의 부호화 데이터가 도 8a의 데이터 구조를 갖는다.
따라서, 근방 화소 상태 정보가 "1"인 경우, 성분들의 예측 부호 워드는 벡터 정보의 부호 워드에 후속하고, 단계 S2121에서 복호된다.
처리가 단계 S2108 또는 단계 S2121에서 단계 S2109로 진행하면, 성분들의 예측 부호화 데이터를 복호한 결과를 주목 화소의 데이터로서 출력한다. 단계 S2107에서 NO이면, 화소들 "a", "b", "c", "d" 간에 대응하는 화소 데이터가 복호 된 벡터 정보에 따라서 주목 화소 데이터로서 출력된다.
단계 S2132에서, 플래그 FLAG가 "1"인지의 여부가 판정된다. 이 설명에서, 플래그 FLAG = 0이다. 플래그 FLAG = 0이면, 처리는 단계 S2110으로 진행하여, 주목 화소의 수평 위치를 유지하는 카운터 x에 1을 증분시킨다. 단계 S2111에서, 카운터 x는 화상의 수평 화소 카운트 W와 비교된다. x < W이면(단계 S2111에서 YES), 처리는 단계 S2104로 돌아가서 다음 화소의 복호 처리를 수행한다. x = W이면, 처리는 단계 S2112로 이동한다.
단계 S2105에서 색 카운트(Nc)가 1이라고 판정된 경우, 주목 부호화 데이터는 런렝스 부호화 데이터이므로, 처리는 단계 S2114로 진행하여 런렝스 RL이 복호한다. 복호 결과는 "0" 런이 될 수도 있다.
복호된 런렝스 RL을 0과 비교한다(단계 S2115). RL = 0이면(단계 S2115에서 YES), 처리는 단계 S2120으로 이동한다.
단계 S2115에서 RL ≠ 0이라고 판정된 경우, 복호된 화소값으로서 Xa가 출력된다(단계 S2116). 카운터 RL에서 1이 차감되어(단계 S2117), 주목 화소의 수평 위치를 보유하는 카운터 x가 1만큼 증분된다(단계 S2118). 단계 S2119에서, 카운터 x가 수평 화소 카운트 W와 비교된다. x < W이면, 처리는 단계 S2115로 돌아가고; x ≥ W이면, 처리는 단계 S2112로 이동한다(단계 S2119).
단계 S2115에서 RL = 0이라고 판정된 경우, 처리는 단계 S2120으로 이동하여, 주목 화소(X)의 직전의 화소(Xa)의 데이터를 Xf의 데이터로 일시적으로 치환한다. 단계 S2129에서, 플래그 FLAG는 런렝스 부호 워드의 복호되었음을 나타내기 위해, "1"으로 설정된다. 처리는 단계 S2130으로 진행하여 Xf, Xb, Xc, Xd에 기초하여 색 카운트(Nc)를 카운트하고, 이어서 단계 S2110으로 돌아간다.
단계 S2130로부터 단계 S2110에 처리가 돌아간 경우에는, 상술된 단계 S2110으로부터의 처리를 수행하여 주목 화소(X)를 복호한다. 그 후, 단계 S2132에서, 플래그 FLAG가 "1"이라고 판정한다. 화소 데이터(Xf)는 단계 S2133에서 주목 화소(X)의 복호된 성분값들로 업데이트되고, 플래그 FLAG는 단계 S2134에서 "0"으로 설정된다.
단계 S2112에서, 주목 화소의 수직 위치를 유지하는 카운터 y를 1만큼 증분하여, 화상의 수직 화소 카운트 H와 비교한다. y < H이면(단계 S2113에서 YES), 처리는 단계 S2103로 돌아가서 다음 라인의 각 화소에 대해 유사하게 처리한다. y ≥ H이면(단계 S2113에서 NO), 대상 화상 데이터에 대한 복호 처리는 종료한다(단계 S2113).
상기 처리에 의해, 제1 실시예에서 부호화된 데이터는 무손실 복호되어, 원화상 데이터를 복원할 수 있다.
[제2 실시예]
제1 실시예에서, 주목 화소(X)가 런을 종단하여 예측 부호화에 대한 예측값이 얻어질 경우, 참조 화소 "a", "b", "c" 내의 화소 "a"를 이전 런렝스 부호화시에 런을 종단시킨 참조 화소 "f"로 치환함으로써, "f", "b", "c"가 사용된다. 제2 실시예에서, 주목 화소(X) 이전에 런을 종단한 복수의 화소 색이 참조 화소 "f"로서 저장되고, 색이 자주 출현하는 화소를 참조한다.
제2 실시예는 처리를 컴퓨터 프로그램에 의해 구현하는 일례를 설명한다. 장치 구성은 도 14와 동일하다.
처리 절차는 도 19의 플로우차트에 도시된다. 도 19의 플로우차트는, 도 17의 단계 S1701 및 단계 S1702가 단계 S1941 및 단계 S1942로 치환된 점과, 부호화를 시작하기에 앞서 출현색의 성분값 및 출현 빈도를 유지하는 표가 RAM(1402)에 할당된다는 점과, 부호화 시작시에 R = G = B = 0이 표에 보존되어 그 빈도가 "1"로 설정된다는 점에서, 도 17과는 다르다. 표를 할당하여 초기화하는 처리는 예를 들어, 단계 S1902에서 실행된다.
도 20은 부호화 처리가 임의의 단계로 진행할 경우의 표의 상태를 도시한다. 이 표는 빈도의 내림차순으로 출현 색 데이터를 보유한다. 새로운 색이 출현할 경우, 색을 나타내는 색 성분들을 추가 및 등록하여, 그 출현 빈도를 "1"로 설정한다.
도 19의 플로우차트가 단계 S1941 및 단계 S1942를 제외하고는 도 17과 동일하기 때문에, 단계 S1941 및 단계 S1942에 대하여 설명한다.
주목 화소(X)가 런을 종단하는 경우, 처리는 단계 S1941로 진행한다. 테이블을 참조함으로써, 이전에 런을 종단시킨 색 화소들 중 가장 빈도를 갖는 R, G, B의 데이터를 화소(Xf)의 데이터로 결정한다. 처리는 단계 S1942로 진행하고, 화소(Xf)를 결정하는 색 데이터의 빈도에 "1"을 증분하여, 테이블을 갱신한다. 이 때, 주목 화소(X)와 동일한 색이 존재하지 않으면, 주목 화소(X)의 R, G, B의 값을 테이블에 추가하여, 그 출현 빈도를 "1"로 설정한다.
상술된 제2 실시예에 따라, 주목 화소 이전의 런의 종단한 화소가 근방 일치 정보에 따라 부호화된 경우, 가장 주목 화소에 일치하는 픽셀을 주목 화소에 대한 참조 화소로 채택한다. 참조 화소 및 주목 화소는 서로 일치할 가능성이 매우 크고, 보다 높은 부호화 효율이 예상될 수 있다.
복호 처리를 표의 개념을 제1 실시예에 적용시켜 달성하므로, 그 설명은 생략한다.
[제3 실시예]
제3 실시예에서, 런의 최초가 되는 화소 직전의 화소가 주목 화소(X) 이전에 런을 종단시킨 화소 대신에, 참조 화소(f)로서 언급된다. Xf ≠ Xa이며, Xf의 위치가 (적어도 한라인 내에서는) 주목 화소(X)에 훨씬 더 가까운 것으로 약속된다. X = Xf의 확률이 높아지게 되며, 보다 높은 부호화 효율을 기대할 수 있다.
제3 실시예의 런렝스 부호화 데이터는 "런" 자체의 부호 워드를 생성하는데 사용되며, 런의 기원이 되는 색을 갖는 화소 부호화 데이터(도 8a 내지 도 8c)는 항상 런렝스 부호화 데이터 직전에 위치되며, 그 주목 화소는 부호화될 화상의 각 라인의 선두에 위치된다.
런렝스 부호화 실행시 런의 기원으로서 역할을 하는 픽셀의 직전의 픽셀을 저장하기 위해, 처리는 도 21에 도시된 절차들에 따라 실시된다. 두 화소 데이터 Xf 및 Xg는 RAM(1402)에 저장되어 0으로 초기화되며(단계 S1902), 단계 S1701 및 단계 S1702는 단계 S1952로 치환된다는 점에서, 도 21의 플로우차트는 도 17과는 다르다. 이 경우, 화소 데이터(Xg)는 주목 화소(X)의 화소 데이터를 저장 및 유지 하는데 사용되며, Xf는 화소 데이터 직전의 데이터를 저장 및 유지하는데 사용된다. 도 17과 다른 처리들 만이 설명될 것이다.
주목 화소(X)가 런을 종단시키는 경우에는, 화소 데이터(Xa)는 Xg의 R, G, B 값들로 일시적으로 치환되어, 단계 S1952에서 Xf의 R, G, B 값을 Xa을 대입된다. 일시적으로 유지된 Xg의 값은 Xf에 대입하여, 주목 화소(X)의 R, G, B 값을 Xg에 대입한다. 결과적으로, 런의 종단 화소를 부호화할 경우에만, 주목 화소(X)의 화소 데이터 및 하나의 직전 화소 데이터를 업데이트하여, 이 값들을 항상 유지한다. 단계 S1703에서, 업데이트된 Xa(=Xf), Xb, Xc, Xd에 기초하여 색 카운트(Nc)를 다시 계산하고, 처리는 단계 S1906으로 진행한다.
예를 들어, 도 22에 도시된 화상이 존재하는 경우, 주목 화소(X)가 도 22에 도시된 바와 같이 위치된다. 제1 실시예에서, 도 22의 화소(2201)가 이전 런의 종단에 위치되어 참조되면, 부호화 효율을 감소시킨다. 반대로, 제3 실시예에서, 도 22의 화소(Xf)가 참조된다. 주목 화소(X)의 R, G, B의 값이 255, 255, 255이면, 참조 화소(Xf)의 R, G, B는 도 23에 도시된 바와 같이, 255, 255, 255가되고, 부호화 효율이 증가한다.
[제4 실시예]
제1 내지 제3 실시예를 설명하였다. 벡터 정보의 부호화 없이 상기 실시예들을 간단히 실행하는 예를 제4 실시예로 설명한다.
제4 실시예에 따른 화상 처리 장치가 주목 화소 근처의 부호화된 화소 위치들의 화소들(화소 수가 1개일 수도 있음)에 기초하여, 그 주목 화소의 예측 값을 획득하여, 그 주목 화소값과 예측 값 간의 차분을 계산하여, 그 차분값을 부호화하는 예측 부호화 유닛과, 동일한 화소값의 런을 카운트하는 런렝스 부호화 유닛을 포함하고, 런이 종단할 경우 또는 주목 화소가 그 라인의 종단이 되는 경우, 카운트 값을 부호화한다. 예측 부호화 유닛과 런렝스 부호화 유닛은 적절하게 절환된다.
부호화될 화상 데이터는, R, G, B 색 화상 데이터이다. 각 성분(색)은 8 비트씩 0 내지 255의 휘도 값을 표현한 화소 데이터로부터 형성된다. 화상 데이터는 점순차 방식으로(dot-sequentially), 즉, 래스터 스캔순으로 화소들을 레이아웃함으로써 형성되며, 각 화소는 R, G, B의 순으로 데이터를 레이아웃함으로써 형성된다. 화상은 W개의 수평 화소, H개의 수직 화소로 구성된다. 입력 화상 데이터는 RGB 색 화상에 제한되지 않고, CMY 화상(또는 K을 추가하여 얻어진 CMYK 화상) 또는 모노크롬 화상이 될 수도 있다.
도 26은 제4 실시예에 따른 화상 처리 장치를 도시한 블록도이다. 제4 실시예에 따른 화상 처리 장치는 부호화될 화상 데이터를 일시적으로 저장하는 버퍼 메모리(2401), 부호화 방법 판정 유닛(2402), 예측 부호화 유닛(2403), 런렝스 부호화 유닛(2404) 및 부호화 데이터를 저장하는 메모리(2405)를 포함한다. 도 26에 도시된 구축 성분들 중, 부호화 방법 판정 유닛(2402), 예측 부호화 유닛(2403) 및 런렝스 부호화 유닛(2404)은 컴퓨터로 실행되는 프로그램에 의해 구현될 수 있다. 이 구성은 도 14에 도시된 바와 동일하다.
화상 데이터가 래스터 스캔순으로 신호 라인(2400)으로부터 입력된다. 버퍼 메모리(2401)는 복수의 라인들의 화상 데이터를 저장하기에 충분한 영역을 가지며, 신호 라인(2400)으로부터 입력된 화상 데이터를 일시적으로 저장한다.
부호화 방법 판정 유닛(2402)은 주목 화소(X)의 주변의 4개의 부호화 화소들 "a", "b", "c", "d"의 화소값 Xa, Xb, Xc, Xd를 비교하여, 4개의 주변 화소들이 동일한 화소값을 갖는지의 여부를 판정한다. 4개의 주변 화소들이 동일한 화소값을 갖는 경우, 부호화 방법 판정 유닛(2402)은 런렝스 부호화 유닛(2404)을 선택하여, 부호화를 시작한다. 부호화 방법 판정 유닛(2402)이 4개의 주변 화소들이 동일 화소값을 갖지 않는다고 판정한 경우, 예측 부호화 유닛(2403)를 선택하여, 부호화를 수행한다.
예측 부호화 유닛(2403)은 주목 화소(X)의 R, G, B 성분들을 하나씩 부호화한다. 예측 부호화 유닛(2403)은 3개의 주변 화소 "a", "b", "c"로부터 예측식: p = a + b - c에 의해 예측 값 p를 생성한다. 제1 실시예와 유사하게, 런렝스 부호화 유닛(2404)은 주목 화소(X)의 주목 성분 값과 예측 값(p) 간의 차분값(e)을 허프만 부호화하여, 그 결과를 메모리(2405)에 출력한다.
주목 화소(X) 주위의 4개의 화소들이 동일 화소값을 갖는 경우, 런렝스 부호화 유닛(2404)은 직전 화소와 일치하는 주목 화소(X)의 런의 측정을 시작한다. 일단, 런의 측정이 시작되면, 런렝스 부호화 유닛(2404)은 주목 화소(X)가 직전 화소와 일치하는 한, 주목 화소 주변의 4개의 화소들의 상태와는 무관하게 런을 계속 측정한다. 주목 화소(X)가 직전 화소와 다르거나, 주목 화소가 라인 종단에 있는 경우(런의 종단이 판정되는 경우), 런렝스 부호화 유닛(2404)은 측정된 런을 부호 화하고, 그 런렝스 부호화 데이터를 메모리(2405)에 출력하여, 런렝스 부호화를 종료한다. 런렝스 부호화 유닛(2404)은 그 런렝스 부호화 데이터를 메모리(2405)에 출력할 경우, 부호화 방법 판정 유닛(2402)에 런렝스 부호화의 종단을 통지한다. 이에 응답하여, 주목 화소의 부호화는 예측 부호화 유닛(2403)에 의한 부호화로 절환한다.
주목 화소(X)의 값이 직전 화소의 화소값과 다른 경우 및 런렝스 부호화 유닛(2404)이 런을 종단시킨 경우를 고찰한다.
도 3으로부터도 알 수 있는 바와 같이, 이러한 상황에서는 X ≠ a이다. 따라서, 주목 화소(X)를 예측 부호화하는데 사용된 예측 값(p)을 p = a + b - c으로 계산하는 경우, 예측 오차가 "0"이 되기 어려우며, 부호화 효율이 저하할 가능성이 높다(직전의 화소 "a"만을 예측 값 p로 참조하는 모드에서 특히, 예측 오차는 "O"이 되지 않음). 런렝스 부호화가 예측 부호화로 절환한 직후에, 예측값(p)은, 통상의 예측 오차시에 참조된 3개의 주변 화소들 "a", "b", "c" 중 하나인 "a"를 참조하지 않고, 이전의 런렝스 부호화의 최종 화소의 화소값(Xf)을 "a"로 참조함으로써 계산된다. 즉, p = Xf + b + c이다. 예측 값(p)을 이용함으로써, 주목 화소(X)와의 차분값(e)을 획득하여, 예측 부호화한다. 이를 위해, 부호화 방법 판정 유닛(2402)은 런렝스 부호화 유닛(2404)에 의해 런렝스 부호화 데이터가 출력되었음을 통지받은 경우, 주목 화소(X)의 화소값을 저장 및 유지한다. 이 통지의 수신시, 부호화 방법 판정 유닛(2402)이 예측값을 계산하기 위한 화소값 'a", "b", "c" 대신에, 이전 통지에 응답하여 유지된 화소값(Xf)을 예측 부호화 유닛(2403)에 출 력한다.
상기 설명에서 저장/유지 화소(X)는 런렝스 부호화의 종단 직후의 화소이지만, 본 발명은 이에 제한되지 않는다. 예를 들어, 런렝스 부호화 동안의 화소 열의 선두의 직전의 화소와 같이, 보다 높은 부호화 효율이 기대되는 예측 부호화시에 참조된 또 다른 화소를 참조해도 된다. 이 경우에는, 또 다른 근방 화소값이 저장 및 유지된다. 또한, 상기 설명에서, 또 다른 화소가 주변 화소 중 하나인 "a" 대신에 일시적으로 참조되지만, 대체 화소들의 수는 이에 제한되는 것이 아니다. 예를 들어, 두 화소 "a" 및 "b" 대신에 2개의 다른 화소들이 일시적으로 참조될 수 있다. 대안으로, 2개의 다른 화소들의 평균은 주위 화소들 중 하나인 "a" 대신에 계산될 수도 있다. 주목 화소(X)가 런을 종단하는 경우, 즉, X ≠ Xa인 경우, 주목 화소(X)의 직전 화소의 화소값 Xa가 Xf로서 저장될 수도 있다.
상술된 바와 같이, 제4 실시예에서는, 3개의 주변 화소들 "a", "b", "c" 중 적어도 하나는 런렝스 부호화 직후에는 참조되지 않는다. 런렝스 부호화를 거친 부분 또는 런렝스 부호화 동안의 부분 근처의 또 다른 화소값을 이용하여 예측값 p가 계산된다. 예측 값 p와 주목 화소 간의 차분값 e를 획득하여 예측 부호화된다.
제4 실시예의 부호화 처리의 흐름은 도 27의 플로우차트를 참조하여 설명될 것이다.
단계 S2701에서, 부호화 데이터를 생성시, 헤더를 생성 및 출력한다. 단계 S2702에서, 주목 화소의 수직 위치를 나타내는 변수 y를 "0"로 초기화한다. 런을 카운트하는 카운터 변수 RL을 "0"으로 초기화하고, 런렝스 부호화로부터 예측 부호 화에 절환한 직후에 이용된 예측 값을 유지하는 변수 Xf를 "0"으로 초기화한다. 단계 S2703에서, 주목 화소의 수평 위치를 나타내는 변수 x를 "0"으로 초기화한다.
단계 S2704에서, 좌표(x, y)로 나타내는 주목 화소(X) 주위의 4개의 화소들의 화소값 Xa, Xb, Xc, Xd가 동일한 지의 여부가 판정된다. 화소값들 Xa, Xb, Xc, Xd이 다르다고 판정되면, 처리는 S2705로 진행하여, 각 성분을 예측 부호화한다. 단계 S2706에서, 그 부호화 결과가 출력된다. 상술된 바와 같이, 주변 화소가 부호화될 화상 외부에 있는 경우, 그 화소의 각 성분 값은 "0"으로 설정된다.
단계 S2707에서, 변수 x에 "1"을 증분한다. 단계 S2708에서, 변수 x의 값을 입력 화상의 수평 화소 수 W와 비교하여, 그 주목 화소가 한 라인의 종단을 초과하는지의 여부를 판정한다. x < W이라고 판정되면, 단계 S2704 이후의 처리를 반복하고; x ≥ W이라고 판정되면, 다음 라인을 부호화하기 위해, 단계 S2709에서, 변수 y에 "1"을 증분한다. 단계 S2710에서, 변수 y를 입력 화상의 수직 화소 수 H와 비교하여, 최종 라인의 부호화가 완료되었는지의 여부를 판정한다. y < H이라고 판정되면, 단계 S2703 이후의 처리는 반복되며; y ≥ H이라고 판정되면, 부호화 처리를 종료한다.
상기 처리동안, 단계 S2704에서, 동일한 화소값을 갖는 주목 화소(X) 주위의 4개의 부호화 화소들이 동일한 화소값을 갖는다고 판정된 경우, 상술된 예측 부호화 처리를 런렝스 부호화로 절환하기 위해, 처리는 단계 S2711로 진행한다.
단계 S2711에서, 주목 화소(X)와 직전 화소(Xa)가 동일한지의 여부를 판정한다. 주목 화소(X) 및 직전 화소(Xa)가 동일하다고 판정한 경우에는, 단계 S2712에 서 카운터 변수 RL에 "1"을 증분시킨다. 단계 S2713에서, 다음 화소를 주목 화소로 설정하기 위해서, 변수 x에도 "1"을 증분시킨다. 그 후, 단계 S2714에서 "x < W"인지의 여부가 판정된다. x < W이라고 판정되면, 단계 S2711 이후의 처리가 반복된다.
주목 화소(X)가 직전 화소(Xa)와 다른 경우에는, 런은 종단하고, 처리는 단계 S2711에서 단계 S2715에 진행하여, 카운터 변수 RL의 값을 부호화한다. 단계 S2716에서, 부호화 결과가 출력되며, 단계 S2717에서 카운터 RL을 "0"으로 초기화한다. 다음으로, X ≠ Xa라고 판정된 주목 화소(X)를 예측 부호화하기 위해, Xa 대신에 Xf를 설정하여, 예측 값 p를 산출한다. 따라서, 예측 값 p는 Xf + Xb - Xc로 주어진다. 단계 S2719에서, 다음의 런렝스 부호화가 예측 부호화로 절환된 직후의 예측 값을 유지하기 위해서, 주목 화소(X)의 값을 f에 대입한다. 이어서, 처리는 단계 S2705에 진행한다. 처리가 단계 S2705로 진행한 경우, 주목 화소(X) 에 대한 예측 값 p는 Xf + Xb - Xc을 이용함을 유의하라.
단계 S2714에서, x ≥ W이라고 판정된 경우, 이는 주목 화소(X)의 위치가 한 라인의 종단을 초과함을 의미한다. 따라서, 처리는 단계 S2720으로 진행하여, 카운터 변수 RL의 값을 부호화한다. 단계 S2721에서 부호화 결과가 출력되고, 단계 S2722에서 카운터 변수 RL을 "0"으로 리셋하고, 처리는 단계 S2709로 진행한다.
상술된 바와 같이, 제4 실시예에 따르면, 부호화 데이터는 예측 부호화 처리와 런렝스 부호화 처리 간을 적절히 절환함으로써 부호화 데이터를 성공적으로 생성할 수 있다. 런렝스 부호화 처리가 예측 부호화 처리로 절환한 직후에, 주목 화 소의 직전 위치의 화소값을 이용하는 것이 아니라, 이전 런렝스 부호화의 런 종단으로 역할하는 화소값을 이용한다. 이는 또한 부호화 효율의 저하를 억제할 수도 있다.
[기타 실시예]
상기 실시예들에서, 부호화될 화상 데이터는 8 비트 단위의 R, G, B 성분의 데이터이다. 그러나, 색 공간을 나타내는 데이터는, R, G, B에 제한되는 것이 아니라, Y, M, C, K(black), L*a*b, 또는 YCbCr이 될 수도 있다. 각 성분 값이 항상 8 비트일 필요는 없다. 특히, 일부 최근 디지털 카메라 등은 내부적으로 R, G, B를 12 비트로 처리하여, RAW 모드로 데이터를 무손실 부호화한다. 본 발명은 또한 그러한 장치에 적용될 수도 있다.
상기 실시예들에서, Nc 화소값들을 갖는 일치/불일치들이 주위 화소의 색 카운트(Nc)에 따라서 부호화되었다. 벡터 정보로서, Nc + 1의 심볼이 부호화된다. 예를 들어, 색 카운트(Nc)가 3일 경우에, 주목 화소가 제1 화소값(X1)과 일치하면 0이고; 주목 화소가 제2 화소값(X2)과 일치하면 1이고; 주목 화소가 제3 화소값(X3)과 일치하면 2이고, 주목 화소가 X1 내지 X3 중 어느 것과도 일치하지 않으면 3이 되도록, 도 15c의 부호표를 이용하여 4개의 값들의 심볼들을 부호화한다. 그러나, 모든 Nc 화소값들이 일치/불일치 판정에 대상이 될 필요는 없다. 0, 1, 3의 3개의 값을 취하는 심볼(근방 일치 정보와 Nc 간의 비교를 고려하여, "2"를 일부러 제외하였음)은, 심볼이 X = X1일 때 0이고, X = X2일 때 1이고, X ≠ X1 및 X ≠ X2일 때 3이 되도록 부호화될 수 있다.
제1, 제2, 제3 화소값(X1, X2, X3)을 획득하는 방법은 상술된 실시예들에 제한되지 않는다. 예를 들어, 제1, 제2, 제3 화소값들은 상술된 것들과는 다른 Xb, Xa, Xc, Xd의 순으로 획득될 수 있다. 순서는 Xa, Xb, Xc, Xd 사이의 일치에 따라서 변경될 수 있다. 예를 들어, 제1, 제2, 제3 화소값들은 Xa, Xb, Xc, Xd의 순으로 획득된다. Xa = Xb인 경우, Xd는 제2 화소값(X2)으로 설정될 수 있다.
벡터 정보의 부호화는 미리 확률 분포의 가정에 따라 설정된 부호 워드를 이용할 수 있다. 그러나, 상기 예들과는 다른 부호 워드를 이용할 수도 있고, 산술 부호를 이용한 방식 등의 다른 부호화 방식을 적용할 수도 있다.
주목 성분 값을 예측 방법으로서, 몇몇 예측 방법들을 준비하여, 적응적으로 절환할 수 있다. 대안으로, 비선형 예측이 주목 성분의 예측에 대해 부호화 성분 값들에서 생성된 예측 오차의 평균값을 피드백하는데 이용될 수 있다.
상기 실시예들은 성분값의 예측 오차으 엔트로피 부호화로서 허프만 부호화 및 Golomb 부호화를 이용한다. 다른 엔트로피 부호화가 또한 채택될 수 있다.
주목 화소(X)의 주위의 화소값들로서 Xa, Xb, Xc, Xd를 참조한다. 대안으로, 보다 큰 화소 수가 참조될 수 있고, 참조 화소들의 수가 예를 들어, Xa 및 Xb만으로 감소될 수도 있다.
상기 실시예들의 설명으로부터 쉽게 이해할 수 있는 바와 같이, 본 발명은 또한 컴퓨터에 의해 실행되는 컴퓨터 프로그램에 의해 구현된 수 있다. 통상적으로, 컴퓨터 프로그램은 CD-ROM과 같은 컴퓨터 판독 가능 저장 매체에 저장되며, 그 저장 매체에 억세스하는 드라이브와 같은 판독 장치를 이용하여, 시스템에 프로그램을 카피 또는 인스톨함으로써 실행될 수 있다. 컴퓨터 프로그램도 분명히 본 발명의 범위 내에 있다.