растровая маска (плавающее окно)
От: free.rFczZZ  
Дата: 22.07.10 03:34
Оценка: 3 (1)
Не могу понять, как должен работать фильтр на границе изображения, поскольку здесь не хватает влияющих пикселей..

Именно в общем смысле, ведь в некоторых графических приложениях маску можно вводить вручную, при этом метод обработки границ нигде не указывается..

Приходят следующие идеи:
  1. Не учитывать недостающие пиксели (тоже — считать их черными).
  2. Не учитывать границу.
  3. Распространять граничные точки на неизвестные области.
  4. Брать симметричную точку с противоположной границы..
  5. Преобразовывать маску. Например, занулять коэф. окна, выходящие за границу (тоже что и первый вариант), но при этом выполнять нормализацию (по сути умножать на k1/k2, где k1 — сумма коэф. исходной маски, k2 — новой).

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

Что мне не нравится здесь? Ну вообще говоря хочется какой-то математической точности. К примеру вариант 1, для Гауссова фильтра сделает белую картинку (за несколько проходов) серой, что имхо неверно по логике. 4 сложен для окон с большим радиусом по сравнению с размерами изображения. Или же то что работает верно для маски Гаусса, будет неверно работать для такой:
000
100
000, где, по идее, должна появляться черная полоска слева (хотя не факт, здесь не известно.. )

Вообще говоря, мне нужно применить ряд конкретных фильтров, в моей задаче я могу подобрать приемлемый алгоритм. Но чювство эстетики и потребность к универсальному коду не дают мне покоя..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.