使用matlab -'fitgeotrans'功能进行控制点注册

时间:2014-10-01 11:37:25

标签: matlab

我是Matlab的新手,我正在尝试使用他们的指南进行控制点注册:http://www.mathworks.com/help/images/point-mapping.html

它工作正常,直到'fitgeotrans'函数我得到一个错误说: '未定义的函数或变量'input_points'。

我阅读了Matlab帮助,之前的“cpselect”函数给了我两个nX2数组,其坐标在两个数组变量“input_points”和“base_points”中保存(通过'cpselect'函数)。所以,我真的不明白为什么下一个函数不能“看到”它们并认为它们是“未定义的”。

我的代码附在下面。谢谢你的帮助。

function [Y] =EBL

ReferenceImg=imread('GFI.jpg');                          %This is the fixed image
CroppedImg=imcrop(ReferenceImg);                         %Crop the image
close                                                    %close the imcrop window
ResizedIReferenceImg= imresize(CroppedImg,[1000 1000]);  %re-size the fixed image

t=imagesc(ResizedIReferenceImg);                         %Set transparency of fixed image
set(t,'AlphaData',0.5);
hold on

I = imread('GF.bmp');                                    %This is the moving picture
MovingImg = imrotate(I,-5,'nearest','crop');             % Rotate the moving picture cw 

ResizedMovingImg= imresize(MovingImg,[1000 1000]);       %re-size the moving image
h=imagesc(ResizedMovingImg);                             %Set transparency of moving image
set(h,'AlphaData',0.6);
close

cpselect(ResizedMovingImg,ResizedIReferenceImg);         %Alignment
tform = fitgeotrans(input_points,base_points,'NonreflectiveSimilarity');

1 个答案:

答案 0 :(得分:3)

问题是,默认情况下,MATLAB在等待cpselect之前没有等待你完成。因此,在您有机会实际选择任何点之前,它只会从cpselect移至tform,此时input_points尚不存在。您必须设置Wait参数,这样做也会影响输出。在Wait开启的情况下,请拨打cpselect这样的内容:

[input_points,base_points] = cpselect(MovingImg,ReferenceImg,'Wait', true);

以这种方式调用cpselect时,您将没有“导出点到工作区”选项。相反,当input_points,base_points窗口关闭时,选定的点将输出到变量cpselect