

パーティクルフィルタを用いた物体追跡の実装を行なっているのですが追跡精度を高めるためにまずフレーム差分法を用いて、動物体の抽出をおこなってからその動物体の周りにパーティクルをランダムに配置したいのですが、パーティクルを乱数を用いて適当に配置することはできるのですが、フレーム差分法を用いて抽出した動物体の周りにランダムに配置するということをコードに起こせず困っています。フレーム差分法から得た動物体の周りを指定してパーティクルを配置するにはどうすれば良いでしょうか。  
当方python初心者なためお力添いをおねがいします。

フレーム差分による移動物体検出のコードは以下になります

[code]

    import cv2
    import numpy as np
    import time
    
    i = 0      # カウント変数
    th = 30    # 差分画像の閾値
    
    # 動画ファイルのキャプチャ
    cap = cv2.VideoCapture("zverev1.mp4")
    
    # 最初のフレームを背景画像に設定
    ret, bg = cap.read()
    
    # グレースケール変換
    bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
    
    while(cap.isOpened()):
        # フレームの取得
        ret, frame = cap.read()
    
        # グレースケール変換
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
        # 差分の絶対値を計算
        mask = cv2.absdiff(gray, bg)
    
        # 差分画像を二値化してマスク画像を算出
        mask[mask < th] = 0
        mask[mask >= th] = 255
    
        # フレームとマスク画像を表示
        cv2.imshow("Mask", mask)
        cv2.imshow("Flame", gray)
        cv2.imshow("Background", bg)
    
        # 待機(0.03sec)
        time.sleep(0.03)
        i += 1    # カウントを1増やす
    
        # 背景画像の更新（一定間隔）
        if(i > 30):
            ret, bg = cap.read()
            bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
            i = 0  # カウント変数の初期化
    
        # qキーが押されたら途中終了
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    cap.release()
    cv2.destroyAllWindows()
    
[/code]


CC BY-SA 4.0
2022-08-24T12:13:58.113
90736
2022-08-25T03:36:17.057
2022-08-25T03:36:17.057
53674
53674
question
python opencv
パーティクルフィルタを用いた物体追跡におけるパーティクルの配置について