0

我有一组来自图像 1、I1 的点 (x1,y1),以及来自图像 2、I2 的另一组点 (x2,y2)。
我想首先将两个图像按 newI = [I1 I2] % 两倍宽
然后,在新图像上,我想从 (x1,y1) 到 (x2,y2) 绘制点。

问题是点集是基于其原始图像而不是相邻图像。
那么,如何将 (x1,y1) 和 (x2, y2) 中的点转换为新图像上的点?

然后,我如何在这些点之间画线。我不太确定如何使用 matlab 绘图

即 (x11,y11) -> (x21,y21) 一直到 (x1i,y1i) -> (x2i, y2i) 第 i 个点

4

1 回答 1

1

如果我理解正确(x1, y1)是图像上的点索引I1。Matlab 以相同的顺序表示图像像素。因此,图像x1中从左y1到上的点位于 index 处(x1, y1)

现在,当您通过 连接图像时[I1 I2],它与将第二张图像定位在第一张图像的右侧相同。这会将第二张图片向左平移第一张图片的宽度,这是第一张图片的列数,可以通过size(I1,2).

要考虑这种转变,您需要为第二张图像添加适当的转变。

(x2, y2) --> (( x2 + size(I1,2) ), y2 )

请注意,我们不需要移动y2,因为图像的高度相同。此外,如果您有多个需要绘制的点,建议将图像尺寸保存在单独的变量中。

我猜你正在使用符号(x11, y11)(x21, y21)指代点(x1, y1)(x2, y2)相邻的图像。

(x1, y1)从到画一条线(x2, y2),假设a1 = [x1, y1]a2 = [x2, y2],那么你可以说plot([a1(1), a2(1)], [a1(2), a2(2)])。这可以改进,但我需要知道你如何存储积分。

于 2012-11-03T13:59:50.457 回答