opencv实战项目(三十一):基于同态滤波的图像亮度提升

文章目录

  • 前言
  • 一、同态滤波
  • 二、算法实现


前言

在数字图像处理领域,图像亮度的调整是一项基本且至关重要的技术。它不仅关系到图像的视觉效果,而且在许多实际应用中,如医疗影像分析、卫星遥感监测、视频监控系统等,都扮演着关键角色。同态滤波作为一种经典的图像增强技术,因其独特的优势而在众多亮度提升方法中脱颖而出。
本文旨在探讨基于同态滤波的图像亮度提升技术。同态滤波技术不仅能够有效地改善图像的亮度,还能同时增强图像的对比度,使图像细节更加清晰。通过对同态滤波原理的深入剖析,我们将探讨如何利用这一技术实现图像亮度的优化


一、同态滤波

同态滤波(Homomorphic Filtering)是一种广泛应用于信号和图像处理的技术。它的核心思想是将非线性问题转化为线性问题处理,从而简化复杂运算。这一概念最初在1960年代由麻省理工学院的Thomas Stockham、Alan V. Oppenheim和Ronald W. Schafer提出。
在同态滤波中,原始信号通过非线性映射转换到可以使用线性滤波器的不同域,完成运算后再映射回原始域。这种处理方式保持了信号的相关属性不变,将复杂的非线性运算转化为相对简单的线性运算。
在图像处理中,同态滤波特别有用。它可以改善图像的质量,特别是在处理动态范围大但暗区细节不清的图像时。同态滤波通过将图像的照度分量(illumination)和反射分量(reflectance)分离,使用线性滤波方法来提升图像的对比度和亮度。

具体步骤包括:

  1. 读取图像:获取需要处理的图像数据。
  2. 取对数:对图像的每个像素值取对数,将乘性噪声转换为加性噪声。
  3. 傅里叶变换:对对数变换后的图像进行傅里叶变换,将其转换到频域。
  4. 设计滤波器:根据需求设计一个合适的频域滤波器,通常是高通滤波器,以增强图像的细节。
  5. 应用滤波器:在频域中,将设计的滤波器与图像的傅里叶变换结果相乘。
  6. 逆傅里叶变换:对滤波后的频域图像进行逆傅里叶变换,得到空间域中的滤波结果。
  7. 取指数:对逆傅里叶变换的结果进行指数运算,以恢复图像的原始亮度范围。
  8. 调整图像:根据需要对滤波后的图像进行对比度、亮度等调整,以优化视觉效果。

二、算法实现

可以通过修改rh,和rl的数值选择是提亮图片的亮度。
代码如下(示例):

import cv2
import numpy as npdef homomorphic_filtering_channel(channel, d0=10, rh=2, rl=0.5, c=1):# 将图像通道转换为浮点类型并归一化到[0, 1]img_float32 = np.float32(channel) / 255.0# 对图像取对数log_img = np.log1p(img_float32)# 傅里叶变换fft_img = np.fft.fft2(log_img)# 中心化傅里叶变换fft_shift = np.fft.fftshift(fft_img)# 构建滤波器M, N = channel.shapeu, v = np.meshgrid(np.arange(N), np.arange(M))D = np.sqrt((u - N / 2) ** 2 + (v - M / 2) ** 2)H = (rh - rl) * (1 - np.exp(-c * (D ** 2 / d0 ** 2))) + rl# 应用滤波器filtered_fft = H * fft_shift# 逆傅里叶变换ifft_shift = np.fft.ifftshift(filtered_fft)ifft_img = np.fft.ifft2(ifft_shift)# 取指数exp_img = np.expm1(ifft_img)# 归一化到[0, 255]并转换为uint8final_img = np.uint8(np.clip(exp_img * 255, 0, 255))return final_imgdef homomorphic_filtering(image, d0=10, rh=3, rl=3, c=1, gamma=0.5):# 分离颜色通道channels = cv2.split(image)# 对每个颜色通道应用同态滤波filtered_channels = [homomorphic_filtering_channel(ch, d0, rh, rl, c, gamma) for ch in channels]# 合并颜色通道filtered_image = cv2.merge(filtered_channels)return filtered_image# 读取彩色图像
image = cv2.imread(r'C:\Users\zhw\Downloads\mmagic-main\1724658439609.png')# 应用同态滤波
filtered_image = homomorphic_filtering(image)# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Homomorphic Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32 ARM+FPGA+AD的电能质量分析仪方案设计(一)硬件设计

