如何提高使用 medial_axis 制作的骨架的质量

Posted

技术标签:

【中文标题】如何提高使用 medial_axis 制作的骨架的质量【英文标题】:how to improve quality of skeleton made with medial_axis 【发布时间】:2021-12-15 19:46:15 【问题描述】:

我正在尝试使用 medial_axis 制作图像的骨架,但由于某种原因,结果非常混乱

有人知道我该如何改进它吗?

我也尝试过使用skeletonize,skeleton 本身看起来更好,但这并不是我想要的。

import matplotlib.pyplot as plt
from skimage.io import imread
from skimage.filters import threshold_otsu
from skimage.morphology import medial_axis

def Get_binary(image):    
    thresh = threshold_otsu(image)
    binary = image > thresh
    return binary


def Skeletonize_img():

    im = Get_binary(imread('image_bin.png'))
    im_ax = medial_axis(im)

    fig, axes = plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True,
                        figsize=(8,8))

    ax = axes.ravel()

    ax[0].imshow(im, cmap=plt.cm.gray)
    ax[0].set_title('binary image')
 
    ax[1].imshow(im_ax, cmap=plt.cm.gray)
    ax[1].set_title('medial axis')
    

    plt.tight_layout()
    plt.show()  


Skeletonize_img()

【问题讨论】:

【参考方案1】:
from skimage import img_as_bool, io, color, morphology
import matplotlib.pyplot as plt

image = img_as_bool(color.rgb2gray(io.imread('image_bin.png')))
out = morphology.medial_axis(image)

f, (ax0, ax1) = plt.subplots(1, 2)
ax0.imshow(image, cmap='gray', interpolation='nearest')
ax1.imshow(out, cmap='gray', interpolation='nearest')
plt.show()

在图片周围添加黑色边框也会有所帮助

【讨论】:

以上是关于如何提高使用 medial_axis 制作的骨架的质量的主要内容,如果未能解决你的问题,请参考以下文章

python数字图像处理(19):骨架提取与分水岭算法

如何修复对象具有未应用的转换。这对于带有骨架的网格永远不起作用。出口取消

使用着色器为网格设置动画

如何制作*** QWidget 模态?

blender 绘制离散顶点, SMPL骨架绘制

blender 绘制离散顶点, SMPL骨架绘制