在二维网格上寻找多边形的算法
本文关键字:多边形 算法 寻找 维网格 | 更新日期: 2023-09-27 18:13:23
我数学不是很好,所以我很难找到一个算法来做这个:
- 我有一个这样的网格:(8x8) grid 8x8
我试图找到一个算法,帮助我找到红色的多边形,之后,这个多边形内的所有单元格将是红色的。
在这一刻,我使用c#,我有一个多维数组与网格颜色地图,所以我必须对它工作;但我不知道我能做什么。
private Color[,] mapColor;
mapColor= new Color[8, 8];
Thanks in advance
问题不太清楚,我看不到图像(被防火墙屏蔽)。我的理解是,你想要遵循所有可能的路径,从一个红细胞开始,并试图找到一个多边形。
如果这是问题,听起来像一个图形问题。你可能会使用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]);
}
取一个样本,如果我追求高精度,我会检查红色与其他颜色的比例是否很高。