-
Notifications
You must be signed in to change notification settings - Fork 0
/
recognise_shadows.py
36 lines (32 loc) · 1.35 KB
/
recognise_shadows.py
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
from read_metadata import read_satellite_step
from utils import *
def recognize_edge():
"""
Could be relevant over snow snow
:return:
"""
return
def recognize_cloud_shade(vis, real_cloud_mask, cos_zen, th=0.2):
nb_slots_per_day = get_nb_slots_per_day(read_satellite_step(), slot_step=1)
(nb_slots, nb_lats, nb_lons) = np.shape(vis)[0:3]
nb_days = nb_slots / nb_slots_per_day
detected_cloud_shade = np.zeros_like(vis, dtype=bool)
for slot in range(nb_slots_per_day):
for lat in range(nb_lats):
for lon in range(nb_lons):
l = []
for day in range(nb_days):
s = day * nb_slots_per_day + slot
if not real_cloud_mask[s, lat, lon]:
l.append(vis[s, lat, lon])
if len(l) > 0:
supposed_albedo = np.median(l)
for day in range(nb_days):
s = day * nb_slots_per_day + slot
if (
not real_cloud_mask[s, lat, lon]
and (supposed_albedo - vis[s, lat, lon])
> th * cos_zen[s, lat, lon]
): # not real_cloud_mask[s, lat, lon]:
detected_cloud_shade[s, lat, lon] = True
return detected_cloud_shade