Преобразование RGB в HSV с использованием PIL

Я пытаюсь автоматизировать улучшение некоторых изображений, которые должны быть перенесены в цифровой фрейм. У меня есть код, который изменяет размер, добавляет дату / время в наименее значимый (наименее подробный) угол изображения и вставляет вместе пары портретных изображений, чтобы избежать отображения одного портрета на экране с низким разрешением кадра 41:20.

Я реализовал фильтр растяжения яркости для тех изображений, где освещение было не очень хорошим, используя функцию colorsys.rgb_to_hsv для расчета полос H, S, V, работать с V и затем конвертировать обратно в RGB перед сохранением JPEG в цифровом кадре. Очевидно, что преобразование занимает много времени даже с использованием уловок itertools ; Мне удалось улучшить ситуацию с помощью psyco .

Однако я заметил пример для PIL Image.convert , где RGB можно преобразовать в цветовое пространство XYZ используя матрицу 4 × 4 в качестве второго аргумента метода convert , и я задался вопросом:

Как я могу преобразовать RGB в HSV (а затем HSV обратно в RGB), используя пользовательскую матрицу в вызов метода convert ? (Незначительные ошибки округления в этом случае не важны, поэтому я не возражаю, чтобы каждая полоса была выражена как серия из 0… 255 целых чисел)

Заранее благодарю.

8
задан tzot 29 December 2010 в 13:45
поделиться