Group Study (2020-2021)/Machine Learning

[Machine Learning] 6주차 스터디 - 이미지 처리 기본

문학개발자 2020. 11. 20. 20:24

1. 이미지 분석 기본 용어 정리

(1) 화소(Pixel)

  • Pixel
    픽셀이란, 영상처리의 최소 기본 단위를 말한다. 0~255 사이의 값으로 표현하는데 0은 검정색, 255는 흰색을 의미한다.
  • Resolution
    몇 개의 픽셀로 이루어졌는지를 폭넓게 나타내는 말이다. 가로 픽셀 수 * 세로 픽셀 수 로 나타낸다.

(2) 파일 포맷(File format)

  • Raster(Bitmap)
    픽셀이 모여 하나의 이미지를 구성하는 방식 중의 하나이다.
    ex) GIF,BMP,JPEG,PNG... 등
  • Vector Graphics
    점, 선, 도형 등의 객체를 이용해 이미지를 구성하는 방식이다.
    ex) PS,EPS,SVG... 등

(3) 컬러 공간(Color Space)

  • 흑백 이미지(1-channel): 컬러 모델이 gray-scale일 때, 하나의 값이 한 픽셀을 나타낸다.
  • 컬러 이미지(3-channel): 컬러 모델이 RGB일 때, 하나의(Red, Green, Blue) 값이 한 픽셀을 나타낸다.

2. 이미지 가공 with openCV

  • 이미지 파일 읽어오기
im=cv2.cvtColor(COLOR_BGR2RGB)
plt.imshow(im)
plt.axis('off')
plt.show()
  • 이미지 사이즈 변경(resize), 자르기(crop)
im_resize = cv2.resize(im,dsize=(30,20),interpolation=cv2.INTER_AREA)
im_crop = im[70:275, 75:285]

plt.subplot(2, 1, 1)
plt.imshow(im_resize)
plt.axis('off')
plt.subplot(2, 1, 2)
plt.imshow(im_crop)
plt.axis('off')
plt.tight_layout()
plt.show()
  • 이미지 반전(flip), 회전(rotate)
im_flip = cv2.flip(im, 1)
height, width, channel = im.shape
matrix = cv2.getRotationMatrix2D((width/2, height/2), 90, 1)
im_rotate = cv2.warpAffine(im, matrix, (width, height))

plt.subplot(2, 1, 1)
plt.imshow(im_flip)
plt.axis('off')
plt.subplot(2, 1, 2)
plt.imshow(im_rotate)
plt.axis('off')
plt.tight_layout()
plt.show()
  • 이미지에 그리기
im_rect = cv2.rectangle(im,(70,75),(275,285),(255,0,0),3)
im_drawing = cv2.putText(im_rect,'Apple',(70,65),cv2.FONT_HERSHEY_SIMPLEX,1,(255,255,255),2,cv2.LINE_AA)

plt.imshow(im_drawing)
plt.axis('off')
plt.show()
  • 이미지 저장
### Start Edit ###
save_image_path = './Image/' + 'name' +'.jpg'
im_result = cv2.cvtColor(COLOR_BGR2RGB)
### End Edit #####

cv2.imwrite(save_image_path, im_result)