iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python数字图像处理之基本形态学滤波
  • 853
分享到

python数字图像处理之基本形态学滤波

2024-04-02 19:04:59 853人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录引言1、膨胀(dilation)2、腐蚀(erosion)3、开运算(opening)4、闭运算(closing)5、白帽(white-tophat)6、黑帽(black-top

引言

对图像进行形态学变换。变换对象一般为灰度图或二值图,功能函数放在morphology子模块内。

1、膨胀(dilation)

原理:一般对二值图像进行操作。找到像素值为1的点,将它的邻近像素点都设置成这个值。1值表示白,0值表示黑,因此膨胀操作可以扩大白色值范围,压缩黑色值范围。一般用来扩充边缘或填充小的孔洞。

功能函数:skimage.morphology.dilation(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.dilation(img,sm.square(5))  #用边长为5的正方形滤波器进行膨胀滤波
dst2=sm.dilation(img,sm.square(15))  #用边长为15的正方形滤波器进行膨胀滤波
plt.figure('morphology',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1,plt.cm.gray)
plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2,plt.cm.gray)

分别用边长为5或15的正方形滤波器对棋盘图片进行膨胀操作,结果如下:

可见滤波器的大小,对操作结果的影响非常大。一般设置为奇数。

除了正方形的滤波器外,滤波器的形状还有一些,现列举如下:

morphology.square: 正方形

morphology.disk:  平面圆形

morphology.ball: 球形

morphology.cube: 立方体形

morphology.diamond: 钻石形

morphology.rectangle: 矩形

morphology.star: 星形

morphology.octaGon: 八角形

morphology.octahedron: 八面体

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_dilation(image, selem=None)

用此函数比处理灰度图像要快。

2、腐蚀(erosion)

函数:skimage.morphology.erosion(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

和膨胀相反的操作,将0值扩充到邻近像素。扩大黑色部分,减小白色部分。可用来提取骨干信息,去掉毛刺,去掉孤立的像素。

from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.erosion(img,sm.square(5))  #用边长为5的正方形滤波器进行膨胀滤波
dst2=sm.erosion(img,sm.square(25))  #用边长为25的正方形滤波器进行膨胀滤波
plt.figure('morphology',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1,plt.cm.gray)
plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2,plt.cm.gray)

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_erosion(image, selem=None)

用此函数比处理灰度图像要快。

3、开运算(opening)

函数:skimage.morphology.openning(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

先腐蚀再膨胀,可以消除小物体或小斑块。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.opening(img,sm.disk(9))  #用边长为9的圆形滤波器进行膨胀滤波
plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_opening(image, selem=None)

用此函数比处理灰度图像要快。

4、闭运算(closing)

函数:skimage.morphology.closing(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

先膨胀再腐蚀,可用来填充孔洞。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.closing(img,sm.disk(9))  #用边长为5的圆形滤波器进行膨胀滤波
plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_closing(image, selem=None)

用此函数比处理灰度图像要快。

5、白帽(white-tophat)

函数:skimage.morphology.white_tophat(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

将原图像减去它的开运算值,返回比结构化元素小的白点

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.white_tophat(img,sm.square(21))  
plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')

6、黑帽(black-tophat)

函数:skimage.morphology.black_tophat(image, selem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

将原图像减去它的闭运算值,返回比结构化元素小的黑点,且将这些黑点反色。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.black_tophat(img,sm.square(21))  
plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')

以上就是python数字图像处理之基本形态学滤波的详细内容,更多关于Python数字图像形态学滤波的资料请关注编程网其它相关文章!

--结束END--

本文标题: python数字图像处理之基本形态学滤波

本文链接: https://www.lsjlt.com/news/118992.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python数字图像处理之基本形态学滤波
    目录引言1、膨胀(dilation)2、腐蚀(erosion)3、开运算(opening)4、闭运算(closing)5、白帽(white-tophat)6、黑帽(black-top...
    99+
    2024-04-02
  • python之基本形态学滤波实例分析
    本文小编为大家详细介绍“python之基本形态学滤波实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python之基本形态学滤波实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。引言对图像进行形态学变...
    99+
    2023-07-02
  • python数字图像处理之图像简单滤波实现
    目录引言1、sobel算子2、roberts算子3、scharr算子4、prewitt算子5、canny算子6、gabor滤波7、gaussian滤波8、median9、水平、垂直边...
    99+
    2024-04-02
  • OpenCV数字图像处理基于C++之图像形态学处理详解
    目录1、图像腐蚀1.1 CV腐蚀函数1.2 自定义腐蚀函数1.3 对比2、图像膨胀2.1 CV膨胀函数2.2 自定义膨胀函数2.3 对比3、开运算3.1 方法一3.2 方法二4、闭运...
    99+
    2022-12-08
    数字图像处理 opencv 基于opencv的图像处理 opencv c++入门
  • Python基本形态学滤波怎么实现
    最基础的形态学操作有四个,分别是腐蚀、膨胀、开计算和闭计算,`scipy.ndimage分别实现了二值数组和灰度数组的这四种运算二值灰度binary_erosiongrey_erosion腐蚀binary_dilationgrey_dila...
    99+
    2023-05-22
    Python
  • python数字图像处理之基本图形的绘制
    目录引言1、画线条2、画圆3、多边形4、椭圆5、贝塞儿曲线6、画空心圆7、空心椭圆引言 图形包括线条、圆形、椭圆形、多边形等。 在skimage包中,绘制图形用的是draw模块,不要...
    99+
    2024-04-02
  • C++图像处理之双边滤波
    本文实例为大家分享了C++图像处理之双边滤波的具体代码,供大家参考,具体内容如下 1、 近期在学习双边滤波相关知识,其原理如下(以后补上): 2 、灰度图双边滤波实现C++代码如下,...
    99+
    2024-04-02
  • 详解四种Python中基本形态学滤波的实现
    目录二值形态学灰度形态学最基础的形态学操作有四个,分别是腐蚀、膨胀、开计算和闭计算,`scipy.ndimage分别实现了二值数组和灰度数组的这四种运算 二值灰度binary_ero...
    99+
    2023-05-15
    Python实现形态学滤波 Python形态学滤波 Python形态学
  • PythonOpenCV图像处理之图像滤波特效详解
    目录1 分类2 邻域滤波2.1 线性滤波2.2 非线性滤波3 频域滤波3.1 低通滤波3.2 高通滤波1 分类 图像滤波按图像域可分为两种类型: 邻域滤波(Spatial Domai...
    99+
    2024-04-02
  • Java OpenCV图像处理之自定义图像滤波算子
    目录示例代码效果图示例代码 package com.xu.image; import java.io.File; import org.opencv.core.Core; imp...
    99+
    2024-04-02
  • OpenCV(图像处理)-基于python-滤波器(低通、高通滤波器的使用方法)
    1.概念介绍2. 图像卷积filter2D() 3. 低通滤波器3.1 方盒滤波和均值滤波boxFilter()blur() 3.2 高斯滤波(高斯噪音)3.3 中值滤波(胡椒...
    99+
    2023-09-06
    opencv 图像处理 计算机视觉
  • Python图像处理:频域滤波降噪和图像增强
    图像处理已经成为我们日常生活中不可或缺的一部分,涉及到社交媒体和医学成像等各个领域。通过数码相机或卫星照片和医学扫描等其他来源获得的图像可能需要预处理以消除或增强噪声。频域滤波是一种可行的解决方案,它可以在增强图像锐化的同时消除噪声。快速傅...
    99+
    2023-05-14
    Python 图像处理 数学技术
  • OpenCV图像形态学如何处理
    这篇文章主要讲解了“OpenCV图像形态学如何处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“OpenCV图像形态学如何处理”吧!1.腐蚀操作从下面代码中可以看到有三幅腐蚀程度不同的图,腐...
    99+
    2023-07-05
  • python数字图像处理之图像的批量处理
    目录正文图片集合函数批量读取批量转换为灰度图批量保存正文 有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理。这时候,我们可以通过循环来执行处理,也可以调用程序自带的图片...
    99+
    2024-04-02
  • matlab如何实现形态学图像处理
    这篇文章主要介绍“matlab如何实现形态学图像处理”,在日常操作中,相信很多人在matlab如何实现形态学图像处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”matlab如何实现形态学图像处理”的疑惑有所...
    99+
    2023-07-05
  • python之数字图像处理方式
    目录基本概念图像增强整体代码线性变换分段线性变换对数变换幂律变换直方图图像滤波平滑图像锐化图像总结基本概念 数字图像定义 对于一幅图像,我们可以将其放入坐标系中,这里取图像左上定点为...
    99+
    2023-05-19
    python数字图像处理 python数字图像 python图像处理
  • OpenCV学习方框滤波实现图像处理代码示例
    目录一、方框滤波二、C++代码三、python代码四、结果展示1、原始图像2、归一化3、不归一化4、平方和求均值一、方框滤波    方框滤波是均值滤波的一种形...
    99+
    2024-04-02
  • JavaOpenCV图像处理之图形与文字绘制
    目录前言核心代码效果图前言 代码地址 序號名稱方法1圖像 添加文字Imgproc.putText2圖像 畫直綫Imgproc.line3圖像 畫橢圓Imgproc.ellipse4圖...
    99+
    2024-04-02
  • Java数字图像处理之图像灰度处理
    本文实例为大家分享了Java数字图像处理基础之图像灰度处理,供大家参考,具体内容如下 一、简介 图像灰度化处理可以作为图像处理的预处理步骤,在图像处理中是十分重要的一件事。灰度图像上...
    99+
    2024-04-02
  • python数字图像处理实现图像的形变与缩放
    目录skimage的transform模块1、改变图片尺寸resize2、按比例缩放rescale3、旋转 rotate4、图像金字塔skimage的transform模块 图像的形...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作