@Zashamee

Как написать свой матричный фильтр (например размытие по Гауссу)?

Итак, решил я написать матричный фильтр. Как я понял, что нужно взять две матрицы - одна со значениями, другая с коэффициентами , ну и произвести расчет.
В общем вопрос в том, как произвести расчет со значениями пикселей в матрице? Меня смущают форматы значений причем все - RGB, HEX, CMYK. Совершенно не понимаю как с ними работать. Во всех статьях берутся какие то не понятные значения пикселей (если можно расскажите мне, что это за значения - фото прилагается). Заранее спасибо.

654e8b408d435808425409.png

Ссылка откуда я взял картинку https://habr.com/ru/articles/142818/
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 3
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Рекомендую книжку https://www.litres.ru/book/rafael-s-gonsales/cifro...
Ответ написан
Комментировать
@My1Name
Меня смущают форматы значений причем все - RGB, HEX, CMYK.

Что именно? У всех цветных изображений, исходные значения RGB (от 0 до 255). Это три цвета: R - красный, G - зелёный и B- синий. Их смешивание даёт разные оттенки и значение пикселя. На этой основе строятся другие цветовые карты, такие как CMYK, где чёрный и белый - ноль и 255 для всех трёх цветов соответственно.

вопрос в том, как произвести расчет со значениями пикселей в матрице?

Берёте матрицу n×n (в данном случае показана матрица 3×3) и усредняете значение смежных пикселей.

Для простоты понимания, можно взять пример преобразования цветного изображения в черно-белое; выводится сумма трёх цветов (RGB × коэффициент) в одном пикселе:
result = 0.2126*r + 0.7152*g + 0.0722*b
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Фильтр Гаусса ничего не знает о цвете. Он просто применяется к матрице вещесвтенных чисел.
Поэтому обычно картинку в формате RGB переводят в трех-слойную вещественную матрицу { double, double, double }
и фильтр Гаусса применяют трижды для каждого слоя. И результат потом снова сводят в RGB.

Есть миллиард хитростей как делать это в целых или в вещественных числах или как использовать SIMD, Parallel
computing e.t.c. но ты сделай сначала самый простой и работающий вариант а потом уже оптимизация.

С оптимизацией неизбежно сталкиваются все новички на цифровых фильтрах. Потому-что без нее фильры
работают на порядки медленнее чем в Photoshop например.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы