999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCV自動運動檢測控制系統設計

2022-06-10 07:26:40鄒振興張國安梁俊銘
電子制作 2022年11期
關鍵詞:檢測

鄒振興,張國安,梁俊銘

(廣東職業技術學院,廣東佛山,528041)

0 引言

近年來,隨著人工智能技術迅猛發展,計算機設備己經深入涉及到社會生活中的各個方面,計算機機器視覺得到快速發展。利用視覺傳感器采集,進行靜態及動態目標圖像處理分析成為當下研究應用的主題。如在家居安全監測中,利用視覺系統對目標進行運動跟蹤和檢測,監測和智能人機交互及分析目標行為,可分析發現異常行為,從而監控系統發出報警,進而進行科學處理,從而提高日常生活質量。計算機視覺其目的是分析、研宄讓計算機智能化一定程度實現人的眼睛和大腦感知外部環境,分析和執行等功能[1]。而其中目標運動檢測與跟蹤是通過視頻圖像的處理,采用如閾值分割、高斯模糊、濾波算子等算法進一步掌握目標圖像的運動信息和特征,為后續執行系統提供信息數據依據,可以實現對運動物體的圖像檢測。

1 硬件選型與系統搭建

1.1 樹莓派

樹莓派是一款基于ARM的信用卡大小的單板計算機[2],擁有豐富的接口,能夠安裝任何ARM平臺的操作系統,如Android、Windows等。一臺這么多接口的單板計算機,實際只有掌心大小,樹莓派CPU功耗低,處理能力強。比較其他開發板控制平臺,樹莓派提供的引腳能直接控制其他底層硬件。樹莓派細小靈活,性價比高,應用成熟,開源代碼多,利于開發與應用。樹莓派核心板及外接引腳圖如圖1所示。

圖1 樹莓派核心板及外接引腳圖

對比常規的8位單片機和32位嵌入式等控制器,樹莓派擁有豐富的I/O,還能搭配靈活的操作系統,完成各種任務管理與調度,支持上層應用的開發,為了開發與設計提供更多的可能性和可靠性。隨著圖像處理技術發展和各種微型計算機研發,使用傳統計算機作為處理圖像的平臺已經無法滿足很多運動檢測設備對處理平臺簡潔性的需求,而樹莓派作為一個微型計算機同樣可以進行圖像處理,只要通過OpenCV就可以在樹莓派上使用幀差法把樹莓派攝像頭采集到的圖像進行運動檢測,再通過控制程序就可以直接控制執行機構。所以把OpenCV與樹莓派結合起來處理圖像就可以得到一個簡潔高效的自動運動檢測控制系統。

1.2 Linux系統

Linux是開源免費和自由傳播的操作系統,具有豐富的社區資源。開源能讓用戶自由裁剪,靈活性高,功能強大,成本低。Linux的開源性和穩定性,都能更好地使用戶調用硬件功能,方便了查看資源的利用率。

無論是Linux的開源性、多線程、多任務的性能優點,還是其別具一格的開發用途都使得用戶在學習和開發上的難度有一定的降低,尤其是Linux的開源性對本次設計有很大的幫助,由于本設計作品需要連接局域網之外還需要配置相關的編譯軟件和開發環境,所以Linux的開源性在搭建開發環境上就有了很大的便利性。

2 系統設計思路

基于OpenCV自動運動檢測控制系統是由一塊4B、2GB的樹莓派、2個可調舵機和1個攝像頭所組成。開發環境是在Linux系統上使用Python調用OpenCV數據庫來實現一個可以自動跟蹤目標并時刻拍攝的控制系統,除了自動跟蹤外還可以通過控制調節攝像頭的拍攝方向。在這個設計中,要做到一個自動識別物體并且實現運動目標的監測系統,需具備這幾個模塊圖像傳感器采集模塊、圖像數據處理模塊、運動目標提取及跟蹤、執行舵機動作模塊等這些流程。其設計思路如圖2所示。

