이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
imwarp
영상에 기하 변환 적용
구문
설명
[___] = imwarp(___,
는 사용할 보간의 유형을 지정합니다.interp
)
[___] = imwarp(___,
는 이름-값 인수를 지정하여 기하 변환의 다양한 특성을 제어합니다. Name,Value
)
팁
입력 변환 tform
이 순방향 변환을 정의하지 않을 경우 OutputView
이름-값 인수를 사용하여 변환을 가속화하십시오.
예제
영상에 수평 전단 적용하기
회색조 영상을 읽어 들이고 표시합니다.
I = imread('cameraman.tif');
imshow(I)
2차원 아핀 변환을 만듭니다.
A = [1 0.5 0; 0 1 0; 0 0 1]; tform = affinetform2d(A);
변환을 영상에 적용합니다.
J = imwarp(I,tform); imshow(J)
회전 변환을 3차원 MRI 데이터에 적용하기
3차원 MRI 볼륨 영상을 불러와서 표시합니다.
load("mri");
mriVolume = squeeze(D);
volshow(mriVolume);
y축을 중심으로 영상을 회전시키는 3차원 강체 변환 객체를 만듭니다.
theta = [0 22.5 0]; transl = [0 0 0]; tform = rigidtform3d(theta,transl);
변환을 영상에 적용하고 결과를 표시합니다.
mriVolumeRotated = imwarp(mriVolume,tform); volshow(mriVolumeRotated);
서로 다른 출력 보기 스타일을 사용하여 영상에 워핑 적용하기
영상을 읽어 들여 표시합니다. 영상의 공간 범위를 보려면 좌표축을 표시하십시오.
A = imread("kobi.png"); A = imresize(A,0.25); iptsetpref("ImshowAxesVisible","on") imshow(A)
2차원 아핀 변환을 만듭니다. 이 예제에서는 [1.2, 2.4] 범위 내의 인자로 스케일링하고, [-45, 45]도 범위 내의 각도로 회전하며, [100, 200]픽셀 범위 내의 거리로 가로 평행 이동하는 무작위 변환을 만듭니다.
tform = randomAffine2d("Scale",[1.2,2.4],"XTranslation",[100 200],"Rotation",[-45,45]);
영상과 변환에 사용할 3가지 출력 보기를 만듭니다.
centerOutput = affineOutputView(size(A),tform,"BoundsStyle","CenterOutput"); followOutput = affineOutputView(size(A),tform,"BoundsStyle","FollowOutput"); sameAsInput = affineOutputView(size(A),tform,"BoundsStyle","SameAsInput");
각각의 서로 다른 출력 보기 스타일을 사용하여 입력 영상에 변환을 적용합니다.
BCenterOutput = imwarp(A,tform,"OutputView",centerOutput); BFollowOutput = imwarp(A,tform,"OutputView",followOutput); BSameAsInput = imwarp(A,tform,"OutputView",sameAsInput);
결과 영상을 표시합니다.
imshow(BCenterOutput)
title("CenterOutput Bounds Style");
imshow(BFollowOutput)
title("FollowOutput Bounds Style");
imshow(BSameAsInput)
title("SameAsInput Bounds Style");
iptsetpref("ImshowAxesVisible","off")
입력 인수
A
— 변환할 영상
숫자형 배열 | 논리형 배열 | categorical형 배열
변환할 영상으로, 임의 차원의 숫자형, 논리형 또는 categorical형 배열로 지정됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| categorical
tform
— 기하 변환
기하 변환 객체
기하 변환으로, 표에 나열된 기하 변환 객체로 지정됩니다.
기하 변환 객체 | 설명 |
---|---|
2차원 선형 기하 변환 | |
transltform2d | 평행 이동 변환 |
rigidtform2d | 강체 변환: 평행 이동 및 회전 |
simtform2d | 유사 변환: 평행 이동, 회전, 등방성 스케일링 |
affinetform2d | 아핀 변환: 평행 이동, 회전, 비등방성 스케일링, 반사, 전단 |
projtform2d | 사영 변환 |
3차원 선형 기하 변환 | |
transltform3d | 평행 이동 변환 |
rigidtform3d | 강체 변환: 평행 이동 및 회전 |
simtform3d | 유사 변환: 평행 이동, 회전, 등방성 스케일링 |
affinetform3d | 아핀 변환: 평행 이동, 회전, 비등방성 스케일링, 반사, 전단 |
비선형 기하 변환 | |
geometricTransform2d | 2차원 기하 변환 |
geometricTransform3d | 3차원 기하 변환 |
PolynomialTransformation2D | 국소 가중 평균 변환 |
PiecewiseLinearTransformation2D | 조각별 선형 변환 |
LocalWeightedMeanTransformation2D | 국소 가중 평균 변환 |
tform
이 2차원이고A
가 3차원 이상이면(예: RGB 영상)imwarp
는 동일한 2차원 변환을 더 높은 차원을 따라 모든 2차원 평면에 적용합니다.tform
이 3차원이면A
는 3차원 영상 볼륨이어야 합니다.
참고
tform
을 유형 rigid2d
, rigid3d
, affine2d
, affine3d
또는 projective2d
의 객체로 지정할 수도 있습니다. 그러나 이러한 객체는 권장되지 않습니다. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.
D
— 변위 필드
숫자형 배열
변위 필드로, 숫자형 배열로 지정됩니다. 변위 필드는 출력 영상의 그리드 크기와 위치를 정의합니다. 변위 값은 픽셀 단위입니다. imwarp
는 D
가 디폴트 기본 좌표계에서 참조되는 것으로 가정합니다. 변위 필드를 추정하려면 imregdemons
를 사용하십시오.
A
가 m×n 크기의 2차원 회색조 영상인 경우, 변위 필드를 m×n×2 배열로 지정합니다.D(:,:,1)
은 x축을 따라 변위를 포함합니다.imwarp
는 이 값을D
의 열 및 행 위치에 더하여A
의 다시 매핑된 위치를 생성합니다. 이와 유사하게D(:,:,2)
는 y축을 따라 변위를 포함합니다.A
가 m×n×c 크기의 2차원 RGB 또는 다중분광 영상인 경우,D
를 m×n×2로 지정하면imwarp
는 각 2차원 색 채널에서 독립적으로 동작합니다.D(:,:,1)
은 모든 색 채널의 x축을 따라 변위를 포함합니다. 이와 유사하게D(:,:,2)
는 y축을 따라 변위를 포함합니다.A
가 m×n×p 크기의 3차원 회색조 영상인 경우, 변위 필드 배열을 m×n×p×3 배열로 지정합니다.D(:,:,:,1)
은 x축을 따라 변위를 포함합니다.imwarp
는 이 값을D
의 열, 행 및 깊이 위치에 더하여A
의 다시 매핑된 위치를 생성합니다. 이와 유사하게D(:,:,:,2)
및D(:,:,:,3)
은 y축과 z축을 따라 변위를 포함합니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
interp
— 사용된 보간 유형
"nearest"
| "linear"
| "cubic"
사용된 보간 유형으로, 다음 값 중 하나로 지정됩니다.
보간 방법 | 설명 |
---|---|
"nearest" | 최근접이웃 보간. 해당 점이 속한 픽셀 값이 출력 픽셀에 할당됩니다. 다른 픽셀은 고려되지 않습니다. 최근접이웃 보간은 범주 영상에서 유일하게 지원되는 방법이며, 이 영상 유형의 디폴트 방법입니다. |
"linear" | 선형 보간입니다. 이는 숫자형 및 논리형 영상의 디폴트 보간 방법입니다. |
"cubic" | 3차 보간 |
데이터형: char
| string
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: B = imwarp(A,tform,FillValues=255)
는 채우기 값 255
를 사용합니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: B = imwarp(A,tform,"FillValues",255)
는 채우기 값 255
를 사용합니다.
OutputView
— 출력 영상의 크기와 위치
imref2d
객체 | imref3d
객체
출력 영상의 크기와 세계 좌표계상에서의 위치로, imref2d
또는imref3d
공간 참조 객체로 지정됩니다. 객체는 출력 영상의 크기와 세계 좌표계상에서의 출력 영상의 위치를 정의하는 속성을 갖습니다.
affineOutputView
함수를 사용하여 출력 보기를 만들 수 있습니다. imwarp
에 의해 계산되는 디폴트 출력 보기를 재현하려면 affineOutputView
의 디폴트 범위 스타일("CenterOutput"
)을 사용하십시오.
입력 변위 필드 D
를 지정한 경우 OutputView
를 지정할 수 없습니다.
FillValues
— 채우기 값
숫자형 스칼라 | 숫자형 배열 | string형 스칼라 | 문자형 벡터 | missing
입력 영상의 바깥쪽에 있는 출력 픽셀에 사용되는 채우기 값으로, 표의 값 중 하나로 지정됩니다. imwarp
는 입력 영상의 역변환된 해당 위치가 완전히 입력 영상 경계선 바깥쪽에 있는 경우 출력 픽셀에 채우기 값을 사용합니다.
숫자형 및 논리형 영상의 디폴트 채우기 값은 0
입니다. 범주 영상의 디폴트 채우기 값은 missing
으로, 이는 <undefined>
범주에 해당합니다.
영상 유형 | 변환 차원 | 채우기 값의 형식 |
---|---|---|
2차원 회색조 또는 논리형 영상 | 2차원 |
|
2차원 컬러 영상 또는 2차원 다중분광 영상 | 2차원 |
|
p개의 2차원 영상 시리즈 | 2차원 |
|
N차원 영상 | 2차원 |
|
3차원 회색조 또는 논리형 영상 | 3차원 |
|
범주 영상 | 2차원 또는 3차원 |
|
예: 255
는 uint8
형 영상을 흰색 픽셀로 채웁니다.
예: 1
은 double
형 영상을 흰색 픽셀로 채웁니다.
예: [0 1 0]
은 double
형 컬러 영상을 녹색 픽셀로 채웁니다.
예: 두 개의 double
형 컬러 영상 시리즈에 대해 [0 1 0; 0 1 1]'
은 첫 번째 영상을 녹색 픽셀로 채우고 두 번째 영상을 녹청색 픽셀로 채웁니다.
예: "vehicle"
은 범주 영상을 "vehicle" 범주로 채웁니다.
SmoothEdges
— 부드러운 경계를 만들기 위해 영상 채우기
false
(디폴트 값) | true
부드러운 경계를 만들기 위한 영상 채우기로, true
또는 false
로 지정됩니다. true
로 설정된 경우, imwarp
는 FillValues
로 지정된 값으로 입력 영상을 채워 출력 영상에서 경계를 더 부드럽게 만듭니다. false
로 설정된 경우, imwarp
는 영상을 채우지 않습니다. false
를 선택하면(채우기 없음) 입력 영상의 경계가 출력 영상에서 더 예리하게 표시될 수 있습니다. 경계가 더 예리해지면 두 영상을 나란히 정합할 때 경계선 왜곡을 최소화하는 데 도움이 됩니다.
출력 인수
알고리즘
imwarp
는 출력 영상의 위치를 입력 영상의 대응하는 위치로 매핑(역방향 매핑)하여 픽셀 값을 구합니다. 출력 영상의 픽셀 중앙이 입력 영상의 픽셀 중앙에 매핑되지 않는 경우 imwarp
는 입력 영상 내에서 보간하여 출력 픽셀 값을 계산합니다.
다음 그림은 각 정사각형이 10×10 픽셀인 체커보드 영상의 평행 이동 변환을 보여줍니다. 일반적으로 입력 공간의 좌표축에는 레이블 u와 v가 지정되고, 출력 공간의 좌표축에는 레이블 x와 y가 지정됩니다. 역변환을 사용하면 출력 좌표 공간의 (x,y) 좌표가 (25,35)인 픽셀이 입력 좌표 공간의 (u,v) 좌표 (5,5)에 매핑됩니다.
imwarp
는 세계 좌표를 사용하여 매핑을 수행합니다. 자세한 내용은 영상 좌표계 항목을 참조하십시오.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
imwarp
함수는 C 코드 생성을 지원합니다(MATLAB® Coder™가 필요함). 일반적인MATLAB Host Computer
대상 플랫폼을 선택할 경우imwarp
함수는 미리 컴파일된 플랫폼별 공유 라이브러리를 사용하는 코드를 생성합니다. 공유 라이브러리를 사용하면 성능 최적화가 유지되지만 코드를 생성할 수 있는 대상 플랫폼이 제한됩니다. 자세한 내용은 Types of Code Generation Support in Image Processing Toolbox 항목을 참조하십시오.데이터형이 categorical형인 입력 영상은 지원되지 않습니다.
기하 변환 객체 입력값
tform
은 2차원 기하 변환을 나타내야 합니다.보간 방법과 선택적 파라미터 이름은 상수여야 합니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
데이터형이 categorical형인 입력 영상은 지원되지 않습니다.
기하 변환 객체 입력값
tform
은 2차원 기하 변환을 나타내야 합니다.보간 방법과 선택적 파라미터 이름은 상수여야 합니다.
공간 참조 정보 출력값
RB
는 지원되지 않습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
"nearest"
및"linear"
보간 유형만 지원됩니다.SmoothEdges
인수의 값에는false
만 지원됩니다.
자세한 내용은 GPU를 사용한 영상 처리 항목을 참조하십시오.
버전 내역
R2013a에 개발됨R2022b: 새로운 기하 변환 객체 지원
R2022b부터 대부분의 Image Processing Toolbox™ 함수는 전위곱 규칙을 사용하여 기하 변환을 만들고 수행합니다. 따라서 이제 tform
을 affinetform2d
객체와 같은 전위곱 규칙을 사용하는 기하 변환 객체로 지정할 수 있습니다.
여전히 tform
을 affine2d
객체와 같이 후위곱 규칙을 사용하는 기하 변환 객체로 지정할 수 있지만 이러한 객체는 권장되지 않습니다. 새로운 전위곱 기하 변환 객체로 전환하여 기하 변환 워크플로를 간소화할 수 있습니다. 자세한 내용은 Migrate Geometric Transformations to Premultiply Convention 항목을 참조하십시오.
R2021b: 스레드 기반 환경 지원
imwarp
함수는 이제 스레드 기반 환경을 지원합니다.
R2021a: GPU 가속에 대한 지원 강화
이미 GPU 가속을 지원하는 imwarp
함수는 이제 변위 필드를 사용할 수 있도록 해당 지원을 확장합니다.
참고 항목
앱
함수
affineOutputView
|imregister
|imregtform
|imregdemons
|imtranslate
|randomWindow2d
|centerCropWindow2d
도움말 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)