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

从零开始学cv-6:图像的灰度变换

文章目录

  • 一,简介:
  • 二、图像的线性变换
  • 三、分段线性变换
  • 四,非线性变换
    • 4.1 对数变换
    • 4.2 Gamma变换
  • 五,效果:


一,简介:

图像灰度变换涉及对图像中每个像素的灰度值执行数学运算,进而调整图像的视觉效果或突出其特定特征。作为一种基础的图像处理方法,灰度变换常用于图像的预处理和增强阶段。由于其独特的特性,灰度变换在工业领域中被广泛应用于缺陷检测、异常检测以及在恶劣环境下的图像重建等场景。
灰度变换的本质是根据特定的规则(即灰度映射函数)调整图像中每个像素的灰度值,以此来改变图像灰度的动态范围。根据灰度映射函数的不同性质,灰度变换可分为线性变换、分段线性变换和非线性变换。在非线性变换中,常见的类型包括对数变换、指数变换以及幂律变换(如n次幂、n次方根)。这些变换方法能够有效地改善图像质量,满足不同应用场景的需求。

二、图像的线性变换

线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。线性灰度变化对图像的每一个像素作线性拉伸,可以凸显图像的细节,提高图像的对比度。
线性灰度变换可以由以下公式描述 :
在这里插入图片描述
式中,D 为原始图像的灰度值,Dt 为线性灰度变换后的图像灰度值。
当 α = 1 , β = 0 时,保持原始图像不变
当 α = 1 , β > 0 ,图像的灰度值上移,灰度图像颜色发白(彩色图像颜色发亮)
当 α = 1 , β < 0时,图像的灰度值下移,灰度图像颜色发黑(彩色图像颜色发暗)
当 α > 1 ,图像的对比度增强
当 0 < α < 1 时,图像的对比度减小
当 α < 0 , β = 255时,图像暗区域变亮,亮区域变暗,图像求补
当 α = − 1 , β = 255时,图像的灰度值反转
可以这样理解参数的作用:参数 a 在灰度变换中起到了缩放像素值的作用,可以视为图像整体对比度的调整因子。当 a 大于1时,图像中所有像素的灰度值都会按照 a 的比例进行放大。这意味着原本灰度值较高的像素在放大后将变得更加明亮,而原本灰度值较低的像素虽然也有所增加,但增加的幅度相对较小。这样的操作会增强图像的对比度,使得明暗差异更加明显,从而拉伸图像的对比度范围。
参数 β 则是图像灰度值的偏移量,它通过在每个像素的灰度值上加上 β 值,实现了图像的整体亮度的提升或降低。当 β 为正值时,图像的整体亮度会增加,使得图像看起来更亮,即发白;相反,当 β 为负值时,图像的整体亮度会降低,使得图像看起来更暗,即发黑。因此,β 参数可以用来调整图像的亮度,使图像更适合特定的显示需求或视觉效果。

三、分段线性变换

分段线性变换是一种常见的图像处理技术,它通过将图像的灰度范围分割成几个不同的区间,并对每个区间分别应用不同的线性变换来调整图像的亮度和对比度。这种变换的灵活性使得它能够针对图像的不同部分进行精确的调整。
分段线性变换函数可以增强图像各部分的反差,增强感兴趣的灰度区间、抑制不感兴趣的灰度级。
分段线性函数的优点是可以根据需要拉伸特征物的灰度细节,一些重要的变换只能用分段函数来描述和实现,缺点则是参数较多不容易确定。
公式为:
在这里插入图片描述
变换步骤

  1. 确定区间:根据图像的特点和需求,确定需要划分的灰度区间。例如,可以将图像的灰度范围分为三个部分:低灰度区间、中灰度区间和高灰度区间。
  2. 设置变换函数:为每个区间设置一个线性变换函数。这些函数的参数(斜率和截距)需要根据具体的需求来确定,以实现不同的图像增强效果。
  3. 应用变换:对图像中的每个像素,根据其灰度值所属的区间,应用相应的线性变换函数。

简单概述为,分段线性变换与线性变换相似,唯一的区别就是加了像素值范围判定,即在不同的像素值区间执行不同的线性变换.

四,非线性变换

4.1 对数变换

对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率小。对数变换将输入中范围较窄的低灰度值映射为范围较宽的灰度级,输入中的高灰度值则被映射为范围较窄的灰度级。对数变换后,较暗区域的对比度提升,可以增强图像的暗部细节,简而言之是对图像中低灰度细节进行增强
公式:
在这里插入图片描述
曲线为:
在这里插入图片描述

4.2 Gamma变换

