Фильтр Liquify / iwarp - PullRequest
       14

Фильтр Liquify / iwarp

5 голосов
/ 25 апреля 2009

Я пытаюсь создать что-то вроде фильтра Liquify в Photoshop. Я читал код искажения изображения, но я пытаюсь выяснить, что создаст подобные эффекты. Самая близкая ссылка, которую я мог найти, была фильтра iWarp в Gimp, но код для этого вообще не комментируется.

Я также смотрел на такие места, как ImageMagick, но у них ничего нет в этой области

Будем весьма благодарны за любые указатели или описание алгоритмов.

Ответы [ 3 ]

0 голосов
/ 10 июня 2014

Я думаю, что разжижение работает путем изменения сетки.
Представьте, что каждый пиксель определяется его расположением на сетке.
Теперь, когда пользователь нажимает на местоположение и перемещает мышь, он меняет местоположение сетки.
Новая сетка снова проецируется в пространство просмотра 2D пользователя.

0 голосов
/ 24 января 2015

Проверьте в этом руководстве о том, как внедрить жидкостный фильтр с помощью Javascript. По сути, в учебнике эффект выполняется путем преобразования декартовых координат пикселя (x, y) в полярные координаты (r, α) и последующего применения Math.sqrt к r.

0 голосов
/ 17 мая 2009

Извините, если я сделаю этот звук немного упрощенным, я не уверен, сколько вы знаете о программировании на gfx или даже о том, какие методы вы используете (я бы сам сделал это с HLSL).

Способ, которым я бы подошел к этой проблеме, состоит в том, чтобы сгенерировать текстуру, которая содержит смещения координат x / y в каналах r / g. Тогда выходной цвет пикселя будет:
Ввод текстуры изображения
Искажение текстурыКарта
color (x, y) = inputImage (x + distortionMap (x, y) .R, y + distortionMap (x, y) .G)
(По правде говоря, это не совсем правильно, использование цветов в качестве смещений напрямую означает, что вы можете представлять только положительные векторы, достаточно просто вычесть 0,5, чтобы можно было представить отрицательные векторы)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...