import matplotlib.pyplot as plt from PIL import Image # 读取图像 image = np.array(Image.open('0.jpg')) # 将图像数据归一化到 [0, 1] 范围内 image_norm = image.astype('float32') / 255.0 # 压缩图像 compressed_image = compress_image(image_norm, n_clusters=16) # 显示压缩前后的图像 fig, ax = plt.subplots(1, 2, figsize=(10, 5)) ax[0].imshow(image_norm) ax[0].set_title('Original Image') ax[1].imshow(compressed_image) ax[1].set_title('Compressed Image') plt.show()加上计算MS-SSIM的代码
时间: 2024-02-16 18:59:55 浏览: 57
可以使用以下代码计算压缩后的图像与原始图像之间的 MS-SSIM 值:
```
import numpy as np
from skimage.metrics import structural_similarity as ssim
# 计算 MS-SSIM
ms_ssim_value = ssim(image_norm, compressed_image, multichannel=True)
print("MS-SSIM: {:.4f}".format(ms_ssim_value))
```
这将在显示压缩前后的图像后,输出压缩前后图像的 MS-SSIM 值。注意,这里使用了 `skimage` 库中的 `structural_similarity` 函数来计算 MS-SSIM 值,需要使用 `multichannel=True` 参数来指定输入图像是多通道图像。
相关问题
将这个代码import matplotlib.pyplot as plt from PIL import Image # 读取图像 image = np.array(Image.open('image.jpg')) # 压缩图像 compressed_image = compress_image(image, n_clusters=16) # 显示压缩前后的图像 fig, ax = plt.subplots(1, 2, figsize=(10, 5)) ax[0].imshow(image) ax[0].set_title('Original Image') ax[1].imshow(compressed_image) ax[1].set_title('Compressed Image') plt.show()显示的图像保存为图像文件
可以使用以下代码将显示的图像保存为图像文件:
```
from PIL import Image
# 将图像数组转换为PIL图像对象
compressed_image = Image.fromarray(compressed_image)
# 保存图像文件
compressed_image.save('compressed_image.jpg')
```
这将把压缩后的图像保存为名为 "compressed_image.jpg" 的图像文件。
import matplotlib.pyplot as plt from PIL import Image # 读取图像 image = np.array(Image.open('0.jpg')) # 将图像数据归一化到 [0, 1] 范围内 image_norm = image.astype('float32') / 255.0 # 压缩图像 compressed_image = compress_image(image_norm, n_clusters=16) # 显示压缩前后的图像 fig, ax = plt.subplots(1, 2, figsize=(10, 5)) ax[0].imshow(image_norm) ax[0].set_title('Original Image') ax[1].imshow(compressed_image) ax[1].set_title('Compressed Image') plt.show()加上计算PSNR的代码
可以使用以下代码计算压缩后的图像与原始图像之间的 PSNR 值:
```
import numpy as np
import math
# 计算 PSNR
def psnr(img1, img2):
mse = np.mean((img1 - img2) ** 2)
if mse == 0:
return float('inf')
return 20 * math.log10(1.0 / math.sqrt(mse))
# 计算压缩前后图像的 PSNR
psnr_value = psnr(image_norm, compressed_image)
print("PSNR: {:.2f} dB".format(psnr_value))
```
这将在显示压缩前后的图像后,输出压缩前后图像的 PSNR 值。
阅读全文