psnr = utils.eval_rec(points.numpy(), colors.numpy(), torch.cat((DC_coef, CT_q), 0).numpy(), Qstep, depth, inv_haar3D)
时间: 2023-06-12 09:06:33 浏览: 145
这段代码中,首先将点云数据和颜色数据转换为numpy数组,然后将DC系数和CT系数拼接成一个数组,再将Qstep、depth和inv_haar3D作为参数传入utils.eval_rec函数中进行重建,并将重建结果计算PSNR值。其中DC系数是离散余弦变换(DCT)的低频系数,CT系数是离散小波变换(DWT)的高频系数,Qstep是量化步长,depth是小波分解的层数,inv_haar3D是三维小波反变换的函数。
相关问题
from bm3d import bm3d_rgb from experiment_funcs1 import get_experiment_noise, get_psnr, get_cropped_psnr from PIL import Image import argparse import os import torch import numpy as np from torchvision.utils import save_image def main(): imagename = './test_image1/(1271).jpg' save_dir = 'test_result' save_path = 'noise' y = np.array(Image.open(imagename)) / 255 noise_type = 'g3' noise_var = 0.02 seed = 0 noise, psd, kernel = get_experiment_noise(noise_type, noise_var, seed, y.shape) z = np.atleast_3d(y) + np.atleast_3d(noise) y_est = bm3d_rgb(z, psd) psnr = get_psnr(y, y_est) print("PSNR:", psnr) y_est = np.minimum(np.maximum(y_est, 0), 1) z_rang = np.minimum(np.maximum(z, 0), 1) z_rang = torch.from_numpy(np.transpose(z_rang, (2, 0, 1))).float() y_est = torch.from_numpy(np.transpose(y_est, (2, 0, 1))).float() denoise_img_path = os.path.join(save_dir, 'denoised.jpg') save_image(y_est, denoise_img_path) noise_img_path = os.path.join(save_path, 'noise.jpg') save_image(z_rang, noise_img_path) if __name__ == '__main__': main()改为对灰度图处理
可以将代码中的`bm3d_rgb`函数改为`bm3d`函数,同时将读入图像的方式改为读入灰度图像即可。具体代码如下:
```
from bm3d import bm3d
from experiment_funcs1 import get_experiment_noise, get_psnr, get_cropped_psnr
from PIL import Image
import argparse
import os
import torch
import numpy as np
from torchvision.utils import save_image
def main():
imagename = './test_image1/(1271).jpg'
save_dir = 'test_result'
save_path = 'noise'
y = np.array(Image.open(imagename).convert('L')) / 255
noise_type = 'g3'
noise_var = 0.02
seed = 0
noise, psd, kernel = get_experiment_noise(noise_type, noise_var, seed, y.shape)
z = y + noise
y_est = bm3d(z, psd)
psnr = get_psnr(y, y_est)
print("PSNR:", psnr)
y_est = np.minimum(np.maximum(y_est, 0), 1)
z_rang = np.minimum(np.maximum(z, 0), 1)
z_rang = torch.from_numpy(z_rang).unsqueeze(0).float()
y_est = torch.from_numpy(y_est).unsqueeze(0).float()
denoise_img_path = os.path.join(save_dir, 'denoised.jpg')
save_image(y_est, denoise_img_path)
noise_img_path = os.path.join(save_path, 'noise.jpg')
save_image(z_rang, noise_img_path)
if __name__ == '__main__':
main()
```
import pandas as pd import numpy as np # 读取 CSV 文件 data = pd.read_csv('data.csv') # 将数据转换为 NumPy 数组 data = data.to_numpy() # 将数据重塑为三维数组 data = data.reshape((data.shape[0], data.shape[1] // 3, 3)) # 训练模型 model = cnn_model(input_shape=data.shape[1:]) model.fit(data, data, epochs=10, batch_size=32) # 对数据进行预测 predicted_data = model.predict(data) # 计算 SNR、MSE 和 PSNR snr = np.mean(np.square(data)) / np.mean(np.square(data - predicted_data)) mse = np.mean(np.square(data - predicted_data)) psnr = 10 * np.log10(np.max(data) ** 2 / mse) # 将预测结果保存为 CSV 文件 predicted_data = predicted_data.reshape((predicted_data.shape[0], -1)) pd.DataFrame(predicted_data).to_csv('predicted_data.csv', index=False)
这段代码主要是读取 CSV 文件,并将其转换为 NumPy 数组。然后将数据重塑为三维数组,并训练一个卷积神经网络模型。模型训练完成后,使用该模型对数据进行预测,并计算预测结果与原始数据之间的 SNR、MSE 和 PSNR。最后将预测结果保存为 CSV 文件。
其中,SNR 是信噪比,用于衡量信号与噪声之间的比例。MSE 是均方误差,用于衡量预测结果与原始数据之间的平均误差。PSNR 是峰值信噪比,用于衡量预测结果与原始数据之间的峰值信噪比。
需要注意的是,在使用这段代码之前,需要先定义 cnn_model 函数来创建卷积神经网络模型。另外,代码中的 batch_size 和 epochs 参数可以根据具体情况进行调整。
阅读全文