图像处理篇---图像处理中常见参数

news2025/2/25 9:58:35

文章目录

  • 前言
  • 一、分贝(dB)的原理
    • 1.公式
  • 二、峰值信噪比(PSNR, Peak Signal-to-Noise Ratio)
    • 1.用途
    • 2.公式
    • 3.示例
  • 三、信噪比(SNR, Signal-to-Noise Ratio)
    • 1.用途
    • 2.公式
    • 3.示例
  • 四、动态范围(Dynamic Range)
    • 1.用途
    • 2.公式
  • 五、分贝的意义
    • 1.直观性
    • 2.人眼适应性
    • 3.标准化比较
  • 六、结构相似性指数(SSIM, Structural Similarity Index)
    • 1.原理
    • 2.公式
    • 3.示例代码
  • 七、多尺度结构相似性指数(MS-SSIM)
    • 1.原理
    • 2.示例代码
  • 八、平均绝对误差(MAE, Mean Absolute Error)
    • 1.原理
    • 2.公式
    • 3.示例代码
  • 九、视觉信息保真度(VIF, Visual Information Fidelity)
    • 1.原理
    • 2.示例代码
  • 十、学习感知图像块相似度(LPIPS)
    • 1.原理
    • 2.示例代码
  • 总结


前言

图像处理中,参数的衡量常涉及对数单位(如分贝,dB),主要用于量化信号的强度、噪声水平或图像质量的相对变化。以下是常见参数的原理、计算方法和示例:


一、分贝(dB)的原理

分贝(Decibel)是一种对数单位,用于表示两个量(如信号与噪声)的比值。其核心优势是将大范围的数值压缩到更易处理的尺度,并符合人类感官对强度的非线性感知特性

1.公式

分贝计算公式
其中 𝑃1和 𝑃2是两个功率值。若涉及幅度值(如电压、像素强度),公式需平方:
幅度值分贝

二、峰值信噪比(PSNR, Peak Signal-to-Noise Ratio)

1.用途

用途:衡量图像压缩或重建后的质量对比原始图像)。

2.公式

峰值信噪比

3.示例

峰值信噪比计算示例

三、信噪比(SNR, Signal-to-Noise Ratio)

1.用途

用途:量化信号中有效信息与噪声的比例。

2.公式

信噪比公式

3.示例

信噪比示例

四、动态范围(Dynamic Range)

1.用途

用途:描述图像中最亮与最暗区域的比值

2.公式

动态范围

五、分贝的意义

1.直观性

直观性:分贝将大范围数值压缩为小范围
(如 1:1000 → 30dB)。

2.人眼适应性

人眼适应性:符合人类对亮度变化的非线性感知韦伯-费希纳定律)。

3.标准化比较

标准化比较:便于跨不同设备或场景的图像质量评估

六、结构相似性指数(SSIM, Structural Similarity Index)

1.原理

SSIM通过比较亮度(Luminance)、对比度(Contrast)和结构(Structure)三个因素来评估两幅图像的相似性,范围在**[-1, 1]**之间,1表示完全相同

2.公式

结构相似性指数

3.示例代码

from skimage.metrics import structural_similarity as ssim
import cv2

 读取图像(需保证尺寸相同)
img1 = cv2.imread('original.png', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('processed.png', cv2.IMREAD_GRAYSCALE)

#计算SSIM
ssim_score = ssim(img1, img2, data_range=255)  # 8位图像范围为0-255
print(f"SSIM: {ssim_score:.4f}")

七、多尺度结构相似性指数(MS-SSIM)

1.原理

MS-SSIM在多个尺度(分辨率)下计算SSIM,综合各尺度的结果,更符合人类视觉系统多分辨率特征的感知。

2.示例代码

import tensorflow as tf  # 需要安装tensorflow或使用其他库

#使用TensorFlow的MS-SSIM实现
def compute_ms_ssim(img1, img2):
    img1 = tf.convert_to_tensor(img1, dtype=tf.float32)
    img2 = tf.convert_to_tensor(img2, dtype=tf.float32)
    return tf.image.ssim_multiscale(img1, img2, max_val=255)

#示例(假设img1和img2为numpy数组,形状[H, W, C])
ms_ssim_score = compute_ms_ssim(img1, img2)
print(f"MS-SSIM: {ms_ssim_score.numpy():.4f}")

八、平均绝对误差(MAE, Mean Absolute Error)

1.原理

计算两图像像素差的绝对值的均值,单位与像素强度相同。

2.公式

平均绝对误差

3.示例代码

def compute_mae(img1, img2):
    return np.mean(np.abs(img1 - img2))

mae = compute_mae(img1, img2)
print(f"MAE: {mae:.2f}")

九、视觉信息保真度(VIF, Visual Information Fidelity)

1.原理

通过自然场景统计模型人类视觉系统的失真感知来评估图像质量,值越大表示质量越好通常范围在0到1之间)。

