質問

私は3つのEQNと2つの未知数HBとHBO2を持っています、それらは次のように見えます:

bxy = ab * hb + ab * hbo2

rxy = ar * hb + ar * hbo2

gxy = ag * hb + ag * hbo2

今、私はそれらの方程式の未知のものを解くためにマトリックス法を使用しようとしています。これは、マトリックス形式に変換するときの原因の痛みです。これは、2つの未知の方程式と3つの方程式であるため、不規則なマトリックスを取得します。

ここにいる人は、n-1不明の方程式数を解く方法を知っていますか?

編集

これまでの回答をありがとう、それらは素晴らしかったです。

これをより明確にするために、私がやろうとしていることは、画像の特定のピクセルでの酸素化および脱酸素化された血液の濃度を解決することです。したがって、上記の変数は次のものに対応しています。

rxy gxyおよびbxy、位置xで吸収された赤い緑または青。 (0〜255の間)

AR、Ag、ABは、赤いジーンの光の吸収係数と血液の青色波長です。 (ただし、酸素化および脱酸素化された血液の異なる吸収係数を定義する必要がある可能性があります(異なる量の光を吸収するため))。

HbとHbo2は、酸素化および脱酸素化された血液の濃度です。 (RGB値をこれにマッピングしようとしているため、これらは不明です)

しかし、私はまた、酸素化および脱酸素化された血液の係数が異なることに気づいたので、これは方程式が以下になる可能性があることを意味します。

bxy =(abhb * hb) +(abhbo2 * hbo2)

rxy =(arhb * hb) +(arhbo2 * hbo2)

gxy =(aghb * hb) +(aghbo2 * hbo2)

上記の唯一の違いは、酸素化および脱酸素化された血液の係数が異なることです。

これはすべて、コンピューターサイエンスのためのUNIでの私の最終年度プロジェクトの一部であり、いくつかの機能的なイメージングをしようとしています。

@Chrisは、異なる係数がある場合に同じ適用を行います。理解不足で申し訳ありません。数学は私の最強のポイントではありません。このアルゴリズムをプログラムしようとするだけです。

役に立ちましたか?

解決

あなたがおそらく望むのは、それと呼ばれるものです 最小二乗ソリューション(一般的な問題に関するセクションを参照). 。要約すると、あなたはあなたに応じて正確な解決策を保証されません Ab あなたが解決しようとしているとき A*x=b ここ。

ただし、コンピューティングにより xLS = inv(A'*A)*A'*b (最小二乗の意味で)解決策にできるだけ近いものを手に入れることができます。ご了承ください A' の転置を意味します A. 。また、IFに注意してください 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];

他のヒント

n方程式とn-1不明がある場合、それは方程式の1つを排除できることを意味します。それは無関係であり、他の2つに依存します。どちらを排除し、代用するのが最も簡単かを把握すると、(n-1)x(n-1)マトリックスが残っています

3つの方程式すべてに解決策があると仮定すると、2つの未知を取得するために2つだけを解くことで見つけることができます。

この場合、すべての方程式は係数を除いてほぼ等しいようであるため、除外することを選択した3つのうちのどれが重要ではないと思います。 GXY方程式をドロップして、2x2ペアのペアになります。

bxy = ab * hb + ab * hbo2

rxy = ar * hb + ar * hbo2

マトリックスになります

ab ab

ar ar

epxression HB+Hbo2 3つの方程式すべてで同じであり、それを置き換えることができます z=HB+Hbo2 3つの方程式を作成します

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

それがあなたができることすべてです。どういうわけか、あなたは分割する方法を決める必要があります z の中へ HBHbo2. 。これに関する情報は問題の声明には示されていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top