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

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(使用前将#替换为@)

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

  • Halcon实战记录之二《判断两个直线或者矩形是否相交》

    项目中使用到需要判断两个矩形是否相交 由于我使用Halcon不久 对其算子还不熟悉 不知道是否有现成的算子可以直接实现 如果有 还请各位朋友给留言指出 先谢谢了 我这里用了如下的方法 1 如果两个矩形相交 那么它们中的线段一定会有相交的 我
  • c#图像几何特征匹配

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks using Ope
  • 通过matlab实现数字图像处理中的抠图换背景功能

    适合背景为蓝色的图片 效果最好 如果背景色为别的颜色 可对代码进行调整修改后使用 其实这里的代码最开始由于报错已经经过我的修改了 可能出现的异常情况 1 待抠图片以及需要替换的背景图片放置在代码文件所在的目录 不然会无法读取 不出结果 2
  • 图像处理_Ostu算法(大律法、最大类间方差法)

    一 算法简述 Otsu算法是一种用于二值化最佳阈值的选取方法 基本原理是根据阈值T将图像中的像素点分为C1和C2两类 不断的调整阈值T之后若此时两类之间存在最大的类间方差 那么此阈值即是最佳阈值 二 算法理论 1 基础公式 1 2 3
  • 图像恢复(加噪与去噪)

    人工智能导论实验导航 实验一 斑马问题 https blog csdn net weixin 46291251 article details 122246347 实验二 图像恢复 https blog csdn net weixin 46
  • 【从小项目学图片处理】#1 答题卡识别

    说明 项目皆参考于网上 代码也有大部分参考原文 仅用于学习和练习图像处理操作 项目原文 Bubble sheet multiple choice scanner and test grader using OMR Python and Op
  • (详细步骤和代码)利用A100 GPU加速Tensorflow

    利用A100 GPU加速Tensorflow NVIDIA A100 基于 NVIDIA Ampere GPU 架构 提供一系列令人兴奋的新功能 第三代张量核心 多实例 GPU MIG 和第三代 NVLink Ampere Tensor C
  • 方框滤波,均值滤波,高斯滤波

    邻域算子 局部算子 是利用给定像素周围的像素值的决定此像素的最终输出值的一种算子 对于邻域算子 除了用于局部色调调整以外 还可以用于图像滤波 实现图像的平滑和锐化 图像边缘增强或者图像噪声的去除 而线性邻域滤波是一种常用的邻域算子 像素的输
  • SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)

    SIFT和SURF的替代算法 ORB Oriented FAST and Rotated BRIEF 快速定向和旋转 1 效果图 2 源码 参考 1 用于关键点检测和描述的SIFT Scale Invariant Feature Trans
  • SeetaFace编译成功(有windows及Android源码)

    声明 由于本人水平有限 所提供的代码 dll so等必然存在很多问题 仅用于学习 不适合工业级使用 请谨慎使用 如果造成损失 责任自负 对齐 这张照片第3个人的特征点检测有点问题 研发人员很快修正了 赞一个 下面是人脸比对 准确率还是可以接
  • 基于Matlab实现图像融合技术(附上多个仿真源码+数据)

    图像融合技术是一种将多幅图像融合为一幅图像的方法 使得这幅融合图像包含原始图像的所有信息 近年来 图像融合技术已经广泛应用于图像分割 变换和裁剪等领域 本文将介绍如何使用Matlab实现图像融合技术 实现步骤 首先 我们需要了解图像融合的基
  • 九宫格人车识别

    一 原理 通过霍夫检测圆的个数来识别小人位置 二 过程 1 二值图像 2 去掉宫格内容 便于分割 3 对二值图填补 减少纹理 4 分割九宫格 依次检测每个宫格中圆个数 5 最终显示小人所在宫格图片 在img6 jpg中 详细程序运行结果 三
  • 2021全国电设(F题)openmv的图像识别之数字识别

    基于openmv的图像识别 通过参加全国电子设计大赛F题总结出openmv4的数字识别 其它版本暂时没试过 欢迎交流 openmv简介 OpenMV是一个开源 低成本 功能强大的机器视觉模块 以STM32F427CPU为核心 集成了OV77
  • 《Pyramid Scene Parsing Network》

    Pytorch代码 1 研究问题 目前基于FCN的语义分割网络缺乏利用不同尺度全局上下文信息的能力 对于复杂图像的语义分割 如ADE20K数据集 存在问题 注 感受野的大小可以粗略表示为使用上下文信息的程度 2 研究方法 提出了金字塔场景理
  • 图像处理——我理解的傅里叶变换

    1 傅里叶变换的理解 傅里叶变换的相关数学公式目前还没有搞懂 先不整那个东西 我们主要是研究傅里叶变换的一些思想和应用 这个思想起源于牛顿研究那个三棱镜 白光透过棱镜之后会被分解为七种颜色的光 这些光叠加又能形成白光 所以说可以把一种事物分
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • MATLAB算法实战应用案例精讲-【图像处理】缺陷检测(补充篇)

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

    导言 人工智能超分辨率重建技术 作为图像处理领域的一项重要创新 旨在通过智能算法提升图像的分辨率 带来更为清晰和细致的视觉体验 本文将深入研究人工智能在超分辨率重建方面的原理 应用以及技术挑战 1 超分辨率重建的基本原理 单图超分辨率 利用
  • 友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

    来源 友思特 机器视觉与光电 友思特分享 CamSim相机模拟器 极大加速图像处理开发与验证过程 原文链接 https mp weixin qq com s IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科 为您提供最新资讯 随着
  • 图像分割-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 灰度变换和空间滤波基础 空间域处理可以表达为 邻域