2.示例代码

#需要安装piq库:pip install piq
from piq import vif_p

#输入为PyTorch张量,形状[B, C, H, W](B为批次大小)
img1_tensor = torch.tensor(img1).unsqueeze(0).permute(0, 3, 1, 2)  # 示例转换
img2_tensor = torch.tensor(img2).unsqueeze(0).permute(0, 3, 1, 2)
vif_score = vif_p(img1_tensor, img2_tensor)
print(f"VIF: {vif_score.item():.4f}")

十、学习感知图像块相似度(LPIPS)

1.原理

基于深度学习模型(如VGG)提取特征,计算特征空间的距离值越小表示越相似

2.示例代码

#需要安装lpips库:pip install lpips
import lpips

loss_fn = lpips.LPIPS(net='vgg')  # 使用VGG网络
img1_tensor = lpips.im2tensor(lpips.load_image('original.png'))
img2_tensor = lpips.im2tensor(lpips.load_image('processed.png'))
lpips_score = loss_fn(img1_tensor, img2_tensor)
print(f"LPIPS: {lpips_score.item():.4f}")

总结

以上就是今天要讲的内容,本文仅仅简单介绍了分贝、峰值信噪比、信噪比、动态范围等的公式、原理以及使用。

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

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

相关文章

【Java】—— 二叉树

一、树型结构 树形结构是一种重要的数据结构,它类似于现实生活中的树的结构,由结点和边构成。树形结构具有以下特点: 树形结构是一种层次化的结构,由根结点、内部结点和叶子结点组成。根结点是树的顶部结点,没有父结点…

机场导航系统有哪些功能?精准定位与高效路径规划技术深度剖析

本文专为关注机场服务优化、乘客体验提升的IT技术员及航空业同仁而写。将深入探讨机场室内导航系统的核心功能,旨在解决乘客在机场内部定位、路径规划、服务寻找等方面的痛点。如需获取机场导航系统解决方案可前往文章最下方获取,如有项目合作及技术交流…

医疗AI领域中GPU集群训练的关键技术与实践经验探究(上)

医疗AI领域中GPU集群训练的关键技术与实践经验探究(上) 一、引言 1.1 研究背景与意义 在科技飞速发展的当下,医疗 AI 作为人工智能技术与医疗领域深度融合的产物,正引领着医疗行业的深刻变革。近年来,医疗 AI 在疾病诊断、药物研发、健康管理等诸多方面取得了显著进展,…

STM32-智能小车项目

项目框图 ST-link接线 实物图: 正面: 反面: 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 一、让小车动起来 新建文件夹智能小车项目 在里面复制19-串口打印功能 重命名为01-让小车动起来 新建文件夹motor&…

星环科技推出DeepSeek全场景解决方案:即开即用、企业级部署、端侧智能三位一体

星环科技(688031.SH)正式发布DeepSeek全场景解决方案,全面覆盖个人用户、企业客户及行业场景需求,为用户提供从个人到企业、从云端到本地的全方位AI应用支持,为不同需求的用户提供了灵活、高效且安全的AI解决方案。 省…

《全星质量管理 QMS 软件系统》:赋能企业高效质量管理

《全星质量管理 QMS 软件系统》:赋能企业高效质量管理 在当今竞争激烈的商业环境中,《全星质量管理 QMS 软件系统》脱颖而出,展现出了显著且无可比拟的应用优势。 首先,《全星质量管理 QMS 软件系统》犹如一张严密的质量管控大网…

【多模态处理篇三】【DeepSeek语音合成:TTS音色克隆技术揭秘】

最近帮某明星工作室做AI语音助手时遇到魔幻需求——要求用5秒的咳嗽声克隆出完整音色!传统TTS系统直接翻车,生成的语音像得了重感冒的电音怪物。直到祭出DeepSeek的TTS音色克隆黑科技,才让AI语音从"机器朗读"进化到"声临其境"。今天我们就来扒开这个声音…

