图像处理:形态学处理

常见的基础形态学操作有:

skimage中含有针对0-1binary图像优化过的形态学操作,可以更快的实现。

骨骼提取(图象细化 / image thinning)

这是一种形态学处理,我在提取手写笔迹的骨骼的时候用到了,因为之间简单的开闭运算的话,容易破坏图像的结构连通性。而骨骼提取则会在保证结构连通性的前提下,细化图像。

API调用

scikit-image包有两种实现,使用方法如下:

  • skimage.morphology.skeletonize:可用于2D,3D和ndarray图片的骨骼提取
  • skimage.morphology.thin:只能用于binary image
  • skimage.morphology.medial_axis:binary image,是有超过1个最近点到对象边界的点的集合。通常被称为拓扑骨骼
from skimage import morphology
import cv2

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转成灰度图
_, img_bin = cv2.threshold(img_gray, 100, 255, cv2.THRESH_BINARY_INV)  # 二值化处理
img_bin[img_bin == 255] = 1  # 将值变成0-1,骨骼提取函数必须要输入01的二值化图象
# 方法一 skeletonize
img_skeleton = morphology.skeletonize(img_bin)  # 骨骼提取
img = img_skeleton.astype(np.uint8) * 255  # 值从01重新映射回0-255
# 方法二 thin
img_thin = thin(img_bin)
img = img_thin.astype(np.uint8)
# 方法三 medial_axis
img_

应用

  1. 笔迹细化:我在识别数学公式的时候,识别经常会将加号和除号混淆,所以对公式图像进行了细化处理,让除号的两点尽可能的分开,不被识别成加号。有效果,但是不大。

膨胀(dilate)

腐蚀(erode)

开运算 -> 白顶帽变换

白顶帽:

会返回图像中的亮点,这些黑点都小于结构元素

闭运算 -> 黑顶帽变换

对于0-1的binary图片,更快的闭运算:skimage.morphology.binary_closing

黑顶帽:闭运算 - 原图

  • skimage.morphology.black_tophat

会返回图像中的黑点,这些黑点都小于结构元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值