def psnr_img(): # 所有文件全路径列表 image = cv2.imread('testimage/lena1.jpg') # 通过路径把图读进来 image = cv2.resize(image, (20, 20), 0, 0, cv2.INTER_LINEAR) # 图片重塑,shape是(256, 256) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) noise = dataset.gaussian(image, 25) if image.ndim == 2: image = image[None, ..., None] if noise.ndim == 2: noise = noise[None, ..., None] noise = dataset.pretrain_images(noise) image = dataset.pretrain_images(image) return image, noise
images = np.array(images) #检验一下导入的是否是灰度图片 images_channel_1 = np.copy(images[:, :, :, 0]) images_channel_2 = np.copy(images[:, :, :, 1]) images_channel_3 = np.copy(images[:, :, :, 2]) print('开始检验数据...') assert (images_channel_1 == images_channel_2).all() == True assert (images_channel_2 == images_channel_3).all() == True print('完成检验数据...') #适合训练的原始数据形状(9, 256, 256, 1) images = np.copy(images_channel_1[:, :, :, np.newaxis]) #对原始数据进行数据预处理 images_data = dataset.pretrain_images(images) images_data = np.array(images_data) #(9, 256, 256, 1) print('原始数据shape : ', images_data.shape) #为图片添加高斯噪声并保存,混合噪声 gaussian_noise_imgs = dataset.add_gaussian_and_save(images) #展示添加高斯噪声之后的图片,并返回数据预处理之后的图片 #经过了归一化:数据值在0到1之间 gaussian_data = dataset.show_gaussian_noise_images(gaussian_noise_imgs) gaussian_data = np.array(gaussian_data) #(9, 256, 256, 1) print('高斯噪声数据shape : ', gaussian_data.shape) print('完成数据预处理...') print('开始展示图片...')
import cv2 import numpy as np import dataset import tensorflow as tf # img01 = cv2.imread("E:\cpy\photo\image01.bmp") # 读取目标图片 testdata = dataset.show_images('Image_Denoising', 256) # 中值滤波 for i in testdata: img = i img_noise = dataset.gaussian(img, 25) img = dataset.pretrain_images(img) img_noise = dataset.pretrain_images(img_noise) img_medianBlur = cv2.medianBlur(img_noise, 5) font = cv2.FONT_HERSHEY_SIMPLEX # 均值滤波 img_Blur = cv2.blur(img_noise, (5, 5)) img_Blur = dataset.pretrain_images(img_Blur) # 高斯滤波 img_GaussianBlur = cv2.GaussianBlur(img_noise, (7, 7), 0) img_GaussianBlur = dataset.pretrain_images(img_GaussianBlur) # 高斯双边滤波 img_bilateralFilter = cv2.bilateralFilter(img_noise, 40, 75, 75) img_bilateralFilter = dataset.pretrain_images(img_bilateralFilter) psnr1 = tf.image.psnr(img_medianBlur, img, max_val=1) psnr2 = tf.image.psnr(img_GaussianBlur, img, max_val=1) psnr3 = tf.image.psnr(img_bilateralFilter, img, max_val=1)
#恢复变量 saver.restore(sess, 'encode_model1/model_cnn_train27_best.ckpt') index = 0 #添加噪声 #noisy_im = sess.run(noisy_image,feed_dict={content_image_place_shape:content_image.shape,content_image_place:content_image/1.0}) for i in testimages: index += 1 img = i noisyImage = dataset.gaussian(i, 25) # img = dataset.pretrain_images(img) # noisyImage = dataset.pretrain_images(noisyImage) if img.ndim == 2: img = img[None, ..., None] if noisyImage.ndim == 2: noisyImage = noisyImage[None, ..., None] img = dataset.pretrain_images(img) noisyImage = dataset.pretrain_images(noisyImage) #预测 pred = sess.run(decoded, feed_dict={img_input: noisyImage}) psnr_score1 = tf.image.psnr(pred, img, max_val=1) # 去噪图psnr psnr_score2 = tf.image.psnr(noisyImage, img, max_val=1) # 噪声图psnr # ssim1=ssim(pred, img,multichannel=True) with tf.Session() as sess1: psnr_score1 = sess1.run(psnr_score1) psnr_score2 = sess1.run(psnr_score2) print(psnr_score1) # print(ssim1)