1. matlab bwboundaries 函数思想原理
只不是一个简单的问题
首先要明白这个函数是给出二值图像的边界
二值图像就是数值只有0和1两种值的图像,或者叫逻辑真或假
其边界,就是0和1数据的交接出,一般是求数据为1的区域的边界
由于图像中本身数据为一的区域可能不止一块
所以最用边界也可能不止一条,连在一起的一个全是1的区域,我们叫它做连通域
所以本身这个问题,可以分为两个子问题
第一,求图像的连通域
第二,求每个连通域的边界
这两个问题都不是简单用一两句语句就能解决的
对于第一个问题,matlab有bwlable函数标记每个连通域
而bwlable函数的具体工作代码,matlab没有给出
关键的函数的源代码,matlab是保密的,所以不确切知道其所用的算法
而具体的思想,是扫描矩阵,然后合拼互相连接的区域
你可以搜索 二值图像 连通域 看看,有很多种算法,效率各不相同,不知道matlab用的哪种
第二个问题,也不是个简单的问题
在matlab内部bwboundaties函数首先是调用bwlable解决第一个问题的
而第二个问题又调用了一个内部的不提供源代码的函数,所以具体算法也不得而知
实际上连通域问题解决后,在单一连通域上提取边界也不算太难
比较麻烦的是,在连通域中有洞的情况下,一个连通域也可能有多个边界
一个对外的边界,和若干个内部洞洞的边界
如果是有心想学习算法,最好多找资料看看。
如果只是想了解一下,尝试自己编着玩玩,没有很硬行的规定需要
还是用系统提供的现成函数好了,自己编的即便运行无误多半效率不及系统提供的