오늘한 일
- 프로젝트를 진행하였다
- 알고리즘 문제를 풀었다
- 블로그 TIL을 작성하였다
- 1일 1커밋을 하였다
느낌 점
JPEG 압축 방식과 같은 내용을 배우면서 유튜브 영상에 달린 댓글을 보다가 해당 내용들을 컴공에서 배우는 내용이라는 것을 알게 되었는데 이러한 CS 지식들을 지금은 확 와닿지는 않아도 나중에 좀 더 실력 있는 개발자가 되기 위해서는 필요해보이기에 이러한 지식들을 컴공이 아니라도 얻을 수 있는 방법에 대해 알아보고 이번 겨울방학 때쯤 공부해봐야겠다
배운 점
JPEG 압축 방식
JPEG (Joint Photographic Experts Group)는 디지털 이미지를 압축하는 방식 중 하나로 JPEG는 이미지를 작은 조각으로 나누어 각각을 독립적으로 압축한 다음 모두 합쳐서 최종 이미지를 만드는 방식을 사용한다 이 과정에서는 이미지의 일부 정보가 손실되기 때문에 JPEG는 손실 압축 방식이다
JPEG에서 압축 과정은 크게 두 단계로 나뉘는데 첫째 이미지를 DCT (Discrete Cosine Transform)를 이용하여 주파수 영역으로 변환한다 여기서 DCT는 이미지를 작은 블록으로 나눈 다음 각 블록에서 주파수 정보를 추출하는 방식으로 동작한다 이러한 DCT를 이용하면 이미지의 주파수 정보를 효과적으로 추출할 수 있다
둘째 DCT를 통해 얻은 주파수 정보를 이용하여 이미지를 압축한다 여기서 또 JPEG에서는 크게 두 가지 방식의 압축을 사용하는데 첫째 양자화 (Quantization)라고 불리는 과정을 통해 주파수 정보를 줄인다 이 과정에서는 주파수 정보를 미리 정의된 양자화 테이블을 이용하여 가장 중요한 정보를 보존하면서 나머지 중요하지 않은 정보를 제거한다 둘째 허프만 부호화 (Huffman Encoding)라는 방식을 사용하여 이미지를 압축한다 이 방식은 더 많은 정보를 포함하는 코드에는 더 짧은 비트를 할당하고 적은 정보를 포함하는 코드에는 더 긴 비트를 할당하는 방식으로 동작한다 이 과정을 거치면 이미지 파일의 크기를 줄일 수 있다
이렇게 DCT, 양자화, 허프만 부호화를 통해 압축된 이미지는 다시 역압축을 거쳐 원본 이미지로 복원할 수 있지만 이미지 파일의 크기를 줄이기 위해 정보가 손실되기 때문에 역압축을 통해 얻은 이미지는 압축 이전의 원본 이미지와 완전히 동일하지는 않다
JPEG 압축 방식에 대해 내용을 코딩 애플 JPEG은 왜 디지털 풍화가 생길까를 통해 알게 되어서 해당 내용을 정리해보았다
내일 계획
내일은 코딩 보카 2.0 메인화면을 마저 디자인 해야겠다