Search code examples
c++opencvimage-processingsegmentopencv3.0

How to remove ship wake in image by using opencv?


I want to use color to detect a white ship.When the ship speed is low ,i can get a good result.But when the speed is high,i can't.Because the ship wake is white,too.I try to use erode and dilate method to remove ship wake,but the result is not good.How can i remove the ship wake.enter image description here you can see the pic as follow,the wake is white,so is difficult to segment ship and wake.Can you help me and show your idea to me.Thanks in advance!!


Solution

  • I would be more intent on using the fact that wakes are much more linear than the ship. Or even that the ship is "at the other end of the wake".

    A first rough pass of HSV thresholding to get all the "white-ish area", including ship and wake, then try something for identifying and then discarding the lines.

    Linear Hough transform could help, provided you can convert your thresholded image into plausible edges, which will need some morphological tweaking.

    From there you could virtually draw the wake's line, and half your job is done. The specific border of wake-to-ship will be a tougher problem involving edge detection, but if you only care about that, I think your problem is mostly solved ! :p


    Interestingly enough, it's a common enough problem in satellite radar images see my quick Google scholar search. Granted, these images don't have to take into account the ship itself most of the time, and have different noise and image constraint considerations, but you might just get a cool idea or two from their solutions.

    For instance : Eldhuset, Knut. "An automatic ship and ship wake detection system for spaceborne SAR images in coastal regions.