如何从彩色地图中提取土地?

时间:2019-05-13 07:25:35

标签: python opencv image-processing

我在从此游戏地图中提取土地时遇到了麻烦。

map of middle-earth

答案实际上是8张图像,代表该大陆的国家。该地图(大陆)实际上是一个更大的游戏地图的一部分,我已经将其分解为多个图像。他们每个人代表一个拥有不同颜色的大陆。

我尝试了HSV分割,阈值和分水岭算法,但它们没有达到最佳效果。图像仍然很嘈杂,陆地区域被剪裁。

有人可以建议其他方法吗?谢谢。

1 个答案:

答案 0 :(得分:2)

这个问题是一个很大的挑战。我介绍了一种简单的方法,但是它只能提供粗略的近似值。

  1. 将rgb图像转换为灰度
  2. 应用阈值获取黑白图像
  3. 填充孔(无法从外部到达背景像素)
  4. 标记区域并过滤面积小于阈值的区域

是在Matlab中完成的

im = imread('FyrNE.jpg');
I = rgb2gray(im);
[L, n] = bwlabel(bwareafilt(I>160,[1e2,Inf]));
imagesc(imfill(L, 'holes'))

这是检测到的12个国家/地区的结果,但仍不是最佳选择。

enter image description here

您真正想做的是或者使用更多的花哨算法来检测特定长度的平滑曲线(边界曲线),或者,如果不需要重复执行此任务,请使用可区分的颜色手动重新绘制边界(例如红色)并从此处开始。