1 | initial version |
In a quick analysis, I think that detecting boats and vessels in an open water scenery would be easy using a learn-based detecting algorithm. Since the background is always very similar and with almost no noise, an object like a boat will contrast a lot with the surrounding background, which is the ideal situation for these kind of algorithms.
OpenCV offers implementation of some of these algorithms, such as Viola & Jones work, widely known for being successfully applied to face detection. There are other implementations, such as HOG classification with a SVM (Support Vector Machine) machine-learning algorithm, AdaBoost feature evaluator and others.
Which solution to choose depends on the demands of your problem. Is performance as important as detection accuracy? Is it ok to miss a small percentage of objects? How much false-positives are admissible? etc.
The downside of this approach is that you need to possess a large image database of the objects you want to detect on the background the application is going to be performing on.