如何使用 opencv 去除图像中的船尾迹?

How to remove ship wake in image by using opencv?

我想用颜色来检测一个白色ship.When船速低,我可以得到一个很好的result.But当速度高时,我可以't.Because船尾是白色的,too.I尝试使用腐蚀和膨胀方法去除船尾,但结果不是good.How我可以去除船尾吗。 你可以看到如下图片,尾迹是白色的,所以很难分割 船和 wake.Can 你帮我提前向 me.Thanks 展示你的想法!!

我想你问过类似的问题,关于在这种情况下检测球。这个问题的答案也将与那个问题的答案相似。

  • 使用您的 HSV 方法检测包含白色的像素。

  • 计算那些白色像素的光流。

  • Ship对应的白色像素会比属于水波的白色像素具有更高的速度。

  • 你会得到一组速度最快的像素(它们都属于飞船)。然后,尝试使用像素坐标找到运动方向上最边缘(船的角像素)的像素。如果方向在 y 方向,您只需要找到 min(y)max(y)

  • 在这个像素周围画一个圆圈...这将检测到您的飞船。

我更倾向于使用 尾流比船 更线性的事实。或者甚至那艘船是 "at the other end of the wake".

首先粗略地通过 HSV 阈值处理以获得所有 "white-ish area",包括 ship 和 wake,然后尝试一些识别然后丢弃线。

线性霍夫变换可能会有所帮助,前提是您可以将阈值图像转换为合理的边缘,这需要进行一些形态学调整。

从那里您几乎可以画出尾流线,您的工作就完成了一半。 wake-to-ship的具体边界会是一个比较棘手的问题,涉及到边缘检测,但是如果你只关心那个,我想你的问题基本解决了! :p


有趣的是,这在卫星雷达图像中是一个很常见的问题 see my quick Google scholar search。 诚然,这些图像在大多数情况下不必考虑船舶本身,并且具有不同的噪声和图像约束考虑因素,但您可能只是从他们的解决方案中得到一两个很酷的想法。

例如: 埃尔德胡塞特,克努特。 "用于沿海地区星载 SAR 图像的船舶和船舶尾流自动检测系统。