如何在此图中找到三个六边形的交点?
How can I find intersections of three hexagons on this figure?
我有一个像这样的图
我想找到三个六边形的所有交点的坐标。
我该怎么做?我应该使用 OpenCV 吗?
您可以尝试使用 Harris corner detector 找到这些特征。
同时检查 findContours
对结果交集的分析是否可以为您提供有用的信息。
我仍在考虑 faster/better 方法,但我认为以下方法应该可行:
- 将您的图像限制为纯黑色和白色
- 生成并保存所有黑色像素的列表供以后使用
- 标记您的图像,以便每个白色六边形都有效地填充了独特的颜色(或灰色阴影)-有些人称之为 "labelling",有些人叫它"Blob Analysis",有人叫它"Connected Component Analysis"。不管它叫什么,你都会得到这样的东西:
- 现在查看您在第二步中保存的列表中的每个黑色像素,并计算周围 9x9 或 15x15 区域中除黑色以外的其他颜色的数量。如果是三个,则可能是您正在寻找的十字路口。
当然有一些变化 - 例如,您可以在顶部实现 "minimum distance from other intersection"。或者一个"black line thinning first"。或者扩大每个斑点以侵蚀黑线并使三种颜色靠得更近。您可以在标记后缩小图像(小心使用 NEAREST_NEIGHBOUR 而不是插值)以减少处理时间 - 如果重要的话。
我有一个像这样的图
我该怎么做?我应该使用 OpenCV 吗?
您可以尝试使用 Harris corner detector 找到这些特征。
同时检查 findContours
对结果交集的分析是否可以为您提供有用的信息。
我仍在考虑 faster/better 方法,但我认为以下方法应该可行:
- 将您的图像限制为纯黑色和白色
- 生成并保存所有黑色像素的列表供以后使用
- 标记您的图像,以便每个白色六边形都有效地填充了独特的颜色(或灰色阴影)-有些人称之为 "labelling",有些人叫它"Blob Analysis",有人叫它"Connected Component Analysis"。不管它叫什么,你都会得到这样的东西:
- 现在查看您在第二步中保存的列表中的每个黑色像素,并计算周围 9x9 或 15x15 区域中除黑色以外的其他颜色的数量。如果是三个,则可能是您正在寻找的十字路口。
当然有一些变化 - 例如,您可以在顶部实现 "minimum distance from other intersection"。或者一个"black line thinning first"。或者扩大每个斑点以侵蚀黑线并使三种颜色靠得更近。您可以在标记后缩小图像(小心使用 NEAREST_NEIGHBOUR 而不是插值)以减少处理时间 - 如果重要的话。