Image 如何使用matlab在输入图像上绘制关键点?
这个问题是关于SIFT特性及其在MATLAB中的使用。我有一些数据包含以下信息:Image 如何使用matlab在输入图像上绘制关键点?,image,matlab,image-processing,sift,keypoint,Image,Matlab,Image Processing,Sift,Keypoint,这个问题是关于SIFT特性及其在MATLAB中的使用。我有一些数据包含以下信息: 每个特征点的x,y坐标 每个特征点的比例 每个特征点的方向 每个特征点的描述符向量。每个向量有128个分量 我在将关键点绘制到相应的输入图像时遇到问题。有人知道怎么做吗?有没有我可以使用的内置函数 非常感谢。如果您只想显示点本身,请将x和y坐标读入单独的阵列,然后显示图像,使用按住命令,然后绘制点。这将在图像顶部覆盖您的点 假设这些坐标已经可用并存储为x和y,并且假设图像可用并存储为im,则可以执行以下操作: i
x,y
坐标非常感谢。如果您只想显示点本身,请将
x
和y
坐标读入单独的阵列,然后显示图像,使用按住
命令,然后绘制点。这将在图像顶部覆盖您的点
假设这些坐标已经可用并存储为x
和y
,并且假设图像可用并存储为im
,则可以执行以下操作:
imshow(im);
hold on;
plot(x, y, 'b.');
请记住,x
坐标是水平的,从左到右递增。y
坐标是垂直的,从上到下递增。坐标原点位于左上角,位于(1,1)
但是,如果您想显示检测窗口、它的大小和描述符的方向,那么建议您查看VLFeat
库,因为它有一个很好的函数可以为您执行此操作
Rafael Monteiro的建议(见下文评论)
还可以修改每个点,使其反映检测到的比例。如果要以这种方式执行此操作,请假定已将刻度保存为另一个名为scales
的数组。之后,尝试执行以下操作:
imshow(im);
hold on;
for i = 1 : length(x)
plot(x(i), y(i), 'b.', 'MarkerSize', 10*scales(i));
end
10
的常数因子是非常任意的。我不确定用于检测关键点的比例有多少,因此如果比例为1.0,则打印时将以默认大小显示关键点。玩数字游戏,直到你得到满意的结果。但是,如果规模对您来说并不重要,那么第一种方法就可以了。我假设您的意思是SURF
,因为MATLAB没有提供SIFT
的实现。您是否尝试过surfPoints.plot
方法。如果您没有使用SURF
,您使用哪个库生成SIFT
点?您好,SIFT点在.SIFT文件中给出。因此,我们的任务是将.sift文件加载到matlab中。n从那里将关键点绘制到输入图像上。好的,如果您只想显示点位置本身,这很容易。我将提供一个答案。建议:为每个点的比例向量设置'MarkerSize'
参数。