Multimedia Programming 14: Image Warping 2 Departments of Digital Contents Sang Il Park
Image Warping (이미지 변형) http://www.jeffrey-martin.com 15-463: Computational Photography Alexei Efros, CMU, Fall 2006 Some slides from Steve Seitz
매개변수 기반 (전역) 변형 매개변수 기반 워핑: 이동 회전 비율 변환 원통 변형 Affine Perspective (어파인변형) Perspective (원근변형)
매개변수 기반 (전역) 변형 변형(Transformation) T 이라는 것은 좌표의 값을 바꾸어 주는 것을 의미한다 p = (x,y) p’ = (x’,y’) 변형(Transformation) T 이라는 것은 좌표의 값을 바꾸어 주는 것을 의미한다 p’ = T(p) 변형T 가 전역이라는 의미는?? 모든 좌표 p에 대해 변형 값이 동일 함을 의미 따라서 몇 개의 계수로 표현 가능 (매개변수)
Scaling Scaling operation: (확대/축소 연산) 같은 연산의 matrix form: (행렬 표현법) scaling matrix S What’s inverse of S?
Inverse transformation (역변형) p = (x,y) p’ = (x’,y’) p = T -1(p’ ) 역변형(Inverse transformation) T-1 은 어떤 변형 T의 반대 작용을 의미한다.
scaling S 의 역변환 Scaling operation S: Inverse of a S: In a matrix form: scaling matrix S-1
2-D 회전 (Rotation) (x’, y’) (x, y) x’ = x cos() - y sin() y’ = x sin() + y cos()
2-D Rotation (x’, y’) (x, y) f x = r cos (f) y = r sin (f) 코사인 법칙/사인법칙 적용 x’ = r cos(f) cos() – r sin(f) sin() y’ = r cos(f) sin() + r sin(f) cos() 치환 x’ = x cos() - y sin() y’ = x sin() + y cos() (x, y) (x’, y’) f
2-D Rotation 2차원 회전은 행렬로 쉽게 표현된다: sin(q) 과 cos(q) 은 각도 q 에 대한 비선형 함수이지만, q가 정해지면: x’ 는 x 와 y의 선형식(1차식) 으로 표현됨 y’ 는 x 와 y의 선형식 (1차식) 으로 표현됨 R
2-D 회전의 역변환 –q 만큼 회전하기:
2x2 행렬 변형 (Matrix) 2x2 행렬로 표현 가능 한 변형? 2D Identity?
2x2 행렬 변형 (Matrix) 2x2 행렬로 표현 가능 한 변형? (0,0)을 중심으로하는 2D회전 2D Shear (쉬어링)
2x2 행렬 변형 (Matrix) 2x2 행렬로 표현 가능 한 변형? Y축 2D 대칭 원점 대칭
2x2 행렬 변형 (Matrix) NO! 2x2 행렬로 표현 가능 한 변형? 2D 차원 이동? 2x2 matrix 는 오직 2차원 선형변형만을 표현할 수 있다
모든 2D 선형 변형들 선형 변형들은 다음 변형들의 조합이다: 선형 변형의 특징: Scale, Rotation, Shear, and Mirror 선형 변형의 특징: 원점은 원점으로 (변형 없음) 직선은 그대로 직선을 유지 (휘어지지 않는다) 평행한 직선은 변형 뒤에도 평행을 유지 선형변형을 조합한 것은 하나의 선형변형으로 표현 가능하다 거리의 비율이 유지된다
Homogeneous Coordinates 2 차원 공간의 좌표를 표기하기 위해 3차원 벡터를 사용하는 것 (동차좌표)
Homogeneous Coordinates Q: 이동을 표현하기 위해 3x3 행렬을 쓰는 건 어떨까? A: 동차좌표로 표현하면 이동 부분을 행렬의 오른쪽 부분에 나타낼 수 있다
Translation(이동) 이동의 예시: Homogeneous Coordinates(동차좌표) tx = 2 ty = 1
동차좌표의 정의 모든 2차원 좌표에 세번째 값을 추가한다 (x, y, w) 은 2차원 좌표 (x/w, y/w) 를 의미한다 (0, 0, 0) 은 사용하지 않는다 1 2 (2,1,1) or (4,2,2) or (6,3,3) x y 동차좌표계는 많은 유용한 변형을 표현할 수 있게 해주는 편리한 좌표계이다
기본적인 2차원 변형들 3x3 행렬들로 표현한 기본적인 2차원 변형들 Translate Scale Rotate
Affine Transformations (어파인 변형들) 어파인 변형은 다음 변형들의 조합이다: 선형 변형들 (확대/축소, 회전, …) 이동 변형 (Translation) 어파인 변형의 특징들: 원점이 변형된 후 반드시 원점으로 남아있진 않다. 직선은 그대로 직선을 유지 (휘어지지 않는다) 평행한 직선은 변형 뒤에도 평행을 유지 거리의 비율이 유지된다 선형변형을 조합한 것은 하나의 선형변형으로 표현 가능하다
Projective Transformations (투영 변형) 투영 변형은 다음 변형들의 조합이다: 어파인 변형 투형 변환 투영 변형의 특징은 다음과 같다 원점이 변형된 후 반드시 원점으로 남아있진 않다 직선은 그대로 직선을 유지 (휘어지지 않는다) 평행한 직선이 반드시 평형을 유지하진 않는다 거리의 비율이 반드시 유지되진 않는다 투영변형을 조합한 것은 하나의 투영변형으로 표현 가능하다
Matrix Composition (행렬조합) 다양한 변형들의 조합은 행렬의 곱을 통해 표현할 수 있다 p’ = T(tx,ty) R(Q) S(sx,sy) p 변형의 순서 먼저 확대/축소 다음으로 회전 마지막으로 이동했다 면?
역변형(Inverse Transformation) Translate Scale Rotate
역변형(Inverse Transformation) p’ = T(tx,ty) R(Q) S(sx,sy) p P = S-1(sx,sy) R-1(Q) T-1(tx,ty) p’
2D차원 영상의 다양한 변형들: 자유도 변형이름 형렬표현 유지하는 것 (필요변수수) 자유도 변형이름 형렬표현 유지하는 것 위 변형들은 위에서부터 아래의 순서대로 그 표현의 범위가 넓어진다 또한 각각의 변형들은 그들끼리의 조합이나 역변환을 한다 해도 결국 그 속한 변형의 종류이다.
코딩연습 그림의 중앙을 중심으로 원하는 각도 만큼 회전하는 프로그램을 만들어라. 힌트: 회전은 항상 원점(0,0)을 중심으로 이뤄진다 따라서 그림의 중심을 원점으로 옮긴 후 회전한다 이후 다시 원래의 위치로 보내준다 행렬의 곱을 이용해서 한꺼번에 수행해야 한다.