如何在图像中获得更准确的点位置

时间:2013-08-11 08:06:05

标签: image matlab image-processing computer-vision

通常,我们可以通过这种方式在图像中获得点位置:

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

返回的内容是这样的:

x = 121
y = 100

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

x = 121.35
y = 100.87

任何帮助都会得到帮助!!!

2 个答案:

答案 0 :(得分:2)

为了使用控制点对齐/注册两个图像,您需要对不同控制点使用子像素精度 为此,Matlab有一个非常好的用户界面,您可能需要查看:cpselect 还有一个很好的教程here

如果有两张图片oim1oim2,您可以使用cpselectoim2转换为“适合”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 );

答案 1 :(得分: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