Как стать автором
Обновить

Комментарии 11

Я ожидал увидеть матан и конформные отображения
Проблема в том, что в реальности сдвиг идет не на пол пикселя, и не в одном направлении. Ну и бета кадры сбрасывают накопления артефактов.
Я на протяжении всей статьи ожидал, когда же свершится прорыв. А автор просто чуть изменил коэффициенты под свои требования, сохранив принцип. Вполне очевидно, что у других фильтров коэффициенты направлены на другую задачу, возможно там достаточно удержать качество на несколько десятков кадров, и все, но при этом не терять в резкости.
Проблема нехватки памяти для хранения предпоследнего кадра немного надумана. Можно ведь хранить только отличия сдвинутого изображения от оригинала, и только в тех участках где они незначительные — а это совсем другие объемы.

Интересно связано ли это как-то с 60fps everywhere

Вот это вот очень похоже на то, что получается в результате многократного пережатия картинки программным обеспечением социальных сетей. Да-да, те самые мемы из «Одноклассников».
и похоже, что после первых нескольких сотен наложений он дальше не деградирует
Так как по итогу всё возвращается в один базовый мем :)
Материал может помочь тем, кто пилит всякие дешейкеры для VirtualDub-a и Avisynth-a.
Комментарий теоретика: фильтр обычный, с постоянным накоплением ошибки и бесконечным размытием. Вот только ошибки округления после двух применений фильтра возвращают изображение в «равновесное» состояние. Если работать с большей разрядностью, чем 8 бит, то это свойство сломается и надо будет придумывать другой фильтр.

Вообще, линейные фильтры конечной размерности, в принципе, не могут асимптотически к чему-то сходиться (за исключением тривиального случая однородного цвета). Только нелинейные фильтры (в данном случае нелинейностью выступает процесс округления) могут иметь такое свойство.

Ну и совет, как делать такие фильтры без ручного применения фильтра 100500 раз. Берем какой-нибудь рисовальщик графиков, строим в нем Фурье разложение ядра фильтра (в данном случае [19cos(x) − 4cos(3x) + cos(5x)] / 16) и подгоняем коэффициенты, во-первых, чтобы график был как можно ближе к единице (это даст точность), и, во-вторых, чтобы никогда не превышал единицу (это даст размытие вместо увеличения резкости).

Но, на практике, я думаю, что точность фильтра намного важнее этого сомнительного «асимптотического» свойства. В реальности идеальные условия применения никогда не будут реализовываться и куда там заведет ошибка округления, никому не известно. Еще можно попробовать ввести в фильтр явную нелинейность, а не надеяться на округление.
Есть такая вещь: теорема Котельникова (она же теорема Найквиста-Шенона, ставлю ссылку на английскую вики потому что в русской препаршивейшее определение) о дискретизации сигнала. Из которой следует что любой дискретный сигнал можно сделать непрерывным. Конечно же, в предположении что у вас отсутствуют частоты выше половины частоты дискретизации, что на языке изображений значит что у вас отутствуют резкие смены пикселей из яркого в темный. Ядро в этм случае будет $sinc(\pi*(1/2+i))$, я длина ядра, к сожалению, равно длине сигнала. В этом случае наиболее эффективно считать свертку путем прямого и обратного преобразований фурье. Для двумерных изображений можно использовать 2д преобразование фурье. При повышении разрядности используемых чисел можно достичь сколь угодно малых погрешностей и сколь угодно долгого времени стабильности изображения.
Если он не деградирует дальше определенного порога, то, может быть, есть возможность восстановить исходное изображение?
Если не читать текст, а смотреть только лишь на картинки, можно почувствовать небольшую тревогу, особенно если сконцентрировать на одном глазу этого моржа.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории