畢業(yè)設計(論文)圖像目標提取算法及其硬件實現(xiàn)_第1頁
畢業(yè)設計(論文)圖像目標提取算法及其硬件實現(xiàn)_第2頁
畢業(yè)設計(論文)圖像目標提取算法及其硬件實現(xiàn)_第3頁
畢業(yè)設計(論文)圖像目標提取算法及其硬件實現(xiàn)_第4頁
畢業(yè)設計(論文)圖像目標提取算法及其硬件實現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、河北大學工商學院2010屆本科生畢業(yè)論文(設計)圖像目標提取算法及其硬件實現(xiàn)摘要邊緣是圖像最基本的特征,因此,邊緣檢測是圖像處理中非常重要的內容。本文首先介紹了幾種經典的目前被廣泛使用的圖像邊緣檢測算子,比如:羅伯特(roberts)邊緣算子、prewitt邊緣算子和索貝爾(sobel)邊緣算子等。這些算法的核心思想是假設邊緣點對應于原始圖像灰度級梯度的局部極值點。然后在 matlab環(huán)境下對這些算子進行編程實現(xiàn)。但是,有些圖像包含有噪聲,這些算法對噪聲非常敏感,常常會把噪聲當作邊緣點檢測出來,而真正的邊緣由于噪聲的干擾也很有可能被漏檢。其次,文章介紹了圖像分割技術,其核心思想是:為了辨識和分

2、析目標,需要將有關區(qū)域分離提取出來,并對目標進一步加以利用。在此基礎上,利用這些算子對圖像進行了邊緣檢測,總結出了各種邊緣檢測算法的優(yōu)缺點,針對不同的圖像找到相對比較有效的邊緣檢測算法,進而大幅度地減少了數(shù)據(jù)量,保留了圖像重要的結構屬性。本文還介紹了如何用硬件對圖像進行邊緣檢測,并與用matlab得到的邊緣檢測仿真結果進行了對比,證明了用硬件實現(xiàn)圖像邊緣檢測的可行性。關鍵詞:邊緣檢測;圖像分割;目標提取image object extraction algorithm and hardware implementationabstractedge is the most basic featu

3、res of the image,therefore,,edge detection is very important in image processing content. this paper describes several classical and widely used in image edge detection operator,for example,robert edge operator,prewitt and sobel edge operator,etc.the core idea of these algorithms is the assumption t

4、hat the edge points corresponding to the original image gray level gradient of the local extreme point. then in the matlab environment of these operators for programming.however, some images contain noise,these algorithms are very sensitive to noise, the noise will often be detected as edge points,

5、while the real edge due to noise is also likely to be missed. secondly, the article introduces the image segmentation technique, its core idea is: to identify and analyze the goals, the need to extract the isolated region, and the goal of further use. on this basis, the use of these operators on the

6、 image edge detection, summed up the advantages and disadvantages of various edge detection algorithms for different images found relatively more effective edge detection algorithm, thus significantly reducing the amount of data, important to retain the structural properties of the image. this artic

7、le also describes how to use the hardware of the image edge detection, and with the edge detection using matlab simulation results obtained were compared to that of a hardware implementation of edge detection is feasible.key words: edge detection; image segmentation; object extraction目錄abstract21引言1

8、2邊緣檢測22.1邊緣屬性22.2導數(shù)的計算22.3邊緣檢測模板22.4小結33圖像分割43.1hough變換43.2閾值法63.2.1迭代法63.2.2otsu法73.2.3一維最大熵法73.2.4二維最大熵法73.2.5簡單統(tǒng)計法83.3特征空間聚類法93.3.1k-均值聚類法93.3.2isodata聚類法原理103.4松弛迭代法113.5小結124matlab對邊緣檢測算法的實現(xiàn)134.1模板算子法134.1.1羅伯特算子134.1.2prewitt算子144.1.3sobel算子154.1.4拉普拉斯算子164.2高斯算子174.3canny算子184.4幾種改進的邊緣檢測算子194

9、.4.1形態(tài)學邊緣檢測194.4.2小波變換邊緣檢測204.4.3金字塔方法214.5小結225邊緣檢測算法的硬件實現(xiàn)245.1sobel邊緣檢測算法245.2sobel邊緣檢測的硬件實現(xiàn)255.2.1圖像數(shù)據(jù)緩沖模塊265.2.2梯度計算模塊265.2.3仿真結果285.3小結296結束語30321引言所謂邊緣是指其周圍像素灰度急劇變化的那些像素的集合,它是圖像最基本的特征。邊緣存在于目標、背景和區(qū)域之間,所以,它是圖像分割所依賴的最重要的依據(jù)。由于邊緣是位置的標志,對灰度的變化不敏感,因此,邊緣也是圖像匹配的重要特征。邊緣檢測是圖像處理和計算機視覺中的基本問題,圖像屬性中的顯著變化通常反映

