곤약노트

이미지 변환 (Image Transformation) ④Gray Level Resolution (Bit Depth) 완전 이해하기 본문

Data Science/High-Dimensional Data Analytics

이미지 변환 (Image Transformation) ④Gray Level Resolution (Bit Depth) 완전 이해하기

곤약처럼 부드럽게, 쫀쫀하게 2025. 7. 5. 09:00

디지털 이미지에서 Gray level resolution이란 회색조의 단계 수, 즉 밝기를 얼마나 세밀하게 표현할 수 있는가를 의미합니다. 이 정밀도는 1픽셀당 몇 비트를 사용하는가(bits per pixel, bpp)에 따라 결정됩니다.

\( L = 2^{\text{bpp}} \)

 

  • bpp: 한 픽셀을 표현하는 데 쓰이는 비트 수
  • L: 표현 가능한 밝기 단계 수 (gray level)
bbp 표현 가능한 단계 수
1 2단계 (0, 1) = 흑백만
8 256단계 (0~255) = 일반 회색조 이미지
4 16단계 등

 

*bit depth가 높을수록 더 부드러운 이미지, 낮을수록 정보가 손실된 이미지

 

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 1. Grayscale 이미지 불러오기
image = cv2.imread('watermelon.jpg', cv2.IMREAD_GRAYSCALE)

# 2. 서로 다른 bit depth로 양자화 (비트 수 감소)
def quantize(image, bpp):
    levels = 2 ** bpp
    step = 256 // levels
    quantized = (image // step) * step
    return quantized

bpp_values = [1, 2, 4, 8]
quantized_images = [quantize(image, bpp) for bpp in bpp_values]

# 3. 시각화
plt.figure(figsize=(12, 6))
for i, (img, bpp) in enumerate(zip(quantized_images, bpp_values)):
    plt.subplot(1, len(bpp_values), i+1)
    plt.imshow(img, cmap='gray', vmin=0, vmax=255)
    plt.title(f'{bpp}-bit ({2**bpp} levels)')
    plt.axis('off')

plt.suptitle('Gray Level Resolution by Bit Depth')
plt.tight_layout()
plt.show()