Python으로 이미지 처리 100 개 노크 # 8 Max 풀링

소개



아무래도, 라무입니다.
이번은 이미지를 그리드 분할하는 기법인 풀링 처리 중에서도, 영역중의 최대치를 대표치로 하는 Max 풀링에 대해서 실장합니다.

8번째: Max 풀링



이전에 설명한 풀링은 이미지를 고정 길이의 영역으로 그리드 분할하고, 그 영역 내의 값을 모두 있는 값으로 하는 처리입니다. 이 처리를 실시하는 것으로 화상은 모자이크상이 됩니다.
Max 풀링은 영역의 픽셀 값의 최대 값으로 영역을 채 웁니다.
평균 풀링과 맥스 풀링의 차이는 평균값을 사용할 것인지 최대값을 사용하는지에 관한 것입니다.

소스 코드



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


def maxPooling(img,k):
  dst = img.copy()

  w,h,c = img.shape
  # 中心画素から両端画素までの長さ
  size = k // 2

  # プーリング処理
  for x in range(size, w, k):
    for y in range(size, h, k):
      dst[x-size:x+size,y-size:y+size,0] = np.max(img[x-size:x+size,y-size:y+size,0])
      dst[x-size:x+size,y-size:y+size,1] = np.max(img[x-size:x+size,y-size:y+size,1])
      dst[x-size:x+size,y-size:y+size,2] = np.max(img[x-size:x+size,y-size:y+size,2])

  return dst


# 画像読込
img = cv2.imread('image.jpg')

# Maxプーリング
# 第2引数は領域長
img = maxPooling(img,40)

# 画像保存
cv2.imwrite('result.jpg', img)
# 画像表示
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()



이미지 왼쪽은 입력 이미지, 이미지 중앙은 이전 평균 풀링, 이미지 오른쪽은 이번 출력 이미지입니다.
잘 모자이크 모양의 이미지가되어 있음을 알 수 있네요. 또한 휘도가 높은 최대값을 사용하고 있을 뿐이며 이미지 전체가 평균 풀링보다 밝아지고 있습니다.

결론



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

좋은 웹페이지 즐겨찾기