jpeg图像压缩psnr
时间: 2025-01-21 09:37:14 浏览: 52
### JPEG 图像压缩与 PSNR 的关系
JPEG 图像压缩是一种基于离散余弦变换 (DCT) 和量化过程的有损压缩方法[^4]。该方法通过去除图像中的人眼不易察觉的信息来达到较高的压缩比,尽管这可能会引入一些失真。
#### 峰值信噪比(PSNR)
峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)是一个衡量信号重构质量的重要指标,尤其用于评估经过某种处理(如压缩)后的图像相对于原始图像的质量变化情况。PSNR 越高表示重建图像越接近于原始图像,即失真程度越低。
对于灰度图像而言,PSNR 可以按照如下公式计算:
\[ \text{PSNR} = 10 \cdot \log_{10}\left(\frac{\text{MAX}_I^2}{\text{MSE}}\right) \]
其中,
- \( \text{MAX}_I \) 是像素的最大可能值,对于8位图像来说通常是255;
- MSE 表示均方误差(Mean Squared Error),定义为:
\[ \text{MSE} = \frac{1}{mn} \sum_{i=0}^{m-1} \sum_{j=0}^{n-1}[ I(i,j)-K(i,j)]^2 \]
这里 \( m,n \) 分别代表图像的高度和宽度;\( I(i,j), K(i,j) \) 则分别是原始图像和经压缩后恢复出来的图像在同一位置上的像素强度值。
当应用于彩色图像时,则需针对每个颜色通道单独求取 MSE 并最终平均得到整体的 PSNR 数值。
```python
import numpy as np
def calculate_psnr(original_image, compressed_image):
max_pixel_value = 255.0
mse = np.mean((original_image.astype(float) - compressed_image.astype(float)) ** 2)
if mse == 0:
return float('inf')
psnr = 20 * np.log10(max_pixel_value / np.sqrt(mse))
return psnr
```
此函数接收两个参数——`original_image` 和 `compressed_image`,它们均为 NumPy 数组形式表示的图片数据,并返回一个浮点数值作为两者的 PSNR 结果。
阅读全文
相关推荐

















