Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Изображение Лены мы брать не будем — а возьмём что-нибудь мягкое и пушистоеА ещё лучше взять что-нибудь с огромным динамическим диапазоном (HDR), тогда работа фильтров раскроется во всей красе!
Тема раскрыта не полностью.Само собой — об этом сказано прямым текстом в заключении. Сама же статья является tutorial — руководством к конструированию своих собственных фильтров.
Blur не ограничивается матрицами свёртки, при этом, являясь их частным решением.Выражение «матрицами свёртки» некорректно точно так же, как и «матрица сложения» или «число свёртки»; и сама по себе матрица решением чего бы то ни было не является. Свёртка — это математическая операция, в то время как матрица — это данные, упорядоченный набор чисел. В данном случае корректно говорить «ядро свёртки» или хотя бы «матрица фильтра», потому что у нас ещё есть «матрица изображения», которые для операции свёртки совершенно равнозначны.
Так же — фильтр резкости, по-сути является частной реализацией Blur, но не рассмотрен.Фильтр резкости — sharpen — является полной противоположностью размытию и никак не может быть его частной реализацией. Линейный фильтр резкости, как и размытие, как и выделение контуров — хоть и тоже реализуется через свёртку, но это по-прежнему разные типы фильтров.
Более того, сами матрицы свертки суммируются с исходным изображением неправильно.Здесь матрицы не суммируются и не должны суммироваться. Операция свёртки != операция сложения.
Так при наложении фильтра, блендинг выполняется не усреднением исходного значения компонент цветов, а должен выбираться из максимума цветовых компонент буфера-источника и буфера-приемника. Тогда результирующее изображение имеет более «ламповый» и реалистичный вид, избавляясь от пелены (которая, в свою очередь, является погрешностью).Вы сейчас, вероятно, говорите о каком-то другом фильтре, если само прямое назначение фильтра — размытие — называете погрешностью.
В дополнении: фильтр должен применяться не сразу к буферу источнику, а считаться в отдельный буфер-приемник, после чего выполняется «Альфа-блендинг» буферов.Непонятно, откуда вы сделали вывод, что в примерах к статье буфер-приёмник не использовался. Более того — при реализации свёртки через дискретное преобразование Фурье без него вполне можно обойтись и даже — в некоторых случаях эта операция может быть обратимой.
В противном случае, возникает вторая ошибка на этапе применения: данные полученные для текущей строки, учитывают результат предыдущей (уже вычисленной строки).Фильтры с бесконечной импульсной характеристикой (рекурсивные) именно так и работает — и это не является ошибкой. В этой статье они также не рассматривались, но рассматривались, например, здесь.
двумерный вариант Gaussian получен её вращением относительно оси ординат

Ну как минимум если мы хотим чтоб фильтр был изотропным, то есть не зависил от поворота картинки. То есть если мы повернем картинку и применим фильтр, то результат должен быть таким же, как если применить фильтр и потом повернуть результат. Вот и физический смысл. Оттуда же и вращение. Хотя тема вообще намного более глубокая, я так понимаю. Группы вращения, сферические гармоники, вот это все.
С вашей стороны странно опустить такое удобное для вычислений свойство, учитывая что тема статьи — как раз обработка сигналов.Упустил потому, что статья посвящена не фильтру Гаусса — а наоборот, всем прочим, а в терминах обработка сигналов это как раз-таки двумерная свёртка, а не две последовательных одномерных.
И поясните пожалуйста, что такое «физический смысл перехода к двум координатам», как вращение может быть физическим смыслом и причем тут физика, если статья целиком посвящена вычислительной математике.Это тоже издержки мышления. Вращение имеет понятный физический смысл, потому как встречается повсеместно в повседневной жизни. В то время как вращение математически, особенно через перемножение комплексных чисел, не всем очевидно.
Нужно больше разных Blur-ов