float32 hillshade intensity

pull/1579/head
Piero Toffanin 2025-01-09 14:57:55 -05:00
rodzic 643a074161
commit 2413b4d589
2 zmienionych plików z 7 dodań i 6 usunięć

Wyświetl plik

@ -79,15 +79,15 @@ class LightSource:
# compute the normal vectors from the partial derivatives
e_dy, e_dx = np.gradient(vert_exag * elevation, dy, dx)
# .view is to keep subclasses
normal = np.empty(elevation.shape + (3,)).view(type(elevation))
normal = np.empty(elevation.shape + (3,), dtype=np.float32)
normal[..., 0] = -e_dx
normal[..., 1] = -e_dy
normal[..., 2] = 1
normal /= _vector_magnitude(normal)
np.divide(normal, _vector_magnitude(normal), out=normal)
return self.shade_normals(normal, fraction)
return self.shade_normals(normal, fraction).astype(np.float32)
def shade_normals(self, normals, fraction=1.):
"""
@ -112,7 +112,7 @@ class LightSource:
completely in shadow and 1 is completely illuminated.
"""
intensity = normals.dot(self.direction)
intensity = normals.dot(self.direction.astype(np.float32))
# Apply contrast stretch
imin, imax = intensity.min(), intensity.max()

Wyświetl plik

@ -80,6 +80,7 @@ def hsv_to_rgb( h, s, v ):
def hsv_blend(rgb, intensity):
h, s = rgb_to_hs(rgb[0], rgb[1], rgb[2])
#replace v with hillshade
#convert back to RGB
return hsv_to_rgb(h, s, intensity)