python图像处理 ——几种图像增强技术

news2024/11/28 12:32:44

图像处理 ——几种图像增强技术

  • 前言
  • 一、几种图像增强技术
    • 1.直方图均衡化
    • 2.直方图适应均衡化
    • 3.灰度变换
    • 4.同态滤波
    • 5.对比拉伸
    • 6.对数变换
    • 7.幂律变换(伽马变换)

前言

图像增强是指通过各种算法和技术,改善或提高数字图像的质量、清晰度、对比度、亮度、颜色等方面的处理过程。它可以通过调整图像的像素值来改善图像的可视化效果,使图像更易于观察和分析。图像增强广泛应用于医学影像诊断、监控、遥感、数字图像处理等领域。常见的图像增强方法包括灰度拉伸、直方图均衡化、滤波、锐化、颜色增强等。

一、几种图像增强技术

1.直方图均衡化

想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方图做一个横向拉伸(如下图),这就是直方图均衡化要做的事情。通常情况下这种操作会改善图像的对比度。

在这里插入图片描述
代码如下

# -*- coding: utf-8 -*-
import cv2
from matplotlib import pyplot as plt
import numpy as np
img = cv2.imread('gray.png', 0)
#=============================直方图均衡化==========================
equ = cv2.equalizeHist(img)

2.直方图适应均衡化

直方图适应均衡化(CLAHE)是数字图像处理中用于增强图像对比度的一种技术。它可以将原始图像中局部对比度较低的区域的像素值映射到一个更广的范围内,从而提高图像的整体对比度。

CLAHE算法可以有效地增强图像的对比度,尤其适用于图像中存在大范围灰度变化的情况下。但是,CLAHE算法也存在一些问题,如对于纹理复杂的图像(如自然场景图片)可能会产生可见的块状伪影等。因此在实际应用中还需要结合其他技术进行综合处理。

代码如下

#=============================直方图适应均衡化==========================
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(16,16))
"""
该函数包含以下参数:
clipLimit: 用于控制直方图均衡化的局部对比度,值越高,越容易出现失真和噪声。建议值为2-4,若使用默认值0则表示自动计算。
tileGridSize: 表示每个块的大小,推荐16x16。
tileGridSize.width: 块的宽度。
tileGridSize.height: 块的高度。
函数返回一个CLAHE对象,可以通过该对象调用apply函数来实现直方图均衡化。
"""
cl1 = clahe.apply(img)

3.灰度变换

灰度变换的基本思想是将灰度值在某个范围内的像素值通过某种函数关系映射到另一个范围内的像素值。常见的灰度变换函数有对数变换、幂变换、反转变换等。具体的变换函数的选择取决于实际应用中需要增强的目标属性。
代码如下

#=============================灰度变换==========================
# 通过将像素值映射到新的范围来增强图像的灰度
min_gray = 0  # 新的最小灰度值
max_gray = 255  # 新的最大灰度值
gray_img_enhanced = cv2.convertScaleAbs(img, alpha=(max_gray-min_gray)/255, beta=min_gray)

4.同态滤波

同态滤波是一种常用的图像增强技术,它能够增强图像的低频信息,同时抑制高频信息。同态滤波的本质是利用了信号的对数域与频率域之间的对应关系,将原图像分解成低频与高频两部分,对低频进行增强,对高频进行抑制,然后再将两部分合并起来得到增强后的图像。

同态滤波可以用以下公式表示:

H ( u , v ) = γ H − γ L ( 1 − e − c ( D 2 ( u , v ) D 0 2 ) ) H(u,v) = \gamma_H - \gamma_L(1-e^{-c(\frac{D^2(u,v)}{D_0^2})}) H(u,v)=γHγL(1ec(D02D2(u,v)))

其中, H ( u , v ) H(u,v) H(u,v) 是频域中的同态滤波函数, D ( u , v ) D(u,v) D(u,v) 表示频率域中点 ( u , v ) (u,v) (u,v) 到图像中心的距离, D 0 D_0 D0 是频率域中的截止频率, c c c 是控制增益的参数, γ H \gamma_H γH γ L \gamma_L γL 分别是高频增益和低频衰减系数。

同态滤波的具体步骤如下:

1.将原图像转换到对数域。
2.对转换后的图像进行离散傅里叶变换,得到频率域的图像。
3.根据上述公式计算同态滤波函数 H ( u , v ) H(u,v) H(u,v)
4.将 H ( u , v ) H(u,v) H(u,v) 与频率域的图像相乘,得到增强后的频率域图像。
5.对增强后的频率域图像进行反傅里叶变换,得到增强后的图像。

同态滤波技术主要应用于图像的增强、去噪、颜色校正、图像分割等领域。它可以有效地增强低光度图像、消除背景噪声等问题,并且能够适用于各种类型的图像,具有广泛的应用前景。
代码如下

