Python边缘检测之prewitt,sobel和laplace算子详解
作者:微小冷 发布时间:2023-09-30 06:01:56
标签:Python,边缘,检测
滤波算子简介
ndimage中提供了卷积算法,并且建立在卷积之上,提供了三种边缘检测的滤波方案:prewitt, sobel以及laplace。
在convolve中列举了一个用于边缘检测的滤波算子,统一维度后,其x xx和y yy向的梯度算子分别写为
此即prewitt
算子。
Sobel算子为Prewitt增添了中心值的权重,记为
这两种边缘检测算子,均适用于某一个方向,ndimage还提供了lapace算子,其本质是二阶微分算子,其3×3卷积模板可表示为
具体实现
ndimage
封装的这三种卷积滤波算法,定义如下
prewitt(input, axis=-1, output=None, mode='reflect', cval=0.0)
sobel(input, axis=-1, output=None, mode='reflect', cval=0.0)
laplace(input, output=None, mode='reflect', cval=0.0)
其中,mode
表示卷积过程中对边缘效应的弥补方案,设待滤波数组为a b c d
,则在不同的模式下,对边缘进行如下填充
左侧填充 | 数据 | 右侧填充 | |
---|---|---|---|
reflect | d c b a | a b c d | d c b a |
constant | k k k k | a b c d | k k k k |
nearest | a a a a | a b c d | d d d d |
mirror | d c b | a b c d | c b a |
wrap | a b c d | a b c d | a b c d |
测试
接下来测试一下
from scipy.ndimage import prewitt, sobel, laplace
from scipy.misc import ascent
import matplotlib.pyplot as plt
img = ascent()
dct = {
"origin" : lambda img:img,
"prewitt" : prewitt,
"sobel" : sobel,
"laplace" : lambda img : abs(laplace(img))
}
fig = plt.figure()
for i,key in enumerate(dct):
ax = fig.add_subplot(2,2,i+1)
ax.imshow(dct[key](img), cmap=plt.cm.gray)
plt.ylabel(key)
plt.show()
为了看上去更加简洁,代码中将原图、prewitt滤波、sobel滤波以及laplace滤波封装在了一个字典中。其中origin
表示原始图像,对应的函数是一个lambda
表达式。
在绘图时,通过将cmap
映射到plt.cm.gray
,使得绘图之后表现为灰度图像。
效果如下
来源:https://blog.csdn.net/m0_37816922/article/details/130218971
0
投稿
猜你喜欢
- write()方法把字符串str写入文件。没有返回值。由于缓冲,字符串可能不实际显示文件,直到flush()或close()方法
- 在tensorflow中,经常会遇到参数初始化问题,比如在训练自己的词向量时,需要对原始的embeddigs矩阵进行初始化,更一般的,在全连
- 代码如下:from PIL import Image #图像处理模块import numpy as npa = np.asarr
- 本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如 * 意事项: 1、使用python3执行程序。按提示输入1或2,
- Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的?
- 时间久了,注册用户和朋友数据库里的废记录渐渐多了起来,尤其是电子邮件地址,请问有什么好的办法可以快速安全地将它们删除吗?试试下面这个办法,它
- 目录一、问题描述:二、具体的实现:三、完整代码:一、问题描述:有一个shape为(308, 2)的二维数组,以及单独的一个数字,需要保存到c
- 处理数据时,经常需要对索引进行处理,那么可以通过set_index和reset_index来进行处理官方文档DataFrame.set_in
- 本文实例讲述了Python中的装饰器用法。分享给大家供大家参考。具体分析如下:这里还是先由stackoverflow上面的一个问题引起吧,如
- 一:脚本需求利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格数据库类
- 函数的必选参数,指的是函数调用的时候必须传入的参数import mathdef cal (n): return n * nvar
- 目录一、Python 3.8 安装1.通过 Apt 安装Python3.82.配置 python3.8 为系统默认 python3二、卸载p
- 本文研究的主要是PyQt5主窗口动态加载Widget的代码示例,具体如下。我们通过Qt Designer设计两个窗口,命名为主窗口(Main
- Django的核心(1.4+)可以运行在从2.5到2.7之间的任何Python版本。我的电脑是操作系统是window10 ,内存是4G。1。
- 本文实例讲述了Python实现的栈、队列、文件目录遍历操作。分享给大家供大家参考,具体如下:一、 栈与队列1、 栈 stack特点:先进先出
- 这篇文章主要介绍了Python socket模块方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 像在下拉菜单中选择省、市这样的操作,我一直用ASP来创建生成列表函数,把它们保存在一个Include文件中,用的时候就加载。这样做确实有个不
- 介绍众所周知,计算机视觉在机器学习和人工智能领域获得了巨大的普及。图像识别技术允许计算机处理比人眼更多的信息,通常更快、更准确,或者只是在人
- Python heapq 详解Python有一个内置的模块,heapq标准的封装了最小堆的算法实现。下面看两个不错的应用。小顶堆
- Python是一种非常流行的脚本语言,而且功能非常强大,几乎可以做任何事情,比如爬虫、网络工具、科学计算、树莓派、Web开发、游戏等各方面都