10、了屬性的重要事件和變化,這些包括:深度上的不連續(xù),表面方向不連續(xù),物質屬性變化和場景照明變化。它們在圖像中表現(xiàn)為亮度變化明顯的點。邊緣檢測的目的就是標識這些像素點,它是圖像識別的基礎和前提,是圖像分割的一部分。它大幅度地減少了數(shù)據(jù)量,并剔除了可以認為不相關的信息,保留了圖像重要的結構屬性。因此,邊緣檢測在數(shù)字圖像處理中有重要地位。邊緣檢測就是找到圖像中邊緣像素點的過程,從而生成一幅邊緣圖。一般來說,邊緣檢測分為3:(1) 基于各種原理和方法找到潛在邊緣點;(2) 選取閾值,生成二值邊緣圖;(3) 有些算法還要進行邊緣細化、連接等后續(xù)處理。2邊緣檢測2.1邊緣屬性邊緣可能會隨著視角的不同而變化,

11、這通常反映在場景、物體的形狀上;邊緣也可能與視角無關,這通常反映在被觀察物體的表面紋理和表面形狀上。比如,一個典型的邊界可能是一塊黃色和一塊紅色之間的邊界;與此相反的邊界可能是在一種不變的背景上的一些不同顏色的點。在邊線的每一邊都會有一個邊緣,在許多圖像處理的實際應用中邊緣都起著非常重要的作用。在自然界中,許多圖像的的邊緣并不是人們理想的階梯邊緣。相反,它會受到許多因素的影響。比如有限場景深度帶來的聚焦模糊;光滑物體邊緣的陰影;非半徑光源產生的陰影帶來的半影模糊等。誤差函數(shù)經被用于實際應用中的邊模糊效果的建模中。2.2導數(shù)的計算經典的邊緣檢測是以原始圖像為基礎,對圖像的各個像素考察它的某個領域

12、內灰度階躍變化,利用邊緣臨近一階或二階方向導數(shù)變化規(guī)律檢測邊緣。邊緣檢測的基本思想是通過檢測每個像元和其鄰域的狀態(tài),以決定該像元是否位于一個物體的邊界上。在一階導數(shù)中,邊緣點表現(xiàn)為一個局部極值點,許多邊緣檢測操作都是基于亮度的一階導數(shù)這樣就可以得到原始數(shù)據(jù)亮度的梯度。而在二階導數(shù)中,表現(xiàn)為一個過零點,它實質上是亮度梯度的變化率,當圖像在理想的連續(xù)變化的情況下時,通過在二階導數(shù)中檢測過零點將會得到梯度中的局部最大值。由此可知,圖像中目標的邊緣可通過求取它們的導數(shù)來確定。導數(shù)可用微分算子來計算,而數(shù)字圖像中求導數(shù)是利用差分近似微分來進行的。2.3邊緣檢測模板邊緣檢測和區(qū)域劃分是圖像分割技術的兩種不

13、同的方法,二者具有互補的特點。在邊緣檢測中,提取的是圖像中不連續(xù)部分的特征,根據(jù)閉合的邊緣來確定區(qū)域。而在區(qū)域劃分中,是把圖像分割成特征相同的區(qū)域,區(qū)域之間的邊界就是邊緣。此外,由于邊緣檢測方法不需要將圖像逐個像素地分割,因此更適合大圖像的分割。邊緣大致可以分為兩種,一種是階躍狀邊緣,這種邊緣兩邊像素的灰度值明顯不同;另一種為屋頂狀邊緣,其邊緣處于灰度值由小到大再由大到小的變化轉折點處。邊緣檢測的工具主要是邊緣檢測模板。現(xiàn)在,我們用一個一維模板為例來說明邊緣檢測模板是如何作用的?,F(xiàn)在假設一個模板為,還有一副圖像為,從中可以看出,這幅圖像的左邊暗,右邊亮,圖像中間存在著一條明顯的邊緣,這是一個典

14、型的階躍狀邊緣,在使用模板對其進行模板處理之后,結果變成:。這樣,我們就可以清楚地看出,進行邊緣檢測后的圖像在原圖像邊緣處的灰度值要高了一些,在觀察時就可以發(fā)現(xiàn)一條很明顯的亮邊,而其他區(qū)域都很暗,這就是所謂的邊緣檢測的效果。模板的作用是用右邊鄰點的灰度值減去左邊鄰點的灰度值,得到的結果作為該點的灰度值。這樣做的結果是使在灰度值相近的區(qū)域內的點的灰度值接近于0,而在圖像的邊緣附近,灰度值將會有明顯的跳變,使得邊緣處的點的灰度值很大,這就出現(xiàn)了上面邊緣檢測的結果。2.4小結邊緣是圖像最基本的特征,因此,邊緣檢測是圖像處理中非常重要的內容。邊緣檢測算法的核心思想就是假設邊緣點對應于原始圖像灰度級梯度

