Skip to content

Commit a9962d4

Browse files
authored
Add files via upload
1 parent 1da4428 commit a9962d4

43 files changed

Lines changed: 2984 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
2+
3+
"""
4+
Older versions of scikit-image: older than 0.16
5+
https://scikit-image.org/docs/dev/api/skimage.measure.html
6+
7+
Newer scikit-image: 0.17 or later
8+
https://scikit-image.org/docs/stable/api/skimage.metrics.html
9+
10+
https://pypi.org/project/sewar/
11+
https://sewar.readthedocs.io/en/latest/_modules/sewar/full_ref.html#ergas
12+
13+
"""
14+
15+
import cv2
16+
import numpy as np
17+
from sewar import full_ref
18+
from skimage import measure, metrics
19+
20+
21+
#Reference and image to be compared must be of the same size
22+
ref_img = cv2.imread("images/noisy_images/sandstone.tif", 1)
23+
img = cv2.imread("images/noisy_images/sandstone_25sigma_noisy.tif", 1)
24+
25+
################################################################
26+
#skimage tools
27+
#Mean square error
28+
#Older skimage versions, older than 0.17: skimage.measure.compare_mse
29+
#skimage.metrics.mean_squared_error
30+
31+
mse_skimg = metrics.mean_squared_error(ref_img, img)
32+
print("MSE: based on scikit-image = ", mse_skimg)
33+
34+
#Same as PSNR available in sewar
35+
#Older versions of skimage: skimage.measure.compare_psnr
36+
#skimage.metrics.peak_signal_noise_ratio
37+
psnr_skimg = metrics.peak_signal_noise_ratio(ref_img, img, data_range=None)
38+
print("PSNR: based on scikit-image = ", psnr_skimg)
39+
40+
#Normalized root mean squared error
41+
#Older versions of skimage: skimage.measure.compare_nrmse
42+
rmse_skimg = metrics.normalized_root_mse(ref_img, img)
43+
print("RMSE: based on scikit-image = ", rmse_skimg)
44+
45+
from skimage.metrics import structural_similarity as ssim
46+
ssim_skimg = ssim(ref_img, img,
47+
data_range = img.max() - img.min(),
48+
multichannel = True)
49+
print("SSIM: based on scikit-image = ", ssim_skimg)
50+
51+
###############################################################
52+
#ERGAS Global relative error
53+
"""calculates global relative error
54+
GT: first (original) input image.
55+
P: second (deformed) input image.
56+
r: ratio of high resolution to low resolution (default=4).
57+
ws: sliding window size (default = 8).
58+
59+
:returns: float -- ergas value.
60+
"""
61+
ergas_img = full_ref.ergas(ref_img, img, r=4, ws=8)
62+
print("EGRAS: global relative error = ", ergas_img)
63+
64+
65+
66+
####################################################################
67+
#Multiscale structural similarity index
68+
"""calculates multi-scale structural similarity index (ms-ssim).
69+
70+
:param GT: first (original) input image.
71+
:param P: second (deformed) input image.
72+
:param weights: weights for each scale (default = [0.0448, 0.2856, 0.3001, 0.2363, 0.1333]).
73+
:param ws: sliding window size (default = 11).
74+
:param K1: First constant for SSIM (default = 0.01).
75+
:param K2: Second constant for SSIM (default = 0.03).
76+
:param MAX: Maximum value of datarange (if None, MAX is calculated using image dtype).
77+
78+
:returns: float -- ms-ssim value.
79+
"""
80+
msssim_img=full_ref.msssim(ref_img, img, weights=[0.0448, 0.2856, 0.3001, 0.2363, 0.1333], ws=11, K1=0.01, K2=0.03, MAX=None)
81+
82+
print("MSSSIM: multi-scale structural similarity index = ", msssim_img)
83+
84+
85+
##############################################################################
86+
#PSNR
87+
"""calculates peak signal-to-noise ratio (psnr).
88+
89+
:param GT: first (original) input image.
90+
:param P: second (deformed) input image.
91+
:param MAX: maximum value of datarange (if None, MAX is calculated using image dtype).
92+
93+
:returns: float -- psnr value in dB.
94+
"""
95+
psnr_img=full_ref.psnr(ref_img, img, MAX=None)
96+
97+
print("PSNR: peak signal-to-noise ratio = ", psnr_img)
98+
99+
100+
##########################################################################
101+
#PSNRB: Calculates PSNR with Blocking Effect Factor for a given pair of images (PSNR-B)
102+
"""Calculates PSNR with Blocking Effect Factor for a given pair of images (PSNR-B)
103+
104+
:param GT: first (original) input image in YCbCr format or Grayscale.
105+
:param P: second (corrected) input image in YCbCr format or Grayscale..
106+
:return: float -- psnr_b.
107+
"""
108+
#psnrb_img = full_ref.psnrb(ref_img, img)
109+
110+
#print("PSNRB: peak signal-to-noise ratio with blocking effect = ", psnrb_img)
111+
112+
#######################################################################
113+
#relative average spectral error (rase)
114+
"""calculates relative average spectral error (rase).
115+
116+
:param GT: first (original) input image.
117+
:param P: second (deformed) input image.
118+
:param ws: sliding window size (default = 8).
119+
120+
:returns: float -- rase value.
121+
"""
122+
RASE_img = full_ref.rase(ref_img, img, ws=8)
123+
#print("RASE: relative average spectral error = ", RASE_img)
124+
125+
126+
######################################################################
127+
#RMSE
128+
"""calculates root mean squared error (rmse).
129+
130+
:param GT: first (original) input image.
131+
:param P: second (deformed) input image.
132+
133+
:returns: float -- rmse value.
134+
"""
135+
rmse_img = full_ref.rmse(ref_img, img)
136+
print("RMSE: root mean squared error = ", rmse_img)
137+
138+
139+
140+
######################################################################
141+
#root mean squared error (rmse) using sliding window
142+
"""calculates root mean squared error (rmse) using sliding window.
143+
144+
:param GT: first (original) input image.
145+
:param P: second (deformed) input image.
146+
:param ws: sliding window size (default = 8).
147+
148+
:returns: tuple -- rmse value,rmse map.
149+
"""
150+
rmse_sw_img = full_ref.rmse_sw(ref_img, img, ws=8)
151+
#print("RMSE_SW: root mean squared error with sliding window = ", rmse_sw_img)
152+
153+
154+
#########################################################################
155+
#calculates spectral angle mapper (sam).
156+
"""calculates spectral angle mapper (sam).
157+
158+
:param GT: first (original) input image.
159+
:param P: second (deformed) input image.
160+
161+
:returns: float -- sam value.
162+
"""
163+
ref_sam_img = full_ref.sam(ref_img, img)
164+
print("REF_SAM: spectral angle mapper = ", ref_sam_img)
165+
166+
167+
######################################################################
168+
#Spatial correlation coefficient
169+
#full_ref.scc(ref_img, img, win=[[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], ws=8)
170+
171+
#Structural similarity index
172+
"""calculates structural similarity index (ssim).
173+
174+
:param GT: first (original) input image.
175+
:param P: second (deformed) input image.
176+
:param ws: sliding window size (default = 8).
177+
:param K1: First constant for SSIM (default = 0.01).
178+
:param K2: Second constant for SSIM (default = 0.03).
179+
:param MAX: Maximum value of datarange (if None, MAX is calculated using image dtype).
180+
181+
:returns: tuple -- ssim value, cs value.
182+
"""
183+
ssim_img = full_ref.ssim(ref_img, img, ws=11, K1=0.01, K2=0.03, MAX=None, fltr_specs=None, mode='valid')
184+
print("SSIM: structural similarity index = ", ssim_img)
185+
186+
##############################################################################
187+
#Universal image quality index
188+
"""calculates universal image quality index (uqi).
189+
190+
:param GT: first (original) input image.
191+
:param P: second (deformed) input image.
192+
:param ws: sliding window size (default = 8).
193+
194+
:returns: float -- uqi value.
195+
"""
196+
UQI_img = full_ref.uqi(ref_img, img, ws=8)
197+
print("UQI: universal image quality index = ", UQI_img)
198+
199+
##############################################################################
200+
#Pixel Based Visual Information Fidelity (vif-p)
201+
"""calculates Pixel Based Visual Information Fidelity (vif-p).
202+
203+
:param GT: first (original) input image.
204+
:param P: second (deformed) input image.
205+
:param sigma_nsq: variance of the visual noise (default = 2)
206+
207+
:returns: float -- vif-p value.
208+
"""
209+
VIFP_img = full_ref.vifp(ref_img, img, sigma_nsq=2)
210+
print("VIFP: Pixel Based Visual Information Fidelity = ", VIFP_img)
211+
212+
213+
214+
215+
216+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
2+
3+
"""
4+
5+
Sharpness Estimation for Document and Scene Images
6+
by Jayant Kumar , Francine Chen , David Doermann
7+
8+
http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=33CD0038A0D2D24AE2C4F1A30B6EF1A4?doi=10.1.1.359.7002&rep=rep1&type=pdf
9+
10+
https://github.com/umang-singhal/pydom
11+
12+
pip install git+https://github.com/umang-singhal/pydom.git
13+
14+
#Use difference of differences in grayscale values
15+
of a median-filtered image as an indicator of edge sharpness
16+
"""
17+
18+
19+
from dom import DOM
20+
import cv2
21+
22+
#img = cv2.imread("images/image_quality_estimation/02_2sigma_blurred.tif", 1)
23+
img1 = cv2.imread("images/blurred_images/sandstone.tif", 1)
24+
img2 = cv2.imread("images/blurred_images/sandstone_2sigma_blur.tif", 1)
25+
img3 = cv2.imread("images/blurred_images/sandstone_3sigma_blur.tif", 1)
26+
img4 = cv2.imread("images/blurred_images/sandstone_5sigma_blur.tif", 1)
27+
28+
# initialize DOM
29+
iqa = DOM()
30+
31+
#Calculate scores
32+
score1 = iqa.get_sharpness(img1)
33+
score2 = iqa.get_sharpness(img2)
34+
score3 = iqa.get_sharpness(img3)
35+
score4 = iqa.get_sharpness(img4)
36+
37+
print("Sharpness for reference image:", score1)
38+
print("Sharpness for 2 sigma blurred image:", score2)
39+
print("Sharpness for 3 sigma blurred image:", score3)
40+
print("Sharpness for 5 sigma blurred image:", score4)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
3+
4+
5+
"""
6+
Introductory python tutorials for image processing
7+
8+
Tutorial 3: Appreciating the simplicity of Python code
9+
10+
"""
11+
12+
from skimage import io, filters
13+
from matplotlib import pyplot as plt
14+
15+
img = io.imread('images/Osteosarcoma_01_8bit_salt_pepper_cropped.tif')
16+
gaussian_img = filters.gaussian(img, sigma=1)
17+
18+
plt.imshow(gaussian_img)

