我正在寻找一种算法,该算法将从图像中生成凹多边形(具有 N 个点,其中 N > 3 - 用户输入此值)。
我对算法的想法:
// Every pixel in image is checked and a minimal orientated bounding box is generated (transparent pixels are ignored)
boundingBox = createImageBoundingBox(image);
curpoints = 4, A = 0, B = 1, tmppoints = curpoints;
while(curpoints < maxNumberOfPoints)
{
add a new point between point A and point B (A and B are points from the boundingBox)
reposition points so that it will contain the minimal surface
A++; B++;
curpoints++;
if(A == tmppoints)
{ A = 0; B = 1; tmppoints=curpoints; }
}
我面临的问题是我不知道如何最佳地重新定位点。这可以通过任何其他方式完成(更好/更快的方式)。将不胜感激任何想法。
谢谢
编辑:
图像必须至少为 10x10。我需要 N 点参数,以便用户可以调节要使用的点数(用于优化)。另一种方法是使用一个因子 (0-1),它告诉您希望多边形具有多少细节(多少点)(0 是 4 个点,> 0 5 个或更多点)。但不确定如何实施。