基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究_第1頁
基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究_第2頁
基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究_第3頁
基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究_第4頁
基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究摘要:近年來,由于科學(xué)技術(shù)的飛速發(fā)展,計(jì)算機(jī)的視覺技術(shù)與視覺圖像的并行處理技術(shù)在我們生活中所扮演的角色越來越重要。本課題將會(huì)圍繞著在視頻監(jiān)控圖像中,對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)識(shí)別以及對(duì)目標(biāo)跟蹤的算法展開研究,以此來重點(diǎn)實(shí)現(xiàn)算法的實(shí)時(shí)性、可靠性、算法的軟硬件兼容以及算法的處理速度。為了實(shí)現(xiàn)算法的流程,將利用Python語言和OpenCV視覺庫來搭建運(yùn)行平臺(tái),對(duì)數(shù)字圖像的去噪、目標(biāo)檢測(cè)的實(shí)時(shí)性和可靠性與跟蹤算法的穩(wěn)定性與可靠性進(jìn)行研究。本文中所運(yùn)行的算法將實(shí)現(xiàn)從視頻監(jiān)控圖像里自動(dòng)識(shí)別出不同輪廓外形的物體并對(duì)其運(yùn)動(dòng)的軌跡進(jìn)行持續(xù)跟蹤。關(guān)鍵詞:OpenCV視覺庫;Python語言;目標(biāo)識(shí)別與跟蹤;數(shù)字圖像處理

目錄1. 引言 11.1 課題背景 11.2 研究現(xiàn)狀 11.2.1 目標(biāo)的自動(dòng)識(shí)別與追蹤技術(shù)發(fā)展歷史 11.2.2 OpenCV的發(fā)展現(xiàn)狀 21.2.3 Python的發(fā)展現(xiàn)狀 31.3 研究的意義與目的 31.4 主要研究?jī)?nèi)容 42 計(jì)算機(jī)圖像處理相關(guān)技術(shù) 52.1 圖像顏色模型 52.2 圖像處理 52.3 圖像灰度化 62.4 Canny邊緣檢測(cè) 62.5 常見的圖像濾波方式 73 基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究的設(shè)計(jì) 93.1 程序運(yùn)行開發(fā)環(huán)境搭載 93.2 算法流程設(shè)計(jì) 93.3 圖像的識(shí)別 103.3.1 YOLOv4算法 103.3.2 YOLOv4算法的調(diào)用 113.3.3 程序框架的設(shè)計(jì) 113.3.4 目標(biāo)識(shí)別的設(shè)計(jì) 133.4 目標(biāo)圖像的跟蹤設(shè)計(jì) 144結(jié)論 18致謝 19參考文獻(xiàn) 20

