《数字图像处理》笔记—灰度变换

2023-11-14

3.1 背景

本章主要讲解空间域的图像处理方法,直接对图像中的像素进行操作,主要包括:灰度变换和空间滤波。
灰度变换是对图像的各个像素进行操作,空间滤波是对每个像素的邻域进行操作。

3.1.1 灰度变换和空间滤波基础

  • 空间域处理可以表达为
    在这里插入图片描述
    在这里插入图片描述
  • 邻域原点从一个像素移动到另一个像素应用算子T,产生输出。对于任意指定的位置(x,y),输出图像g(x,y)的值等于对f中以(x,y)为原点的邻域应用算子T的结果。以上的操作称为空间滤波。
  • 最小邻域的大小为1,此时g只依赖于点(x,y)处的f值,此时T称为灰度变换函数,用s和r分别表示g和f在任一点的灰度值,则s=T(r)。
  • 举例:以下灰度变换函数,将小于k值的r值,减小s的值,倾向于黑色;将大于k值的r值,增大s的值,倾向于白色,用于对比度拉伸。
    在这里插入图片描述

3.2 基本的灰度变换函数

在这里插入图片描述

3.2.1 反转变换

  • 用于增强图像暗色区域的白色会灰色细节 : s=L-1-r

3.2.2 对数变换

  • 将输入中范围较窄的低灰度值 映射为输出中范围较宽的灰度值,如将输入到[0,L/4]映射到[0,3L/4]。这个操作用于扩展图像中的暗像素值,同时压缩高灰度值。
  • 对数变换可以压缩像素变化较大的图像的动态范围,如傅里叶频谱,如果直接线性缩放频谱图,那么只显示图像中心最亮的像素,用对数变换可以显示更大范围的灰度,将灰度值低的部分,用更大的动态范围显示

3.2.3 幂律变换

  • 显示器的显示存在gamma效应,gamma>1,将较窄范围的暗输入映射为较宽范围的输出值,这样会产生比预期更暗的图像。因此,需要使用一个gamma的倒数进行校正,校正后的图像更接近于原图像。
    在这里插入图片描述

3.2.4 分段线性变化函数

  1. 对比度拉伸
    令(r1,s1)=(rmin ,0)和(r2,s2)=(rmax ,L-1),表示将整幅图像的灰度范围(rmin,rmax)拉伸到(0,L-1)。
    在这里插入图片描述
  2. 比特平面分层
    在一幅256级灰度图像中,图像值是由8比特组成的,图像可视为8个1比特的平面组成。每个比特平面可视为一幅二值图像,最高有效的4个平面中包含大量的具有视觉意义的信息。
    在这里插入图片描述
    将图像分解成各个比特平面对图像压缩是有用的,重建所用的比特平面少于原有的比特平面。重建是通过将第n个平面的像素乘以常数2^n-1来实现的,每个平面乘以对应常数后,将所有平面相加,则可以得到灰度级图像,例如:
    在这里插入图片描述

3.3 直方图处理

r k r_k rk表示一幅L级图像f(x,y)的灰度, n k n_k nk是灰度为 r k r_k rk的像素的数量。
非归一化的直方图表示为: h ( r k ) = n k h(r_k)=n_k h(rk)=nk
归一化的直方图为: p ( r k ) = n k / M N p(r_k)=n_k/MN p(rk)=nk/MN,其中MN表示图像的行数和列数。
具有高对比的图像,像素占据了整个灰度级范围并且均匀分布;低对比度的图像直方图容器基本位于灰度级的中间。

