数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换

2023-10-26

本文主要介绍对《数字图像处理》第三章书中示例图片实现 反转变换对数变换以及伽马变换的代码

若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信公共号 “分享猿” 免费获取资源。也可扫描下面的二维码关注,期待你的到来~
在这里插入图片描述
图像增强的三类基本函数:线性函数(反转和恒等变换)、对数函数(对数和反对数变换)、幂律函数(n次幂和n次跟变换)

一、反转变换

公式S=L-1-r
在这里插入图片描述
代码实现

import cv2
import numpy as np

img = cv2.imread(r'C:\Users\xxx\Desktop\breast.tif',0)

reverse_img = 255 - img

cv2.imshow('srcimg',img)
cv2.imshow('reverse_img',reverse_img)
cv2.waitKey(0)

下列分别是乳房X射线原始图及用上式给出的反转图像
在这里插入图片描述 在这里插入图片描述
二、对数变换

公式s=clog(1+r)
下图是当c=1时的r与s关系图
在这里插入图片描述
代码实现

import cv2
import math
import numpy as np

def logTransform(c,img):

    #3通道RGB
    '''h,w,d = img.shape[0],img.shape[1],img.shape[2]
    new_img = np.zeros((h,w,d))
    for i in range(h):
        for j in range(w):
            for k in range(d):
                new_img[i,j,k] = c*(math.log(1.0+img[i,j,k]))'''

    #灰度图专属
    h,w = img.shape[0], img.shape[1]
    new_img = np.zeros((h, w))
    for i in range(h):
        for j in range(w):
            new_img[i, j] = c * (math.log(1.0 + img[i, j]))


    new_img = cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)

    return new_img
    
#替换为你的图片路径
img = cv2.imread(r'C:\Users\xxx\Desktop\Fourier spectrum.tif',0)

log_img = logTransform(1.0,img)
cv2.imshow('log_img',log_img)
cv2.imwrite(r'C:\Users\xxx\Desktop\Fourier spectrum2.jpg',log_img)
cv2.waitKey(0)

备注:当r=255时,s=5.541

下列图像分别是傅里叶频谱和应用上式中的对数变换(c=1)的结果
在这里插入图片描述 在这里插入图片描述
由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升。可用于增强图像的暗部细节

三、幂律(伽马)变化

公式:s=cr^γ
其中c、γ 为常数。考虑偏移量上式可写为 s=c(ε+r)^γ
对于不同的 γ 值,s 与 r的关系曲线如下图所示
在这里插入图片描述
伽马变换可以很好地拉伸图像的对比度,扩展灰度级。
由图可知,
当图像的整体灰度偏暗时,选择γ<1,可以使图像增亮;
当图像的整体灰度偏亮时,选择γ>1,可以使图像变暗,
提高图像的对比度,凸显细节。

用于图像获取、打印和显示的各种设备根据幂律来产生响应,用于校正这些幂律响应现象的处理称为伽马校正
例如,阴极射线管(CRT)设备有一个灰度-电压响应,该响应是一个指数变化范围约为1.8~2.5的幂函数。

代码实现

import math
import numpy as np
import cv2

def gammaTranform(c,gamma,image):
    h,w,d = image.shape[0],image.shape[1],image.shape[2]
    new_img = np.zeros((h,w,d),dtype=np.float32)
    for i in range(h):
        for j in range(w):
            new_img[i,j,0] = c*math.pow(image[i, j, 0], gamma)
            new_img[i,j,1] = c*math.pow(image[i, j, 1], gamma)
            new_img[i,j,2] = c*math.pow(image[i, j, 2], gamma)
    cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)
    new_img = cv2.convertScaleAbs(new_img)

    return new_img

img = cv2.imread(r'C:\Users\xxx\Desktop\gray.jpg',1)

new_img = gammaTranform(1,2.5,img)

cv2.imshow('x',new_img)
cv2.imwrite(r'C:\Users\xxx\Desktop\gray_2.5.jpg',new_img)
cv2.waitKey(0)

下图是用变换s = r^1/2.5 = r^0.4进行伽马校正的示例的结果
在这里插入图片描述
一般,随着设备的不同,伽马值也不同

