图像融合评价指标代码python
时间: 2025-01-24 11:42:55 浏览: 59
### 图像融合评价指标的Python代码
对于图像融合效果的评估,通常采用多种定量度量标准来衡量融合后的图像质量。这些度量方法可以从不同角度反映融合算法的好坏,常见的包括均方误差(MSE),峰值信噪比(PSNR),结构相似性(SSIM)以及互信息(MI)[^1]。
下面提供了一组基于上述几种典型评价指标的Python实现:
#### 计算MSE (Mean Squared Error)
```python
import numpy as np
def mse(imageA, imageB):
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
return err
```
此函数计算两幅图片之间的平均平方差[MSE].
#### PSNR (Peak Signal-to-Noise Ratio)
```python
from math import log10, sqrt
def psnr(original, compressed):
mse_value = mse(original, compressed)
if mse_value == 0:
return 100
max_pixel = 255.0
psnr_value = 20 * log10(max_pixel / sqrt(mse_value))
return psnr_value
```
该部分实现了峰值信噪比的计算逻辑. 当输入图像完全相同时返回最大值100dB.
#### SSIM (Structural Similarity Index Measure)
为了更贴近人类视觉系统的感知特性,SSIM被广泛应用于图像质量评估中:
```python
from skimage.metrics import structural_similarity as ssim
def calculate_ssim(img1, img2):
score, diff = ssim(img1, img2, full=True)
return score
```
这里利用`skimage`库中的内置功能快速获取两张对比图间的结构性相似程度得分.
#### MI (Mutual Information)
互信息能够体现源图像间的信息共享水平,在多模态数据处理领域尤为重要:
```python
from sklearn.metrics import mutual_info_score
def mutual_information(hgram):
""" Mutual information for joint histogram"""
# Convert bins counts into probability values
pxy = hgram / float(np.sum(hgram))
px = np.sum(pxy, axis=1) # marginal for x over y
py = np.sum(pxy, axis=0) # marginal for y over x
px_py = px[:, None] * py[None,:] # Broadcast to multiply marginals
nzs = pxy > 0 # Only non-zero pxy values contribute to the sum
return np.sum(pxy[nzs] * np.log(pxy[nzs] / px_py[nzs]))
def calc_mi(imageA, imageB, num_bins=256):
hist_2d, _, _ = np.histogram2d(
imageA.ravel(),
imageB.ravel(),
bins=num_bins,
range=[[0, 256], [0, 256]]
)
mi = mutual_information(hist_2d)
return mi
```
通过构建联合直方图并应用熵理论公式得出两个随机变量之间存在的依赖关系强度.
阅读全文
相关推荐


















