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热国产在线精品99| 国产高清在线精品一区二区三区| 日本午夜视频在线观看| 亚洲国产亚洲综合在线尤物| 亚洲第一页在线观看| 久久久久亚洲精品无码网站| 天天综合色网| 欧美在线伊人| 国产欧美精品一区aⅴ影院| 中文字幕av一区二区三区欲色| 亚洲国产成人麻豆精品| 亚洲人人视频| 欧美国产日韩在线播放| 日韩AV手机在线观看蜜芽| 激情午夜婷婷| 久久永久精品免费视频| 精品黑人一区二区三区| 亚洲天堂精品视频| 久久亚洲国产一区二区| 日韩中文精品亚洲第三区| 亚洲香蕉在线| 麻豆国产精品| 97国产一区二区精品久久呦| 呦女亚洲一区精品| 国产色伊人| 亚洲成网777777国产精品| 免费无码又爽又刺激高| 亚洲天堂网在线观看视频| 国产精品私拍在线爆乳| 国产精品欧美日本韩免费一区二区三区不卡 | 扒开粉嫩的小缝隙喷白浆视频| 麻豆精品在线| 麻豆国产在线观看一区二区| 国产亚洲欧美日韩在线一区| 成人精品视频一区二区在线 | 欧洲亚洲一区| 91在线中文| 日韩无码精品人妻| 国产精品亚洲五月天高清| 狠狠亚洲婷婷综合色香| 热久久国产| 欧美精品H在线播放| 无码aⅴ精品一区二区三区| 欧美精品成人一区二区在线观看| 国产成人综合亚洲欧洲色就色| 免费国产好深啊好涨好硬视频| 久久永久精品免费视频| 国产成+人+综合+亚洲欧美| 日韩精品久久无码中文字幕色欲| 中文字幕有乳无码| 国产一级二级在线观看| 亚洲成a人片| 精品久久久久久久久久久| 亚洲人网站| 在线观看亚洲人成网站| 高清不卡毛片| 欧洲一区二区三区无码| 亚洲福利一区二区三区| 精品国产网| 在线欧美国产| 91无码人妻精品一区| 久久99精品久久久久久不卡| 青青青伊人色综合久久| 亚洲人成影视在线观看| 国产色网站| 在线a视频免费观看| 9丨情侣偷在线精品国产| 97视频在线观看免费视频| 亚洲成人手机在线| 亚洲第一成网站| 国产午夜一级毛片| 日韩视频免费| 国产玖玖视频| 午夜福利无码一区二区| 亚洲综合香蕉| 国产情精品嫩草影院88av| 88av在线| 亚洲狼网站狼狼鲁亚洲下载| 中文字幕一区二区人妻电影| 四虎成人在线视频| 国产精品刺激对白在线| V一区无码内射国产|