Деформация изображения - алгоритм эффекта выпуклости - PullRequest
19 голосов
/ 20 февраля 2011

Можно ли указать на алгоритмы деформации изображения? Специально для эффекта выпуклости?

Ответы [ 2 ]

22 голосов
/ 20 февраля 2011

Посмотри, понял ли я, что ты хочешь.Предположим, что ваши координаты изображения идут от 0 до 1.

Если вы сделаете:

r = Sqrt[(x - .5)^2 + (y - .5)^2]
a = ArcTan[x - .5, y - .5]
rn = r^2.5/.5 

, а затем переназначите ваши пиксели в соответствии с:

  x -> rn*Cos[a] + .5 
  y -> rn*Sin[a] + .5  

Вы получите:

enter image description here

Вы можете настроить параметры для увеличения или уменьшения выпуклостей.

Редактировать

Давайте посмотрим, понял ли я ваш комментарий о деформации.Следующие изображения генерируются с использованием

rn = r^k {k: 1 ... 2}: 

enter image description here

14 голосов
/ 20 февраля 2011

Версия кода GLSL:

uniform sampler2D tex;

void main()
{
 vec2 cen = vec2(0.5,0.5) - gl_TexCoord[0].xy;
 vec2 mcen = - // delete minus for implosion effect
      0.07*log(length(cen))*normalize(cen);
 gl_FragColor = texture2D(tex, gl_TexCoord[0].xy+mcen);
}

оригинал:

enter image description here

взрыв:

enter image description here

имплозия:

enter image description here

ура!

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