주요 콘텐츠

simtform3d

3차원 유사 기하 변환

R2022b 이후

    설명

    simtform3d 객체는 3차원 유사 기하 변환에 대한 정보를 저장하며, 순방향 및 역방향 변환을 적용합니다.

    생성

    설명

    tform = simtform3d는 항등 변환을 수행하는 simtform3d 객체를 만듭니다.

    tform = simtform3d(s,rotMat,t)는 지정된 스케일링 인자 s, 회전 행렬 rotMat, 평행 이동 거리 t에 따라 유사 변환을 수행하는 simtform3d 객체를 만듭니다.

    tform = simtform3d(s,eulerAngles,t)는 지정된 스케일링 인자 s, 오일러 각, 평행 이동 거리 t에 따라 유사 변환을 수행하는 simtform3d 객체를 만듭니다.

    예제

    tform = simtform3d(simMat)는 지정된 3차원 유사 변환 행렬 simMat에서 simtform3d 객체를 만듭니다.

    tform = simtform3d(tformIn)은 유효한 3차원 유사 기하 변환을 나타내는 다른 기하 변환 객체 tformIn에서 simtform3d 객체를 만듭니다.

    입력 인수

    모두 확장

    스케일링 인자로, 양수로 지정됩니다. 스케일링 인자는 속성 A에 의해 정의된 유사 변환 행렬의 값 s에 대응합니다.

    이 인수는 Scale 속성을 설정합니다.

    데이터형: double | single

    회전 행렬로, 3×3 숫자형 행렬로 지정됩니다. 회전 행렬은 먼저 x축을 중심으로 회전을 수행하고, 그런 다음 차례로 y축, z축을 중심으로 회전을 수행합니다.

    이 인수는 R 속성을 설정합니다.

    평행 이동 거리로, 요소를 3개 가진 [tx ty tz] 형태의 숫자형 벡터로 지정됩니다. 평행 이동 거리는 A로 정의된 유사 변환 행렬의 값 tx, ty, tz에 대응합니다.

    이 인수는 Translation 속성을 설정합니다.

    데이터형: double | single

    x,y,z 순서의 오일러 각(단위: 도)으로, 요소를 3개 가진 [rx ry rz] 형태의 숫자형 벡터로 지정됩니다. 오일러 각은 R 속성을 다음과 같이 세 개의 회전 행렬(Rx, Ry, Rz)의 곱으로 설정합니다.

     Rx = [1 0 0; 0 cosd(rx) -sind(rx); 0 sind(rx) cosd(rx)];
     Ry = [cosd(ry) 0 sind(ry); 0 1 0; -sind(ry) 0 cosd(ry)];
     Rz = [cosd(rz) -sind(rz) 0; sind(rz) cosd(rz) 0; 0 0 1];
      R = Rz*Ry*Rx;

    데이터형: double | single

    순방향 3차원 유사 변환으로, 4×4 숫자형 행렬로 지정됩니다. 객체를 만들 때 simMat를 3×4 숫자형 행렬로 지정할 수도 있습니다. 이 경우 객체는 행 벡터 [0 0 0 1]을 행렬의 끝에 결합하여 4×4 행렬을 만듭니다.

    유효한 3차원 유사 변환 A는 다음과 같은 형태를 갖습니다.

    Α=[sR(1,1)sR(1,2)sR(1,3)txsR(2,1)sR(2,2)sR(2,3)tysR(3,1)sR(3,2)sR(3,3)tz0001]

    s는 스케일링 인자이고 Scale 속성을 설정합니다. R(i,j)는 회전 행렬의 요소이고 R 속성을 설정합니다. tx, tytz는 각각 x 방향, y 방향, z 방향으로의 평행 이동 거리이고 Translation 속성을 설정합니다.

    이 인수는 A 속성을 설정합니다.

    데이터형: double | single

    유사 3차원 기하 변환으로, affinetform3d 객체, rigidtform3d 객체, simtform3d 객체 또는 transltform3d 객체로 지정됩니다.

    출력 인수

    모두 확장

    유사 3차원 기하 변환으로, simtform3d 객체로 반환됩니다.

    속성

    모두 확장

    순방향 3차원 유사 변환으로, 4×4 숫자형 행렬로 지정됩니다. A의 디폴트 값은 단위 행렬입니다.

    행렬 A는 다음과 같은 규칙을 사용하여 입력 좌표 공간의 점 (u, v, w)를 출력 좌표 공간의 점 (x, y, z)로 변환합니다.

    [xyz1]=Α×[uvw1]

    유사 변환의 경우 A는 다음과 같은 형태를 갖습니다.

    Α=[sR(1,1)sR(1,2)sR(1,3)txsR(2,1)sR(2,2)sR(2,3)tysR(3,1)sR(3,2)sR(3,3)tz0001]

    여기서 s는 스케일링 인자이고 Scale 속성에 대응합니다. R(i,j)는 R 속성의 대응되는 (i,j) 인덱스로 지정된 회전 행렬의 요소입니다. tx, tytz는 각각 x 방향, y 방향, z 방향으로의 평행 이동 거리이며 Translation 속성의 요소에 대응합니다.

    데이터형: double | single

    스케일링 인자로, 양수로 지정됩니다. 스케일링 인자는 속성 A에 의해 정의된 유사 변환 행렬의 값 s에 대응합니다.

    데이터형: double | single

    회전 행렬로, 3×3 숫자형 행렬로 지정됩니다. 회전 행렬은 먼저 x축을 중심으로 회전을 수행하고, 그런 다음 차례로 y축, z축을 중심으로 회전을 수행합니다.

    평행 이동 거리로, 요소를 3개 가진 [tx ty tz] 형태의 숫자형 벡터로 지정됩니다.

    데이터형: double | single

    읽기 전용 속성입니다.

    입력 점과 출력 점에 대한 기하 변환의 차원 수로, 값 3으로 반환됩니다.

    데이터형: double

    객체 함수

    invert역 기하 변환
    outputLimitsFind output spatial limits given input spatial limits
    transformPointsForwardApply forward geometric transformation
    transformPointsInverseApply inverse geometric transformation

    예제

    모두 축소

    스케일링 인자 및 평행 이동 거리를 지정합니다. 이 예제에서는 변환 시 회전을 수행하지 않으므로, 오일러 각을 [0 0 0]으로 설정합니다.

    scaleFactor = 1.5;
    eulerAngles = [0 0 0];
    translation = [10 20.5 15];

    스케일링 및 평행 이동을 수행하는 simtform3d 객체를 만듭니다.

    tform = simtform3d(scaleFactor,eulerAngles,translation)
    tform = 
      simtform3d with properties:
    
        Dimensionality: 3
                 Scale: 1.5000
           Translation: [10 20.5000 15]
                     R: [3×3 double]
    
                     A: [1.5000         0         0   10.0000
                              0    1.5000         0   20.5000
                              0         0    1.5000   15.0000
                              0         0         0    1.0000]
    
    

    A 속성값을 검토합니다.

    tform.A
    ans = 4×4
    
        1.5000         0         0   10.0000
             0    1.5000         0   20.5000
             0         0    1.5000   15.0000
             0         0         0    1.0000
    
    

    imwarp 함수를 사용하여 simtform3d 객체에 저장된 강체 변환을 영상에 적용할 수 있습니다. imwarp 함수의 출력을 시각적으로 검사하여 simtform3d 객체를 미세 조정하려면, 변환 행렬의 스케일 성분, 회전 성분, 평행 이동 성분을 조정하십시오. 스케일링 인자와 평행 이동 좌표는 시각적 출력 결과를 검사하면서 직접 조정할 수 있습니다. 하지만 회전 행렬을 사용하여 simtform3d 객체를 생성하는 경우, 시각적 출력을 검사하여 회전 성분을 조정하기 위해 오일러 각을 추정해야 할 수도 있습니다. 시각적 출력을 기반으로 회전 행렬을 조정하려면, 회전 행렬에서 오일러 각을 추정하고 오일러 각을 조정하십시오.

    R = tform.R;
    x = atan2(R(3,2),R(3,3));
    y = asin(-R(3,1));
    z = atan2(R(2,1),R(1,1));
    x = rad2deg(x);
    y = rad2deg(y);
    z = rad2deg(z);
    이 방법은 회전 행렬을 조정하기 위한 시작점을 제공합니다. 다만 이 방법은 오일러 각을 추정합니다. 에지 케이스를 포함하여 오일러 각을 정확하게 계산하려면 rotm2eul (Robotics System Toolbox) 함수를 사용하십시오.

    확장 기능

    모두 확장

    버전 내역

    R2022b에 개발됨

    모두 확장