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