使用查找表进行OpenGL图像变形

sed*_*tli 6 opengl-es image-processing glsl lookup-tables

我正在开发一款Android应用程序,通过检测它来瘦脸或变胖.目前,我已经通过使用薄板样条算法实现了这一点. http://ipwithopencv.blogspot.com.tr/2010/01/thin-plate-spline-example.html

问题是算法对我来说不够快,所以我决定将它改为OpenGL.经过一些研究,我发现查找表纹理是最好的选择.我有一组源图像控制点和它们的新位置用于扭曲效果.我应该如何创建查找表纹理以获得扭曲效果?

hid*_*kgb 2

您真的确定需要查找纹理吗?

\n\n

似乎如果你有一个带纹理的矩形网格(或者当然是非矩形网格,因为你的面部检测算法很可能返回一个类似面部的网格)并根据算法扭曲它,那就更好了:

\n\n

在此输入图像描述

\n\n

您不仅可以在顶点着色器中执行此操作,从而并行处理每个网格节点,而且与动态纹理生成相比,需要处理的值更少。

\n\n

实现这一目标的最兼容的方法是为每个网格点提供一个 0 的 Y 坐标和存储网格索引的 X 坐标,然后将纹理(如果目标设备支持,甚至可以是缓冲区纹理)传递给顶点着色器,其中在所需索引处,R 和 G 通道包含所需的 X 和 Y 坐标。

\n\n

在顶点着色器内部,将从纹理加载坐标。

\n\n

如果目标数据纹理在像素着色器内正确更新 \xe2\x80\x94,则此方法允许动态变形而无需重新加载几何体。

\n