使用幂律变换进行对比度增强
γ<1 增强亮度
分别是原图,以及c=1时的γ=0.6、0.4、0.3时应用上公示的结果
在这里插入图片描述

γ>1 增强暗度
航拍图像
在这里插入图片描述
下面三幅图片分别是c=1时γ等于3.0、4.0、5.0时应用公式变换的结果
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

搜索公众号“分享猿”,并回复关键词“代码”,获取本文全部代码
留言或者公众号关注我,我们一起分享数字图像处理心得,一起交流学习吧~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换 的相关文章

  • 数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换

    本文主要介绍对 数字图像处理 第三章书中示例图片实现 反转变换 对数变换以及伽马变换的代码 若要获取更多数字图像处理 python 深度学习 机器学习 计算机视觉等高清PDF以及 更多有意思的 分享 可搜一搜 微信公共号 分享猿 免费获取资
  • 数字图像灰度处理方法

    灰度变换 灰度变换是指根据某种目标条件按一定变换关系逐点改变源图像中每一个像素灰度值的方法 目的是为了改善画质 使图像的显示效果更加清晰 图像的灰度变换处理是图像增强处理技术中的一种非常基础 直接的空间域图像处理方法 也是图像数字化软件和图
  • OpenCV 陷波滤波器消除周期性噪音 C++

    观察下面图像 有明显的近似水平线的噪音模式 我们希望他在频率域内的成分沿垂直轴集中 下图是该图像的谱 将垂直轴的分量去掉 构建的陷波器如下 原图与结果图对比 滤掉的空间噪音模式 代码实现 include opencv2 opencv hpp
  • 数字图像处理——图像的点运算

    图像的点运算 一 灰度直方图 imhist 二 灰度线性变换 imadjust 三 灰度非线性变换 1 灰度对数变换 log 2 灰度幂次变换 3 灰度指数变换 exp 四 灰度阈值变换 im2bw 五 灰度拉伸 六 灰度均衡 histeq
  • 数字图像隐藏图像的两种算法及实现代码

    数字图像 二值图像 也叫单色图像 是将每个像素点存放在一个bit空间 值为0或者1 的图像 也就是说每个像素 非黑即白 主要用于图像形态学的研究 8位灰度图像 每个像素存放在一个byte空间 8位 0 255 0表示最暗色黑色 255表示最
  • 计算二维离散随机变量的联合概率分布

    一 定义 Joint probability distribution 给定至少两个随机变量X Y 它们的联合概率分布 Joint probability distribution 指的是每一个随机变量的值落入特定范围或者离散点集合内的概率
  • [Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果

    由于随手拍项目想做成类似于美图秀秀那种底部有一排Menu实现不同效果的功能 这里先简单介绍如何通过Menu实现打开相册中的图片 怀旧效果 浮雕效果 光照效果和素描效果 后面可能会讲述如何通过PopupWindow实现自定义的Menu效果 希
  • 数字图像处理:局部直方图处理(Local Histogram Processing)

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在前面章节 数字图像处理 直方图均衡学习总结 感悟 数字图像直方图匹配或规定化Histogram Matching Specific
  • MATLAB—GUI新手入门教程

    GUI界面基本操作 1 GUI界面介绍 2 各个控件的使用方法 2 1 1 按钮 2 1 2 滑动条 2 1 3 文本框 2 1 4 单选框和复选框和切换按钮 2 1 5 弹出式菜单和列表框 2 1 6 按钮组 2 1 7 菜单编辑器 常见
  • Retinex理论及算法学习

    为了能够获取最大的信息量 达到更好的图像增强效果 了解人类视觉系统的特性和图像的属性是准确地选择图像增强方法的必备知识 一 人眼视觉系统 1 人眼成像 人的眼睛是一个非常复杂的器官 一般来说它就是一个球体 平均直径约为20mm 内壁是一层视
  • 基于OpenCV的视频道路车道检测

    基于OpenCV的视频道路车道检测 基于OpenCV的视频道路车道检测 前言 综述 运行方法 车道检测的实现 路面图像二值化 基于透视变换提取车道区域 基于二次多项式拟合车道线 计算曲率半径与车辆的偏移距离 用车道区域标注原始图像 总结 E
  • 一种简单快速有效的低照度图像增强方法

    一种简单快速有效的低照度图像增强方法 一 本文介绍的是一种比较实用并且去阴影效果很好的方法 选自2004年Tao的一篇论文 名称是 An Integrated Neighborhood Dependent Approach for Nonl
  • 数字图像处理-基于opencv和kreas的手势(手语)识别

    基于opencv和kreas的手势 手语 识别 代码为实验需要 具体使用需要修改 tensorflow教程 推荐看这个 内容一 裁剪视频 获取手势 import cv2 import numpy as np import os import
  • 【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

    本文主要讲述基于VC 6 0 MFC图像处理的应用知识 主要结合自己大三所学课程 数字图像处理 及课件进行讲解 主要通过MFC单文档视图实现显示BMP图像增强处理 包括图像普通平滑 高斯平滑 不同算子的图像锐化知识 希望该篇文章对你有所帮助
  • 去除视障,重现清晰

    论文 https arxiv org abs 2004 01180 代码 https github com alex04072000 ObstructionRemoval 模型262m tensorflow 的 模型地址 https dri
  • 图像均值滤波简介及实现

    一 均值滤波简介和原理 均值滤波 是图像处理中常用的手段 从频率域观点来看均值滤波是一种低通滤波器 高频信号将会去掉 均值滤波可以帮助消除图像尖锐噪声 实现图像平滑 模糊等功能 理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像
  • 【图像增强】Debiased Subjective Assessment of Real-World Image Enhancement

    最近学习了CVPR2021的一篇文章 真实世界图像增强的去偏主观质量评价 Debiased Subjective Assessment of Real World Image Enhancement 一 前言 图像质量评价 Image Qu
  • 「 标准 」NTSC、PAL、SECAM 三大制式简介

    NTSC National Televison System Committee 制式 NTSC 电视标准 每秒 29 97 帧 简化为 30 帧 电视扫描线为 525 线 偶场在前 奇场在后 标准的数字化 NTSC 电视标准分辨率为720
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • 【保姆级教程】使用tensorflow_hub的预训练模型实现神经风格迁移

    目录 一 神经风格迁移 二 安装依赖 三 实践 四 其他 一 神经风格迁移 神经风格迁移 是一种优化技术 主要将两个图像 内容 图像 和 风格

随机推荐

  • 性能优化方法

    1 纯函数的可缓存性 纯函数相同的输入总能得到相同的输出 如果函数内部的计算非常复杂 当我们发现输入与上一次相同时 可以直接返回结果不经过内部的计算 例子 根据日期 得到当日相关的数据 传入日期 获取当天的数据 function proce
  • unity shader errors unexcepted token ‘f’

    编写或导入shader时候 Inspector视图中可能会出现这个错误 Syntax error unexcepted token f at line xxx 解决办法 在报错行附近查找 有没有float数据 改为浮点值 真相如下 lt
  • yarn 安装依赖中出现的错误

    yarn 清除缓存问题 1 出现报错信息 error https registry yarnpkg com Integrity check failed for computed integrity doesn t match our re
  • 抢先一步,新华三携手HPE正在重塑AI存储新格局

    当前智能IT的创新 正呈现出蓬勃发展之势 全球存储观察 热点关注 当前 数字经济在中国获得了长足进步 并驱动着算力快速进化 为此 智能IT的创新也呈现出了前所未有的蓬勃之势 从智能存储中枢发布到现在 新华三集团持续强化存储融合AI的创新 将
  • 国仁网络资讯:抖音快手哪个变现赚钱效果好;两者有什么区别?

    随着5G时代的到来 越来越多的人说到短视频风口 而短视频中首当其冲的肯定是抖音和快手 对于所有想要把握流量风口的企业来说 在营销渠道上到底是侧重抖音还是快手是营销团队需要思考的问题 快手 记录世界 记录你 抖音 记录美好生活 人们经常会拿抖
  • main,restricted,universe,multiverse有什么区别

    main restricted universe multiverse有什么区别 转载 main 完全的自由软件 restricted 不完全的自由软件 universe ubuntu官方不提供支持与补丁 全靠社区支持 muitiverse
  • mysql 8.0以上版本,安装及解决忘记密码问题

    1 官网下载解压版MySQL数据库 下载链接 https dev mysql com downloads mysql 2 将下载的mysql放在自己喜欢的盘符 不一定是C盘 例如我的就是解压在D盘 D mysql mysql 8 0 18
  • 三角形设计测试用例

    三角形设计测试用例的问题在面试的时候经常遇到 假设输入三个整数a b c分别作为三边的边长构成三角形 通过程序判定所构成的三角形的类型 当此三角形为一般三角形 等腰三角形及等边三角形时 要求画出程序的流程图和时序图 并且用自己熟悉的一种语言
  • 解决Windows缺少api-ms-win-core-com-l1-1-0.dll文件问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个api ms win core com l1 1
  • 程切换问题

    处理器总处于以下状态中的一种 内核态 运行于进程上下文 内核代表进程运行于内核空间 内核态 运行于中断上下文 内核代表硬件运行于内核空间 用户态 运行于用户空间 一个进程的上下文可以分为三个部分 用户级上下文 寄存器上下文以及系统级上下文
  • SQL文本数据格式化的方法(sql-formatter)

    首先安装sql formatter npm install sql formatter save 或者 yarn add sql formatter 引入sql formatter import sqlFormatter from sql
  • JAVA语言功能的概述,JAVA语言概述总结

    J2ME 主要用于控制移动设备和信息家电等有限存储的设备 J2SE 整个Java技术的核心和基础 是J2ME和J2EE编程的基础 J2EE Java技术中应用最广泛的部分 J2EE提供了企业应用开发的完整解决方案 流行语言比较 1 c Mi
  • (二) 基本操作 - 图片的拉伸与缩放

    图片缩放用到的主要函数是 cv2 resize 它最简单的形式如下 cv2 resize img new width new height 其中 img为源图片 new width new height 为缩放后的宽度和高度 函数返回缩放后
  • 高速电路设计基本概念之——近端串扰和远端串扰

    以下内容摘自英文版的信号完整性分析一书 SIGNAL INTEGRITY By Eric Bogatin The noise between two adjacent transmission lines can be measured i
  • word的Ctrl+V与Mathtype冲突解决办法

    首先将所有的office软件关闭 一 打开mathtype的安装目录 找到其中的两个文件 MathPage wll E software MathType MathPage 64 MathType Commands 2016 dotm E
  • java jsch 密钥登陆_java – 使用JSch时“无效的私钥”

    我正在使用以下代码在 Java应用程序中使用 Git 我有一个有效的密钥 一直使用它 这个特定的代码以前使用相同的密钥和git存储库 但现在我得到以下异常 invalid privatekey B 59c40796 在这一行 jSch ad
  • 深度学习概念(术语):Fine-tuning、Knowledge Distillation, etc

    文章目录 1 Fine tuning 微调 2 Transfer Learning 迁移学习 3 Knowledge Distillation 知识蒸馏 4 Meta Learning 元学习 这里的相关概念都是基于已有预训练模型 就是模型
  • cmake简洁教程 - 第一篇

    由于cmake内容较多 篇幅较长 为了不让人疲倦 分成了多篇博客 全部博客链接如下 cmake简洁教程 第一篇 YZF Kevin的博客 CSDN博客 cmake简洁教程 第二篇 YZF Kevin的博客 CSDN博客 cmake简洁教程
  • mt19937 随机数

    https blog csdn net real myth article details 53893854 https blog csdn net calmreason article details 72655060 https blo
  • 数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换

    本文主要介绍对 数字图像处理 第三章书中示例图片实现 反转变换 对数变换以及伽马变换的代码 若要获取更多数字图像处理 python 深度学习 机器学习 计算机视觉等高清PDF以及 更多有意思的 分享 可搜一搜 微信公共号 分享猿 免费获取资