Python에 의한 화상 처리 100개 노크 #6 감색 처리

소개



아무래도, 라무입니다.
이번에는 이미지의 색상 수를 줄이는 감색 처리를 구현합니다.
덧붙여서, 전회로부터 한 개 날고 있는 것은 아무래도 5번째의 HSV 변환을 실장할 수 없었기 때문입니다.

6번째:감색 처리



탈색 처리는 이름 그대로 색상 수를 줄이는 처리입니다.
통상의 이미지에서는 BGR로 각각 [0:255]의 256색이 존재해, 1개의 픽셀치로 $256^3 = 16,777,216$색의 조합이 있습니다.
이번 처리에서는 BGR 각각에 [32,96,160,224]의 4색, 1개의 화소치로 $4^3 = 64$색으로 감색합니다.

이번에, 감색은 이하의 식에 따라 실시합니다.
pix = {  32 (  0 <= pix <  64)
         96 ( 64 <= pix < 128)
        160 (128 <= pix < 192)
        224 (192 <= pix < 256)

소스 코드



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

def decreaseColor(img):
  dst = img.copy()

  idx = np.where((0<=img) & (64>img))
  dst[idx] = 32
  idx = np.where((64<=img) & (128>img))
  dst[idx] = 96
  idx = np.where((128<=img) & (192>img))
  dst[idx] = 160
  idx = np.where((192<=img) & (256>img))
  dst[idx] = 224

  return dst

# 画像読込
img = cv2.imread('../assets/imori.jpg')

# 減色処理
img = decreaseColor(img)

# 画像表示
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()



이미지 왼쪽은 입력 이미지이고 이미지 오른쪽은 출력 이미지입니다.
잘 색이 줄어드는 것을 알 수 있군요. 비슷한 색의 부분을 베타 칠한 것 같은 출력 결과가 되었습니다.

결론



만약, 질문이 있는 분이 계시면 부담없이 부디.
imori_imori씨의 Github 에 공식의 해답이 실려 있으므로 꼭 그쪽도 확인해 보세요.
그런 다음 파이썬은 초보자이므로 잘못된 곳이 있더라도 부드럽게 지적하십시오.

좋은 웹페이지 즐겨찾기