这个问题与SIFT功能及其在MATLAB中的使用有关。我有一些包含以下信息的数据:
x,y
坐标我在将关键点绘制到相应的输入图像上时遇到问题。有没有人知道如何做到这一点?我可以使用任何内置函数吗?
非常感谢。
答案 0 :(得分:1)
如果您只想自己显示这些点,请将x
和y
坐标读入单独的数组,然后显示图像,使用hold on
命令,然后绘制要点。这会将您的点叠加在图像上方。
假设您已将这些坐标提供并存储为x
和y
,并假设您的图像可用并存储为im
,则可以执行以下操作:
imshow(im);
hold on;
plot(x, y, 'b.');
请记住,x
坐标是水平的,并且从左到右增加。 y
坐标是垂直的,从上到下增加。坐标的原点位于左上角,位于(1,1)
。
但是,如果你想显示检测窗口,它的大小和描述符的方向,那么建议你看看VLFeat
库,因为它有一个很好的功能为你做到这一点
您还可以修改每个点,使其反映检测到的比例。如果您想这样做,假设您已将比例保存为另一个名为scales
的数组。之后,尝试执行以下操作:
imshow(im);
hold on;
for i = 1 : length(x)
plot(x(i), y(i), 'b.', 'MarkerSize', 10*scales(i));
end
10
的常数因子非常随意。我不确定您使用多少比例来检测关键点,因此如果比例为1.0,那么在绘图时这将显示默认大小的关键点。玩这个号码,直到你得到满意的结果。但是,如果缩放对您无关紧要,第一种方法就可以了。