3.2 图像灰度变换之对数变换

图像处理----灰度变换,图像反转,对数变换,幂次变换,位图切割,直方图显示,直方图均衡,直方图匹配 (数字图像处理matlab实现 ) 灰度变换 灰度 灰度可以认为是亮度,灰色图片中黑白的深浅程度,范围一般为0~255。图像数字化为二维矩阵后,每个点的值都代表一个像素点的灰度值。 灰度级 灰度值的表示范围,灰度级时,称图片为k比特图片。当然灰度级越高,图片的细节则越清晰,因为有更多的灰度值来描述图片。但是灰度级越大,图片所需要的存储空间也会越大,因此一般会采用256灰度级。 灰度变换 空间滤波 空间域处理图... 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在上一章,我们介绍了什么是图像的灰度变换,以及灰度变换中的图像反转。图像变换的函数式可以表示如下: g ( x , y ) = F ( f ( x , y ) ) f ( x , y ) 是位于图像点 ( x , y ) 处的像素的值 g(x,y)=F(f(x,y))\quad f(x,y)是位于图像点(x,y)处的像素的值 g(x,y)=F(f(x,y))f(x,y)是位于图像点(x,y)处的像素的值这一章我们来讨论图像的对数变换。

对数变换原理

g ( x , y ) = c log ⁡ ( 1 + f ( x , y ) ) g(x,y)=c\log_{}{(1+f(x,y))} g(x,y)=clog​(1+f(x,y)) 其中 f ( x , y ) 是位于图像点 ( x , y ) 处的像素的值 g ( x , y ) 是变换后的像素值, c 是一个常数 其中\quad f(x,y)\quad 是位于图像点(x,y)处的像素的值g(x,y)是变换后的像素值,c是一个常数 其中f(x,y)是位于图像点(x,y)处的像素的值g(x,y)是变换后的像素值,c是一个常数

对数像素变换效果

在这里插入图片描述
上图中对数曲线的形状表明,灰度图像的对数变换有如下特点:

  • 如果像素值为 0,则计算结果依旧为 0。
  • 对数变换意在对图像进行增强(使图像变亮),但是对低像素值的增加幅度要大于高像素值。
  • 对数变换虽然对低像素值和对高像素值的增加幅度不一致,但是不会改变原图像已有的灰度等级(简单一点,原图像中更亮的地方依旧更亮)。
  • 从一定情况下说,对数变换降低了图像的对比度。

效果图绘制代码

import numpy as np
import matplotlib.pyplot as plt


def uniformArray(array):
    # 计算数组的最小值和最大值
    min = np.min(array)
    max = np.max(array)

    # 归一化处理并缩放到0到255
    normArray = ((array - min) / (max - min)) * 255

    return normArray


if __name__ == '__main__':
    # 定义 x 的范围
    x = np.arange(0, 255)

    # 定义函数
    P = x  # log变换之前的像素值
    PN = uniformArray(np.log(x+1))  # log变换之后的像素值

    # 绘制图像
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 10))
    plt.plot(x, P, label='对数变换之前', color='blue')
    plt.plot(x, PN, label='对数变换之后', color='red')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('对数变换:对图像的每个像素的值进行操作(取对数后进行归一化)')
    plt.legend()
    plt.grid(True)
    plt.xlim(0, 255)  # 设置 x 轴的范围
    plt.ylim(0, 255)  # 设置 y 轴的范围
    plt.savefig('Image/tmp.png')
    plt.show()

对数变换示例

示例代码

话不多说,我们直接看对数变换的示例和真实效果,下面实例取自 数字图像处理(冈萨雷斯)第四版(这个示例其实意在告诉你,当图像的对比度太大,导致图像失真的一种可行的处理方法)

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv


def uniformArray(array):
    # 计算数组的最小值和最大值
    min_val = np.min(array)
    max_val = np.max(array)

    # 归一化处理并缩放到0到255
    normArray = ((array - min_val) / (max_val - min_val)) * 255

    # 转换为整数类型
    return normArray.astype(np.uint8)


if __name__ == '__main__':
    # 读取灰度图像
    imgGray = cv.imread('Image/Fig0102.tif', 0)

    # 对图像进行对数变换并归一化
    imgTransform = np.log1p(imgGray)  # 使用 log1p 确保输入范围正确
    imgTransform = uniformArray(imgTransform)

    # 显示图像
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 10))

    plt.subplot(121)
    plt.imshow(imgGray, cmap='gray')
    plt.axis('off')
    plt.title('Original Image')

    plt.subplot(122)
    plt.imshow(imgTransform, cmap='gray')
    plt.axis('off')
    plt.title('Transformed Image')

    plt.tight_layout()
    plt.savefig('Image/Fig0102.png', transparent=True)
    plt.show()

