0

我有 3 个 eqns 和 2 个未知数 Hb 和 Hbo2,它们看起来像这样:

Bxy = AB * HB + AB * Hbo2

Rxy = AR * HB + AR * Hbo2

Gxy = AG * HB + AG * Hbo2

现在我一直在尝试使用矩阵方法来解决他们方程的未知数,这是一个痛苦的原因,当我将它转换为矩阵形式时,我得到一个不规则矩阵,因为它是 2 个未知数和 3 个方程。

这里有没有人知道如何用 n-1 个未知数求解 n 个方程。

编辑

感谢到目前为止的回复,他们一直很棒。

为了更清楚地说明这一点,我要做的是计算图像中给定像素处含氧和脱氧血液的浓度。所以上面的变量对应如下。

Rxy Gxy 和 Bxy,红色绿色或蓝色在 x,y 位置吸收。(0 - 255 之间的值)

AR、AG、AB 是血液对红色和蓝色波长的光的吸收系数。(但是有可能我可能必须为含氧和脱氧血液定义不同的吸收系数(因为它们吸收不同量的光))。

Hb 和 Hbo2 是含氧和脱氧血液的浓度。(这些是未知的,因为我正在尝试将 RGB 值映射到此)

但是我也注意到含氧和脱氧血液的系数不同,因此这意味着方程式可能如下。

Bxy = (ABhb * HB) + (ABhbo2 * Hbo2)

Rxy = (ARhb * HB) + (ARhbo2 * Hbo2)

Gxy = (AGhb * HB) + (AGhbo2 * Hbo2)

上述唯一的区别是含氧和脱氧血液的系数不同。

这是我在 uni for Computer Science 的最后一年项目的一部分,试图做一些功能成像。

如果系数不同,@Chris 也同样适用,抱歉理解不足,数学不是我的强项。只是试图编程这个算法。

4

3 回答 3

2

您可能想要的是所谓的最小二乘解决方案(请参阅有关一般问题的部分)。总而言之,根据您Ab您尝试在A*x=b这里解决的时间,不能保证您得到准确的解决方案。

但是,通过计算,xLS = inv(A'*A)*A'*b您将得到尽可能接近解决方案的东西(在最小二乘意义上)。请注意,这A'意味着 的转置A。另请注意,如果A'*A不可逆,那么您的方程组是秩不足的(这意味着您实际上拥有的方程比您想象的要少。)

如果你有:

 Bxy = (ABhb * HB) + (ABhbo2 * Hbo2)
 Rxy = (ARhb * HB) + (ARhbo2 * Hbo2)
 Gxy = (AGhb * HB) + (AGhbo2 * Hbo2)

然后:

 A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];
于 2011-10-19T19:36:27.110 回答
1

如果你有 n 个方程和 n-1 个未知数,这意味着你可以消除其中一个方程,它是无关紧要的,并且取决于另外两个。找出哪个最容易消除、替换,然后剩下一个 (n-1)x(n-1) 矩阵

假设所有三个方程都有一个解,也就是说,只需解其中两个方程即可得到两个未知数。

在这种情况下,除了系数之外,您的所有方程式似乎都或多或少相等,所以我认为您选择排除三个中的哪一个并不重要。您可以简单地删除 Gxy 方程并最终得到 2x2 对:

Bxy = AB * HB + AB * Hbo2

Rxy = AR * HB + AR * Hbo2

导致矩阵

[AB AB]

[增强现实]

于 2011-10-19T19:27:29.150 回答
1

三个方程的表达式HB+Hbo2相同,可以通过z=HB+Hbo2制作三个方程来代替

B = AB*z
R = AR*z
G = AG*z

为了解决 z 做最小二乘拟合找到

z = HB + Hbo2 = (AB*B+AG*G+AR*R)/(AB*AB+AG*AG+AR*AR)

每个组件的误差为

dB = B - AB*z
dR = R - AR*z
dG = G - AG*z

这就是你所能做的。不知何故,您必须决定如何拆分zHBHbo2。问题陈述中没有提供有关这方面的信息。

于 2011-10-19T21:06:54.013 回答