【OpenCV 例程200篇】43. 图像的灰度变换(对数变换)

『youcans 的 OpenCV 例程200篇 - 总目录』


【OpenCV 例程200篇】43. 图像的灰度变换(对数变换)


线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。

对数变换可以由以下公式描述:
Dt=c∗log(1+D)Dt = c * log(1+D) Dt=clog(1+D)
对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率小。对数变换将输入中范围较窄的低灰度值映射为范围较宽的灰度级,输入中的高灰度值则被映射为范围较窄的灰度级。对数变换后,较暗区域的对比度提升,可以增强图像的暗部细节。

对数变换实现了扩展低灰度值而压缩高灰度值的效果,广泛应用于频谱图像的显示中。对数变换的典型应用是傅立叶频谱的动态范围很宽,直接显示时受显示设备动态范围的限制而丢失大量的暗部细节;使用对数变换将图像的动态范围进行非线性压缩后,就可以清晰地显示。


例程:1.55 图像的对数变换

    # 1.55 图像的非线性灰度变换:对数变换img = cv2.imread("../images/Fig0305a.tif", flags=0)  # flags=0 读取为灰度图像normImg = lambda x: 255. * (x-x.min()) / (x.max()-x.min()+1e-6)  # 归一化fft = np.fft.fft2(img)  # 傅里叶变换fft_shift = np.fft.fftshift(fft)  # 中心化amp = np.abs(fft_shift)  # 傅里叶变换的频谱amp = np.uint8(normImg(amp))  # 映射到 [0, 255]ampLog = np.abs(np.log(1 + np.abs(fft_shift)))  # 对数变换ampLog = np.uint8(normImg(ampLog))  # 映射到 [0, 255]plt.figure(figsize=(9, 5))plt.subplot(131), plt.imshow(img, cmap='gray', vmin=0, vmax=255), plt.title('Original'), plt.axis('off')plt.subplot(132), plt.imshow(amp, cmap='gray', vmin=0, vmax=255), plt.title("FFT spectrum"), plt.axis('off')plt.subplot(133), plt.imshow(ampLog, cmap='gray', vmin=0, vmax=255), plt.title("FFT spectrum - log trans"), plt.axis('off')plt.tight_layout()plt.show()

在这里插入图片描述

(本节完)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/121508842)
Copyright 2022 youcans, XUPT
Crated:2021-11-22

【第4章:灰度变换与直方图】

41. 图像的灰度变换(灰度级分层)
42. 图像的灰度变换(比特平面分层)
43. 图像的灰度变换(对数变换)
44. 图像的灰度变换(伽马变换)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLServer判断循环

使用SQLServer语句对数据进行判断输出或者循环判断输出 不仅Java语言,C语言有判断和循环,SQLServer同样有判断和循环 1. 创建数据表 create table score ( stuId nvarchar(5) , stuSex nchar(2), chinese int, english int, math int )2. 在表中添加数…

【OpenCV 例程200篇】45. 图像的灰度直方图(cv2.calcHist)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】45. 图像的灰度直方图 图像直方图是反映图像像素分布的统计表,横坐标代表像素值的取值区间,纵坐标代表每一像素值在图像中的像素总数或者所占的百分比。 灰度直方图是图像灰度级的函数&am…

python下的mysql模块包装

#!/usr/bin/env python # -*- coding: utf-8 -*-""" 设计db模块的原因:1. 更简单的操作数据库一次数据访问: 数据库连接 > 游标对象 > 执行SQL > 处理异常 > 清理资源。db模块对这些过程进行封装,使得用户仅需关…

【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换) 线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。 幂律变换也称伽马变换,可以提升暗部细节,对发…

乱码的解决

关于JSP中request请求中乱码问题的解决 首先request请求有两种请求方式&#xff0c;一是post方法&#xff0c;二是get方法&#xff0c;方法不同&#xff0c;乱码的解决也稍有不同 关于post方法乱码的解决 获取参数之前&#xff0c;在接受请求的页面中规定字符编码格式 <…

【OpenCV 例程300篇】46. 直方图处理之直方图均衡化(cv2.equalizeHist)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】46. 直方图处理之直方图均衡化&#xff08;cv2.equalizeHist&#xff09; 图像直方图是反映图像像素分布的统计表&#xff0c;横坐标代表像素值的取值区间&#xff0c;纵坐标代表每一像素值在图像中的…

lingo的初步使用(集)

