本次使用图片来源于百度
import cv2
import time
import numpy as np
import pywtfrom PIL import Image, ImageEnhance#-i https://pypi.mirrors.ustc.edu.cn/simpledef super_resolution(input_path, output_path, model_path, scale=4):# 初始化超分辨率模型sr = cv2.dnn_superres.DnnSuperResImpl_create()sr.readModel(model_path)sr.setModel("edsr", scale) # 模型类型需与文件名匹配# 读取低分辨率图像img_lr = cv2.imread(input_path)if img_lr is None:print("Error: 输入图像加载失败")return# 执行超分辨率重建start_time = time.time()img_sr = sr.upsample(img_lr)print(f"推理耗时: {time.time() - start_time:.2f}s")# 保存结果cv2.imwrite(output_path, img_sr)print(f"高分辨率图像已保存至: {output_path}")def wavelet_denoise(image, wavelet='db4', level=1, mode='soft'):# 将图像转换为灰度图if len(image.shape) == 3:image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 进行小波分解coeffs = pywt.wavedec2(image, wavelet, level=level)# 对每个细节系数应用阈值处理threshold = np.std(coeffs[-1]) * np.sqrt(2 * np.log2(image.size))new_coeffs = [coeffs[0]]for detail_coeffs in coeffs[1:]:new_detail_coeffs = [pywt.threshold(d, threshold, mode=mode) for d in detail_coeffs]new_coeffs.append(new_detail_coeffs)# 进行小波重构denoised_image = pywt.waverec2(new_coeffs, wavelet)# 将像素值限制在 0 到 255 之间denoised_image = np.clip(denoised_image, 0, 255).astype(np.uint8)return denoised_imageif __name__ == "__main__":# 参数配置input_img = "3.jpeg" # 低分辨率图像路径output_img = "high_res3.jpg" # 输出图像路径model_file = "EDSR_x4.pb" # 预训练模型路径# 定义锐化卷积核kernel = np.array([[0, -1, 0],[-1, 5, -1],[0, -1, 0]])# 执行重建super_resolution(input_img, output_img, model_file)#打开图片image = Image.open('4.jpg')#调整对比度contrast = ImageEnhance.Contrast(image)image = contrast.enhance(1.5)#调整亮度brightness = ImageEnhance.Brightness(image)image = brightness.enhance(1.2)#保存处理后的图片image.save('enhanced_image.jpg')img = cv2.imread("enhanced_image.jpg")if img is None:print('none')denoised_image = wavelet_denoise(img)cv2.imwrite('result.png', denoised_image)sharpened = cv2.filter2D(denoised_image, -1, kernel) # 应用卷积核#laplacian = cv2.Laplacian(denoised_image, cv2.CV_64F)#sharpened = cv2.convertScaleAbs(laplacian - 0.5*laplacian) # 调节0.7系数控制锐化强度cv2.imwrite("output4.jpg", sharpened)image = cv2.imread('output4.jpg', cv2.IMREAD_GRAYSCALE)#高斯滤波gaussian_filtered_image = cv2.GaussianBlur(image, (3, 3), 0.02)#保存处理后的图片cv2.imwrite('gaussian_filtered_image.jpg', gaussian_filtered_image)#中值滤波median_filtered_image = cv2.medianBlur(gaussian_filtered_image, 5)#保存处理后的图片cv2.imwrite('median_filtered_image.jpg', median_filtered_image)
原始图像
亮度增强
高斯滤波
卷积锐化
中值平滑