Я предлагаю разделить изображение на отдельные области, каждая из которых имеет размер пространства, необходимого для наложения текста. Рассчитайте некоторую меру визуальной «энергии», например, стандартное отклонение, и выберите регион с наименьшим значением. Вы также можете передвигать окно в поисках произвольного пространства с низкой энергией, но это будет в вычислительном отношении намного дороже.