OpenCV 例程200篇 总目录

【youcans 的 OpenCV 例程 300篇】224. 特征提取之提取骨架

目标特征的基本概念

通过图像分割获得多个区域,得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标,目标所处的区域就是目标区域。
特征通常是针对于图像中的某个目标而言的。图像分割之后,还要对目标区域进行适当的表示和描述,以便下一步处理。
“表示”是直接具体地表示目标,以节省存储空间、方便特征计算。目标的表示方法,有链码、多边形逼近(MPP)、斜率标记图、边界分段、区域骨架。
“描述”是对目标的抽象表达,在区别不同目标的基础上,尽可能对目标的尺度、平移、旋转变化不敏感。

提取骨架

骨架与目标区域的形状有关。

骨架可以由区域的边界计算。提取骨架的常用方法是用重建开运算来实现,在保持端点和线的连通性的同时持续细化目标区域。

S ( A ) = ⋃ k = 0 K S k ( A ) S k ( A ) = ( A ⊖ k B ) − ( A ⊖ k B ) ∘ B S(A) = \bigcup ^K_{k=0} S_k(A)\\ S_k(A) = (A \ominus kB) - (A \ominus kB) \circ B S(A)=k=0⋃K​Sk​(A)Sk​(A)=(A⊖kB)−(A⊖kB)∘B

基于重建开运算的提取骨架算法步骤如下:

(1)对图像进行腐蚀,腐蚀后的物体变得更窄细;
(2)对腐蚀后图像做开运算,开运算处理时被删除的像素就是骨骼的一部分,将其添加骨骼图像;
(3)重复以上过程,直到图像被完全腐蚀。

skimage 中提供了函数 skimage.morphology.skeletonize 可以获取图像的骨骼。

例程 12.13:特征提取之提取骨架

例程的图像来自 R.C.Gonzalez 《数字图像处理(第四版)》P598-599 例11.5。原始图像是分割后的血管图像,过连续细化获得了图像的骨架。

    #  12.13 特征提取之提取骨架img = cv2.imread("../images/bloodvessels.tif", flags=1)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 灰度图像_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)dst = binary.copy()skeleton = np.zeros(gray.shape, np.uint8)  # 创建空骨架图kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))while (True):dst = cv2.erode(dst, kernel, None, None, 1)  # 腐蚀opening = cv2.morphologyEx(dst, cv2.MORPH_OPEN, kernel)  # 开运算subSkeleton = cv2.subtract(dst, opening)  # 获得骨架子集skeleton = cv2.bitwise_or(skeleton, subSkeleton)  # 将删除的像素添加到骨架图if cv2.countNonZero(dst) == 0:breakresult = cv2.bitwise_xor(gray, skeleton)plt.figure(figsize=(9, 6))plt.subplot(131), plt.axis('off'), plt.title("origin")plt.imshow(gray, cmap='gray')plt.subplot(132), plt.axis('off'), plt.title("skeleton")plt.imshow(skeleton, cmap='gray')plt.subplot(133), plt.axis('off'), plt.title("result")plt.imshow(result, cmap='gray')plt.tight_layout()plt.show()

【本节完】

说明:例程的图像来自 R.C.Gonzalez 《数字图像处理(第四版)》。

版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125600888)
Copyright 2022 youcans, XUPT
Crated:2022-6-30

222. 特征提取之弗里曼链码
223. 特征提取之多边形拟合
224. 特征提取之提取骨架

