Da weiß hat wahrscheinlich einen höheren Wert (in jedem Kanal vielleicht? Ich weiß nicht, wie das Format der Daten ist). Sie erhalten negative Werte, die dann auf 0 (schwarz) abgeschnitten werden. Sehen Sie, wie Ihr Hemd grün ist, während Sie das Rot davon abziehen (Brett im Hintergrund).
Sie müssen den Hintergrund maskieren, indem Sie überprüfen, was sich geändert hat, und dann alles entfernen, das nicht geändert wurde.
vielleicht so etwas wie
diff =y-back
if (element of diff unequal 0) then set element to 1
noback = diff .* y
ein kleines Beispiel, das ich schrieb:
back = rand(4)
y = back
y(5) = 0.6 %put something in front of the background
y(7) = 0.7 %put something in front of the background
mask = zeros(4)
mask(find(y-back)) = 1 %set values that are different in y to 1
noback = mask.*y %elementwise multiplication to mask out the background
Sie müssen für die Maske etwas anderes als finden, benutzen können, weil das Bild nicht zu 100% sein wird, die gleiche , aber dies sollte den allgemeinen Ansatz zeigen.
Bitte geben Sie die Originalbilder an, damit wir Ihnen helfen können. Sie führen auch keine Hintergrundsubtraktion korrekt durch. Dies erfordert eine Maske, die angibt, was anders ist als der Referenzrahmen, und Indizierung in den neuen Rahmen, um die Pixel, die unterschiedlich sind, herauszuziehen. – rayryeng