15、的局部極值點。邊緣檢測模板就是一種邊緣檢測器,而且它在數(shù)學上的涵義是一種基于梯度的濾波器,我們習慣上又把它稱為邊緣檢測算子。梯度是有方向的,并且和邊緣的方向是垂直的。比如模板-1 0 1是水平方向的,和上節(jié)那幅圖像的邊緣正好是垂直的,所以用這個模板就可以將這幅圖像的邊緣檢測出來。3圖像分割圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標的技術和過程。我們在對圖像的研究和應用中,往往只是對圖像中的某些部分感興趣,我們把這些部分一般稱為目標或前景。為了識別并對目標進行分析,我們需要將有關區(qū)域分離提取出來,再次基礎上再對目標加以利用,比如進行特征提取和測量。邊緣檢測是圖像分割的一部分,在上一

16、章中已經作了詳細的介紹,本章所要介紹的是圖像分割的其他算法。3.1hough變換hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一。hough變換的基本原理在于利用點與線的對偶性,它將原始圖像空間中給定的曲線用過表達形式變?yōu)閰?shù)空間中的一個點。這樣,就把原始圖像中給定曲線的檢測問題轉化為尋找參數(shù)空間中的峰值問題,也就是把檢測整體特性轉化為檢測局部特性,比如直線、橢圓、圓、弧線等。在圖像空間中的任意一點(x,y)經過點-正弦曲線對偶的hough變換為: (3.1)這樣就在參數(shù)空間中變?yōu)榱艘粭l正弦曲線,其中取。我們可以證明,圖像空間x-y中直線上的點,在經過hough變換后,它們的正弦曲

17、線在參數(shù)空間中有一個公共交點。這也就是說,參數(shù)空間中的一點,對應于圖像空間x-y中的一條直線,并且它們是一一對應的。所以,為了檢測出圖像空間中由點所構成的直線,可以將參數(shù)空間量化為許多小格。根據(jù)圖像空間中每個點的坐標(x,y),在內以小格的步長計算各個值,所得的值落在某個小格內,便使該小格的累加計算器加1。當圖像空間中全部的點都變換后,對小格進行檢驗,計數(shù)值最大的小格,其值對應于圖像空間中所求的直線。參數(shù)空間中,、與圖像空間中直線的斜率和截距的關系為: , (3.2)圖3.11hough變換原圖圖3.12hough變換映射圖像圖3.13hough反變換圖像如以上三圖所示,圖3.12為經過灰度級

18、拉伸后的hough變換映射圖像,最亮的4個點代表原圖中的4條直線。圖3.13為根據(jù)圖3.12進行hough反變換后得到的圖像。通過與原圖像的比較可以看出,4條直線不僅能夠檢測出來,而且它們的位置也準確無誤地呈現(xiàn)出來。3.2閾值法閾值分割法是一種在區(qū)域基礎上創(chuàng)建的圖像分割技術,它的基本原理是:通過設定不同的特征閾值,把圖像像素點分為若干類。設原始圖像為,按照一定的準則在該圖像中找到特征值,將圖像分割為兩個部分,分割后的圖像為: (3.3)如果取為黑,為白,則為圖像的二值化。閾值分割法是一種最常用也是最簡單的圖像分割方法,它特別適用于目標和背景占據(jù)不同灰度級范圍的圖像。閾值分割法一般分為人工選擇法

19、和自動選擇法。人工法就是結合直方圖人為地選擇閾值。在本節(jié)中,將會主要介紹自動閾值選擇法,其中包括:迭代法、otsu法、一維最大熵法、二維最大熵法、簡單統(tǒng)計法。3.2.1迭代法迭代法的基本思想是:開始時選擇一個閾值作為初始估計值,然后按照某種策略通過迭代不斷地改變這一估計值,直到滿足給定的準則為止,這種方法的具體步驟如下:(1) 在一幅灰度范圍為0,l-1的圖像中,選擇圖像灰度的中值作為初始閾值,其中圖像中對應灰度級的像素數(shù)為。(2) 利用閾值把圖像分割成兩個區(qū)域:和,其平均灰度值和可以由下列式子計算。 , (3.4)(3) 計算出和后,用下式計算出新的閾值。 (3.5)(4) 對步驟(2)(3

20、)進行重復,直到和的差小于某個給定值為止。3.2.2otsu法otsu法是一種使類間方差最大的閾值確定方法,所以也稱為最大類間方差法。這種方法具有簡單、處理速度快等特點,是一種常用的閾值選取方法。它的基本思想是:把圖像中的像素按照灰度值用閾值分成兩類和,由灰度值在0,t之間的像素組成,由灰度值在t+1,l-1之間的像素組成,兩類之間的類間方差可由下式計算得出: (3.6)上式中,為中包含的像素數(shù),為中包含的像素數(shù),是中所有像素的平均灰度值,是中所有像素的平均灰度值。令在0,l-1范圍內依次取值,使最大的值就是otsu法的最佳閾值。3.2.3一維最大熵法熵是平均信息量的表征。將信息熵的概念應用于

