본문 바로가기

카테고리 없음

영상의 리매핑

🙋‍♂️ 오늘은 영상의 리매핑에 대해서 공부한 내용을 정리합니다!

 

 리매핑(Remapping) 이란?

영상의 특정 위치 픽셀을 다른 위치에 재배치하는 일반적인 프로세스로써

이전 시간에 공부했었던 Affine Transform, Perspetive Transform 과같은 변환들도 리매핑을 통해 구현할 수 있습니다.

 

 예제 코드

 

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)
# X로 200px Y로 100px 이동 변환을 remap으로 구현
dst = cv2.remap(src, map1 - 200, map2 - 100, cv2.INTER_CUBIC)
 
# sin 함수를 이용한 remap 구현, borderMode=cv2.BORDER_DEFAULT를 사용함으로써 검은색 화면 부분을 채움
map2 = map2 + 10 * np.sin(map1 / 32)
dst2 = cv2.remap(src, map1, map2, cv2.INTER_CUBIC, borderMode=cv2.BORDER_DEFAULT)
 
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.imshow('dst2', dst2)
 
cv2.waitKey()
cv2.destroyAllWindows()
cs

 

🖼️ 결과 이미지

왼쪽부터 원본이미지, 이동변환, sin 변환을 remap으로 구현한 영상

 

본 학습 내용은 "OpenCV를 활용한 컴퓨터비전과 딥러닝"을 참고하였음을 알려드립니다.