Этот вопрос довольно сложный.Я представляю простой подход, который, тем не менее, дает только грубое приближение.
- преобразование изображения rgb в оттенки серого
- применение порога для получения черно-белого изображения
- заливкадыры (фоновые пиксели, которые не могут быть достигнуты снаружи)
- помечают области и фильтруют их с областью ниже порога
In сделал это в Matlab
im = imread('FyrNE.jpg');
I = rgb2gray(im);
[L, n] = bwlabel(bwareafilt(I>160,[1e2,Inf]));
imagesc(imfill(L, 'holes'))
Это результат с 12 обнаруженными странами, который все еще неоптимален.
То, что вы действительно хотите сделать, это либо использовать большеПричудливые алгоритмы, обнаруживающие плавные кривые определенной длины (границы границ) или, если задачу не нужно выполнять повторно, перекрашивают границы вручную различимым цветом (например, красным) и начинают с этого.