Получить средний цвет треугольника, наложенного на растровое изображениеPython

Программы на Python
Anonymous
Получить средний цвет треугольника, наложенного на растровое изображение

Сообщение Anonymous »

Предположим, у меня есть растровое изображение RGB I. Я хочу получить средний цвет нескольких случайных треугольников с вершинами A, B и C. A, B и C гарантированно находятся в пределах изображения I, но не гарантируется быть целочисленными значениями. Как эффективно получить средний цвет области?
Самый простой способ получить точную оценку — получить ограничивающую рамку треугольника, а затем перебрать каждую строку, сохраняя подсчет количества цветных пикселей и общих сумм каждого канала, а затем деление в конце. (Это также дает вам возможность предварительно вычислить суммы отдельных строк, что полезно, если вам нужно вычислить очень большое количество треугольников T.) Однако это наиболее точно для очень больших треугольников; чем меньше треугольники и чем меньше наименьший угол в треугольнике, тем больше проблем мы сталкиваемся с заниженными или завышенными пикселями, которые находятся лишь частично внутри треугольника.
Меньше простой способ — взять ту же самую ограничивающую рамку; затем для каждого пикселя в ограничивающей рамке вычислите площадь каждого пикселя, который также содержится в треугольнике; затем добавьте к промежуточной сумме площадь пикселя и средний цвет, умноженный на площадь пикселя. Однако это непрактично медленно.
Хотя я специально ищу Pythonic-ответы и библиотеки, в которых могут быть способы их реализации, около 90 % этого будет поиск правильного алгоритма, 10 % будет его реализовывать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ver-bitmap

Вернуться в «Python»