Written by Philipp Rudiger and Maxime Liquet
Created: November 16, 2018
Last updated: January 7, 2021
Extract a coast- and shoreline contour with GrabCut¶
The GrabCut algorithm provides a way to annotate an image using polygons or lines to demark the foreground and background. The algorithm estimates the color distribution of the target object and that of the background using a Gaussian mixture model. This is used to construct a Markov random field over the pixel labels, with an energy function that prefers connected regions having the same label, and running a graph-cut-based optimization to infer their values. This procedure is repeated until convergence, resulting in an image mask denoting the foreground and background.
In this example this algorithm is applied to map tiles to automatically extract a coast or shoreline contour. First we specify a rectangular region in which to download the map tiles using the
SelectRegionPanel, then we can declare the
GrabCutPanel to annotate the region and let the algorithm compute a contour.
import numpy as np import panel as pn import holoviews as hv import geoviews as gv from grabcut import paths_to_polys, GrabCutPanel, SelectRegionPanel gv.extension('bokeh')