Skip to main content

Look-Up Table

Look-Up Table을 이용한 색 변환

  • 픽셀마다 색상 변환을 계산하려면 그림이 크거나 많을 때 많은 계산이 필요함
  • 미리 픽셀 값별로 변환할 값을 Look-Up Table로 만들어두면 계산을 절약할 수 있음
    src = cv.imread('balloon.webp') # 예제 파일
    ones = np.ones(32, dtype=np.uint8) # 1을 32개 만듦
    lut = np.concatenate((
    ones * 0, ones * 32, ones * 64, ones * 96,
    # 0-31까지 32개는 0, 32-63까지 32개는 32, 64-95까지 32개는 64, …
    ones * 128, ones * 160, ones * 192, ones * 224),
    )
    lut.shape # 0-255까지 총 256개의 픽셀값을 어떻게 계산할지 Look-Up Table로 만듦

Look-up Table을 이용한 색 변환

dst = cv.LUT(src, lut) 
show(dst) # 밝기가 8단계(0, 32, 64, … 224)

감마 보정

  • 일괄적으로 밝기를 높이면 밝은 영역이 모두 흰색이 되어 디테일이 뭉개 짐(밝기를 낮출 때도 같음)
  • 감마 함수를 이용하여 밝기를 비선형으로 보정할 수 있음
    • 감마(γ) < 1: 어두운 곳이 더 밝아 짐
    • 감마(γ) > 1: 밝은 곳이 더 어두워 짐
    lut = np.zeros(256, dtype=np.uint8)
    gamma = 0.5 # 어두운 곳을 밝게
    # 보정 함수를 미리 계산하여 Look-up Table을 채움
    for i in range(256):
    lut[i] = np.power(i/255.0, gamma) * 255.
    dst = cv.LUT(src, lut) # LUT를 적용하면 픽셀마다 계산할 필요 없음
    show(dst)

퀴즈