我目前正在帮助一位从事地球物理项目工作的朋友,我不是一个图像处理专业人士,但它玩起来很有趣 遇到这些问题。 =)
目的是估计从表面到顶部从水中伸出的小岩石的高度。
实验设备将安装在带有内置激光指示器的测距仪上。 “操作员”将指向岩石,按下触发器,该触发器将沿着岩石的照片记录一段距离 将在图像的中心。
可以假设设备始终保持在水面以上的固定距离。
我认为有很多问题需要克服:
照明条件
多样性
答案 0 :(得分:4)
我不认为边缘检测是检测岩石的最佳方法。其他物体,如山脉甚至水中的反射都会产生边缘。
我建议您尝试使用像素分类方法从图像背景中分割出岩石:
由于岩石往往具有相似的纹理,我会使用纹理图像描述符来训练分类器。例如,您可以尝试从每个颜色通道(R,G,B)中提取一些统计测量值,如强度值的平均值和标准偏差。
答案 1 :(得分:2)
颜色分割找到岩石,与边缘检测一起找到顶部。
为了找到水位,我会尝试找到所有的水岩边界,然后地平线(如果可能的话)将平面安装到水面上。 这样你就不用担心岩石的反射了。
如果您知道相机与水之间的俯仰角以及相机是否水平放置(滚动),则会更容易。
PS。这比我想象的要困难得多 - 你不知道所有岩石的距离,因此很难适应飞机。
发生反射实际上是寻找水平的理想方式,在岩石边缘检测中寻找对称路径边缘并选择顶点?
答案 2 :(得分:2)
像素分类可能在这里起作用,但永远不会产生100%的准确度。数据的方差非常大,岩石有不同的颜色(也有“腐蚀”的照明)和不同的纹理。因此,还必须考虑全球信息。
您要处理的问题是前景提取。我知道有两种方法。
通过图形切割实现能量最小化,参见例如http://en.wikipedia.org/wiki/GrabCut(有论文和OpenCV实施的链接)。应该进行一些初始化(“种子”)(由用户或某些先验知识完成,例如岩石位于中心,而水位于外围)。输入的另一种变体是近似边界矩形。它在MS Office 2010前台提取工具中实现。 可能的前景/背景标记的能量函数强制前景类似于前景种子和平滑边界。因此,能量的最小值对应于良好的前景掩模。请注意,使用像素分类方法,应该预先标记许多图像以进行学习,然后自动完成分割,而使用此方法,应该在每个查询图像上选择种子(或者隐式选择它们)。
Active contours a.k.a.蛇也要求一些用户互动。它们更像是Photoshop Magic Wand工具。他们也试图找到一个平滑的边界,但不考虑内部区域。
两种方法都可能存在反射问题(像素分类肯定会有)。如果是这种情况,您可以尝试找到近似的垂直对称,并删除下部(如果有)。您还可以要求用户在收集图形切割的统计数据时将反射标记为背景。