Python-初学openCV——图像预处理(七)——亮度变换、形态学变换

目录

一、图像亮度变换

1、亮度变换

2、线性变换

3、直接像素值修改

二、形态学变换

1、核

2、腐蚀

3、膨胀

三、高级形态学变换

1、开运算

2、闭运算

3、礼帽运算

4、黑帽运算

5、形态学梯度


一、图像亮度变换

图像都是由一个个像素值组成的,图像的亮度变换实际上还是图像像素值的变换

1、亮度变换

对比度调整:图像暗处像素强度变低,图像亮处像素强度变高,从而拉大中间某个区域范围的显示精度。

亮度调整:图像像素强度整体变高或者变低

OpenCV调整图像对比度和亮度时,公式为:。但是不能浅显的讲是控制对比度,是控制亮度的。

对比度:需要通过一起控制。

亮度:通过控制。

2、线性变换

使用**cv2.addWeighted()**函数,可以对图像的像素值进行加权平均,进而改变图像的整体亮度。亮度增益可以通过向每个像素值添加一个正值来实现

python 复制代码
cv2.addWeighted(src1, alpha, src2, beta, gamma)

src1:第一张输入图片

alpha:第一张图片的权重

src2:第二张输入图片

beta:第二张图片的权重

gamma:一个标量,将被添加到权重求和的结果上,可用于调整总体亮度

3、直接像素值修改

如果只需要增加或减少固定的亮度值,可以直接遍历图像像素并对每个像素值进行加减操作

python 复制代码
numpy.clip(a, a_min, a_max)

a:输入数组

a_min:指定最小值,数组中所有小于a_min 的元素将被替换为 a_min

a_max:指定最大值,数组中所有大于a_max 的元素将被替换为 a_max

(用于对数组中的元素进行限定,将超出指定范围的元素值截断至指定的最小值和最大值之间)

二、形态学变换

一种基于形状的简单变换,它的处理对象通常是二值化图像。形态学变换有两个输入,一个输出:输入为原图像、核(结构化元素),输出为形态学变换后的图像。其基本操作有腐蚀和膨胀,这两种操作是相反的,即较亮的像素会被腐蚀和膨胀

1、核

核(kernel)其实就是一个小区域,通常为3*3、5*5、7*7大小,有着其自己的结构

示例:(一个5x5的全1数组)

2、腐蚀

腐蚀操作就是使用核在原图(二值化图)上从图像的左上角开始,滑动到图像的右下角。在滑动过程中,令核值为1的区域与被核覆盖的对应区域进行相乘,得到其最小值,该最小值就是卷积核覆盖区域的中心像素点的新像素值,接着继续滑动。由于操作图像为二值图,所以不是黑就是白,这就意味着,在被核值为1覆盖的区域内,只要有黑色(像素值为0),那么该区域的中心像素点必定为黑色(0)。这样做的结果就是会将二值化图像中的白色部分尽可能的压缩

python 复制代码
erosion=cv.erode(car,kernel,iterations=1)

iterations:迭代次数

3、膨胀

也就是从图像的左上角开始,滑动到图像的右下角,但与腐蚀恰恰相反,在滑动过程中,令核值为1的区域与被核覆盖的对应区域进行相乘,得到其最大值,该最大值就是核覆盖区域的中心像素点的新像素值,接着继续滑动。由于操作图像为二值图,所以不是黑就是白,这就意味着,在卷积核覆盖的区域内,只要有白色(像素值为255),那么该区域的中心像素点必定为白色(255)。这样做的结果就是会将二值化图像中的白色部分尽可能的扩张

python 复制代码
dilation=cv.dilate(car,kernel,iterations=1)

三、高级形态学变换

常用于图像的噪声去除、边缘提取、图像闭合/开口等操作

python 复制代码
cv2.morphologyEx(src, op, kernel)

src:输入二值图像

op:操作类型(如下)

kernel:核(结构元素)

iterations(可选):迭代次数

1、开运算

开运算是先腐蚀后膨胀,其作用 是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像

2、闭运算

闭运算与开运算相反,是先膨胀后腐蚀,作用 是消除/"闭合"物体里面的孔洞,特点:可以填充闭合区域

3、礼帽运算

礼帽运算用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用礼帽运算进行背景提取(原图与开运算结果图之差)

4、黑帽运算

黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。黑帽运算用来分离比邻近点暗一些的斑块(原图与闭运算结果图之差)

5、形态学梯度

形态学梯度是一个基于结构元素的图像处理方法,它通过比较原图像与膨胀图和腐蚀图之间的差异来突出图像边缘特征。具体来说,对于图像中的每个像素点,其形态学梯度值是该像素点在膨胀后的图像值与其在腐蚀后的图像值之差。这样得到的结果通常能够强化图像的边缘信息,并且对噪声有一定的抑制作用

相关推荐
小程故事多_801 分钟前
开源界核弹级输出!蚂蚁 Agentar-Scale-SQL 凭 “编排式扩展” 技术,成为 Text-to-SQL 天花板
数据库·人工智能·sql·开源·aigc·embedding
北邮刘老师10 分钟前
【智能体互联协议解析】ACPs/AIP为什么还在用“落后”的“中心化”架构?
网络·人工智能·架构·大模型·智能体·智能体互联网
studytosky12 分钟前
深度学习理论与实战:反向传播、参数初始化与优化算法全解析
人工智能·python·深度学习·算法·分类·matplotlib
lisw0528 分钟前
人工智能伦理与科技向善有何区别与联系?
人工智能·机器学习
橙露29 分钟前
二通道数显控制器:工业测控的“双管家”,视觉检测中的隐形助力
人工智能·计算机视觉·视觉检测
彬匠科技BinJiang_tech35 分钟前
跨境电商物流选择指南:从痛点分析到智能决策
人工智能·erp·tms
用户85996816776938 分钟前
基于大模型LLM的开发与编程教程
人工智能
张人玉1 小时前
图像处理函数与形态学操作笔记(含 Halcon 示例)
图像处理·人工智能·笔记·halcon
北京耐用通信1 小时前
耐达讯自动化网关:用Profinet唤醒沉睡的DeviceNet流量计,省下60%改造费!
人工智能·科技·物联网·网络协议·自动化·信息与通信
南方者1 小时前
AI 驱动的异构 ETL 环境数据血缘管理系统
人工智能