#=============================同态滤波==========================
gray = cv2.bilateralFilter(img, 15, 75, 75)
# 对数变换和傅里叶变换
H, W = gray.shape
gray_log = np.log(gray+1)
gray_fft = np.fft.fft2(gray_log)
# 设置同态滤波器参数
c, d, gamma_L, gamma_H, gamma_C = 1, 10, 0.2, 2.5, 1
# 构造同态滤波器
u, v = np.meshgrid(range(W), range(H))
Duv = np.sqrt((u-W/2)**2 + (v-H/2)**2)
Huv = (gamma_H - gamma_L) * (1 - np.exp(-c*(Duv**2)/(d**2))) + gamma_L
Huv = Huv * (1 - gamma_C) + gamma_C
# 进行频域滤波
gray_fft_filtered = Huv * gray_fft
gray_filtered = np.fft.ifft2(gray_fft_filtered)
gray_filtered = np.exp(np.real(gray_filtered))-1
# 转为uint8类型
gray_filtered = cv2.normalize(gray_filtered, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)

5.对比拉伸

对比拉伸称为归一化,用于拉伸强度值的范围以提高图像的对比度。Python/OpenCV 可以通过使用 min_max 归一化的 cv2.normalize() 方法进行对比度拉伸。
代码如下

#=============================对比拉伸==========================
norm_img1 = cv2.normalize(img,None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
# scale to uint8
norm_img1 = (255 * norm_img1).astype(np.uint8)

6.对数变换

对数变换用于将图像的每个像素值替换为其对数值,以增强较低强度值的对比度。它有助于缩小较亮的像素值范围并扩大暗像素。当需要减少图像的偏度分布以获得更好的解释时,可以应用此转换。
代买如下

#=============================对数变换==========================
# Apply log transformation method
c = 255 / np.log(1 + np.max(img))
log_image = c * (np.log(img + 1))
# Specify the data type so that
# float value will be converted to int
log_image = np.array(log_image, dtype=np.uint8)

7.幂律变换(伽马变换)

幂律变换用于从较亮图像到较暗图像突出显示对象,可以通过以下表达式使用:s = c × r^ γ ,其中 s 和 r 分别是输出和输入图像的像素值,c 是常数值,γ称为伽马值。为了减少不同强度值的计算机显示器显示问题,在此转换中使用了不同的伽马值
代买如下

#=============================幂律变换(伽马变换)==========================
# Apply Gamma=0.4 on the normalised image and then multiply by scaling constant (For 8 bit, c=255)
gamma_point_eight = np.array(255 * (img / 255) ** 0.8, dtype='uint8')

在这里插入图片描述
希望你喜欢阅读这篇文章,希望它能帮助你了解不同类型的图像增强技术。

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

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

相关文章

半阵法单脉冲测角

半阵法单脉冲测角 单脉冲测角的类型确知波束形成导向矢量半阵测向原理半阵测向仿真 单脉冲测角的类型 传统的单脉冲测向方法主要有3种,分别是半阵法、加权法和和差比幅法。在了解单脉冲测向之前,首先要知道确知波束形成,确知波束形成就是设计…

python GUI tkinter实战

筛选出列长度不为指定长度的列 from os import path from tkinter import (BOTH, BROWSE, EXTENDED, INSERT, Button, Frame, Label,Text, Tk, filedialog, mainloop, messagebox) import matplotlib.pyplot as plt import pandas as pd from PIL import Image, ImageTk from …

P3398 仓鼠找 sugar

Portal. LCA。 询问树上两条路径是否有交点。 画图发现无非两种情况: 发现一条路径的起点和终点的 LCA 经过另一条路径,是两路径相交的充要条件。 考虑如何判断这个 LCA 在不在路径上。若 d ( s , LCA ) d ( LCA , t ) d ( s , t ) d(s,\text{LCA…

ArmSom---SPI开发指南

1. 简介 RK3588从入门到精通本⽂主要介绍在Rockchip平台配置spi接口并且使用的方法开发板:ArmSoM-W3Kernel:5.10.160OS:Debian11 2. SPI接口概述 SPI(Serial Peripheral Interface),即串行外围设备接口&…

2023年辽宁省数学建模竞赛B题思路详细分析

摘要略,2023年辽宁省数学建模竞赛B题代码和论文已经完成,代码为全部3问代码,论文包括摘要、问题重述、问题分享、模型假设、符号说明、模型的建立和求解(问题1无监督聚类模型的建立和求解,问题二有监督分类预测模型的建…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点: 1. 硬件设施:包括服务器、存储设备、网络设备等,这是整个系统运行的物理基础。 2. 软件设施:包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等,这些是…

QT在线安装5.15之前的版本(下载速度飞快)

使用最新的QT在线安装器,安装QT版本时只能安装5.15以及之后的版本,安装QT5.15之前的版本只能通过离线安装的方式,离线安装后还要自己去配置QT,离线安装还有个问题的,后续维护比较麻烦,QT的维护工具还要自己…

美联储再度暂停升息:“比特币突破35,000美元!“

今天凌晨举行FOMC 利率会议的结果并不引起意外在意料之中,再次”暂停升息”,基准利率仍然在 5.25% 至 5.5% 区间。 市场反应出对于美联储暂停升息松了一口气,意味着当前的利率基本上是美联储的最高利率,要再继续加息的概率不大。 …

高浓度化工废水处理工艺是怎样的

高浓度化工废水处理工艺主要包括以下步骤: 预处理:通过物理、化学和生物等方法对废水进行预处理,以去除其中的悬浮物、油污、重金属等有害物质。常用的预处理方法包括沉淀、过滤、吸附、氧化等。化学氧化:利用氧化剂(…

体验SOLIDWORKS旋转反侧切除增强 硕迪科技

大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强,添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后,点击键盘上的S键并输入旋转切除以搜索该命令&a…

C语言--输出1-100以内的素数

首先要有1-100以内的数字 for(int i1;i<100;i) 素数&#xff1a; 素数是指只能被1和自身整除的正整数。换句话说&#xff0c;素数是大于1的数&#xff0c;它除了1和它本身之外没有其他因数。例如&#xff0c;2、3、5、7、11、13等都是素数。然而&#xff0c;4、6、8、9等不…

浅述边缘计算场景下的云边端协同融合架构的应用场景示例

云计算正在向一种更加全局化的分布式节点组合形态进阶&#xff0c;而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快&#xff0c;海量设备产生的数据&#xff0c;若上传到云端进行处理&#xff0c;会对云端造成巨大压力。如果利用边缘计算来让云端的能…

多模态论文阅读之BLIP

BLIP泛读 TitleMotivationContributionModel Title BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation Motivation 模型角度&#xff1a;clip albef等要么采用encoder-base model 要么采用encoder-decoder model.…

Proteus仿真--1602LCD显示电话拨号键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的LCD1602显示电话拨号键盘按键实验&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中右下方12个按键模拟仿真手机键盘&#xff0c;使用方法同手机键一样&#xff0c;拨打手机号码则在液晶显示屏上显示对应的号码 仿真运行…

MySQL 数据脱敏方式盘点

对于企业而言&#xff0c;数据脱敏可以在数据共享或测试时用于保护敏感数据&#xff08;如信用卡&#xff0c;社保卡&#xff0c;地址等&#xff09;。通过对敏感数据进行脱敏处理&#xff0c;组织可以最大限度地降低数据泄露和未经授权访问的风险&#xff0c;同时仍能够使用真…

自己动手实现一个深度学习算法——五、误差反向传播法

文章目录 五、误差反向传播法1.计算图1&#xff09;概念2&#xff09;计算图3&#xff09;局部计算4&#xff09;计算图解题优点 2.链式法则1&#xff09;计算图的反向传播2)什么是链式法则3&#xff09;链式法则和计算图 3.反向传播1&#xff09;加法节点的反向传播2&#xff…

MySQL - Zero date value prohibited

问题: timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited 原因: timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错 解决: 1.修复或删除原数据 2. mysqlurl 中添加zeroDateTimeBehaviorconve…

软磁直流测试系统磁参量指标

软磁直流测试系统磁参量指标 测量条件&#xff1a;( 23 5 )℃ 环形试样应为薄壁环&#xff0c;外径与内径之比应小于1.1。 测试前环形试样应先退磁。 ① 采用标准样品测试。

Cell Reports | 表观组学和单细胞测序揭示在急性应激条件下FoxM1协调β细胞亚群的细胞分裂、蛋白质合成和线粒体活性

发表单位&#xff1a;瑞士分子健康科学研究所 期 刊 &#xff1a;Cell Reports&#xff08;IF:8.8&#xff09; 发表日期&#xff1a;2023年8月29日 研究技术&#xff1a;ATAC-seq、ChIP-seq 、RNA-seq、scRNA-seq&#xff08;爱基百客均可以提供&#xff09; 2023年8月…

2023NOIP A层联测23-涂鸦

有一面由 n m n\times m nm 个格子组成的墙&#xff0c;每个格子要么是黑色&#xff0c;要么是白色。你每次将会进行这样的操作&#xff1a;等概率随机选择一个位置 ( x , y ) (x,y) (x,y)&#xff0c;和一个颜色 c c c&#xff08;黑色或者白色&#xff09;&#xff08; 1…