Opencv | 图像卷积与形态学变换操作

这篇具有很好参考价值的文章主要介绍了Opencv | 图像卷积与形态学变换操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 滤波 / 卷积操作

在每个图像位置(x,y)上进行基于邻域的函数计算,其中函数参数被称为卷积核 (kernel)

  • kernel核的尺寸通常为奇数,一般为: 3 ∗ 3 、 5 ∗ 5 、 7 ∗ 7 3*3、5*5、7*7 335577

不同功能需要定义不同的函数,其中功能可以有:

  1. 图像增强:
              平滑 / 去噪
              梯度 / 锐化

  2. 特征提取、检测:
              边缘 / 显著点
    Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

    卷积语法
    	dst = cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
    	参数:
    		src:输入图像
    		ddepth:输出图像的深度,当其值为-1时,输出图像与输入图像具有相同的深度
    		kernel:卷积核,用于计算每个像素值的矩阵
    		dst:
    			输出图像(可选参数)
    			如果未提供,则会创建一个新的图像
    		anchor:
    			卷积核的锚点
    			默认值为(-1, -1),表示锚点位于卷积核的中心
    		delta:
    			在将结果存储到输出图像之前,将添加到每个像素的值(可选参数),默认为0
    		borderType:
    			像素外推方法(可选参数)
    			用于指定当卷积核超出图像边界时如何处理边界像素
    

1. 平滑均值滤波/卷积

kernel核中的参数和为1,所有参数值全部一样

	属于线性滤波技术
	适用场景:
		适合于去除图像中的随机噪声
		适用于消除高斯噪声和相机失真
		可用于提取较大目标前过滤掉较小的细节或将目标内的小间断连接起来
	作用:
		通过降低图像中的高频分量,减少噪声
		图像整体显得更加平滑
		可能会牺牲一些图像细节

2. 平滑中值滤波/卷积

kernel核有固定的大小,没有固定的值

	属于非线性滤波方法
	适用场景:
		有效去除椒盐噪声
	操作原理: 
		将卷积域内的所有像素值从小到大排序 
		获取中间值作为卷积的输出值
	作用:
		消除图像中的孤立噪声点
		去除噪声的同时保留图像的边缘特征:不依赖于像素点的具体数值,而是取决于它们的相对排序

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

	cv2.medianBlur(src, ksize[, dst])
	参数:
		src:输入图像,通常为一个二维的灰度图像
		ksize:一个奇数整数,表示滤波器的大小
		dst(可选):输出图像,与输入图像具有相同的大小和类型

3. 平滑高斯滤波/卷积

G σ = 1 2 π σ 2 e − ( x 2 + y 2 ) 2 σ 2 G_{\sigma}=\frac{1}{2 \pi \sigma^{2}} e^{-\frac{\left(x^{2}+y^{2}\right)}{2 \sigma^{2}}} Gσ=2πσ21e2σ2(x2+y2)

可以有效去除高斯噪声

	线性平滑技术
	cv2.GaussianBlur(src, ksize, sigmaX[, sigmaY[, borderType]])
	参数: 
		src:原始图像
		ksize:滤波核的大小,滤波核的值必须是奇数
		sigmaX:
			卷积核在水平方向上(X轴方向)的标准差,控制权重比例
		sigmaY:
			卷积核在垂直方向上(Y轴方向)的标准差,控制权重比例
				如果sigmaY参数未指定,则其值将默认与sigmaX相同
		borderType:边界类型,用于指定图像边界的处理方法

3.1 关注区域

平滑高斯滤波模拟人眼,关注中心区域
Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

平滑高斯滤波/卷积
σ σ σ越小,关注区域越小
σ σ σ越大,图片整体越模糊

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

3.2 分解特性

G σ ( x , y ) = 1 2 π σ 2 exp ⁡ − x 2 + y 2 2 σ 2 = ( 1 2 π σ exp ⁡ − x 2 2 σ 2 ) ( 1 2 π σ exp ⁡ − y 2 2 σ 2 ) G_{\sigma}(x, y)=\frac{1}{2 \pi \sigma^{2}} \exp -\frac{x^{2}+y^{2}}{2 \sigma^{2}}=\left(\frac{1}{\sqrt{2 \pi} \sigma} \exp ^{-\frac{x^{2}}{2 \sigma^{2}}}\right)\left(\frac{1}{\sqrt{2 \pi} \sigma} \exp ^{-\frac{y^{2}}{2 \sigma^{2}}}\right) Gσ(x,y)=2πσ21exp2σ2x2+y2=(2π σ1exp2σ2x2)(2π σ1exp2σ2y2)

	分解特性(级联高斯) 
		2D卷积拆分为两个相同的1D卷积 
			列卷积 	
			行卷积 
		降低计算 
			2D卷积:K^2次计算 
			1D卷积:2K次计算

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

