Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import cv2
import tensorflow as tf
import pandas as pd
import numpy as np
#Vanilla CVDM
folder_a = r'path to\images\VanillaCVDM_inference'
folder_b = r'path to\images\BioSR_high_resolution_images'
#CVDM+N
# folder_a=r'path to\images\naturalized_BioSR_high_resolution_images'
# folder_b=r'path to\images\CVDM+N_inference'
#NCVDM
# folder_a=r'path to\images\naturalized_BioSR_high_resolution_images'
# folder_b=r'path to\images\NCVDM_inference'
metrics = []
# Loop through the images in the first folder
for filename in os.listdir(folder_a):
img_path_a = os.path.join(folder_a, filename)
img_path_b = os.path.join(folder_b, filename)
if os.path.isfile(img_path_b):
# Read the grayscale TIFF images
img_a = cv2.imread(img_path_a, cv2.IMREAD_UNCHANGED)
img_b = cv2.imread(img_path_b, cv2.IMREAD_UNCHANGED)
if img_a is None:
print(f"Error: Could not load {img_path_a}")
continue
if img_b is None:
print(f"Error: Could not load {img_path_b}")
continue
img_a = img_a.astype('float32')
img_b = img_b.astype('float32')
# Min-Max normalization
img_a_min, img_a_max = img_a.min(), img_a.max()
img_b_min, img_b_max = img_b.min(), img_b.max()
#normalize image to [0, 255]
img_a = ((img_a - img_a_min) / (img_a_max - img_a_min)) * 255
img_b = ((img_b - img_b_min) / (img_b_max - img_b_min)) * 255
# Adds a channel dimension
img_a = tf.expand_dims(img_a, axis=-1)
img_b = tf.expand_dims(img_b, axis=-1)
# Calculate MS-SSIM, PSNR and MAE
msssim_value = tf.image.ssim_multiscale(img_a, img_b, max_val=255.0).numpy()
psnr_value = tf.image.psnr(img_a, img_b, max_val=255).numpy()
mae_value = np.mean(np.abs(img_a - img_b))
# Append the result to the list
metrics.append({
"filename": filename,
"MS-SSIM": msssim_value,
"MAE": mae_value,
"PSNR": psnr_value
})
# Create a DataFrame from the results
results_df = pd.DataFrame(metrics)
# Save results to a CSV file
results_df.to_csv(r"path to\CVDM+N.csv", index=False)