AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • 백준
  • 파이썬
  • level1
  • 이코테
  • LEVEL2
  • 알고리즘
  • Python
  • OpenCV
  • 프로그래머스
  • 연습문제

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

[OpenCV with Python] 영상 기하학적 변환 : 전단 변환 - cv2.warpAffine
OpenCV

[OpenCV with Python] 영상 기하학적 변환 : 전단 변환 - cv2.warpAffine

2022. 2. 2. 10:26

영상의 전단 변환 - Shear transformation

 

영상의 전단 변환은 층 밀림 변환이라고도 한다.

 

이동을 하는데 모든 픽셀들이 동일하게 이동하는 것이 아니라 어떤 픽셀은 조금 이동하고 어떤 픽셀은 많이 이동하여 한쪽을 찌그러뜨리는 효과를 낸다.

 

 

 전단 변환도 이동 변환과 마찬가지로 어파인 행렬을 만들어야 한다.

 이동 변환에서는 단위 행렬을 어파인 행렬로 생성했지만, 전단 변환은 m 상수도 필요하다.

 

 전단 변환을 한 만큼 영상이 밀려나가게 되어 영상이 짤리게 된다.

 이를 해결하기 위해 밀린 만큼 출력 영상의 크기를 키워주면 된다.

 

 

✔︎  cv2.warpAffine 함수

dst = cv2.warpAffine(src, M, dsize, dst=None, flags=None,
                     borderMode=None, borderValue=None)
  • src: 입력 영상
  • M: 2x3 어파인 변환 행렬. 실수형.
  • dsize: 결과 영상 크기. (w, h) 튜플. (0, 0)이면 src와 같은 크기로 설정.
  • dst: 출력 영상
  • flags: 보간법. 기본값은 cv2.INTER_LINEAR.
  • borderMode: 가장자리 픽셀 확장 방식. 기본값은 cv2.BORDER_CONSTANT. 
  • borderValue: cv2.BORDER_CONSTANT일 때 사용할 상수 값. 기본값은 0(검정색).

 

 cv2.INTER_LINEAR은 양선형 보간법을 의미

 borderValue는 이동 변환을 했을 때 생기는 빈공간을 어떤 색깔로 채울 것인지를 의미한다. 기본값은 0(검정색)

 

 

💬  실습

import sys
import numpy as np
import cv2


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

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

aff = np.array([[1, 0.5, 0],
                [0, 1, 0]], dtype=np.float32)

h, w = src.shape[:2]
dst = cv2.warpAffine(src, aff, (w + int(h * 0.5), h))

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

 

⬇︎

'OpenCV' 카테고리의 다른 글

[OpenCV with Python] 영상 기하학적 변환 : 영상의 대칭 변환 - cv2.flip  (0) 2022.02.02
[OpenCV with Python] 영상 기하학적 변환 : 영상의 확대와 축소 - 크기 변환 cv2.resize  (0) 2022.02.02
[OpenCV with Python] 영상 기하학적 변환 : 이동 변환 - cv2.warpAffine  (0) 2022.02.01
[OpenCV with Python] Filtering : Noise 제거 - 양방향 필터 Bilateral Filter  (0) 2022.02.01
[OpenCV with Python] Filtering : Noise 제거 - Median Filter  (0) 2022.02.01
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바