一种快速细化算法
Posted
技术标签:
【中文标题】一种快速细化算法【英文标题】:A fast thinning algorithm 【发布时间】:2011-11-10 13:41:46 【问题描述】:我正在寻找一种可以使用 OpenCV 轻松实现的快速细化算法。提到这个库是因为有些事情可以在短时间内完成,比如 Mathematica 或 MATLAB,这需要 OpenCV+C 中的手写代码行。
算法必须满足 1 像素的厚度和连通性标准。
有没有人在实现大量可用算法中的一种方面有经验? - 从字面上看,谷歌抛出的论文数量之多让人难以选择。任何指向正确方向的指针都可以。
【问题讨论】:
“有没有人有经验”类型的问题往往得不到很好的回答:您有更具体的问题吗? @Autopulated:确实如此,但是我 am 提出了一些模糊的问题 - 有很多快速细化算法,问题是有没有人使用 OpenCV 和 C/ C++? 你好@AruniRC,你终于得到一些满意的实现了吗? 【参考方案1】:请查看我博客中的一些细化实现:
-
Zhang-Suen algorithm。 (copy on archive.org)
Guo-Hall algorithm。 (copy on archive.org)
两者都使用 OpenCV 2.x API。
【讨论】:
终于。我最终使用了张素,但很好的答案。 你应该知道你在帖子中的实现是错误的。它将沿远边缘处理图像外部。 @flowfree 为什么你的博客关闭了。这是一个很好的参考页面。【参考方案2】:为了完整起见,我在这里发布了一组使用 OpenCV 和 C/C++ 实现的细化算法,这些算法是我在回答 this 问题时在网上发现的。这些已经充分回答了我需要的这个问题。将它们放在这里以防其他人有类似要求。
-
OpenCV code for thinning(Guo 和 Hall 算法,适用于 CvMat 输入)
The JR Parker implementation 使用 OpenCV
可能更高效的代码here(大量使用 OpenCV 优化的访问方法,但是大部分页面都是日文的!)
【讨论】:
实际上,第三个运行速度确实比@flowfree 的两个答案慢【参考方案3】:我用过张素,也用过国堂;两者都产生了令人满意的结果,但不是最好的。然后我尝试了 Y. Y. ZHANG 和 P.S.P Wang 的“A Modified Parallel Thinning Algorithm”。它比前两种算法要好得多。任何寻找好的细化算法的人都应该尝试一下,因为它比其他两个更快、更有效。
【讨论】:
您是否找到任何解释此修改的实现或文章?你能详细说明它的速度有多快吗? 如果您下载研究论文并阅读它们,您会注意到张王方法仅进行一次迭代,此外,它还有一些不同的条件需要检查。我处理了大小为 1600 * 1200 的二进制图像。大约花了。 Zhang-Suen 大约需要 5 秒。 Zhang-Wang 方法需要 3 秒。 嗨 Vikramjit,您能分享一下实现或描述您如何结合最后两个条件吗?我阅读了这篇论文,但不知道如何将条件 p11=1、p6=0 与条件 p8=0、p15=1 结合起来用于修改后的细化算法。【参考方案4】:不确定这是否会对您有所帮助,但我使用过这个库并发现它非常有用(包括细化/骨架化)。你可以在这里下载源代码:
http://www.aforgenet.com/framework/
这里有一篇很好的文章:
http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx
【讨论】:
以上是关于一种快速细化算法的主要内容,如果未能解决你的问题,请参考以下文章