코딩 및 기타/이미지
사진의 형식 , grayscale , opencv - 1
정지홍
2025. 1. 7. 13:40
| 특징 | 장점 | 단점 | |
| JPEG / JPG | 손실 압축 방식으로 파일 크기를 줄임 | 용량이 작음 | 압축으로 인한 일부 이미지 데이터 손실 |
| 사진이나 복잡한 그래픽에 적합 | 호환성 우수 | 반복 저장시 품질 저하 | |
| 압축률 조정해서 품질과 용량의 균형 조정 가능 | |||
| PNG | 비손실 압축을 지원 | 품질 저하 없이 압축 가능 | jpeg보다 크기가 큼 |
| 알파채널(투명도)를 지원 | 투명 배경 사용 가능 | 대용량 작업시 속도가 느림 | |
| 로고,아이콘,일러스트에 적합 | |||
| GIF | 애니메이션 이미지 지원 | 간단한 애니메이션 제작 가능 | 색상 제한으로 고품질에는 적합안함 |
| 8비트 생각 팔레드 즉, 256색으로 제한 |
작은 크기의 파일 | ||
| BMP | 압축없이 이미지를 저장 | 고품질 이미지 가능 | 파일 크기 매우 큼 |
| 원시 데이터 형식으로 이미지 품질 손상 없음 | 색상 정보 풍부 | 현대에서는 잘 안씀 |
Grayscale이미지란?
- grayscale은 이미지에 대한 정보를 색상 정보가 아니라 명암 정보만 가지고 표현한다.
- 즉, 색조,채도 없이 밝기 값( 명암 )만으로 구성된 이미지이다.
- 그러므로 RGB와 다르게 단일 채널로만 표현을 하며, 각 픽셀은 하나의 밝기 값으로 나타냄
- 위의 이유로 인하여 데이터가 적고 압축 효율도 높다.
- 명암 대비 ( contrast )
- 이미지 내에서의 밝기 값의 차이를 나타낸다.
- 명암 대비가 클수록 이미지에서 밝은 부분과 어두운 부분이 더욱이 뚜렷하게 구분됨.
- GraySacle 이미지로 변환하기
- GrayScale = 0.2989×R + 0.5870×G + 0.1140×B 이다.
- 1. 다음은 opencv로 이미지를 읽어서 이미지를 출력한다.
- openCV는 색상을 BGR( Blue-Green-Red )순서로 읽는다.
- matplotlib은 색상은 RGB( Red-Green-Blue )순서로 읽는다.
- imread는 3가지 옵션이 존재
- 1. cv2.IMREAD_COLOR (기본값) : 컬러 이미지 읽음. BGR형식으로.
- 2. cv2.IMREAD_GRAYSCLE
- 3. cv2.IMREAD_UNCHANGED : 알파채널을 포함하여 이미지를 읽음

- 2. opencv를 가지고 이미지의 color space를 변경
- openCV의 COLOR_BGR2RGB를 이용하여 출력해보자
- 그러면 위와 다르게 나올것이다.( red와 blue가 각각 바뀌였으니 )
- openCV의 COLOR_BGR2RGB를 이용하여 출력해보자

- 3. 이번에는 COLOR_ RGB2BGR사용해봄
- 사실상 COLOR_ RGB2BGR 과 COLOR_BGR2RGB 는 같은 작업을 수행함.

- 4. 이번에는 그레이스케일로 바꿀것이다.
- matplotlib으로 출력시에는 cmap옵션을 줘야함
- cmap = color map을 의미하며, 이미지 출력시, 픽셀값을 어떤 색상으로 표현할지 매핑하는 방식이다.
- 그래서 color map을 gray를 주어서, 밝기값에 따라서 흑백 색상으로 변환하게 한다.
- cmap = color map을 의미하며, 이미지 출력시, 픽셀값을 어떤 색상으로 표현할지 매핑하는 방식이다.
- matplotlib으로 출력시에는 cmap옵션을 줘야함

