opencv2实现形态学骨架提取

来源:互联网 发布:查看linux版本 编辑:程序博客网 时间:2024/05/02 00:12

因为opencv2中没有形态学骨架提取算法的实现,于是准备在opencv2上实现一个。

首先介绍下骨架提取算法,冈萨雷斯的书上已经说的很清楚了,我再重复一下。

集合A的骨架可以用腐蚀和开操作来表达, 即骨架可以表示为

其中,

式中,B是一个结构元,而    表示对A的连续k次腐蚀:

K是A被腐蚀为空集前的最后一次迭代步骤。换句话说,

其中AB表示用B结构原腐蚀A,   

表示开运算


实现步骤:opencv2中已经有了腐蚀函数, 开运算函数,而骨架提取可以表示为有限次腐蚀,开运算操作,只需按照公式码上去就行了,过程比较简单。

这里,我借用了opencv2这些操作,另外要注意的是求集合并集时,可以直接使用Mat 重载后的运算 “|”操作 ,集合相减时也可直接使用Mat的“-”操作。


Mat a, b, c;a = imread("src1.jpg");b = imread("src2.jpg");c = a - b;c = a | b;

下面是使用3*3正方形模板提取的骨架


当我换成3*3十字模板就变成下面这样了


下面两幅图是“真正”的骨架提取



下面是完整的代码下载地址

http://download.csdn.net/detail/dingjiansw101/9544038

0 0
原创粉丝点击