Если регионы полностью изолированы друг от друга, поиск подключенных компонентов поможет. В Mathematica это выглядит так:
Сначала создайте двоичное изображение с карты мира:
regions = ColorNegate[Binarize[img, .9]]
Затем вычислите подключенные компоненты:
components = MorphologicalComponents[regions, CornerNeighbors -> False];
Теперь вы можете извлекать свойства для каждого из компонентов (маски, периметры и т. Д.). Здесь я раскрасил каждый регион уникальным цветом:
Colorize[components]
Чтобы получить границу данного компонента, можно запросить двоичную маску компонента, а затем вычислить периметр.
Это получает все маски:
masks = ComponentMeasurements[components, "Mask"];
Например, получить границу или контур одной области:
country = Image[masks[[708, 2]], "Bit"]
border = MorphologicalPerimeter[country]
Получение двухмерных позиций для границы - это просто вопрос выделения белых пикселей на изображении:
pos = Position[ImageData[border], 1]