21、圖像閾值分割的基本思想是:利用圖像的灰度分布密度函數(shù)定義圖像的信息熵,根據(jù)假設的不同或視角的不同提出不同的熵準則,最后通過優(yōu)化該準則得到閾值。其中一維最大熵求閾值的方法如下。在一幅灰度范圍為0,l-1的圖像中,熵函數(shù)的定義為: (3.7)式中, 為灰度級出現(xiàn)的概率。當熵函數(shù)取得最大值時,對應的灰度值就是所求的最佳閾值。3.2.4二維最大熵法由于灰度一維最大熵是基于圖像原始直方圖的,它僅僅利用了點灰度信息而未充分利用圖像的空間信息,而二維最大熵綜合利用了點灰度特征和區(qū)域灰度特征,從而較好地表征了圖像的信息。它的基本方法是:以原始灰度圖像(個灰度級)中各像素及其4鄰域的4個像素為一個區(qū)域,計算出區(qū)

22、域灰度均值圖像,這樣原始圖像中的每一個像素都對應于一個點灰度-區(qū)域灰度均值對。設為圖像中點灰度為及其區(qū)域灰度均值為的像素點數(shù),為點灰度-區(qū)域灰度均值對發(fā)生的概率,則: (3.8)其中n為圖像的大小。則二維最大熵的判別函數(shù)為: (3.9)使為最大的閾值和即為所求閾值。其中: 3.2.5簡單統(tǒng)計法簡單統(tǒng)計法是一種基于簡單的圖像統(tǒng)計的閾值選取方法。使用該方法,能直接計算一幅圖像為的閾值。該方法的計算公式為: (3.10)其中,得到的閾值分割結果如圖3.21所示:圖3.21otsu法閾值分割結果3.3特征空間聚類法特征空間聚類法即根據(jù)某些特征將目標點劃分到相應的類別中,這種方法是一種比較簡單有效的圖像

23、分割方法。典型的特征空間聚類方法有:k-均值聚類法、isodata法、模糊c-均值法等。下面主要介紹前兩種方法。3.3.1k-均值聚類法k-均值聚類法可以將一幅圖像分割成k個區(qū)域。設代表數(shù)字圖像像素的坐標,代表像素的灰度,則k-均值法的最小化指標為: (3.11)式中:表示圖像中有個區(qū)域,表示在第次迭代后圖像中第個區(qū)域,表示此迭代后第個區(qū)域的平均值。上式給出了每個像素與其對應區(qū)域均值的距離和。k-均值聚類法的具體步驟如下。(1)任意選個初始類均值,、。(2)在第次迭代時,根據(jù)以下所述的距離準則將每個像素都賦給類(區(qū)域)之一:若即將每個像素賦給均值離它最近的類。(3)對每個類,更新該類的均值:

24、(3.12)式中,是更新后的類中的像素個數(shù)。(5) 如果對所有的類,有,則算法收斂,結束;否則退回步驟(2)繼續(xù)下一迭代。3.3.2isodata聚類法原理isodata聚類方法是在k-均值算法上發(fā)展起來的,它是在沒有先驗知識的情況下進行的一種無監(jiān)督分類。首先,它選擇若干樣本作為聚類中心,再按照某種聚類準則,使其余樣本歸入最近的聚類中心,得到初始聚類;然后判斷初始聚類結果是否合理,若不合理則按照特定規(guī)則將聚類集合進行分裂或合并,以獲得新的聚類中心,再判斷聚類結果是否符合要求。如此反復迭代,直到聚類劃分符合要求為止。為了簡化程序,本節(jié)選擇的初始聚類數(shù)目遠遠大于預期聚類數(shù)目,因此只需要考慮合并聚類

25、,而不會出現(xiàn)分裂聚類這種情況。具體的步驟如下:(1)設置初始聚類數(shù)目 為預期聚類數(shù)目 的兩倍,并任意選取個初始聚類的均值;(2)求各個樣本到所有聚類中心的距離,按照與聚類中心距離最小的原則將各樣本歸入最近的聚類;(3)更新各聚類均值;如果某聚類內的樣本數(shù)目為零,并使聚類數(shù)目;(4)計算全部聚類均值之間的距離,找到其最小距離。設聚類 和聚類 之間的距離最小,則將兩個類合并,合并后的聚類均值為: (3.13)式中,、和分別為合并前聚類和聚類的均值,及其合并后聚類的均值,和為聚類和聚類內的樣本數(shù)目。合并后聚類的樣本數(shù)目為和之和,此時聚類數(shù)目;(5)如果不大于,則結束;否則退回步驟(2)繼續(xù)下一次迭代

26、。特征空間聚類法結果如圖3.31所示:圖3.31特征空間聚類法結果3.4松弛迭代法松弛迭代分割法是以像素為操作對象,借助迭代逐步確定各像素的歸類。每次迭代中,需要用到稱為相容性的準則。它的基本思想是圖像中每一個像素的歸屬不僅應該由其本身來決定,而且應該受到它的鄰域像素的影響。松弛迭代分割法可以用以下3個步驟來完成。(1) 隨機初始化標記。設圖像的大小為,像素為 ,用閾值法將圖像分為個類,第類的均值和方差分別為和。因為像素點和第類的馬氏距離為: (3.14)則初始概率為: (3.15)(2) 規(guī)則更新。對于類和類,相容性矩陣定義為: (3.16)如果用表示類對點的相容性因素,用表示點的鄰域,則:

