当前位置: 首页 > news >正文

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

目录

一、图像亮度变换

1、亮度变换

2、线性变换

3、直接像素值修改

二、形态学变换

1、核

2、腐蚀

3、膨胀

三、高级形态学变换

1、开运算

2、闭运算

3、礼帽运算

4、黑帽运算

5、形态学梯度


一、图像亮度变换

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

        1、亮度变换

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

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

        OpenCV调整图像对比度和亮度时,公式为:g(i,j)=\alpha f(i,j)+\beta。但是不能浅显的讲\alpha是控制对比度,\beta是控制亮度的。

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

亮度:通过\beta控制。

        2、线性变换

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

cv2.addWeighted(src1, alpha, src2, beta, gamma)

src1:第一张输入图片

alpha:第一张图片的权重

src2:第二张输入图片

beta:第二张图片的权重

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

        3、直接像素值修改

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

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)。这样做的结果就是会将二值化图像中的白色部分尽可能的压缩

erosion=cv.erode(car,kernel,iterations=1)

iterations:迭代次数

        3、膨胀

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

dilation=cv.dilate(car,kernel,iterations=1)

三、高级形态学变换

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

cv2.morphologyEx(src, op, kernel)

src:输入二值图像

op:操作类型(如下)

kernel:核(结构元素)

iterations(可选):迭代次数

        1、开运算

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

        2、闭运算

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

        3、礼帽运算

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

        4、黑帽运算

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

        5、形态学梯度

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

http://www.dtcms.com/a/315907.html

相关文章:

  • 基于Flask的微博话题多标签情感分析系统设计
  • 李宏毅深度学习教程 第12-13章 对抗攻击 + 迁移学习transfer learning
  • NLP——BERT模型全面解析:从基础架构到优化演进
  • Idea无法识别Maven项目处理
  • 机器翻译的局限性:歧义、文化差异、专业术语翻译难题
  • Python-深度学习--1交叉熵损失函数
  • aab文件直接安装到手机
  • 西门子PLC基础指令4:置位指令 S、复位指令 R
  • 超越注意力机制
  • 【基础】第二篇 Java 类的定义、构造器、成员变量与方法详解
  • hyper-v实战系列:显卡虚拟化(GPU分区)--windows篇详解
  • SpringCloud学习-------Eureka详解
  • FPGA设计思想与验证方法学系列学习笔记003
  • 基于Django的计算机资源爬虫及可视化系统的设计与实现
  • 【motion】HumanML3D 的安装2:psbody-mesh安装成功
  • Django中的转发与重定向详解
  • 利用m0改造循迹模块处理笔记00
  • Windows 安装 RabbitMQ 消息队列超详细步骤(附加详细操作截屏)
  • kettle插件-kettle http post plus插件,轻松解决https post接口无法调用文件流下载问题
  • python的高校考研交流系统
  • FastAPI快速入门P2:与SpringBoot比较
  • ESP-idf框架下的HTTP服务器\HTML 485温湿度采集并长传
  • windows如何查限制每个用户占用的显存大小
  • Node.js高并发下的内存泄漏排查与解决实录
  • 微信小程序的合规检测
  • (LeetCode 每日一题) 3477. 水果成篮 II (暴力)
  • Pytorch-06 如何开启模型训练(模型训练工作流梳理)
  • 几乎不会存在Store Buffer中的指令不提交缓存的情况~
  • Rust进阶-part3-生命周期
  • AI的第一次亲密接触——你的手机相册如何认出你的猫?