gpt4 book ai didi

algorithm - 弗里曼链码无限循环[4-邻接]

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:33 39 4
gpt4 key购买 nike

我正在尝试使用图中所示的符号在 matlab 上实现 Freeman Chain Code [4 adjacency]: 4 adjacency

我的代码为我测试过的多个小矩阵提供了正确的链码。但是,当我在我的实际图像文件上运行代码时,我遇到了一些连接组件的无限 while 循环。我的意思是无限循环,它不会只在两点之间循环,而是会继续遍历组件而不会到达起点。

我会在这里解释这个方法。

我的连通分量是4邻接的,所有像素在矩阵中都被标记为“标签”。
我从组件最左上角的第一个像素 (x,y) 开始,并使用以下规则遍历:我最初的遍历 (xT,yT) 是从左到右的。 horDir = 0,因为 0 代表右边。

while(true)
if (horDir == 0)
go UP, or RIGHT, or DOWN, or LEFT (adjust x,y)
if (went LEFT)
horDir = 2
else
go DOWN, or LEFT, or UP, or RIGHT (adjust x,y)
if (went LEFT)
horDir = 0
if (xT,yT == x,y)
break;

当我决定在任何位置移动时,我确保我的最后一个移动不是相反的,以避免无限循环。例如,如果我通过 0 移动到达 (x,y),我的代码确保我在检查 1 和 3 移动后进行 2 移动,所以我认为这不是导致我进入无限循环的原因。

如果我想要实现的目标有歧义,我会尝试这样做: enter image description here

如有任何见解,我们将不胜感激。如果需要,我可以发布我的完整代码,但是阅读起来会非常乏味。

最佳答案

按照所示的算法in this answer to a somewhat related question ,在 my blog here 上有进一步描述.

它执行 8 连接链代码,但很容易将该代码调整为 4 连接链。

关于algorithm - 弗里曼链码无限循环[4-邻接],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001899/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com