0

我有一个矩阵 A 代表一个 640x480 图像和另一个矩阵 index_matrix ,其中包含一些索引,如下所示:

[1  639;
212 210;
213 208;
214 209;
215 211;
216 210;
217 211];

第一个 col 对应于 martix A 中的行索引,第二个 col 对应于矩阵 A 中的 col 索引,因此 index_matrix 中的每一行代表一个像素在 martix A 中的索引,例如上例中的第一行index_matrix 表示位于 row_1 col_639 中的像素的索引。所以我只想连接在 index_matrix 中找到的 martix A 的点,这些点的每个点都将连接到 index_matrix 中最近的另外两个点。这就像在这些点之间构建一棵树或一张图。这样连接两个点的该图的边应绘制在值大于零的像素上,因此如果值等于零的像素位于边路径中,则不会构造连接两个点的边,并且两个点不会连接。所以如图所示图如果在 index_matrix 中的像素 A、B 和 C 的索引以及 A 和 B 将连接,则 B 和 C 将连接,而 A 和 C 将不会连接,因为在构建边缘的路径时将通过零值像素“圈起来”。所以我问是否有人可以请教我该怎么做?

4

1 回答 1

1

使用该plot命令在图像上的两点之间画一条线。您可以做的是存储原始图像(例如I)并继续在另一张图像上绘图(例如C)。

假设我们从第二点开始(212,210)。然后我们需要两行,(212,210) - (1,639)(212,210) - (213,208)。让我们看看第一行。

您可以计算两点之间线段上的离散点,也可以使用该plot函数将其绘制在空白图像上,例如M = zeros(size(I));. 现在,M(对于蒙版)将只有在绘制线条的地方有白色像素。

然后,您可以将其设为逻辑掩码 ( M == 255) 并检查原始图像中是否有任何零I对应trueM.

更新:由于每次使用蒙版的方法有点蹩脚,并且使用直线方程和离散化不是画线的最佳方法,我建议使用该bresenham函数获取在线点的列表部分。您可以轻松地检查这些值并决定是否保留线路而不会弄乱掩码。

于 2013-08-02T19:55:27.823 回答