Comments 4
Вроде фильтры совсем базовые и простые но есть одно замечание и один совет.
Замечание - gamma у вас работает неправильно. В нем граничные значения динамического диапазона [0, 255] (или [0.0, 1.0], если удобно) должны переходить сами в себя. Поэтому лучше сначала отнормировать значение яркости к [0.0, 1.0], а потом уже возводит в степень, затем обратно.
Совет - так как фильтры точечные и каждый канал обрабатывается независимо, лучше считать их в таблице для всех значений динамического диапазона, [0, 255] например, и уже потом брать оттуда. Во-первых, это сделает скорость любого фильтра независимой от размера изображения и от сложности самого фильтра. Во-вторых, можно применять сразу несколько фильтров к таблице, а потом обсчитывать уже каналы изображения по ней. Это еще увеличит скорость обработки.
А что же вы не сказали про скорость обработки? Про требования к памяти? Возьмите картинку с мобильного телефона (сколько там сейчас мегапикселей? 12-16?) замерьте скорость обработки и сколько памяти откушало, дополните статью.
Выбранный вами подход будет крайне не оптимальный. Мало того что вы активно используете питоновские циклы (питон довольно медленный), так вы еще всё складываете в list. Может стоит посмотреть в сторону NumPy?
Точечные фильтры: алгоритмы и их реализация