OpenCV如何实现图像细化算法


这篇文章主要介绍了OpenCV如何实现图像细化算法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇OpenCV如何实现图像细化算法文章都会有所收获,下面我们一起来看看吧。图像细化(Image Thinning),一般指二值图像的骨架化(Image Skeletonization)的一种操作运算。细化是将图像的线条从多像素宽度减少到单位像素宽度过程的简称,一些文章经常将细化结果描述为“骨架化”、“中轴转换”和“对称轴转换”。细化技术的一个主要应用领域是位图矢量化的预处理阶段,相关研究表明,利用细化技术生成的位图的骨架质量受到多种因素的影响,其中包括图像自身的噪声、线条粗细不均匀、端点的确定以及线条交叉点选定等,因而对线划图像进行细化从而生成高质量骨架的方法进行研究具有现实意义。根据算法处理步骤的不同,细化算法分为迭代细化算法和非迭代细化算法。根据检查像素方免费云主机域名法的不同,迭代细化算法又分为串行细化算法和并行细化算法。迭代算法:即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。迭代方法依据其检查像素的方法又可以再分成:串行算法:在串行算法中,通过在每次迭代中用固定的次序检查像素来判断是否删除像素,在第n次迭代中像素p的删除取决于到执行过的所有操作,也就是必须在第(n-1)次迭代结果和第n次检测像素的基础之上进行像素删除操作;即是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况。并行算法:在并行算法中,第n次迭代中像素的删除只取决于(n-1)次迭代后留下的结果,因此所有像素能在每次迭代中以并行的方式独立的被检测;即像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代效果。细化算法有ZS算法和查表法。ZS细化算法是一种基于8领域的并行细化算法,通过对目标像素8领域进行分布的算术逻辑运算,来确定该像素是否能删除。八领域如下图所示。细化判断依据为:内部点不能删除、孤立不能删除、直线端点不能删除。
ZS细化过程如下:第一次迭代,若P1满足以下四个条件,说明P1为边界点,可以删除,将P1值设为0:
(1)2 小于等于 Pi从i=2到i=9的和 小于等于6
(2)S(P1)=1;
(3)P2P4P6=0;
(4)P4P6P8=0;条件(1)中若P2至P9的和在2至6之间,说明P1为边界点。S(P1)表示目标像素P1的8邻域中,顺时针变化一周像素由0变1的次数。在目标点8邻域P2-P9的范围内,像素值由0变1的次数只能为1次。条件(2)保证了图像细化后的连通性。
第二次迭代中,像素点如果满足第一次迭代中的条件(1)和(2)及以下条件,则移除该像素点:(5)P2P4P8=0;
(6)P2P6P8=0;重复以上迭代过程,直至处理完所有像素点,此时细化完成。
查表法中,由于输入的图像是一张二值图,将其归一化为像素值只有0和1的图像,然后对其进行卷积操作。具体卷积操作为:将目标点的八领域和卷积进行点乘,接着将所有值相加即可得表的索引M,下一步用索引值M去找表中对应的值,对应的值为0或1,就把目标点的像素值修改为0或1,其中1为不可删除点,0位可删除点。重复上述步骤,遍历完所有像素点,对目标点进行查表、修改目标像素值,最后得到细化结果。细化前细化后关于“OpenCV如何实现图像细化算法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“OpenCV如何实现图像细化算法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: vue-router的导航守卫怎么使用

这篇文章主要介绍了vue-router的导航守卫怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue-router的导航守卫怎么使用文章都会有所收获,下面我们一起来看看吧。在浏览器中点击链接实现导航的方式,叫做声明式导航。…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 03/26 17:14
Next 03/26 17:14

相关推荐