示例效果图

在这里插入图片描述
上图是一个傅里叶频谱,一般频谱的值的取值范围为 0~106 ,如果想用图像的方式展示频谱,那就必须对频谱进行归一化处理,也就是将频谱的值压缩到 0 ~ 255,但是如果压缩就会使得频谱中低的值在图像上无法展示,如上图中的原图像。而对数变换恰好对低像素值的增强效果更好,如上图中的变换后的图像。

图像增强-对数Log变换 图像的对数变换作用:由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升,所以就可以增强图像的暗部细节。 对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的细节,将其高灰度值部分压缩,减少高灰度值部分的细节,从而达到强调图像低灰度部分的目的。变换方法: 对数变换对图像低灰度部分细节增强的功能过可以从对数图上直观理解... 阅读详情

相关推荐

数字图像处理(22):图像对数变换

图像对数变换

2301_80417284的博客 1656

图像的对数变换和伽马变换

其中,g(x, y) 是变换后的像素值,f(x, y) 是原始像素值,c 是一个常数,用于控制对比度的增益,γ 是一个参数,称为伽马值,用于调整亮度的曲线形状。其中,g(x, y) 是变换后的像素值,f(x, y) 是原始像素值,c 是一个常数,用于控制对比度的增益。其中,f(x, y)表示输入图像的像素值,g(x, y)表示输出图像的像素值,c是常数,γ是调节参数。对空域的对数变换,是指对原图的逐像素实现对数变换的映射,可以看到在像素值较暗的地方,曲线斜率较大,在像素值较亮的地方,曲线斜率比较小;

mapleleaf2的博客 7140

图像的常用灰度变换——负片、伽马变换、对数变换、直方图均衡化、自适应灰度变换及其MATLAB实现

图像灰度变换的常用方法及其matlab实现代码,学习冈萨雷斯的《数字图像处理》浅尝

NPU_ZMT的博客 6852

图像处理 01反转变换+对数变换+幂律变换

基本灰度变换:反转变换(Image Negatives)+ 对数变换(Log Transformations) + 幂律变换(Power-Law Transformations)原理加C++代码

呦吼,你来学习了啊 3113

【MATLAB图像处理学习】2.灰度变换

前言:剩下的图像处理基本操作简介我大段跳过了 后面用到哪儿介绍到哪儿 CHAPTER 3 灰度变换及空间滤波 g(x,y)=T[f(x,y)] g(x,y)=T[f(x,y)] g(x,y)=T[f(x,y)] f(x,y)表示原图像像素点,*g(x,y)*表示处理过后图像像素点,T 3.2 灰度变换 3.2.1 函数imadjust 函数imadjust用于进行图像的灰度变换 g = imadj...

一只小地瓜 2259

数字图像处理——灰度变换

灰度变换函数 对于以像素存储的数字图像来说,可对像素进行相应的操作,可得到处理过后的图像。而对像素邻域进行计算的的叫滤波,对单像素进行变换的叫映射,而这个映射关系就是变换函数。 本文主要介绍的一些主要的灰度变换函数。 1、反转变换 反转变换可将图像的灰度级进行反转,公式可参考下式: s = L - r -1 其中,[0, L-1]为灰度级范围, r为原图像灰度级, s为变换图像灰度级。...

minjiuhong的博客 3314

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转、对数变换

目录一些基本的灰度变换函数图像反转对数变换 一些基本的灰度变换函数 如下图显示了在图像处理中频繁使用的3类基本函数: 线性(反转和恒等变换)函数 对数(对数和反对数变换)函数 幂律(nnn次幂和nnn次根变换)函数 # 灰度变换函数为了图像好看,归一化后再乘于255,缩放到相同的数值范围 x = np.arange(0, 256, 1) x1 = x + 1 equal = normalize(x) * 255 revers = (1 - normalize(x)) * 255 log

jasneik的博客 1055

图像增强—灰度变换

