入力画像の各ピクセルを出力画像の場所にマッピングして、画像を転送する必要があります。
たとえば、入力画像の点 (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
}