Ich habe ein kleines Projekt über Bewegliche Objekterkennung in beweglichen Kameras, in denen ich negativen optischen Flussvektor verwenden muss, um Ich-Bewegungskompensation zu minimieren. Ich habe ein Video und einige bestimmte aufeinanderfolgende Frames, in denen der Durchschnitt des negativen optischen Flussvektors berechnet werden muss. Ich habe bereits den optischen Fluss zwischen sagen, (k-1) th und kth Rahmen berechnet. Außerdem habe ich den Durchschnitt des optischen Flussvektors V = [u, v] berechnet, wobei v der Durchschnitt der horizontalen optischen Strömung und u der Durchschnitt der vertikalen Strömung ist. Nun muss ich das Inverse des optischen Flussvektors, d. H. -V, auf den (k-1) -ten Frame anwenden. Ich bin Matlab neu und ich weiß nicht viel darüber. Bitte helfenWie man den inversen optischen Flussvektor auf ein Bild anwendet?
ich diesen Code Segment versucht haben, dies zu tun, aber die Ergebnisse sind nicht
erwartet
function I1=reverseOF(I,V)
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
[m,n]=size(rgb2gray(I));
for i=1:m
for j=1:n
v1=[j i];
v2=-V;
v3=v1.*v2;
R(floor(1+abs(v3(1,2))),floor(1+abs(v3(1,2))))=R(i,j);
G(floor(1+abs(v3(1,2))),floor(1+abs(v3(1,2))))=G(i,j);
B(floor(1+abs(v3(1,2))),floor(1+abs(v3(1,2))))=B(i,j);
I1(floor(1+abs(v3(1,2))),floor(1+abs(v3(1,2))))=I(i,j);
end
end
I1=cat(3,R,G,B);
enter code here
Ich habe abs() Funktion verwendet, da sonst ein Fehler war auftreten wie „versucht negativ zuzugreifen Ort; Index muss positiv oder logisch sein ".
Bild A und Bild B sind die Bilder, die ich verwendet habe, um den optischen Fluss zu schätzen. enter image description here
Dies ist das Ergebnis, das ich nach Anwendung der obigen Funktion erhalte. enter image description here
können Sie erarbeiten mehr, wenn Sie sagen, "nicht wie erwartet"? Können Sie Bilder hinzufügen? Es ist nicht klar, was du mit "invers" meinst. In der Tat machst du die Berechnung "gegenüber" ... – giosans
@Giosans, ich habe die Bilder oben aktualisiert. Und nicht wie erwartet ist, dass ich den Effekt des optischen Flusses in dem (k-1) -ten Bild umkehren muss, um die durch die Kamerabewegung auftretende Ego-Bewegung zu minimieren. –
Sorry @Neeraj, ich weiß nicht, was ist Ego-Bewegung, ich weiß nicht, was ist V (eine Matrix, eine Zahl?!?), Ich weiß nicht, was ReverseOF-Funktion und warum Sie zwei for-Schleifen. Versuchen Sie, über jede Codezeile zu kommentieren und schreiben Sie allgemeine mathematische Ausdrücke anstelle von physikalischen Begriffen [wie Optical Flow], mit denen viele Leute nicht vertraut wären. – giosans