引言 課題背景視覺系統(tǒng)是我們?nèi)祟惖闹饕杏X系統(tǒng),是我們獲取外界信息的主要途徑來源,它是一種為我們?nèi)祟愄峁┴S富的外界信息的重要媒介。跟據(jù)統(tǒng)計(jì)顯示,我們所接收到的80%左右的信息都是通過視覺系統(tǒng)接收的。然而,因?yàn)槿祟惖囊曇昂途栴}限制,我們的視覺系統(tǒng)在各個(gè)領(lǐng)域的應(yīng)用受到了很大的限制,工作效率也很低。隨著近幾年以來,圖像處理技術(shù)的快速發(fā)展,也相應(yīng)地對(duì)目標(biāo)自動(dòng)識(shí)別和跟蹤技術(shù)的發(fā)展產(chǎn)生了極大的促進(jìn)作用。尤其是在不同的環(huán)境下,如何實(shí)現(xiàn)目標(biāo)的準(zhǔn)確識(shí)別和穩(wěn)定的跟蹤,其相關(guān)方面的研究具有重要的理論價(jià)值和實(shí)踐意義。圖像處理與識(shí)別技術(shù)是一項(xiàng)包含眾多學(xué)科領(lǐng)域的先進(jìn)高科技研究。隨著計(jì)算機(jī)軟件技術(shù)和硬件技術(shù)的不斷提高,計(jì)算機(jī)圖像處理與識(shí)別技術(shù)在20世紀(jì)80年代中期到90年代末期得到了高速發(fā)展,并且開始在工業(yè)、農(nóng)業(yè)、公共交通、經(jīng)濟(jì)金融、地質(zhì)勘探、海洋觀察、氣象預(yù)報(bào)、生物醫(yī)學(xué)、軍事研究、公安監(jiān)控、電商服務(wù)、衛(wèi)星定位、機(jī)器人視覺系統(tǒng)、目標(biāo)跟蹤、車輛GPS導(dǎo)航、多媒體網(wǎng)絡(luò)信息通信等眾多領(lǐng)域被廣泛應(yīng)用,收獲了明顯的經(jīng)濟(jì)效益和不錯(cuò)的社會(huì)反響。研究?jī)r(jià)值大到戰(zhàn)爭(zhēng)中對(duì)敵人的飛機(jī),艦船,導(dǎo)彈等軍事目標(biāo)的攔截,小到我們生活中手機(jī)照相自動(dòng)對(duì)人臉識(shí)別并對(duì)焦,這項(xiàng)技術(shù)在我們身邊可謂是無處不在。其在機(jī)械工業(yè)領(lǐng)域也有廣泛運(yùn)用的前景,例如對(duì)精細(xì)的小零件進(jìn)行分類,人眼在這種高精度環(huán)境下不能時(shí)刻保持高強(qiáng)度狀態(tài),所以需要利用計(jì)算機(jī)來進(jìn)行識(shí)別和分類。目前,計(jì)算機(jī)圖像的處理與識(shí)別技術(shù)被人們當(dāng)作是認(rèn)識(shí)和改造新世界的重要方法,是在21世紀(jì)信息化時(shí)代能引領(lǐng)我們未來發(fā)展的一門高新技術(shù)學(xué)科[1]。研究現(xiàn)狀目標(biāo)的自動(dòng)識(shí)別與追蹤技術(shù)發(fā)展歷史目標(biāo)的自動(dòng)識(shí)別和跟蹤技術(shù)是現(xiàn)代科學(xué)界在視覺領(lǐng)域研究的熱門話題,伴隨著計(jì)算機(jī)技術(shù)的高速發(fā)展和計(jì)算機(jī)應(yīng)用的廣泛普及,目標(biāo)的自動(dòng)識(shí)別和跟蹤技術(shù)取得了顯著的進(jìn)步[2]。上個(gè)世紀(jì)對(duì)于圖像的處理主要集中在對(duì)單幅圖像的處理,即使在處理動(dòng)態(tài)圖像時(shí)跟蹤其中運(yùn)動(dòng)的目標(biāo),也具有明顯的靜態(tài)圖像處理色彩。直至上世紀(jì)80年代,光流法被提出,目標(biāo)的跟蹤研究才在真正意義上踏入了研究動(dòng)態(tài)圖像序列的領(lǐng)域。但是光流法對(duì)于現(xiàn)在的計(jì)算機(jī)處理速度來說挑戰(zhàn)過于艱巨,在實(shí)際應(yīng)用時(shí)很難滿足實(shí)時(shí)性[3]。此外,在視頻序列中存在的噪聲會(huì)對(duì)光流法的追蹤產(chǎn)生極大的干擾,因此光流法現(xiàn)在很難得到廣泛的應(yīng)用。由于對(duì)視覺跟蹤這一項(xiàng)技術(shù)的研究?jī)r(jià)值和研究回報(bào)非常高,并且隨著計(jì)算機(jī)技術(shù)在上世紀(jì)末期取得的卓越進(jìn)步,人們對(duì)于計(jì)算機(jī)視覺跟蹤技術(shù)發(fā)展的需求愈發(fā)強(qiáng)烈,這使得歐美等發(fā)達(dá)國家開始了對(duì)視覺跟蹤技術(shù)開展了深入探索和研究。1997年通過美國國防署牽頭,美國CarnegieMellon大學(xué)為首,由麻省理工大學(xué)等眾多知名高校參與的視覺監(jiān)控重大項(xiàng)目VASM(VisualSurveillanceandMonitoring)成立,在對(duì)用于戰(zhàn)場(chǎng)和普通民用場(chǎng)所進(jìn)行監(jiān)控的自動(dòng)視頻理解技術(shù)這一課題展開研究。美國波士頓大學(xué)研制的用于在高速公路上行駛的汽車上的實(shí)時(shí)視覺系統(tǒng)采用顏色,邊緣和運(yùn)動(dòng)信息來識(shí)別和跟蹤道路邊界、車道和其他車輛。Maryland大學(xué)所研制的實(shí)時(shí)視覺監(jiān)控系統(tǒng)是對(duì)一個(gè)人及其肢體行為進(jìn)行實(shí)時(shí)處理的系統(tǒng),它不僅能夠檢測(cè)并跟蹤人的肢體活動(dòng),還可以通過建立人物的外觀模型來實(shí)現(xiàn)對(duì)多個(gè)人進(jìn)行目標(biāo)跟蹤,甚至還能夠檢測(cè)出是否有物體被跟蹤對(duì)象攜帶等行為[4]。此外,英國的雷丁大學(xué)對(duì)車輛和行人進(jìn)行跟蹤并開展其交互作用識(shí)別的相關(guān)研究。美國麻省理工大學(xué)在物體的檢測(cè)、識(shí)別和跟蹤方面也做了大量研究工作。國內(nèi)在1986年開始對(duì)視覺跟蹤技術(shù)展開研究,在視覺跟蹤領(lǐng)域的理論知識(shí)與實(shí)踐技術(shù)方面得到了發(fā)展[5]。除此之外,中國科學(xué)院自動(dòng)化研究所、清華大學(xué)、交通大學(xué)等在目標(biāo)檢測(cè)、識(shí)別和跟蹤方面做了大量研究工作,取得了一系列研究成果。目前這項(xiàng)技術(shù)在民用領(lǐng)域,如視頻監(jiān)控,人臉識(shí)別,車輛識(shí)別等場(chǎng)合應(yīng)用研究比較多,取得了較大的成就。OpenCV的發(fā)展現(xiàn)狀OpenCV是OpenSourceComputerVisionLibrary的簡(jiǎn)稱,是由英特爾公司所資助的開源計(jì)算機(jī)視覺庫,包含許多計(jì)算機(jī)視覺方面的通用算法來實(shí)現(xiàn)圖像的處理,比如說圖像的特征檢測(cè)與追蹤、運(yùn)動(dòng)軌跡分析以及目標(biāo)的識(shí)別和分割。隨著時(shí)代發(fā)展,人們對(duì)數(shù)字圖像的處理需求不斷增加,越來越多的圖像處理軟件和程序也應(yīng)運(yùn)而生。但它們或多或少都有些缺點(diǎn):很少有軟件包對(duì)高級(jí)數(shù)學(xué)函數(shù)進(jìn)行收錄;MATLAB雖然擁有豐富的數(shù)學(xué)函數(shù),但是其運(yùn)行速度相比較其他的軟件不夠理想;大多數(shù)軟件包對(duì)網(wǎng)絡(luò)服務(wù)器程序的應(yīng)用支持較差;大部分軟件包缺少可嵌入性。OpenCV是在C/C++語言的基礎(chǔ)上所開發(fā)的一種開源軟件,它可以在Linux、Windows、Android等操作系統(tǒng)上運(yùn)行,還提供有MATLAB、Python等語言的接口,使許多計(jì)算機(jī)視覺方面的很多算法以及圖像處理的實(shí)際操作得以實(shí)現(xiàn),其巨大的函數(shù)庫可以為大多數(shù)計(jì)算機(jī)視覺問題創(chuàng)建一個(gè)完整的解決方案[6]。OpenCV因?yàn)槠涓咚降膱D像處理和矩陣運(yùn)算能力,函數(shù)處理庫豐富多樣,可以大大減少開發(fā)人員開發(fā)時(shí)的投入精力,有效地提高程序的開發(fā)效率并減少運(yùn)行時(shí)程序報(bào)錯(cuò)的幾率。因此在計(jì)算機(jī)視覺的圖像處理上廣泛使用OpenCV,OpenCV近幾年在圖像的特征檢測(cè)以及圖像識(shí)別方面所發(fā)揮的作用越來越重要。CV圖像處理和視覺算法MCV圖像處理和視覺算法MLL統(tǒng)計(jì)分類器HihhGUIGUI、圖像和視頻輸入、輸出CCXCORE基本結(jié)構(gòu)和算法、XML支持、繪圖函數(shù)圖STYLEREF1\s1.SEQ圖\*ARABIC\s11OpenCV基本架構(gòu)Python的發(fā)展現(xiàn)狀Python是在上世紀(jì)90年代初所設(shè)計(jì)的一門計(jì)算機(jī)編程語言,它不僅有高效的高級(jí)數(shù)據(jù)結(jié)構(gòu)可以選擇,還可以簡(jiǎn)潔明了地直接面向編程對(duì)象進(jìn)行編程。自2004年起,Python的使用率逐年增長(zhǎng)。Python語言作為解釋型的通用語言,因?yàn)槠鋼碛泻?jiǎn)潔、易讀和可擴(kuò)展性等相比于其他編程開發(fā)語言所不具備的特點(diǎn),國外進(jìn)行一些科學(xué)計(jì)算的研發(fā)也越來越傾向于使用Python語言,有些知名的大學(xué)甚至采用Python語言來進(jìn)行程序設(shè)計(jì)的教學(xué)。此外,Python的調(diào)用接口在眾多開源的科學(xué)計(jì)算軟件中都能提供,例如計(jì)算機(jī)OpenCV視覺庫、三位可視化庫VTK以及醫(yī)學(xué)圖像處理庫ITK;而Python也有不少專用科學(xué)計(jì)算擴(kuò)展庫,比如說為Python分別提供了數(shù)值的快速處理、數(shù)值的計(jì)算和繪制圖片等功能的NumPy、SciPy和Matplotlib。因此在實(shí)驗(yàn)數(shù)據(jù)處理、圖表繪制以及對(duì)應(yīng)用程序開發(fā)方面選擇Python語言以及用它眾多的程序擴(kuò)展庫來搭建開發(fā)環(huán)境成了眾多人的選擇。Python目前的前景發(fā)展良好,是人工智能編程首選的語言,除此之外Python還在Web開發(fā)、嵌入式應(yīng)用開發(fā)和自動(dòng)化運(yùn)行等方面展現(xiàn)出了越來越大的作用。研究的意義與目的感覺是人們與外界交流的橋梁,是人們感受外界信息的窗口,它的主要作用是識(shí)別我們周圍的物體并判別它們的聯(lián)系,使人類的主觀思維和客觀世界建立起關(guān)系。而視覺系統(tǒng)是人類的主要感官系統(tǒng)之一,是獲取外界信息的主要媒介。但我們的眼睛受到視野和精度限制,使我們的視覺系統(tǒng)在各領(lǐng)域發(fā)揮的作用都非常有限。隨著計(jì)算機(jī)技術(shù)的高速發(fā)展,讓計(jì)算機(jī)處理視覺信息,彌補(bǔ)人類視覺系統(tǒng)的不足成為了一項(xiàng)重要研究課題,計(jì)算機(jī)視覺技術(shù)這一項(xiàng)研究的發(fā)展因此得到了推動(dòng)。計(jì)算機(jī)視覺這一學(xué)科是將圖像處理、人工智能、計(jì)算機(jī)識(shí)別模式、計(jì)算機(jī)圖形、物理和數(shù)學(xué)等領(lǐng)域相融合交互性很強(qiáng)的學(xué)科。計(jì)算機(jī)視覺的研究目的是把我們感官所感知到的外部世界中物體的形狀,位置以及運(yùn)動(dòng)信息進(jìn)行識(shí)別、描述和儲(chǔ)存。對(duì)運(yùn)動(dòng)的目標(biāo)進(jìn)行追蹤是視頻分析方面的研究,視頻分析的研究方向是對(duì)圖像的序列進(jìn)行分析處理,分析預(yù)測(cè)出目標(biāo)運(yùn)動(dòng)的軌跡和運(yùn)動(dòng)的規(guī)律或者是向系統(tǒng)決策提供是否支持執(zhí)行上報(bào)信息的支持,主要研究?jī)?nèi)容有對(duì)運(yùn)動(dòng)物體檢測(cè)、對(duì)目標(biāo)識(shí)別并分類以及目標(biāo)追蹤等[7]。對(duì)視頻中運(yùn)動(dòng)的目標(biāo)進(jìn)行追蹤的研究和應(yīng)用是人們對(duì)計(jì)算機(jī)視覺領(lǐng)域重點(diǎn)關(guān)心的科學(xué)技術(shù),現(xiàn)在在科學(xué)建設(shè)、國防技術(shù)、航空航天等科學(xué)研究方面正被日漸廣泛地應(yīng)用,上到國家科研,下到人民生活,目標(biāo)的自動(dòng)識(shí)別和跟蹤技術(shù)在現(xiàn)代社會(huì)中正扮演著重要作用并且發(fā)展前景廣闊。主要研究?jī)?nèi)容1.熟悉OpenCV的整體結(jié)構(gòu),熟悉并掌握OpenCV編程,了解OpenCV的算法,并使用算法運(yùn)行出結(jié)果,實(shí)現(xiàn)在場(chǎng)景中的自動(dòng)識(shí)別與追蹤系統(tǒng)。2.使用Python語言編程運(yùn)行目標(biāo)自動(dòng)識(shí)別和跟蹤的程序并分析程序結(jié)構(gòu),了解其原理。3.了解計(jì)算機(jī)圖像處理的過程,即對(duì)數(shù)字圖像去噪、目標(biāo)檢測(cè)的實(shí)時(shí)性和可靠性與跟蹤算法的穩(wěn)定性與可靠性進(jìn)行研究。4.從監(jiān)控視頻圖像中的眾多物體中準(zhǔn)確識(shí)別出不同的物體并進(jìn)行位置持續(xù)追蹤。

