【OpenCV】图像平滑(模糊)处理形态学处理以及卷积内核定义学习笔记

本文介绍了OpenCV库在图像处理中的应用,包括腐蚀、膨胀、开运算、闭运算、梯度运算、礼帽运算和黑帽运算等形态学操作,并展示了如何自定义卷积内核。此外,还详细讲解了线性滤波、均值滤波、方框滤波、高斯滤波和中值滤波等图像平滑处理技术。这些方法在图像增强、噪声去除和特征提取等领域具有广泛的应用。
摘要由CSDN通过智能技术生成

 以下例子由此图演示:

import cv2 as cv

img=cv.imread('lena.jpg',1)

cv.imshow('lena',img)
cv.waitKey(0)
cv.destroyAllWindows()

形态学操作:

腐蚀操作:

cv2.erode(图像对象,内核(卷积核),interations)

内核:核越大,腐蚀程度越高可自行定义,例如:kernel=np.ones((3,3),np.uint8)

interations:迭代次数,默认为1.

膨胀操作:

cv2.dilate(图像对象,内核,interations)

腐蚀操作和膨胀操作顾名思义,使图像腐蚀和膨胀.

 

开运算操作:

open=cv2.morphologyEx(图像对象,cv2.MORPH_OPEN,内核)

开运算操作=腐蚀操作+膨胀操作

 

闭运算操作:

close=cv2.morphologyEx(图像对象,cv2.MORPH_CLOSE,内核)

闭运算操作=膨胀操作+腐蚀操作

 

梯度运算操作:

gradient=cv2.morphologyEx(图像对象,cv2.MORPH_CARDIENT,内核)

梯度运算操作=膨胀操作-腐蚀操作

礼帽运算操作:

tophat=cv2.morphologyEx(图像对象,cv2.MORPH_TOPHAT,内核)

礼帽运算操作=原始输入-开运算

用于分离亮区域

黑帽运算操作:

blackhat=cv2.morphologyEx(图像对象,cv2.MORPH_BLACKHAT,内核)

黑帽运算操作=闭运算-原始输入

用于分离暗区域.

自定义卷积内核:

使用cv2:        cv2.getStructuringElement(内核形状,内核尺寸,锚点位置)

内核形状:

矩形:cv2.MORPH_RECT

椭圆形:cv2.MORPH_ELLIOSE

交叉形:cv2.MORPH_EROSS

锚点位置:默认为(-1,-1)即中心点.

使用numpy:        np.ones(形状数组,数据类型)

数据类型:常用的有np.int8和np.float64

np.zeros(形状数组,数据类型)

图像平滑处理(模糊处理):

线性滤波:cv2.filter2D(图像对象,ddepth,卷积核)

ddepth:图像的深度,'-1'表示和原图像保持一样的深度.

(进行简单的平均卷积操作)均值滤波:cv2.blur(图像对象,卷积核)

方框滤波:cv2.boxFilter(图像对象,-1,卷积核,normalize)

-1:表示和图像颜色通道保持一致,一般情况下固定用-1.

normalize:选择是否归一化,True则和均值滤波效果一致,False则可能会数值越界(即>255),若是越界则一律为'255'.

高斯滤波:cv2.GaussianBlur(图像对象,卷积核,权重)

img=cv.GaussianBlur(img,[5,5],1)

中值滤波:cv2.medinaBlur(图像对象,卷积核)

img=cv.blur(img,[5,5])

 小结:

自定义内核一般用numpy定义全为1的矩阵比较多.且内核尺寸一般为单数(即3、5、7)

图像模糊处理关于核的参数只要输入大小即可,不需要单独定义,而形态学处理则需定义内核后填入.

形态学操作除基础的腐蚀、膨胀操作外,其余所使用的内核可以大些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值