开发我的工作与正在开发一个程序,分析图像的路面找裂缝在人行道上。对于每一个裂缝他程序发现,它产生了一项文件,告诉我这素使该特定的裂缝。有两个问题与他的软件:

1)它会产生一些误报

2)如果他发现一个裂缝,他只找到了一小部分,它并表示这些部分作为单独的裂缝。

我的工作就是写软件,将读这个数据、进行分析,并告诉差异之间的误报和实际的裂缝。我还需要确定如何组合在一起,所有小部分裂为一体。

我已经尝试了各种方式的筛选数据以消除误报,并已经使用神经网络有限程度的成功为基裂缝在一起。我了解,会有错误,但是现在,有太多的错误。没有任何人有任何了解非AI专家以最好的方法来完成我的任务,或者学习更多关于它?什么样的书籍我应该读,或哪种类别,我应该走?

编辑 我的问题是更多关于如何通知中的模式,我的同事的数据和识别这些模式作为实际的裂缝。这是更高级的逻辑,我关心,没有那么多的低水平的逻辑。

编辑 在所有事实,它将至少需要20样品图给出一个准确的数据的表示我的工作。它不同而变化很大。但是我有一样 在这里,, 在这里,, , 在这里,.这些图像已经被处理过的我的同事的过程。红色的,蓝色和绿色的数据是什么,我需要分类(红色代表黑暗的裂,蓝色代表着光破解,绿色代表着一个广泛的/密封的裂).

有帮助吗?

解决方案

除了有用的意见有关的图像处理,它还听起来像是你处理 集群问题.

聚类的算法来自 学习机 文献,具体地说 监督学习.如名称所示,其基本思想是要尝试 确定自然簇 数据点内的一些大的数据集。

例如,下图显示了如何聚类分析算法可能会组群分成7个群集(由圈子和颜色):

k-means
(资料来源: natekohl.net)

在你的情况下,一个集群算法将试图复合并的小裂缝,形成更大的裂缝,直到一些停止标准得到满足。最终的结果将是一个小组参加了裂缝。当然,裂缝是一点不同于两个维点--的一部分的诀窍中获取聚类分析算法在这里工作将确定一个有用的距离指标之间的两个裂缝。

流行集群算法包括 k-聚集装置 (演示)和 分层群聚.第二链接,还有一个很好的一步一步解释如何k-装置的工作。

编辑:本文件的某些工程师在菲利普斯看起来相关的是什么你想要做的:

  • 众成荣黄Chua-Chin王,卡风吴"图像处理技术用于晶片的缺陷的集群的识别," IEEE设计和测试的计算机,第一卷。19,没有。2pp.44-48,三月/四月,2002年。

他们正在做一些检查的缺陷上硅晶片,并使用 中位数的过滤器 消除噪音,使用前一个最近的邻居群算法检测的缺陷。

这里有一些相关文件的书籍,他们援引,可能是有用的:

  • M.Taubenlatt和J.Batchelder,"图片检查使用空间筛选集的环境,” 应用光学,vol。31,no.17,1992年,pp。3354-3362.
  • F.-L.Chen,S.-F。刘"一个神经网络的方法,认识到缺陷的空间模式在半导体制造。IEEE反。半导体制造,第一卷。13,没有。3的。2000年,pp。366-373.
  • G.厄尔,R.Johnsonbaugh,和S.Jost, 模式识别和图像分析, Prentice Hall,Upper Saddle River,N.J.,1996年。

其他提示

您的问题属于图像分类的广泛领域。这些类型的问题可能是众所周知的困难,并且在一天结束时,解决它们是一门艺术。您必须利用有关问题域的每一条知识,使其易于处理。

一个基本问题是正常化。您希望在数据表示中使类似的分类对象尽可能相似。例如,如果您有裂缝图像,是否所有图像都具有相同的方向?如果没有,那么旋转图像可能有助于您的分类。同样,缩放和翻译(参见这个

您还希望从训练集中删除尽可能多的无关数据。您可以使用边缘提取(例如Canny边缘检测),而不是直接处理图像。 )。这将消除图像中的所有“噪音”,只留下边缘。然后减少练习以确定哪些边缘是裂缝,哪些是自然路面。