27、 (3.17)當只考察8點鄰域時,則。在第步的概率矢量可用下式計算: (3.18)(3) 迭代終止。松弛迭代是一種像素標記方法,所以可設定一個量(如百分比)來確定迭代是否達到預期目標,并在達到時認為迭代收斂,終止算法。松弛迭代分割圖像結果如圖3.41所示:圖3.41松弛迭代法結果3.5小結圖像分割是從圖像處理到圖像分析的關鍵步驟,可以說,圖像分割結果的好壞直接影響著對圖像的理解。因此,它是一種重要的圖像技術,在理論研究和實際應用中都得到了人們的廣泛重視。4matlab對邊緣檢測算法的實現(xiàn)在第二章中,我們已經介紹了一些關于邊緣檢測的基本概念,使大家對于圖像進行邊緣檢測的方法有了一些了解。在本章中

28、,將會重點介紹如何用matlab軟件對圖像進行邊緣檢測,并對不同的算子產生的不同效果進行比較。原始圖像如圖4.01所示:圖4.01原始圖像將原始圖像保存在matlabwork文件夾下,并將圖像命名為123,格式為bmp。4.1模板算子法一階導數(shù)模板算子最常用的方法有羅伯特(roberts)算子法、索貝爾(sobel)算子法和prewitt算子法。二階導數(shù)方法就是拉普拉斯算子法。經過拉普拉斯算子卷積以后的圖像,還要判斷出它的零交叉點,也就是邊緣點。在實際應用中,一方面是因為拉普拉斯算子對圖像噪聲十分敏感,另一方面就是邊緣是雙像素寬的,且不能提取邊緣方向信息,因此它很少直接用于邊緣檢測,而是與其他

29、方法相結合,提取出定位精確的邊緣,該方法就是kirsch算子法。4.1.1 羅伯特算子羅伯特(roberts)算子的模板如下: matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句r=0 1;-1 0;%輸入羅伯特算子的模板bw=edge(gryim,r,0.04);%對灰度圖進行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);

30、title(邊緣檢測結果);%輸出邊緣檢測圖像用羅伯特算子法進行邊緣檢測的結果如圖4.02所示:圖4.02 roberts邊緣圖像4.1.2 prewitt算子prewitt算子的模板如下: matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句p=-1 0 1;-1 0 1;-1 0 1;%輸入prewitt算子的模板bw=edge(gryim,p,0.14);%對灰度圖進行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(

31、i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結果);%輸出邊緣檢測圖像用prewitt算子法進行的邊緣檢測結果如圖4.03所示:圖4.03 prewitt邊緣圖像4.1.3 sobel算子sobel算子的模板如下: matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句s=-1 0 1;-2 0 2;-1 0 1;%輸入sobel算子的模板bw=edge(gryim,s,0.2);%

32、對灰度圖進行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結果);%輸出邊緣檢測圖像用sobel算子法進行的邊緣檢測結果如圖4.04所示: 圖4.04 sobel邊緣圖像4.1.4 拉普拉斯算子拉普拉斯算子是無方向算子,因此它只需要一個模板,下面是三個經常用到的拉普拉斯模板:(1)(2)(3)matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的

33、灰度,如果是灰度圖,則直接刪掉這條語句l= 0 1 0;1 -4 1;0 1 0;;%輸入拉普拉斯算子的模板bw=edge(gryim,l,0.004);%對灰度圖進行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結果);%輸出邊緣檢測圖像用拉普拉斯算子法進行的邊緣檢測結果如圖4.05所示:圖4.05 拉普拉斯邊緣圖像4.2高斯算子從拉普拉斯邊緣圖像中可以看出,拉普拉斯算子對圖像噪聲比較敏感。為了減少噪聲的影響,可以用高斯函數(shù)對圖像先進行平滑卷積濾波處

34、理,然后再運用拉普拉斯算子。高斯濾波器可定義為如下形式: (4.1)這種將高斯卷積和拉普拉斯算子組合成一個濾波器或算子的方法稱為拉普拉斯-高斯(log)濾波器或算子,其脈沖響應函數(shù)為: (4.2)log濾波器可表示成兩個高斯函數(shù)之差,因此也可以用差分高斯(dog)算子對圖像進行邊緣檢測,該濾波器定義為如下形式: (4.3)其中,兩個高斯函數(shù)的均方差為。無論是log還是dog,為了不改變卷積后圖像的整體動態(tài)范圍,還要使模板元素的代數(shù)和為零。卷積處理后,仍然要用上一節(jié)給出的方法得到零交叉邊緣點。log算子的模板如下:matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖

