This software has been designed to detect water bodies that are out in the open on cross-country terrain at mid- to far-range (approximately 20–100 meters), using imagery acquired from a stereo pair of color cameras mounted on a terrestrial, unmanned ground vehicle (UGV). Non-traversable water bodies, such as large puddles, ponds, and lakes, are indirectly detected by detecting reflections of the sky below the horizon in color imagery. The appearance of water bodies in color imagery largely depends on the ratio of light reflected off the water surface to the light coming out of the water body. When a water body is far away, the angle of incidence is large, and the light reflected off the water surface dominates. We have exploited this behavior to detect water bodies out in the open at mid- to far-range. When a water body is detected at far range, a UGV’s path planner can begin to look for alternate routes to the goal position sooner, rather than later. As a result, detecting water hazards at far range generally reduces the time required to reach a goal position during autonomous navigation. This software implements a new water detector based on sky reflections that geometrically locates the exact pixel in the sky that is reflecting on a candidate water pixel on the ground, and predicts if the ground pixel is water based on color similarity and local terrain features (see figure).

Water is Detected indirectly by detecting sky and terrain reflections.
Assuming a water body can be modeled as a horizontal mirror, a ray of incident light reflected off the surface of a water body enters a pixel of a camera’s focal plane array (FPA). Since the angle of incidence is equal to the angle of reflection (according to the law of reflection), a direct ray from the tail of the incident ray (and within the same vertical plane as the incident ray) will enter the camera’s FPA at a pixel whose color will indicate the color of the sky being reflected along the reflected ray. Because the distance between the camera and the sky is much larger than the distance between the camera and candidate water points at normal detection ranges, the direct ray and the incident ray will be nearly parallel, and the angle between the direct ray and the reflected ray can be approximated as two times the glancing angle. Calculations to locate the pixel a direct ray enters are simple and involve for any candidate water pixel conversion of the 2D image coordinates to a 3D unit vector, negation of the z component of the unit vector, and conversion of the modified unit vector back to 2D image coordinates.

This work was done by Arturo L. Rankin and Larry H. Matthies of Caltech for NASA’s Jet Propulsion Laboratory. For more information, download the Technical Support Package (free white paper) at under the Software category.

This software is available for commercial licensing. Please contact Daniel Broderick of the California Institute of Technology at This email address is being protected from spambots. You need JavaScript enabled to view it.. Refer to NPO-47092.

This Brief includes a Technical Support Package (TSP).
Water Detection Based on Sky Reflections

(reference NPO-47092) is currently available for download from the TSP library.

Don't have an account? Sign up here.