Я предполагаю, что вы используете изображения со спутника Google Maps, иначе вы не написали бы о кораблях или других артефактах.
Как вы уже сказали, было бы неплохо просто попытаться извлечьсиняя часть изображения.Просто смотреть на синий канал изображения RGB не сработает (я только что попробовал), поскольку лес и т. Д. Не дадут хорошего порогового значения для воды.
Так что вы можетепопробуйте преобразовать изображение в цветовое пространство YCbCr и взгляните на там каналы цветности.
Это пример, который я только что сделал со скриншотом из карт Google.Я преобразовал его в YCbCr в Matlab и просто взял канал Cb.
Затем вы можете преобразовать изображение в двоичную форму с хорошо установленным порогом,что не должно быть слишком сложно найти.Вероятно, у вас все еще будут небольшие артефакты, для которых вы могли бы использовать морфологические операторы (открытие изображения несколько раз).Это должно удалить небольшие артефакты и оставить части, которые являются землей, и части, которые являются водой.
Надеюсь, это поможет ... если нет, пожалуйста, продолжайте спрашивать ...
РЕДАКТИРОВАТЬ
Я только что попробовал еще раз с другим снимком экрана в matlab:
- Преобразование изображения в цветовое пространство YCbCr
- Просто взгляните на канал Cb
- найти порог на изображении Cb либо фиксированным, либо с помощью метода Оцу, который находит соответствующий порог в двудольной гистограмме
- выполняет открытие или другие фильтры для устранения небольших шумов
исходное изображение, которое я сделал:
После применения порога к изображению Cb:
После применения отверстия (5) к изображению
Я просто выбрал порог вручную ... Вы можете получить лучшие результаты, посмотрев, какой порог будет работать лучше ... Но, как вы видите, это также должно работать на разных цветах воды из рек иокеан.