計(jì)算機(jī)圖像處理相關(guān)技術(shù)圖像顏色模型計(jì)算機(jī)圖像中的顏色模型就是用一組數(shù)值來對(duì)顏色進(jìn)行描述的數(shù)學(xué)模型。下面主要介紹下RGB模型。RGB顏色模型又被叫做三基色模型,是計(jì)算機(jī)圖像中最常用的顏色模型,也是編輯圖像模型所用到的最佳色彩模式。RGB色彩模型采用三維笛卡爾坐標(biāo)系,在顏色坐標(biāo)空間內(nèi),任何一種色光都可以由紅(R,波長(zhǎng)700nm)、綠(G,波長(zhǎng)546.1nm)、藍(lán)(B,波長(zhǎng)435.8nm)三基色按照不同的比例相加混合而成[8]。圖STYLEREF1\s2.SEQ圖\*ARABIC\s11RGB顏色模型RGB模型如圖2.1所示,其坐標(biāo)系原點(diǎn)位置(0,0,0)所對(duì)應(yīng)的顏色為黑色,離原點(diǎn)距離最遠(yuǎn)的頂點(diǎn)為白色。圖像處理為了對(duì)視頻中運(yùn)動(dòng)的目標(biāo)進(jìn)行識(shí)別并追蹤,要先對(duì)視頻中的圖像序列開展目標(biāo)分割并識(shí)別,即先對(duì)所要分析處理的圖像序列進(jìn)行處理前的準(zhǔn)備工作。為了消除圖像中的噪聲等一些沒有用的信息,我們可以通過對(duì)圖像進(jìn)行預(yù)處理來達(dá)成目的,這有助于我們?cè)诤罄m(xù)過程中對(duì)圖像中運(yùn)動(dòng)的目標(biāo)進(jìn)行準(zhǔn)確地識(shí)別,這樣不僅可以簡(jiǎn)化圖像數(shù)據(jù),還可以提高算法的可靠性。對(duì)圖像進(jìn)行平滑去噪是預(yù)處理中所使用的常見方法,它去除圖像中的無用信息的方式是抑制圖像中的噪聲,然后高亮顯示出圖像中重要的外部輪廓信息并進(jìn)行提取。圖像的平滑處理令圖像的亮度平緩漸變,圖像突變梯度減小以達(dá)到改善圖像質(zhì)量這一目的[9]。讓圖像的顏色灰度變化更光滑是圖像平滑處理的目的。圖像的平滑可以通過低通濾波來達(dá)成[10]。不同的濾波所發(fā)揮的作用各不相同,低通濾波是將圖像中的噪聲去除,而高通濾波則是將圖像邊緣提取出來。圖像的銳化是對(duì)圖像邊緣輪廓進(jìn)行補(bǔ)償,通過增強(qiáng)圖像的邊緣以及灰度跳變部分來讓圖像變得清晰。圖像銳化的目的是突出圖像上物體的邊緣輪廓,或是某些線性目標(biāo)要素的特征,從而有利于對(duì)目標(biāo)物體的邊界進(jìn)行分割提取。圖像的銳化提高了地物邊緣與周圍像元之間的反差,因此也被稱為邊緣增強(qiáng)[11]。圖像灰度化由于彩色圖像中所存儲(chǔ)的數(shù)據(jù)量較大,會(huì)增加后續(xù)目標(biāo)檢測(cè)和追蹤的計(jì)算量,所以需要對(duì)圖像進(jìn)行灰度化處理?;叶戎傅氖敲恳粋€(gè)像素在灰度圖像上的顏色值,指的是在黑白圖像中每一個(gè)點(diǎn)的顏色深度,范圍在0~255之間,0代表黑色,255代表白色,灰度值指的是色彩的濃淡程度?,F(xiàn)在大部分的彩色圖像采用的都是RGB顏色模式,所以在對(duì)圖像進(jìn)行處理的時(shí)候,要分別對(duì)R、G、B三種顏色分量進(jìn)行處理,但是實(shí)際上RGB顏色模型并不能完全反映出圖像的形態(tài)特征,只是從光學(xué)的原理上來對(duì)顏色進(jìn)行調(diào)配[12]。圖像的灰度化處理是圖像預(yù)處理的重要步驟,為之后進(jìn)行圖像分割、圖像識(shí)別和圖像分析等后續(xù)上層操作打下基礎(chǔ)。圖像灰度化主要有分量法,最大值法和平均值法三種方法。分量法是將彩色圖像中的三分量的亮度作為三個(gè)灰度圖像的灰度值??梢粤袨镕1(i,j)=R(i,j);F2(i,j)=G(i,j);F3(i,j)=B(i,j)三個(gè)分式,其中Fk(i,j)(k=1,2,3)為轉(zhuǎn)換后的灰度圖像在(i,j)處的灰度值。最大值法是將彩色圖像中的RGB三原色分量中,亮度的最大值作為灰度圖的灰度值。即R=G=B=max(R,G,B)(2.1)平均值法是求取彩色圖像中的RGB三原色分量亮度的平均值得到的一個(gè)灰度值。即R=G=B=(R+G+B)/3(2.2)Canny邊緣檢測(cè)Canny邊緣檢測(cè)法是在1986年被提出的,但直到今天它仍然是圖像邊緣檢測(cè)算法中最優(yōu)異的算法之一。和其他算法比較,Canny邊緣檢測(cè)不僅可以充分利用邊緣的梯度方向,抑制了邊緣梯度方向的非極大值,還對(duì)最后得到的二值圖像利用了雙閾值滯后閾值處理。Canny邊緣檢測(cè)基于三個(gè)基本條件:低錯(cuò)誤率;很好地定位邊緣點(diǎn);單一邊緣點(diǎn)響應(yīng)[13]。所以,Canny邊緣檢測(cè)法的步驟如下:首先,用高斯濾波平滑處理輸入的圖像來濾除噪聲以降低報(bào)錯(cuò)率;接著通過一階偏導(dǎo)的有限差分法運(yùn)算梯度幅度的大小和方向,以此估算出每一點(diǎn)的邊緣方向和強(qiáng)度;然后根據(jù)計(jì)算得出的梯度方向,對(duì)梯度幅值進(jìn)行非極大值抑制,通過這一步操作來獲得梯度幅值內(nèi)最大的像素點(diǎn)并把它設(shè)定為邊緣點(diǎn);除去所有不滿足成為邊緣點(diǎn)條件的點(diǎn),通過留下的邊緣點(diǎn)來確定輪廓的邊緣;雙閾值處理和邊緣的連接,對(duì)梯度幅值進(jìn)行邊緣點(diǎn)的檢測(cè)。常見的圖像濾波方式圖像濾波是在盡量不破壞圖像的細(xì)節(jié)特征的基礎(chǔ)上,抑制目標(biāo)圖像中的噪聲,是在圖像預(yù)處理過程中不可缺少的一部分,這一操作對(duì)圖像進(jìn)行預(yù)處理的結(jié)果會(huì)令后續(xù)更上層的圖像處理和圖像分析的可靠性、有效性直接產(chǎn)生重大影響。又因?yàn)槌上裣到y(tǒng)、傳輸介質(zhì)和記錄設(shè)備目前還不夠完善,數(shù)字圖像在形成和傳輸?shù)倪^程中經(jīng)常會(huì)被各種各樣的噪聲所污染。除此之外,在圖像處理的某些過程當(dāng)中,當(dāng)輸入的圖片不符合預(yù)期圖像效果時(shí),會(huì)在生成出的圖像中引入噪聲。產(chǎn)生的這些噪聲通常會(huì)以孤立的像素點(diǎn)或像素塊的形式出現(xiàn)在圖像中,產(chǎn)生強(qiáng)烈的視覺效果。一般來說,噪聲信號(hào)是獨(dú)立于被研究的對(duì)象的,并且以干擾圖像可觀察信息的無用信息的形式出現(xiàn)。對(duì)于數(shù)字圖像信號(hào),噪聲表是指噪聲的最大值或最小值。這些極值對(duì)各個(gè)圖像像素的真實(shí)的灰度值或增大,或減小,使得圖像中產(chǎn)生亮點(diǎn)和暗點(diǎn),對(duì)視覺觀感造成了影響,使圖像的質(zhì)量大大降低,對(duì)后續(xù)的圖像恢復(fù)、分割、特征提取和圖像識(shí)別等操作產(chǎn)生影響。為了有效地去除目標(biāo)和背景中的噪聲,構(gòu)造一個(gè)有效的噪聲抑制濾波器必須考慮。同時(shí),可以很好地保護(hù)圖像對(duì)象的形狀、大小以及特定的幾何和拓?fù)涮卣?。常見的濾波方法有均值濾波,高斯濾波,中值濾波和雙邊濾波等。均值濾波是一種典型的線性濾波算法。它是在圖像上給目標(biāo)像素一個(gè)模板,該模板包括目標(biāo)像素在內(nèi)和周圍8個(gè)像素共同構(gòu)成一個(gè)濾波模板,然后再用模板中的全體像素的平均值來代替每一個(gè)像素原來的像素值,這樣能夠降低圖像中像素點(diǎn)“突然”的變化,這一特點(diǎn)也使得均值濾波器在降低圖像當(dāng)中噪聲的同時(shí),也會(huì)使圖像的邊緣變得模糊[14]。均值濾波器的處理結(jié)果是把圖像中與濾波器模板大小相比較小的像素區(qū)域?yàn)V除。圖STYLEREF1\s2.SEQ圖\*ARABIC\s12均值濾波后效果中值濾波是一種非線性信號(hào)處理方法,因此它既是一種非線性濾波器,又是一種統(tǒng)計(jì)排序?yàn)V波器。它是將每一個(gè)像素點(diǎn)的灰度值設(shè)置為該點(diǎn)所在的周圍區(qū)域內(nèi)的所有像素的灰度中值。它處理孤立的噪聲像素,如椒鹽噪聲和脈沖噪聲有很好的濾波效果,可以保持圖像的邊緣特性,不會(huì)造成圖像外部輪廓的顯著模糊。中值濾波是將數(shù)字圖像或數(shù)字序列中的一個(gè)像素點(diǎn)的值替換為該點(diǎn)附近所有像素點(diǎn)的中值,使其周圍的所有像素值都接近于一個(gè)真實(shí)值,從而消除孤立的噪聲點(diǎn)。中值濾波對(duì)于脈沖噪聲有很好的濾波效果,特別是在濾波噪聲時(shí),它可以保護(hù)信號(hào)的邊緣不被模糊。而線性濾波方法不具備這些優(yōu)良的特性。此外,中值濾波算法相比于其他濾波算法較為簡(jiǎn)潔,更容易通過硬件實(shí)現(xiàn)。因此,中值濾波方法被廣泛應(yīng)用于數(shù)字信號(hào)處理領(lǐng)域。高斯濾波是一種線性平滑濾波,主要被用來消除高斯噪聲,在圖像處理的降噪過程中被廣泛運(yùn)用。一般來說,高斯濾波就是對(duì)整個(gè)圖像的像素點(diǎn)進(jìn)行加權(quán)平均的過程。每個(gè)像素的值都是通過對(duì)其本身和鄰域內(nèi)其他像素值的加權(quán)平均得到的。高斯濾波的具體工作原理是用一個(gè)模板去掃描圖像中的每一個(gè)像素點(diǎn),然后用模板所確定的鄰域像素的加權(quán)平均灰度值去替換掉模板中心像素的值。高斯濾波的作用相當(dāng)于是信號(hào)的濾波器,用于對(duì)信號(hào)的平滑處理。雙邊濾波是一種非線性的濾波方法,是集合了圖像的空間的鄰近性和像素值的相似度,并同時(shí)考慮了空間信息和灰度的相似度,以實(shí)現(xiàn)保持原有的邊緣輪廓和去除噪聲的目的。雙邊濾波對(duì)輪廓邊緣的保持較好。通常用來降低噪聲的高斯濾波會(huì)使輪廓邊緣的模糊更加明顯,而對(duì)于高頻細(xì)節(jié)的保護(hù)效果不夠明顯。雙邊濾波器是比高斯濾波器多一個(gè)高斯方差sigma-d,即基于空間分布的高斯濾波器函數(shù)。因此,在靠近輪廓邊緣的地方,離邊緣較遠(yuǎn)的像素點(diǎn)不會(huì)對(duì)邊緣上的像素值產(chǎn)生太大的影響,從而使輪廓邊緣附近的像素值得到了較好的保存。但由于這種方法保留了太多的高頻信息,對(duì)于彩色圖像中的高頻噪聲,雙邊濾波器不能完全干凈地將高頻噪聲濾除,只能用于對(duì)低頻信息中的噪聲進(jìn)行濾波。由于不同類型的噪聲其產(chǎn)生的原因也各不相同,每一種濾波器對(duì)于不同的噪聲濾波效果也不一樣,選擇濾波器的時(shí)候要根據(jù)具體的濾波要求對(duì)不同的噪聲選用合適的濾波器來進(jìn)行濾除。濾除高斯噪聲,雙邊濾波器相較于其他幾種濾波器的去噪效果較好,圖像輪廓邊緣能很好地保留。處理椒鹽噪聲,相比其他幾種濾波器來說,中值濾波器的去噪效果更好,能夠基本濾除噪聲而其他幾種濾波方式只是稍微弱化了噪聲影響,效果甚微?;趫D像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究的設(shè)計(jì)實(shí)現(xiàn)目標(biāo)的自動(dòng)識(shí)別和跟蹤技術(shù)的程序主要分兩部分:識(shí)別不同圖像的邊緣輪廓和對(duì)識(shí)別的目標(biāo)的持續(xù)跟蹤。程序運(yùn)行開發(fā)環(huán)境搭載程序開發(fā)環(huán)境的配置是運(yùn)行算法的重要基礎(chǔ)。本文中運(yùn)行的目標(biāo)自動(dòng)識(shí)別和跟蹤程序是以Python語言為基礎(chǔ),OpenCV視覺庫中豐富的函數(shù)及算法為支持,在PyCharm中安裝Python解釋器來輸入程序進(jìn)行試運(yùn)行,利用Anaconda軟件運(yùn)行結(jié)果。PyCharm是一種Python語言的集成開發(fā)環(huán)境,擁有一整套提高Python語言開發(fā)效率的工具,能幫助我們進(jìn)行調(diào)試、代碼行跳轉(zhuǎn)、項(xiàng)目管理、函數(shù)語法高亮提示等一系列高級(jí)的輔助功能,對(duì)于檢查程序的語法問題非常有幫助,故在下載了PyCharm的基礎(chǔ)上加裝Python解釋器來調(diào)試程序完善代碼。由于VisualStudio軟件平臺(tái)對(duì)Python語言支持不夠,換用Anaconda來執(zhí)行運(yùn)算算法結(jié)果。Anaconda支持眾多操作系統(tǒng),還提供有環(huán)境管理功能,能很好地解決眾多Python版本的共存問題以及外部環(huán)境安裝配置等。圖STYLEREF1\s3.SEQ圖\*ARABIC\s11Python解釋器配置算法流程設(shè)計(jì)程序設(shè)計(jì)主要思路是先通過函數(shù)命令讀取文件夾中所需用到的視頻文件,接著將讀取的視頻文件拆分成一幀一幀的圖像,并對(duì)每一幀圖像進(jìn)行預(yù)處理,濾除圖像噪聲并提取運(yùn)動(dòng)目標(biāo)的外部輪廓,為之后的目標(biāo)識(shí)別打下基礎(chǔ)。隨后識(shí)別視頻圖像中的不同汽車并對(duì)不同的汽車編不同的號(hào)碼。最后部分是對(duì)識(shí)別出的不同汽車在較近距離的視野內(nèi)進(jìn)行持續(xù)穩(wěn)定的追蹤,同時(shí)能看到坐標(biāo)位置的變化。圖像采集圖像采集使圖像平滑使圖像平滑圖像預(yù)處理圖像預(yù)處理噪聲去除噪聲去除目標(biāo)識(shí)別圖像分割目標(biāo)識(shí)別圖像分割目標(biāo)特征提取目標(biāo)特征提取跟蹤算法跟蹤算法目標(biāo)跟蹤確定目標(biāo)位置目標(biāo)跟蹤確定目標(biāo)位置圖STYLEREF1\s3.SEQ圖\*ARABIC\s12算法流程設(shè)計(jì)思路圖像的識(shí)別識(shí)別運(yùn)動(dòng)中的目標(biāo)物體是要在背景圖像中將某一部分確定的區(qū)域分割并提取出來的過程[15]。要想準(zhǔn)確地識(shí)別出運(yùn)動(dòng)狀態(tài)下的目標(biāo)就必須消除周圍場(chǎng)景的干擾如光線,云層,影子等一系列自然性因素造成的干擾?,F(xiàn)在對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)的算法主要分為兩類,一類是以背景差分法和光流法為代表,基于檢測(cè)目標(biāo)運(yùn)動(dòng)信息的算法[16]。另一類是對(duì)特定的目標(biāo)進(jìn)行檢測(cè)的算法,這種算法是通過讀取目標(biāo)的特征信息來建立運(yùn)動(dòng)模型,不會(huì)受到目標(biāo)運(yùn)動(dòng)信息影響,可以準(zhǔn)確地檢測(cè)到特定目標(biāo),更具有準(zhǔn)確性和可靠性,但是計(jì)算量較大,所以實(shí)時(shí)性較差[17]。YOLOv4算法YOLO系列的目標(biāo)檢測(cè)算法是一種較為經(jīng)典的單階段目標(biāo)檢測(cè)框架,具有較快的推算速度,可以較好地滿足現(xiàn)實(shí)場(chǎng)景的要求。YOLO一開始是被Redmon提出的一個(gè)基于回歸單階段的算法,在YOLOv3版本中設(shè)計(jì)引入了特征金字塔網(wǎng)絡(luò)提高了檢測(cè)的精度以及檢測(cè)目標(biāo)的能力[18]。目標(biāo)檢測(cè)部分程序所用到的YOLOv4算法是以YOLOv3為基礎(chǔ)進(jìn)行改進(jìn),使得其運(yùn)算速度和運(yùn)算精度都得到了極大提升。下圖展示了YOLOv4目標(biāo)檢測(cè)算法的整體架構(gòu)圖。圖STYLEREF1\s3.SEQ圖\*ARABIC\s13YOLOv4網(wǎng)絡(luò)架構(gòu)一個(gè)目標(biāo)檢測(cè)算法通??梢詣澐譃樗膫€(gè)通用模塊:輸入端、基準(zhǔn)網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)與Head輸出端。輸入端就是所需處理的圖像輸入的端口,這一階段是圖像進(jìn)行預(yù)處理的階段,系統(tǒng)會(huì)將要輸入的圖像進(jìn)行縮放,使其與網(wǎng)絡(luò)的輸入大小一致并進(jìn)行歸一化操作?;鶞?zhǔn)網(wǎng)絡(luò)一般是用于提取通用特征來表示的。YOLOv4使用了CSPDarknet53結(jié)構(gòu)作為基準(zhǔn)網(wǎng)絡(luò);用Mish激活函數(shù)來代替原來的RELU激活函數(shù)。此外,該模塊中還加入了DropBlock模塊,進(jìn)一步提高了模型的泛化能力。Neck網(wǎng)絡(luò)是用來提升特征的多樣性和魯棒性的,YOLOv4算法通過SSP模塊來融合不同尺寸的特征圖像。最后Head輸出端是用來輸出目標(biāo)檢測(cè)的結(jié)果。YOLOv4利用CIOU_LOSS函數(shù)來代替SmoothL1Loss函數(shù),并利用DIOU_NMS來代替?zhèn)鹘y(tǒng)的NMS操作,進(jìn)一步提升了算法的檢測(cè)精度[19]。YOLOv4算法的調(diào)用本文的目標(biāo)識(shí)別檢測(cè)程序是調(diào)用了YOLOv4算法架構(gòu),調(diào)用并讀取了路徑為dnn_model文件夾中物體的各種信息特征及數(shù)字圖像處理的卷積模板,對(duì)每幀的運(yùn)動(dòng)目標(biāo)特征完成提取,將其從背景圖像中提取出來,以此對(duì)目標(biāo)進(jìn)行識(shí)別。輸入端將每幀圖像縮放為608*608的大小,非極大抑制值設(shè)為0.4。圖STYLEREF1\s3.SEQ圖\*ARABIC\s14調(diào)用命令程序框架的設(shè)計(jì)在正式程序開始前,先使用import命令將OpenCV庫和Python擴(kuò)展程序庫以方便后續(xù)的程序命令實(shí)現(xiàn)和運(yùn)行。接著要讀取所需要用到的視頻文件,通過VideoCapture命令來加載讀取所需要的視頻文件素材。視頻的本質(zhì)上是一幀一幀眾多連續(xù)圖像的集合,對(duì)圖像中的目標(biāo)識(shí)別也是建立在識(shí)別目標(biāo)在每一幀上的位置,故需編輯算法完成視頻循環(huán)時(shí)逐幀提取視頻中的圖像。同時(shí)設(shè)定停止運(yùn)行并關(guān)閉程序窗口命令的鍵位,按Esc鍵釋放視頻文件,退出程序運(yùn)行,關(guān)閉所有窗口。此處使用了基礎(chǔ)的選擇結(jié)構(gòu)編寫程序來實(shí)現(xiàn)本次操作。圖STYLEREF1\s3.SEQ圖\*ARABIC\s15視頻幀圖像的提取按鍵按鍵所按鍵位是否為“Esc”是否釋放視頻,退出程序的運(yùn)行并關(guān)閉所有相關(guān)窗口繼續(xù)程序的運(yùn)行圖STYLEREF1\s3.SEQ圖\*ARABIC\s16中途退出運(yùn)行的程序流程當(dāng)前幀數(shù)讀取當(dāng)前幀數(shù)讀取當(dāng)前幀數(shù)+1當(dāng)前幀數(shù)+1當(dāng)前幀是否還有圖像當(dāng)前幀是否還有圖像否是否是視屏結(jié)束視屏結(jié)束結(jié)束程序運(yùn)行關(guān)閉所有窗口圖STYLEREF1\s3.SEQ圖\*ARABIC\s17逐幀判斷視頻是否結(jié)束的算法流程圖由于視頻的時(shí)長(zhǎng)是有限的,即圖像集合的幀數(shù)有限,當(dāng)視頻播放完畢時(shí),不能檢測(cè)到圖像,需要結(jié)束程序并退出運(yùn)行窗口。這里需要加入一個(gè)多結(jié)構(gòu)的程序來完成實(shí)現(xiàn)操作。先加入選擇結(jié)構(gòu)讀取當(dāng)前幀數(shù),初始幀數(shù)計(jì)數(shù)為0,先執(zhí)行操作使當(dāng)前幀數(shù)+1,接著判斷當(dāng)前幀是否還有圖像,如果沒有圖像則退出循環(huán),結(jié)束所有進(jìn)程并關(guān)閉窗口,如果還有圖像則說明當(dāng)前幀不是最后一幀,嵌套加入循環(huán)結(jié)構(gòu)繼續(xù)執(zhí)行count命令令當(dāng)前幀幀數(shù)+1,同時(shí)對(duì)當(dāng)前幀進(jìn)行計(jì)數(shù),繼續(xù)判斷,直到檢測(cè)到最后一幀圖像為止或手動(dòng)按下“Esc”鍵退出程序的運(yùn)行。目標(biāo)識(shí)別的設(shè)計(jì)為了完成對(duì)視頻中出現(xiàn)的各種車輛進(jìn)行目標(biāo)識(shí)別,再次使用import命令將對(duì)象檢測(cè)算法載入后,可以來檢測(cè)視頻框架中的目標(biāo)對(duì)象。在目標(biāo)檢測(cè)算法中讀取的名稱為dnn_model的文件里含有足夠的目標(biāo)對(duì)象信息來準(zhǔn)確地檢測(cè)識(shí)別出不同的目標(biāo)。不同的目標(biāo)經(jīng)過識(shí)別區(qū)分后,是要明確顯示出不同的運(yùn)動(dòng)目標(biāo)并簡(jiǎn)化算法,下面將直接通過程序把識(shí)別出的不同目標(biāo)分別用同一類型的矩形框框出一個(gè)個(gè)區(qū)域。此處由于視野較遠(yuǎn)處的目標(biāo)特征輪廓提取較為模糊,圖像特征信息難以被準(zhǔn)確識(shí)別,故距離鏡頭視野較遠(yuǎn)的目標(biāo)將不會(huì)被識(shí)別框出。完成了框出目標(biāo)物體的代碼后要確定框大小位置等信息,要想確定矩形框的位置就要有矩形起始點(diǎn)的位置和矩形的長(zhǎng)和寬。程序中使用(x,y,w,h)四個(gè)參數(shù)來確定框的大小和位置。其中x,y確定了矩形框左上角的頂點(diǎn)的坐標(biāo),w和h分別表示矩形框的長(zhǎng)和寬,(x+w,y+h)確定了矩形框右下角的點(diǎn),同時(shí)通過RGB顏色模型設(shè)定框的顏色,綠色(0,255,0)和框的粗細(xì),以此完成目標(biāo)識(shí)別并且框出識(shí)別到的不同目標(biāo)物體。程序中加入print命令來打印當(dāng)前幀的幀數(shù)以及此時(shí)屏幕中識(shí)別到的目標(biāo)物體框的頂點(diǎn)坐標(biāo)及長(zhǎng)寬確定當(dāng)前幀數(shù)中目標(biāo)的位置,為后續(xù)進(jìn)行目標(biāo)跟蹤的設(shè)計(jì)打下基礎(chǔ)。圖STYLEREF1\s3.SEQ圖\*ARABIC\s18框出識(shí)別出的運(yùn)動(dòng)目標(biāo)目標(biāo)圖像的跟蹤設(shè)計(jì)目前常見的目標(biāo)跟蹤算法分為四種:一種是基于建立的物體模型進(jìn)行跟蹤,一種是基于主動(dòng)輪廓進(jìn)行跟蹤,一種是基于區(qū)域進(jìn)行跟蹤,還有一種是基于特征進(jìn)行跟蹤[20]。本文采用基于對(duì)區(qū)域的跟蹤設(shè)計(jì),通過上一部分的設(shè)計(jì),在將識(shí)別出的目標(biāo)框出后,以每個(gè)目標(biāo)框作為區(qū)域,利用框出的目標(biāo)區(qū)域?qū)Σ煌哪繕?biāo)進(jìn)行跟蹤,在每個(gè)目標(biāo)框內(nèi)取中心點(diǎn)作為位置參考,以同一個(gè)中心點(diǎn)在不同幀的坐標(biāo)位置變化反應(yīng)物體的位置變化,通過對(duì)不同目標(biāo)框的跟蹤來實(shí)現(xiàn)對(duì)不同物體的跟蹤。根據(jù)上圖3.2的設(shè)計(jì)流程,之前已經(jīng)完成了對(duì)視頻逐幀圖像進(jìn)行預(yù)處理的準(zhǔn)備,并搭建完整個(gè)程序流程的框架和識(shí)別出圖像中不同的目標(biāo)后,是要設(shè)計(jì)出對(duì)識(shí)別出對(duì)不同的目標(biāo)進(jìn)行持續(xù)跟蹤的算法。盡管上一章運(yùn)行的程序已經(jīng)能夠識(shí)別并框出不同的目標(biāo),但是隨著視頻的播放,幀與幀之間圖像上的目標(biāo)并沒有關(guān)聯(lián),如果我們要跟蹤其中一個(gè)物體的位置變化,就要看這個(gè)物體識(shí)別框的坐標(biāo)位置變化,但是現(xiàn)在還不能實(shí)現(xiàn),因?yàn)楝F(xiàn)在無法判斷該識(shí)別框?qū)?yīng)了上一幀圖像中哪一個(gè)識(shí)別框,無法準(zhǔn)確匹配到同一輛車,得到確切的坐標(biāo)位置變化?,F(xiàn)在只是做到檢測(cè)一輛輛車的隨機(jī)框的坐標(biāo),隨著時(shí)間推移,他們之間沒有位置變化的聯(lián)系。所以這里要先取出框架的中心點(diǎn)并對(duì)其進(jìn)行編號(hào)以此確定每個(gè)物體的移動(dòng)位置變化。設(shè)框架中心點(diǎn)橫坐標(biāo)cx?。▁+x+w)/2,中心點(diǎn)縱坐標(biāo)cy?。▂+y+h)/2,同時(shí)以每個(gè)中心點(diǎn)為圓心,以RGB顏色模型確定中心點(diǎn)顏色(255,0,0)為紅色,畫一個(gè)小的實(shí)心圓,并創(chuàng)建一個(gè)數(shù)組來儲(chǔ)存這些中心點(diǎn)坐標(biāo)信息。此時(shí)隨著圖像上視頻的播放,不僅存在這一幀的中心點(diǎn),上一幀的中心點(diǎn)也被留在了視頻圖像上。雖然已經(jīng)能跟蹤到物體的位置變化,能比較物體和前一幀的坐標(biāo)位置,但隨著視頻的進(jìn)行,屏幕上的中心點(diǎn)會(huì)越來越多,進(jìn)而引發(fā)混亂,令存儲(chǔ)位置信息的數(shù)組越來越大,影響后續(xù)的運(yùn)行。我們需要進(jìn)行新的操作讓其僅檢查前后兩幀之間的變化,一步一步跟隨對(duì)象而不是保留對(duì)象所有的歷史紀(jì)錄。這里首先需要建立一個(gè)數(shù)組來存放當(dāng)前幀的中心點(diǎn)坐標(biāo),在這段程序后面建立一個(gè)用來存放前一幀的中心點(diǎn)坐標(biāo),并把當(dāng)前幀的中心點(diǎn)坐標(biāo)復(fù)制給它,便于比較,并用print指令將前后幀的中心點(diǎn)坐標(biāo)打印?,F(xiàn)在不僅可以得到前一幀和后一幀的坐標(biāo)比較,還可以利用兩坐標(biāo)點(diǎn)和勾股定理的計(jì)算函數(shù)來計(jì)算兩點(diǎn)間距離。同時(shí)把上一幀的坐標(biāo)點(diǎn)覆蓋存放先前幀坐標(biāo)的數(shù)組中,把當(dāng)前幀的坐標(biāo)點(diǎn)覆蓋存放進(jìn)這一幀坐標(biāo)的數(shù)組中。圖STYLEREF1\s3.SEQ圖\*ARABIC\s19前后幀坐標(biāo)比較完成了前后幀坐標(biāo)的對(duì)比,我們還要準(zhǔn)確判斷跟蹤的目標(biāo),并對(duì)他編號(hào)。這里通過插入一個(gè)判斷結(jié)構(gòu)比較前后幀之間的距離判斷是否為同一目標(biāo),假設(shè)兩坐標(biāo)點(diǎn)之間在兩幀之間移動(dòng)的距離小于10個(gè)像素,判斷是否,如果是,則認(rèn)為是同一個(gè)目標(biāo)對(duì)象。此處要添加一個(gè)新變量名稱tracking_objects來存放跟蹤的目標(biāo)坐標(biāo)信息,還要建立trackid對(duì)目標(biāo)進(jìn)行編號(hào),因?yàn)樽R(shí)別到的不同的汽車要有不同的編號(hào)。當(dāng)跟蹤目標(biāo)和編號(hào)開始計(jì)數(shù)時(shí),將一個(gè)中心坐標(biāo)點(diǎn)賦值給跟蹤目標(biāo)tracking_objects,同時(shí)編號(hào)trackid值+1,同時(shí)將跟蹤的目標(biāo)物體編號(hào)和中心點(diǎn)坐標(biāo)信息加入,并用print指令打印現(xiàn)在這幀圖像上跟蹤目標(biāo)tracking_objects的信息使其與對(duì)應(yīng)坐標(biāo)點(diǎn)一起顯示以及用for…in…語句將對(duì)應(yīng)編號(hào)加入視頻中并出現(xiàn)在對(duì)應(yīng)坐標(biāo)附近。圖STYLEREF1\s3.SEQ圖\*ARABIC\s110目標(biāo)識(shí)別并跟蹤初次調(diào)試此時(shí)距視野鏡頭較近處的一輛車未能顯示編號(hào)id和中心點(diǎn)。猜測(cè)是由于視線效果近大遠(yuǎn)小的緣故,靠近底部的汽車距離鏡頭較近,所以一幀之間移動(dòng)速度較快,移動(dòng)距離超過10個(gè)像素,導(dǎo)致系統(tǒng)判斷其不是同一個(gè)目標(biāo),沒有對(duì)其進(jìn)行編號(hào)和保存坐標(biāo)點(diǎn)。這里對(duì)判斷規(guī)則稍作修改,但距離不能設(shè)定過遠(yuǎn),否則可能誤判到其他目標(biāo)。修改前后幀之間移動(dòng)的位置距離小于20個(gè)像素則判定為同一目標(biāo)。修改后識(shí)別出的目標(biāo)都能被準(zhǔn)確跟蹤到,并正確識(shí)別。圖STYLEREF1\s3.SEQ圖\*ARABIC\s111調(diào)試后運(yùn)行結(jié)果但是隨著視頻的播放,同一中心點(diǎn)坐標(biāo)的id一直在更新變化,這意味著現(xiàn)在的目標(biāo)跟蹤做到還不夠精確,跟蹤設(shè)計(jì)的目標(biāo)是讓識(shí)別為相同目標(biāo)的一輛車保持相同的id?,F(xiàn)在的程序只是在添加坐標(biāo)點(diǎn)的id當(dāng)運(yùn)行到新的一幀時(shí)前一幀坐標(biāo)依然被顯示,且同一輛車在新幀的坐標(biāo)id在不斷更新,這意味著程序還需要改進(jìn)。首先在計(jì)算兩幀之間距離的基礎(chǔ)上附加嵌套一個(gè)選擇結(jié)構(gòu),讓程序只在開始時(shí)的前兩幀比較前一幀中心點(diǎn)和當(dāng)前幀中心點(diǎn)的距離。否則將比較對(duì)象換成當(dāng)前幀中心點(diǎn)與擁有目標(biāo)跟蹤id的中心點(diǎn),如果兩點(diǎn)之間的距離小于20個(gè)像素則說明是同一輛車,則在存儲(chǔ)坐標(biāo)信息的數(shù)組中更新目標(biāo)坐標(biāo)點(diǎn)位置,將其id賦值給新位置的中心坐標(biāo)點(diǎn)并持續(xù)跟蹤。但此時(shí)出現(xiàn)了一個(gè)問題,當(dāng)車輛駛出圖像丟失id時(shí),失去跟蹤目標(biāo)的id會(huì)留在屏幕上,需要添加代碼使目標(biāo)不再存在在圖像上時(shí)刪除他們。圖STYLEREF1\s3.SEQ圖\*ARABIC\s112目標(biāo)丟失因此當(dāng)循環(huán)執(zhí)行上述指令時(shí),可以建立一個(gè)字典遍歷循環(huán)和坐標(biāo)數(shù)組,如果有沒更新的坐標(biāo)位置就及時(shí)更新,如果跟蹤的目標(biāo)不在圖像上就刪除它。在新的一幀中將上一幀已經(jīng)識(shí)別到的目標(biāo)id和坐標(biāo)點(diǎn)放入存放復(fù)制跟蹤的目標(biāo)信息的數(shù)組中進(jìn)行檢查,判斷是否為同一目標(biāo),檢查圖像及坐標(biāo)后通過創(chuàng)建新的變量并賦值trueorfalse來告知系統(tǒng)目標(biāo)是否還存在,并用選擇結(jié)構(gòu)決定:存在,則刪除上一幀坐標(biāo)信息用這一幀的坐標(biāo)信息覆蓋;若目標(biāo)不存在,即目標(biāo)離開了這陣圖像,則直接刪除該點(diǎn)坐標(biāo)和id信息。此外,對(duì)新識(shí)別到并進(jìn)行跟蹤的目標(biāo)要添加新的id,將新識(shí)別到的坐標(biāo)點(diǎn)放入現(xiàn)有的中心點(diǎn)數(shù)組中,建立新的識(shí)別目標(biāo)坐標(biāo)信息并用循環(huán)結(jié)構(gòu)不斷地為新識(shí)別的目標(biāo)賦予新的id。圖STYLEREF1\s3.SEQ圖\*ARABIC\s113識(shí)別與跟蹤效果圖跟蹤物體和圖像中中心點(diǎn)坐標(biāo)分別復(fù)制存放入不同數(shù)組跟蹤物體和圖像中中心點(diǎn)坐標(biāo)分別復(fù)制存放入不同數(shù)組在已識(shí)別目標(biāo)信息數(shù)組中遍歷物體i在已識(shí)別目標(biāo)信息數(shù)組中遍歷物體id和坐標(biāo)點(diǎn)信息否物體是否存在否物體是否存在是是距離計(jì)算距離計(jì)算兩點(diǎn)間距離<兩點(diǎn)間距離<20個(gè)像素判斷為同一物體,更新坐標(biāo)信息,刪除上一幀坐標(biāo)信息判斷為同一物體,更新坐標(biāo)信息,刪除上一幀坐標(biāo)信息移除坐標(biāo)id移除坐標(biāo)id繼續(xù)下一幀圖STYLEREF1\s3.SEQ圖\*ARABIC\s114坐標(biāo)位置跟新流程

