Подтвердить что ты не робот

Image Warping - Алгоритм эффекта ударной волны

Может ли какой-нибудь алгоритм деформирования изображения? В частности, для эффекта выпуклости?

4b9b3361

Ответ 1

Посмотрите, понял ли я, что вы хотите. Предположим, что ваши координаты изображения идут от 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  

Вы получаете:

введите описание изображения здесь

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

Изменить

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

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

введите описание изображения здесь

Ответ 2

Версия кода 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

ура!