python中,from skimage.metrics import peak_signal_noise_ratio as psnr之后,psnr函数的输入是什么
时间: 2024-03-19 09:40:33 浏览: 29
从skimage.metrics中导入的peak_signal_noise_ratio函数(也就是psnr函数)需要两个参数,分别是原始图像和噪声图像。这两个参数都应该是numpy数组,且具有相同的形状。具体来说,原始图像应该是没有噪声的干净图像,而噪声图像应该是通过某种方式添加噪声后得到的图像。例如,可以使用numpy.random模块生成噪声图像。
相关问题
from PIL import Image import numpy as np import io # 读取原始图像和压缩后图像 original_img = Image.open('test.jpg') compressed_img = Image.open('test_compressed.jpg') # 将图像转换为 NumPy 数组 original_img_arr = np.array(original_img) compressed_img_arr = np.array(compressed_img) # 计算原始图像大小 original_size = original_img_arr.nbytes # 计算压缩后图像大小 compressed_size = compressed_img_arr.nbytes # 计算压缩率 compression_ratio = compressed_size / original_size # 计算峰值信噪比(PSNR) mse = np.mean((original_img_arr - compressed_img_arr) ** 2) psnr = 10 * np.log10(255**2 / mse) # 计算结构相似性指数(SSIM) from skimage.metrics import structural_similarity as ssim ssim_score = ssim(original_img_arr, compressed_img_arr, multichannel=True) # 计算峰值信噪比改进比(PSNR-HVS) from skimage.metrics import peak_signal_noise_ratio as psnr_hvs psnr_hvs_score = psnr_hvs(original_img_arr, compressed_img_arr, data_range=original_img_arr.max()) # 计算多样性信噪比(MS-SSIM) from skimage.metrics import multi_scale_ssim as ms_ssim ms_ssim_score = ms_ssim(original_img_arr, compressed_img_arr, data_range=original_img_arr.max(), win_size=11) # 计算复杂度压缩比(CPC) cpc = psnr / compression_ratio # 输出七种压缩率 print(f"Compression ratio: {compression_ratio:.4f}") print(f"Peak Signal-to-Noise Ratio (PSNR): {psnr:.2f}") print(f"Structural Similarity Index (SSIM): {ssim_score:.4f}") print(f"Peak Signal-to-Noise Ratio - HVS (PSNR-HVS): {psnr_hvs_score:.2f}") print(f"Multi-Scale Structural Similarity (MS-SSIM): {ms_ssim_score:.4f}") print(f"Complexity-Compression Ratio (CPC): {cpc:.2f}") print(f"Original size: {original_size:,}") print(f"Compressed size: {compressed_size:,}")ValueError: operands could not be broadcast together with shapes (417,556,3) (418,558,3)
这个错误通常是由于两个数组的形状不匹配导致的。在您的情况下,您正在尝试将形状为(417,556,3)和(418,558,3)的两个数组进行广播操作,但它们的形状不兼容。
根据您提供的代码,错误可能出现在以下几行中:
```python
original_img_arr = np.array(original_img)
compressed_img_arr = np.array(compressed_img)
```
这两行代码将 PIL.Image 对象转换为 NumPy 数组。如果两个图像的大小不同,则它们的数组形状也不同,这可能导致广播错误。
您可以尝试查看这两张图像的大小,看看它们是否匹配。或者,您可以尝试调整图像的大小,使它们具有相同的形状,然后再将它们转换为 NumPy 数组。
例如,您可以使用 PIL 库中的 resize() 函数来调整图像的大小:
```python
original_img = original_img.resize((width, height))
compressed_img = compressed_img.resize((width, height))
```
其中,width 和 height 是您想要的新图像的宽度和高度。然后,您可以将这两张图像转换为 NumPy 数组,并继续计算 PSNR、SSIM 等指标。
用python 编写一段程序,完成以下内容: 读入图像Lenna.png 读入 Lenna. jpg,比较两个图像数据,它们是否相等?为什么?计算两个图像数据之间的 PSNR 值。skimage.metrics.peak_ signal noise_ ratio 函数用于计算峰值信号-噪声 比(PSNR):PSNR=10 1ogi0(peakval’/NSE)其中 peakval 是图像灰度级的最大值(e.g. uint8 图像为 255),MSE 是A和ref 之间的均方差。PSNR 值越大,说明A和ref 越相似,若A和ref 相等,PSNR 等于无穷大
以下是用 Python 编写的程序,可以完成读入图像 Lenna.png 和 Lenna.jpg,比较两个图像数据是否相等,并计算它们之间的 PSNR 值:
```python
import numpy as np
from skimage import io, metrics
# 读入图像 Lenna.png 和 Lenna.jpg
img1 = io.imread('Lenna.png')
img2 = io.imread('Lenna.jpg')
# 比较两个图像数据是否相等
if np.array_equal(img1, img2):
print("两个图像数据相等")
else:
print("两个图像数据不相等")
# 计算两个图像数据之间的 PSNR 值
psnr = metrics.peak_signal_noise_ratio(img1, img2)
print("PSNR 值为:", psnr)
```
如果两个图像数据相等,程序会输出“两个图像数据相等”,否则会输出“两个图像数据不相等”。无论两个图像数据是否相等,程序都会计算它们之间的 PSNR 值,并输出 PSNR 值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)