오늘은 맑음

Baseline JPEG for hardware 본문

Video Processing

Baseline JPEG for hardware

자전거 타는 구구 2021. 12. 30. 23:32
반응형

Baseline JPEG

 JPEG은 정지된 이미지를 압축하기 위해서 만들어진 손실 압축 표준으로 Baseline JPEG은 가장 초기에 나온 JPEG 표준입니다. 

 무손실 압축은 JPEG-LS(lossless)에서 추가되었습니다. 단어를 편하게 하기 위해서 JPEG이라고 부르고 손실 압축 JPEG에 대해 알아보겠습니다.

 오늘 알아볼 손실 압축 JPEG은 DCT(Discrete Cosinn Transform)를 기반으로 coding을 합니다. 

Encoder


그림 1. Encoding 과정

 인코더의 block diagram입니다.

  1. Source image를 8x8 블럭으로 쪼갭니다.(JPEG이 만들어졌을 당시에는 하드웨어/소프트웨어 관점으로 보았을 때 8x8로 쪼개는 것이 최선이라고 판단되었습니다. 더욱 커지면 하드웨어로 구현하는데 cost가 커지지만 압축 성능이 비례해서 증가하지 않기 때문에 8x8로 쪼갭니다. 현대 JPEG-XL을 보게 되면 다양한 사이즈로 source image를 쪼개는 것을 볼 수 있습니다.)
  2. 쪼갠 block에 대해서 DCT를 수행해서 spatial domain에서 frequency domain으로 변경시킵니다. 이렇게 하면 좌측 상단에 DC(고주파)값이 모이게 됩니다. (그림 2)
  3. 이렇게 frequency domain으로 변경된 블럭에 quantization을 수행합니다. Quantization을 통해 AC값들의 크기를 줄입니다. 이렇게 하는 이유는 사람의 눈은 DC(고주파)성분에는 민감하나 AC(저주파)성분에는 둔감하기 때문에 AC값들을 줄이더라도 실제로 큰 차이를 느끼지 못하기 때문입니다. 이 때 quantization table(그림 3)을 사용하는데, source image의 모든 블럭들을 동일한 quantization table을 이용해서 연산을 수행해줍니다.
  4. 그리고 entropy coder를 이용해서 entropy coding을 사용합니다. 일반적으로 VLC(variable length coding)을 사용하거나 Huffman coding을 사용합니다. 위에서는 huffman coding을 기반으로 했기 때문에 coding시 필요한 coding table이 있습니다. 역시 quantization table과 마찬가지로 모든 블럭을 같은 coding table로 수행합니다.

그림 2. lena(좌)와 DCT 변환 후의 frequency domain(우)
그림 3. Quantization table

 Encoding 과정에서의 DCT와 Quantization으로 인해 데이터의 손실이 발생하게 됩니다. 따라서 Lossy Encoding이라고 합니다. Lossy기 때문에 Decoding한 데이터는 Source Image와 정확하게 동일하지는 않지만, Decoding했을 때 사람 눈에는 보이지 않을 정도의 차이가 발생하게 됩니다.

Decoder


그림 4. Decoding 과정

 Decoder는 Encoder의 역순으로 진행됩니다. 압축된 데이터를 다시 Entropy coder, Quantization과 IDCT(Inverse  Discrete Cosine Transform)를 통해 decoding이 진행됩니다. 이 때 Entropy Coder, Quantization, IDCT 블록의 경우  Encoder와 같은 block이 사용될 수 있습니다. 다만, Encoder에서 사용되는 table(Coding table, Quantization table)을 Decoder에서 사용되는 table로 교체해주어야 합니다.

 

 

https://wh00300.tistory.com/7

 

DCT

학부생 때 공부했던 자료가 비공개로 있었네요 마침 다시 공부해야 해서 비공개 글을 뒤져보다가 오늘 찾았습니다. 역시 배운건 쓸모가 다 있네요 DCT 이산 푸리에 변환처럼 공간 혹은 시간 차원

wh00300.tistory.com

 

반응형

'Video Processing' 카테고리의 다른 글

Dithering, Floyd-Steinberg  (0) 2021.05.19
Video raster scan(raster scan order)  (0) 2021.04.17
YUV/YCbCr file format의 종류  (0) 2021.04.17
DCT  (1) 2017.11.18
Comments