【问题标题】:Get coordinates of inlier points in Matlab在Matlab中获取内点坐标
【发布时间】:2015-06-14 08:38:20
【问题描述】:

我需要找到使用impixel() 在对象检测中获得的内点的像素值。我使用的代码与link 的示例中提供的代码相同

如何获得相对于图像尺寸的内点的 x,y 坐标。(图像的左上角被视为0 行,0 col)以便我可以使用坐标来查找它们各自的像素值。我在 Matlab 中找不到任何与 C++ 中的 KeyPoint 对象相同的解决方案,可以轻松提供坐标值。

【问题讨论】:

  • 输入什么图片?什么是内点? (某些特征的巨大差异或与其他图像匹配的点?)如果您已经拥有它们所在坐标系中的坐标(如果不在图像坐标中)?
  • 训练图像和查询图像都是 24 位 RGB 图像。

标签: matlab image-processing coordinates pixels matlab-cvst


【解决方案1】:

这里不需要impixelimpixel 让您从图中显示的图像中获取像素值,这不是您想要做的。

在您使用的示例中,inlierBoxPointsinlierScenePoints 是 SURFPoints 对象。您可以获得点的 (x,y) 位置为inlierBoxPoints.Location。那么就可以得到第i个点的像素值如下:

loc = round(inlierBoxPoints.Location(i, :));
pixVal = boxImage(loc(2), loc(1), :);

请记住,在 MATLAB 中,图像被索引为 (row, col),并且左上角像素是 (1,1),而不是 (0,0)。您必须对坐标进行四舍五入,因为这些点是以亚像素精度检测的。

【讨论】:

  • 感谢您的回答。我尝试过这个。我收到一个错误“下标索引必须是真正的正数或逻辑”。在这里,“loc”是否包含坐标为 [x,y]。另外,由于有多个内点,我是否需要使用 for 循环。
  • 我已经编辑了答案以解释您应该四舍五入坐标。如果要避免使用循环,可以使用sub2ind 函数将行列下标转换为线性索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多