35、片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句bw=edge(gryim,log,0.005);%對灰度圖進行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結果);%輸出邊緣檢測圖像用log算子法進行的邊緣檢測結果如圖4.06所示:圖4.06 log算子邊緣檢測結果4.3 canny算子canny算子是在邊緣檢測的3個指標(好的檢測、好的定位、最小響應)和3個準則(信噪比準則、定位精度

36、準則和單邊緣響應準則)的基礎上發(fā)展起來的一種很有效的邊緣檢測。canny邊緣檢測方法分為4步:(1) 用高斯濾波器對圖像進行平滑處理。(2) 利用一階偏導算子找到圖像灰度沿著水平方向和垂直方向的偏導數(shù),并按下列兩個式子求出梯度的幅值和方位。在程序中,我們選擇性能較好的sobel算子。 (4.4) (4.5)(3) 對梯度幅值進行非極大值抑制,即找到局部梯度最大點。方法是在33的鄰域窗內,給定像素p與沿著梯度線方向的兩個像素相比,如果p的梯度幅值不比這兩個像素的梯度幅值大,則令p=0,否則保留原幅值。(4) 用雙閾值算法檢測和連接邊緣。方法是凡大于高閾值的一定是邊緣;凡小于低閾值的一定不是邊緣;

37、如果檢測結果大于低閾值而又小于高閾值,則要看這個像素的鄰接像素中是否有大于高閾值的邊緣像素,如果有,則是邊緣,否則不是。這往往是一個迭代的過程。matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句bw=edge(gryim,canny,0.005);%對灰度圖進行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結

38、果);%輸出邊緣檢測圖像用canny算子法進行的邊緣檢測結果如圖4.07所示:圖4.07 canny算子邊緣檢測結果4.4 幾種改進的邊緣檢測算子以上幾節(jié)重點介紹了模板算子法、高斯算子法、canny算子法的邊緣檢測過程,這些邊緣檢測算子在我們對圖像進行處理的過程中經常會遇到,是其他一些邊緣檢測算子的基礎,下面我們再介紹幾種改進的邊緣檢測算子,它們在圖像的邊緣檢測中也起著重要作用。4.4.1 形態(tài)學邊緣檢測形態(tài)學邊緣檢測方法分為形態(tài)學梯度法和形態(tài)學拉普拉斯法兩種,公式如下所示: (4.6) (4.7)形態(tài)學梯度法相當于一階導數(shù),形態(tài)學拉普拉斯法相當于二階導數(shù), 形態(tài)學邊緣檢測結果如圖4.08所示

39、:圖4.08形態(tài)學邊緣檢測結果4.4.2 小波變換邊緣檢測對于某些特殊的小波函數(shù),小波變換的極大值對應于圖像中的邊緣點。在圖像中,設是一個平滑函數(shù),令: (4.8)那么,和可以作為小波函數(shù)。在尺度下的小波變換是: (4.9)由于二維小波變換的兩個分量和分別正比于圖像經平滑后的沿水平和垂直方向的偏導數(shù),所以,二維小波變換矢量就是梯度。當取為高斯函數(shù)時,它與canny算子在同一尺度下是等價的。剩下的部分與canny算子也是一樣的,只需要沿著梯度方向檢測小波變換系數(shù)模的局部極大值點,即可得到圖像的邊緣點。小波函數(shù)的種類很多,也可以自己構造,但用于邊緣檢測的小波應滿足一些條件。在這里,我們選擇二次樣條

40、小波函數(shù),它的低通濾波系數(shù)h(n)和高通濾波系數(shù)g(n)如下表所示:n-1012h(n)0.1250.3750.3750.125g(n)-22通過對小波函數(shù)尺度選取的不同,得到的邊緣和抑制噪聲的能力會有所不同。在尺度下,它所對應的濾波器和分別表示在和的相鄰系數(shù)之間插入個零而得到的離散濾波器。在具體的編程實現(xiàn)中,用高斯濾波器對圖像進行卷積得到邊緣圖像,用低通濾波器對圖像進行卷積得到下一個尺度所需要的平滑圖像。小波變換邊緣檢測結果如圖4.09所示:圖4.09 小波變換邊緣檢測結果4.4.3金字塔方法金字塔方法是多分辨率圖像處理的一個最基本的方法,小波變換的多分辨率分析就是在高斯-拉普拉斯金字塔方法

