我正在合作的一位开发人员正在开发一个程序,用于分析路面图像以查找路面裂缝。对于他的程序找到的每个裂缝,它都会在一个文件中生成一个条目,告诉我哪些像素构成了该特定裂缝。 但是,他的软件存在两个问题:
1) 它会产生一些误报
2) 如果他发现裂缝,他只会发现它的小部分,并将这些部分表示为单独的裂缝。
我的工作是编写软件来读取这些数据、分析它,并区分误报和实际裂缝。 我还需要确定如何将裂缝的所有小部分组合在一起。
我已经尝试了各种方法来过滤数据以消除误报,并且已经在有限的程度上使用神经网络将裂缝组合在一起,取得了一些成功。 我理解会有错误,但就目前而言,错误太多了。 对于像我这样不是人工智能专家的人来说,有没有人对完成我的任务或了解更多关于它的最佳方法有任何见解? 我应该读什么样的书,或者应该上什么样的课程?
编辑 我的问题更多的是关于如何注意到我的同事的数据中的模式,并将这些模式识别为实际裂缝。 我关心的是更高层次的逻辑,而不是低层次的逻辑。
编辑 实际上,至少需要 20 个样本图像才能准确表示我正在处理的数据。 变化很大。 但我确实有一个样本这里,这里,以及这里。 这些图像已经过我同事的流程处理。 红色、蓝色和绿色数据是我必须分类的(红色代表深色裂缝,蓝色代表浅色裂缝,绿色代表宽/密封裂缝)。
回答:
除了关于图像处理的有用评论之外,这听起来你也正在处理一个聚类问题。
聚类算法来自机器学习文献,特别是无监督学习。 顾名思义,其基本思想是尝试识别某个大数据集中数据点的自然聚类。
例如,下图显示了聚类算法如何将一堆点分成 7 个聚类(用圆圈和颜色表示):
(来源: natekohl.net)
在你的例子中,聚类算法会尝试重复合并小裂缝以形成更大的裂缝,直到满足某些停止标准。 最终结果将是一组较小的连接裂缝。 当然,裂缝与二维点略有不同——使聚类算法在此处起作用的关键在于定义两个裂缝之间有用的距离度量。
流行的聚类算法包括k-means聚类 (演示) 和分层聚类。 第二个链接还提供了k-means工作原理的很好的逐步解释。
编辑:Phillips的一些工程师撰写的这篇论文似乎与您尝试做的事情有关:
- Chenn-Jung Huang, Chua-Chin Wang, Chi-Feng Wu, “用于晶圆缺陷聚类识别的图像处理技术,” IEEE Design and Test of Computers, vol. 19, no. 2, pp. 44-48, March/April, 2002.
他们正在对硅晶圆上的缺陷进行视觉检查,并在使用最近邻聚类算法检测缺陷之前使用中值滤波器去除噪声。
以下是他们引用的一些相关的论文/书籍,可能有用:
- M. Taubenlatt and J. Batchelder, “使用空间滤波进行聚类环境的图案化晶圆检测,” Applied Optics, vol. 31, no. 17, June 1992, pp. 3354-3362.
- F.-L. Chen and S.-F. Liu, “用于识别半导体制造中缺陷空间模式的神经网络方法。” IEEE Trans. Semiconductor Manufacturing, vol. 13, no. 3, Aug. 2000, pp. 366-373.
- G. Earl, R. Johnsonbaugh, and S. Jost, 模式识别和图像分析, Prentice Hall, Upper Saddle River, N.J., 1996.