Point数组的可视化表示(缩放到800%):http://i.cubeupload.com/2Y3JPf.png
请不要重新加载到Imgur。 Imgur的压缩使得图像在高变焦时太模糊。
(图像的放大部分突出显示相关的点:)
在图像中,每个红点代表一个点。所有组合的红点代表Point数组。仅供参考,Point数组从左到右,从上到下排序。因此pointArray[0]
位于左上角,pointArray[1]
位于右上角,pointArray[2]
位于左上角,但也位于pointArray[0]
下方的一行和{{1} }}
如您所见,大多数红点都在网格中,但窗口左上角和右下角有一些异常值,显示的是地雷数量。我如何摆脱异常值?我想过逐个解析每个点,看看它们是否是彼此远离的恒定像素数,但我从哪个点开始? pointArray[1]
位于左上方,因此它甚至不是网格的一部分,这意味着找到一个恒定的像素间隙也无法正常工作。
有什么想法吗?
答案 0 :(得分:0)
以下是一种适用于所有网格尺寸的方法:
计算每行中的点数和每列中的点数 然后删除行数和列数小于平均点数的所有点。
您可以使用字典有效地构建这样的直方图:
var numDotsPerRow = new Dictionary<int,int>();
var numDotsPerColumn = new Dictionary<int,int>();
foreach (var point in pointArray)
{
int count;
numDotsPerRow.TryGetValue(point.X, out count);
numDotsPerRow[point.X] = count+1;
numDotsPerColumn.TryGetValue(point.Y, out count);
numDotsPerColumn[point.Y] = count+1;
}