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

机器视觉学习-day19-图像亮度变换

1 亮度和对比度

亮度:图像像素的整体强度,亮度提高就是所有的像素加一个固定值。

     

对比度:当对比度提高时,图像的暗部与亮部的差值会变大。
      

OpenCV调整图像亮度和对比度的公式使用一个:

代码实践步骤:图片输入→亮度变换→图片输出

1.1 亮度变换

亮度:主要通过β控制,在虚拟仿真实验中控制范围是[-100,100],如果是彩色图像,则会同时应用在每个通道的数值上。

图像原图:1.jpg

import cv2
import numpy as npif __name__ == '__main__':# 1. 图片输入path = '1.jpg'image_np = cv2.imread(path)# 2. 亮度变换# 公式:g(i,j) = α * f(i,j) + β# β控制亮度alpha = 1.0  # 先不管对比度beta = -100  # 虚拟仿真限制在 [-100到100],实际可超过这个范围# 截取,可以保证数据的上下限pix = np.clip((alpha * image_np + beta),  # 要处理的原始图像数据0,  # 下限,低于此数值会被改为此数值255  # 上限,高于此数值会被改为此数值)print(pix)print(pix.dtype)  # int16# 16位转8位pix = np.uint8(pix)# 5. 图像输出cv2.imshow('pix', pix)cv2.imwrite('pix_1.jpg', pix)cv2.waitKey(0)

代码运行结果:pix_1.jpg   (对比,右为pix_1.jpg)

  

图像亮度变换可能会改变彩色图片通道的平衡,因此实际使用时需要慎重,可以转换为灰度调节改善此问题。

1.2 对比度变换

在对比度变换的过程中,需要同时考虑α和β的数值。
α
是对比度变换的主要因素,当α大于1时,图像的对比度增加,因为图像之间的亮度差异变大了;当α位于0到1之间时,图像的对比度减小,因为像素之间的亮度差异变小了。
β
虽然β主要用于调节亮度,但是在调节对比度的时候,它也作为一个辅助因素,起到间接作用。β可以在α调节后,平移像素值,使画面亮度恢复均衡。

对比度提升是一种图像增强的手段,有助于增加梯度值,可以用于边缘检测。

原图同上:1.jpg

import cv2
import numpy as npif __name__ == '__main__':# 1. 图片输入path = '1.jpg'image_np = cv2.imread(path)# 2. 亮度变换# 公式:g(i,j) = α * f(i,j) + βalpha = 1.5  # 对比度beta = -100  # 虚拟仿真限制在 [-100到100],实际可超过这个范围# 截取,可以保证数据的上下限pix = np.clip((alpha * image_np + beta),  # 要处理的原始图像数据0,  # 下限,低于此数值会被改为此数值255  # 上限,高于此数值会被改为此数值)print(pix)print(pix.dtype)  # int16# 16位转8位pix = np.uint8(pix)# 5. 图像输出cv2.imshow('pix', pix)cv2.imwrite('pix_2.jpg', pix)cv2.waitKey(0)

代码运行:pix_2.jpg  (对比,右为pix_2.jpg)

    

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

相关文章:

  • 【模型训练篇】VeRL分布式基础 - 框架Ray
  • 分布式相关
  • 正则表达式 Python re 库完整教程
  • 如何用熵正则化控制注意力分数的分布
  • 让你的App与众不同打造独特品牌展示平台
  • Scikit-learn Python机器学习 - 类别特征提取- OneHotEncoder
  • 编写Linux下usb设备驱动方法:disconnect函数中要完成的任务
  • 【数学建模学习笔记】异常值处理
  • RAG(检索增强生成)技术的核心原理与实现细节
  • 【Unity开发】Unity核心学习(三)
  • macos自动安装emsdk4.0.13脚本
  • 在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
  • 基于SpringBoot + Vue 的宠物领养管理系统
  • 【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒
  • ANR InputDispatching TimeOut超时判断 - android-15.0.0_r23
  • 拆分TypeScript项目的学习收获:处理编译缓存和包缓存,引用本地项目,使用相对路径
  • 配置 Kubernetes Master 节点不可调度的标准方法
  • 【51单片机】【protues仿真】基于51单片机音乐喷泉系统
  • 记录测试环境hertzbeat压测cpu高,oom问题排查。jvm,mat,visulavm
  • opencv 梯度提取
  • [Android] UI进阶笔记:从 Toolbar 到可折叠标题栏的完整实战
  • 掩码语言模型(Masked Language Model, MLM)
  • android-studio 安装
  • 基于计算机视觉的海底图像增强系统:技术详述与实现
  • 如何正确校正电脑时间?
  • 【开源】AI模型接口管理与分发系统开源项目推荐
  • Redis八股小记
  • 人工智能学习:机器学习相关面试题(二)
  • 【开题答辩全过程】以 基于vue+springboot的校园疫情管理系统的设计与实现为例,包含答辩的问题和答案
  • 企业级开发模型:从软件生命周期到 Git 分支管理