电能质量分析系统硬件设计 3.1 电能质量分析系统设计要求 本系统实现对电能质量的高精度测量,根据国家相关电能质量分析仪器规定 标准以及对市场电能质量分析仪的分析,指定以下设计目标。 ( 1 )电能质量参数测量精度&#xf…

欧科云链研究院深掘链上数据:洞察未来Web3的隐秘价值

目前链上数据正处于迈向下一个爆发的重要时刻。 随着Web3行业发展,公链数量呈现爆发式的增长,链上积聚的财富效应,特别是由行业热点话题引领的链上交互行为爆发式增长带来了巨量的链上数据,这些数据构筑了一个行为透明但与物理世…

【部署篇】Redis-01介绍‌

一、Redis介绍‌ 1、什么是Redis? ‌Redis,英文全称是Remote Dictionary Server(远程字典服务),Redis是一个开源的、使用‌ANSI C语言编写的‌Key-Value存储系统,支持网络、可基于内存亦可持久化。‌ 它提…

leetcode hot100_part3_滑动窗口

滑动窗口是有一个基本的模版的,不要自己想当然哦~ 滑动窗口算法思想(附经典例题)_滑动窗口的思想-CSDN博客 滑动窗口也叫同向双指针;可以先看一下灵山视频:滑动窗口【基础算法精讲 03】_哔哩哔哩_bilibili 3.无重复字…

【unity进阶知识12】从零手搓unity存档存储数据持久化系统,实现对存档的创建,获取,保存,加载,删除,缓存,加密,支持多存档

文章目录 前言一、Unity对Json数据的操作方法一、JsonUtility方法二、Newtonsoft 二、持久化的数据路径三、数据加密/解密加密方法解密方法 四、条件编译指令限制仅在编辑器模式下进行加密/解密四、数据持久化管理器1、存档工具类2、一个存档数据3、存档系统数据类4、数据存档存…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

安卓使用.9图实现阴影效果box-shadow: 0 2px 6px 1px rgba(0,0,0,0.08);

1.安卓实现阴影效果有很多种&#xff0c;一般UX设计会给以H5参数box-shadow: 0 2px 6px 1px rgba(0,0,0,0.08);这种方式提供背景阴影效果&#xff0c;这里记录一下实现过程 2.界面xml源码 <?xml version"1.0" encoding"utf-8"?> <layout xmlns…

【SEO】什么是SEO?

什么是SEO&#xff08;搜索引擎优化&#xff09;&#xff1f;为什么SEO对于⼀个⽹站⾄关重要&#xff1f; SEO 全称是搜索引擎优化&#xff08;Search Engine Optimization&#xff09; 因为我们目前开发的网址&#xff0c;需要人看到&#xff0c;除了通过宣传营销的方式展现…

kubernetes中微服务部署

微服务 问&#xff1a;用控制器来完成集群的工作负载&#xff0c;那么应用如何暴漏出去&#xff1f; 答&#xff1a;需要通过微服务暴漏出去后才能被访问 Service 是一组提供相同服务的Pod对外开放的接口借助Service&#xff0c;应用可以实现服务发现和负载均衡Service 默认只…

Docker容器简介及部署方法

1.1 Docker简介 Docker之父Solomon Hykes&#xff1a;Docker就好比传统的货运集装箱 2008 年LXC(LinuX Contiainer)发布&#xff0c;但是没有行业标准&#xff0c;兼容性非常差 docker2013年首次发布&#xff0c;由Docker, Inc开发 1.1.1什么是Docker Docker是管理容器的引…

