9.1 JPEG표준
-디지털 영상은 공간 영역(spatial domain)을 통해서 정의된다.
-2차원 DCT는 두 정수 u,v에 의해 인덱스된 공간 주파수 영역(spatial frequency domain)에서 함수 F(u,v)인 주파수 반응을 가져오기 위해 JPEG에서 한 단계로 사용된다.
-JPEG는 손실 영상 압축(lossy image compression) 방식이다.
* JPEG에서 DCT변환 방식의 효율성은 다음 세가지 관찰 결과에 의존한다.
1. 쓸모있는 영상 내용은 영상 내에서 비교적 천천히 변한다.
2. 정신물리학적 실험에서 인간은 저주파수 성분보다 매우 높은 공간 주파수 성분의 손실을 덜 인지한다.
3. 시각적 예민함(Visual acuity)은 컬러에서보다 흑백에서 훨씬 더 크다.
-공간 중복성(spatial redundancy) : 영상에서 많은 정보들이 반복됨.
-관찰결과2에 의해 가장 낮은 주파수에 대한 DCT 계수는 가장 중요하다. 주파수가 점점 높아지면, DCT계수를 정확하게 표현하는데에 있어서 그다지 중요하지 않다.
-관찰결과3에 의해 JPEG에서는 색체 표본화(Chroma subsampling(4:2:0))이 사용된다.
*JPEG 부호화기의 주요 단계
1. RGB를 YIQ나 YUV로 변환하고 색을 부표본화(subsampling)한다.
2. 영상 블록별로 DCT를 수행한다.
3. 양자화를 한다.
4. 지그재그 순서로 정렬하고, 런-길이 부호화(run-length coding)을 수행한다.
5. 엔트로피 부호화를 수행한다.
- 영상 블록별 DCT
각 영상은 8X8 블록들로 나누어진다. 2차원 DCT는 각 영상 블록에 적용되고, 각 블록은 DCT계수를 출력으로 갖는다.
블록을 사용하는 것은 그것에 인접해 있는 배경으로부터 각 블록을 분리시키는 효과를 가진다. 그래서 사용자가 높은 압축률을 지정할 때 JPEG영상이 블록화되어 고르지 못한 것처럼 보이게 된다.
- 양자화
양자화 단계의 목표는 압축된 영상을 위해 필요한 전체 비트 수를 줄이는 것이다.
양자화된 DCT 계수는 각 DCT계수를 해당하는 양자화 행렬로 나눈 뒤, 반올림하여 나타낸다.
양자화 단계는 JPEG 압축에서 손실의 주 원천이다.
Q(u,v)의 값은 오른쪽 아래로 내려갈수록 더 큰 값을 가지는 경향이 있다. 이것은 더 높은 공간 주파수에서 더 많은 손실을 가지는 것을 목표로 한다.(관찰결과 1,2에 의한 실행)
- 런 길이 부호화(Run-length coding)
양자화가 이루어진 후에 많은 0이 등장한다. RLC는 양자화된 DCT값을 집합{0의 수, 0이 아닌 값}으로 변화시키기에 유용하다. 지그재그 주사(Zig-Zag scan)는 8X8행렬을 64벡터로 변환시킨다.
- DC계수에 대한 DPCM(Differential Pulse Code Modulation)
각 8X8 영상은 오직 하나의 DC계수를 가진다. DC계수는 해당 블록의 평균 명암도를 반영하기 때문에, 각 블록마다 다를 수 있다. AC계수에 대한 RLC는 각각의 개별적인 블록에서 수행되지만, DC계수에 대한 DPCM은 한 번에 전체 영상에 대해 실행한다.
- 엔트로피 부호화
1. DC 계수들의 허프만 부호화
DPCM부호화된 DC계수는 한 쌍의 심볼(SIZE, AMPLITUDE)로 표현되는데, 여기서 SIZE는 계수를 표현하는데 얼마나 많은 비트들이 필요한지를 나타내고, AMPLITUDE는 실제 비트들을 포함한다. DPCM값들은 8비트 이상을 요구할수도 있고, 음수값일 수도 있다. 음수값일 때는 1의 보수를 사용한다.
JPEG구현에서 SIZE는 허프만 부호화된다. 일반적으로 SIZE의 엔트로피가 낮기 때문에 허프만 부호화가 추가적인 압축을 가져온다. 반면에 AMPLITUDE는 값이 광범위하게 변할 수 있기 때문에 허프만 부호화의 이득이 거의 없다.
2. AC 계수들의 허프만 부호화
런-길이 부호화되고 한 쌍의 숫자들 (RUNLENGTH, VALUE)로 표현되었던 AC계수는 실제 JPEG구현에서 VALUE값이 SIZE와 AMPLITUDE에 의해서 표현된다. Symbol1 에 RUNLENGTH와 SIZE가 각각 4비트를 할당받게 된다. 그리고 허프만 부호화되는 것이다. Symbol2는 AMPLITUDE값이다.
9.1.2 주요 JPEG모드 4가지.
1. 순차 모드(Sequential Mode)
기본 JPEG모드이다. 각 회색level 영상과 컬러 영상 성분은 왼쪽 위에서 오른쪽, 위에서 아래로의 주사로 부호화된다.
2. 점진적 모드(Progressive Mode)
영상의 낮은 화질의 버전을 빨리 전달하고 뒤이어 높은 화질을 전달한다. 이러한 영상의 다중 주사는 통신 선로의 속도가 낮을 때 가장 유용하다. 점진적 모드는 두가지 방법 중에 하나로 구현될 수 있다.
- 스펙트럼 선택(Spectral Selection) : DCT계수의 스펙트럼(공간 주파수 스펙트럼) 특성을 이용한다. 더 높은 AC 성분들은 단지 세부적인 정보만을 제공한다. 주사(scan)이 진행되면서 점점 더 많은 AC성분들을 부호화하는 것이다.
- 연속적인 근사(Successive approximation) : 모든 DCT계수들이 동시에 부호화된다. 그러나 처음에는 그들의 가장 중요한 비트들(MSBs)을 가지고 부호화한다. 주사(scan)이 진행되면서 점점 덜 중요한 비트들을 부호화하는 것이다.
3. 계층적 모드(Hierarchical Mode)
여러 개의 다른 해상도 계층에서 영상을 부호화한다. 가장 낮은 해상도에서 부호화된 영상은 기본적으로 압축된 저역 통과 필터 처리된(low-pass-filtered) 영상이다. 연속적으로 더 높은 해상도에서의 영상은 추가적인 세부 사항들을 제공한다. 점진적모드와 비슷하게, 점진적으로 화질이 개선되는 다중 전송 형식으로 전달 될 수 있다.
4. 무손실 모드(Lossless Mode)
JPEG의 아주 특별한 경우이다. 그러나 7장에서와 같이 변환 부호화를 사용하지 않고 단순히 차분 부호화 방식을 사용한다. 손실 모드와 비교하여 압축률이 아주 낮기 때문에 잘 사용되지 않는다.
9.1.3 JPEG 비트스트림
JPEG 영상을 위한 비트스트림 구조에서, 프레임은 영상이고, 주사(scan)은 화소를 거쳐 읽어 지나가는 것이고, 세그먼트(segment)는 블록의 그룹이고, 블록은 8X8 화소로 구성된다.