geometricTransform2d
2 次元幾何学的変換オブジェクト
説明
geometricTransform2d
オブジェクトは、点単位のマッピング関数を使用してカスタムの 2 次元幾何学的変換を定義します。
作成
説明
は、tform
= geometricTransform2d(inverseFcn)geometricTransform2d
オブジェクトを作成し、逆マッピング プロパティ InverseFcn
を設定します。
は、さらにフォワード マッピング プロパティ tform
= geometricTransform2d(inverseFcn,forwardFcn)ForwardFcn
を設定します。
プロパティ
InverseFcn
— 逆マッピング関数
関数ハンドル
逆マッピング関数。関数ハンドルとして指定します。この関数は、n 個の点のパックされた (x,y) 座標を表す n 行 2 列の数値行列として座標を受け入れ、同じ形式の座標を返します。
関数ハンドルの詳細については、関数ハンドルの作成を参照してください。
例: ifcn = @(xy) [xy(:,1).^2, sqrt(xy(:,2))];
ForwardFcn
— フォワード マッピング関数
関数ハンドル
フォワード マッピング関数。関数ハンドルとして指定します。この関数は、n 個の点のパックされた (x,y) 座標を表す n 行 2 列の数値行列として座標を受け入れ、同じ形式の座標を返します。
関数ハンドルの詳細については、関数ハンドルの作成を参照してください。
例: ffcn = @(xy) [sqrt(xy(:,1)),(xy(:,2).^2)];
オブジェクト関数
outputLimits | Find output spatial limits given input spatial limits |
transformPointsForward | Apply forward geometric transformation |
transformPointsInverse | Apply inverse geometric transformation |
例
カスタムの 2 次元変換を使用したパックされた座標の変換
5 つの入力点のパックされた (x,y) 座標を指定します。パックされた座標は 5 行 2 列の行列として格納します。ここで、各点の x 座標は最初の列に、各点の y 座標は 2 番目の列に入れます。
XY = [10 15;11 32;15 34;2 7;2 10];
逆マッピング関数を定義します。この関数はパックされた (x,y) 形式の点を受け入れ、同じ形式の点を返します。
inversefn = @(c) [c(:,1)+c(:,2),c(:,1)-c(:,2)]
inversefn = function_handle with value:
@(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]
逆マッピング関数を格納する 2 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform2d(inversefn)
tform = geometricTransform2d with properties: InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)] ForwardFcn: [] Dimensionality: 2
幾何学的逆変換を入力点に適用します。
UV = transformPointsInverse(tform,XY)
UV = 5×2
25 -5
43 -21
49 -19
9 -5
12 -8
カスタムの 2 次元変換を使用した座標配列の変換
変換する 5 つの点の x 座標と y 座標のベクトルを指定します。
x = [10 11 15 2 2]; y = [15 32 34 7 10];
逆マッピング関数とフォワード マッピング関数を定義します。どちらの関数もパックされた (x,y) 形式の点を受け入れ、同じ形式の点を返します。
inversefn = @(c) [c(:,1).^2,sqrt(c(:,2))]; forwardfn = @(c) [sqrt(c(:,1)),c(:,2).^2];
逆マッピング関数とオプションのフォワード マッピング関数を格納する 2 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform2d(inversefn,forwardfn)
tform = geometricTransform2d with properties: InverseFcn: @(c)[c(:,1).^2,sqrt(c(:,2))] ForwardFcn: @(c)[sqrt(c(:,1)),c(:,2).^2] Dimensionality: 2
幾何学的逆変換を入力点に適用します。
[u,v] = transformPointsInverse(tform,x,y)
u = 1×5
100 121 225 4 4
v = 1×5
3.8730 5.6569 5.8310 2.6458 3.1623
フォワード幾何学的変換を変換後の点 u
と v
に適用します。
[x,y] = transformPointsForward(tform,u,v)
x = 1×5
10 11 15 2 2
y = 1×5
15.0000 32.0000 34.0000 7.0000 10.0000
カスタムの 2 次元変換を使用したグレースケール イメージの変換
異方性スケーリングを適用する逆マッピング関数を定義します。この関数はパックされた (x,y) 座標を受け入れ、同じ形式の座標を返さなければなりません。ここで、各点の x 座標は最初の列に、各点の y 座標は 2 番目の列に入れます。
xscale = 0.3; yscale = 0.5; inversefn = @(xy) [xscale*xy(:,1), yscale*xy(:,2)];
逆マッピング関数を格納する 2 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform2d(inversefn)
tform = geometricTransform2d with properties: InverseFcn: @(xy)[xscale*xy(:,1),yscale*xy(:,2)] ForwardFcn: [] Dimensionality: 2
変換するイメージを読み取ります。
I = imread('cameraman.tif');
imshow(I)
imwarp
を使用して幾何学的逆変換を入力イメージに適用します。イメージは垂直方向に 2 (yscale
の逆数) の係数で拡大され、水平方向に 10/3 (xscale
の逆数) の係数で拡大されます。
Itransformed = imwarp(I,tform); imshow(Itransformed)
カスタムの 2 次元変換を使用したカラー イメージの変換
パックされた (x,y) 座標を受け入れる逆マッピング関数を定義します。ここで、各点の x 座標は最初の列に、各点の y 座標は 2 番目の列に入れます。この例の逆マッピング関数は、極半径成分の 2 乗を計算します。
r = @(c) sqrt(c(:,1).^2 + c(:,2).^2); w = @(c) atan2(c(:,2), c(:,1)); f = @(c) [r(c).^2 .* cos(w(c)), r(c).^2 .* sin(w(c))]; g = @(c) f(c);
逆マッピング関数を格納する 2 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform2d(g);
変換するカラー イメージを読み取ります。
I = imread('peppers.png');
imshow(I)
入力イメージと出力イメージのサイズとワールド座標範囲を指定して、imref2d
オブジェクトを作成します。
Rin = imref2d(size(I),[-1 1],[-1 1]); Rout = imref2d(size(I),[-1 1],[-1 1]);
幾何学的逆変換を入力イメージに適用します。
Itransformed = imwarp(I,Rin,tform,'OutputView',Rout);
imshow(Itransformed)
バージョン履歴
R2018b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)