‎tutorial09_top5_libraries.py‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
2+
3+
"""
4+
@author: Sreenivas Bhattiprolu
5+
"""
6+
import skimage
7+
from skimage import io
8+
9+
img1 = io.imread('images/Osteosarcoma_01.tif')
10+
11+
12+
import cv2
13+
img2 = cv2.imread('images/Osteosarcoma_01.tif')
14+
15+
import numpy as np
16+
a=np.ones((5,5))
17+
18+
import pandas as pd
19+
df = pd.read_csv('images/image_measurements.csv')
20+
print(df.head())
21+
22+
from matplotlib import pyplot as plt
23+
plt.imshow(img1)

‎tutorial10_first_lines_of_code.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
2+
3+
"""
4+
This is my first program
5+
"""
6+
7+
#Here goes my first line
8+
print("Hello World")
9+
10+
a=2
11+
b=10.
12+
13+
c=2*a
14+
d=2*b
15+
16+
e=b/a
17+
18+
f=b**2
19+
20+
g=-32.5
21+
print(abs(g))
22+
print(round(g))
23+
24+
h=7%2 #remainder
25+
print(h)

‎tutorial11_operators_basic_math.py‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#Video Playlist: https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG
2+
3+
#This tutorial explains operators and basic math
4+
5+
a = 2 #assign a variable
6+
7+
a == 2 #logical operator
8+
9+
b=5
10+
11+
a<b
12+
13+
#Why does this matter?
14+
if a<b:
15+
print("Wow, coding is easy!")
16+
17+
else:
18+
print('I hope I can code one day')
19+
20+
#Simple math equation: E=mc^2
21+
22+
#External input:
23+
m=input("Please enter mass: ")
24+
m=int(m)
25+
#m = 10 #kg
26+
c = 300000000 #m/s
27+
28+
E = m*(c**2)
29+
print("Energy=", E)
30+
print("Energy = ", '{:.2E}'.format(E))

0 commit comments

Comments
 (0)