二. 形态学变换

	cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
	参数:
		src:源图像,必须是单通道的灰度图像
		op:形态学操作的类型,包括:
			cv2.MORPH_ERODE(腐蚀)
			cv2.MORPH_DILATE(膨胀)
			cv2.MORPH_OPEN(开运算)
			cv2.MORPH_CLOSE(闭运算)
			cv.MORPH_GRADIENT (形态梯度/边缘特征)
			cv.MORPH_TOPHAT(提取非交叉点的信息)
		kernel:结构元素,用于指定形态学操作的邻域形状和大小
					通常是一种特殊的形状,如线条、矩形、圆形等
		anchor:结构元素的锚点,默认值为Point(-1, -1),表示锚点位于结构元素的中心
		iterations:操作的迭代次数,默认值为1
		borderType:像素外推法的类型,默认为cv2.BORDER_CONSTANT
		borderValue:当使用cv2.BORDER_CONSTANT像素外推法时,此参数表示边界值,默认值为morphologyDefaultBorderValue()
	作用:
		根据指定的操作类型和结构元素对输入图像进行相应的形态学处理

1. 常用核

	cv2.getStructuringElement(shape, ksize[, anchor])
	参数:
		shape:
			结构元素的形状,可以是以下值之一
				cv2.MORPH_RECT(矩形)
				cv2.MORPH_ELLIPSE(椭圆)
				cv2.MORPH_CROSS(十字形)
		ksize:结构元素的大小,表示为一个元组
		anchor(可选):
			结构元素的锚点,表示为一个元组
	作用:
		生成指定形状和大小的结构元素,结构元素通常用于形态学操作,如腐蚀、膨胀、开运算和闭运算等

2. cv.erode ( ) 腐蚀操作

	cv.erode(src, kernel[, iterations])
	参数:
		src:表示输入图像;
				通道数不限
				深度必须是CV_8U,即8位无符号整数类型的单通道图像
		kernel:表示结构元素,通常是一个二维矩阵,用于确定腐蚀操作过程中邻域的形状
					腐蚀操作中,会选择卷积核中非0元素所覆盖区域中的最小值,作为输出图像(dst)中的像素值
		iterations:表示腐蚀操作的迭代次数,默认值为1
				    多次迭代会使得腐蚀效果更加显著。
	操作:在图像(x,y)像素点的邻域中,选择像素最小值作为像素点(x,y)的像素值,即最小值滤波/卷积
	作用:消除物体的边界点,使边界向内收缩,常用于去除小的物体或连接两个有细小连通的物体

3. cv.dilate ( ) 膨胀操作

	cv.dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
	参数:
		src:输入图像,通常为二值图像
		kernel:膨胀操作所使用的结构元素
				可以使用cv2.getStructuringElement()函数生成
		dst:输出图像,与输入图像大小和类型相同
		anchor:
			结构元素的锚点
			默认值为(-1, -1),表示锚点位于结构元素的中心
		iterations:膨胀操作的迭代次数,默认值为1
		borderType:边界处理类型,默认值为cv2.BORDER_CONSTANT
		borderValue:边界处理时使用的常数值,默认值为0
	操作:
		在图像(x,y)像素点的邻域中,选择像素最大值作为像素点(x,y)的像素值,即最大值滤波/卷积
	作用:
		扩大图像中的白色区域(前景),从而消除一些小的黑色区域(背景)
		膨胀操作通常用于去除噪声、连接相邻物体等

4. Open 操作

	方式1:
		cv2.morphologyEx( )
	方式2:
		cv.erode( ) + cv.dilate( )
	作用:
		先腐蚀后膨胀

5. Close 操作

	方式1:
		cv2.morphologyEx( )
	方式2:
		cv.dilate( ) + cv.erode( ) 
	作用:
		先膨胀后腐蚀

6. Morphological Gradient 形态梯度操作

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习
cv.morphologyEx(img, op=cv.MORPH_GRADIENT, kernel=kernel, iterations=1)cv.morphologyEx( )

7. Top Hat 获取非交叉点特征 操作

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

	cv.morphologyEx(img, op=cv.MORPH_TOPHAT, kernel=kernel, iterations=1)

8. Black Hat 获取交叉点特征 操作

Opencv | 图像卷积与形态学变换操作,OpenCV,opencv,计算机视觉,深度学习

	cv.morphologyEx(img, op=cv.MORPH_BLACKHAT, kernel=kernel, iterations=1)

感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【】

