Frage

Ich habe 3 EQNs und 2 Unbekannte HB und HBO2, sie sehen so aus:

BXY = AB * HB + AB * HBO2

Rxy = ar * hb + ar * hbo2

Gxy = ag * hb + ag * hbo2

Jetzt habe ich versucht, eine Matrixmethode zu verwenden, um die Unbekannten für sie Gleichungen zu lösen. Dies ist ein Schmerz in der Arsch, wenn ich sie in Matrixform umwandle. Ich erhalte eine unregelmäßige Matrix, da es 2 Unbekannte und 3 Gleichungen ist.

Weiß jemand hier, wie man n Anzahl von Gleichungen mit N-1-Unbekannten löst?

BEARBEITEN

Vielen Dank für die bisherigen Antworten, sie waren großartig.

Um dies klarer zu machen, versuche ich, die Konzentration an sauerstoffhaltigem und deoxygeniertem Blut an einem bestimmten Pixel in einem Bild zu erarbeiten. Die obigen Variablen entsprechen also den folgenden.

RXY GXY und BXY, rotes Grün oder Blau an Position x, y absorbiert. (Wert zwischen 0 - 255)

AR, Ag, AB ist der Absorptionskoeffizient von Licht für rote Geen und blaue Wellenlängen für Blut. (Es besteht jedoch die Möglichkeit, dass ich möglicherweise verschiedene Absorptionskoeffizienten für sauerstoffhaltige und deoxygenierte Blute definieren muss (da sie unterschiedliche Lichtmengen absorbieren)).

HB und HBO2 ist die Konzentration an sauerstoffhaltigem und desoxygeniertem Blut. (Diese sind unbekannt, da ich versuche, die RGB -Werte darauf abzubilden.)

Ich habe jedoch auch festgestellt, dass die Koeffizienten für sauerstoffhaltiges und desoxygeniertes Blut unterschiedlich sind. Dies bedeutet, dass die Gleichung möglicherweise die folgende sein könnte.

Bxy = (abhb * hb) + (abhbo2 * HBO2)

Rxy = (arhb * hb) + (arhbo2 * HBO2)

Gxy = (aghb * hb) + (Aghbo2 * HBO2)

Der einzige Unterschied im obigen ist, dass die Koeffizienten für sauerstoffhaltige und desoxygenierte Bluts unterschiedlich sind.

Dies alles ist Teil meines letzten Jahres an der UNI für Informatik und versucht, eine funktionale Bildgebung zu machen.

@Chris gilt das gleiche, wenn es unterschiedliche Koeffizienten gibt. Entschuldigung für mangelnde Verständnis. Mathematik ist nicht mein stärkster Punkt. Ich versuche nur, diesen Algorithmus zu programmieren.

War es hilfreich?

Lösung

Was Sie wahrscheinlich wollen, ist das, was man genannt wird Lösung mit der kleinsten Quadrate (siehe Abschnitt zum allgemeinen Problem). Zusammenfassend ist eine genaue Lösung nicht garantiert, abhängig von Ihrem A und b Wenn Sie versuchen zu lösen A*x=b hier.

Durch Berechnen jedoch xLS = inv(A'*A)*A'*b Sie erhalten etwas, das einer Lösung so nah wie möglich ist (im Sinne der geringsten Quadrate). Beachten Sie, dass A' bedeutet die Transponierung von A. Beachten Sie auch, wenn A'*A ist nicht invertierbar, dann ist Ihr Gleichungssystem ein Rangmangel (dh Sie haben effektiv weniger Gleichungen als Sie denken.)

Wenn Sie haben:

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

Dann:

 A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];

Andere Tipps

Wenn Sie N-Gleichungen und N-1-Unbekannte haben, bedeutet dies, dass Sie eine der Gleichungen beseitigen können. Sie ist irrelevant und von den anderen beiden abhängig. Finden Sie heraus

Unter der Annahme, dass es eine Lösung für alle drei Gleichungen gibt, kann sie nur durch die Lösung von zwei von ihnen gefunden werden, um die beiden Unbekannten zu erhalten.

In diesem Fall scheint es, dass alle Ihre Gleichungen mehr oder weniger gleich sind, abgesehen von den Koeffizienten, sodass ich nicht denke, welche der drei, die Sie ausschließen möchten. Sie können einfach die GXY -Gleichung fallen lassen und mit dem 2x2 -Paar von: enden:

BXY = AB * HB + AB * HBO2

Rxy = ar * hb + ar * hbo2

was zur Matrix führt

Ab ab

Ar ar ar

Die Epxression HB+Hbo2 ist in allen 3 Gleichungen gleich und kann durch ersetzt werden durch z=HB+Hbo2 die drei Gleichungen machen

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

Um für z zu lösen, mach eine mindestens Quadrate, die es zu finden ist

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

und der Fehler für jede Komponente als

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

Das ist alles, was Sie tun können. Irgendwie musst du entscheiden, wie man sich trennst z hinein HB und Hbo2. In der Problemanweisung finden Sie keine Informationen dazu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top