반응형

Mask 이미지

이미지 전처리를 수행하거나, 딥러닝을 위한 Segmentation을 수행할때 Mask라는 것을 사용할 때가 있다. Mask는 원본 이미지에서 사용자가 관심이 있는 영역(ROI)는 255 픽셀값으로 채우고, 그 이외의 영역은 0 픽셀값으로 채우게 된다. 이렇게 하여 획득한 흑백 이미지를 Binary Mask 이미지라고 한다.

 

사실 엄밀히 따지면 255 픽셀값을 ROI로 보는것이 아니라 0이 아닌 픽셀값을 ROI로 보게된다. 따라서 Mask를 RGB 색상을 가진 RGB Mask도 생성할 수 있다. 아래 예시에서 Binary Mask는 기린이 ROI가 된다(Single-Class). 반면 RGB Mask에서는 기린 뿐만아니라 하늘, 땅, 나무가 추가로 ROI가 된다(Multi-Class).

 

 

이미지 합성

OpenCV에서는 원본이미지, Mask이미지 두장의 이미지를 활용하여 합성을 할 수 있다. 아래 이미지에서 비행기에 해당하는 부분을 오른쪽 하늘에 합성하는 예제를 보도록 한다.

 

copyTo

src = cv2.imread('airplane.bmp')
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp')

cv2.copyTo(src, mask, dst)
  • src: 원본 이미지라고 생각하면 된다.
  • mask: 원본 이미지에서 ROI에 해당하는 부분의 Mask 이미지를 넣어준다.
  • dst: src에서 ROI에 해당하는 부분이 Segmentation이 되는데, 그것을 붙여넣을 이미지를 넣어주면 된다.
  • src, mask, dst는 모두 가로, 세로 길이가 같아야 한다.
  • Inplace로 자료를 처리하기 때문에 return값을 받을 필요가 없다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기