Stabilisieren von Videos von einer sich bewegenden Kamera oder wie man alles in ein festes Koordinatensystem ĂŒbersetzt

Computer Vision (CV) -Funktionen verĂ€ndern jetzt die Marktlandschaft fĂŒr Lösungen fĂŒr die öffentliche Sicherheit vollstĂ€ndig. WĂ€hrend es nicht mehr einfach ist, jemanden mit herkömmlichen VideoĂŒberwachungssystemen zu ĂŒberraschen, und es seltsam ist, sie an keinem öffentlichen Ort zu finden, ist der Einsatz von KI in diesem Bereich immer noch eine Neuheit.



Wir untersuchen die Anwendung des Lebenslaufs auf verschiedene GeschĂ€ftsaufgaben im Bereich der öffentlichen Sicherheit. In diesem Beitrag bieten wir die Möglichkeit, Videos von einer sich bewegenden Kamera zur weiteren Analyse in ein festes Koordinatensystem zu ĂŒbersetzen.



Das gesamte Projekt ist auf GitHub .






Nehmen wir an, wir haben eine Art Video und möchten ein festes Koordinatensystem dafĂŒr erstellen, um die Position von Objekten relativ zueinander zu bewerten.



Warum wird das benötigt? Sehr oft wird bei der öffentlichen Überwachung das zu analysierende Video mit einer sich bewegenden Kamera aufgenommen. Aus diesem Grund treten bei der Bestimmung der Position von Objekten relativ zueinander verschiedene Probleme auf:



  • Es ist nicht klar, was die Änderung der Koordinaten des Objekts verursacht hat: Die Kamera oder das Objekt selbst bewegen sich;
  • Wenn Sie die Szene aufgrund der Drehung der Kamera Ă€ndern, können verschiedene Objekte dieselben Koordinaten erhalten, selbst wenn die Objekte statisch waren.


Bild

Abbildung 1 - Identische Objekte haben aufgrund der Kamerabewegung unterschiedliche Koordinaten



Um ein festes Koordinatensystem aufzubauen, mĂŒssen Sie:



  1. Bestimmen Sie den Ursprung der Koordinaten.
  2. Vergleichen Sie zwei aufeinanderfolgende Frames miteinander.
  3. , , (, , ..).


Bild

2 —



:



  1. .
  2. : , . . . SIFT, SURF ORB. , . , , , .




3 — matching visualization



  1. , .




:



Bild



  • a, e — x y ;
  • b, d — ( a e );
  • c, f — ;
  • g, h — .


, , . (x,y) (x',y') :



Bild

:



t⋅(x',y',1)=H.⋅(x,y,1)(1)



:



k- .

N — (f1,..., fN). . matching points , fk fk-1.



:



— ;

(Xk, Yk)=((x1k, y1k),
, (xnk, ynk)) – n matching points;

(X'k, Y'k) =((x'1k, y'1k),
, (x'nk, y'nk)) – n matching points ;

(X''k, Y''k) =((x''1k, y''1k),
, (x''nk, y''nk)) – k — n matching points , fk-1.

Hk – , fk-1 fk.

, .



(Xk, Yk) (X'k, Y'k). f1 fk , .. . Hk.



, (H1,
, Hk-1). Hk (Xk-1, Yk-1) (Xk, Yk), , .



3:



Bild



3 — ,



, . a :

x1k= x1k-1 — a, , a : x'1k = x1k — a, 3. , , .



?

(H1,
, Hk-1). , 1 k-1 mathcing points fk-1 . (1), , — .



H.sup=H.1⋅(H.2⋅(H.3.........))(2)



, , , fk-1 fk, : (Xk-1, Yk-1) (Xk, Yk) ( (2)), (X'k-1, Y'k-1) (X''k, Y''k) Hk. , , (x1k, y1k) (x'1k, y'1k).



t(x',y',1)=H.sup⋅(x,y,1)(3)



: , ( , , .. ), - , . .

:



  • "" matching points ((x1k, y1k),
 ,(x'nk, y'nk)),
  • H, k- k-1 .
  • ((x'1k, y'1k),
 ,(x'nk, y'nk))
  • :

    • , ;
    • . , ;
    • - ( LENGTH_ACCOUNTED_POINTS len(matching points)), , , , .


, . .



"" , . , , , , . T , . , motion video segmentation.





.

GitHub , .



  • evenvizion_component.py
  • evenvizion_visualization.py
  • compare_evenvizion_with_original_video.py


evenvizion_component.py

, evenvizion_component.py. , json , fk-1 fk. , json , . , , .



- , json --path_to_original_coordinate recalculated_coordinates.json , .

json :



{"frame_no": [{"x1": x coordinate, "y1": y coordinate}, ...], ...}

evenvizion_component.py , 3 ( matching and heatmap --show_matches --visualize_fixed_coordinate_system ).



evenvizion_visualization.py compare_evenvizion_with_original_video.py .



README.



, .



:



matching points — matching visualization:



Bild

5 — matching visualization



.

, , (heatmap visualization):



Bild

6 — heatmap visualization



20 , , . , . : r=sqrt(x2+y2), heatmap_constant , : 0 — , 1 — .





7 — fixed_coordinate_system_visualization



json , , fixed_coordinate_system_visualization ( 7).



evenvizion_visualization.py compare_evenvizion_with_original_video.py , ( ). 8 9 .



Bild

8 — visualize_camera_stabilization



Bild

9 — original_video_with_EvenVizion



Known issues



N/a . matching points , , 90 , . video motion segmentation, , , static points motion points. — .



. 4 matching points, , 4 , =None. : none_H_processing True, : Hk=Hk-1. False, H — , . .



. . . :



  • . , , (, ).
  • findHomography() opencv. .




Auf diese Weise erhalten wir eine Komponente, mit der wir die tatsĂ€chliche Position von Objekten relativ zueinander abschĂ€tzen und die Koordinaten des Objekts in ein stationĂ€res System relativ zum Rahmen ĂŒbersetzen können. weil Bei dieser Lösung besteht die Hauptsache darin, die Transformation von Flugzeugen anhand von SchlĂŒsselpunkten zu bewerten. Wie oben gezeigt, kann das Problem auch bei schlechten Aufnahmebedingungen (scharfe Kamerabewegung, schwierige Wetterbedingungen, Nachtaufnahmen usw.) gelöst werden.




All Articles