圖2 設計思路圖

(1)圖像傳感器采集

圖像傳感器采集模塊是利用傳感器內部的光電器件的光電轉換功能。將感光面上的光像轉換為與光像成相應比例關系的電信號,從而實現對研究對象的視頻及圖像信息的抓取。包含了傳感器視頻數據的采集、傳感器采集圖像顯示幀數和分辨率的調整、數據傳輸以及信號初始處理等。圖像傳感器采集是圖像處理、確定邊緣、定位目標及執行控制的前提。

(2)圖像數據處理

傳感器采集數據后,往往是進行數據處理,由于圖像往往會受環境的影響,存在噪聲的干擾、亮度不足、曝光不足或過度等情況,這樣的數據是會增加處理難度、產生濾波的延長及邊緣不清晰等。因此可以傳感器采集到的視頻圖像數據進行預處理,進行濾波處理去除干擾,實現顏色空間轉換、亮度和色度達到合理,方便二值化的處理使邊緣清晰,減少算法處理時間。這部分是實現運動目標檢測的關鍵。

(3)運動目標提取

運動監測技術日益成熟,視頻圖像信息通常包括多個元素,但一般背景是相對固定的,相近各幀特征變化不大,所以運動目標的提取也成為可能。運動目標提取主要就是在圖像數據序列中檢測出運動目標,并將前景與背景圖像做分割處理,再做目標跟蹤算法,這方面的算法常見有光流法、幀間差分法、背景減除法等。

(4)運動目標跟蹤

在系統設計中要求監測對象要在圖像處理模板的中心,所以記得多監測對象的運動軌跡進行控制。目標跟蹤算法就是在相鄰每幀圖像之間的數據形成與監測對象匹配的關系。把運動目標在數據序列中一一對應,再通過模板匹配和算法計算得到運動目標的中心、定位、路線、速度等特征與參數。進一步將這些參數輸送給后續算法處理分析,最終實現對運動目標的跟蹤和定位分析。

(5) 執行舵機動作

舵機接收到上級信息信號后,執行動作,往往是系統的后續執行機構。執行舵機根據信號往往會判斷圖像視頻中目標物體在拍攝窗口內移動的情況,按照設定的條件算法進行運動動作,達到指定位置。

3 軟件環境搭建

在Linux系統下搭建OpenCV開發環境需要以下步驟:

(1)首先要啟用攝像頭,進入Interfacing Options->Camera->Yes,即可啟用攝像頭。

sudo raspi-config

檢測攝像頭是否正常,可以使用以下命令進行檢測:raspivid -t 0 -cs 0

(2)準備視頻流設備,在OpenCV中,若要讀取攝像頭數據,需要開啟v4l2(video for linux 2),開啟后,攝像頭設備文件為/dev/video0,OpenCV將從該文件中讀取視頻流文件。

sudo vim /etc/modules

(3)更換樹莓派軟件源

# 編輯 `/etc/apt/sources.list` 文件,刪除原文件所有內容,用以下內容取代:

git clone -b 4.1.0 --recursive https://github.com/opencv/opencv_contrib.git

4 OpenCV的運動檢測設計

運動檢測設計這部分是往往最復雜的,不僅要把物體和背景區分開來,還要讓機器知道物體是否在移動,這需要大量的算法和數據處理支持,所幸的是在C和C++的庫里有這么一個數據庫可以支持計算機視覺程序開發的,這就是OpenCV函數庫。它可以在Windows、Linux、Mac OS等系統上面運行。由于它的底層是C和C++所以OpenCV數據的處理能力很強, OpenCV是一個廣泛應用于視頻圖像處理、機器視覺方、運動監測等方面的開源函數庫,該庫主要采用C語言進行編譯與優化,編程靈活數據處理快。OpenCV具有模塊化結構能為設計友好的視覺對接函數提供簡便的支撐,這意味著該包包含多個共享庫或靜態庫。這次設計加上使用Python作為開發語言,其數據與函數的調用能力相結合使得這一獲取視頻和識別物體的程序變得簡單和方便了起來。

