Я думаю, что все, что вы можете сделать, это измерить каждый пиксель на изображении и взять среднее значение. Если это слишком медленно для ваших целей, то я бы посоветовал взять равномерно распределенную выборку пикселей и использовать ее для вычисления среднего значения. Вы также можете ограничить пиксели областью, в которой вам нужно нарисовать текст.
Вы можете загрузить изображение как растровое изображение (http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx)) и использовать метод GetPixel для фактического получения значений цвета.
Как вы оцениваете яркость, зависит только от вас. Я хотел бы предложить более простой подход (скажем, просто принимая наивысшее значение цвета), на самом деле может быть лучше, поскольку некоторые пользователи будут воспринимать цвет иначе, чем человеческая норма (дальтонизм и т. Д.)