我需要通过将输入图像中的每个像素映射到输出图像上的位置来传输图像。
例如,输入图像上的点 (xi,yi) 应映射到点 (xo,yo)。为了在输出图像上找到点的位置,我有一个查找表。
在 C/C++ 中很容易做到,但速度很慢。有什么方法可以使用 OpenGL 着色器来实现它,从而控制目标系统上 GPU 的速度增加吗?
如果我不能使用 opengl,如何加快这个过程?
编辑 1
模拟示例 c/c++ 代码:
class Point
{
int x;
int y;
}
Point LUT[w,h]; // would hold LUT
void Transform(image in,image out)
{
for(int x=0;x<w;x++)
{
for(int y=0;y<h;y++)
{
color pixelColor=in.GetPixelColor(x,y);
out.PutPixelColor(LUT[x,y].x,LUT[x,y].y),pixelColor);
}
}
}
void main()
{
image in,out;
ReadLUT(LUT); // read LUT from file and fill LUT table
ReadImage(in); // read input image.
Transform(in,out); // transform image based on LUT
SaveImage(out); // write output image
}