在形状边缘提取外点

时间:2015-01-06 11:41:58

标签: c# opencv image-processing edge-detection

我需要一个很好的方法来使用点来演示形状之外。我需要一个算法给我一些位于形状外部的点。

什么是好的开始?

enter image description here

3 个答案:

答案 0 :(得分:3)

OpenCV为您提供解决方案,但这取决于准确性。您可以从approximate chain开始 - 它将通过多边形曲线逼近您的形状,并为您提供顶点坐标。您始终可以通过pointpolygontest OpenCV functionfitLine function拟合来更精确地对其进行测试。当然,您首先需要找到边缘(openCV具有Canny边缘检测等)和countours(请参阅上面的链接以了解findContours函数说明)。所以你的步骤是:

  1. 找到Edges
  2. 查找轮廓
  3. 通过多边形曲线近似轮廓
  4. 适合多边形曲线

答案 1 :(得分:1)

这称为赫尔发现。在正常情况下,您可能希望找到Convex Hull,但您的示例显示了Concave Hull。如果您的形状是通过样条曲线生成的,那么您使用的样条曲线算法应该从您输入的控制点生成一组边缘点。但是,如果您的形状完全是随机的(即不是从数学模型生成),那么您将需要使用更类似于边缘检测图形传递(http://en.wikipedia.org/wiki/Edge_detection)的不同技术。 (http://www.codeproject.com/Articles/93642/Canny-Edge-Detection-in-C

答案 2 :(得分:0)

您可以使用以下方法:

  • 通过3x3方形元素
  • 扩展您的形状
  • 从当前
  • 中减去原始图像
  • 这将为您提供边框
  • 使用任何线追踪算法查找边界。