Думаю, вам нужно будет дать гораздо больше информации, но если дырки небольшие, одним простым решением будет просто заменить нулевые пиксели значениями из медианного фильтра.
Например, используя pyvips :
#!/usr/bin/python3
import sys
import pyvips
image = pyvips.Image.new_from_file(sys.argv[1], access="sequential")
image = (image == 0).ifthenelse(image.median(5), image)
image.write_to_file(sys.argv[2])
Это откроет изображение в последовательном режиме (нам нужно только сделать один проход по изображению, поэтому нам не нужен произвольный доступ к пикселям). Медианный фильтр 5x5 может заполнить отверстия размером до трех пикселей. Вы можете использовать большее окно, чтобы заполнить большие отверстия, но, конечно, оно будет медленнее.
Это должно быть довольно быстро, и оно будет работать на изображениях любого размера, используя только небольшую память.
Вам нужно рассмотреть что-то более сложное, если вам нужно заполнить большие области.