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

news/2025/2/24 14:35:22

文章目录

  • 前言
  • 一、分贝(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.公式

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

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

1.用途

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

2.公式

<a class=信噪比>峰值信噪比" />

3.示例

<a class=信噪比>峰值信噪比计算示例" />

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

1.用途

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

2.公式

<a class=信噪比公式" />

3.示例

<a class=信噪比示例" />

四、动态范围(Dynamic Range)

1.用途

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

2.公式

<a class=动态范围" />

五、分贝的意义

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.niftyadmin.cn/n/5864471.html

相关文章

如何清理cache-loader生成的缓存目录?

清理 cache-loader 生成的缓存目录可以帮助避免潜在的缓存问题和不必要的磁盘占用。以下是几种清理缓存的有效方法&#xff1a; 一、手动清理 1. 定位缓存目录 在 Webpack 配置中&#xff0c;你可以指定 cache-loader 的缓存目录。默认情况下&#xff0c;缓存目录可能位于项…

深入解析JVM垃圾回收机制

1 引言 本节常见面试题 如何判断对象是否死亡&#xff08;两种方法&#xff09;。简单的介绍一下强引用、软引用、弱引用、虚引用&#xff08;虚引用与软引用和弱引用的区别、使用软引用能带来的好处&#xff09;。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收…

一款社交媒体中查用户名的工具

简介 追踪 400 多个社交网络中的用户名社交媒体账户以查找账户 安装 # python环境 pip安装 pip install sherlock-project # Mac环境 brew安装 brew install sherlock # docker安装 docker pull sherlock/sherlock 使用方式 ->$ sherlock -h usage: sherlock [-h] [-…

Linux 命令大全完整版(08)

3. 文档编辑命令 joe 功能说明&#xff1a;编辑文本文件。语  法&#xff1a;joe [-asis][-beep][-csmode][-dopadding][-exask][-force][-help][-keepup][-lightoff][-arking][-mid][-nobackups][-nonotice][-nosta][-noxon][-orphan][-backpath<目录>][-columns<…

基于GraphQL的电商API性能优化实战

以下是一个基于 GraphQL 的电商 API 性能优化实战案例&#xff0c;涵盖从问题分析到具体优化措施的实施过程&#xff1a; 一、初始问题分析 在电商场景下&#xff0c;随着业务发展&#xff0c;基于 GraphQL 的 API 出现了一些性能瓶颈。例如&#xff1a; 复杂查询导致响应时间过…

Spring Cloud微服务入门

### 一、什么是Spring Cloud微服务&#xff1f; 想象一下&#xff0c;你有一个超大的玩具积木&#xff0c;把它拆成很多个小积木&#xff0c;每个小积木都有自己的功能&#xff0c;比如有的是轮子&#xff0c;有的是车身&#xff0c;有的是发动机。这些小积木就是“微服务”&a…

AI多模态梳理与应用思考|从单文本到多视觉的生成式AI的AGI关键路径

摘要&#xff1a; 生成式AI正从“文本独舞”迈向“多感官交响”&#xff0c;多模态将成为通向AGI的核心路径。更深度的多模态模型有望像ChatGPT颠覆文字交互一样&#xff0c;重塑物理世界的智能化体验。 一、多模态的必然性&#xff1a;从单一到融合 生成式AI的起点是文本生成…

前沿科技一览未来趋势

3D打印在航空航天领域里很有用。它能降低成本&#xff0c;加快生产速度。 首先&#xff0c;3D打印减少了材料浪费。传统制造方法中&#xff0c;很多材料会被切掉或丢弃。但3D打印是逐层添加材料&#xff0c;这样就省下了不少材料费。 其次&#xff0c;3D打印可以简化装配过程…