我问了一个关于 Bi 线性变换的问题并得到了这个答案:
在您发布的那个页面上,有一个指向源代码的链接。我将解释双线性变换
http://www.antigrain.com/__code/include/agg_trans_bilinear.h.html
这里的想法是找到形式的转换:
output_x = a * input_x + b * input_x * input_y + c * input_y + d
output_y = e * input_x + f * input_x * input_y + g * input_y + h
术语“双线性”来自这些方程中的每一个,它们本身在任一输入坐标中都是线性的。我们要求解 a、b、c 和 d 的正确值。假设您有要映射到 (0,0)、(1,0)、(0,1)、(1,1) (或某些图像坐标系)的参考矩形 r1、r2、r3、r4。
对于 a、b、c、d:
0 = a * r1_x + b * r1_x * r1_y + c * r1_y + d
1 = a * r2_x + b * r2_x * r2_y + c * r2_y + d
0 = a * r3_x + b * r3_x * r3_y + c * r3_y + d
1 = a * r4_x + b * r4_x * r4_y + c * r4_y + d
对于 e,f,g,h:
0 = e * r1_x + f * r1_x * r1_y + g * r1_y + h
0 = e * r2_x + f * r2_x * r2_y + g * r2_y + h
1 = e * r3_x + f * r3_x * r3_y + g * r3_y + h
1 = e * r4_x + f * r4_x * r4_y + g * r4_y + h
你可以用你最喜欢的方式解决这个问题。(如果你熟悉矩阵符号,这是两个矩阵相同的矩阵方程,然后你只需要找到一次LU分解,并求解两个未知向量)。然后应用系数将矩形的内部映射到矩形中的位置。
问题是,我有 input_x 和 input_y 以及 r1、r2、r3、r4,但我不确定如何实现 output_x 和 output_y。我该如何求解这样的方程?我只熟悉用 2 个变量求解方程。
谢谢