Main Content

fitgeotform2d

제어점 쌍에 2차원 기하 변환 피팅

R2022b 이후

    설명

    예제

    tform = fitgeotform2d(movingPoints,fixedPoints,tformType)은 유형 tformType의 선형 기하 변환을 제어점 쌍 movingPointsfixedPoints에 피팅합니다.

    tform = fitgeotform2d(movingPoints,fixedPoints,"polynomial",degree)는 차수 degree의 다항식 변환을 제어점 쌍 movingPointsfixedPoints에 피팅합니다. 다항식 변환의 차수 degree를 2, 3 또는 4로 지정합니다.

    tform = fitgeotform2d(movingPoints,fixedPoints,"pwl")은 조각별 선형 변환을 제어점 쌍 movingPointsfixedPoints에 피팅합니다. 이 변환은 고정 제어점의 들로네 삼각분할을 만들고 이동 제어점을 대응되는 고정 제어점에 매핑합니다. 다른 아핀 변환이 각 국소 영역의 제어점을 매핑합니다. 매핑은 제어점에서 연속이지만 연속해서 미분 가능하지는 않습니다.

    tform = fitgeotform2d(movingPoints,fixedPoints,"lwm",n)은 국소 가중 평균 변환을 제어점 쌍 movingPointsfixedPoints에 피팅합니다. 국소 가중 평균 변환은 각 제어점에서 인접 제어점을 사용하여 다항식을 추론하는 방법으로 매핑을 생성합니다. 어느 임의 위치에서의 매핑은 이 다항식의 가중 평균에 따라 달라집니다. 이 함수는 가장 가까운 n개의 점을 사용하여 각 제어점 쌍에 대한 2차 다항식 변환을 추론합니다.

    예제

    모두 축소

    체커보드 영상을 만들고 회전하여 정렬이 맞지 않는 영상을 만듭니다.

    I = checkerboard(40);
    J = imrotate(I,30);
    imshowpair(I,J,"montage")

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

    고정 영상(체커보드) 및 이동 영상(회전된 체커보드)에서 몇 개의 일치하는 제어점을 정의합니다. 제어점 선택 툴을 사용하여 대화형 방식으로 점을 정의할 수 있습니다.

    fixedPoints = [41 41; 281 161];
    movingPoints = [56 175; 324 160];

    두 영상을 정렬하는 데 사용할 수 있는 유사 기하 변환을 만듭니다.

    tform = fitgeotform2d(movingPoints,fixedPoints,"similarity");

    tform 추정값을 사용하여 회전된 영상을 리샘플링하고 고정 영상과 정합을 수행합니다. 오버레이 영상에서 녹색과 자홍색의 가색상으로 표시되는 영역은 정합 오류를 나타냅니다. 이 오류는 제어점에 정확한 대응 관계가 없기 때문에 발생합니다.

    Jregistered = imwarp(J,tform,OutputView=imref2d(size(I)));
    imshowpair(I,Jregistered)

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

    입력 인수

    모두 축소

    이동 영상에 있는 제어점으로, m×2 행렬로 지정됩니다. 각 행은 제어점의 (x, y) 좌표를 지정합니다.

    예: movingPoints = [11 11; 41 71];

    데이터형: double | single

    고정 영상에 있는 제어점으로, m×2 행렬로 지정됩니다. 각 행은 제어점의 (x, y) 좌표를 지정합니다.

    예: fixedPoints = [14 44; 70 81];

    데이터형: double | single

    선형 변환 유형으로, "similarity", "reflectivesimilarity", "affine" 또는 "projective"로 지정됩니다. 자세한 내용은 변환 유형 항목을 참조하십시오.

    데이터형: char | string

    다항식 차수로, 정수 2, 3 또는 4로 지정됩니다.

    국소 가중 평균 계산에 쓰일 점의 개수로, 양의 정수로 지정됩니다. n의 최솟값은 6이지만 n이 작으면 나쁜 조건의 다항식이 생성될 수 있습니다.

    출력 인수

    모두 축소

    기하 변환으로, 표에 정의된 기하 변환 객체로 반환됩니다.

    변환 유형

    기하 변환 객체
    "similarity"simtform2d
    "reflectivesimilarity"affinetform2d
    "affine"affinetform2d
    "projective"projtform2d
    "polynomial"PolynomialTransformation2D
    "pwl"PiecewiseLinearTransformation2D
    "lwm"LocalWeightedMeanTransformation2D

    세부 정보

    모두 축소

    변환 유형

    다음 표에는 fitgeotform2d가 지원하는 변환 유형이 복잡도순으로 나열되어 있습니다.

    변환 유형

    설명제어점 쌍의 최소 개수
    "similarity"이동 영상의 형태에는 변함이 없지만 평행 이동, 회전, 등방성 스케일링의 조합에 의해 영상이 왜곡되어 있는 경우 이 변환을 사용합니다. 직선은 직선 상태를, 평행선은 평행선 상태를 유지합니다.2

    Image transformed using "similarity".

    "reflectivesimilarity" 선택적으로 반사를 추가하는 것만 제외하고 "similarity"와 동일합니다.3

    Image transformed using "reflectivesimilarity".

    "affine"이동 영상의 형태에 전단이나 비등방성 스케일링이 나타난 경우 이 변환을 사용합니다. 직선은 직선 상태를, 평행선은 평행선 상태를 유지하지만 사각형은 평행사변형이 됩니다.3

    Image transformed using "affine".

    "projective"장면이 기울어져 보이는 경우 이 변환을 사용합니다. 직선은 직선 상태를 유지하지만 평행선은 소실점을 향해 수렴합니다.4

    Image transformed using "projective".

    "polynomial"영상 속 객체가 곡선 모양으로 휘어진 경우 이 변환을 사용합니다. 다항식 차수가 높을수록 피팅이 좋지만, 그 결과물에 포함된 곡선이 고정 영상보다 많아질 수 있습니다.

    6(차수 2)

    10(차수 3)

    15(차수 4)

    Image transformed using "polynomial".

    "pwl"영상의 각 부분에 서로 다른 왜곡이 있는 경우 이 변환(조각별 선형)을 사용합니다.4

    Image transformed using "pwl".

    "lwm"왜곡이 국소적으로 변동하고 조각별 선형으로 충분하지 않은 경우 이 변환(국소 가중 평균)을 사용합니다. 6(12 권장됨)

    Image transformed using "lwm".

    참고 문헌

    [1] Goshtasby, Ardeshir. “Piecewise Linear Mapping Functions for Image Registration.” Pattern Recognition 19, no. 6 (January 1986): 459–66. https://doi.org/10.1016/0031-3203(86)90044-0.

    [2] Goshtasby, Ardeshir. “Image Registration by Local Approximation Methods.” Image and Vision Computing 6, no. 4 (November 1988): 255–61. https://doi.org/10.1016/0262-8856(88)90016-9.

    확장 기능

    버전 내역

    R2022b에 개발됨

    모두 확장