我有两张拍摄目标图像(4米乘4米),分为0.5米乘0.5米的正方形。在拍摄试验之前和之后拍摄图像。目标在射击前已经有弹孔。此外,目标上或前面有一些杂乱(固定螺钉和钢线以保持目标笔直)。让我们假设两个图像上都可以看到所有弹孔。如何通过比较图像之前和之后以编程方式识别弹孔?您可以指定工具或库或算法步骤吗?
答案 0 :(得分:1)
可能的方法包括以下步骤:
执行图像配准,以便从同一角度看到两个图像。在这里,您需要找到将一个视图与另一个视图相关联的旋转,缩放和平移的组合。参见例如http://scikit-image.org/docs/dev/auto_examples/transform/plot_matching.html#example-transform-plot-matching-py,其确定从一组感兴趣的点(例如角落)的变换。 (您需要的转换可能比示例中的转换稍微复杂一些,因为图像的旋转是3D,而不仅仅是2D。)
将图像对齐后,可以尝试不同的方法。其中之一是使用分割方法检测两个图像中的孔。由于孔看起来较轻,您可以尝试对图像进行阈值处理(http://scikit-image.org/docs/dev/auto_examples/segmentation/plot_local_otsu.html),也可以使用数学形态学清除结果(http://www.scipy-lectures.org/packages/scikit-image/index.html#mathematical-morphology)。然后,对于之后的目标的每个孔,您可以尝试将其与目标中的孔匹配,例如通过在目标中选择最接近的质心并计算孔周围的给定补片之间的互相关,在两张图片中。
我已经给出了scikit-image示例的一些链接,但openCV经常被引用作为计算机视觉的参考库。