41、的啟發(fā)下提出來的。圖像處理的金字塔方法是將原始圖像分解成不同空間分辨率的子圖像,高分辨率(尺度較大)的子圖像放在下層,低分辨率(尺度較?。┑膱D像放在上層,從而形成一個金字塔的形狀,如圖4.10所示:圖4.10圖像處理的金字塔模型高斯-拉普拉斯金字塔方法也可用于圖像的邊緣檢測。它的基本原理是,先對圖像進行高斯卷積,為高斯卷積核,下標表示的是金字塔的層數(shù): (4.10)然后再求出兩個圖像之間的差值: (4.11)再對卷積后的圖像進行隔行隔列采樣,這樣可以起到降低分辨率的作用: (4.12)這個過程我們稱之為高斯塔分解,如圖4.11所示:圖4.11高斯塔分解模型然后由高斯塔重構拉普拉斯塔,這個過程就

42、是高斯塔分解的逆過程。首先內插放大圖像,然后再進行高斯卷積計算: (4.13)拉普拉斯重構過程如圖4.12所示:圖4.12拉普拉斯塔重構模型金字塔邊緣檢測結果如圖4.13所示:圖4.13金字塔邊緣檢測結果4.5小結以上小節(jié)列舉了matlab對一些經典邊緣檢測算法的實現(xiàn),其他算法的邊緣檢測程序和這些經典算法的程序類似,在這里不一一列舉了。通過反復實驗可以證明:羅伯特(roberts)邊緣算子、索貝爾(sobel)邊緣算子和prewitt 邊緣算子對噪聲較為敏感,它們只是進行簡單的邊緣檢測,而不會對要處理的圖像事先進行濾波,得到的往往是斷續(xù)的、不完整的結構信息,為了能成功地檢測到真正的邊緣, 一般

43、都要先對原圖像進行平滑來去除圖像中的噪聲,再進行邊緣檢測。高斯拉普拉斯(laplacian of gaussian)邊緣檢測算子將高斯濾波和拉普拉斯邊緣檢測結合在一起,先對圖像進行平滑和積分以濾掉噪聲,消除噪聲后再進行邊緣檢測(銳化和微分),得到的效果比較好,且實現(xiàn)容易??材?canny)邊緣算子提取的邊緣線型連接程度也較好,邊緣提取的也較完整,,但易受噪聲影響,為了獲得理想的邊緣檢測結果,必須與理想濾波器結合使用,實現(xiàn)起來比較復雜。邊緣檢測是圖像分割的一部分,并且一直是圖像處理中的熱點研究問題。本章所介紹的這幾種方法都是目前最常用的邊緣檢測方法。需要注意的是,沒有一種邊緣檢測方法可以應用于所

44、有的圖像邊緣提取中,只有根據(jù)具體情況,選擇某種方法,才能得到最佳的效果。5邊緣檢測算法的硬件實現(xiàn)我們現(xiàn)在正處于數(shù)字化和信息化的時代,由于計算機技術和微電子工藝的發(fā)展,使現(xiàn)代數(shù)字系統(tǒng)的設計和應用進入到了一個新的階段。因此,電子設計自動化(eda)技術在數(shù)字系統(tǒng)的設計和應用中起到了越來越重要的作用。目前,eda技術已經成為電子設計技術的強有力工具,如果沒有eda技術的支持,要想完成超大規(guī)模集成電路的設計和制造是不可想象的。相反,由于生產制造技術的不斷進步又對eda技術提出了更高的要求,以使其不斷地向前發(fā)展!在上一章中,我們已經用matlab軟件實現(xiàn)了對圖像的邊緣檢測,而在實時的圖像處理過程中,由于

45、對處理的速度有較高的要求,這時候純粹用軟件的方法是很難達到預期要求的,所以在本章中,我們將要討論如何用verilog硬件描述語言實現(xiàn)對圖像的邊緣檢測。在經典的邊緣檢測算法中,sobel邊緣檢測算法由于其計算量小、實現(xiàn)簡單、處理速度快,并且得到的邊緣光滑、連續(xù)等優(yōu)點而得到非常廣泛的應用。下面我們將以sobel算子為例展開詳細的介紹。5.1sobel邊緣檢測算法經典的sobel圖像邊緣檢測法,在圖像空間中是利用兩個方向模板與圖像進行鄰域卷積來完成的,這兩個方向模板一個是用來檢測垂直邊緣,一個是用來檢測水平邊緣的。sobel算法的優(yōu)點是計算簡單,速度快,這種算法的基本原理是:由于圖像邊緣附近的亮度變

46、化較大,因此可以把那些在相鄰的區(qū)域內,灰度值變化超過某個適當閾值t的像素點當作邊緣點。但由于它只采用了兩個方向模板算子,只能檢測圖像水平方向和垂直方向的邊緣,所以,這種算法對于紋理比較復雜的圖像,其邊緣檢測效果可能欠佳;同時,經典sobel算法也認為,凡灰度值大于或等于閾值的像素點都是邊緣點。這種判定依據(jù)是不太合理的,這樣會造成邊緣點的誤判,因為多噪聲點的灰度新值也是很大的。圖5.01所示的是sobel邊緣檢測法框圖:圖5.01 sobel邊緣檢測法框圖從圖5.01中可以看出,在對一幅圖像進行sobel邊緣檢測的過程中,首先要利用sobel算子計算出圖像的水平梯度和垂直梯度,再將這兩個方向的梯

