2

通常,我们可以通过以下方式获取图像中的点位置:

figure, imshow rice.png;
[x,y,~] = ginput(1)

返回的是这样的:

x = 121
y = 100

这些数字是按像素衡量的,但我想要更准确的结果,例如:

x = 121.35
y = 100.87

任何帮助将不胜感激!!!

4

2 回答 2

2

对于使用控制点对齐/注册两个图像,您确实需要不同控制点的亚像素精度。
Matlab 有一个非常好的用户界面,你可能想看看:cpselect. 这里
也提供了一个不错的教程。

给定两个图像oim1oim2您可以使用它cpselect来转换oim2为 "fit" oim1

>> [input_points, base_points] = cpselect(oim2, oim1, 'Wait', true);
>> T = cp2tform( input_points, base_points, 'similarity' ); % find similarity transformation
>> aim2 = tformarray( oim2, T, makeresampler('cubic','fill'), [2 1], [2 1], size(oim1(:,:,1)'), [], 0 );
于 2013-08-11T09:18:10.800 回答
2

我认为imagesc可能有用

% load example image    
Istruct = load('gatlin');    
I = Istruct.X./max(Istruct.X(:));

% display it
figure;
imagesc(I);
colormap(gray);

% get some point
[x,y]=ginput(1);

[x, y] % x and y will be double
于 2013-08-12T04:41:14.677 回答