繁体   English   中英

在二维网格上查找多边形的算法

[英]Algorithm for find polygons on a 2d grid

我的数学不是很好,所以我很难找到一种算法来做到这一点:

  • 我有一个像这样的网格:(8x8) GRID 8x8

我正在尝试寻找一种算法来帮助我找到红色多边形,然后,该多边形内的所有单元格将变为红色。

目前,我正在使用C#,并且具有带有网格颜色映射的多维数组,因此我必须对其进行处理。 但是我不知道该怎么办。

private Color[,] mapColor;
mapColor= new Color[8, 8];

提前致谢

问题不是很清楚,我看不到图像(被防火墙阻止)。 我了解的是,您要遵循从红色单元格开始并尝试查找多边形的所有可能路径。

如果是问题,听起来就像是Graph问题。 您可以使用BFS(广度优先搜索)算法解决问题,在网格中将其视为图(每个单元格可以有8条边线(如果您要考虑对角线的话)或4条边线(如果您只想向上的话) /向下和向左/向右方向)。

BFS将返回最短路径。 如果需要所有可能的路径,则应使用DFS(深度优先搜索)算法。

只需每64个像素对位图进行迭代,然后调用一个检查附近像素以确认它已找到红色方块的函数。 只要像您一样在图像中具有高对比度,就不难发现过度偏向红色的位置。

例如

List<KeyValuePair<int, int>> PossibleCoords = new List<KeyValuePair<int,int>();

for(int i = 0; i < Bitmap.Width/64; i++)
{
    for(int j = 0; j < Bitmap.Height/64)
    {
        if(Bitmap.GetPixel(i*64, j*64).R > 200)
        {
            KeyValuePair<int, int> temp = new KeyValuePair<int, int>();
            KeyValuePair.Key = i*64;
            KeyValuePair.Value = j*64;
            PossibleCoords.Add(temp);
        }
    }
}

for(int i = 0; i < PossibleCoords.Count; i++)
{
    SampleAdjacentPixelsToConfirm(PossibleCoords[i]);
}

为了进行采样,如果我追求高精度,我会检查红色与其他颜色的比率是否很高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM