[DL] CNN - 1

이미지 처리 및 Convolution

CNN 코드에 들어가기 앞서 이미지 처리하는 한가지 방법에 대해서 알아본다.

numpy를 이용한 이미지 데이터 및 필터 만들기

image는 우리가 가로, 세로, color 수로 3차원이지만 이미지 개수 또한 제일 앞 차원에 추가해서 4차원 데이터로 만들어 사용한다. 즉, (이미지 개수, width, height, color 수) 로 표현된다.

또한 필터의 경우도 4차원이지만 image와 달리 (width, height, 필터의 channel, 필터의 개수)로 정의 된다.

EXAMPLE

이미지 처리하기

이미지 다루는 간단한 방법들에 대해서 알아본다.

필요 Library

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image # PIL : Python Imaging Libray, 이미지를 불러오기 위해 사용

이미지 불러오기 및 픽셀

image = Image.open('./image/valencia.jpg')

plt.imshow(image)
plt.show()

image-20201024032335976

print(image.size)        # (1024, 679)  : (가로, 세로)
pixel = np.array(image)
print(pixel.shape)       # (679, 1024, 3)  : (행(세로), 열(가로), 장수(color수))

이미지 저장하기

image.save('./image/my_picture.jpg')

이미지 잘라내기

crop_image = image.crop((400, 150, 800, 400))
plt.imshow(crop_img)
plt.show()

image-20201024040639845

이미지 크기 바꾸기

resized_image = image.resize((int(image.size[0]/8), (int(image.size[1]/8))))
plt.imshow(resized_image)
plt.show()

image-20201024191411276

이미지 회전하기

rotated_image = image.rotate(-90)
plt.imshow(rotated_image)
plt.show()

image-20201024191805639

이미지 흑백으로 만들기

grey_pixel = pixel[:]
print(grey_pixel.shape)
for i in range(grey_pixel.shape[0]):
    for j in range(grey_pixel.shape[1]):
        grey_pixel[i,j,:] = grey_pixel[i,j,:].mean()

plt.imshow(grey_pixel)
plt.show() 

image-20201024193811480

plt.imshow(grey_pixel[:,:,0:1], cmap='gray')  # grey_pixel[:,:,0] 으로 가져오면 shape이 2D가 된다.
plt.show()

image-20201024194039225