基于OpenCV的運動物體的視頻檢測原理:根據監測對象的圖像處理提取特征信息,如邊緣、二值化圖像等, 在捕獲連續圖像幀信息中進行對比或進行背景圖像分離等從而跟蹤得到運動目標的信息等。整個過程體系如圖3所示。

圖3 圖像分離背景程序流程圖

視頻圖像預處理:是針對于捕獲到的視頻流信息進行圖像處理。預處理目的是平滑圖像濾除噪點,然后再進行邊緣檢測輪廓提取等處理,為圖像特征提取分析與處理打好基礎。

捕獲最小包圍領域,從其中圖像中提取目標對象可以進一步減小算法計算量提高圖像處理時間,也可以對圖像進行灰度處理、閾值分割及二值化處理等。采用幀差法將相鄰的兩幀圖像對應像素點進行相減而得到運動目標數據[3]。在幀差法運動檢測前對灰度圖像可進行濾波平滑。然后使用灰度重心法確定運動物體的坐標,進而將背景與目標分離。為減小噪聲對運動檢測的影響,可對運動檢測結果進行閾值分割,閾值分割處理得到運動物體的二值化圖像。對于從圖像中提取目標對象,本質就是對于目標邊緣檢測及分割的過程。通常就是利用圖像像素之間的差異性,判斷是否有運動目標,算法處理步驟一般為相鄰幀對比相減、閾值分割、濾波噪聲、膨脹處理、邊緣檢測、繪制外接矩形區域等,其中閾值的選擇也很重要,閾值過低無法去除噪聲,太高則影響圖像中變化數據,可能會無法提取完整運動目標信息。

在OpenCV中可將運動部分劃為感興趣區域ROI(region of interest)[4],來計算出運動目標的幾何中心。ROI的幾何中心在運動目標上,通過計算ROI幾何中心的坐標,可得出其與圖像中心的距離,通過控制執行機構,將幾何中心與圖像中心重合則選定運動目標中心。計算采集到的圖像的中心坐標算法用灰度重心法。灰度重心法原理就是將區域內每一個像素位置處的灰度值當作該點的質點,其求區域中心的公式如下:

(1)式中,f(u,v)是坐標為 (u,v)的像素點的灰度值, Ω是目標區域的集合,是區域的中心坐標。

設計過程中還需留意OpenCV的設置,因為它是C和C++所提供的庫,所有OpenCV類和函數都放在cv命名空間中。因此,要從代碼中訪問此功能,需要在程序中說明cv:符或using namespace cv;指令,由于設計需要用到Python來進行編譯程序所以需要把OpenCV和Python對接,而OpenCV for Python就是通過NumPy進行綁定的,如果讀取圖像首先要導入OpenCV包。

5 高斯模糊算法

對于檢測物體圖像可以利用幀差法可將背景與目標分離,從而獲得的前景和背景的差圖,再使用閾值分割技術,從而將目標物體分離出圖像。在本項目設計中使用OpenCV處理圖像時除了用閾值分割法之外,還用到了高斯模糊算法。高斯模糊可有效過濾掉可能被誤認為運動檢測目標的高斯噪聲[5],所謂模糊其實相當就是將每一個像素都取周邊像素的平均值。高斯模糊本質是屬于低通濾波器,它是將正態分布用到了圖像處理中,處理得出圖像的每個像素點是原圖像相應像素點與相鄰像素點的加權和。其計算公示如下所示:

式中, (,)Huv表示頻率域;σ表示高斯曲線標準差,是方差: (u,v)D表示傅里葉變換后某點距離遠點的距離。當 0Dσ= 時,即 0D取到截止頻率,當濾波器的頻率域下降到其最大值時,經過這種濾波后能夠增強圖像的細節部分。即在保證全部圖像清晰的同時又能濾除局部的干擾噪聲。