47、度結合起來,最后利用門限處理模塊對圖像的邊緣進行判斷,最后輸出圖像的邊緣檢測結果。圖5.02一幅圖像的區(qū)域(z是灰度值)和sobel算子圖5.02(a)為一副圖像的33區(qū)域,圖(b)和圖(c)分別為sobel算子的x方向(垂直方向)梯度算子和y方向(水平方向)的梯度算子。當采用sobel算子對圖5.02(a)所示的33區(qū)域做梯度計算時,可得到標記為z5的像素點x方向梯度和y方向的梯度分量分別為:梯度計算的公式為: (5.1)該設計在門限處理的時候,采用基本全局門限,即:當某像素點(x,y)的梯度值f(x,y)大于或等于設定門限t時,規(guī)定該點的灰度值為255,當小于設定門限t時則為0。表達式如下

48、: (5.2)5.2sobel邊緣檢測的硬件實現(xiàn)實際對圖像進行處理的過程中,用sobel算子對物體進行邊緣檢測是經常用到的方法,由于對處理的速度要求較高,因此用純軟件的方法很難達到實際要求。而fpga對這種可完成的處理任務幾乎沒有限制,非常適合高速、并行信號的處理,并且fpga容量大、密度高,有內置存儲器,且容易實現(xiàn),因此fpga被廣泛應用于實時圖像處理系統(tǒng)中。根據(jù)圖5.01所示的框圖中,可以知道在用硬件實現(xiàn)sobel邊緣檢測時應該包括門限處理模塊和梯度計算模塊。但是為了進一步對圖像數(shù)據(jù)做模塊處理,在硬件實現(xiàn)時還需要用到圖像數(shù)據(jù)緩沖模塊。5.2.1圖像數(shù)據(jù)緩沖模塊為了得到33的方形模板窗,在這

49、里通過應用基于ram的移位寄存器宏模塊altshift taps來實現(xiàn)此功能,而且還可以省去一些控制信號,使用起來非常方便。altshift_taps宏功能模塊是一個可配置的、具有抽頭(taps)輸出的移位寄存器,每個抽頭在移位寄存器鏈的指定位置輸出數(shù)據(jù)。圖5.03(a)和圖5.03(b)所示的分別為特制的8位輸入/8位輸出、3抽頭,且相鄰兩個抽頭相距256個寄存器的altshift_taps0功能模塊及其內部寄存器鏈結構圖,圖(b)中的buffer0,buffer1,buffer2分別為由256個8位移位寄存器構成的寄存器鏈。當圖像的第n行數(shù)據(jù)在像素時鐘同步下從shiftin7:0端輸入到a

50、ltshift_taps0的buffer0后,隨著第n+1行圖像數(shù)據(jù)輸入到buffer0中,第n行的圖像數(shù)據(jù)依次存入buffer1中,而當?shù)趎+2行圖像數(shù)據(jù)存入buffer0后,buffer1和buffer2中分別存放的是第n+1行和第n行的圖像數(shù)據(jù),從而實現(xiàn)緩沖圖像數(shù)據(jù)的功能。這樣在像素時鐘的同步下,第n+2,n+1,n行的同一列數(shù)據(jù)分別從tap0x7:0,tap1x7:0,tap2x7:0端輸出給梯度計算模塊,進行梯度計算。圖5.03altshift_taps0功能模塊及其內部寄存器機構圖5.2.2梯度計算模塊在sobel算子的邊緣檢測中,圖像像素點的梯度計算可由sobel算子與圖像像素做

51、卷積運算的輸出經過梯度計算公式的計算獲得。為了實現(xiàn)卷積運算需要做乘法和加法運算,我們以兩個4位二進制數(shù)x和y為例來編寫加法器和乘法器的verilog程序:加法器程序如下:module add_4(x,y,sum,c);input3:0 x,y;output3:0 sum;output c;assign c,sum=x+y;endmodule乘法器程序如下:module mult_4(x,y,product)input3:0 x,y;output7:0 product;assign product=x*y;endmodule不同位數(shù)的加法器或乘法器只需改變位數(shù)即可。在fpga的庫中存在著參數(shù)化的

52、加法器和乘法器可以供設計者使用,設計者也可以通過自己編寫代碼并引用參數(shù)化的加法器或乘法器實例,來完成加法器和乘法器的設計。圖5.04(左)為33的濾波模板,圖5.04(右)為卷積運算的原理圖。圖5.04 33濾波模板和卷積運算原理圖從圖中也可以看出,為了實現(xiàn)卷積運算,乘法和加法的運算是必不可少的。在許多關于用硬件實現(xiàn)邊緣檢測的設計中,采用的都是分立的d觸發(fā)器、乘法器和加法器。但是這樣實現(xiàn)起來會十分復雜。所以,在這里,我們選擇采用可編程乘加器altmult_add模塊和可編程多路并行加法器parallel_add模塊來實現(xiàn)卷積運算,這樣就使得設計被大大簡化了??删幊坛思悠鱝ltmult_add可以接收多組數(shù)據(jù)的輸入,各組數(shù)據(jù)相乘后再進行相加或相減作為結果輸出。而且altmult_add在使用時可以根據(jù)設計的需要設置乘法器的個數(shù)、輸入

溫馨提示

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

評論

0/150

提交評論