lingo里面!开始;结束之间的部分是注释。 !什么是集&#xff0c;为啥要有集&#xff1f; 我认为集的概念和面向对象里面的类比较像。一个集可以有一些成员&#xff0c;类似于面向对象里面的对象&#xff0c;集成员有相应的属性&#xff0c;类似面向对象里面的属性。 Lingo有两种…

【OpenCV 例程300篇】47. 直方图处理之直方图匹配

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】47. 直方图处理之直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。 直方图均衡直接对图像全局进行均衡化…

SQLServer查找已知数相邻前后数

查找与一个已知数相邻的前一个数和后一个数 举例解释&#xff1a;在班级排名表中&#xff0c;已经知道张无忌的排名和分数等相关信息&#xff0c;但是想要知道与之相邻的前一个人是谁或者后一个人是谁 1. 数据库的设计和实现 --创建数据库 CREATE DATABASE school ON PRIMAR…

lingo入门(数据部分)

lingo入门(数据部分) 在数据部分也可以指定一些标量变量&#xff08;scalar variables&#xff09;。当一个标量变量在数据部 分确定时&#xff0c;称之为参数。 data: interest_rate .085; enddata还可以指定几个参数data: interest_rate,inflation_rate .085 .03; enddata如…

我的Go+语言初体验——(1)超详细安装教程

我的Go语言初体验——&#xff08;1&#xff09;超详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 是什么&#xff1f;为数据而生&#xff0c;实现教学、工程与数据的 “三位一体”。 Go 语言的安装和环境配置有些复杂&#xff0c;官方教程也没有写的很详细。 本文…

JAVA增删查改的实现

java程序对SQLServer数据库的数据进行增删查的操作&#xff0c;结果在控制台输出 步骤详解&#xff1a; 设计并实现数据库在数据库中插入相应的数据链接SQLServer数据库实现对数据库的查增删等功能 数据库内容效果图 下面讲述JAVA代码 目录结构 1 . 数据库链接&#xff…

Mac下配置sublime实现LaTeX

在Mac上通过Sublime、Skim编辑LaTeX Sublime Text是一款非常优秀的编辑器&#xff0c;速度快&#xff0c;界面简洁&#xff0c;插件众多。并且能跨平台使用&#xff0c;在Mac和Windows上都能完美使用。虽然是一款付费软件&#xff0c;但作者很厚道地给了无限期的试用期限。这一…

我的Go+语言初体验——(2)IDE 详细安装教程

我的Go语言初体验——&#xff08;2&#xff09;IDE 详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 语言的安装和环境配置有些复杂&#xff0c;官方教程也没有写的很详细。 通过控制台编写和运行 Go 程序很不方便。本文从零开始&#xff0c;详细介绍 Go 集成开发环…

GoogleNet网络详解与keras实现

GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现GoogleNet系列网络的概览Pascal_VOC数据集第一层目录第二层目录第三层目录 InceptionV1模块介绍Inception的架构GoogleNet的图片Keras代码实现为了搭建Inception网络我们使用了以下策略整个代码的流程如下 实验结果实…

我的Go+语言初体验——(3)Go+ 语言数据类型

我的Go语言初体验——&#xff08;3&#xff09;Go 语言数据类型 “我的Go语言初体验” | 征文活动进行中… Go 语言刚刚发布&#xff0c;网络上还很难找到各种的支持文档和编程指南&#xff0c;使初学者很难深入地进行学习。 本文结合官方文档与 Go 语言的技术资料&#xff0…

循环输出

使用foreach循环输出List中的数据 步骤详解&#xff1a; 1.数据库的设计和实现 2. Java代码的书写 3. jsp页面的显示 效果图展示 数据库数据 查询结果的显示 功能分析&#xff1a; 链接数据库查找数据库内容把这些内容放入List数组里面用session传递jsp页面获取session内…

我的Go+语言初体验——(4)零基础学习 Go+ 爬虫

我的Go语言初体验——&#xff08;4&#xff09;零基础学习 Go 爬虫 “我的Go语言初体验” | 征文活动进行中… Go 语言非常适合编写爬虫程序&#xff0c;具有并发机制完善、并发数量大、占用资源少、运行速度快、部署方便的优点。 本文结合官方文档与 Go 语言的资料&#xff…

latex的基本使用

LaTeX使用 LaTeX使用基本使用源文件的基本结构中文处理办法字体字号设置文章基本结构特殊字符处理图片的使用表格的使用Texstduio的导入表格功能会更快浮动体的使用数学公式初步矩阵的使用TexStudio里面的矩阵模板功能参考文献使用BibTex定义自己的命令 基本使用 sublime使用…

【OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。 直方图匹配又称为直方图规定化&a…