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