Computer Vision/opencv(python)

[32] 6) 리매핑

jwjwvison 2021. 3. 21. 12:54
  • 리매핑 (remapping)
    • 영상의 특정 위치 픽셀을 다른 위치에 재배치하는 일반적은 프로세스

 

  • 어파인 변환, 투시 변환을 포함한 다양한 변환을 리매핑으로 표현 가능

 

  • 리매핑 함수
cv2.remap(src,map1,map2,interpolation,dst=None,borderMode=None,borderValue=None) -> dst

 • src : 입력 영상
 • map1: 결과 영상의 (x, y) 좌표가 참조할 입력 영상의 x 좌표
  입력 영상과 크기는 같고 타입은 np.float32 인 numpy.ndarray
 • map2: 결과 영상의 (x, y) 좌표가 참조할 입력 영상의 y 좌표
 • interpolation: 보간법
 • dst 출력 영상
 • borderMode : 가장자리 픽셀 확장 방식 . 기본값은 cv2.BORDER_CONSTANT.
 • borderValue cv2.BORDER_CONSTANT 일 때 사용할 상수 값 . 기본값은 0.

 

  • 삼각함수를 이용한 리매핑 예제
import sys
import numpy as np
import cv2


src = cv2.imread('tekapo.bmp')

if src is None:
    print('Image load failed!')
    sys.exit()

h, w = src.shape[:2]

map2, map1 = np.indices((h, w), dtype=np.float32)
map2 = map2 + 10 * np.sin(map1 / 32)

dst = cv2.remap(src, map1, map2, cv2.INTER_CUBIC, borderMode=cv2.BORDER_DEFAULT)

cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()