1

MATLAB (R2010a) に 2 つの画像 (Image1 と Image2)を登録した後、正しい翻訳を取得する方法がわかりません。このアルゴリズムはテスト済みで、他のプログラムと連携して動作します。関連するスニペットをいくつか示します。

TForm = maketform('affine', Transform);

info = imfinfo('Image1.bmp');

Reg = imtransform(Image1, TForm,...
           'XData', [1 (size(Image1,2)+Transform(3,1))],...
           'YData', [1 (size(Image1,1)+Transform(3,2))],...
           'FillValues', 255);

figure('Name', 'Reg'),...
imshow(Reg, 'InitialMagnification', 250);

imwrite(Reg, 'Reg.bmp', 'bmp');

hold on

H = imshow(Image2, gray(256));
set(H, 'AlphaData', 0.6)

これは、Image1 を Image1 に登録した場合には発生せず、Image1 を Image2 に登録しようとした場合 (またはその逆) にのみ発生します。私はCで作られた同じコードを持っていますが、うまくいくようです。私はそれが私の機能と関係があると信じていimtransformます。

まあ、私はそれが変換が適用されている方法で何かをしなければならないと信じています. Image1 から Image1 (質量の中心を中心に15 度回転) を直接登録しましたが、正しい変換が行われません。変換出力は次のとおりです。

Transform =

0.9676   -0.2557         0
0.2596    0.9694         0
32.7217  -25.5110    1.0000

これを画像登録プログラムに入力すると、問題なく動作します。ここに私が今行った画像の例があります、

奇妙な MATLAB 登録の例

A = 元の画像、B = 回転した元の画像、C = 変換された元の画像。

ここでも、変換は正しいです (FMRIB の FLIRT 登録ソフトウェアを使用してテストされています)。画像に適用するとき、MATLAB は別のことをしているに違いありません。

4

1 に答える 1

1

回転行列の符号が逆になっています。

于 2012-07-20T19:00:25.257 に答える