Gamma校正多用在图像整体偏暗,扩展灰度级。另外一种情况是,图像有“冲淡”的外观(很亮白)需要压缩中高以下的大部分的灰度级。伽马变换本质上是对图像矩阵中的每个值进行幂运算。0< γ <1时,拉伸图像中灰度级较低的区域,压缩灰度级较高的部分,增加图像的对比度;γ>1 时,拉伸图像中灰度级较高的区域,压缩灰度级较低的部分,降低图像的对比度。
伽马变换通过非线性变换对人类视觉特性进行补偿,最大化地利用有效的灰度级带宽。很多拍摄、显示、打印设备的亮度曲线都符合幂律曲线,因此伽马变换广泛应用于各种设备显示效果的调校,称为伽马校正。

公式为:
在这里插入图片描述
曲线为:
请添加图片描述
伽马变换的曲线形状由伽马值 γ 决定,当 γ < 1 时,虽然也是增强暗部,但其效果和对数变换不同,对数变换的增长速度随输入值的增加而减慢,而伽马变换的增长速度是一致的。
与对数变换不同的是伽马变换是对整体灰度值进行改变,所以说如果想要对光照条件较好的阴影部分进行校正,使用对数变换较好,如果是对光照情况较差,整体像素全部偏暗或偏亮,则用伽马变换效果较好。
实现代码:

import cv2
import numpy as np# 图像灰度变换def nonlinear_logarithm_transform(img_gray, c):  # 对数变换result = c * np.log(1.0 + img_gray)# uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255# 这里要转换成unit8,否则会报错result = np.uint8(result)return resultdef gamma_bianhuan(image,gamma):  # gamma 变换image=image/255.0New=np.power(image,gamma)return Newimg = cv2.imread(r"E:\PS\2.png")  # 读取彩色图像(BGR)
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 颜色转换:BGR(OpenCV) -> Gray
h, w = img.shape[:2]  # 图片的高度和宽度
img1 = img.copy()
img2 = img.copy()
# Dt[i,j] = alfa*D[i,j] + beta
alfa1, beta1 = 3, 50alfa2, beta2 = 3, 50for i in range(h):for j in range(w):img1[i][j] = min(255, max((alfa1*imgGray[i][j] + beta1), 0))   # 线性变换if imgGray[i][j] < 100:img2[i][j] = min(255, max((alfa2 * imgGray[i][j] + beta2), 0))   # 分段线性变换img3 = nonlinear_logarithm_transform(imgGray,40)
img4 = gamma_bianhuan(imgGray,0.4)
cv2.imshow("liner",img1)
cv2.imshow("liner2",img2)
cv2.imshow("log",img3)
cv2.imshow("gam",img4)
cv2.waitKey(0)

五,效果:

线性变换:
在这里插入图片描述
分段线性变换:
在这里插入图片描述
对数变换:‘
在这里插入图片描述

伽马变换:
在这里插入图片描述

相关文章:

从零开始学cv-6:图像的灰度变换

文章目录 一&#xff0c;简介&#xff1a;二、图像的线性变换三、分段线性变换四&#xff0c;非线性变换4.1 对数变换4.2 Gamma变换 五&#xff0c;效果: 一&#xff0c;简介&#xff1a; 图像灰度变换涉及对图像中每个像素的灰度值执行数学运算&#xff0c;进而调整图像的视觉…...

使用Apache POI和POI-OOXML实现word模板文档自动填充功能

最近接到一个新的需求&#xff0c;用户创建好模板文件保存到模板库&#xff0c;然后使用在线文档编辑器打开模板时&#xff0c;将系统数据填充到模板文件并生成新的word文件&#xff0c;然后在线编辑&#xff0c;研究使用Apache POI和POI-OOXML实现了这个功能。 Maven依赖 <…...

【HarmonyOS NEXT星河版开发学习】综合测试案例-各平台评论部分

目录 前言 功能展示 整体页面布局 最新和最热 写评论 点赞功能 界面构建 初始数据的准备 列表项部分的渲染 底部区域 index部分 知识点概述 List组件 List组件简介 ListItem组件详解 ListItemGroup组件介绍 ForEach循环渲染 列表分割线设置 列表排列方向设…...

垂直行业数字化表现抢眼 亚信科技全年利润展望乐观

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年8月14日&#xff0c;亚信科技控股有限公司&#xff08;股票代码&#xff1a;01675.HK&#xff09;公布了公司截至2024年6月30日的中期业绩。 财报数据显示&#xff0c;2024年上半年&#xff0c;亚信科技的营业收入为人民币…...

EmguCV学习笔记 VB.Net 4.1 颜色变换

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 教程VB.net版本请访问&#xff1a;EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问&#xff1a;EmguCV学习笔记 C# 目录-CSD…...

【MySQL进阶之路】表结构的操作

