Python 이미지 합성 - Python imiji habseong

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).

Python 이미지 합성 - Python imiji habseong

이미지 합성

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

Python 이미지 합성 - Python imiji habseong

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값을 받을 필요가 없다.

배경만 grayscale 적용하기

Python 이미지 합성 - Python imiji habseong

배경만 blur 적용하기

Python 이미지 합성 - Python imiji habseong

내 사심 채우는 데 희생된 다음 예시들..

Python 이미지 합성 - Python imiji habseong

손짱 사진 업로드 ㅎㅡㅎ

Python 이미지 합성 - Python imiji habseong
Python 이미지 합성 - Python imiji habseong

정말 픽셀단위 분류 잘 된당 'ㅅ'

Python 이미지 합성 - Python imiji habseong

배경이 될 사진도 업로드!

Python 이미지 합성 - Python imiji habseong
Python 이미지 합성 - Python imiji habseong

근데 사실 사심채우기도 있지만 노트북에 저장되어 있는 사진으로 돌려쓰는 중...

Python 이미지 합성 - Python imiji habseong

흥짱은 사람이기 때문에 컬러 팔레트에서 15번 person

전경 테두리 가우시안 블러해서 좀 더 자연스럽게 데려옵니다..

Python 이미지 합성 - Python imiji habseong

전경 배경 분리쓰

Python 이미지 합성 - Python imiji habseong

전경 배경 그대로 더해주기!

Python 이미지 합성 - Python imiji habseong

헤헤 신난다

손짱 실제로 가까이서 보고싶어,...........

유명한 사람이 될게@@@@@

끝!