基于MATLAB的圖像處理及跟蹤算法.doc
《基于MATLAB的圖像處理及跟蹤算法.doc》由會員分享,可在線閱讀,更多相關《基于MATLAB的圖像處理及跟蹤算法.doc(54頁珍藏版)》請在裝配圖網上搜索。
摘 要視頻圖像處理技術廣泛用于工業(yè)、安全、醫(yī)療、管理等領域。運動目標的檢測和跟蹤是圖像處理技術在視頻序列圖像處理方面的一個重要應用,在航天、交通、機器人視覺、視頻監(jiān)控、公共場所客流數據監(jiān)測等場合發(fā)揮著重要作用。本文介紹了一種基于MATLAB的簡易的從視頻播放的幀圖像中找出目標圖像,并進行視頻跟蹤的實現(xiàn)方法。通過對圖像進行閾值處理(圖像分割),再對分割后的圖像求取形心,以對目標圖像進行定位,并最后找到各幅幀圖像的目標位置的方法,從而實現(xiàn)對100幀視頻圖像的實時跟蹤。關鍵詞:目標檢測;閾值處理;視頻序列目標跟蹤;形心估計ABSTRACTVideo image processing technology is widely used in industrial, security, health care, management and other fields. Motion target detection and tracking is image processing technology in video sequence is an important application in image processing, in the aerospace, transportation, robot vision, video surveillance, public traffic data monitoring plays an important role.This paper introduces a simple MATLAB to find the target image from the video image frame based, and realization method of video tracking.Through the threshold of image processing (image segmentation), then the after image segmentation to obtain the centroid, to locate the target image, and finally found the method of each frame image of the target position, so as to realize the real-time tracking of the 100 frame of video images.Key words: target detection; threshold; video object tracking; centroid estimation目錄第1章引言11.1 選題背景11.2 課題研究目的及意義21.3 課題研究思路3第2章數字圖像處理簡介42.1 圖像數字化過程42.2 數字圖像處理的基本內容62.2.1 基本概念62.2.2 數字圖像處理的主要內容62.3 數字圖像處理的特點和應用82.3.1 數字圖像處理的特點82.3.2 數字圖像處理的應用82.4 數字圖像類型92.5 主要圖像文件格式11第3章MATLAB仿真軟件的簡介133.1 MATLAB的歷史背景133.2 MATLAB簡介143.3 MATLAB的特點153.4 MATLAB在數字圖像中的應用16第4章圖形用戶界面184.1 圖形用戶界面簡介184.2 MATLAB 常用圖像操作184.3 GUI的創(chuàng)建204.4 GUI的應用224.4.1 腳本與函數224.4.2 遞歸函數調用234.4.3 調試GUI M文件23第5章基于MATLAB的圖像跟蹤算法245.1 100幀視頻圖像的讀取245.2 圖像的閾值處理(圖像分割)245.2.1 閾值的確定255.2.2 圖像的閾值分割265.3 形心(距心)的求取285.4 設置跟蹤波門29第6章總結與展望346.1 總結346.2 展望34參考文獻36致謝37附 錄38附錄一:圖像類型轉換模塊的實現(xiàn)38附錄二:圖像模塊中灰度的變換38外文資料原文42譯文45第1章 引言1.1 選題背景數字圖像處理起源于20世紀20年代。當時,人們通過Bartlane海底電纜圖片傳輸系統(tǒng),從倫敦到紐約傳輸了一幅經過數字壓縮后的照片,從而把傳輸時間從一周多縮短到不足三個小時。為了傳輸圖片,該系統(tǒng)在傳輸端進行了圖像編碼,然后在接受端用特殊打印設備重構了該圖片。盡管這一應用包含了數字圖像處理的知識,但是并沒有使用計算機。而數字圖像處理需要很大的存儲空間和計算能力,其發(fā)展受到計算機中數據儲存、顯示和傳輸等相關技術發(fā)展的制約1。在20世紀50年代,當時的電子計算機已經發(fā)展到一定水平,人們開始利用計算機來處理圖形和圖形信息。在20世紀60年代初期數字圖像處理作為一門學科大約形成了。第一臺可執(zhí)行圖像處理任務的大型進算計出現(xiàn)。早期的圖像處理的目的是改善圖像的質量,它以人為對象,已改善人的視覺效果為目的。圖像處理中,輸入的是質量低的圖像,輸出的是改善質量后的圖像,常用的圖像處理方法有圖像增強、復原、編碼、壓縮等。首次獲得實際成功應用的是美國噴氣推進實驗室(JPL)。他們對航天探測器徘徊者7號在1964年發(fā)回的幾千張月球照片使用了圖像處理技術,如幾何校正、灰色變換、去除噪聲的方法進行處理,并考慮了太陽位置和月球環(huán)境的影響,由計算機成功地繪制出月球表面地圖,獲得了巨大的成功。隨后又對探測飛船發(fā)回的近十萬張照片進行更為復雜的圖像處理技術都發(fā)揮了巨大的作用。20世紀60年代末70年代初,數字圖像處理技術應用于醫(yī)學圖像、地球遙感監(jiān)測和天文學等諸多領域。1972年英國EMI公司工程師Housfield發(fā)明了用于頭顱診斷的X射線計算機斷層攝影裝置,也就是我們通常所說的CT(Computer Tomograph)。CT基本方法是根據人的頭部截面的投影,經計算機處理來重建截面圖像,稱為圖像重建。1975年EMI公司又成功研制出全身用的CT裝置,獲得了人體各個部位鮮明清晰的斷層圖像。1979年,這項無損傷診斷技術獲得了諾貝爾獎,說明它對人類作出了劃時代的貢獻。1972年美國陸地資源衛(wèi)星(Landsat)將多譜圖像用于資源探測。同年,計算機層析儀(CT)問世,它將圖像重建技術用于醫(yī)學2。20世紀70年代中期開始,隨著計算機技術和人工智能、思維科學研究的迅速發(fā)展,數字圖像處理向更高、更深層次發(fā)展。人們已開始研究如何使用計算機系統(tǒng)解釋圖像,實現(xiàn)類似人類視覺系統(tǒng)理解外部世界,這被稱為圖像理解或計算機視覺。很多國家,特別是發(fā)達國家投入更多的人力、物力到這項研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的視覺計算理論,這個理論成為計算機視覺其后十多年的主導思想。圖像理解雖然在理論方法研究上已取得了不小的進展,但它本身是一個比較難的研究領域,存在不少困難,因人類本身對自己的視覺過程還了解甚少,因此計算機視覺是一個有待人們進一步探索新的領域。1.2 課題研究目的及意義最早的圖像處理時上世紀六七十年代,隨著電子技術和計算機技術的不斷提高和普及,數字圖像處理進入高速發(fā)展時期。數字圖像處理就是利用數字計算機或者其他數字硬件,對圖像信息轉換而得的電信號進行某些數學運算,以提高圖像的實用性。例如從衛(wèi)星圖片中提取目標物的特征參數,三維立體斷層圖像的重建等等。數字圖像處理技術處理精度比較高,而且還可以通過改進處理軟件來優(yōu)化處理效果??偟膩碚f,數字圖像處理包括點運算、幾何處理、圖像增強、圖像還原、圖像形態(tài)學處理、圖像編碼、圖像重建、模式識別等。由于計算機技術處理能力不斷增強,數字圖像處理學科在飛速發(fā)展的同時,也越來越廣泛地向其他許多學科快速交叉滲透,使得圖像作為信息獲取以及信息的利用等方面也變得越來越重要。目前數字圖像處理應用越來越廣泛,已經滲透到工業(yè)、醫(yī)療保健、航空航天、軍事等各個領域,在國民經濟中發(fā)揮越來越大的作用。MathWorks公司推出的MATLAB是學習數理知識的好幫手。應用MATLAB友好的界面和豐富、實用、高效的指令及模塊,可以使人較快地認識、理解圖像處理的相關概念,逐步掌握圖像信號處理的基本方法,進而能夠解決相關的工程和科研中的問題。圖像是人類獲取和交換信息的主要來源,因此,圖像處理的應用領域必然涉及到人類生活和工作的方方面面。隨著人類活動范圍的不斷擴大,圖像處理的應用領域也將隨之不斷擴大,數字圖像處理對人類的作用將是不可限量3。1.3 課題研究思路本文首先通過對MATLAB軟件的了解及應用,基于MATLAB的數字圖像處理環(huán)境和如何利用MATLAB及其圖像處理工具箱進行數字圖像處理。主要論述了利用MATLAB實現(xiàn)對圖像讀取、閥值處理、距心的求取等圖像處理。第2章 數字圖像處理簡介 2.1 圖像數字化過程圖像的數字化過程就是在計算機內生成一個二維矩陣的過程。數字化的目的是將一幅圖像以數字的形式進行表示,并且要做到既不失真又便于計算機進行處理。圖像的數字化要求是要達到以最小的數據量不失真地描述圖像信息。數字圖像(digital imagine)和傳統(tǒng)的圖像即模擬圖像(picture)是有差別的。圖像的數字化包括采樣和量化兩個過程。1.采樣采樣(sampling)就是把在時間上和空間上連續(xù)的圖像分割成離散點(采樣點,即像素)的集合的一種操作。采樣是對圖像空間坐標的離散化,它決定了圖像的空間分辨率。采樣越細,越能精確地表現(xiàn)圖像。圖像基本上是在二維平面上連續(xù)分布的信息形式要把它輸入到計算機中,首先要把二維信號變成一維信號,因此要進行掃描(scanning)。最常用的掃描方法是在二維平面上按一定間隔順序地從上方順序地沿水平方向的直線(掃描線)掃描,從而取出濃淡值(灰度值)的線掃描(Laster掃描)。對于由此得到的一維信號,通過求出每一特定間隔的值,可以得到離散的信號。對于運動圖像除進行水平,垂直兩個方向的掃描以外,還有進行時間軸上的掃描。通過采樣,如設橫向的像素數為M,縱向的像素數為N,則畫面的大小可以表示為“M*N”個像素。一般來說,圖像中細節(jié)越多,采樣的間隔應當越小。2.量化如果把這些連續(xù)變化的值(灰度值)量化為8bit,則灰度值被分成0-2552的256個級別,分別對應于各個灰度值的濃淡程度,叫做灰度等級或灰度標度。經過采樣,圖像被分解成在時間上和空間上離散分布的像素,但是像素的值(灰度值)還是連續(xù)值。像素的值,是指白色-灰色-黑色的濃淡值,有時候也指光的強度(亮度)值或灰度值。把這些連續(xù)的濃淡值或灰度值變?yōu)殡x散的值(整數值)的操作就是量化。在0-255的值對應于白-黑的時候,有以0為白,255為黑的方法,也有以0為黑,255為白的方法,這取決于圖像的輸入方法以及用什么樣的觀點對圖像進行處理等,這是在編程時應特別注意的問題。但在只有黑白二值的二值圖像的情形,一般設0為白,1為黑4。量化的方法有:(1) 分層量化(Hierarchical quantization)(2) 均勻量化(Uniform quantization)(3) 非均勻量化(Non-uniform quantization)分層量化是把每一個離散樣本的連續(xù)灰度值分成有限多的層次。均勻量化是把源圖像灰度層次從最暗至最亮均勻分為有限層次,如果采用不均勻分層就是非均勻量化。對連續(xù)的灰度值賦予量化級的,即灰度值方法有:等間隔量化(Equal interval quantization)和非等間隔量化(Non equal interval quantization)。等間隔量化是簡單地把采樣值的灰度范圍等間隔地分割并進行量化。非均勻量化是依據一幅圖像具體的灰度值分布的概率密度函數,按總的量化誤差的最小的原則來進行量化。實用中一般采用等間隔量化5。3. 采樣、量化和圖像細節(jié)的關系上面的數字化過程,需要確定數值N和灰度級的級數K。在數字圖像處理中,一般都取成2的整數冪,即: (2-1) (2-2) 一幅數字圖像在計算機中所占的二進制存儲位數b為: (2-3) 例如,灰度級為256級(m=8)的512512的一幅數字圖像,需要大約210萬個存儲位。隨著N和m的增加,計算機所需要的存儲量也隨之迅速增加。由于數字圖像是連續(xù)圖像的近似,從圖像數字化的過程可以看到。這種近似的程度主要取決于采樣樣本的大小和數量(N值)以及量化的級數K(或m值)。N和K的值越大,圖像越清晰6。2.2 數字圖像處理的基本內容2.2.1 基本概念數字圖像處理(Digital Image Processing)是通過計算機對圖像進行去除噪聲、增強、復原、分割、提取特征等處理的方法和技術。相對于以往的數字圖像處理方法,數字圖像處理是一次新的“工業(yè)革命”,它徹底改變了以往人們處理圖像時所采用的手段,成為圖像處理中一個嶄新的方向。數字圖像處理的產生和迅速發(fā)展主要受三個因素的影響:一是計算機的發(fā)展;二是數學的發(fā)展(特別是離散數學理論的創(chuàng)立和完善);三是廣泛的農牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫(yī)學等方面的應用需求的增長7。2.2.2 數字圖像處理的主要內容從系統(tǒng)整體研究的角度來看,數字圖像處理的研究內容主要包括以下幾個方面:圖像的獲取、表示與表現(xiàn),圖像增強、圖像復原、圖像分割、圖像分析、圖像重建及圖像編碼壓縮等。其中,數字圖像處理包括:算術/邏輯操作和幾何運算、圖像增強、圖像分割、圖像形態(tài)學處理、模式識別、圖像復原、圖像壓縮等內容。(1)算術/邏輯操作圖像中的算術/邏輯操作主要以像素對像素為基礎在兩幅或多幅圖像間進行(其中不包含邏輯非操作,它在單一影像中進行)。對圖像的邏輯操作同樣也是基于像素的。“與或非”這三種邏輯算子完全是函數化的。當我們對灰度級圖像進行邏輯操作時,像素值作為一個二進制的字符串來處理。在四種算術操作中,減法與加法在圖像處理中最有用。我們簡單的把兩幅圖像想除看成是用一副的取反圖像與另一幅圖像相乘。在四種代數運算操作中加法運算可用于降低圖像中加性隨機噪聲的污染;減法運算則可以檢測圖像中物體的運動變化;乘法運算可用于標記圖像中的感興趣區(qū)域;除法運算則經常用于多光譜遙感圖像的分析處理,以擴大不同物體之間的差異。(2)幾何變換幾何運算用于改變圖像中像素與像素之間的空間位置關系,從而改變圖像的空間結構,達到處理圖像的目的。簡單而言,圖像幾何變換就是建立一種源圖像像素與變換后的圖像像素之間的映射關系。主要包括圖像的平移、縮放、旋轉、鏡像和轉置變換等。 (3)圖像增強圖像增強是圖像處理最關鍵的研究問題之一,圖像增強按作用域可分為兩類,即空域處理和頻域處理??沼蛱幚硎侵苯訉D像進行處理,而頻域處理則是在圖像的某個變化域內,對圖像的變換系數進行運算,然后通過逆變換獲得圖像增強效果。圖像增強可以突出圖像中的某些“有用”信息,擴大圖像中不同物體特征之間的差別,改善圖像的視覺效果。圖像增強的算法包括直方圖增強,空域濾波增強,頻域濾波增強和彩色增強等。(4)圖像分割圖像分割將圖像細分為構成它的子區(qū)域或對象。圖像分割算法一般基于亮度值的兩個基本特性之一:不連續(xù)性和相似性。第一類方法基于亮度的不連續(xù)變化分割圖像,比如圖像的邊緣。第二類方法依據事先制定的準則將圖像分割為相似的區(qū)域。圖像分割包括間斷檢測,邊緣檢測,門限處理等。(5)圖像形態(tài)學處理圖像形態(tài)學由一組形態(tài)學代數算子組成,最基本的形態(tài)學代數算子包括腐蝕、膨脹、開運算、閉運算等,通過組合應用這些算子,可以實現(xiàn)對圖像形狀、結構的分析和處理。數學形態(tài)學可以完成圖像分割、特征提取、邊界檢測、圖像濾波、圖像增強和恢復等工作。(6)模式識別模式識別總是從大量信息和數據出發(fā),在一定的經驗和認識基礎上,利用計算機和數學的推理的方法對信息進行自動識別。模式識別系統(tǒng)一般包括4個部分,即數據獲取、預處理、特征提取和決策分類。(7)圖像復原(恢復)由于設備造成的掃描線漏失、錯位等各種原因不可避免造成圖像質量的下降(退化)。圖像的復原就是根據事先建立起來的系統(tǒng)退化模型,將降質了的圖像重建成接近于或完全無退化的原始理想圖像的過程。(8)圖像壓縮數字圖像的數據量是很巨大的,然而數字圖像實際上又具有很大的壓縮潛力。圖像壓縮所解決的問題是盡量減少表示數字圖像時所需的數據量。減少數據量的基本原理是出去其中的冗余數據。這種變換在圖像存儲或傳輸之前進行。在以后的某個時候,再對壓縮圖像進行解壓縮,以重構原圖像或原圖像的近似圖像8。2.3 數字圖像處理的特點和應用2.3.1 數字圖像處理的特點(1) 數字圖像處理的信息大多是二維信息,處理信息量很大。因此對計算機的計算速度、存儲容量等要求較高。(2) 數字圖像處理占用的頻帶較寬。與語言信息相比,占用的頻帶要打幾個數量級。(3) 數字圖像中各個像素是不獨立的,其相關性大。在圖像畫面上,經常有很多像素有相同或接近的灰度。(4) 由于圖像是三維景物的二維投影,一幅圖像本身不具備復現(xiàn)三維景物的全部幾何信息的能力,很顯然三維景物背后部分信息在二維圖像畫面上是反應不出來的。因此,要分析和理解三維景物必須做合適的假定或附加新的測量。(5) 數字圖像處理后的圖像一般是給人觀察和評價的,因此受人的因素影響較大。2.3.2 數字圖像處理的應用計算機圖像處理和計算機、多媒體、智能機器人、專家系統(tǒng)等技術的發(fā)展緊密相關。近年來計算機識別、理解圖像的技術發(fā)展很快,也就是圖像處理的目的除了直接供人觀看(如醫(yī)學圖像是為醫(yī)生觀看作診斷)外,還進一步發(fā)展了與計算機視覺有關的應用,如郵件自動分檢,車輛自動駕駛等。下面僅羅列了一些典型應用實例,而實際應用更廣。(1)在生物醫(yī)學中的應用主要包括顯微圖像處理;DNA顯示分析;紅、白血球分析計數;蟲卵及組織切片的分析;癌細胞的識別;染色體分析等等。(2)遙感航天中的應用軍事偵察、定位、導航、指揮等應用;多光譜衛(wèi)星圖像分析;地形、地圖、國土普查;地質、礦藏勘探;天文、太空星體的探測及分析等。(3)工業(yè)應用CAD 和CAM技術用于模具、零件制造、服裝、印染業(yè);零件、產品無損檢測,焊縫及內部缺陷檢查;交通管制、機場監(jiān)控;火車車皮識別等。(4)軍事公安領域中的應用巡航導彈地形識別;指紋自動識別;警戒系統(tǒng)及自動火炮控制;反偽裝偵察;手跡、人像、印章的鑒定識別;過期檔案文字的復原;集裝箱的不開箱檢查等。(5)遙感上的應用在遙感的發(fā)展中,可以看到大量與圖像處理密切相關的技術。如在20世紀70年代美國發(fā)射的第一顆陸地衛(wèi)星就是通過對獲取的遙感圖片進行處理后達到上述目的的。隨后美國發(fā)射了海洋衛(wèi)星、氣象衛(wèi)星和軍用衛(wèi)星,從而獲取了大量遙感資料。此圖像處理廣泛應用于土地測繪、資源調查、氣象監(jiān)測、環(huán)境污染監(jiān)測、森林防護等。(6)其他應用圖像的遠距離通信;多媒體計算機系統(tǒng)及應用;電視電話;服裝試穿顯示;理發(fā)發(fā)型預測顯示;電視會議;辦公自動化、現(xiàn)場視頻管理等9。2.4 數字圖像類型MATLAB中,一幅圖像可能包含一個數據矩陣,也可能包含一個顏色映射表矩陣。MATLAB中有四種基本的圖像類型:(1)二值圖像(二進制圖像)二值圖像也叫黑白圖像,就是圖像像素只存在0、1兩個值。一個二值圖像是純黑白的。每一個像素值將取0或者1中的一個值,通常0表示黑,1表示白。二值圖像可以保存為雙精度或uint8類型的雙精度數組,顯然使用uint8類型更節(jié)省空間。在圖像處理工具箱中,任何一個返回二進制圖像的函數都是以uint8類型邏輯數組來返回的。(2)灰度圖像在MATLAB中,灰度圖像是保存在一個矩陣中的,矩陣中的每一個元素代表一個像素點。矩陣可以是雙精度類型,其值域為0,1;也可以為uint8類型,其數據范圍為0,255。矩陣的每個元素代表不同的亮度或灰度級。彩色圖像轉化為灰度圖像公式: (2-4)(3)索引圖像索引圖像包括圖像矩陣與顏色圖數組,其中,顏色圖是按圖像中顏色值進行排序后的數組。對于每個像素,圖像矩陣包含一個值,這個值就是顏色圖中的索引。顏色圖為m*3雙精度值矩陣,各行分別指定紅綠藍(RGB)單色值。Colormap=R,G, B,R,G,B為值域為0,1的實數值。圖像矩陣與顏色圖的關系依賴于圖像矩陣是雙精度型還是uint8(無符號8位整型)類型。如果圖像矩陣為雙精度類型,第一點的值對應于顏色圖的第一行,第二點對應于顏色圖的第二行,依次類推。如果圖像矩陣是uint8,有一個偏移量,第0點值對應于顏色圖的第一行,第一點對應于第二行,依次類推;uint8長用于圖形文件格式,它支持256色。(4)RGB圖像與索引圖像一樣,RGB圖像分別用紅,綠,藍三個亮度值為一組,代表每個像素的顏色。與索引圖像不同的是,這些亮度值直接存在圖像數組中,而不是存放在顏色圖中。圖像數組為M*N*3,M,N表示圖像像素的行列數10。2.5 主要圖像文件格式(1) JPEG(Joint Photographic Experts Group)格式,是一種成為聯(lián)合圖像專家組的圖像壓縮格式。文件后綴名為“.jpeg”或“.jpg”,是最常用的圖像文件格式。JPEG是一種有損壓縮格式,能夠將圖像壓縮在很小的存儲空間內。(2) TIFF(Tagged Image File Format)格式。它是目前圖像文件格式中最復雜的一種。處理1,4,8,24位非壓縮圖像,1,4,8,24位packbit壓縮圖像,一位CCITT壓縮圖像等。且它支持單色到32位真彩色模式的所有圖像。文件內容包括:文件頭,參數指針表與參數域,參數數據表和圖像數據四部分。(3) BMP(Windows Bitmap)格式。它是一種與硬件設備無關的圖像文件格式,使用非常廣。有1,4,8,24位非壓縮圖像,8位RLE(Run-length Encoded )圖像。文件內容包括:文件頭(一個BITMAP FILEHEADER數據結構),位圖信息數據塊(位圖信息頭BITMAP INFOHEADER和一個顏色表)和圖像數據。(4) GIF(Graphics Interchange Format)格式。原義是“圖像互換格式”,是CompuServe公司在 1987年開發(fā)的圖像文件格式。GIF文件的數據,是一種基于LZW算法的連續(xù)色調的無損壓縮格式。其壓縮率一般在50%左右,它不屬于任何應用程序。目前幾乎所有相關軟件都支持它,公共領域有大量的軟件在使用GIF圖像文件。GIF圖像文件的數據是經過壓縮的,而且是采用了可變長度等壓縮算法。GIF格式的另一個特點是其在一個GIF文件中可以存多幅彩色圖像,如果把存于一個文件中的多幅圖像數據逐幅讀出并顯示到屏幕上,就可構成一種最簡單的動畫。 (5) PCX(Windows Paintbrush)格式。它是最早使用的圖像文件格式之一。PCX格式支持256種顏色,不如TIFF等格式功能強,但結構比較簡單,存取速度快,壓縮比適中,適用于一般軟件的使用??商幚?,4,8,16,24位等圖像數據。文件內容包括:文件頭(128字節(jié)),圖像數據、擴展顏色映射表數據。(6) HDF(Hierarchical Data Format)格式。有8位、24位光柵數據集。(7) PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度圖像,8位和16位索引圖像,24位和48位真彩色圖像。(8) RAS(Sun Raster image): 有1位bitmap、8位索引、24位真彩色和帶有透明度的32位真彩色。(9) CO(Windows Icon resource): 有1位、4位、8位非壓縮圖像11。第3章 MATLAB仿真軟件的簡介3.1 MATLAB的歷史背景 在20世紀70年代中期,Cleve Moler博士和其同事在美國國家科學基金的資助下開發(fā)了調用EISPACK和LINPACK的FORTRAN子程序庫。EISPACK是特征值求解的FORTRAN程序庫,LINPACK是解線性方程的程序庫。在當時,這兩個程序庫代表矩陣運算的最高水平。到20世紀70年代后期,身為美國New Mexico大學計算機系系主任的Cleve Moler,在給學生講授線性代數課程時,想教學生使用EISPACK和LINPACK程序庫,但他發(fā)現(xiàn)學生用FORTRAN編寫接口程序很費時間,于是他開始自己動手,利用業(yè)余時間為學生編寫EISPACK和LINPACK的接口程序。Cleve Moler給這個接口程序取名為MATLAB,該名為矩陣(matrix)和實驗室(laboratory)兩個英文單詞的前三個字母的組合。在以后的數年里,MATLAB在多所大學里作為教學輔助軟件使用,并作為面向大眾的免費軟件廣為流傳。1983年春天,Cleve Moler到Stanford大學講學,MATLAB深深地吸引了工程師John Little。John Little敏銳地覺察到MATLAB在工程領域的廣闊前景。同年,他和 Cleve Moler、Sieve Bangert一起,用C語言開發(fā)了第二代專業(yè)版。這一代的MATLAB語言同時具備了數值計算和數據圖示化的功能。1984年,Cleve Moler和 John Lithe成立了MathWorks公司,正式把MATLAB推向市場,并繼續(xù)進行MATLAB的研究和開發(fā)。在當今30多個數學類科技應用軟件中,就軟件數學處理的原始內核而言,可分為兩大類。一類是數值計算型軟件,如 MATLAB、Xmath、Gauss等,這類軟件長于數值計算,對處理大批數據效率高;另一類是數學分析型軟件,如Mathematica、Maple等,這類軟件以符號計算見長,能給出解析解和任意精度解,其缺點是處理大量數據時效率較低。MathWorks公司順應多功能需求之潮流,在其卓越數值計算和圖示能力的基礎上,又率先在專業(yè)水平上開拓了其符號計算、文字處理、可視化建模和實時控制能力,開發(fā)了適合多學科、多部門要求的新一代科技應用軟件MATLAB。經過多年的國際競爭,MATLAB 已經占據了數值型軟件市場的主導地位。在MATLAB進入市場前,國際上的許多應用軟件包都是直接以FORTRAN和C語言等編程語言開發(fā)的。這種軟件的缺點是使用面窄、接口簡陋、程序結構不開放以及沒有標準的基庫,很難適應各學科的最新發(fā)展,因而很難推廣。MATLAB的出現(xiàn),為各國科學家開發(fā)學科軟件提供了新的基礎。在MATLAB問世不久的20世紀80年代中期,原先控制領域里的一些軟件包紛紛被淘汰或在MATLAB上重建。時至今日,經過Math Works公司的不斷完善,MATLAB已經發(fā)展成為適合多學科、多種工作平臺的功能強勁的大型軟件。在國外,MATLAB已經經受了多年考驗。在歐美等高校,MATLAB已經成為線性代數、自動控制理論、數理統(tǒng)計、數字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真等高級課程的基本教學工具;成為攻讀學位的大學生、碩士生、博士生必須掌握的基本技能。在設計研究單位和工業(yè)部門,MATLAB被廣泛用于科學研究和解決各種具體問題12。3.2 MATLAB簡介MATLAB是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環(huán)境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。MATLAB 是MATrix LABoratory(“矩陣實驗室”)的縮寫,不僅具備完善的科學計算功能,而且能勝任眾多專業(yè)領域的仿真和設計任務,甚至能自動生成直接與硬件關聯(lián)的代碼,在圖像處理、系統(tǒng)仿真、數字信號處理、自動控制等領域都有著廣泛的應用。MATLAB的基本數據單位是矩陣,它的指令表達式與數學,工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完相同的事情簡捷得多。MATLAB包括擁有數百個內部函數的主包和三十幾種工具包(Toolbox)。工具包又可以分為功能性工具包和學科工具包。功能工具包用來擴充MATLAB的符號計算,可視化建模仿真,文字處理及實時控制等功能。學科工具包是專業(yè)性比較強的工具包,控制工具包,信號處理工具包,通信工具包等都屬于此類。MATLAB圖像處理工具箱包括:(1)圖像處理工具箱(Image Processing Toolbox) 它為工程師和科學家提供了一套完整的用于圖像處理和分析的函數,總共超過了200個圖像處理函數,用戶只需要花少量的時間在算法編程上,而可以把大量時間用于問題的分析處理上。(2)圖像獲取工具箱(Image Acquisition Toolbox) 它擴展了MATLAB的強大科學計算能力,允許直接在MATLAB環(huán)境下通過工業(yè)標準硬件設備獲取圖像和視頻信號。(3)地圖工具箱(Mapping Toolbox) 它與MATLAB組合起來提供了一個完整的分析和顯示地理信息的環(huán)境,利用該工具箱提供的函數,工程師可以用來分析地理數據,進行地圖顯示,調用外部地圖數據源。 3.3 MATLAB的特點MATLAB軟件具有如下特點:(1) 它的語言非常接近自然語言,因此,具有一定程序設計基礎的人學起來比較容易。運算符豐富,具有結構化的控制語句(如for循環(huán),while循環(huán),break語句和if語句),又有面向對象編程的特性。它的程序限制不嚴格,程序設計自由度大,而且具有源程序的開放性。(2) 該軟件提供了大量的內部函數,讓用戶在使用時非常方便,此外,日益龐大的Toolbox更是讓該軟件的應用領域越來越廣泛。(3) 該軟件語言以向量矩陣為著眼點,因此它比較適于進行數值分析。(4) 它的繪圖功能強大,由于MATLAB在世界范圍內特別是在工程計算領域的流行,越來越多的人開始青睞并使用這套軟件。(5) MATLAB的缺點是,它和其他高級程序相比,程序的執(zhí)行速度較慢。由于MATLAB的程序不用編譯等預處理,也不生成可執(zhí)行文件,程序為解釋執(zhí)行,所以速度較慢13。3.4 MATLAB在數字圖像中的應用圖像處理工具包是由一系列支持圖像處理操作的函數組成的。所支持的圖像處理操作有:圖像的幾何操作、鄰域和區(qū)域操作、圖像變換、圖像恢復與增強、線性濾波和濾波器設計、變換(DCT變換等) 、圖像分析和統(tǒng)計、二值圖像操作等。下面就MATLAB 在圖像處理中各方面的應用分別進行介紹。(1) 圖像文件格式的讀寫和顯示。MATLAB 提供了圖像文件讀入函數 imread(),用來讀取如:bmp、tif、tiffpcx 、jpg 、gpeg 、hdf、xwd等格式圖像文;圖像寫出函數 imwrite() ,還有圖像顯示函數 image()、imshow()等等。(2) 圖像處理的基本運算。MATLAB 提供了圖像的和、差等線性運算 ,以及卷積、相關、濾波等非線性算。例如,conv2(I,J)實現(xiàn)了I,J兩幅圖像的卷積。(3) 圖像變換。MATLAB 提供了一維和二維離散傅立葉變換(DFT) 、快速傅立葉變換(FFT) 、離散余弦變換 (DCT) 及其反變換函數,以及連續(xù)小波變換(CWT)、離散小波變換(DWT)及其反變換。(4) 圖像的分析和增強。針對圖像的統(tǒng)計計算MATLAB 提供了校正、直方圖均衡、中值濾波、對比度調整、自適應濾波等對圖像進行的處理。(5) 圖像的數學形態(tài)學處理。針對二值圖像,MATLAB 提供了數學形態(tài)學運算函數;腐蝕(Erode)、膨脹(Dilate)算子,以及在此基礎上的開 (Open)、閉(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等豐富的數學形態(tài)學運算。(6) 此外,還有一些重要的函數在MATLAB中的應用: 使用imnoise添加噪聲。 使用imfinfo用于圖像文件信息查詢。 使用montage函數來顯示多幀圖像陣列。 使用immovie函數顯示多幀圖像陣列中創(chuàng)建MATLAB電影動畫。 使用zoom函數來實現(xiàn)圖像上任一區(qū)域的縮放。 使用warp函數將圖像作為紋理進行映射。 使用subimage函數在一個圖像窗口中顯示多幅圖像。以上所提到的 MATLAB在圖像中的應用都是由相應的MATLAB函數來實現(xiàn)的,使用時,只需按照函數的調用語法正確輸入參數即可。具體的用法可參考MATLAB豐富的幫助文檔。圖像邊緣對圖像識別和計算機分析十分有用,在MATLAB中,函數 edge()用于灰度圖像邊緣的提取,它支持六種不同的邊緣提取方法,即Sobel方法、Prewitt 方法、Robert 方法,Laplacian2Gaussian方法、過零點方法和Canny方法14。第4章 圖形用戶界面4.1 圖形用戶界面簡介用戶界面是指:實現(xiàn)人與機器(或程序)之間交互作用的工具和方法。如鍵盤、鼠標等都可成為與計算機交換信息的接口。圖形用戶界面GUI(全稱Graphical User Interfaces )則是由窗口、光標、按鍵、菜單、文字說明等對象構成的一個用戶界面,用戶圖形界面(GUI)是程序的圖形化界面。GUI可以使用戶定制用與MATLAB的交互方式。把圖形界面加到MATLAB 的函數和M文件中。GUI可以在MATLAB 中生成非常有效的工具和應用程序,或是建立演示工作的交互式界面。創(chuàng)建MATLAB 用戶圖形界面必須有三個基本元素:(1)組件:在matlab GUI 中的每一個項目如按鈕、標簽、編輯框等都是一個圖形化組件。組件又可分為三類:圖形化控件(按鈕,編輯框,列表,滾動條等)、靜態(tài)元素(窗口和文本字符串)、菜單和坐標系。圖形化控件和靜態(tài)元素由函數uicontrol創(chuàng)建,菜單由函數uimenu和uicontextmenu創(chuàng)建,坐標系經常用于顯示圖形化數據,由函數axes創(chuàng)建。(2)圖象窗口(Figure):GUI的每一個組件都必須安排在圖象窗口中,可以用函figure來創(chuàng)建空圖象窗口,空圖象窗口經常用于放置各種類型的組件。(3)回應:當用戶用鼠標單擊或用鍵盤鍵入一些信息,那么程序就要有相應的執(zhí)行動作。鼠標單擊或鍵入信息是一個事件,如果matlab程序運行相應的函數,那么matlab函數肯定會有所反應。例如,如果用戶單擊一按鈕,這個事件必然引起相應的matlab語句執(zhí)行。這些相應的語句被稱為回應,在執(zhí)行GUI的單個圖形組件時,必須有一個回應。4.2 MATLAB 常用圖像操作圖像的讀寫與顯示操作:imread( )讀取圖像;imwrite( )輸出圖像;imshow( ), image( )把圖像顯示于屏幕;imcomplement() 對圖像取反;imcrop( )對圖像進行裁剪;imresize( )函數實現(xiàn)對圖像的插值縮放;imrotate( )實現(xiàn)圖像轉用;imfeature功能:計算圖像區(qū)域的特征尺寸;imfinfo功能:返回圖形文件信息;imhist功能:顯示圖像數據的柱狀圖;immovie功能:創(chuàng)建多幀索引圖的電影動畫;impixel功能:確定像素顏色值;figure:強制生成一個新的繪圖窗口;medfilt2功能:進行二維中值過濾;montage功能:在矩形框中同時顯示多幅圖像;nlfilter功能:進行邊沿操作;pixval功能:顯示圖像像素信息;truesize功能:調整圖像顯示尺寸;zoom功能:縮放圖像;isbw功能:判斷是否為二進制圖像;isgray功能:判斷是否為灰度圖像;isrgb功能:判讀是否為RGB真彩圖像;dither( )通過顏色抖動,把真彩圖像轉換成索引圖像或灰度圖象轉換成二值圖像gray2ind( ) 將灰度圖像(或二值圖像)轉換成索引圖像grayslice( ) 通過設定的閾值將灰度圖象轉換成索引圖像im2bw( ) 通過設定亮度閾值將灰度、真彩、索引圖象轉換成二值圖像ind2gray( ) 將索引圖象轉換成灰度圖象ind2rgb( ) 將索引圖象轉換成真彩色圖像mat2gray( ) 將一個數據矩陣轉換成一幅灰度圖象rgb2gray( ) 將真彩轉換成灰度圖象rgb2ind( ) 將真彩轉換成索引圖象4.3 GUI的創(chuàng)建打開MATLAB,點擊File,然后New,再點擊GUI,彈出的對話框選擇Create New GUI即可創(chuàng)建一個用戶界面圖形。菜單:在每一個窗口系統(tǒng)中使用菜單讓用戶選擇命令和選項。通常在顯示屏或窗口的頂部有一菜單條。移動鼠標指針到菜單標志上按下鼠標按鍵,頂層菜單就被選中,以列菜單項就從菜單標志拉下來。這種款式菜單就叫下拉式菜單。一個菜單項還可以有自己的菜單項列表作為子菜單。子菜單項在子菜單的右邊顯示小三角或箭頭以表示菜單還有更多的子菜單項可供選擇。子菜單可以嵌套,但層次的數目受到窗口系統(tǒng)及有用資源的限制。建立菜單和子菜單:我們采用函數uimenu建立菜單項Hm_1=uimenu(hx_parent,propertyName,propertyValue)其中Hm_1是由uimenu生成的菜單項的句柄。通過設定uimenu的屬性值就可以定義菜單特性。Uimenu對象中最重要的屬性是lable和callback。lable屬性值是菜單條和下拉菜單項上的文本字符串,以確認菜單項。callback屬性值是MATLAB字符串。控制框:系統(tǒng)窗口設置控制框,讓用戶進行某種操作或設置選項或屬性。控制框是圖形對像,如圖標、文本框和滾動條。它和菜單一起使用以建立用戶圖形界面稱之為窗口系統(tǒng)和計算機窗口管理器。MATLAB控制框又稱uicontrol,它是圖形對象,可以放置在MATLAB的圖形窗中的任何位置并用鼠標激活,MATLAB的uicontrol包括按鈕、滑標、文本框及彈出式菜單。Uicontrol是由函數uicontrol生成的,常用句法:Hc_1=uicontrol(Hf_fig,PropertyName,PropertyVaule)通過設定不同的屬性值定義uicontrol的屬性。建立不同的控制框:matlab共有八種不同的類型的或樣式的控制框,他們均由uicontrol建立,屬性style決定了所建立的控制框的類型。callback屬性值是當控制框激活時,傳給eval在命令窗口空間執(zhí)行的matlab的字符串。下面介紹八種uicontrol15:(1)按鍵鈕:又稱命令按鈕或按鈕,是小的長方形屏幕對象,常常在對象本身標有文本。將鼠標指針移動至對象,來選擇按鍵鈕uicontrol,單擊鼠標按鈕,執(zhí)行由回調字符串所定義的動作。按鍵鈕的style屬性值是pushbutton.按鍵鈕是典型的用于執(zhí)行一個動作而不是改變狀態(tài)或設定屬性。(2)無線按鈕:又稱選擇按鈕或切換按鈕,他由一個標志和標志文本的左端一個小圓圈或小菱形形成。當選擇時,圓圈被填充,且value屬性值為1;若未被選擇時,value的屬性值為0。無線按鈕的style屬性值為radiobutton。無線按鈕典型的用在一組互斥的選項中選擇一項。(3) 檢查框:又稱切換按鈕,它由具有標志并在標志的左邊的一個小方框組成。激活時uicontrol在檢查和清除狀態(tài)之間切換。在檢查狀態(tài)時,根據平臺的不同,方框被填充,或在框內含x,value的屬性值為1 ,若為清除狀態(tài),則方框為空,value的屬性值為0。檢查框的style屬性為checkbox。檢查框典型的用于表明選項的狀態(tài)或屬性。通常檢查框是獨立的對象,如需要檢查框可以與無線按鈕交換使用。(4) 靜態(tài)文本框:顯示一個文本字符串的uicontrol,該字符串是由string屬性值所確定的。靜態(tài)文本框的style屬性值為text。靜態(tài)文本框典型的用于顯示標志、用戶信息及當前值。靜態(tài)文本框之所以稱之為靜態(tài),是因為用戶不能動態(tài)的修改所顯示的文本,文本只能通過改變string屬性來更改。(5)可編輯文本框:可編輯文本框允許用戶動態(tài)的編輯或重新安排文本串。就像是使用文本編輯器或文字處理器一樣。在string屬性中有該屬性??删庉嬑谋究虻膗icontrol的style屬性值為edit。典型的用在讓用戶輸入文本串或特定值。(6)滑標:或稱滾動條包括三個獨立的部分,分別是滾動槽或長方形區(qū)域,代表有效對象值范圍;滾動槽內的指示器,代表滑標當前值;以及在槽的兩端的箭頭。滑標的style的屬性值為slider?;瑯说湫偷挠糜趶膸讉€值域范圍內選定一個。滑標值有三種方式設定,方法一:鼠標指針指向指示器,移動指示器。拖動鼠標是,要按住鼠標按鈕,當指示器位于期望位置后,松開鼠標。方法二:當指針處于槽中但在指示器的一側時,單擊鼠標按鈕,指示器按該側方向移動距離約為整個值域范圍的10%;方法三:在滑標無論哪端點擊鼠標箭頭,指示器沿著箭頭的方向移動大約為滑標范圍的1%,滑標通常與所用文本uicontrol對象一起顯示標志,當前滑標值及值域范圍。(7)彈出式菜單:典型的用于向用戶提出互斥的一系列選項清單,讓用戶選擇。彈出式菜單不受菜單條的限制,可位于圖形窗口的任何位置,style屬性是popupmenu。當關閉時彈出式菜單以矩形或按鈕的形式出現(xiàn),按鈕上含有當前選擇的標志,在標識的右側有一個向下的箭頭或凸起的小方塊來表明uicontrol對象是一個彈出式菜單,當指針處在彈出式uicontrol之上并按下鼠標時,出現(xiàn)其它選項。移動指針到不同的選項,松開鼠標就關閉彈出式菜單,顯示新的選項。(8)框架:框架uicontrol對象僅是帶色彩的矩形區(qū)域。框架提供了視覺的分隔性。框架典型的用于組成無線按鈕或其他uicontrol對象。在其他對象放入框架之前,框架應事先定義。否則,框架可能覆蓋控制框使他們不可見。4.4 GUI的應用編程和回調的考慮,在命令行通過輸入uimenu和uicontrol來建立效率不高,腳本或函數M文件使用更為簡便,假定想實現(xiàn)一個M文件,首先確定是否要編寫腳本或函數文件。4.4.1 腳本與函數腳本文件似乎成了當然的選擇。在腳本中,所有的命令都在工作窗口執(zhí)行,因此隨時可以隨時使用所有的MATLAB函數和對象。將信息傳給回調函數沒有任何困難。在這里有幾點權衡,首先,當所有的變量都可以利用時,工作空間充斥了變量名和變量值,即使它們不再有用。其次,如果用戶使用clear命令,重要的對象句柄就可能丟失。另一個缺點是:用腳本文件定義回調字符串可能變得十分復雜。另一個問題是,腳本文件比函數文件運行的要慢,腳本文件在第一次運行時要編譯。最后一點,腳本文件沒有函數文件靈活。函數可以接受輸入參量并返回值。因此,函數可作為其他函數的參變量。獨立的回調函數,建立GUI函數的一個有效地方法是編寫獨立的回調函數,專門執(zhí)行一個或者多個回調。函數使用的對象句柄和其他的變量可以作為參量傳遞,必要時回調函數可返回值。4.4.2 遞歸函數調用利用單獨的M文件并遞歸調用該文件,既可以避免多個M文件的復雜性,又可以利用函數的優(yōu)點。使用switches或if elseif 語句,可將回到函數裝入調用函數內,通常這樣一種調用的結構為function guifunc(switch)其中switch確定為執(zhí)行那個函數開關的參量,它可以是字符串,startup,close,seccolor,也可以是代碼或數字。全局變量global,可用在函數中,使某些變量對GUI 函數的所有部分都可用,全局變量是在函數的公共區(qū)說明,因此整個函數以及對函數的遞歸調用都可以利用全局變量。4.4.3 調試GUI M文件回調字符串在命令窗口工作空間中計算并執(zhí)行的。這個情況對編寫和調用GUI函數和腳本文件有著隱含的意義,回調字符串可以很復雜,尤其是在腳本文件中,這為句法錯誤提供了很多機會,記錄單引號、逗號、括號是令人頭痛的事。如果出現(xiàn)了句法錯誤,MATLAB給出提示;只要對象的callback屬性值是一個真正的文本串,MATLAB就認可了,只有當對象被激活并將回調字符串傳給eval時,才檢查回調字符串內部的句法錯誤。這樣讓用戶定義回調字符串,它涉及未曾定義過的對象句柄和變量,這是編寫互相參照的程序更容易。但是每個回調函數必須分別測試,保證回調字符串是合法的MATLAB命令,并且回調字符串涉及的所有變量可在命令窗口工作空間中是可利用的。將回調函數M文件一樣編程或像GUI函數本身內的開關一樣編程,就可以不運行整個GUI函數而對各個回調進行改變或測試。因此,回調字符串是在命令窗口工作空間中而不是在函數本身內計算,在函數和各回調函數之間傳遞數據就變得十分復雜。第5章 基于MATLAB的圖像跟蹤算法5.1 100幀視頻圖像的讀取由于視頻是由100幀圖像通過連續(xù)播放從而達到視頻的效果的,所以要達到視頻放映的效果,應首先對100幀圖像序列進行順序讀取。100幀圖像存儲在MATLAB的默認路徑中,文件名為00000xxx.bmp。要達到讀取它們的目的,需要使用循環(huán)算法。算法由一個名為read_seqim(i)的函數實現(xiàn),以下是函數的源程序:function I=read_seqim(i)if nargin=0 i=1;min=00000001;endname=num2str(i); if i=9 min=strcat(0000000,name,.bmp); elseif i=99 min=strcat(000000,name,.bmp); else min=strcat(00000,name,.bmp); endI=imread(min);其中i為讀取圖像的序號,通過以上的函數可以很方便的實現(xiàn)對100幀圖像中任意一幀的讀取,從而為后面的處理提供方便。5.2 圖像的閾值處理(圖像分割)閾值(Threshold),也叫門限。閾值化(Thresholding),即按給定閾值進行圖像的二值化處理。閾值分割法可分為以下幾種: (1)簡單閾值分割法;(2)多閾值分割法;(3)最大類間方差法;(4)最佳閾值法。 許多情況,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 MATLAB 圖像 處理 跟蹤 算法
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.italysoccerbets.com/p-6704634.html