国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        運動檢測技術(OpenCV 上的代碼)

        2022-08-26 11:21
        磐創AI
        關注

        近年來,運動檢測技術已成為計算機視覺的重要研究領域之一。視頻序列上已經發明了許多方法,其中一些方法比其他方法更好。在本文中,我們將解釋并在 OpenCV 上實現一些基本方法。

        1. 幀差分

        幀差分背后的想法非常簡單。我們逐像素檢查兩個視頻幀之間的差異。如果有運動,像素值就會發生變化,因此我們將獲得運動圖。

        很簡單對嗎?但是,由于噪聲(例如照明的變化)可能會發生一些像素值變化,為了避免在我們的運動蒙版中捕獲噪聲,我們應用了一個閾值,該閾值基本上會突出強度方面的大變化并丟棄小的變化。請注意,閾值沒有正確的選擇,通常是憑經驗完成的。

        現在我們理解了這個概念,讓我們展示一些代碼:

        frames=[]

        MAX_FRAMES = 1000

        N = 2

        THRESH = 60

        ASSIGN_VALUE = 255 #Value to assign the pixel if the threshold is met

        cap = cv2.VideoCapture(0)  #Capture using Computer's Webcam
           

        for t in range(MAX_FRAMES):

           #Capture frame by frame

           ret, frame = cap.read()

           #Convert frame to grayscale

           frame_gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)

           #Append to list of frames

           frames.append(frame_gray)

           if t >= N:

               #D(N) = || I(t) - I(t+N) || = || I(t-N) - I(t) ||

               diff = cv2.absdiff(frames[t-N], frames[t])

               #Mask Thresholding

               threshold_method = cv2.THRESH_BINARY

               ret, motion_mask = cv2.threshold(diff, THRESH, ASSIGN_VALUE, threshold_method)

               #Display the Motion Mask

               cv2.imshow('Motion Mask', motion_mask)

        這種方法具有計算性能,但是它存在兩個主要缺點:前景光圈和由幀速率和物體速度引起的重影。

        Kameda 和 Minoh 開發的一種解決方案是雙重差分,我們在時間 t 和 t-1 以及 t-1 和 t-2 之間的兩個幀之間操作閾值差異,然后將它們與邏輯 AND 結合以確保我們始終檢測到一個對象而不是它的重影。

        幀差分的另一個問題是,當對象停止移動時,它不再被檢測到。這顯然取決于我們想要完成的任務,但是假設我們想要繼續檢測移動物體,即使它停止了一段時間。這個問題的一個答案是背景減法技術。

        2. 背景減法

        背景減法是一種廣泛使用的方法,用于檢測靜態攝像機幀序列中的移動對象。它需要一個參考圖像來播放背景(通常在沒有對象的情況下獲取)。然后我們計算當前幀和背景幀(參考圖像)之間的差異。其主要任務是檢測通常代表運動物體的前景。

        background = None

        MAX_FRAMES = 1000

        THRESH = 60

        ASSIGN_VALUE = 255

        cap = cv2.VideoCapture(0)
           

        for t in range(MAX_FRAMES):

           # Capture frame-by-frame

           ret, frame = cap.read()

           # Convert frame to grayscale

           frame_gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)      

           if t == 0:

               # Train background with first frame

               background = frame_gray

           else:

               # Background subtraction

               diff = cv2.absdiff(background, frame_gray)

               # Mask thresholding

               ret, motion_mask = cv2.threshold(diff, THRESH, ASSIGN_VALUE, cv2.THRESH_BINARY)

               # Display the motion mask and background

               cv2.imshow('Motion mask', motion_mask)

               cv2.imshow('Background', background)

        背景減法代碼

        如果對象的顏色與背景框不同,這種方法可以獲得很好的效果。然而,像幀差分一樣,它也有一些主要的缺點。毋庸置疑,它對光照變化和相機運動高度敏感,它還有一個“waking person"問題,這意味著如果背景物體(屬于參考圖像的物體)移動,則同時檢測到真實物體及其重影.

        在這種情況下,我們遇到了與幀差分相反的問題:“如果我們想停止檢測前景對象并將其吸收到背景中怎么辦?”

        3. 自適應背景減法

        這種方法基本上結合了之前的兩種技術,通過引入學習率 λ 來充分利用兩者。在每個時間步,我們對傳入圖像和先前背景的貢獻進行加權以構建新背景。

        例如,如果我們設置 λ=0.1,則在更新背景幀之前需要 10 幀(換句話說,前景對象將被吸收到背景中)。而對于 λ=0.5,我們有更快的更新(更新前只需要 2 幀)。請注意,選擇 λ 沒有規則,它是憑經驗完成的,因為它取決于我們正在處理的任務和環境。

        background = None

        MAX_FRAMES = 1000

        THRESH = 60

        ASSIGN_VALUE = 255

        ALPHA = 0.1

        def update_background(current_frame, prev_bg, alpha):

           bg = alpha * current_frame + (1 - alpha) * prev_bg

           bg = np.uint8(bg)  

           return bg

        cap = cv2.VideoCapture(0)
           

        for t in range(MAX_FRAMES):

           # Capture frame-by-frame

           ret, frame = cap.read()

           # Convert frame to grayscale

           frame_gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)      

           if t == 0:

               # Train background with first frame

               background = frame_gray

           else:

               # Background subtraction

               diff = cv2.absdiff(background, frame_gray)

               # Mask thresholding

               ret, motion_mask = cv2.threshold(diff, THRESH, ASSIGN_VALUE, cv2.THRESH_BINARY)

               # Update background

               background = update_background(frame_gray, background, alpha = ALPHA)

               # Display the motion mask and background

               cv2.imshow('Motion mask', motion_mask)

               cv2.imshow('Background', background)

        自適應背景減法代碼

        4. 高斯混合(MoG)

        高斯混合是一種廣泛使用的背景建模方法,用于從靜態相機中檢測運動物體。

        簡而言之,這種方法首先將每個像素建模為加權高斯的總和,其中權重定義了每個高斯的貢獻。擁有多個高斯而不是一個的直覺是一個像素可以代表許多對象(例如雪花和后面的建筑物)。通過使用以前的幀計算顏色直方圖,我們可以知道對象可能是背景或前景對象。

        例如,當我們得到一個具有大權重和小標準偏差的高斯時,這意味著所描述的對象經常出現并且在幀之間沒有變化,因此它可能是背景的一部分。這就是算法的工作原理;每個輸入像素都會根據可用模型進行檢查。在匹配的情況下,我們更新模型的權重、均值和標準差,如果權重除以標準差很大,我們將像素分類為背景,否則分類為前景。

        MAX_FRAMES = 1000

        LEARNING_RATE = -1  

        fgbg = cv2.createBackgroundSubtractorMOG2()

        cap = cv2.VideoCapture(0)


        for t in range(MAX_FRAMES):

           # Capture frame-by-frame

           ret, frame = cap.read()

           #Apply MOG

           motion_mask = fgbg.apply(frame, LEARNING_RATE)

           #Get background

           background = fgbg.getBackgroundImage()

           # Display the motion mask and background

           cv2.imshow('background', background)

           cv2.imshow('Motion Mask', motion_mask)

        混合高斯碼

        image.png


               原文標題 : 運動檢測技術(OpenCV 上的代碼)

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 97人人看| 亚洲无码丝袜| 人妻少妇精品久久久久久0000 | 德保县| 久久久久8888| 无毛片| 99亚洲精品| 97色婷婷| 最新亚洲中文字幕| 91九色在线观看| 色情一区| 香蕉视频在线国产| 日韩欧美精品一区二区| 99青青草| 欧美午夜福利| 拳交AV| 亚洲综合自拍| 页游| 黑人videos特大hd粗暴| 精品va在线观看| 爱3P| 中文字幕一二区| 亚欧女AV| 精品3P| 国产中文| 日本无码中出| 国产?日韩?欧美| 看亚洲一级黄色片啪啪啪| 91人人干| 亚洲都市激情| 三级片久久| 中文字幕一二三区| 91茄子| 屄视频| 旅游| 日本va欧美ⅴa欧美Va精品| 香蕉视频在线国产| 小泽玛利亚一区| 熟女中文字幕| 亚洲综合乱| 亚洲国产熟女第一页|