최대 1 분 소요


Projective Geometry 실습
 

Class 1 : Euclidean Transformation
 

 * 회전(좌우대칭), 평행이동


a = rgb2gray(imread('image.png'));
[x_size, y_size] = size(a);
R = [e*cos(theta) -sin(theta) ; e*sin(theta) cos(theta)];
t = [tx ty].';
V0 = [0 0];
H = [R t ; V0 1];
for xv1 = 1 : x_size;
for yv1 = 1 : y_size;
v = round(H*[xv1 yv1 1].');
b(v(1),v(2)) = a(xv1,yv1);
end
end


실행결과
Rotation : 30° * 회전변환때 새로운 좌표는 round값을 가져가므로 정보를 잃는 부분이 생긴다.
 
Class 2 : Similarity Transformation
 

 * 회전, 평행이동, 스케일
 
 
Euclidean과 거의 동일하나 행렬 R만 다음과 같이 정의된다.
R = [s1*cos(theta) -s2*sin(theta) ; s1*sin(theta) s2*cos(theta)];
이로서 스케일 자유도 가질 수 있다.
 
실행결과
 
* 스케일: s1 = 0.5 , s2 = 0.5
 


Class 3 : Affine Transformation
 

 Shearing 자유도 추가
% Define Shearing Matrix
S = [1 Sx;Sy 1];
R = [s1*cos(theta) -s2*sin(theta) ; s1*sin(theta) s2*cos(theta)];
R = S*R;
 

 Shearing을 왼쪽과 같이 나타냄.
처럼 Φ 값으로 나타내는 방법을 찾아 적용해 볼 것.
실행결과
 
Shearing : Sx = 0.15 , Sy = 1
 
Shearing : Sx = 0.15 , Sy = 1 Rotation : 30°

...

댓글남기기