如果您想快速找到解决方案,那么我建议您首先尝试使用卷积神经网络,可以执行相当好的图像分类,只需最少的预处理和noramlization。它在手写识别方面非常有名,可能适合您正在做的事情。

我对你选择解决问题的方式感到有点困惑。如果你的同事没有发现完整的裂缝,那就是规格,那么这就是你的问题所在。但如果你设法将所有的裂缝缝合在一起,并避免他的误报,那么你还没有完成他的工作吗?

除此之外,我认为这是一个边缘检测问题,而不是分类问题。如果边缘检测器是好的,那么你的问题就会消失。

如果您仍处于分类阶段,那么您将需要一个具有已知答案的训练集,因为您需要一种方法来量化误报与真实裂缝的区别。但是我仍然认为你的分类器不太可能连接裂缝,因为这些裂缝特定于每个单独的铺路板。

我必须同意ire_and_curses,一旦你深入到边缘检测的领域来修补你的共同开发人员的裂缝检测,并消除他的误报,看起来好像你会做他的工作。如果你可以修补他的软件没有检测到的东西,并删除他给你的东西的误报。看起来你可以为完整的图像做到这一点。

如果规范是让他检测裂缝,并对它们进行分类,那么他的工作就是进行边缘检测并消除误报。而你的工作就是拿走他给你的东西并分类它是什么类型的裂缝。如果你必须进行边缘检测,那么听起来你不会让你的共同开发人员失业。

这里有一些非常好的答案。但如果你无法解决问题,你可以考虑机械土耳其人。在某些情况下,对于顽固的问题来说,这可能是非常划算的。我知道有人将它用于各种类似的事情(验证人类可以轻松做到但很难编码)。

https://www.mturk.com/mturk/welcome

我无论如何都不是专家,但请尝试查看 Haar Cascades 。您可能还希望尝试使用OpenCV工具包。这两件事共同面对检测和其他物体检测任务。

你可能必须做<!> quot; training <!> quot;开发一个Haar Cascade用于路面裂缝。

  

什么<!>#8217;是识别数据模式的最佳方法,以及<!>#8217;是了解有关该主题的更多信息的最佳方式?

最好的方法是学习模式识别和机器学习。我将从Duda的模式分类开始,并使用Bishop的模式识别和机器学习作为参考。材料沉入需要一段时间,但是获得模式识别的基本意义和分类问题的主要方法应该给你方向。我可以坐在这里对你的数据做一些假设,但说实话,你可能对数据集有最好的了解,因为你比任何人都更多地处理它。例如,一些有用的技术可以是支持向量机提升

编辑:一个有趣的提升应用是实时人脸检测。请参阅Viola / Jones的使用简单的Boosted Cascade进行快速物体检测 功能(pdf)。另外,看一下样本图像,我会说你应该尝试改进边缘检测。也许用高斯平滑图像并运行更积极的边缘检测可以增加对较小裂缝的检测。

我建议您选择任何图像处理教科书并阅读相关主题。 特别是,您可能对形态感兴趣操作 喜欢 消融侵蚀<!>#8206; ,它补充了边缘检测器。网上有很多材料......

