gpt4 book ai didi

c# 获取不规则对象边缘坐标的替代快速方法?

转载 作者:太空狗 更新时间:2023-10-30 01:21:24 25 4
gpt4 key购买 nike

我目前在寻找一个好的算法来获取对象每个外边缘点的坐标时遇到问题,不幸的是,它可能很复杂并且包含内部区域。


enter image description here

我有一个点列表,其中包含已从连通分量标记算法生成的对象的每个像素点。这使我能够检查图像中每个像素周围的每个坐标,如果不存在,那么我可以通过以下方式知道它的间隙或边缘。

public List<IntPoint> SquareSearch(List<IntPoint> ListOfPoints, IntPoint point)
{
List<IntPoint> UnfoundPixels = new List<IntPoint>();

int MoveX = point.X;
int MoveY = point.Y;

for (int LTR = MoveX - 1; LTR <= MoveX + 1; LTR++)
{
for (int TTB = MoveY - 1; TTB <= MoveY + 1; TTB++)
{
if (ListOfPoints.IndexOf(new IntPoint(LTR, TTB)) == -1)
{
if ((LTR > -1) && (TTB > -1))
{
UnfoundPixels.Add(new IntPoint(LTR, TTB));
}
}
}
}
}

然而,这个过程非常缓慢,并且与每个对象的大小成正比,因为它必须对对象中的每个像素重复。对替代方法有什么建议吗?

最佳答案

我会尝试制作某种“边缘检测”算法。

假设您在图像中间从上到下向下移动,直到碰到边缘,然后您可以通过扫描您周围的 8 个像素来跟随该边缘,并像这样围绕对象工作。在每个位置上,您检查当前坐标是否在边界框之外,并根据需要增加。

关于c# 获取不规则对象边缘坐标的替代快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com