Image 如何使用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

这个问题是关于SIFT特性及其在MATLAB中的使用。我有一些数据包含以下信息:

  • 每个特征点的
    x,y
    坐标
  • 每个特征点的比例
  • 每个特征点的方向
  • 每个特征点的描述符向量。每个向量有128个分量
  • 我在将关键点绘制到相应的输入图像时遇到问题。有人知道怎么做吗?有没有我可以使用的内置函数


    非常感谢。

    如果您只想显示点本身,请将
    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'
    参数。