0

Skimage 웹 사이트에서 this example을 따라갔습니다. 코드가 원본 이미지에 부분 별 아핀 변환을 수행하고 결과 이미지가 아래 이미지와 유사합니다. piecewiseAffineTransformation 후의 포인트 위치 추적

image resulted from the website example

는 I 추적하려고 방법 전과 변환 매트릭스 인덱스를 액세스하여 변형 후의 화상의 움직임에 일부 특정 포인트. 내 코드

here 내가 또한 가장 가까운 격자 점에 지정된 점을 넣어 find_linspace_index() 정의 된 변환 행렬

에있는 점의 인덱스를 찾기 위해 find_map_index()을 정의하십시오.

아래 그림과 같이 원하는 이미지를 생성 할 수있었습니다. 파란색 점은 원래 위치이고 녹색 점은 결과 위치입니다. image resulted from my code in gist

내 질문은 왜 tform.inverse

out = warp(image, tform.inverse, output_shape=(rows + 100, cols)) 

대신 tform의 사용합니까입니까? 게다가

out = warp(image, tform, output_shape=(rows + 100, cols)) 

, 나는 웹 사이트의 예제의 경우와 원본 이미지의 크기에 맞게 크기를 조절하지 않고 잘라지지 않은 이미지를 가지고 할 수있는 방법? 변형은 이미지 경계에서 원래 크기를 벗어나는 점을 매핑하는 것처럼 보입니다.

고마워요.

답변

1

질문의 첫 번째 부분에 대답하려면 원래의 변환이 입력 이미지에서 출력 이미지로의 정방향 매핑이기 때문에 역변환을 사용해야합니다.

변형 된 이미지를 만들 때 출력 이미지의 공간에 있으며 출력 이미지의 각 픽셀에 대해 입력 이미지의 해당 위치를 찾고이 이미지를 찾으려면 역변환을 사용합니다. skimage documentation for warp

이 방법을 사용하면 출력 이미지의 각 픽셀 값을 얻을 수 있습니다. 문서로, 클리핑을 의미한다 질문의 두 번째 부분에 대한

===========================

출력 이미지의 포인트가 입력 이미지의 이미지 범위 밖에있을 때 여러 가지 옵션이 있음을 상기에서 언급했습니다. 상수 값

  • 에지 패드 - - 이것은 numpy.pad로부터 대응 정의 이하

    • 상수 정교 패드
    • 대칭 배열의 에지 값 - 벡터의 반사 패드 미러링 배열의 가장자리를 따라 배열
    • 반사 - 각 축을 따라 벡터의 첫 번째 및 마지막 값에 미러링 된 패드
    • 랩 - 축을 따라 벡터의 랩으로 패딩합니다.제 값은 패드의 끝을 사용하여 최종 값은 언급 된 특정 예는 피스 와이즈 아핀 변환이기 때문에, 그것은 또한 이러한 구성 될 수

    그러나 패드 시작을 사용 두 이미지의 경계선 주위의 영역은 고정되어 있습니다. 즉,이 영역의 변환은 항등 행렬이므로이 영역의 점은 왜곡되지 않습니다. 그러나, 나는 그 예에 해당되는지 확실하지 않다.

  • +0

    "입력 이미지에서 출력 이미지로 정방향 매핑이있는 경우 원본을 변환하기 때문에 역 변환을 사용해야합니다." "원래 변환 **은 입력 이미지에서 출력 이미지로의 정방향 매핑이기 때문에 역 변환을 사용해야합니다." 그냥 맞춤법 오류입니다. 고마워, 내 문제가 해결되었습니다. 나는 이미지의 위쪽과 아래쪽을 채우고 변형시켰다. – Kershaw

    +0

    @ Kershaw - 감사합니다. 답변이 수정되었습니다. – KolaB