Upload 18 files
Browse files- .gitattributes +4 -0
- img_file/OneRestore_poster.png +3 -0
- img_file/abstract.jpg +3 -0
- img_file/cal_psnr_ssim.py +96 -0
- img_file/clear_img.jpg +0 -0
- img_file/control1.jpg +0 -0
- img_file/control2.jpg +0 -0
- img_file/depth_map.jpg +0 -0
- img_file/l+h+r.jpg +0 -0
- img_file/l+h+s.jpg +0 -0
- img_file/light_map.jpg +0 -0
- img_file/logo_onerestore.png +0 -0
- img_file/metric.png +0 -0
- img_file/metrics_CDD-11_psnr_ssim.xlsx +0 -0
- img_file/pipeline.jpg +3 -0
- img_file/rain_mask.jpg +0 -0
- img_file/real.jpg +3 -0
- img_file/snow_mask.png +0 -0
- img_file/syn.jpg +0 -0
.gitattributes
CHANGED
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
img_file/abstract.jpg filter=lfs diff=lfs merge=lfs -text
|
37 |
+
img_file/OneRestore_poster.png filter=lfs diff=lfs merge=lfs -text
|
38 |
+
img_file/pipeline.jpg filter=lfs diff=lfs merge=lfs -text
|
39 |
+
img_file/real.jpg filter=lfs diff=lfs merge=lfs -text
|
img_file/OneRestore_poster.png
ADDED
![]() |
Git LFS Details
|
img_file/abstract.jpg
ADDED
![]() |
Git LFS Details
|
img_file/cal_psnr_ssim.py
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import cv2
|
3 |
+
import numpy as np
|
4 |
+
import random
|
5 |
+
from skimage.metrics import peak_signal_noise_ratio as compare_psnr
|
6 |
+
from skimage.metrics import mean_squared_error as compare_mse
|
7 |
+
from skimage.metrics import structural_similarity as compare_ssim
|
8 |
+
# Modified function to add progress display using tqdm for better progress tracking
|
9 |
+
from tqdm import tqdm
|
10 |
+
import pandas as pd
|
11 |
+
# Updated function with progress display for PSNR and SSIM calculation
|
12 |
+
def calculate_psnr_ssim_with_progress(clear_folder, methods, degradation_types, win_size=7):
|
13 |
+
# Get list of all clear images
|
14 |
+
img_list = [img for img in os.listdir(clear_folder) if img.endswith('.png')]
|
15 |
+
|
16 |
+
# Initialize matrices to store mean PSNR and SSIM values
|
17 |
+
psnr_matrix = np.zeros((len(methods), len(degradation_types)))
|
18 |
+
ssim_matrix = np.zeros((len(methods), len(degradation_types)))
|
19 |
+
|
20 |
+
# Total number of tasks for progress tracking
|
21 |
+
total_tasks = len(methods) * len(degradation_types) * len(img_list)
|
22 |
+
print(len(methods), len(degradation_types), len(img_list))
|
23 |
+
|
24 |
+
# Create a progress bar
|
25 |
+
with tqdm(total=total_tasks, desc="Processing Images", unit="task") as pbar:
|
26 |
+
# Loop over methods
|
27 |
+
for k, method in enumerate(methods):
|
28 |
+
print(f"Processing method: {method}")
|
29 |
+
|
30 |
+
# Loop over degradation types
|
31 |
+
for j, degradation_type in enumerate(degradation_types):
|
32 |
+
psnr_values = []
|
33 |
+
ssim_values = []
|
34 |
+
|
35 |
+
# Loop over each image in the clear folder
|
36 |
+
for img_name in img_list:
|
37 |
+
clear_img_path = os.path.join(clear_folder, img_name)
|
38 |
+
degraded_img_path = f'./{method}/{degradation_type}/{img_name}'
|
39 |
+
|
40 |
+
# Read the clear and degraded images
|
41 |
+
clear_img = cv2.imread(clear_img_path) / 255.0
|
42 |
+
degraded_img = cv2.imread(degraded_img_path) / 255.0
|
43 |
+
|
44 |
+
# Ensure the images are read correctly
|
45 |
+
if clear_img is not None and degraded_img is not None:
|
46 |
+
# Compute PSNR and SSIM between clear and degraded image
|
47 |
+
psnr_value = compare_psnr(clear_img, degraded_img, data_range=1.0)
|
48 |
+
|
49 |
+
# Compute SSIM with specified window size and for multichannel images
|
50 |
+
ssim_value = compare_ssim(clear_img, degraded_img, multichannel=True,
|
51 |
+
win_size=min(win_size, clear_img.shape[0], clear_img.shape[1]),
|
52 |
+
channel_axis=-1, data_range=1.0)
|
53 |
+
|
54 |
+
# Store values
|
55 |
+
psnr_values.append(psnr_value)
|
56 |
+
ssim_values.append(ssim_value)
|
57 |
+
|
58 |
+
# Update progress bar after processing each image
|
59 |
+
pbar.update(1)
|
60 |
+
|
61 |
+
# Calculate mean PSNR and SSIM for the current method and degradation type
|
62 |
+
if psnr_values:
|
63 |
+
psnr_matrix[k, j] = np.mean(psnr_values)
|
64 |
+
if ssim_values:
|
65 |
+
ssim_matrix[k, j] = np.mean(ssim_values)
|
66 |
+
|
67 |
+
return psnr_matrix, ssim_matrix
|
68 |
+
|
69 |
+
def save_matrices_to_excel(psnr_matrix, ssim_matrix, methods, degradation_types, output_file='metrics.xlsx'):
|
70 |
+
# Create DataFrames for PSNR and SSIM matrices
|
71 |
+
psnr_df = pd.DataFrame(psnr_matrix, index=methods, columns=degradation_types)
|
72 |
+
ssim_df = pd.DataFrame(ssim_matrix, index=methods, columns=degradation_types)
|
73 |
+
|
74 |
+
# Create a writer to write both DataFrames to the same Excel file
|
75 |
+
with pd.ExcelWriter(output_file) as writer:
|
76 |
+
psnr_df.to_excel(writer, sheet_name='PSNR')
|
77 |
+
ssim_df.to_excel(writer, sheet_name='SSIM')
|
78 |
+
|
79 |
+
print(f'Matrices saved to {output_file}')
|
80 |
+
|
81 |
+
# Define the parameters
|
82 |
+
clear_folder = './00_gt'
|
83 |
+
methods = ['01_input', '02_MIRNet', '03_MPRNet', '04_MIRNetv2', '05_Restormer',
|
84 |
+
'06_DGUNet', '07_NAFNet', '08_SRUDC', '09_Fourmer', '10_OKNet', '11_AirNet',
|
85 |
+
'12_TransWeather', '13_WeatherDiff', '14_PromptIR', '15_WGWSNet', '16_OneRestore_visual', '17_OneRestore']
|
86 |
+
degradation_types = ['low', 'haze', 'rain', 'snow', 'low_haze', 'low_rain', 'low_snow', 'haze_rain', 'haze_snow', 'low_haze_rain', 'low_haze_snow']
|
87 |
+
|
88 |
+
# This is the function that will be used to calculate the PSNR and SSIM values across methods and degradation types
|
89 |
+
# To use the function, uncomment the line below and ensure the file paths are set correctly in your environment
|
90 |
+
|
91 |
+
|
92 |
+
psnr_matrix, ssim_matrix = calculate_psnr_ssim_with_progress(clear_folder, methods, degradation_types)
|
93 |
+
save_matrices_to_excel(psnr_matrix, ssim_matrix, methods, degradation_types)
|
94 |
+
|
95 |
+
|
96 |
+
|
img_file/clear_img.jpg
ADDED
![]() |
img_file/control1.jpg
ADDED
![]() |
img_file/control2.jpg
ADDED
![]() |
img_file/depth_map.jpg
ADDED
![]() |
img_file/l+h+r.jpg
ADDED
![]() |
img_file/l+h+s.jpg
ADDED
![]() |
img_file/light_map.jpg
ADDED
![]() |
img_file/logo_onerestore.png
ADDED
![]() |
img_file/metric.png
ADDED
![]() |
img_file/metrics_CDD-11_psnr_ssim.xlsx
ADDED
Binary file (15.7 kB). View file
|
|
img_file/pipeline.jpg
ADDED
![]() |
Git LFS Details
|
img_file/rain_mask.jpg
ADDED
![]() |
img_file/real.jpg
ADDED
![]() |
Git LFS Details
|
img_file/snow_mask.png
ADDED
![]() |
img_file/syn.jpg
ADDED
![]() |