Main Content

affine2d

(권장되지 않음) 후위곱 규칙을 사용하는 2차원 아핀 기하 변환

affine2d는 권장되지 않습니다. 대신 affinetform2d 객체를 사용하십시오. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.

설명

affine2d 객체는 후위곱 규칙을 사용하여 2차원 아핀 기하 변환에 대한 정보를 저장하며, 순방향 및 역방향 변환을 적용합니다.

생성

설명

tform = affine2d는 항등 변환에 해당하는 디폴트 속성 설정을 사용하여 affine2d 객체를 만듭니다.

예제

tform = affine2d(t)는 속성 T를 지정된 2차원 아핀 변환 행렬 t로 설정합니다.

속성

모두 확장

순방향 2차원 아핀 변환으로, 3×3 숫자형 정칙 행렬로 지정됩니다. 행렬 T는 다음과 같은 규칙을 사용합니다.

[x y 1] = [u v 1] * T

T는 다음과 같은 형태를 갖습니다.

 [a b 0;
  c d 0;
  e f 1];

T의 디폴트 값은 항등 변환입니다.

데이터형: double | single

읽기 전용 속성입니다.

입력 점과 출력 점에 대한 기하 변환의 차원 수로, 값 2로 지정됩니다.

객체 함수

invert역 기하 변환
isRigidDetermine if geometric transformation is rigid transformation
isSimilarityDetermine if geometric transformation is similarity transformation
isTranslationDetermine if geometric transformation is pure translation
outputLimitsFind output spatial limits given input spatial limits
transformPointsForwardApply forward geometric transformation
transformPointsInverseApply inverse geometric transformation

예제

모두 축소

원점을 중심으로 시계 반대 방향으로의 30도 회전을 정의하는 affine2d 객체를 만듭니다.

theta = 30;
tform = affine2d([ ...
    cosd(theta) sind(theta) 0;...
    -sind(theta) cosd(theta) 0; ...
    0 0 1])
tform = 
  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

점 (10,0)에 순방향 기하 변환을 적용합니다.

[x,y] = transformPointsForward(tform,10,0)
x = 8.6603
y = 5

원래 점은 파란색으로, 변환된 점은 빨간색으로 플로팅하여 변환된 결과를 확인합니다.

plot(10,0,'bo',x,y,'ro')
axis([0 12 0 12])
axis square

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

영상을 작업 공간으로 읽어 들입니다.

A = imread('pout.tif');

아핀 기하 변환을 정의하는 affine2d 객체를 만듭니다. 다음 예제는 세로 전단과 가로 늘이기를 결합합니다.

tform = affine2d([2 0.33 0; 0 1 0; 0 0 1])
tform = 
  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

imwarp를 사용하여 영상에 기하 변환을 적용합니다.

B = imwarp(A,tform);

결과 영상을 표시합니다.

figure
imshow(B);
axis on equal;

Figure contains an axes object. The axes object contains an object of type image.

확장 기능

버전 내역

R2013a에 개발됨

모두 확장

R2022b: 권장되지 않음

R2022b부터 대부분의 Image Processing Toolbox™ 함수는 전위곱 규칙을 사용하여 기하 변환을 만들고 수행합니다. 따라서 후위곱 규칙을 사용하는 affine2d 객체는 권장되지 않습니다. 현재로서는 affine2d 객체를 제거할 계획이 없지만 전위곱 규칙을 지원하는 affinetform2d 객체로 전환하여 기하 변환 워크플로를 간소화할 수 있습니다. 자세한 내용은 Migrate Geometric Transformations to Premultiply Convention 항목을 참조하십시오.

코드를 업데이트하려면 다음을 수행하십시오.

  • 함수 이름 affine2daffinetform2d로 변경합니다.

  • 변환 행렬을 행렬 T의 전치로 지정합니다. 여기서 Taffine2d 객체의 T 속성값 또는 affine2d 객체를 만드는 데 사용되는 변환 행렬입니다.

권장되지 않는 사용법권장되는 대체 방법

이 예제에서는 후위곱 규칙의 변환 행렬 T에서 affine2d 객체를 만듭니다.

T = [2 0.33 0; 0 1 0; 0 0 1];
tformPost = affine2d(T);

이 예제에서는 변환 행렬 T의 전치에서 affinetform2d 객체를 만듭니다.

T = [2 0.33 0; 0 1 0; 0 0 1];
tform = affinetform2d(T');

이 예제에서는 tformPost라는 affine2d 객체로 시작하여 tformPostT 속성의 전치에서 affinetform2d 객체를 만듭니다.

T = tformPost.T;
tform = affinetform2d(T');