图像扭曲-凸起效果算法

19

有没有人能指出图像变形算法?具体来说,是关于凸起效果的。


你能帮我解决这个问题吗? https://stackoverflow.com/questions/70683954/how-can-i-do-image-warp - YoungDev
2个回答

24

看起来你想要什么。假设您的图像坐标从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}: 

输入图像描述


4
你不必深入学习三角函数。Cos[a] = (x - 0.5)/rSin[a] = (y - 0.5)/r。这两个公式即可。 - Markus Jarderot
请查看此链接中的算法 - http://davis.wpi.edu/~matt/courses/morph/2d.htm 我们能否为膨胀效果设计类似的算法? - random
谢谢belisarius。现在我需要通过将网格添加到Android中的Sprite并将变形应用于它来实现它。我们有一个叫做andEngine的库可以利用。我已经创建了另一个线程来进一步进行:http://stackoverflow.com/questions/5078240/image-transformation-using-sprite - random
@belisarius,你能帮我检测图像中的物体形状吗? - Ajay Sharma
可能是。发一个问题,然后再@我 :) - Dr. belisarius
显示剩余5条评论

14

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);
}

原始图像:

输入图像描述

爆炸:

输入图像描述

内爆:

输入图像描述

干杯!


如何在Android中使用位图(bitmap)? - AAnkit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接