opencv进阶 ——(六)图像处理之图像增强

        图像增强算法的目的是改善图像的视觉质量,使其更易于分析或增强特定特征。以下是一些常见的图像增强技术及其基本原理:

  1. 直方图均衡化

    • 直方图均衡化通过重新映射像素值来扩展图像的动态范围,使得图像的灰度级分布更加均匀。这通常会增加图像的对比度。
  2. 伽马校正(Gamma Correction):

    • 通过改变像素值与最终输出之间的非线性关系来调整图像的亮度和对比度。伽马值小于1时,图像变亮;大于1时,图像变暗。
  3. 对数变换(Log Transform):

    • 对数变换常用于增强图像的低灰度级部分,尤其是当图像的大部分信息集中在较暗区域时。
  4. 拉普拉斯增强

    • 拉普拉斯算子是一个边缘检测器,可以增强图像中的边缘。它通过计算图像二阶导数的绝对值来找出像素值变化最剧烈的地方。
  5. Retinex理论

    • Retinex算法模拟人眼视觉系统,通过分离图像的照明和反射成分来增强细节和色彩。它通常涉及多尺度分析,如高斯金字塔,以及颜色恢复技术。
  6. 自适应直方图均衡化(Adaptive Histogram Equalization):

    • 与全局直方图均衡化不同,自适应直方图均衡化在局部区域内进行,考虑了图像的局部特性,因此能更好地处理具有显著局部光照变化的图像。
  7. 噪声滤波(Noise Filtering):

    • 包括均值滤波、中值滤波、高斯滤波等,用于去除图像中的噪声,平滑图像,或保护边缘。
  8. 锐化(Sharpening):

    • 通过应用一个边缘增强的卷积核(如拉普拉斯核或Prewitt核)来突出图像的边缘和细节。
  9. 对比度拉伸

    • 调整图像的灰度范围,使图像的灰度级分布更宽,从而增强对比度。

        这些方法可以单独使用,也可以组合使用,以根据特定应用场景定制增强效果。在实际应用中,通常需要根据图像的内容和目标应用选择合适的增强策略。

基于直方图均衡化的图像增强

CLAHE

        对比度受限的自适应直方图均衡化(Contrast Limited Adaptive Histogram Equalization, CLAHE)是一种图像增强技术,特别适用于医学成像和其他领域,其中局部对比度的增强很重要,而全局对比度增强可能导致过饱和。CLAHE是对传统自适应直方图均衡化(Adaptive Histogram Equalization, AHE)的一种改进,以解决AHE在高对比度区域可能出现的过曝光问题。

以下是CLAHE的基本原理和特点:

  1. 局部处理

    • CLAHE将图像分割成小的像素块(称为“tiles”),每个块独立进行直方图均衡化。这样可以针对图像的不同区域应用不同的增强,适应局部对比度的变化。
  2. 直方图均衡化

    • 每个块内部,像素值的分布被重新映射以增强对比度。这通常通过创建该块的直方图,然后将直方图展平来实现,使得每个灰度级都有相同数量的像素。
  3. 对比度限制

    • 为了避免小块内的对比度过高(即过曝光或过增强),CLAHE引入了一个对比度限制机制。当某个灰度级的像素数量超过预定阈值时,超出部分会被分散到其他灰度级,防止局部对比度过大。
  4. 克隆填充(Clipping and Cloning):

    • 在像素值映射过程中,超出直方图范围的像素(由于对比度限制)会被“克隆”到相邻的灰度级,以保持像素总数不变,同时避免在增强后的图像中出现空白区域。
  5. 平滑

    • 为了消除块之间的边界效应(即“伪影”),CLAHE通常会应用一种平滑操作,如双线性插值,来平滑相邻块之间的过渡。
  6. 参数调整

    • CLAHE有两个主要的可调参数:块大小(tile size)和对比度限制阈值。块大小决定了局部处理的区域,而对比度限制阈值决定了对比度增强的程度。

效果图

equalizeHist 

   equalizeHist 是 OpenCV 库中一个用于图像增强的函数,专门用于灰度图像的直方图均衡化。

        

功能

  • 提升图像的对比度,特别是在图像的灰度级分布较为集中时。
  • 将图像的灰度直方图拉伸到整个可用的灰度级别范围,使得图像的像素值分布更加均匀。
  • 这种均匀分布使得图像中的小差异变得更为明显,有助于增强图像的细节。

原理

  • 计算输入图像的灰度直方图。
  • 根据直方图确定新的灰度级映射,目标是使每个灰度级别的像素数量接近相同。
  • 应用这个映射函数到每个像素,将旧的灰度值转换为新的灰度值。
  • 结果是一个对比度增强的新图像,其像素值分布更加均匀。

