在 Matlab 中连接两个 SURFPoints 数组

Concatenate two SURFPoints arrays in Matlab

假设我有两个存储在 surfP1surfP2 中的 SURFPoints 数组。有什么方法可以将这两个数组连接在一起作为一个整体吗?我看到那里有一个函数 cat,但我没有在文档中找到如何使用它。

完全正确。使用 cat。下面是一个使用图像处理工具箱中的图像的示例。我将使用摄像师图像,并将其旋转 55 度。我们将检测两个图像的 SURF 点,然后将它们堆叠在一起:

im = imread('cameraman.tif');
im2 = imrotate(im, 55);
surfP1 = detectSURFFeatures(im);
surfP2 = detectSURFFeatures(im2);
surfFinal = cat(2, surfP1, surfP2);

points_final会将两个兴趣点结构体数组堆叠在一起成为一个结构体数组。 cat 的第一个参数是您要操作以连接所需内容的维度。在我们的例子中,我们选择 2 因为我们想要水平连接。这很奇特,因为 surfP1surfP2 都是面向列的结构数组,所以 N x 1 而不是 1 x N,所以如果你想尝试堆叠列在一起,你会想使用 cat(1,...) 但我在尝试这样做时收到一条错误消息,指定需要水平串联。这可能是因为数组是结构而不是数值数组,但我不能肯定地说。

不管怎样,参数2后面就是你要拼接的所有数组或矩阵。在这种情况下,它将是两个兴趣点结构数组。或者,您也可以使用 vertcat 来做同样的事情:

surfFinal = vertcat(surfP1, surfP2);

在这里,使用 vertcat 可以将列堆叠在一起...出于某种奇怪的原因,但它完成了工作。