기하학적 변환 1 (어파인 변환)

Codren·2021년 5월 21일
0

기하학적 변환

목록 보기
1/2

Section 1. 이동 변환과 전단 변환

1. 기하학적 변환 (Geometrice Transformation)

영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업




2. 이동 변환 (Translation Transformation)

  • 가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환
  • x축과 y축 방향으로의 이동 변위를 지정
  • 어파인 변환 행렬 - 영상이 어떻게 변환될 지에 대한 정보를 담고 있는 행렬




3. 영상의 어파인 변환 함수

  • warpAffine() 함수
  • warpAffine() 함수 하나로 이동, 전단, 확대, 축소, 회전 변환 모두 수행

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




4. 이동 변환 코드 및 결과




5. 전단 변환 (Shear transformation)

  • 층 밀림 변환, x축과 y축 방향에 대해 따로 정의




6. 전단 변환 코드 및 결과

dst = cv2.warpAffine(src, aff, (w + int(h * 0.5), h))	# 전단 변환 시 짤리는 부분까지 보기위한 코드
							# 전단 변환 비율 0.5를 세로크기에 곱한 결과 값을 가로크기에 더함




Section 2. 크기 변환

1. 크기 변환 (Scale transformation)

  • 영상의 크기를 원본 영상보다 크게 (확대) 또는 작게 (축소) 만드는 변환
  • x축과 y축 방향으로의 스케일 비율(scale factor) 를 지정




2. 크기 변환 함수

  • warpAffine 함수가 아닌 resize() 함수

  • src - 입력 영상
  • dsize - 결과 영상 크기.(w,h) 튜플 (0,0)이면 fx와 fy 값을 이용하여 결정
  • dst - 출력 영상
  • fx,fy - x와 y방향 스케일 비율, (dsize 값이 0일 때 유효)
  • interpolation - 보간법 지정, 기본값은 cv2.INTER_LINEAR




3. 크기 변환 코드 및 결과

  • 480x320 크기의 rose.bmp 영상파일을 1920x1280 크기의 영상파일로 확대 변환
  • LINEAR 방식과 LANCZOS4 방식을 비교




Section 3. 이미지 피라미드

1. 이미지 피라미드 (Image pyramid)

  • 하나의 영상에 대해 다양한 해상도의 영상 세트를 구성한 것
  • 100x100 크기의 고양이를 인식한다고 가정할 때 입력 영상 파일은 다양한 크기로 고양이를 표현할 수도 있으므로 여러 해상도 구간에서 고양이를 인식할 수 있도록 이미지 피라미드 생성함



Section 4. 회전 변환

1. 회전 변환 (Roation Transformation)

  • 영상을 특정 각도만큼 회전시키는 변환 (반시계 방향)




2. 회전 변환 코드 및 결과

  • 20도를 radian 값으로 변환


  • 하지만 영상 파일의 중앙을 기준으로 회전하는 것이 아닌 왼쪽 상단 (0,0)을 기준으로 회전함




3. 회전 변환 행렬 구하는 함수

  • getRotationMatrix2D() 함수
  • 변환하는 함수가 아닌 어떻게 변환 시킬 지에 대한 정보 (어파인 변환 행렬)를 반환하는 함수

  • center - 회전 중심 좌표, (x, y) 튜플
  • angle - (반시계 방향) 회전 각도(degree), 음수는 시계 방향
  • scale - 추가적인 확대 비율
  • retval - 2x3 어파인 변환 행렬 또는 실수형




4. 영상 파일 중심 회전 변환 코드 및 결과

  • getRotationMatrix2D() 함수의 scale 인자 값에 0.5를 지정하여 0.5배 축소

cp = (src.shape[1] / 2, src.shape[0] / 2)		# 영상 파일의 중심 좌표를 구하는 코드


  • 아래의 어파인 행렬로 인한 변환 과정

0개의 댓글