注意事项

  • equalizeHist 只适用于单通道图像。对于彩色图像,通常需要先将其转换为灰度图像,然后再进行均衡化。
  • 由于是全局操作,可能会导致某些原本对比度较高的区域过于明亮,因此并不总是适用于所有图像。
  • 在某些情况下,局部直方图均衡化(如CLAHE)可能是更好的选择,因为它可以控制局部对比度的增强,避免过曝现象。

效果图

        

基于拉普拉斯核的图像增强

        使用中心为5的8邻域拉普拉斯算子与图像卷积可以达到锐化增强图像的目的,拉普拉斯核如下图所示

        

基于拉普拉斯算子的图像叠加增强

基于对数Log变换的图像增强

        基于对数Log变换的图像增强是一种非线性图像处理技术,主要用于增强图像中低灰度区域的细节,同时压缩高灰度区域的动态范围。对数变换能够有效改善图像的视觉效果,特别是在图像的暗部区域含有重要细节时。

原理

  1. 动态范围调整:对数变换通过非线性地扩展低灰度值和压缩高灰度值,将图像的动态范围映射到更便于观察的范围。这对于那些暗部细节丰富但整体偏暗的图像特别有效。

  2. 对比度增强:对数变换能够增强图像的全局对比度,尤其是对于那些直方图集中在较窄灰度范围内的图像,通过扩展低灰度区域,使得图像的细节更加清晰可见。

  3. 底数选择:对数变换的底数(通常选择为10或2)会影响变换的程度。底数较大时,对低灰度值的扩展作用更强,对高灰度值的压缩也更显著,这有助于进一步增强图像的低亮度细节。

基于伽马变换的图像增强

幂次变换又称伽马变换:

✓    c和 γ是正常数

✓    γ < 1 提高灰度级,在正比函数上方,使图像变亮

✓    γ  > 1 降低灰度级,在正比函数下方,使图像变暗

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pandas-中axis的用法

在Pandas中&#xff0c;min(axis)方法是计算DataFrame或Series中每行或每列的最小值的函数。该函数可以接受一个参数axis&#xff0c;用于指定计算最小值的方向。当axis0时&#xff0c;表示沿着行的方向计算最小值&#xff1b;当axis1时&#xff0c;表示沿着列的方向计算最小值…

使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密码管理器

使用 Ubuntu Docker Vaultwarden Tailscale 自建密码管理器 先决条件 一台运行 Ubuntu 系统的服务器。可以是云提供商的 VPS、家庭网络中的树莓派、或者 Windows 电脑上的虚拟机等等 一个 Tailscale 账户。如果还没有 Tailscale 账户&#xff0c;可以通过此链接迅速创建一个…

基于Udp(收发信息使用同一个socket)网络通信编程

想要实现网络通信那么就要有一个客户端一个服务器 客户端发送数据&#xff0c;服务器接收数据并返回数据 网络通信就是进程通信 所以我们用两个程序来分别编写客户端和服务器 服务器 1&#xff0c;设置端口号&#xff0c; 2、ip可以固定位127.0.0.1来用于本地测试&#xff0c…

基于文本来推荐相似酒店

基于文本来推荐相似酒店 查看数据集基本信息 import pandas as pd import numpy as np from nltk.corpus import stopwords from sklearn.metrics.pairwise import linear_kernel from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extrac…

TPshop商城的保姆教程(windows)

提前准备 phpStudy下载&#xff1a;https://www.xp.cn/download.html 选择适合自己的版本下载 TPshop商城源文件下载链接&#xff1a; https://pan.baidu.com/s/143fLrxbwe9CTMCbyx7mXJQ?pwd6666 开始安装 安装完phpstudy后 以管理员的身份启动phpstudy.exe 选择合适自己…

[猫头虎分享21天微信小程序基础入门教程] 第20天:小程序的多媒体功能与图像处理

[猫头虎分享21天微信小程序基础入门教程] 第20天&#xff1a;小程序的多媒体功能与图像处理 第20天&#xff1a;小程序的多媒体功能与图像处理 &#x1f3a8; 自我介绍 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师。今天我们继续微信小程序的学习&#xff…

SRE视角下的DevOps构建之道

引言&#xff1a; 随着数字化时代的飞速发展&#xff0c;软件成为了企业竞争力的核心。为了更高效地交付高质量的软件&#xff0c;DevOps&#xff08;Development和Operations的组合&#xff09;作为一种文化、实践和工具集的集合&#xff0c;逐渐成为了行业内的热门话题。然而…

记录贴 Elasticsearch的RestClient进行DSL查询

must&#xff1a;必须匹配每个子查询&#xff0c;类似“与” should&#xff1a;选择性匹配子查询&#xff0c;类似“或” must_not&#xff1a;必须不匹配&#xff0c;不参与算分&#xff0c;类似“非” filter&#xff1a;必须匹配&#xff0c;不参与算分 package com.h…

