日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

CV | 运动目标检测 之 背景差分法

發布時間:2024/3/13 目标检测 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CV | 运动目标检测 之 背景差分法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

最近開始上手運動目標檢測和跟蹤,對于傳統的目標檢測算法比如幀差法、背景差分法、光流法之類的,從理論上學習了無數次,但是從來沒有見到過程序長什么樣。導致學一遍忘一遍。準備把這幾類方法和程序歸納和學習一下,好記性不如爛筆頭,有備無患。

背景差分法

轉自:https://www.jianshu.com/p/58c6ca1b66af

1. 原理

背景差分法的思想是用圖像序列中的當前幀和背景參考模型比較來檢測運動物體。其核心是背景的建模方法。這里實現一種簡單的背景建模方法,即對視頻的全部幀取像素平均值得到背景。
當然,這種簡單的算法局限性很大,視頻的時長,光線與背景的變化都會對檢測效果產生極大的影響。

2. 實現步驟

  • 背景建模: 對視頻的全部幀取像素平均值得到背景
  • 比較: 當前幀與背景做差,差值大于一定閾值的像素點識別為前景
  • 提取:在原始幀上扣取出前景

3. 源代碼

import matplotlib.pyplot as plt import numpy as np from PIL import Image# 讀取幀數 img_number = 48# 各幀的集合 all_img = [np.array(Image.open('F:/input/'+str(i+1)+'.jpg', 'r')) for i in range(img_number)]# 幀的寬高 h = all_img[0].shape[0] v = all_img[0].shape[1]# 計算得到背景 back_img = np.zeros((h, v)) for single_img in all_img:back_img += single_img back_img /= img_number# 保存背景 Image.fromarray(back_img).convert('RGB').save('F:/output/background.jpg')# 原視頻與背景逐幀相減后取絕對值 得到前景 front_img = np.array([i - back_img for i in all_img]) front_img = front_img.__abs__()# 前景二值化 設定閾值將前景像素值化為0或1 threshold_level = 50 threshold = np.full((h, v), threshold_level) front_img = np.array([i < threshold for i in front_img], dtype=np.int8)*255# 在原幀上摳圖 得到真實的前景 front_img = np.fmax(np.array(front_img), all_img)# 保存 for i in range(img_number):Image.fromarray(front_img[i]).convert('RGB').save('F:/output/'+str(i+1)+'.jpg')# 顯示 loc_h = 6 loc_v = int(img_number / loc_h) for i in range(loc_h * loc_v):plt.subplot(loc_v, loc_h, i+1)plt.imshow(front_img[i], cmap='gray') plt.show()

視頻轉為圖像是使用matlab實現的。

%將視頻轉換為圖片 clear clcfile_name = 'F:\input.avi'; %視頻所在文件夾 obj = VideoReader(file_name); %讀取視頻文件numFrames = obj.NumberOfFrames; %視頻總的幀數 for k = 1: numFramesframe = read(obj,k);%imshow(frame); gray_frame = rgb2gray(frame); %若每一幀為彩色圖片,轉換為灰度圖imshow(frame); %顯示每一幀圖片%保存每一幀圖片imwrite(gray_frame,strcat('F:\input\',num2str(k),'.jpg'),'jpg'); end

總結

以上是生活随笔為你收集整理的CV | 运动目标检测 之 背景差分法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。