目录 创建表 查看表 查看数据库有哪些表 查看表结构 查看表的详细信息 修改表 表的重命名 添加一列 修改某一列的属性 删除某一列 对列进行重命名 删除表 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 【MySQL进阶之路】MySQL基础——从零认识MySQL-CSDN博客 创…...

3分钟搞定PDF转PPT!你一定要知道的3款转换神器!

在数字办公成为主流的当下&#xff0c;我们每天会收到各类基于数字化方式存储的办公文档&#xff0c;如PDF、PPT、Word、Excel文档等。 日常处理这些文档时&#xff0c;经常需要在不同格式的文档之间进行切换和转换&#xff0c;其中将PDF转换为PPT就是一个非常高频的需求&…...

【EasyExcel】导出excel-设置动态表头并导出数据

需求背景&#xff1a; 导出excel的设置某些表头动态导出(可以根据筛选条件或一些属性的数据量)&#xff0c;方便导出后用户查看想看的信息。 一、技术选型&#xff1a; easyExcel的原生数据处理 二、方案设计&#xff1a; 根据EasyExcel支持的表头List<List<String>…...

深入探索 Elasticsearch 8:新特性与核心原理剖析(上)

深入探索 Elasticsearch 8&#xff1a;新特性与核心原理剖析 目录 一、引言 &#xff08;二&#xff09;版本 8 的重要意义 二、Elasticsearch 8 的新特性 三、Elasticsearch 的核心原理 一、引言 &#xff08;一&#xff09;Elasticsearch 简介 在大数据处理和搜索领域…...

瑜伽馆预约小程序,在线预约,提高商业价值

随着大众生活质量的提高&#xff0c;对休闲运动的关注逐渐加大&#xff0c;瑜伽作为一种身心放松、改善体态的运动&#xff0c;深受女性用户的喜爱。目前&#xff0c;各大瑜伽馆开始结合数字化&#xff0c;建立了新型的线上小程序&#xff0c;帮助大众快速预约体验瑜伽&#xf…...

Python--数据类型转换

在Python中&#xff0c;数据类型的转换是一个常见的操作&#xff0c;涉及将一种数据类型转换为另一种数据类型。Python提供了多种内置函数用于执行这种转换&#xff0c;如 int()、str()、float()、list()、tuple()、set()、dict() 等。下面详细讨论Python的基本数据类型及它们之…...

域控ntdsutil修改架构、域命名、PDC、RID、结构主机

#笔记记录# FSMO盒修改 1、提示访问特权不够&#xff0c;不能执行该操作&#xff0c;0x2098 清除缓存账号密码并修改新架构管理员账号密码即可。 背景&#xff1a;更替架构主机、域命名主机 C:\Windows\system32>ntdsutil ntdsutil: roles fsmo maintenance: ?? …...

解决 Swift 6 全局变量不能满足并发安全(concurrency-safe)读写的问题

概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代&#xff0c;而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过&#xff0c;从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不…...

迈入退休生活,全职开发ue独立游戏上架steam

决定退休了。算了算睡后收入&#xff0c;也可以达到每月一万一&#xff0c;正好可以养家糊口。 既然退休了&#xff0c;那就做些想做的事情&#xff0c;别人养花养草&#xff0c;而我打算开发独立游戏上架steam。 一&#xff0c;盘点下目前的技术体系。 1&#xff0c;图形学底…...

什么是光伏气象站——仁科测控

【仁科测控&#xff0c;品质保障】光伏气象站&#xff0c;‌这一专门为光伏发电系统设计的监测设备&#xff0c;‌其核心能力在于精确且实时地捕捉那些对光伏发电效率产生关键影响的气象因素。‌这些数据不仅为评估光伏电站的发电性能提供了重要依据&#xff0c;‌更是优化运维…...

webshell免杀--免杀入门

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理webshell免杀的一些基础思路 入门级&#xff0c;不是很深入&#xff0c;主要是整理相关概念 免杀对象 1.各类杀毒软件 类似360&#xff0c;火绒等&#xff0c;查杀己方webshell的软件。 2.各类流量…...

Linux---02---系统目录及文件基本操作命令

课程回顾 操作系统 虚拟机安装 本章重点 Linux系统目录结构 常用命令 熟练区分Linux下各层目录的作用 熟练掌握Linux的常用命令&#xff08;文件命令、时间命令等&#xff09; 一、Linux系统目录结构 1.1 目录结构 /&#xff1a; 根目录&#xff0c;一般根目录下只存放…...

CSP-J/S第一轮初赛模拟赛试题