4結(jié)論全文首先介紹了目標(biāo)的自動(dòng)識(shí)別和跟蹤技術(shù)在現(xiàn)代生活中的各種應(yīng)用,并且指出該項(xiàng)研究技術(shù)在各個(gè)領(lǐng)域中發(fā)揮的重要作用,描述了其在國內(nèi)外的研究和發(fā)展歷史,隨后介紹了實(shí)現(xiàn)這項(xiàng)研究技術(shù)所使用到的計(jì)算機(jī)語言Python和OpenCV視覺庫,還解釋了選擇它們作為工具開發(fā)的原因,又介紹了一些圖像處理方面的相關(guān)知識(shí)以及要對(duì)圖像處理做的一些準(zhǔn)備工作。接著敘述了本文所要實(shí)現(xiàn)運(yùn)行的程序的大概要求:使用Python語言運(yùn)行能實(shí)現(xiàn)對(duì)不同的運(yùn)動(dòng)目標(biāo)進(jìn)行識(shí)別并持續(xù)穩(wěn)定地對(duì)識(shí)別到的目標(biāo)分別進(jìn)行跟蹤的程序。隨后對(duì)系統(tǒng)的整體實(shí)現(xiàn)分別進(jìn)行了分析與解釋:先將整體程序的框架進(jìn)行搭建,完成視頻文件的讀取,在此基礎(chǔ)上將視頻逐幀圖像并預(yù)處理;接著通過調(diào)用的YOLOv4模塊及含有的多種物體信息來對(duì)圖像中不同的汽車進(jìn)行識(shí)別并將識(shí)別出的目標(biāo)分別用框框出;框出識(shí)別到的目標(biāo)后,對(duì)目標(biāo)的跟蹤程序進(jìn)行了一步一步的細(xì)化,成功通過對(duì)不同的目標(biāo)框進(jìn)行編號(hào),并在不同幀之間保持編號(hào)不變來實(shí)現(xiàn)目標(biāo)的跟蹤,直到目標(biāo)消失在屏幕中。程序較為精確地實(shí)現(xiàn)了設(shè)計(jì)要求。通過這一次的畢業(yè)設(shè)計(jì)使我對(duì)程序的開發(fā)和Python語言的運(yùn)用有了更加深入的學(xué)習(xí)和了解。本系統(tǒng)還存在有不足之處,那就是對(duì)于視野距離較遠(yuǎn)處的物體無法提取足夠外部信息進(jìn)行識(shí)別,這是由于遠(yuǎn)處物體目標(biāo)輪廓較為模糊,隨意使用輪廓近似算法來修復(fù)外部輪廓可能導(dǎo)致外部輪廓失真影響到識(shí)別的準(zhǔn)確性;同時(shí),由于識(shí)別方面是通過導(dǎo)入的物體信息來對(duì)視頻中的物體來進(jìn)行對(duì)比識(shí)別,要想識(shí)別出更多類型的目標(biāo)需要導(dǎo)入更多的信息。目標(biāo)自動(dòng)識(shí)別和跟蹤技術(shù)具有非常廣闊的發(fā)展前景,它在未來的發(fā)展趨勢(shì)一定是逐步上升的,并且能越來越好地滿足我們的各種需求。隨著現(xiàn)代社會(huì)計(jì)算機(jī)視覺技術(shù)的高速發(fā)展,目標(biāo)識(shí)別和跟蹤技術(shù)也被大大地推動(dòng)著發(fā)展,甚至在國防軍事領(lǐng)域也得到了應(yīng)用。在今后的學(xué)習(xí)和發(fā)展中,這項(xiàng)技術(shù)會(huì)得到越來越多的提升,取得我們難以想象的進(jìn)步,為我們帶來更多的便利。緊跟時(shí)代發(fā)展的潮流,把握

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論