Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 确定岩石高于水面的高度_Image Processing_Computer Vision - Fatal编程技术网

Image processing 确定岩石高于水面的高度

Image processing 确定岩石高于水面的高度,image-processing,computer-vision,Image Processing,Computer Vision,我目前正在帮助一位从事地球物理项目的朋友,我绝对不是图像处理专业人士,但玩起来很有趣 围绕着这些问题 目的是估算从表面到顶部伸出水面的小岩石的高度 实验设备将是一个安装在测距仪上的10MP摄像机,带有内置激光指针。 “操作员”会将其指向岩石,按下触发器,该触发器将记录岩石照片的一段距离,该距离 将位于图像的中心 可以假设设备始终保持在水面以上的固定距离 在我看来,有许多问题需要克服: 照明条件 根据一天中的时间等,岩石可能比水亮或比水亮 有时岩石的颜色会非常接近水 遮阳帘的位置将在一天中移动

我目前正在帮助一位从事地球物理项目的朋友,我绝对不是图像处理专业人士,但玩起来很有趣 围绕着这些问题

目的是估算从表面到顶部伸出水面的小岩石的高度

实验设备将是一个安装在测距仪上的10MP摄像机,带有内置激光指针。 “操作员”会将其指向岩石,按下触发器,该触发器将记录岩石照片的一段距离,该距离 将位于图像的中心

可以假设设备始终保持在水面以上的固定距离

在我看来,有许多问题需要克服:

  • 照明条件

    • 根据一天中的时间等,岩石可能比水亮或比水亮
    • 有时岩石的颜色会非常接近水
    • 遮阳帘的位置将在一天中移动
    • 根据水的粗糙程度,有时水中可能会有岩石的反射
  • 多样性

    • 岩石的形状不均匀
    • 根据岩石类型、地衣生长等,岩石的外观会发生变化
  • 幸运的是,不缺少测试数据。水中岩石的照片很容易得到。以下是一些示例图像: 我已经在图像上运行了边缘检测器,尤其是在第四张图片中,对比度差使得很难看到边缘:
    任何想法都将不胜感激

    我不认为边缘检测是检测岩石的最佳方法。其他物体,如山,甚至水中的反射,都会产生边缘

    我建议您尝试使用像素分类方法从图像背景中分割岩石:

    • 对于图像中的每个像素,从以该像素为中心的NxN邻域中提取一组图像描述符
    • 选择一组图像并手动将像素标记为岩石或背景
    • 使用标记的像素和相应的图像描述符来训练分类器(例如朴素贝叶斯分类器)

    由于岩石往往具有相似的纹理,我将使用纹理图像描述符来训练分类器。例如,您可以尝试从每个颜色通道(R、G、B)中提取一些统计度量,如强度值的平均值和标准偏差。

    通过颜色分割找到岩石,并通过边缘检测找到顶部

    为了找到水位,我会尝试找到所有的水岩边界,以及地平线(如果可能的话),然后在水面上拟合一个平面。 这样你就不用担心岩石的反射了

    如果您知道相机与水之间的俯仰角,并且相机水平放置(滚动),则更容易操作

    另外,这比我想象的要困难得多——你不知道到所有岩石的距离,所以安装飞机很困难


    反射实际上是找到标高的理想方法,在岩石边缘检测中查找对称路径边缘并拾取顶点?

    像素分类可能在这里起作用,但不会产生100%的精度。数据的差异非常大,岩石有不同的颜色(也被灯光“破坏”)和不同的纹理。因此,我们也必须考虑全球信息

    处理的问题是前景提取。我知道有两种方法

  • 通过图形切割实现能量最小化,例如(有指向纸张和OpenCV实现的链接)。一些初始化(“种子”)应该完成(由用户或一些先验知识,如岩石在中心,而水在外围)。输入的另一个变体是近似边界矩形。它是在MS Office 2010前台提取工具中实现的。 可能的前景/背景标签的能量函数强制前景与前景种子相似,并且边界平滑。因此,能量的最小值对应于良好的前景遮罩。请注意,使用像素分类方法时,应预先标记大量要学习的图像,然后自动完成分割,而使用此方法时,应在每个查询图像上选择种子(或隐式选择种子)

  • 也称蛇也需要一些用户交互。它们更像是Photoshop的魔杖工具。他们也试图找到一个平滑的边界,但不考虑内部区域。


  • 这两种方法都可能存在反射问题(像素分类肯定会有)。如果是这种情况,您可以尝试找到近似的垂直对称,并删除下部(如果有)。您还可以要求用户在收集图形切割统计数据时将反射标记为背景。

    他们在处理同一问题时也有一些工作:(虽然我看不到您的问题的解决方案)看起来您可能可以进一步调整边缘检测器这是一个视觉问题;除非你只是想帮助改进边缘检测器。你有太多的未知数。仅仅给出这些2D图像,您永远无法可靠地测量岩石的高度。你怎么知道最高点在哪里?如果你设置了立体摄像机,再加上距离信息,你可以更接近真实的结果。@koan-Hmm。。通过在距离较远的地方进行测量,那么在这些图片中,最高点可能更容易发现。。。我知道这是一个有很多未知因素的棘手问题,但我想我无论如何都会尝试一下。顺便说一句,我添加了计算机视觉标签。岩石将在图像中居中,因此在图像中找到岩石不是问题。但你可能指的是从图像中提取岩石。将一个平面拟合到水面是有意义的,但是y如何才能