@SergeySerge11

Как сделать размытие по гауссу изображения. Что на вход то поступает?

6717136818f2166eba2db0cfc915d732add9c64f
https://wikiaro.ru/wiki/Gaussian_blur#:~:text=%D0%...
Где в этом уравнение передается информация про цвет или яркость, пикселя? Что за х,y если номер пикселя, то зачем, какой смысл, если цвет не передается?
И все схожие связаное с преобразованиями фурье. А что поступает то на вход??? Везде во всех статьях, на вход уже что-то непонятное.
Вот пример 9 пикселей изображения
0 5 0
5 1 5
0 5 0
Что с ними происходит? Есть хоть один пример подробный.
Потом преобразования фурье. Подразумевается что у меня есть F(x) какая-то. C которой на примерах в линейной алгебре что-то умею делать. А где ее взять то для пикселей изображения?
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
На хабре есть статья посмотри https://habr.com/ru/post/142818/

Ты всё в кучу смешал. При чем тут Фурье? Это совсем другое преобразование и смысл его другой.

Где в этом уравнение передается информация про цвет или яркость, пикселя?

Никакая яркость пикселя тебе не нужна. Фильтр применяется последовательно к каждому цветовому каналу отдельно. RGB, CMY рассматриваются как 3д поверхности где высота поверхности равна значению канала.
Все вычисления лучше нормировать к диапазону вещественных чисел от 0 до 1 а когда все расчеты закончены - обратно приводить к RGB(8:8:8) например.

В компьютерной графике есть понятие матричных фильтров. Это - самые простые фильтры в смысле ресурсов. И самые общие. Потому что любой фильтр отличается просто размером матрицы и коеффициентами.

Конвейер такой.
1) Определяешь размер матрицы (допустим 15 на 15)
2) Инициализируешь матрицу по любой формуле. Например если все закрасить константой - то будет блур но не красивый с квадратрыми облаками в результате на картинке. Для гаусса - берешь эту формулу и подгоняешь чтобы в центре матрицы был максимум. Матрциа должна быть нормирована так чтобы в сумме не менять энергию всех пикселов которые попадают в квадрат 15 на 15. Подумай сам над этим. Гаусс также параметризуется средним квадратическим отклонением. Это скорее всего параметр сигма в формуле. Чем оно больше - тем размытее картинка. Но делать сигму больше чем 7.5 нет смысла при таком размере.

2) Матрица применяется к каждому цветовому каналу изображения по принципу перемножисть каждое на каждое и сложить. Пиксели перемножаются на матрицу. Результат всего записывается в центральный пиксель. И так далее.

3) На краях изображения будет баг. Потому что матрица вылезает за края. Картинки. Ты должен придумать как красить несуществующие пиксели. Можно красить в какой-то средний близкий цвет по расстоянию.

4) Обычно матричный фильтр работает медленно. Есть оптимизации на низком уровне. В основном - перписывание на длинных командах типа SSE/AVX. И разбиение картинки на полоски с предварительным расчетом умножений. Но это работет для малых матриц. И надо учитывать влияние и размер кешей. Тоесть цифры которые будут получены на 1 конфигурации железа могут сильно отличатсья от другой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы