本次使用圖片來源于百度?
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)
原始圖像
亮度增強
高斯濾波
卷積銳化?
?
中值平滑?
?
?