移動するカメラからのビデオの安定化、またはすべてを固定座標系に変換する方法

Computer Vision(CV)機能は、現在、公共安全ソリューション市場の展望を完全に変えています。従来のビデオ監視システムで誰もが驚くことはもはや容易ではなく、公共の場所でそれを見つけられないのは不思議ですが、この分野でのAIの使用はまだ目新しいものです。



私たちは、さまざまな公安ビジネスタスクへのCVの適用を調査しています。この投稿では、移動中のカメラからのビデオを固定座標系に変換してさらに分析するオプションを提供します。



プロジェクト全体がGitHubにあります






ある種のビデオがあり、オブジェクトの相対的な位置を評価するために、そのビデオの固定座標系を構築したいとします。



なぜこれが必要なのですか?公共監視のタスクでは、分析が必要なビデオが移動カメラで撮影されることがよくあります。このため、オブジェクトの相対的な位置を決定する際にいくつかの問題が発生します。



  • オブジェクトの座標が変化した原因は明らかではありません。カメラまたはオブジェクト自体が動いています。
  • カメラの回転によってシーンを変更すると、オブジェクトが静的であっても、異なるオブジェクトが同じ座標を取得する可能性があります。


画像

図1-カメラの動きにより、同一のオブジェクトの座標が異なる



固定座標系を構築するには、次のことを行う必要があります。



  1. 座標の原点を決定します。
  2. 2つの連続するフレームを互いに比較します。
  3. , , (, , ..).


画像

2 —



:



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




3 — matching visualization



  1. , .




:



画像



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


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



画像

:



t((バツy1=H((バツy1((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:



画像



3 — ,



, . a :

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



?

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



Hsup=H1((H2((H3..。..。..。((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((バツy1=Hsup((バツy1((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:



画像

5 — matching visualization



.

, , (heatmap visualization):



画像

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 .



画像

8 — visualize_camera_stabilization



画像

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. .




したがって、オブジェクトの相互の実際の位置を推定して、オブジェクトの座標をフレームに対する静止システムに変換できるコンポーネントを取得します。なぜなら このソリューションでは、キーポイントを使用して平面の変換を評価することが主な目的であり、上記のように、撮影条件が悪い場合(カメラの動きが鋭い、気象条件が厳しい、夜間の撮影など)でも問題を解決できます。




All Articles