마스크 연산과 ROI

매일 공부(ML)·2021년 11월 4일
0

OPEN CV

목록 보기
3/45

ROI

  1. 정의: Region of Interest(관심영역)

  2. 특징: 영상에서 특정 연산을 하고 싶은 부분 영역

마스크 연산

  1. 정의: ROI연산을 지원하는 일부 함수들은 마스크 영상을 인자로 함께 전달해야함

  2. 예시: cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate()

  3. 특징:

    • cv2.CV_8UC1 타입(그레이스케일 영상[numpy.uint8])
    • 0이 아닌 위치에서만 연산 가능
    • 이진 연산 사용(0 또는 255로 구성됨)
  1. 픽셀 값 복사 함수
cv2.copyTo(src, mask, dst=None) -> dst
  • scr: 입력 영상

  • mask: 마스크 영상으로 0이 아닌 픽셀에 대해서만 복사 연산 수행

  • dst: 출력 영상

    • dst가 scr의 크기 및 타입이 같다면, dst를 입력으로 지정 시 새로 생성하지 않고 연산 수행
    • 다르다면, 새로 생성하여 연산 수행 후 반환
  1. 예제
src = cv2.imread('airplane.bmp', cv2.IMREAD_COLOR) # 원본
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)  # Grayscale
dst = cv2.imread('field.bmp', cv2.IMREAD_COLOR) # 합성할 배경

cv2.copyTo(scr, mask, dst) # src, mask, dst는 모두 크기가 같아야 함
                           # src , dst는 같은 타입
                           # mask는 그레이스케일 타입의 이진영상
                           
                           # 결과: 합성해서 나오게 됨
  1. Boolean indexing
src = cv2.imread('airplane.bmp', cv2.IMREAD_COLOR)
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp', cv2.IMREAD_COLOR)


dst[mask > 0] = src[mask > 0]

cv2.imshow('src', src) 
cv2.imshow('dst', dst)  
cv2.imshow('mask', mask) 
cv2.waitKey()
profile
성장을 도울 아카이빙 블로그

0개의 댓글