4

在骨架过程中是否可以删除小分支?

如这张图片: http: //felix.abecassis.me/wp-content/uploads/2011/09/skel_opencv.png

只有 O 字母是完美的,但不是所有其他字母。

在过程中或之后有办法删除这个小分支吗?我使用 python opencv,但也可以使用 pymorph 或 scikit-image 的解决方案。这是我用于骨架化的代码: 代码

原图: http: //felix.abecassis.me/wp-content/uploads/2011/09/opencv.png

4

2 回答 2

4

这是scikit-image的结果:

from skimage import io
from skimage import morphology

image = io.imread('opencv.png')
out = morphology.skeletonize(image > 0)

skimage骨架

于 2013-04-02T19:03:22.773 回答
-1

Scikit 图像具有骨架化和细化,可能有助于完成您想要的。

lee 版本的skeletonize 比单独的skeleton 更有效地细化了边缘骨架特征。

Thin 使您能够对图像进行部分骨架化。您可以先进行部分变薄,然后进行扩张或打开操作,以获得接近形态修剪的东西(https://en.wikipedia.org/wiki/Pruning_(morphology))。

这里有 scikit 骨架工具的示例:https ://scikit-image.org/docs/dev/auto_examples/edges/plot_skeleton.html

from skimage.morphology import skeletonize
from skimage import data
import matplotlib.pyplot as plt
from skimage.util import invert

# Invert the horse image
image = invert(data.horse())

# perform skeletonization
skeleton = skeletonize(image)
skeleton_lee = skeletonize(image, method='lee')

# display results
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(8, 4),
                         sharex=True, sharey=True)

ax = axes.ravel()

ax[0].imshow(image, cmap=plt.cm.gray)
ax[0].axis('off')
ax[0].set_title('original', fontsize=20)

ax[1].imshow(skeleton, cmap=plt.cm.gray)
ax[1].axis('off')
ax[1].set_title('skeleton', fontsize=20)

ax[2].imshow(skeleton_lee, cmap=plt.cm.gray)
ax[2].axis('off')
ax[2].set_title('skeleton lee', fontsize=20)

fig.tight_layout()
plt.show()

在此处输入图像描述

于 2021-02-01T18:35:47.617 回答