我有一组点来定义一个形状。这些点是有序的,基本上是我的“选择”。
我希望能够以任意数量收缩此选择,以获得原始形状的较小版本。
在一个带有三角形的基本示例中,这些点只是沿着它们的法线移动,法线由相关点左侧和右侧的点定义。
最终所有3个点都会相遇并形成一个点,但在此之前它们会形成一个越来越小的三角形。
对于更复杂的形状,当向内移动各个点时,它们可能会穿过形状的外边缘,从而产生奇怪的伪影。显然我需要剔除这些点并从阵列中删除它们。
我将非常感谢您对我如何做到这一点的任何帮助。
谢谢!
答案 0 :(得分:1)
这只是一个想法,但你不能找到物体的质心,从中心到每个点创建一个向量,并沿着这个向量移动每个点?
找到质心当然会涉及平均每个x和y坐标。获得一个矢量就像用中心点减去相关点一样简单。规范化和缩放是可以在Google上找到的常见矢量操作。
修改强>
另一种解释你所问的是你希望侵蚀你的积分。与morphology erosion中一样。这通常应用于二进制图像,但您可以稍微修改该概念以使用一组点。基本上,您需要编写一个函数,给定一个点,将返回true(黑色)或false(白色),具体取决于该点是在您的点定义的形状内部还是外部。您必须查找如何为不总是凹陷的形状(这更难但不是不可能)这样做。
现在,显然,你的实际点中的每一个都会返回false,因为它们都在边界上(根据定义)。但是,您现在在您的兴趣点周围有一个点矩阵,用于定义“内部”和“外部”的位置。平均所有“内部”点,并将实际点沿着矢量移动到它自身和平均值之间。您可以使用不同的侵蚀内核来查看最佳效果。
您甚至可以使用具有浮点权重的内核而不是任何一个/或值,这将影响与其权重成比例的平均计算。有了这个,您可以近似一个点数较少的圆形内核。首先尝试更简单的方法。
答案 1 :(得分:0)
只需要简单的数学,不需要关于规范化矢量。