簡體   English   中英

opencv視頻穩定算法

[英]opencv video stabilization algorithm

我正在使用 opencv 編寫視頻穩定器。 算法如下:

雖然視頻中有更多幀:

  1. 從視頻中獲取新幀
  2. 檢測新幀中的關鍵點
  3. 計算新關鍵點的描述符
  4. 匹配新幀和前一幀的描述符
  5. 過濾匹配以獲得好的匹配
  6. 找到前一幀和新幀之間的單應性
  7. 將單應性(warpPerspective)應用於新框架,從而創建“調整后的新框架”
  8. 將前一幀設置為等於“調整后的新幀”(描述符、關鍵點)

我有幾個問題。 我在正確的軌道上嗎? 如何進行實際的穩定(使用高斯濾波器或其他東西)?

以下是可能的步驟順序:

步驟 1。 從電影文件中讀取幀

步驟 2. 從每一幀收集顯着點

步驟 3. 選擇點之間的對應關系

步驟 4. 從嘈雜的對應關系估計變換

步驟 5. 變換近似和平滑

步驟 6. 在完整視頻上運行

您可以在此處找到有關每個步驟的更多詳細信息:

http://www.mathworks.com/help/vision/examples/video-stabilization-using-point-feature-matching.html

我認為您可以在 OpenCV 中遵循相同的步驟。

如果您使用的是 python 代碼,那么您可以使用我強大的線程VidGear視頻處理 python 庫,該庫現在提供具有最小延遲的實時視頻穩定,並且Stabilizer Class幾乎不需要額外的計算能力要求。 為了您的方便,這是一個基本的使用示例:

# import libraries
from vidgear.gears import VideoGear
from vidgear.gears import WriteGear
import cv2

stream = VideoGear(source=0, stabilize = True).start() # To open any valid video stream(for e.g device at 0 index)

# infinite loop
while True:

    frame = stream.read()
    # read stabilized frames

    # check if frame is None
    if frame is None:
        #if True break the infinite loop
        break

    # do something with stabilized frame here

    cv2.imshow("Stabilized Frame", frame)
    # Show output window

    key = cv2.waitKey(1) & 0xFF
    # check for 'q' key-press
    if key == ord("q"):
        #if 'q' key-pressed break out
        break

cv2.destroyAllWindows()
# close output window

stream.stop()
# safely close video stream

更高級的用法可以在這里找到: https : //github.com/abhiTronix/vidgear/wiki/Real-time-Video-Stabilization#real-time-video-stabilization-with-vidgear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM