提取形状边缘的外部点
Extracing Outer Points On Edge of a Shape
我需要一种使用点在形状外部进行演示的好方法。我需要一种算法来给我位于形状外部的一些点。
什么是好的开始?
这称为赫尔发现。在正常情况下,您会想要找到 Convex Hull,但您的示例显示了一个 Convex Hull。如果您的形状是通过样条曲线生成的,那么您使用的样条曲线算法应该从您输入的控制点生成一组边缘点。但是,如果您的形状完全是随机的(即不是从数学模型生成的),那么您将需要使用更类似于边缘检测图形通道的不同技术 (http://en.wikipedia.org/wiki/Edge_detection) like this one. (http://www.codeproject.com/Articles/93642/Canny-Edge-Detection-in-C)
OpenCV 有适合您的解决方案,但这取决于准确性。您可以从 approximate chain -- it will approximate your shape by polygonal curve and gives you vertex coordinates. You can always make it more precise testing it bypointpolygontest OpenCV function or fitting by fitLine function 开始。当然,您首先需要找到边缘(openCV 具有 Canny 边缘检测等)和计数(请参阅上面的链接了解 findContours 函数描述)。所以你的步骤是:
- 求边
- 寻找轮廓
- 通过多边形曲线近似轮廓
- 拟合多边形曲线
您可以使用以下方法:
- 将你的形状扩大
3x3
个方形元素
- 从当前图像中减去原始图像
- 这将为您提供边框
- 使用任何线跟踪算法找到边界。
我需要一种使用点在形状外部进行演示的好方法。我需要一种算法来给我位于形状外部的一些点。
什么是好的开始?
这称为赫尔发现。在正常情况下,您会想要找到 Convex Hull,但您的示例显示了一个 Convex Hull。如果您的形状是通过样条曲线生成的,那么您使用的样条曲线算法应该从您输入的控制点生成一组边缘点。但是,如果您的形状完全是随机的(即不是从数学模型生成的),那么您将需要使用更类似于边缘检测图形通道的不同技术 (http://en.wikipedia.org/wiki/Edge_detection) like this one. (http://www.codeproject.com/Articles/93642/Canny-Edge-Detection-in-C)
OpenCV 有适合您的解决方案,但这取决于准确性。您可以从 approximate chain -- it will approximate your shape by polygonal curve and gives you vertex coordinates. You can always make it more precise testing it bypointpolygontest OpenCV function or fitting by fitLine function 开始。当然,您首先需要找到边缘(openCV 具有 Canny 边缘检测等)和计数(请参阅上面的链接了解 findContours 函数描述)。所以你的步骤是:
- 求边
- 寻找轮廓
- 通过多边形曲线近似轮廓
- 拟合多边形曲线
您可以使用以下方法:
- 将你的形状扩大
3x3
个方形元素 - 从当前图像中减去原始图像
- 这将为您提供边框
- 使用任何线跟踪算法找到边界。