Волновой алгоритм подходит, самый простой алгоритм можно описать так:
выбрать черную точку, любую, в любой фигуре, любым методом,
создать bitmap\image с размерами равными исходному изображению.
по волновому алгоритму искать все черные точки начиная от той что выбрали,
все черные отрисовывать в созданный bitmap на те же координаты что были в исходном, отрисованные закрашивать нечерным цветом
так со всеми точками по волновому алгоритму пока не закончатся черные
сохранить полученный bitmap
повторить всю процедуру пока в исходной не закончатся черные точки.
по скорости алгоритм не шибко быстрый выйдет, но и не сильно медленный, сек за 5-10 на HD картинку.
волновой алгоритм можно упростить до простейшей рекурсии, на вход координаты первой точки p
void voln(p){
сделать p-белый в исходной
сделать p-черный в созданном bitmap
для каждой черной точки p2 вокруг точки p
voln(p2)
}
на выходе из рекурсии вторая картинка заполнена тем фрагментом, точка которого подавалась на вход в рекурсию