我有两个射击目标的图像(4 米乘 4 米),分成 0.5 米乘 0.5 米的正方形部分。这些图像是在射击试验之前和之后拍摄的。目标在射击前已经有弹孔。此外,目标上或前面有一些杂物(固定螺钉和钢线以保持目标笔直)。让我们假设所有弹孔在两张图像上都是可见的。如何通过比较前后图像以编程方式识别弹孔?你能指定工具或库,或算法步骤吗?
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 经常被引用为计算机视觉的参考库。