mask2outline documentation
mask2outline converts a logical mask into an outline or border.
Contents
Syntax
[xb,yb] = mask2outline(x,y,mask) [xb,yb] = mask2outline(x,y,mask,'buffer',buf) [xb,yb] = mask2outline(...,'region',N)
Description
[xb,yb] = mask2outline(x,y,mask) returns the coordinates xb,yb of the outline of a 2D mask whose input coordinates pixel centers are given by x,y.
[xb,yb] = mask2outline(x,y,mask,'buffer',buf) specifies a buffer in units of x,y to place around the mask. For example, if the units of x and y are meters and buf=10e3, then that places a 10 km buffer around the mask. The buffer can be negative to buffer into the mask.
[xb,yb] = mask2outline(...,'region',N) only returns the outline of the Nth largest region by area.
Example
Consider this mask:
% Load the default peaks dataset: [X,Y,Z] = peaks(500); % Convert x,y coordinates to something like meters to make it intuitive: X = X*1000; Y = (Y+5)*1000; % Define a mask as anything where Z>5: mask = Z>5; % Plot the mask: figure imagescn(X,Y,mask) xlabel 'eastings (m)' ylabel 'northings (m)'
Let's say you want to find the coordinates that mark the boundary of the mask:
[xb,yb] = mask2outline(X,Y,mask); % Plot the border with a red outline: hold on plot(xb,yb,'r','linewidth',2)
Buffer the border
Suppose you want to buffer the border by 600 meters:
[xb,yb] = mask2outline(X,Y,mask,'buffer',600); % Plot the border with a red dotted outline: plot(xb,yb,'r:','linewidth',2)
Multipe sections
Suppose your mask has multiple sections:
mask = Z>3; % Plot the mask: figure imagescn(X,Y,mask) xlabel 'eastings (m)' ylabel 'northings (m)'
The same method as above works. (This is really just an exercise in the documentation to ensure consistent behavior in case of future changes to the function).
[xb,yb] = mask2outline(X,Y,mask); % Plot the border with a red outline: hold on plot(xb,yb,'r','linewidth',2)
Buffer in: This time we'll buffer into each mask by 200 m:
[xb,yb] = mask2outline(X,Y,mask,'buffer',-200); % Plot the border with a red dotted outline: plot(xb,yb,'r:','linewidth',2)
Author Info
This function is part of the Climate Data Toolbox for Matlab. The function and supporting documentation were written by Chad A. Greene of the NASA's Jet Propulsion Laboratory, September 2020.