我觉得这应该是微不足道的,但我有最困难的时间转换一个4路连接边界链码到8路。例如,如果我有一个边界链码(32323232333000101010),并想把它转换成8路,我会删除一些多余的像素通过插入5。我可以清楚地看到不必要的像素当我画出来,但我正在寻找的实际模式,以便我可以编码它。谢谢
发布于 2020-02-06 14:44:54
由于定义链码的方法不同,让我们假设4连接的链码使用0表示向右的一步,1用于向上的一步,2用于向左的一步,而8连通的链码也使用0表示向右的一步,1用于向右的一步,2用于向上的一步,等等。
让我们也假设链码通过顺时针跟踪来编码封闭的边界。
第一步是将每个4-连接的步骤转换为一个8连接的步骤,这一步骤只需乘以2 (0->0,1->2,2->4,3->6)即可完成。
第二步是简化四个相连的步骤,形成直角并产生轮廓的凹部;这些步骤必须用对角线台阶代替。
例如,一步右(0)跟一步下来(6)将是凸的,并且应该保持,但是一步右(0)后面的一步向上(2)将是凹的,并且应该被一步右向上(1)所代替。结果表明: 02->1,24->3,46->5,60->7.
我在DIPlib库中实现了这一点,您可以看到代码论GitHub。
https://stackoverflow.com/questions/60089880
复制相似问题