祝愉快🌟!文章来源地址https://www.toymoban.com/news/detail-856294.html


到了这里,关于Opencv | 图像卷积与形态学变换操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV基本图像处理操作(一)——图像基本操作与形态学操作

    图像显示 转hsv图像 颜色表示为三个组成部分:色调(Hue)、饱和度(Saturation)和亮度(Value)。常用于图像处理中,因为它允许调整颜色的感知特性,如色彩和亮度,这些在RGB颜色模型中不那么直观。 HSV模型特别适用于任务如图像分割和对象追踪,因为它可以更好地处理光

    2024年04月22日
    浏览(37)
  • OpenCV图像处理学习十,图像的形态学操作——膨胀腐蚀

    一.形态学操作概念 图像形态学操作是指基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学对图像进行处理。 形态学有四个基本操作:腐蚀、膨胀、开操作、闭操作,膨胀与腐蚀是图像处理中最常用的形态学操作手段。 二.形态学操作-膨胀 跟卷积

    2024年02月05日
    浏览(36)
  • 图像形态学-阈值的概念、功能及操作(threshold()函数))【C++的OpenCV 第九课-OpenCV图像常用操作(六)】

    首先,顾名思义,“ 阈 ”就是范围或者 限制 ,所以,“阈值”就是 某个限制的值 (该值具有一定的数学含义,即“ 临界值 ”,例如车辆限高杆的高度就是一种阈值,不可超越;亦或者1.1米以下儿童不收费,超过1.1就要收费。) 其次,图形学中的阈值,往往指某个你想要

    2024年02月03日
    浏览(31)
  • opencv获取形态学卷积核

    获取形态学卷积核,这个函数是用来创建自定义形状的卷积核(也称为结构元素),这些核可以用在形态学操作比如腐蚀和膨胀中。 cv2.getStructuringElement(shape, ksize[, anchor]) shape:卷积核形状, cv2.MORPH_RECT: 矩形结构元素 cv2.MORPH_CROSS: 交叉形结构元素 cv2.MORPH_ELLIPSE: 椭圆形结构元素

    2024年04月14日
    浏览(33)
  • 使用opencv c++完成图像中水果分割(分水岭、形态学操作、通道处理)单独标记每个水果

    2023.4.16日更新 1. 利用一阶矩增加了草莓等水果的质心绘制。 2. 绘制出了生长方向。 原为本人机器人视觉作业。参考文章http://t.csdn.cn/eQ0qp(目测是上一届的学长) 要求:在网络上寻找水果重叠在一起的图片、经过一系列图像处理,完成每个水果的分割,并单独标记出来。 导

    2024年02月04日
    浏览(58)
  • OpenCv之图像形态学

    目录 一、形态学  二、图像全局二值化  三、自适应阈值二值化 四、腐蚀操作 五、获取形态学卷积核 六、膨胀操作 七、开运算 八、闭运算 定义: 指一系列处理图像形状特征的图像处理技术 形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图

    2024年02月16日
    浏览(27)
  • OpenCv之图像形态学(二)

    目录 一、形态学梯度 二、顶帽操作 三、黑帽操作 梯度=原图 - 腐蚀 腐蚀之后原图边缘变小,原图 - 腐蚀 就可以得到腐蚀掉的部分,即边缘 案例代码如下: 运行结果如下: 顶帽 = 原图 - 开运算 开运算的效果是去除图形外的噪点,原图 - 开运算就得到了去掉的噪点 案例代码如

    2024年02月16日
    浏览(27)
  • 图像的形态学开操作(开运算)和闭操作(闭运算)的概念和作用,并用OpenCV的函数morphologyEx()实现对图像的开闭操作

    大家看这篇博文前可以先看一看下面这篇博文,下面这篇博文是这篇博文的基础: 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作 图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域

    2024年02月06日
    浏览(42)
  • Android OpenCV(三十一):图像形态学

    参数一:src,输入的待形态学操作图像,图像的通道数可以是任意的,但是图像的数据类型必须是 CV_8U , CV_16U , CV_16S , CV_32F 或 CV_64F 参数二:dst,形态学操作后的输出图像,与输入图像src具有相同的尺寸和数据类型 参数三:op,形态学操作类型的标志 标志位 值 作用 MO

    2024年04月10日
    浏览(40)
  • OpenCV之形态学操作

    形态学操作包含以下操作: 腐蚀 (Erosion) 膨胀 (Dilation) 开运算 (Opening) 闭运算 (Closing) 形态梯度 (Morphological Gradient) 顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作,其他操作由这两个操作变换而来。         用一个结构元素扫描图像中每一个像素,结构元素

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包