AquaSafe is a multi-purpose pool monitoring system. The product includes multiple sensors that detects motions in the pool and quality of water. The included iOS App allows the user to track the various metrics as well as a video feed. The system also sends push notifications to the AquaSafe App to warn users of possible accidents thus reducing the risk for residential drowning.


According to the Centers for Disease Control and Prevention, drowning is the leading cause of accidental death for children under the age of 5. For these children, swimming pools were the most common drowning places. AquaSafe will send an alert to the user’s Smart Phone when it detects someone falling into the pool. With this alert system, parents will be notified when a child accidentally falls into the pool, improving the reaction time.

The mission of AquaSafe is to provide an affordable and convenient way to keep families safe.



The system consists of three main components: A poolside computer, A Cloud Server and An iOS app

Technical Components

Main Unit:

Battery powered raspberry pie with a webcam, microphone, temperature sensor and two wifi dongle. The unit will monitor water temperature and alert whenever someone goes into the pool as identified by the webcam. The device will be located outside the pool in a waterproof case.


The Cloud Server collects all readings and alerts into a DB which will also serve as an endpoint for the mobile app (REST and Push notifications).


The iOS mobile app allows the user to view information about water quality, a history of alerts including an image of the alert. Most importantly, the iOS app will serve notifications whenever someone goes into the pool.


In order to detect when someone is in the pool (activity detection) we are using OpenCV to compute the difference between frames in a sliding window approach. Each frame is first converted to gray scale and then slightly blurred. We then accumulate the weighted average of the current frame and the previous frames in the window. We then compute the difference between the current frame and the running average. Once we obtained the delta frame we threshold and dilate it to fill any holes. Finally we're using openCV find contours method to search for objects in the frame. The sliding window approach allows us to ignore object that are either constant or moving very slowly (such as a pool robotic cleaner).


Screenshots from the AquaSafe iOS App:


Choose to get infromation from the past X days.


View current and previous alerts.

Image of Pool

View an image of the pool when you get a notification.


View other pool data such as temperature.


The following images describes how our algorithms detects drowning:

The image shows the output of averaging the current frame to the previous ones, hence the blurriness.

The image shows the output of the averaged image after being thresholded and dilated. This allows the latest step to easily extract the contours

The final image sent to the cloud including time and contours found.


Brahmbhatt, Samarth. "Embedded Computer Vision: Running OpenCV Programs on the Raspberry Pi." Practical OpenCV. Apress, 2013. 201-218.
Godbehere, Andrew B., Akihiro Matsukawa, and Ken Goldberg. "Visual tracking of human visitors under variable-lighting conditions for a responsive audio art installation." American Control Conference (ACC), 2012. IEEE, 2012.
Spampinato, Concetto, et al. "Detecting, Tracking and Counting Fish in Low Quality Unconstrained Underwater Videos." VISAPP (2) 2008 (2008): 514-519.
Watlington, F., 1979. How to Build & Use Low Cost Hydrophones. TAB Books, Blue Ridge Summit, PA (currently out of print)
OpenCV Computer Vision -
Thermal Sensor Connected Via i2c -

Our Team

Gideon Mendels

Computer Vision and Server

Priscilla Wang

Hardware Ninja

Eden Dolev

Server and Client


Gideon Mendes:
Priscilla Wang:
Eden Dolev:

Columbia University Department of Electrical Engineering
Class Website: Columbia University ELEN E4902 Fall '15 IoT
Instructor: Professsor Xiaofan (Fred) Jiang