实验目的: 1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2、学会对图像直方图的分析。 3、掌握直接灰度变换的图像增强方法。 4.熟练掌握直力图均衡化和直方图规定化的计算过程; 二、 实验内容及步骤 1、灰度变换 (1) 图像数据读出: uiopen(‘C:\Users\Administrator\Desktop\Fig.1 medicine_pic.jpg’,1) x=imread(‘C:\Users\Administrator\Desktop\Fig.1 medicin

tomatoaaaa的博客 1756

《数字图像处理》第三章 灰度变换与空间滤波学习笔记(3.1-3.2)反转、对数、幂律、分段线性等变换

空间域指图像平面本身,其处理直接作用于像素矩阵(区别于频率域的变换处理)。

懒人的技术笔记 1586

灰度变换 - 对数变换

对数变换的公式为:其中:c是伸缩系数,常设为1。src为输入的原图像,dst为经过对数变换的输出图像对数变换的曲线为:由曲线的形状可以发现,对数变换将输入中范围较窄的低灰度值映射为输出中灰度值较宽的部分。也就是对数变换可以提升原图中暗区的对比度,同时可以压缩明亮区的对比度。反对数变换的效果刚好相反。

Henry的博客 2927

电磁仿真软件CST2020 下载链接及安装破·解教程笔记

众所周知,配环境是安装软件最头疼的事情。CST2020我调了一上午,网上现有的安装教程良莠不齐,很难有一篇文章能够全流程的讲述安装过程以及遇到的问题。正好今天我要给另一台电脑装软件,借此机会把安装过程记录下来,以供将来使用和他人借鉴。 首先提供下载地址: 百度网盘 链接:https://pan.baidu.com/s/1cDJZelufj-nliUfekMNpEA 提取码:8ihx 附: 根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软

weixin_42845306的博客 3万+

数字图像处理(18): 图像灰度变换——线性灰度变换 和 非线性灰度变换(对数变换 与 伽马变换)

目录 1 灰度变换简介 2 线性灰度变换­—图像反转 3 非线性灰度变换 3.1 对数变换 3.2 伽马变换 参考资料 1 灰度变换简介 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。灰度变换其实质就是按一定的规则修改图像每一个像素的灰度,从而改变图像的灰度范围。常见的灰度变换...

TechArtisan6的博客 6万+

宝塔面板全栈部署指南:Node后端+React前端与数据库配置实战

本文提供了一份详尽的宝塔面板全栈部署实战指南,涵盖Node.js后端、React前端与数据库的完整配置流程。文章深入解析了环境准备、数据库创建与导入、Node服务部署、PM2进程守护、React应用构建与托管,以及线上环境变量管理与安全配置等核心步骤,帮助开发者高效、稳定地将项目部署至生产环境。

weixin_29232121的博客 89

数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)

数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换) 空间域处理是直接对像素进行操作的方法,这是相对于频率域处理而言的。空间域处理主要分为两大类:灰度变换和空间滤波。灰度变换在图像单个像素上操作,主要以对比度和阈值处理为目的。空间滤波涉及改善性能的操作,通过像元领域来处理。 空间域处理均可由下式表达: 表示f(x, y)输入图像,g(x,y) 表示输出图像,T 是变换算子(数学规则) 灰度变换可以看作领域大小为1*1的空间域处理,这...

yishuihanq的博客 7789

k8s 查看cpu使用率最高的pod

在 Kubernetes 中,可以使用命令查看 Pod 的资源使用情况,从而找到 CPU 使用率最高的 Pod。

u010674101的专栏 3344

全网最详细Seurat v5 流程复现(拿来即用)

本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。

ZxVSaccount的博客 1万+

