목표 이미지 처리 마스터! 화상 처리 100개 노크 했다 Part4:감색·풀링

페이스 올려 가고 싶다.
이번에는 어떤 처리를 모르는 Q6감색과 어떤 처리인지 잘 아는 Q7,8 풀링에 도전합니다.

Q6:감색 처리



탈색이란 무엇입니까?



읽고 글자처럼 색을 줄이는 과정이었습니다.
이번의 경우 4*4*4색으로 감색이므로 RGB의 각각 256색으로 표현되고 있는 곳을 4개로 분할해, 그 1개 1개의 구간을 1개의 색으로 표현해 버리면 된다고 하는 이유 입니다.
공부에 사용한 기사는 이쪽
h tp // 우우 b. 그럼 t. 아 c. jp / ~ s - / g / ch2 / s p22. HTML

구현해보기


import cv2
import numpy as np 

img = cv2.imread("imori.jpg")

out = np.zeros_like(img)

"""
val = {  32  (  0 <= val <  64)
         96  ( 64 <= val < 128)
        160  (128 <= val < 192)
        224  (192 <= val < 256)
"""

for i in range(128):
    for j in range(128):
        for k in range(3):
            pic = img[i,j,k]
            if pic <64 :
                ans = 32
            elif pic <128:
                ans = 96
            elif pic <192:
                ans = 160
            elif pic <256:
                ans = 224
            out[i,j,k,] = ans

#いつもの描画
cv2.imwrite("anspic_q6.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()



갔다!

그러나 대답을 보면 거기에는 무려 뭐 우아한 대답이. 처음에는 우아함이 너무 의미가 없었기 때문에 잘 살펴보십시오.

원색의 처리 부분은 다음과 같습니다.
def dicrease_color(img):
    out = img.copy()
    out = out // 64 * 64 + 32
    return out

출력을 64로 나눈 몫(자르기)(여기서 4분할로 되어 있다)에
64를 곱해 (여기서 0,64,128,192가 된다)
32를 더한다(32,96,160,224)

미안해!

정진하다

Q7:평균 풀링



이것은 내용을 알고 있었으므로 구현 만
import cv2
import numpy as np 

img = cv2.imread("imori.jpg")

F = 8
#8*8で平均プーリング
out = img.copy()

H,W,C = img.shape #128,128,3

h = int(H/8) #16
w = int(W/8) #16

for i in range(w):
    for j in range(h):
        for c in range(C):
            out[F*i:F*(i+1),F*j:F*(j+1),c] = np.mean(img[F*i:F*(i+1),F*j:F*(j+1),c]).astype(np.int)


# Save result
cv2.imwrite("anspic_q7.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()



Q8 MAX 풀링



이것도 알고 있다! ! ! 하지만 구현한 적이 없다! ! ! 그렇게 할 것입니다.
mean을 max로 바꾸면 좋을 뿐입니다.
import cv2
import numpy as np 

img = cv2.imread("imori.jpg")

F = 8
#8*8でMAXプーリング
out = img.copy()

H,W,C = img.shape #128,128,3

h = int(H/8) #16
w = int(W/8) #16

for i in range(w):
    for j in range(h):
        for c in range(C):
            out[F*i:F*(i+1),F*j:F*(j+1),c] = np.max(img[F*i:F*(i+1),F*j:F*(j+1),c]).astype(np.int)


# Save result
cv2.imwrite("anspic_q8.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()



했어!

끝에



마침내 알고있는 처리가되어 기쁩니다.
딥 러닝 했던 성과 마침내 나왔습니다.

좋은 웹페이지 즐겨찾기