영상의 확대와 축소

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

OPEN CV

목록 보기
24/45

영상의 확대와 축소

  • 크기 변환(Scale transformation)

    • 영상의 크기를 원본보다 크게 혹은 작게 만든다
    • x와 y축 방향으로 스케일 비율 지정

  • 영상의 크기 변환

cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) -> dst
  • src: 입력 영상

  • dsize: 결과 영상 크기로 (w,h)튜플이다. (0,0)이면 fx와 fy값을 이용하여 결정

  • dst: 출력 영상

  • fx, fy: x와 y방향의 스케일 비율(dsize =0일 때 유효)

  • interpolation: 보간법 지정. 기본값은 cv2.INTER_LINEAR

    • cv2.INTER_NEAREST : 최근방 이웃 보간법
    • cv2.INTER_LINEAR : 양선형 보간법(2 * 2 이웃 픽셀)
    • cv2.INTER_CUBIC : 3차회선 보간법( 4 * 4 이웃 픽셀)
    • cv2.INTER_LANCZOS4 : Lanczos 보간법 ( 8 * 8 이웃 픽셀)
    • cv2.INTER_AREA :영상 축소 시 효과적
  • 예제
src = cv2.imread('rose.bmp') # 480x320

dst1 = cv2.resize(src, (0, 0), fx=4, fy=4, interpolation=cv2.INTER_NEAREST)
dst2 = cv2.resize(src, (1920, 1280)) # cv2.INTER_LINEAR
dst3 = cv2.resize(src, (1920, 1280), interpolation=cv2.INTER_CUBIC)
dst4 = cv2.resize(src, (1920, 1280), interpolation=cv2.INTER_LANCZOS4)

cv2.imshow('src', src)
cv2.imshow('dst1', dst1[500:900, 400:800])
cv2.imshow('dst2', dst2[500:900, 400:800])
cv2.imshow('dst3', dst3[500:900, 400:800])
cv2.imshow('dst4', dst4[500:900, 400:800])
cv2.waitKey()

cv2.destroyAllWindows()

  • 영상의 축소 시 고려 사항
  • 디테일 부분이 사라지는 경우
  • 입력 영상을 부드럽게 필터링한 후 축소, 다단계 축소
  • cv2.resize()함수에서 cv2.INTER_AREA 플래그 사용

영상의 대칭

  • 영상의 대칭 변환(flip, reflection)

  • 대칭 변환
cv2.flip(src, flipCode, dst=None) -> dst
  • src: 입력 영상

  • flipCode: 대칭 방향 지정

    • 양수(+1) : 좌우대칭
    • 0 : 상하대칭
    • 음수(-1) : 좌우 &상하 대칭
  • dst: 출력영상

profile
성장을 도울 아카이빙 블로그

0개의 댓글