Уменьшаете разрешение картинки (несколько раз в 2 раза), и для каждого раза вызываете рекурсивно очередное уменьшение до заранее заданного лимита (чтобы минимально допустимая область вмещала в себя больше одного пиксела, лучше четыре), затем ищете на итоговом изображении белые пикселы (в зависимости от выбора способа усреднения цвета, брать либо чисто белый цвет либо пороговое значение), найденные области (группы пикселов) возвращаете в предыдущую функцию, которая уточняет контур (в том виде какой вам нужен, либо векторном либо пиксельном формате) так же поиском белых пикселов но только в указанных областях, и так далее. К условию добавления пиксела в область можно добавить наличие соседнего белого пиксела, но это имеет смысл только на первом вызове (оригинальное разрешение изображения).
По завершению у вас метод вернет список областей, являющихся белыми.
p.s. если белые области чисто белые и замкнутые (точками другого цвета) то можно используя алгоритм заливки, сделать сканирование изображение вертикальными или горизонтальными линиями (с шагом равным или меньше минимального размера области) и как только находите белое изображение - заливаете его пока цвет белый (заливку производите в своей битовой маске - один на пиксел, т.е. итоговая область пиксельная).
Этот алгоритм значительно шустрее, но работает только с замкнутыми областями и относительно равномерным белым цветом, т.е. если там будут разводы и переходы, будет заметно сложнее)