使用cv2做高斯模糊,需要調用GaussianBlur函數

void GaussianBlur( InputArray src,OutputArray dst, Size ,Ksize double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT )

Ksize 為高斯濾波器窗口大小;double sigmaX 為X方向濾波系數;

double sigmaY=0 為Y方向濾波系數。

6 總結

通過實驗證明,本文選用樹莓派作為運動檢測的核心硬件,使用智能攝像頭結合了庫和實時釆集視頻幀數據,進行圖像處理,通過OpenCV庫可以做到物體的自動識別和跟蹤。OpenCV庫的是C和C++所編寫的函數庫,它提供了Python的接口,可以用Python來調用OpenCV的函數,結合了Python和CC++的優點,選取幀差法、閾值分割、高斯模糊等合適高效的算法進行圖像序列的分析和處理,可以分析出運動物體的運動情況和軌跡,控制舵機轉動,實現目標物體的跟蹤。

猜你喜歡
檢測
QC 檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
“有理數的乘除法”檢測題
“有理數”檢測題
“角”檢測題
“幾何圖形”檢測題
主站蜘蛛池模板: 亚洲高清在线天堂精品| 99久久精品免费看国产电影| 日韩小视频网站hq| 国产真实自在自线免费精品| a欧美在线| 一级成人a做片免费| 无码中文字幕乱码免费2| 中文字幕在线一区二区在线| 亚洲无卡视频| 日韩欧美国产成人| 精品伊人久久久香线蕉| 欧美日韩久久综合| 国产不卡网| 毛片大全免费观看| 五月婷婷综合色| 亚洲色图欧美一区| a毛片基地免费大全| 香港一级毛片免费看| 热99精品视频| 日本一区二区不卡视频| 成人午夜免费视频| 亚洲色图欧美视频| 欧美中文字幕无线码视频| 精品少妇人妻无码久久| 无码福利日韩神码福利片| 亚洲 成人国产| 日韩毛片免费| 中文字幕永久视频| 国产成人狂喷潮在线观看2345| 欧美午夜在线播放| 亚洲永久精品ww47国产| 亚洲精品自产拍在线观看APP| 国产一区在线观看无码| 2020国产精品视频| 国产乱子伦一区二区=| 国产精品免费p区| 日本欧美视频在线观看| 青青青亚洲精品国产| 又粗又大又爽又紧免费视频| 亚洲一级毛片| 精品福利国产| 久久窝窝国产精品午夜看片| 国产素人在线| 久久网综合| 国产精品女主播| 欧美激情,国产精品| 亚欧美国产综合| 中文字幕亚洲综久久2021| 国产乱人激情H在线观看| 欧美日韩中文国产va另类| 午夜无码一区二区三区在线app| 欧美一级在线播放| 99久久精品免费看国产电影| 日韩经典精品无码一区二区| 青青操国产| a级毛片网| 亚洲91精品视频| 人妻精品久久久无码区色视| 国产日韩欧美精品区性色| 九月婷婷亚洲综合在线| 一边摸一边做爽的视频17国产| 亚洲一区二区三区在线视频| 精品久久国产综合精麻豆| 亚洲最新网址| 天天综合网亚洲网站| 国产丝袜无码精品| 精品国产一区91在线| av在线无码浏览| 在线观看网站国产| 亚洲无码视频喷水| 亚洲人成影视在线观看| 欧美在线中文字幕| 日本在线亚洲| 亚洲va欧美ⅴa国产va影院| 日本人妻丰满熟妇区| 老司机aⅴ在线精品导航| 美女啪啪无遮挡| 欧美中文字幕一区| 97青青青国产在线播放| 欧美福利在线观看| 国产一区自拍视频| 亚洲第一色视频|