识别脊的几何形状

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了识别脊的几何形状相关的知识,希望对你有一定的参考价值。

我想要识别这些彼此相关的几何形状。例如,看看下面屋顶的图像,只要知道RED中脊的存在,我知道BLUE中的山脊也应该存在(即使它在图像中不可见)。如果我有数千个这样的标记图像,ML模型也应该能够学习这一点。但是,我无法弄清楚如何表示这个问题?

Original Image (Example 1)

Label over original Image (Example 1)

Original Image (Example 2)

Label over original Image (Example 2)

Original Image (Example 3)

Label over original Image (Example 3)

Original Image (Example 4)

Label over original Image (Example 4)

让我们将这些脊称为线,就像在第一个例子中一样,我们通过简单的边缘检测而不是Z来检测X和Y线,因为它不可见。同样地,未检测到线D,但是来自示例2的线A,B,C。

我想要的是我制定了一个ML模型,该模型从X和Y学习应该有一个Z,随后是A,B,C。

我有一个这样的例子的数据集,其中标记了脊(红色和蓝色只是为了区分,所有的脊都用相同的颜色标记)。

要记住一些重要的事情。

  • 图像的亮度可能会有很大差异。
  • 脊可以具有任何比例或甚至方向(在合理的范围内)。
  • 输入图像几乎总是非常嘈杂。
答案

我可以想到两种方法。

  1. 使用类似于边缘检测问题中使用的网络。这些网络输出Input的每个像素的概率以包含边缘。你的问题很相似,只是你不需要所有的边缘。但是这可能需要一些重要的后期处理,因为你可能会得到很多近线,你必须使用非最大抑制或一些形态学操作将它们折叠成一行。对于训练,地面实况值可以是包含脊的真实位置的二元掩模,或者您可以在实际脊位置上使用一些小高斯,以使损失函数更稳定。
  2. 第二种方法可以是回归。您可以将包含脊的终点坐标的输出向量作为平面向量。但这需要你修复可能存在的最大脊数。这种方法可能不会单独工作,因为输出矢量较大可能会导致大量误报,但这可以与第一种方法结合使用,只有当它非常接近边缘位置时才能选择保留关键点。从第一种方法获得。
另一答案

我会用CNN来检测屋顶。如果颜色不重要,您可以制作图像灰度/其他颜色通道模型(例如HSV并移除H通道)。或者,您可以通过自动更改任何图像的色调并将此编辑的图像也提供给CNN来扩充数据集。

以上是关于识别脊的几何形状的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中几何形状识别与测量

OpenCV中几何形状识别与测量

OpenCV-几何形状颜色识别 #导入MD文档图片#

OpenCV中几何形状识别与测量

基于形态学处理的不规则形状图像的几何参数统计,包括输出面积,周长,圆度,矩形度,伸长度

高级特征提取