C++Qt学习笔记——实现一个串口通信界面

CQt学习笔记——实现一个串口通信界面 一.界面二、项目结构三、头文件1. 文件头部2. 类定义3. 构造函数和析构函数4. 成员函数5. 成员变量 四、代码解析ReceiveAeraInit 函数解析SerialHelper 构造函数解析1. 为什么有两个 SerialHelper?2. 为什么用 :: 和 :&#x…

Word(2010)排版技巧

设置标题样式 选择需要设置的标题 如下图所示。选择文字后,点击对应的样式即可设置。 设置标题格式 设置字体格式 设置段落格式 显示所有样式 标题样式展示 建议 建议新建一个正文样式,可以命名为正文1,因为所有的样式参考的“样式基准…

一.Vue中的条件渲染

1.在<head>中引用 <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> 2.在<body>中写入 <div id"app"><p><a v-if "user.usernameadmin"href"#">编辑</a><a …

IO进程 day05

IO进程 day05 9. 进程9. 9. 守护进程守护进程的特点守护进程创建步骤 10. 线程10.1. 线程的概念10.2. 进程和线程的区别10.2. 线程资源10.3. 线程的函数接口1. pthread_create-创建线程线程函数和普通函数的区别 2. pthread_exit3.线程资源回收函数join和detach的区别 获取线程…

【HeadFirst系列之HeadFirstJava】第6天之认识Java的API:解锁高效开发的钥匙

认识Java的API&#xff1a;解锁高效开发的钥匙 在《Head First Java》的第六章节中&#xff0c;作者深入探讨了Java的API&#xff08;Application Programming Interface&#xff09;&#xff0c;并强调了它在Java开发中的重要性。Java API 是Java开发工具包&#xff08;JDK&a…

4 - AXI GPIO按键控制LED实验

文章目录 1 实验任务2 系统框图3 软件设计 1 实验任务 本实验任务是通过调用PL端AXI GPIO IP核&#xff0c;使用中断机制&#xff0c;实现PL端按键控制 PS端LED的功能。 2 系统框图 3 软件设计 注意事项&#xff1a; AXI GPIO IP核是双沿触发中断&#xff0c;不可设置&…

题海拾贝:扫雷

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

Deepseek本地部署小实践(c盘)

目录 前言 一、安装ollama 二、打开终端执行run 三、可视化 前言 小鲸鱼出来以后看到很多大佬本地部署AI&#xff0c;自己也想试一试&#xff0c;第一次部署AI&#xff0c;选了一个简单的办法&#xff0c;实践一下&#xff0c;写得比较粗糙。 一、安装ollama 先简单的介绍…

详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll

运行程序时提示“d3dx9_27.dll文件缺失”&#xff0c;通常由DirectX组件损坏或文件丢失引起。此问题可通过系统化修复方法解决&#xff0c;无需重装系统或软件。下文将详细说明具体步骤及注意事项。 一.d3dx9_27.dll缺失问题的本质解析 当系统提示“d3dx9_27.dll丢失”时&…

【LeetCode刷题之路】leetcode155.最小栈

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…

Vue全局变量的定义和使用,创建 Store变量、读取、修改

在VUE中&#xff0c;当需要各js、各页面都能读写的全局变量时&#xff0c;可以用store变量&#xff0c;从定义到使用的方法如下 一&#xff0e;定义变量&#xff0c;例&#xff1a;我们定一个全局变量gxh 找到 vue的/ src/ store路径, 在 modules文件夹下创建文件gvar.js 在…

基于Docker的前端环境管理:从开发环境到生产部署的实现方案

# 基于Docker的前端环境管理&#xff1a;从开发环境到生产部署的实现方案 简介及前端开发环境挑战 简介 是一种容器化平台&#xff0c;可以将应用程序及其依赖项打包为一个容器&#xff0c;提供一种轻量级、可移植的环境。它能够简化开发、部署和运维的流程&#xff0c;提高…

单片机延时函数怎么写规范?

我们以前在开发产品的时候&#xff0c;肯定会碰到一些延时需求&#xff0c;比如常见的LED闪烁&#xff0c;按键消抖&#xff0c;控制IO口输出时序等等。 别小看延时&#xff0c;这个小问题&#xff0c;想做好&#xff0c;甚至要考虑到程序架构层面。 在开发板上&#xff0c;可能…