There are waves between layers of water that have slightly different densities called internal waves. In this project I wrote an algorithm that automatically recognized and tracked internal waves in time-lapse footage from the Columbia River Estuary.

A time-lapse video of my algorithm recognizing and tracking a ship wake


The Coastal Imaging Lab studies physics of nearshore environments. Smoothed time-lapse videos of the ocean surface provide a wealth of information. One can even determine bathymetry from the periodicity of waves in different areas of the image.

Mouth of the Columbia River

When reviewing videos of the Columbia River Estuary, we noticed interesting patterns created by passing ships. We had already applied smoothing to eliminate surface waves, so we realized that these signatures must be caused by internal waves.

How it works

First, I converted the video-processing task into an image-processing task by concatenating columns from each video frame into a matrix. Next, I made various horizontal shifts of this matrix and performed 2D Gaussian fits to find the brightest regions (which corresponded to a moving wake in velocity space).

An example image product. We performed 2D Gaussian fits to find the locations of the bright regions


I ran my algorithm on 200 internal wakes and manually selected the best 60. Here is one of the results:


A meta-analysis of these wakes revealed interesting spatial trends:


These patterns tell us that the speed of internal waves varies with location in estuary.

One explanation is that the relative depths of the saltwater wedge and the freshwater wedge vary across the estuary. If this is causing the spatial trends, my work can tell us about the shape of the salt wedge at different tidal stages