当前位置: 首页 > news >正文

python图像处理之形态学梯度、礼帽、黑帽

文章目录

    • 简介
    • 实战

简介

腐蚀和膨胀是图像形态学处理的基本运算,这两种运算的复合运算构成了开和闭,而腐蚀、膨胀与原图之间的加减操作,则构成了形态学梯度、礼帽和黑帽计算。

由于这几种函数均基于腐蚀和膨胀,所以其参数均与开闭运算相同

  • 形态学梯度 morphological_gradient(input, size=None, footprint=None, structure=None, output=None, mode=‘reflect’, cval=0.0, origin=0)
  • 礼帽运算 white_tophat(input, size=None, footprint=None, structure=None, output=None, mode=‘reflect’, cval=0.0, origin=0)
  • 黑帽运算 black_tophat(input, size=None, footprint=None, structure=None, output=None, mode=‘reflect’, cval=0.0, origin=0)
  • 拉普拉斯变换 morphological_laplace(input, size=None, footprint=None, structure=None, output=None, mode=‘reflect’, cval=0.0, origin=0)

各参数含义如下

  • size 为滤波模板
  • mode 可选reflect,constant,nearest,mirror, wrap,边缘填充方式
  • cval 边缘填充值
  • structure 为数组类型,表示构造元素,可以理解为是卷积模板
  • output 与输入相同维度的数组,可以存下结果
  • orgin 过滤器设置,默认为0

其中,礼帽又叫顶帽,等于原图减去开运算;黑帽又叫底帽,为原图减去闭运算。

实战

下面用scipy.misc中的楼梯图像,对礼帽、黑帽以及形态学梯度函数进行测试,方便起见,做一个函数字典funcs,分别存储自身映射、礼帽、黑帽函数,分别对楼梯图像进行处理并绘图。

import scipy.ndimage as sn
from scipy.misc import ascent
import matplotlib.pyplot as pltimg = ascent()
img = img[350:500, 400:500]
funcs = {"original": lambda x, tmp:x,"white" : sn.white_tophat,"black" : sn.black_tophat,
}fig = plt.figure()
for i, key in enumerate(funcs):ax = fig.add_subplot(1,3,i+1)plt.imshow(funcs[key](img, (5,5)), cmap=plt.cm.gray)plt.title(key)plt.axis('off')plt.show()

效果如下

在这里插入图片描述

形态学梯度为膨胀图减去腐蚀图,这种操作会把图像的边缘提取出来,scipy.ndimage中提供来了gradientlaplace两个函数

img = (img > 125)*1funcs = {"original": lambda x, tmp:x,"gradient" : sn.morphological_gradient,"laplace" : sn.morphological_laplace,
}fig = plt.figure()
for i, key in enumerate(funcs):ax = fig.add_subplot(1,3,i+1)plt.imshow(funcs[key](img, (3,3)), cmap=plt.cm.gray)plt.title(key)plt.axis('off')plt.show()

效果如下

在这里插入图片描述

http://www.lryc.cn/news/62827.html

相关文章:

  • 千万级直播系统后端架构设计
  • ImageJ 用户手册——第五部分(菜单命令File,Edit)
  • nmap常用命令
  • 常用adb 命令
  • 后端开发常犯的问题(Java版)
  • Vue CLI 部署
  • 客快物流大数据项目(一百一十七):网关 Spring Cloud Gateway
  • fMRI时间序列振幅和相位对功能连接分析的影响
  • 备战2个月,四轮面试拿下字节offer...
  • 关于Nginx
  • tensorflow中的共享变量
  • flink cep数据源keyby union后 keybe失效
  • python中的继承与多态,dir()函数
  • C++练级之初级:第五篇
  • JMeter的使用(二)
  • C/C++文件操作/IO流
  • 推荐 7 个超牛的 Spring Cloud 实战项目
  • Linux信号:信号 信号集 信号集函数
  • 详解八大排序算法-附动图和源码(插入,希尔,选择,堆排序,冒泡,快速,归并,计数)
  • 网络编程--协议、协议族、地址族
  • Linux入门操作
  • 1。C语言基础知识回顾
  • 学习如何通过构建一个简单的JavaScript颜色游戏来操作DOM
  • 【算法学习】—n皇后问题(回溯法)
  • 万亿OTA市场进入新爆发期,2025或迎中国汽车软件付费元年
  • Android硬件通信之 蓝牙Mesh通信
  • PG数据库实现bool自动转smallint的方式
  • 易观千帆 | 2023年3月证券APP月活跃用户规模盘点
  • 2023年江苏专转本成绩查询步骤
  • JavaScript中sort()函数