【OpenCV 例程 300篇】224. 特征提取之提取骨架相关推荐

  1. 【OpenCV 例程 300篇】235. 特征提取之主成分分析(sklearn)

    『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]235. 特征提取之主成分分析(sklearn) 特征提取是指从原始特征中通过数学变 ...

  2. 【OpenCV 例程 300篇】237. 基于主成分提取的方向校正(OpenCV)

    『youcans 的 OpenCV 例程200篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]237. 基于主成分提取的方向校正(OpenCV) 主成分分析(Principal ...

  3. 【OpenCV 例程 300篇】222. 特征提取之弗里曼链码(Freeman chain code)

    OpenCV 例程200篇 总目录 [youcans 的 OpenCV 例程 300篇]222. 特征提取之弗里曼链码(Freeman chain code) 目标特征的基本概念 通过图像分割获得多个 ...

  4. 【OpenCV 例程 300篇】241. 尺度不变特征变换(SIFT)

    『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]241. 尺度不变特征变换(SIFT) 6.4.1 简介 尺度不变特征转换算法(Sc ...

  5. 【youcans的OpenCV例程300篇】总目录

    版权声明: 转载本系列作品时必须标注以下版权内容: [youcans@qq.com, youcans的OpenCV 例程300篇, https://blog.csdn.net/youcans/cate ...

  6. 【OpenCV 例程 300篇】219. 添加数字水印(盲水印)

    OpenCV 例程200篇 总目录 [youcans 的 OpenCV 例程 300篇]219. 添加数字水印(盲水印) 8.2 添加数字盲水印 数字水印,是指将特征信息嵌入音频.图像或是视频等数字信 ...

  7. 【OpenCV 例程 300篇】231. 特征描述之灰度共生矩阵(GLCM)

    『youcans 的 OpenCV 例程200篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]231. 特征描述之灰度共生矩阵(GLCM) 4.2.4 灰度共生矩阵(GLCM) ...

  8. 【OpenCV 例程 300篇】221.加密马赛克图像处理与解密复原

    『youcans 的 OpenCV 例程200篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]221.加密马赛克图像处理与解密复原 9. 图像的马赛克处理 马赛克效果是广泛使用的 ...

  9. 【OpenCV 例程 300篇】249. 特征描述之视网膜算法(FREAK)

    『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]249. 特征检测之视网膜算法(FREAK) 1. FREAK 算法简介 快速视网膜 ...

最新文章

  1. QT textedit 滚动条自动往下滚动
  2. 存储引擎——概述|| 各种存储引擎的特性(InnoDB||MyISAM||MEMORY||MERGE) ||存储引擎的选择
  3. 互联网架构的演变,看了好多这个讲的确实清楚!
  4. 阿里云加入开放媒体联盟AOM
  5. (18)Vue DevTools插件
  6. python中说_name_没有被定义_python – 为什么我得到这个NameError:名称’url_for’没有定义?...
  7. php数据库添加会员等级显示,给ECSHOP后台订单列表加上显示会员等级
  8. 读《scikiit-learn机器学习》黄永昌第三章
  9. IE10、IE11 ASP.Net 网站无法写入Cookie 问题
  10. 星星之火-57:前传接口 CPRI的速率、能力、小区带宽之间的映射关系
  11. nero 8注册码 Nero Burning Rom V8
  12. 欧拉计划(1~3)ps:以后看题一定要认真
  13. Unity MVC实现背包系统(2)
  14. 张家界四日自助游攻略及心得
  15. SAP PO的结算状态
  16. 汽车之家精选论坛图片下载
  17. 一个屌丝程序员的青春(六七)
  18. Winfrom FtP上传文件以文件夹
  19. maven:pom文件详细信息
  20. html标签之视频各种标签

热门文章

  1. 基于安卓的房产网上交易平台app—计算机毕业设计
  2. 还不会使用Mysql中的 limit 吗?limit 用法详解看了就会了
  3. [附源码]SSM计算机毕业设计家居装修网站JAVA
  4. 签名和包名version Nameversion Code
  5. 网卡清空缓存命令_提高局域网网速方法技巧:网卡调至全速/取消缓存设置
  6. 五大科技巨头市值一夜蒸发逾4000亿美元;微软大破全球最大僵尸网络Necurs;微信iOS版开始测试暗黑模式 | EA周报...
  7. Linux通讯架构服务器开发学习笔记
  8. 文字输出尺寸测量方法, MeasureString不准确的问题
  9. docker部署项目流程-基于若依系统(vue+springboot)
  10. tx2使用sdkmanager(>=JetPack4.2)重装系统ubuntu18.04+远程连接tx2