在 Matlab 中连接两个 SURFPoints 数组
Concatenate two SURFPoints arrays in Matlab
假设我有两个存储在 surfP1
和 surfP2
中的 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 因为我们想要水平连接。这很奇特,因为 surfP1
和 surfP2
都是面向列的结构数组,所以 N x 1
而不是 1 x N
,所以如果你想尝试堆叠列在一起,你会想使用 cat(1,...)
但我在尝试这样做时收到一条错误消息,指定需要水平串联。这可能是因为数组是结构而不是数值数组,但我不能肯定地说。
不管怎样,参数2后面就是你要拼接的所有数组或矩阵。在这种情况下,它将是两个兴趣点结构数组。或者,您也可以使用 vertcat
来做同样的事情:
surfFinal = vertcat(surfP1, surfP2);
在这里,使用 vertcat
可以将列堆叠在一起...出于某种奇怪的原因,但它完成了工作。
假设我有两个存储在 surfP1
和 surfP2
中的 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 因为我们想要水平连接。这很奇特,因为 surfP1
和 surfP2
都是面向列的结构数组,所以 N x 1
而不是 1 x N
,所以如果你想尝试堆叠列在一起,你会想使用 cat(1,...)
但我在尝试这样做时收到一条错误消息,指定需要水平串联。这可能是因为数组是结构而不是数值数组,但我不能肯定地说。
不管怎样,参数2后面就是你要拼接的所有数组或矩阵。在这种情况下,它将是两个兴趣点结构数组。或者,您也可以使用 vertcat
来做同样的事情:
surfFinal = vertcat(surfP1, surfP2);
在这里,使用 vertcat
可以将列堆叠在一起...出于某种奇怪的原因,但它完成了工作。