我具有0和1层的一个二维阵列,其中1点的表示一个四边形的边缘和内部,和0是一切外部。什么是找到四角的坐标的最佳方式?
我使用Python这样的库,可以帮助都很好,但在任何语言的算法将是有益的为好。
答案 0 :(得分:2)
我对自己如何实现此功能有一个想法。根据我的理解,只有for角旁边可以有多个“ 0”。
如果您以array[x,y]
为切入点。 array[x-1,y],array[x+1,y],array[x,y+1],array[x,y-1]
是接近它的4点。您可以循环遍历数组,检查四个邻居是否值是“ 1”,并计算值为“ 0”的邻居数。那些具有多个(具有两个)值“ 0”的邻居的点是四个角。
答案 1 :(得分:1)
在绝对普通的情况下(例如,允许使用凹壳或接近三角形的形状),这将涉及一些不确定性。但是,由于您要处理的是受限子类,因此更容易。
您可能从内核卷积开始。考虑(例如)3x3像素的重叠正方形:您可以设计一个函数,根据点的模式告诉您中心是在内部(全1),外部(全0),在边缘还是在拐角处。 / p>
在另一方面,可以采取“凸包”的方法:最左边和最右边1像素可能是角点;如果在同一列中出现几个,则分别取最高/最低。使用它们之间的线条,您可以判断出1像素的大部分是在线条的上方,下方还是两侧。告诉您在哪里寻找其他角落。