matlab bwboundaries 函数思想原理

2024-05-04 17:44

1. matlab bwboundaries 函数思想原理

只不是一个简单的问题
首先要明白这个函数是给出二值图像的边界
二值图像就是数值只有0和1两种值的图像,或者叫逻辑真或假
其边界,就是0和1数据的交接出,一般是求数据为1的区域的边界

由于图像中本身数据为一的区域可能不止一块
所以最用边界也可能不止一条,连在一起的一个全是1的区域,我们叫它做连通域
所以本身这个问题,可以分为两个子问题
第一,求图像的连通域
第二,求每个连通域的边界

这两个问题都不是简单用一两句语句就能解决的
对于第一个问题,matlab有bwlable函数标记每个连通域
而bwlable函数的具体工作代码,matlab没有给出
关键的函数的源代码,matlab是保密的,所以不确切知道其所用的算法
而具体的思想,是扫描矩阵,然后合拼互相连接的区域
你可以搜索 二值图像 连通域 看看,有很多种算法,效率各不相同,不知道matlab用的哪种

第二个问题,也不是个简单的问题
在matlab内部bwboundaties函数首先是调用bwlable解决第一个问题的
而第二个问题又调用了一个内部的不提供源代码的函数,所以具体算法也不得而知
实际上连通域问题解决后,在单一连通域上提取边界也不算太难
比较麻烦的是,在连通域中有洞的情况下,一个连通域也可能有多个边界
一个对外的边界,和若干个内部洞洞的边界

如果是有心想学习算法,最好多找资料看看。
如果只是想了解一下,尝试自己编着玩玩,没有很硬行的规定需要
还是用系统提供的现成函数好了,自己编的即便运行无误多半效率不及系统提供的

matlab bwboundaries 函数思想原理