Вступление
Острые края, честно говоря, просто опасны, поэтому, учитывая PNG в качестве входных данных, размыть изображение, используя метод, описанный ниже, и притупить эти проклятые острые края.
метод
Чтобы получить значение RGB каждого пикселя, используйте следующие три уравнения:
Там , где является суммой красных значений каждого из соседних пикселей в квадрате. Значение - это количество соседних пикселей (например, угловой пиксель будет иметь значение равное 3, в то время как пиксель вокруг центра изображения будет иметь значение равное 8).
Смежный пиксель - это пиксель, который находится на расстоянии 1 пиксель от исходного пикселя во всех направлениях (влево, вправо, вверх, вниз и на всех диагоналях).
Например, на следующем изображении 3 x 1:
Размытое значение RGB среднего пикселя будет:
где любые десятичные значения округляются до ближайшей единицы. Вы не должны просто указывать результат.
Следовательно, средний пиксель будет цвета (0, 221, 221) или:
В результате на изображении:
Вы должны повторить этот процесс для каждого пикселя в изображении. (Обратите внимание, что вы делаете это с оригинальными пикселями, а не с измененными пикселями. вы не должны перезаписывать исходное изображение и должны полностью отделять его от нового размытого изображения ).
Если вы рассчитываете, что любое значение больше 255, предположите, что его значение равно 255 (т. Е. Значение 374 будет установлено на 255).
Полученный результат должен быть отдельным PNG-изображением (вы можете назвать это как хотите).
Примеры
супер Марио
Оригинал:
Размытый:
шахматная доска
Оригинал:
Размытый:
чипсы
оригинал
Размытый
Уже не такой четкий
американская готика
Оригинал:
Размытый:
Чтобы увидеть размытие на больших изображениях, лучше всего запустить программу на размытом изображении:
Вызов
Самый короткий код для размытия заданного изображения PNG побеждает.
Вы можете использовать библиотеки обработки изображений (например, PIL), но вы не должны использовать встроенные функции размытия (Mathematica, я смотрю на вас).
Заметка
Как говорит @orlp ниже:
Для записи, (насколько мне известно) это не стандартный метод размытия. Эта задача не является образовательным ресурсом.
источник
n
должен появиться в знаменателе.Ответы:
Python,
354313 байтНе самый лучший, но эй ...
Используя пробел для отступа 1-го уровня, Tab для 2-го уровня, затем Tab + Space и Tab + Tab
math.sqrt()
с помощью()**.5
бета-распадаmin
для зажима (экономя много!) И0
заpass
спасибо Loovjo+=[]
для.append()
сохранения 5 байтовs
для трафаретаисточник
n**0.5
корочеimport math;math.sqrt(n)
? Есть ли причина для последнего?v if v<256 else 255
можно сократить доmin(v,255)
pass
на0
from PIL import Image as I
.MATLAB, 130 байт
Принимает изображение в качестве входных данных и сохраняет выходные данные как
b.png
.источник