java中的工具类

以下是我们到现在学的三个类 在书写工具类的时候我们要遵循以下的规则 类名见面知意是为了知道这个工具类的作用 私有化构造方法的作用是为了不让外界不能创造这个类的对象吗&#xff0c;因为工具类不是描述一个事物的&#xff0c;它是一个工具。 方法定义位静态是为了方便调用…

网页中的音视频裁剪拼接合并

一、需求描述 项目中有一个配音需求&#xff1a; 1&#xff09;首先&#xff0c;前台会拿到一个英语视频&#xff0c;视频的内容是A和B用英语交流&#xff1b; 2&#xff09;然后&#xff0c;用户可以选择为某一个角色配音&#xff0c;假如选择为A配音&#xff0c;那么视频在播…

Linux学习笔记(二)

一、Linux文件目录 1.命令&#xff1a;tree -L 1 2.挂载命令&#xff08;例如U盘&#xff0c;需要挂载之后才能访问&#xff09;&#xff1a; mount /dev/cdrom /mnt ls /mnt 3.查看登录信息&#xff1a; last / lastlog 4.修改/查看网络信息 vi /etc/sysconfig/netw…

kubernetes-PV与PVC

一、PV和PVC详解 当前&#xff0c;存储的方式和种类有很多&#xff0c;并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中&#xff0c;放了方便我们的使用和管理&#xff0c;Kubernetes提出了PV和PVC的概念&#xff0c;这样Kubernetes集群的管理人员就…

jsRpc js逆向远程调用加密函数

rpc介绍&#xff1a; RPC 全称 Remote Procedure Call——远程过程调用,简单说就是为了解决远程调用服务的一种技术&#xff0c;使得调用者像调用本地服务一样方便透明&#xff1b; 使用RPC服务就可以直接在浏览器中的页面js中注入代码&#xff0c;将其作为一个客户端&#xff…

真实故障分享,H3C ER3208G3-X路由器-双绞线一闪一停

六类非屏蔽双绞线 网线钳 如上图所示&#xff0c;2号线接到h3c路由器出现网线一闪一停&#xff0c;用对线器测试一到8芯能一一对应&#xff0c;无法上网。2号线接到h3c交换机能正常上网&#xff0c;难道是网线对568A 568B有要求&#xff1f; 解决方式&#xff1a;通过两端568…

电脑丢失api-ms-win-crt-runtime-l1-1-0.dll的多种修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“api-ms-win-crt-runtime-l1-1-0.dll丢失”。这个错误通常发生在Windows操作系统中&#xff0c;它表示一个动态链接库文件丢失或损坏。这个问题可能会导致某些应用程序无法正常运行&#xf…

synchronized 锁的到底是什么?

通过8种情况演示锁运行案例&#xff0c;看看我们到底锁的是什么 1锁相关的8种案例演示code package com.bilibili.juc.lock;import java.util.concurrent.TimeUnit;/*** 题目&#xff1a;谈谈你对多线程锁的理解&#xff0c;8锁案例说明* 口诀&#xff1a;线程 操作 资源类* 8…

代码随想录算法训练营第36期DAY43

DAY43 343整数拆分 注意&#xff1a;当几个数的数值相近&#xff0c;乘积才会尽可能地大&#xff08;好想&#xff1a;数一大一小&#xff0c;最大当然是自己乘以自己&#xff09; 代码随想录官方题解&#xff1a; class Solution {public: int integerBreak(int n) { …

【Tlias智能学习辅助系统】01 准备工作

Tlias智能学习辅助系统 01 创建员工、部门表创建springboot工程&#xff0c;引入对应的起步依赖(web、mybatis、mysql驱动、lombok)准备 Mapper、Service、Controller 等基础结构MapperServiceControllerpojo封装类application.properties 接口开发规范 创建员工、部门表 -- 创…

前端调用exe程序配置

前置条件 访问端安装好需要调用的exe程序 1、新建reg文件 先新建一个txt文件&#xff0c;重命名为xx.reg 点击是&#xff0c;确认更改 2、编写注册表内容 右键点击文件&#xff0c;用记事本打开&#xff0c;输入以下内容 将下面的${exeName}修改为自定义的程序名&#x…

Web开发中,就session和cookie相比,用session比用cookie的优点有哪些?

在Web项目中&#xff0c;session和cookie都是用于存储用户数据的机制&#xff0c;但它们有不同的优缺点。使用session比使用cookie有以下几个主要优点&#xff1a; 1. 安全性更高 敏感数据保护&#xff1a;Session数据存储在服务器端&#xff0c;而不是客户端。这样&#xff…