[数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割

灰度变换,属于一个非常重要的概念。这里主要参考《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods 的第三章。书中所有的实验与数学式都采用了8-bit 图像的灰度范围,也就是0到255这样一个范围,这是本书不合理的一个地方。首先,这样做并不泛用,图片不一定是8-bit的。其次,在做某些变换的时候,可能会导致溢出。比如,伽马

zhoufan的专栏 4万+

小样本物体检测

Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 关键:提出了一个小样本数据集:数据集 步骤: 提取support img为一过滤特征 使用support img的特征来过滤query img,最后将过滤后的特征输入RPN网络中 RPN网络层的输出,会进行多头判断,使用全局信息检测,使用局部信息检测,一对多检测 Attention-Based Region Proposal Network Increme

qq_21157073的博客 5266

基于matlab的图像线性灰度变换

1.基本线性灰度变换 只需要记住一个公式:g(x, y) = f(x, y) * tan a 当 tan a >1时,会使得图像变亮 当tan a =1时,前后图像不发生变化 当tan a<1时,图像变暗 Image =im2double(rgb2gray(imread('hehua.bmp'))); [h, w] = size(Image); Image1 = zer...

qq_39197555的博客 1万+

10、皮肤 - 神经记录实验全流程解析

本博客详细介绍了皮肤-神经记录实验的全流程,涵盖实验所需的材料准备和具体操作方法。内容包括细胞外记录设备的设置、合成间质液(SIF)的制备与调节、小鼠后爪皮肤和胫神经的手术解剖步骤、清洁解剖后的记录准备、纤维分离与感受野识别方法,以及神经纤维机械响应的测量。该实验为研究神经纤维的活动与功能提供了重要的技术支持,适用于神经科学研究领域。

backprop5master的博客 184

微信小程序推广策略,打开小程序领域流量大门

本文旨在为小程序开发者、运营者和企业主提供一套完整的微信小程序推广策略体系,帮助他们在竞争激烈的小程序生态中获得更多流量和用户。内容涵盖从0到1的冷启动策略,到成熟期的增长技巧。本文将首先介绍小程序的基础推广设置,然后深入探讨各种流量获取渠道,接着分析数据驱动的优化方法,最后展望未来发展趋势。小程序:无需下载安装即可使用的应用,运行在微信生态内:独立访客数:页面浏览量转化率:完成目标行为的用户比例留存率:用户在一定时间后仍活跃的比例自然流量获取:通过优化搜索、完善资料等方式获得基础流量社交裂变。

小程序开发 1031

c++ opencv 图像处理:灰度变换(灰度反转,对数变换,冥律(伽马)变换)

文章目录前言一、灰度变换1.灰度反转2.对数变换3.冥律(伽马)变换4.分段线性变换 前言 数字图像处理c++ opencv(VS2019 opencv4.53)持续更新 一、灰度变换 灰度变换原理:利用变换函数T将原图像素灰度值r映射为像素值s。 s=T(r) s=T( r ) s=T(r) 1.灰度反转 灰度反转:将亮暗对调,可以增强图像暗色区域中的细节. s=L−1−rs=L-1-rs=L−1−r L为图像灰度级。 代码如下(示例): #include<iostream> #in.

刘燚的博客 1万+

如何用 Claude Code 阅读和理解陌生代码

摘要: 在接手陌生代码时,Claude Code能显著提升理解效率。核心策略是结构化拆解而非逐行阅读: 从整体入手:先扫描目录结构、定位核心模块,建立项目地图; 聚焦关键路径:通过数据流追踪、异常逻辑分析,识别技术债与风险点; 规避常见错误:避免抽象提问或一次性提交全部代码,应分模块精准提问; 高阶应用:可生成逻辑分层图、标记高复杂度区域,甚至定制阅读顺序。 最终目标是通过结构优先的提问策略,将理解周期从数天压缩至数小时。

sg_knight的专栏 1018

实验一:图像灰度变换 C++实现

一.实验内容 1、利用 OpenCV 读取图像。 具体内容:用打开 OpenCV 打开图像,并在窗口中显示 2、灰度图像二值化处理 具体内容:设置并调整阈值对图像进行二值化处理。 3、灰度图像的对数变换 具体内容:设置并调整 r 值对图像进行对数变换。 4、灰度图像的伽马变换 具体内容:设置并调整γ值对图像进行伽马变换。 5、彩色图像的补色变换 具体内容:对彩色图像进行补色变换。 实验过程 1.利用 OpenCV 读取图像 #include "main.hpp" #include <opencv2/o

chuxuezheerer的博客 7366

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MATLAB图形图像处理——图像灰度变换

MATLAB图形图像处理——图像灰度变换,介绍matlab处理图像的基础知识、图像灰度变换的基础知识。 通过直方图均衡化改变图像对比度和亮度,将模糊的图像变清晰。

isolation_s的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Matlab数字图像处理——图像的像素运算(灰度变换)

文章目录一、图像点运算二、线性灰度变换三、分段线性变换四、非线性变换 一、图像点运算 按照灰度变换的数学关系点运算可以分为: 1、线性灰度变换 2、分段线性变换 3、非线性分段变换 Matlab中用于灰度变换的函数:imadjust 二、线性灰度变换 以下代码将演示R、G、B三个通道单独变换以及全部变换的对比: gamma = 0.5; ...

土豆大叔的博客 7409

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 3.1 图像灰度变换之图像反转
下一篇: 3.3 图像灰度变换之伽马变换
Four o'clock
博客等级 码龄8年 305粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值