3.3.1 直方图均衡化

  • 对于输入图像中的给定灰度值r,产生 一个输出灰度值s,灰度映射函数T, s = T ( r ) s=T(r) s=T(r),函数T是一个单调递增函数,并且值域为[0,L-1]。在一些公式中需要使用逆变换 r = T − ( s ) r=T^-(s) r=T(s),此时T必须是严格单调递增函数。
  • 两者的区别在于,单调递增函数可以执行一对一或多对一映射,从r映射到s时不会产生歧义,但是想从映射的单个值s唯一地恢复r的多个值是不可能的,因此需要严格递增函数来保证逆映射是单值的
    在这里插入图片描述
  • p r ( r ) p_r(r) pr(r)是原图像中灰度值的概率密度函数,经灰度映射函数 s = T ( r ) s=T(r) s=T(r) p s ( s ) p_s(s) ps(s)是直方图均衡化后图像中灰度值的概率密度函数,若 T ( r ) T(r) T(r) p r ( r ) p_r(r) pr(r)已知,且 T ( r ) T(r) T(r)可微,则变换前后的PDF满足以下关系:
    在这里插入图片描述
    令灰度变换函数为:
    在这里插入图片描述
    其中右侧的积分是概率密度函数的积分,因为PDF总是为正,函数的积分就是函数下方的面积,该灰度变换函数是递增的,满足条件。在该变换函数的作用下,原图的概率密度函数会变为:
    在这里插入图片描述在这里插入图片描述
    由于图像的灰度值概率是离散的,用概率与求和来代替概率密度函数和积分,灰度变换函数的离散形式为:
    在这里插入图片描述
  • 假设一幅大小为 64 × 64 像素的3比特图像 ( L = 8 ) ,其中灰度级是范围 [0,7] 中的整数。
    在这里插入图片描述
    其灰度变换函数为:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    直方图均衡化后产生了5个不同的灰度级,原有的灰度级567都映射到了7中。直方图均衡化会使得图像的灰度级覆盖更宽的灰度范围,但如果原本的图像已经覆盖了整个灰度级,那么其变换函数几乎是线性的,输入被映射为几乎相等的输出,作用不大。

3.3.2 直方图规定化

  • p r ( r ) p_r(r) pr(r)表示输入图像的灰度值概率密度分布, p z ( z ) p_z(z) pz(z)表示规定的灰度值概率密度函数,它们都可以通过灰度变化函数进行均衡化,得到均衡化的概率密度分布 p s ( s ) p_s(s) ps(s),通过逆变换就可以得到s到z的变换关系
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    直方图均衡化的过程为:
  1. 计算输入图像的直方图 p r ( r ) p_r(r) pr(r),并用灰度变换函数 T ( r ) T(r) T(r)映射到均衡化的图像灰度 s k s_k sk
  2. 对于规定的图像直方图 p z ( z ) p_z(z) pz(z),用灰度变换函数 G ( z ) G(z) G(z)计算均衡化后的图像灰度值;
  3. 对于 s k s_k sk中的每个值,找到与其最接近的 G ( z ) G(z) G(z),此时的 z q z_q zq便是与 s k s_k sk对应的灰度值。
  • 举例:对于原直方图和规定直方图分别为:
    在这里插入图片描述
    第一步,是得到原直方图均衡化的结果
    在这里插入图片描述
    第二步,是使用规定直方图的概率分布,计算 G ( z ) G(z) G(z)
    在这里插入图片描述
    在这里插入图片描述
    第三步,找到 s k s_k sk G ( z ) G(z) G(z)的对应值。例如, s 0 = 1 s_0=1 s0=1 G ( z 3 ) = 1 G(z_3)=1 G(z3)=1,那么就有对应 s 0 − z 3 s_0-z_3 s0z3,即直方图均衡化中的图像中,值为1的每个像素映射到直方图规定化后的图像中值为3的像素
    在这里插入图片描述

3.3.3 局部直方图

  • 定义一个邻域,将其中心在水平或垂直方向上从一个像素移动到另一像素。在每个位置上,计算邻域中的各点的直方图,得到直方图均衡化或规定化的变换函数,用于映射邻域中心像素的灰度。然后移动邻域的中心,重复以上过程。

