首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图像骨架提取

图像骨架提取

作者头像
裴来凡
发布2022-05-29 09:52:01
发布2022-05-29 09:52:01
76800
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
from skimage import morphology,draw
import cv2
import numpy as np
import matplotlib.pyplot as plt
image=np.zeros((400,400))
image[10:-10,10:100]=1
image[-100:-10,10:-10]=1
image[10:-10,-100:-10]=1
rs,cs=draw.line(250,150,10,280)
for i in range(10):
 image[rs+i,cs]=1
rs, cs = draw.line(10, 150, 250, 280)
for i in range(20):
 image[rs + i, cs]=1
ir,ic=np.indices(image.shape)
circle1=(ic-135)**2+(ir-150)**2<30**2
circle2=(ic-135)**2+(ir-150)**2<20**2
image[circle1]=1
image[circle2]=0
img=cv2.imread("C:/Users/xpp/Desktop/Lena.png")
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
t,rst=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#二值化阈值处理
rows,cols=rst.shape
for i in range(rows):
    for j in range(cols):
        if (rst[i,j]==255):
           rst[i,j]=1 
#骨架算法
skeleton1=morphology.skeletonize(image) 
skeleton2=morphology.skeletonize(rst)
fig,(ax1,ax2,ax3,ax4)=plt.subplots(nrows=1,ncols=4,figsize=(8,4))
ax1.imshow(image, cmap=plt.cm.gray)
ax1.axis('off')
ax1.set_title('image', fontsize=20) 
ax2.imshow(rst, cmap=plt.cm.gray)
ax2.axis('off')
ax2.set_title('rst', fontsize=20)
ax3.imshow(skeleton1, cmap=plt.cm.gray)
ax3.axis('off')
ax3.set_title('skeleton1', fontsize=20)
ax4.imshow(skeleton2, cmap=plt.cm.gray)
ax4.axis('off')
ax4.set_title('skeleton2', fontsize=20)
fig.tight_layout()
plt.show()

算法:图像骨架提取是将一个连通区域细化成一个像素的宽度用于特征提取和目标拓扑表示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档