苹果秋季盛典:iPhone 16系列引领未来科技潮流

9月10日&#xff0c;苹果公司在众人瞩目中举办了2024年的秋季特别活动&#xff0c;发布了备受期待的iPhone 16系列。 尽管网络发布会已经持续了一整年&#xff0c;但熬夜观看的果粉们仍然热情不减&#xff0c;因为每一次苹果的新品发布都代表着科技界的一次重大飞跃。 iPhone …

scau:面向对象java实验作业1-2 猜数字游戏

题目名称实验1-2 猜数字游戏题目关键字数据类型 基本输入输出 控制语句 方法题目录入时间2022/10/10 11:01:37题目内容 使用Java程序&#xff0c;项目名称&#xff1a;GuessNumberGame&#xff0c;类根据自己需要定义。 程序开始运行后&#xff0c;允许玩家进行多次猜数字的游…

使用 Docker 部署前端项目:Vue 和 React 结合 Nginx 实现静态文件托管

使用 Docker 部署前端项目&#xff1a;Vue 和 React 结合 Nginx 实现静态文件托管 Web 开发中&#xff0c;将前端项目&#xff08;例如 Vue 或 React 应用&#xff09;打包后通过 Docker 容器和 Nginx 部署是非常常见的方式。它不仅简化了部署流程&#xff0c;还能确保在不同环…

通信协议 —— RS485 讲解得好

目 录 RS-485 通信协议一、重要性二、通信实现三、其它通信方式3.1 串口通信3.2 RS232标准 四、总结 RS-485 通信协议 RS-485是一种通用的通信标准&#xff0c; RS是Recommended Standard的意思&#xff0c;是美国电子工业协会&#xff08;EIA&#xff09;在1983年批准了一个新…

【操作系统】深入探索:操作系统内核与用户进程的数据交互艺术

目录 一、数据从内核缓冲区拷贝到用户进程缓冲区&#xff0c;是谁来负责拷贝的&#xff0c;是操作系统还是用户进程&#xff1f;实际的执行者到底是谁&#xff1f;二、系统调用以及用户态内核态的相互转换1、系统调用2、用户态内核态的相互转换 三、如何形象的理解linux的虚拟地…

【华为】基于华为交换机的VLAN配置与不同VLAN间通信实现

划分VLAN&#xff08;虚拟局域网&#xff09;主要作用&#xff1a; 一、提高网络安全性 广播域隔离访问控制增强 二、优化网络性能 减少网络拥塞提高网络可管理性 sysytem-view #进入系统视图配置参数 vlan batch 10 20 #批量创建vlan LSW3: int g0/0/1 port…

RTSP 音视频play同步分析

基础理论 RTSP RTP RTCP SDP基础知识-CSDN博客 关于RTP的时间戳知识点回顾 时间戳单位&#xff1a;时间戳计算的单位不是秒&#xff0c;而是采用采样频率的倒数&#xff0c;这样做的目的是为了使时间戳单位更为精准。比如说一个音频的采样频率为8000Hz&#xff0c;那么我们可…

Vue使用@别名替换后端ip地址

1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型检查和智能提示的支持。 npm install types/node --save-dev 比如安装之后&#xff0c;就可以导入nodejs的 path模块&#xff0c;在下面代码 import path…

TextView把其它控件挤出屏幕的处理办法

1.如果TextView后面的控件是紧挨着TextView的&#xff0c;可以给TextView添加maxWidth限制其最大长度 上有问题的布局代码 <?xml version"1.0" encoding"utf-8"?> <layout xmlns:android"http://schemas.android.com/apk/res/android&qu…

Github优质项目推荐 - 第六期

文章目录 Github优质项目推荐 - 第六期一、【WiFiAnalyzer】&#xff0c;3.4k stars - WiFi 网络分析工具二、【penpot】&#xff0c;33k stars - UI 设计与原型制作平台三、【Inpaint-Anything】&#xff0c;6.4k stars - 修复图像、视频和3D 场景中的任何内容四、【Malware-P…