这是图像处理问题。有很多关于这个主题的书籍,这些书中的大部分内容都超出了这样的线检测问题。以下是一种可以解决问题的技术概要。

  1. 当您发现裂缝时,您会发现构成裂缝的一些像素。边缘检测滤波器或其他边缘检测方法可用于此。

  2. 从裂缝中的一个(任意)像素开始,然后<!>“跟随<!>”;它可以从裂缝中制作出多点线 - 节省构成线的点。如果它们靠近直线,您可以删除一些中间点。用所有裂缝像素做到这一点。如果你有星形裂缝,不要担心。只需按照一个(或两个)方向上的像素组成一条线,然后从这组裂缝像素中移除这些像素。星星的其他腿将被识别为单独的线(暂时)。

  3. 您可以在步骤1之前对裂缝像素执行一些细化。换句话说,检查像素的邻居,如果有太多,则忽略该像素。 (这是一个简化 - 你可以找到几个算法。)另一个预处理步骤可能是删除所有太薄或两个微弱的行。这可能有助于误报。

  4. 现在你有很多短线,多点线。对于每条线的端点,找到最近的线。如果线条在公差范围内,那么<!> quot; connect <!> quot;这些行 - 链接它们或将它们添加到相同的结构或数组中。通过这种方式,您可以连接紧密的裂缝,这可能与混凝土中的裂缝相同。

  5. 似乎无论算法如何,都需要进行一些参数调整才能获得良好的性能。写它,这样就可以很容易地对强度阈值,最小和最大厚度等进行微小的改动。

    根据使用环境的不同,您可能希望允许用户判断确定可疑案例,和/或允许用户查看所有裂缝并单击以组合,拆分或删除检测到的裂缝。

你得到了一些非常好的答案,尤其是@ Nate,以及建议的所有链接和书籍都是值得的。然而,我很惊讶没有人建议一本本书我的首选 - O'Reilly的编程集体智慧。标题似乎与你的问题没有密切关系,但是,相信我,内容:最实用的,面向程序员的数据挖掘覆盖和<!>机器学习<!> QUOT;我见过的。给它一个旋转! - )

这听起来有点像岩石力学中存在的问题,岩体中存在关节,这些关节必须按方向,长度和其他属性分组为“组”。在这种情况下,一种效果很好的方法是聚类,尽管经典的K-means似乎确实存在一些我过去使用遗传算法运行迭代解决方案的问题。

在这种情况下,我怀疑它可能不会以完全相同的方式工作。在这种情况下,我怀疑你需要创建你的组,即纵向,横向等,并准确定义每个组的行为是什么,即单个纵向裂缝分支沿着它的长度方向,如果它做了什么做那就是它的分类。

一旦你有了每个裂缝,我会根据你创建的分类产生随机裂缝或裂缝模式。然后,您可以使用类似最小二乘法的方法来查看您检查的裂缝与您产生的随机裂缝/裂缝的紧密程度。您可以通过蒙特卡罗分析的方式多次重复此分析,以确定哪个随机生成的裂缝/裂缝最适合您正在检查的那个。

然后处理误报,你需要为每种不同类型的误报创建一个模式,即路边的边缘是一条直线。然后,您将能够运行分析,挑选出您分析的每个裂缝最可能的组。

最后,您需要'调整'不同裂缝类型的定义,以尝试获得更好的结果。我想这可以使用自动方法或手动方法,具体取决于您如何定义不同的裂缝类型。

当我遇到这样的问题时,有时会有一些其他修改就是有一个随机组。通过调整随机组的灵敏度,即随机组中包含裂缝的可能性或多或少,您有时可以将模型的灵敏度调整为不适合任何地方的复杂模式。

祝你好运,看起来像你有一个真正的挑战。

您应该阅读数据挖掘,特别是模式挖掘

  

数据挖掘是从数据中提取模式的过程。随着收集的数据越来越多,数据量每三年翻一番,数据挖掘正成为将这些数据转换为数据的一个越来越重要的工具。信息。它通常用于广泛的分析实践,例如营销,监视,欺诈检测和科学发现。

关于这个问题的好书是数据挖掘:实用机器学习工具和技术


(来源: waikato.ac.nz ]( http://www.amazon.com/Data-Mining -Ian-H-Witten / dp / 3446215336 <!>; ISBN 0-12-088407-0 <!>;)

基本上,您需要将统计工具和方法应用于数据集。最常用的比较方法是学生的 t-test Chi平方测试,以查看两个不相关的变量是否与某些置信度相关。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top