本模拟试题为本人自创&#xff0c;由于发布在 LG 所以就直接放入链接。 非经允许&#xff0c;不得转载。 本套模拟题只供大家练习使用&#xff0c;不保证难度与真实 CSP-J/S 完全符合。 本模拟赛为专业CSP类型的模拟赛&#xff0c;不存在错题、超出知识的题目。 CSP-J/S 20…...

LangGPT结构化提示词

LangGPT是Language For GPT-like LLMs的简称&#xff0c;中文名为结构化提示词&#xff0c;LangGPT是一个帮助你编写高质量提示词的工具&#xff0c;理论基础是我们提出的一套模块化、标准化的提斯提编写方法论——结构化提示词。我们希望揭开提示工程的神秘面纱&#xff0c;为…...

如何为个人网站更换ssl证书

关键步骤 1&#xff0c;确认服务器类型并下载对应证书&#xff08;这个超级简单&#xff0c;阿里云现在可以下3月免费的&#xff09;&#xff1b; 2&#xff0c;本文以nginx服务为例&#xff0c;主打的就是一个简单且快速让你搞清楚实操流程&#xff1b; linux命令 ps-ef|gr…...

美胸-年美-造相Z-Turbo真实案例:快速生成24套手游服装方案

美胸-年美-造相Z-Turbo真实案例&#xff1a;快速生成24套手游服装方案 1. 项目背景与挑战 在手游《幻境物语》的角色设计阶段&#xff0c;美术团队面临一个紧迫需求&#xff1a;为游戏中的"花语使者"职业设计24套不同风格的服装方案。传统手工绘制方案需要至少3周时…...

双模型对比:OpenClaw同时接入nanobot与云端API的性能测试

双模型对比&#xff1a;OpenClaw同时接入nanobot与云端API的性能测试 1. 测试背景与目标 最近在尝试用OpenClaw搭建一个能同时处理本地轻量任务和复杂云端任务的智能助手系统。核心需求是&#xff1a;日常简单查询走本地部署的轻量模型&#xff08;nanobot&#xff09;&#…...

【Linux信号】Linux进程信号(上):信号产生方式和闹钟

&#x1f3ac; 个人主页&#xff1a;艾莉丝努力练剑❄专栏传送门&#xff1a;《C语言》《数据结构与算法》《C/C干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法&#xff1a;从基础到进阶》《Python干货分享》⭐️为天地立心&#xff0c;为生民立命…...

三步解锁QQ空间历史说说备份:数据留存与管理实用指南

三步解锁QQ空间历史说说备份&#xff1a;数据留存与管理实用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory QQ空间数据备份是许多用户保存青春记忆和重要记录的需求。GetQzonehist…...

三菱PLC与MCGS组态农田智能灌溉系统:后发送产品包括梯形图原理图、IO分配及组态画面解析

基于三菱PLC和MCGS组态农田智能灌溉系统 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面上周刚把农田智能灌溉的项目收尾&#xff0c;把资料打包发给客户的时候&#xff0c;终于能瘫在椅子上喝杯冰可乐了。这个…...

计算机毕业设计:基于Django与LSTM的大众点评评价预测系统 Django框架 LSTM Hadoop Spark Hive 可视化 大数据 食品 食物(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…...

Synchronized 与 ReentrantLock 深度对比

前言 在Java并发编程中&#xff0c;锁机制是保证线程安全的核心手段。synchronized 和 ReentrantLock 是两种最常用的锁实现&#xff0c;面试中经常被要求对比它们的区别。 本文将深入分析两者的底层原理、功能特性、性能差异以及各自的适用场景。 一、快速概览 维度synchro…...

光阀的“第二曲线”:投影行业LCOS技术现状与发展趋势分析

1. 报告导读与核心摘要 在投影显示技术的版图中,LCoS(硅基液晶,Liquid Crystal on Silicon)长期处于一种微妙的位置:它拥有DLP无法比拟的画质潜力,却因成本和体积问题始终未能真正撼动DLP的市场地位。然而,2025-2026年行业展会上的一系列技术突破,正在改写这一格局。 …...

计算机毕业设计springboot资源分享网站 基于SpringBoot的在线知识共享与资源协作平台 SpringBoot框架下的数字化学习资料交流与社区系统

计算机毕业设计springboot资源分享网站&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展和知识经济的蓬勃兴起&#xff0c;人们对信息获取与知识共享的需…...

taocms v3.0.2漏洞防御指南:如何避免.htaccess文件被恶意利用

Taocms v3.0.2安全加固实战&#xff1a;从漏洞原理到防御体系构建 当网站管理后台的.htaccess文件成为攻击者的跳板时&#xff0c;系统安全便形同虚设。近期曝光的Taocms v3.0.2远程代码执行漏洞&#xff08;CVE-2022-25578&#xff09;正是利用了这一薄弱环节&#xff0c;攻击…...