我正在使用图像处理工具箱在 MATLAB 中编写一段代码,我在其中使用 Skel=bwmorph(BM,'skel') 来获取河流的骨架。我想使用 BP=bwmorph(Skel,'branchpoints') 来获取汇流点和支流点。每当骨架看起来像我在 BP 中得到很多误报
oQo
Q
o
它还将 Q 像素标记为分支点,以及实际的、预期的分支点。有很多这样的误报。
我注意到真正的分支点在 BP 中作为一个孤立的像素出现,而错误的分支点总是成对形成。
谁能告诉我分支点算法是如何找到点的?如果我知道这一点,我就可以确信存在误报成对而真阳性单独存在的实际原因,而不是幸运的巧合。
我感觉它着眼于像素周围的 8 连通性,但我认为这还不是全部。
为了澄清,我标记了输出的裁剪图像。它给出的积极因素以红色显示。可以看出,这些像素中只有一个实际上是分支点。我想知道该算法是如何工作的,以便我可以给出一个合乎逻辑的理由来解释为什么误报成对出现(如果它们确实成对出现的话)。
The image
你的像素不是最小(8-)连接,尝试使用
Thin = bwmorph(Skel,'thin');
BP = bwmorph(Thin,'branchpoints');
去除不需要的像素。 (您也可以使用 thin 而不是 skel)。
我认为如果至少 3 个像素(不包括中心)为“1”,则分支点的基本算法会查看 3,3 个邻域像素。
我是一名优秀的程序员,十分优秀!