我想识别这些彼此相关的几何形状。例如,看下面的屋顶图像,只要知道红色的山脊的存在,我就知道蓝色的山脊也应该存在(即使它在图像中不可见)。如果我有数千张这样的标记图像,机器学习模型也应该能够学习这一点。但是,我不知道如何表示这个问题?
标签:C、Z
标签:D
标签:C、Z
标签:E、G
让我们将这些脊称为线,就像在第一个示例中一样,我们通过简单的边缘检测检测到 X 和 Y 线,但没有检测到 Z 线,因为它不可见。同样,示例 2 中的线 D 未被检测到,但线 A、B、C 被检测到。
我想要的是制定一个 ML 模型,该模型从 X 和 Y 中学习应该有一个 Z,然后从 A、B、C 中学习 D。
我有一个此类示例的数据集,其中标记了脊(红色和蓝色只是为了区分,所有脊都用相同的颜色标记)。
有一些重要的事情需要记住。
- 图像的亮度可能会有很大差异。
- 山脊可以有任何比例甚至方向(在合理的范围内)。
- 输入图像几乎总是非常嘈杂。
最佳答案
我可以想到两种方法。
使用与边缘检测问题中使用的网络类似的网络。这些网络输出输入的每个像素包含边缘的概率。您的问题类似,只是您不需要所有边缘。但这可能需要一些重要的后处理,因为您可能会得到很多紧密的直线,您必须使用非极大值抑制或某些形态学操作将它们折叠成一条线。为了训练,地面真值可以是包含山脊真实位置的二进制掩码,或者您可以在实际山脊位置上使用一些小高斯,以使损失函数更加稳定。
第二种方法可以是回归。您可以将包含山脊端点坐标的输出向量作为平面向量。但这需要您确定可以存在的最大山脊数量。此方法可能无法单独工作,因为由于输出向量较大,您可能会得到很多误报,但这可以与第一种方法结合使用,并且您可以选择仅在关键点非常接近边缘位置时才保留关键点由第一种方法获得。
关于image-processing - 识别山脊的几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47892234/