3.3.4 直方图统计量增强图像

  • 从直方图得到的统计量信息可以用于增强图像,灰度值r对于其均值m的第n阶矩定义为 u n u_n un,均值m是平均灰度的测度,方差是第2阶矩,表示图像对比度的测度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在计算中,我们可以通过灰度值来直接计算得到它们,而不必使用直方图计算出概率分布
    在这里插入图片描述
    在这里插入图片描述
  • 局部均值和局部方差表示的是像素邻域内的信息,使用局部信息在图像的几个区域中来增强图像,并且保持其余背景不变。对于图像中的某一个像素,其局部均值和方差,均小于全局均值和方差,那么其就作为一个待处理的像素点
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《数字图像处理》笔记—灰度变换 的相关文章

  • OPENCV手势识别抓取图片

    PENCV手势识别抓取图片 一位油管的小哥做的项目非常棒 照着写了一个 代码 注意 看好cvzone的版本 太新的版本中有个函数没有 如果找不到这个函数的时候请更换一下库的版本 import cv2 from cvzone HandTrac
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • python批量处理

    python opencv图像二值化批量处理 from skimage import data dir io transform color filters import numpy as np import cv2 def convert
  • 图像处理_Ostu算法(大律法、最大类间方差法)

    一 算法简述 Otsu算法是一种用于二值化最佳阈值的选取方法 基本原理是根据阈值T将图像中的像素点分为C1和C2两类 不断的调整阈值T之后若此时两类之间存在最大的类间方差 那么此阈值即是最佳阈值 二 算法理论 1 基础公式 1 2 3
  • 使用python实现简单全连接神经网络

    最近在学习神经网络的相关知识 特在此做一个笔记 python语言的功能很强大 可以使用很少的代码实现很多功能 因此大家如果想研究深度学习的话 一定要懂得python语言 这篇笔记记录我的第一次使用python编写神经网络代码的过程 其中代码
  • 保姆级使用PyTorch训练与评估自己的ConvNeXt网络教程

    文章目录 前言 0 环境搭建 快速开始 1 数据集制作 1 1 标签文件制作 1 2 数据集划分 1 3 数据集信息文件制作 2 修改参数文件 3 训练 4 评估 5 其他教程 前言 项目地址 https github com Fafa D
  • 基于Matlab实现图像拼接技术(附上完整源码+图像)

    图像拼接是数字图像处理中一个重要的问题 它的目标是将多张图像拼接成一张更大的图像 图像拼接技术在许多领域中都有广泛的应用 如全景图像拼接 医学图像拼接 遥感图像拼接等 本文将介绍一种基于Matlab实现的图像拼接技术 即基于特征匹配的图像拼
  • (详细步骤和代码)利用A100 GPU加速Tensorflow

    利用A100 GPU加速Tensorflow NVIDIA A100 基于 NVIDIA Ampere GPU 架构 提供一系列令人兴奋的新功能 第三代张量核心 多实例 GPU MIG 和第三代 NVLink Ampere Tensor C
  • OpenCV入门【C++版】

    OpenCV基础入门 C 语言 Chapter1 读取图片 视频 摄像头 从文件读取图片 从文件读取视频 读摄像头 Chapter2 基础函数 Chapter3 调整和剪裁 Chapter4 绘制形状和文字 Chapter5 透视变换 Ch
  • SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)

    SIFT和SURF的替代算法 ORB Oriented FAST and Rotated BRIEF 快速定向和旋转 1 效果图 2 源码 参考 1 用于关键点检测和描述的SIFT Scale Invariant Feature Trans
  • 【matlab图像处理笔记2】【图像变换】(一)图像的算术运算与几何变换、图像插值算法

    文章目录 前言 图像的算术运算 图像相加 图像差分 图像乘法 图像除法 图像的线性组合 图像的几何变换 图像平移 图片镜像 图片转置 图像旋转 图像缩放 图像插值算法 最近邻插值算法 双线性插值算法 单线性插值 双线性插值 双三次插值算法
  • Edraw Max教程】如何有趣的创建梦幻般的思维导图

    Edraw Max 亿图图示 是一款综合图形图表制作软件 它包含丰富的实例和模版 帮助您轻松创建流程图 网络拓扑图 组织结构图 商业图表 工程图 思维导图 软件设计图和平面布局图等 亿图采用更智能和人性化的绘制方式 最大程度帮助设计者降低工
  • MATLAB算法实战应用案例精讲-【图像处理】缺陷检测(补充篇)

    目录 前言 疵点缺陷识别 1边缘增强 1 1经典算子 1 2坯布疵点边缘检测
  • 人工智能超分辨率重建:揭秘图像的高清奇迹

    导言 人工智能超分辨率重建技术 作为图像处理领域的一项重要创新 旨在通过智能算法提升图像的分辨率 带来更为清晰和细致的视觉体验 本文将深入研究人工智能在超分辨率重建方面的原理 应用以及技术挑战 1 超分辨率重建的基本原理 单图超分辨率 利用
  • Python图像处理:批量添加水印的优雅实现与进阶技巧

    1 简介 在日常图像处理中 为图片添加水印是一项常见任务 有多种方法和工具可供选择 而今天我们将专注于使用Python语言结合PIL库批量添加水印 需要注意的是 所选用的图片格式不应为JPG或JPEG 因为这两种格式的图片不支持透明度设置
  • 【图像配准】

    非配对配准 Non rigid registration 和配对配准 Rigid registration 是医学图像配准中常用的两种方法 它们有着不同的含义和应用 非配对配准 Non rigid registration 非配对配准是指将
  • 【图像配准】

    非配对配准 Non rigid registration 和配对配准 Rigid registration 是医学图像配准中常用的两种方法 它们有着不同的含义和应用 非配对配准 Non rigid registration 非配对配准是指将
  • 友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

    来源 友思特 机器视觉与光电 友思特分享 CamSim相机模拟器 极大加速图像处理开发与验证过程 原文链接 https mp weixin qq com s IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科 为您提供最新资讯 随着
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • 图像分割-Grabcut法(C#)

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 本文的VB版本请访问 图像分割 Grabcut法 CSDN博客 GrabCut是一种基于图像分割的技术 它可以用于将图像中的前景和背景分离

随机推荐

  • Java 数据结构之双向链表

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net lovoo article details 51771321 一 概述 1 什么时双向链表 链表中的每个节点即指向前面一个节点 也指向后面一个节点
  • 解决Mysql (1064) 错误: 1064 - You have an error in your SQL syntax;

    我在给数据库中的表添加数据的时候 写的语句是 INSERT INTO order VALUES 2 编号B 表结构 出现了错误 INSERT INTO order VALUES 2 编号B 1064 You have an error in
  • Spring AOP (二)

    下面介绍 AspectJ语法基础 一 切点表达式函数 AspectJ的切点表达式由关键字和操作参数组成 如execution greetTo 的切点表达式 execution为关键字 而 greetTo 为操作参数 两者联合起来表示目标类g
  • cv2.VideoCapture()

    一 语法 cap cv2 VideoCapture 0 说明 参数0表示默认为笔记本的内置第一个摄像头 如果需要读取已有的视频则参数改为视频所在路径路径 例如 cap cv2 VideoCapture video mp4 二 语法 cap
  • el-tab 切换时添加动画

    需求 在点击切换页面的时候添加动画 解决 用的是 Animate css 1 安装依赖 npm install animate css save 2 在main js里面引入 import animate css 3 在页面中使用 第一步
  • 断开的管道 java.io.IOException: Broken pipe

    此类报错首次接触 在阅览一些文章后 总结如下 pipe是管道的意思 管道里面是数据流 通常是从文件或网络套接字读取的数据 当该管道从另一端突然关闭时 会发生数据突然中断 即是broken 对于文件File来说 这可能是文件安装在已断开连接的
  • VM ware14在win10系统出现虚拟机繁忙/无法正常启动、关闭虚拟机

    VM版本 VM warestation14 windows版本 Windows10 Linux版本 CentOS 7 出现的一些问题 1 无法正常关闭虚拟机 关机界面最后的单词显示为 halting 并一直呈该状态 2 强制关闭虚拟机电源后
  • 【C语言进阶】重新认识字符型变量

    引例 首先我们看一个简单的例子 include
  • 再谈递归——直接法 vs 递归法

    直接法就是有一个直接的思路 算法来解决问题 什么样的数据结构 第一步干什么 然后干什么 最后干什么 递归法的感觉是 好像也没想出什么具体的算法 莫名其妙的就把题解了 解完也没什么深刻的印象怎么解的 因为递归就是base case 递推 而b
  • SQLSever创建表和约束

    表的基本概念 概念 由数据按一定的顺序和格式构成的数据集合 是数据库的主要对象 每一行代表一个记录 每一列代表一个属性 设计表 创建前考虑如下特征 表中要包含数据类型 表中列数 每一列中的数据类型 那些列允许空值 是否使用以及何时约束 那些
  • eclipse实现前后端交互的初步操作

    首先new创建 选择Other 在最下面 然后 然后next起名 再两次next后进行选择 创建完成如下 所有的前端代码写在WebContent里面 所有的Java代码写在Java Resource里的src里面 创建html文件 在win
  • CSS之背景样式及边框样式

    1 背景样式 常用属性 background color 背景颜色 background image 背景图片 background repeat 背景图片的平铺方式 background position 背景图片的位置 backgrou
  • 加密、解密、加签、验签专题

    首先明确几个名词 加密 发送方利用接收方的公钥对要发送的明文进行加密 解密 接受方利用自己的私钥进行解密 公钥和私钥配对的 用公钥加密的文件 只有对应的私钥才能解密 当然也可以反过来 用私钥加密 用对应的公钥进行解密 签名 发送方用一个哈希
  • 智能家居系统中网关与服务器如何连接?

    原文点击打开链接 在新型智能家居系统中 家庭网关将取代PC机作为家庭控制中心 传统客户端 服务器模式不能保持家庭网关与远程服务器实时连接 基于百万级的家庭网关与服务器保持长连接的目的 采用主从服务器框架进行负载均衡 心跳机制保障网关与服务器
  • 容器安全最佳实践入门

    作者 Cloudberry 译者 王者 策划 万佳 保证容器安全是一项复杂的任务 这个问题域很广 面对大量的检查清单和最佳实践 你很难确定采用哪个解决方案 所以 如果你要实现容器安全策略 应该从哪里开始呢 我建议从最基本的开始 理解容器安全
  • v-model.number的坑,自动清除小数点后的0

  • Android7.0 获取蓝牙设备电量

    参考http blog csdn net jcxxxxx55 article details 52847291 locationNum 4 fps 1 1 修改 HeadsetStateMachine packages apps Bluet
  • 有趣的数据结构算法16——线索二叉树的构建

    有趣的数据结构算法16 线索二叉树的构建 什么是线索二叉树 线索二叉树的实现形式 线索二叉树的代码实现 线索二叉树的初始化 线索的串联 全部实现代码 GITHUB下载连接 深度遍历不仅仅有递归的方法噢 还有通过建立线索二叉树进行遍历的方法
  • 在pycharm上安装Tensorflow1.13 win10

    Tensorflow安装教程 清明回家就折腾了几天的tensorflow 我是使用pycharm安装的 所以下面基于pycharm进行安装 tensorflow1 13 0基础配置 python3 7 cuda10 0 适合cuda的cuD
  • 《数字图像处理》笔记—灰度变换

    3 1 背景 本章主要讲解空间域的图像处理方法 直接对图像中的像素进行操作 主要包括 灰度变换和空间滤波 灰度变换是对图像的各个像素进行操作 空间滤波是对每个像素的邻域进行操作 3 1 1 灰度变换和空间滤波基础 空间域处理可以表达为 邻域