版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、河北大學(xué)工商學(xué)院2010屆本科生畢業(yè)論文(設(shè)計)圖像目標(biāo)提取算法及其硬件實現(xiàn)摘要邊緣是圖像最基本的特征,因此,邊緣檢測是圖像處理中非常重要的內(nèi)容。本文首先介紹了幾種經(jīng)典的目前被廣泛使用的圖像邊緣檢測算子,比如:羅伯特(roberts)邊緣算子、prewitt邊緣算子和索貝爾(sobel)邊緣算子等。這些算法的核心思想是假設(shè)邊緣點對應(yīng)于原始圖像灰度級梯度的局部極值點。然后在 matlab環(huán)境下對這些算子進(jìn)行編程實現(xiàn)。但是,有些圖像包含有噪聲,這些算法對噪聲非常敏感,常常會把噪聲當(dāng)作邊緣點檢測出來,而真正的邊緣由于噪聲的干擾也很有可能被漏檢。其次,文章介紹了圖像分割技術(shù),其核心思想是:為了辨識和分
2、析目標(biāo),需要將有關(guān)區(qū)域分離提取出來,并對目標(biāo)進(jìn)一步加以利用。在此基礎(chǔ)上,利用這些算子對圖像進(jìn)行了邊緣檢測,總結(jié)出了各種邊緣檢測算法的優(yōu)缺點,針對不同的圖像找到相對比較有效的邊緣檢測算法,進(jìn)而大幅度地減少了數(shù)據(jù)量,保留了圖像重要的結(jié)構(gòu)屬性。本文還介紹了如何用硬件對圖像進(jìn)行邊緣檢測,并與用matlab得到的邊緣檢測仿真結(jié)果進(jìn)行了對比,證明了用硬件實現(xiàn)圖像邊緣檢測的可行性。關(guān)鍵詞:邊緣檢測;圖像分割;目標(biāo)提取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導(dǎo)數(shù)的計算22.3邊緣檢測模板22.4小結(jié)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小結(jié)124matlab對邊緣檢測算法的實現(xiàn)134.1模板算子法134.1.1羅伯特算子134.1.2prewitt算子144.1.3sobel算子154.1.4拉普拉斯算子164.2高斯算子174.3canny算子184.4幾種改進(jìn)的邊緣檢測算子194
9、.4.1形態(tài)學(xué)邊緣檢測194.4.2小波變換邊緣檢測204.4.3金字塔方法214.5小結(jié)225邊緣檢測算法的硬件實現(xiàn)245.1sobel邊緣檢測算法245.2sobel邊緣檢測的硬件實現(xiàn)255.2.1圖像數(shù)據(jù)緩沖模塊265.2.2梯度計算模塊265.2.3仿真結(jié)果285.3小結(jié)296結(jié)束語30321引言所謂邊緣是指其周圍像素灰度急劇變化的那些像素的集合,它是圖像最基本的特征。邊緣存在于目標(biāo)、背景和區(qū)域之間,所以,它是圖像分割所依賴的最重要的依據(jù)。由于邊緣是位置的標(biāo)志,對灰度的變化不敏感,因此,邊緣也是圖像匹配的重要特征。邊緣檢測是圖像處理和計算機(jī)視覺中的基本問題,圖像屬性中的顯著變化通常反映
10、了屬性的重要事件和變化,這些包括:深度上的不連續(xù),表面方向不連續(xù),物質(zhì)屬性變化和場景照明變化。它們在圖像中表現(xiàn)為亮度變化明顯的點。邊緣檢測的目的就是標(biāo)識這些像素點,它是圖像識別的基礎(chǔ)和前提,是圖像分割的一部分。它大幅度地減少了數(shù)據(jù)量,并剔除了可以認(rèn)為不相關(guān)的信息,保留了圖像重要的結(jié)構(gòu)屬性。因此,邊緣檢測在數(shù)字圖像處理中有重要地位。邊緣檢測就是找到圖像中邊緣像素點的過程,從而生成一幅邊緣圖。一般來說,邊緣檢測分為3:(1) 基于各種原理和方法找到潛在邊緣點;(2) 選取閾值,生成二值邊緣圖;(3) 有些算法還要進(jìn)行邊緣細(xì)化、連接等后續(xù)處理。2邊緣檢測2.1邊緣屬性邊緣可能會隨著視角的不同而變化,
11、這通常反映在場景、物體的形狀上;邊緣也可能與視角無關(guān),這通常反映在被觀察物體的表面紋理和表面形狀上。比如,一個典型的邊界可能是一塊黃色和一塊紅色之間的邊界;與此相反的邊界可能是在一種不變的背景上的一些不同顏色的點。在邊線的每一邊都會有一個邊緣,在許多圖像處理的實際應(yīng)用中邊緣都起著非常重要的作用。在自然界中,許多圖像的的邊緣并不是人們理想的階梯邊緣。相反,它會受到許多因素的影響。比如有限場景深度帶來的聚焦模糊;光滑物體邊緣的陰影;非半徑光源產(chǎn)生的陰影帶來的半影模糊等。誤差函數(shù)經(jīng)被用于實際應(yīng)用中的邊模糊效果的建模中。2.2導(dǎo)數(shù)的計算經(jīng)典的邊緣檢測是以原始圖像為基礎(chǔ),對圖像的各個像素考察它的某個領(lǐng)域
12、內(nèi)灰度階躍變化,利用邊緣臨近一階或二階方向?qū)?shù)變化規(guī)律檢測邊緣。邊緣檢測的基本思想是通過檢測每個像元和其鄰域的狀態(tài),以決定該像元是否位于一個物體的邊界上。在一階導(dǎo)數(shù)中,邊緣點表現(xiàn)為一個局部極值點,許多邊緣檢測操作都是基于亮度的一階導(dǎo)數(shù)這樣就可以得到原始數(shù)據(jù)亮度的梯度。而在二階導(dǎo)數(shù)中,表現(xiàn)為一個過零點,它實質(zhì)上是亮度梯度的變化率,當(dāng)圖像在理想的連續(xù)變化的情況下時,通過在二階導(dǎo)數(shù)中檢測過零點將會得到梯度中的局部最大值。由此可知,圖像中目標(biāo)的邊緣可通過求取它們的導(dǎo)數(shù)來確定。導(dǎo)數(shù)可用微分算子來計算,而數(shù)字圖像中求導(dǎo)數(shù)是利用差分近似微分來進(jìn)行的。2.3邊緣檢測模板邊緣檢測和區(qū)域劃分是圖像分割技術(shù)的兩種不
13、同的方法,二者具有互補(bǔ)的特點。在邊緣檢測中,提取的是圖像中不連續(xù)部分的特征,根據(jù)閉合的邊緣來確定區(qū)域。而在區(qū)域劃分中,是把圖像分割成特征相同的區(qū)域,區(qū)域之間的邊界就是邊緣。此外,由于邊緣檢測方法不需要將圖像逐個像素地分割,因此更適合大圖像的分割。邊緣大致可以分為兩種,一種是階躍狀邊緣,這種邊緣兩邊像素的灰度值明顯不同;另一種為屋頂狀邊緣,其邊緣處于灰度值由小到大再由大到小的變化轉(zhuǎn)折點處。邊緣檢測的工具主要是邊緣檢測模板?,F(xiàn)在,我們用一個一維模板為例來說明邊緣檢測模板是如何作用的。現(xiàn)在假設(shè)一個模板為,還有一副圖像為,從中可以看出,這幅圖像的左邊暗,右邊亮,圖像中間存在著一條明顯的邊緣,這是一個典
14、型的階躍狀邊緣,在使用模板對其進(jìn)行模板處理之后,結(jié)果變成:。這樣,我們就可以清楚地看出,進(jìn)行邊緣檢測后的圖像在原圖像邊緣處的灰度值要高了一些,在觀察時就可以發(fā)現(xiàn)一條很明顯的亮邊,而其他區(qū)域都很暗,這就是所謂的邊緣檢測的效果。模板的作用是用右邊鄰點的灰度值減去左邊鄰點的灰度值,得到的結(jié)果作為該點的灰度值。這樣做的結(jié)果是使在灰度值相近的區(qū)域內(nèi)的點的灰度值接近于0,而在圖像的邊緣附近,灰度值將會有明顯的跳變,使得邊緣處的點的灰度值很大,這就出現(xiàn)了上面邊緣檢測的結(jié)果。2.4小結(jié)邊緣是圖像最基本的特征,因此,邊緣檢測是圖像處理中非常重要的內(nèi)容。邊緣檢測算法的核心思想就是假設(shè)邊緣點對應(yīng)于原始圖像灰度級梯度
15、的局部極值點。邊緣檢測模板就是一種邊緣檢測器,而且它在數(shù)學(xué)上的涵義是一種基于梯度的濾波器,我們習(xí)慣上又把它稱為邊緣檢測算子。梯度是有方向的,并且和邊緣的方向是垂直的。比如模板-1 0 1是水平方向的,和上節(jié)那幅圖像的邊緣正好是垂直的,所以用這個模板就可以將這幅圖像的邊緣檢測出來。3圖像分割圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標(biāo)的技術(shù)和過程。我們在對圖像的研究和應(yīng)用中,往往只是對圖像中的某些部分感興趣,我們把這些部分一般稱為目標(biāo)或前景。為了識別并對目標(biāo)進(jìn)行分析,我們需要將有關(guān)區(qū)域分離提取出來,再次基礎(chǔ)上再對目標(biāo)加以利用,比如進(jìn)行特征提取和測量。邊緣檢測是圖像分割的一部分,在上一
16、章中已經(jīng)作了詳細(xì)的介紹,本章所要介紹的是圖像分割的其他算法。3.1hough變換hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一。hough變換的基本原理在于利用點與線的對偶性,它將原始圖像空間中給定的曲線用過表達(dá)形式變?yōu)閰?shù)空間中的一個點。這樣,就把原始圖像中給定曲線的檢測問題轉(zhuǎn)化為尋找參數(shù)空間中的峰值問題,也就是把檢測整體特性轉(zhuǎn)化為檢測局部特性,比如直線、橢圓、圓、弧線等。在圖像空間中的任意一點(x,y)經(jīng)過點-正弦曲線對偶的hough變換為: (3.1)這樣就在參數(shù)空間中變?yōu)榱艘粭l正弦曲線,其中取。我們可以證明,圖像空間x-y中直線上的點,在經(jīng)過hough變換后,它們的正弦曲
17、線在參數(shù)空間中有一個公共交點。這也就是說,參數(shù)空間中的一點,對應(yīng)于圖像空間x-y中的一條直線,并且它們是一一對應(yīng)的。所以,為了檢測出圖像空間中由點所構(gòu)成的直線,可以將參數(shù)空間量化為許多小格。根據(jù)圖像空間中每個點的坐標(biāo)(x,y),在內(nèi)以小格的步長計算各個值,所得的值落在某個小格內(nèi),便使該小格的累加計算器加1。當(dāng)圖像空間中全部的點都變換后,對小格進(jìn)行檢驗,計數(shù)值最大的小格,其值對應(yīng)于圖像空間中所求的直線。參數(shù)空間中,、與圖像空間中直線的斜率和截距的關(guān)系為: , (3.2)圖3.11hough變換原圖圖3.12hough變換映射圖像圖3.13hough反變換圖像如以上三圖所示,圖3.12為經(jīng)過灰度級
18、拉伸后的hough變換映射圖像,最亮的4個點代表原圖中的4條直線。圖3.13為根據(jù)圖3.12進(jìn)行hough反變換后得到的圖像。通過與原圖像的比較可以看出,4條直線不僅能夠檢測出來,而且它們的位置也準(zhǔn)確無誤地呈現(xiàn)出來。3.2閾值法閾值分割法是一種在區(qū)域基礎(chǔ)上創(chuàng)建的圖像分割技術(shù),它的基本原理是:通過設(shè)定不同的特征閾值,把圖像像素點分為若干類。設(shè)原始圖像為,按照一定的準(zhǔn)則在該圖像中找到特征值,將圖像分割為兩個部分,分割后的圖像為: (3.3)如果取為黑,為白,則為圖像的二值化。閾值分割法是一種最常用也是最簡單的圖像分割方法,它特別適用于目標(biāo)和背景占據(jù)不同灰度級范圍的圖像。閾值分割法一般分為人工選擇法
19、和自動選擇法。人工法就是結(jié)合直方圖人為地選擇閾值。在本節(jié)中,將會主要介紹自動閾值選擇法,其中包括:迭代法、otsu法、一維最大熵法、二維最大熵法、簡單統(tǒng)計法。3.2.1迭代法迭代法的基本思想是:開始時選擇一個閾值作為初始估計值,然后按照某種策略通過迭代不斷地改變這一估計值,直到滿足給定的準(zhǔn)則為止,這種方法的具體步驟如下:(1) 在一幅灰度范圍為0,l-1的圖像中,選擇圖像灰度的中值作為初始閾值,其中圖像中對應(yīng)灰度級的像素數(shù)為。(2) 利用閾值把圖像分割成兩個區(qū)域:和,其平均灰度值和可以由下列式子計算。 , (3.4)(3) 計算出和后,用下式計算出新的閾值。 (3.5)(4) 對步驟(2)(3
20、)進(jìn)行重復(fù),直到和的差小于某個給定值為止。3.2.2otsu法otsu法是一種使類間方差最大的閾值確定方法,所以也稱為最大類間方差法。這種方法具有簡單、處理速度快等特點,是一種常用的閾值選取方法。它的基本思想是:把圖像中的像素按照灰度值用閾值分成兩類和,由灰度值在0,t之間的像素組成,由灰度值在t+1,l-1之間的像素組成,兩類之間的類間方差可由下式計算得出: (3.6)上式中,為中包含的像素數(shù),為中包含的像素數(shù),是中所有像素的平均灰度值,是中所有像素的平均灰度值。令在0,l-1范圍內(nèi)依次取值,使最大的值就是otsu法的最佳閾值。3.2.3一維最大熵法熵是平均信息量的表征。將信息熵的概念應(yīng)用于
21、圖像閾值分割的基本思想是:利用圖像的灰度分布密度函數(shù)定義圖像的信息熵,根據(jù)假設(shè)的不同或視角的不同提出不同的熵準(zhǔn)則,最后通過優(yōu)化該準(zhǔn)則得到閾值。其中一維最大熵求閾值的方法如下。在一幅灰度范圍為0,l-1的圖像中,熵函數(shù)的定義為: (3.7)式中, 為灰度級出現(xiàn)的概率。當(dāng)熵函數(shù)取得最大值時,對應(yīng)的灰度值就是所求的最佳閾值。3.2.4二維最大熵法由于灰度一維最大熵是基于圖像原始直方圖的,它僅僅利用了點灰度信息而未充分利用圖像的空間信息,而二維最大熵綜合利用了點灰度特征和區(qū)域灰度特征,從而較好地表征了圖像的信息。它的基本方法是:以原始灰度圖像(個灰度級)中各像素及其4鄰域的4個像素為一個區(qū)域,計算出區(qū)
22、域灰度均值圖像,這樣原始圖像中的每一個像素都對應(yīng)于一個點灰度-區(qū)域灰度均值對。設(shè)為圖像中點灰度為及其區(qū)域灰度均值為的像素點數(shù),為點灰度-區(qū)域灰度均值對發(fā)生的概率,則: (3.8)其中n為圖像的大小。則二維最大熵的判別函數(shù)為: (3.9)使為最大的閾值和即為所求閾值。其中: 3.2.5簡單統(tǒng)計法簡單統(tǒng)計法是一種基于簡單的圖像統(tǒng)計的閾值選取方法。使用該方法,能直接計算一幅圖像為的閾值。該方法的計算公式為: (3.10)其中,得到的閾值分割結(jié)果如圖3.21所示:圖3.21otsu法閾值分割結(jié)果3.3特征空間聚類法特征空間聚類法即根據(jù)某些特征將目標(biāo)點劃分到相應(yīng)的類別中,這種方法是一種比較簡單有效的圖像
23、分割方法。典型的特征空間聚類方法有:k-均值聚類法、isodata法、模糊c-均值法等。下面主要介紹前兩種方法。3.3.1k-均值聚類法k-均值聚類法可以將一幅圖像分割成k個區(qū)域。設(shè)代表數(shù)字圖像像素的坐標(biāo),代表像素的灰度,則k-均值法的最小化指標(biāo)為: (3.11)式中:表示圖像中有個區(qū)域,表示在第次迭代后圖像中第個區(qū)域,表示此迭代后第個區(qū)域的平均值。上式給出了每個像素與其對應(yīng)區(qū)域均值的距離和。k-均值聚類法的具體步驟如下。(1)任意選個初始類均值,、。(2)在第次迭代時,根據(jù)以下所述的距離準(zhǔn)則將每個像素都賦給類(區(qū)域)之一:若即將每個像素賦給均值離它最近的類。(3)對每個類,更新該類的均值:
24、(3.12)式中,是更新后的類中的像素個數(shù)。(5) 如果對所有的類,有,則算法收斂,結(jié)束;否則退回步驟(2)繼續(xù)下一迭代。3.3.2isodata聚類法原理isodata聚類方法是在k-均值算法上發(fā)展起來的,它是在沒有先驗知識的情況下進(jìn)行的一種無監(jiān)督分類。首先,它選擇若干樣本作為聚類中心,再按照某種聚類準(zhǔn)則,使其余樣本歸入最近的聚類中心,得到初始聚類;然后判斷初始聚類結(jié)果是否合理,若不合理則按照特定規(guī)則將聚類集合進(jìn)行分裂或合并,以獲得新的聚類中心,再判斷聚類結(jié)果是否符合要求。如此反復(fù)迭代,直到聚類劃分符合要求為止。為了簡化程序,本節(jié)選擇的初始聚類數(shù)目遠(yuǎn)遠(yuǎn)大于預(yù)期聚類數(shù)目,因此只需要考慮合并聚類
25、,而不會出現(xiàn)分裂聚類這種情況。具體的步驟如下:(1)設(shè)置初始聚類數(shù)目 為預(yù)期聚類數(shù)目 的兩倍,并任意選取個初始聚類的均值;(2)求各個樣本到所有聚類中心的距離,按照與聚類中心距離最小的原則將各樣本歸入最近的聚類;(3)更新各聚類均值;如果某聚類內(nèi)的樣本數(shù)目為零,并使聚類數(shù)目;(4)計算全部聚類均值之間的距離,找到其最小距離。設(shè)聚類 和聚類 之間的距離最小,則將兩個類合并,合并后的聚類均值為: (3.13)式中,、和分別為合并前聚類和聚類的均值,及其合并后聚類的均值,和為聚類和聚類內(nèi)的樣本數(shù)目。合并后聚類的樣本數(shù)目為和之和,此時聚類數(shù)目;(5)如果不大于,則結(jié)束;否則退回步驟(2)繼續(xù)下一次迭代
26、。特征空間聚類法結(jié)果如圖3.31所示:圖3.31特征空間聚類法結(jié)果3.4松弛迭代法松弛迭代分割法是以像素為操作對象,借助迭代逐步確定各像素的歸類。每次迭代中,需要用到稱為相容性的準(zhǔn)則。它的基本思想是圖像中每一個像素的歸屬不僅應(yīng)該由其本身來決定,而且應(yīng)該受到它的鄰域像素的影響。松弛迭代分割法可以用以下3個步驟來完成。(1) 隨機(jī)初始化標(biāo)記。設(shè)圖像的大小為,像素為 ,用閾值法將圖像分為個類,第類的均值和方差分別為和。因為像素點和第類的馬氏距離為: (3.14)則初始概率為: (3.15)(2) 規(guī)則更新。對于類和類,相容性矩陣定義為: (3.16)如果用表示類對點的相容性因素,用表示點的鄰域,則:
27、 (3.17)當(dāng)只考察8點鄰域時,則。在第步的概率矢量可用下式計算: (3.18)(3) 迭代終止。松弛迭代是一種像素標(biāo)記方法,所以可設(shè)定一個量(如百分比)來確定迭代是否達(dá)到預(yù)期目標(biāo),并在達(dá)到時認(rèn)為迭代收斂,終止算法。松弛迭代分割圖像結(jié)果如圖3.41所示:圖3.41松弛迭代法結(jié)果3.5小結(jié)圖像分割是從圖像處理到圖像分析的關(guān)鍵步驟,可以說,圖像分割結(jié)果的好壞直接影響著對圖像的理解。因此,它是一種重要的圖像技術(shù),在理論研究和實際應(yīng)用中都得到了人們的廣泛重視。4matlab對邊緣檢測算法的實現(xiàn)在第二章中,我們已經(jīng)介紹了一些關(guān)于邊緣檢測的基本概念,使大家對于圖像進(jìn)行邊緣檢測的方法有了一些了解。在本章中
28、,將會重點介紹如何用matlab軟件對圖像進(jìn)行邊緣檢測,并對不同的算子產(chǎn)生的不同效果進(jìn)行比較。原始圖像如圖4.01所示:圖4.01原始圖像將原始圖像保存在matlabwork文件夾下,并將圖像命名為123,格式為bmp。4.1模板算子法一階導(dǎo)數(shù)模板算子最常用的方法有羅伯特(roberts)算子法、索貝爾(sobel)算子法和prewitt算子法。二階導(dǎo)數(shù)方法就是拉普拉斯算子法。經(jīng)過拉普拉斯算子卷積以后的圖像,還要判斷出它的零交叉點,也就是邊緣點。在實際應(yīng)用中,一方面是因為拉普拉斯算子對圖像噪聲十分敏感,另一方面就是邊緣是雙像素寬的,且不能提取邊緣方向信息,因此它很少直接用于邊緣檢測,而是與其他
29、方法相結(jié)合,提取出定位精確的邊緣,該方法就是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);%對灰度圖進(jìn)行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);
30、title(邊緣檢測結(jié)果);%輸出邊緣檢測圖像用羅伯特算子法進(jìn)行邊緣檢測的結(jié)果如圖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);%對灰度圖進(jìn)行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(
31、i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結(jié)果);%輸出邊緣檢測圖像用prewitt算子法進(jìn)行的邊緣檢測結(jié)果如圖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、對灰度圖進(jìn)行邊緣檢測,算子后的閾值參數(shù)可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結(jié)果);%輸出邊緣檢測圖像用sobel算子法進(jìn)行的邊緣檢測結(jié)果如圖4.04所示: 圖4.04 sobel邊緣圖像4.1.4 拉普拉斯算子拉普拉斯算子是無方向算子,因此它只需要一個模板,下面是三個經(jīng)常用到的拉普拉斯模板:(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);%對灰度圖進(jìn)行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結(jié)果);%輸出邊緣檢測圖像用拉普拉斯算子法進(jìn)行的邊緣檢測結(jié)果如圖4.05所示:圖4.05 拉普拉斯邊緣圖像4.2高斯算子從拉普拉斯邊緣圖像中可以看出,拉普拉斯算子對圖像噪聲比較敏感。為了減少噪聲的影響,可以用高斯函數(shù)對圖像先進(jìn)行平滑卷積濾波處
34、理,然后再運(yùn)用拉普拉斯算子。高斯濾波器可定義為如下形式: (4.1)這種將高斯卷積和拉普拉斯算子組合成一個濾波器或算子的方法稱為拉普拉斯-高斯(log)濾波器或算子,其脈沖響應(yīng)函數(shù)為: (4.2)log濾波器可表示成兩個高斯函數(shù)之差,因此也可以用差分高斯(dog)算子對圖像進(jìn)行邊緣檢測,該濾波器定義為如下形式: (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);%對灰度圖進(jìn)行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結(jié)果);%輸出邊緣檢測圖像用log算子法進(jìn)行的邊緣檢測結(jié)果如圖4.06所示:圖4.06 log算子邊緣檢測結(jié)果4.3 canny算子canny算子是在邊緣檢測的3個指標(biāo)(好的檢測、好的定位、最小響應(yīng))和3個準(zhǔn)則(信噪比準(zhǔn)則、定位精度
36、準(zhǔn)則和單邊緣響應(yīng)準(zhǔn)則)的基礎(chǔ)上發(fā)展起來的一種很有效的邊緣檢測。canny邊緣檢測方法分為4步:(1) 用高斯濾波器對圖像進(jìn)行平滑處理。(2) 利用一階偏導(dǎo)算子找到圖像灰度沿著水平方向和垂直方向的偏導(dǎo)數(shù),并按下列兩個式子求出梯度的幅值和方位。在程序中,我們選擇性能較好的sobel算子。 (4.4) (4.5)(3) 對梯度幅值進(jìn)行非極大值抑制,即找到局部梯度最大點。方法是在33的鄰域窗內(nèi),給定像素p與沿著梯度線方向的兩個像素相比,如果p的梯度幅值不比這兩個像素的梯度幅值大,則令p=0,否則保留原幅值。(4) 用雙閾值算法檢測和連接邊緣。方法是凡大于高閾值的一定是邊緣;凡小于低閾值的一定不是邊緣;
37、如果檢測結(jié)果大于低閾值而又小于高閾值,則要看這個像素的鄰接像素中是否有大于高閾值的邊緣像素,如果有,則是邊緣,否則不是。這往往是一個迭代的過程。matlab程序如下:i=imread(123.bmp); %自己輸入圖片路徑,圖片名為123,格式為bmpgryim=rgb2gray(i); %改變圖像的灰度,如果是灰度圖,則直接刪掉這條語句bw=edge(gryim,canny,0.005);%對灰度圖進(jìn)行邊緣檢測,算子后的閾值可以改變subplot(2,2,1);imshow(i);title(原始圖像);%輸出原始圖像subplot(2,2,2);imshow(bw);title(邊緣檢測結(jié)
38、果);%輸出邊緣檢測圖像用canny算子法進(jìn)行的邊緣檢測結(jié)果如圖4.07所示:圖4.07 canny算子邊緣檢測結(jié)果4.4 幾種改進(jìn)的邊緣檢測算子以上幾節(jié)重點介紹了模板算子法、高斯算子法、canny算子法的邊緣檢測過程,這些邊緣檢測算子在我們對圖像進(jìn)行處理的過程中經(jīng)常會遇到,是其他一些邊緣檢測算子的基礎(chǔ),下面我們再介紹幾種改進(jìn)的邊緣檢測算子,它們在圖像的邊緣檢測中也起著重要作用。4.4.1 形態(tài)學(xué)邊緣檢測形態(tài)學(xué)邊緣檢測方法分為形態(tài)學(xué)梯度法和形態(tài)學(xué)拉普拉斯法兩種,公式如下所示: (4.6) (4.7)形態(tài)學(xué)梯度法相當(dāng)于一階導(dǎo)數(shù),形態(tài)學(xué)拉普拉斯法相當(dāng)于二階導(dǎo)數(shù), 形態(tài)學(xué)邊緣檢測結(jié)果如圖4.08所示
39、:圖4.08形態(tài)學(xué)邊緣檢測結(jié)果4.4.2 小波變換邊緣檢測對于某些特殊的小波函數(shù),小波變換的極大值對應(yīng)于圖像中的邊緣點。在圖像中,設(shè)是一個平滑函數(shù),令: (4.8)那么,和可以作為小波函數(shù)。在尺度下的小波變換是: (4.9)由于二維小波變換的兩個分量和分別正比于圖像經(jīng)平滑后的沿水平和垂直方向的偏導(dǎo)數(shù),所以,二維小波變換矢量就是梯度。當(dāng)取為高斯函數(shù)時,它與canny算子在同一尺度下是等價的。剩下的部分與canny算子也是一樣的,只需要沿著梯度方向檢測小波變換系數(shù)模的局部極大值點,即可得到圖像的邊緣點。小波函數(shù)的種類很多,也可以自己構(gòu)造,但用于邊緣檢測的小波應(yīng)滿足一些條件。在這里,我們選擇二次樣條
40、小波函數(shù),它的低通濾波系數(shù)h(n)和高通濾波系數(shù)g(n)如下表所示:n-1012h(n)0.1250.3750.3750.125g(n)-22通過對小波函數(shù)尺度選取的不同,得到的邊緣和抑制噪聲的能力會有所不同。在尺度下,它所對應(yīng)的濾波器和分別表示在和的相鄰系數(shù)之間插入個零而得到的離散濾波器。在具體的編程實現(xiàn)中,用高斯濾波器對圖像進(jìn)行卷積得到邊緣圖像,用低通濾波器對圖像進(jìn)行卷積得到下一個尺度所需要的平滑圖像。小波變換邊緣檢測結(jié)果如圖4.09所示:圖4.09 小波變換邊緣檢測結(jié)果4.4.3金字塔方法金字塔方法是多分辨率圖像處理的一個最基本的方法,小波變換的多分辨率分析就是在高斯-拉普拉斯金字塔方法
41、的啟發(fā)下提出來的。圖像處理的金字塔方法是將原始圖像分解成不同空間分辨率的子圖像,高分辨率(尺度較大)的子圖像放在下層,低分辨率(尺度較小)的圖像放在上層,從而形成一個金字塔的形狀,如圖4.10所示:圖4.10圖像處理的金字塔模型高斯-拉普拉斯金字塔方法也可用于圖像的邊緣檢測。它的基本原理是,先對圖像進(jìn)行高斯卷積,為高斯卷積核,下標(biāo)表示的是金字塔的層數(shù): (4.10)然后再求出兩個圖像之間的差值: (4.11)再對卷積后的圖像進(jìn)行隔行隔列采樣,這樣可以起到降低分辨率的作用: (4.12)這個過程我們稱之為高斯塔分解,如圖4.11所示:圖4.11高斯塔分解模型然后由高斯塔重構(gòu)拉普拉斯塔,這個過程就
42、是高斯塔分解的逆過程。首先內(nèi)插放大圖像,然后再進(jìn)行高斯卷積計算: (4.13)拉普拉斯重構(gòu)過程如圖4.12所示:圖4.12拉普拉斯塔重構(gòu)模型金字塔邊緣檢測結(jié)果如圖4.13所示:圖4.13金字塔邊緣檢測結(jié)果4.5小結(jié)以上小節(jié)列舉了matlab對一些經(jīng)典邊緣檢測算法的實現(xiàn),其他算法的邊緣檢測程序和這些經(jīng)典算法的程序類似,在這里不一一列舉了。通過反復(fù)實驗可以證明:羅伯特(roberts)邊緣算子、索貝爾(sobel)邊緣算子和prewitt 邊緣算子對噪聲較為敏感,它們只是進(jìn)行簡單的邊緣檢測,而不會對要處理的圖像事先進(jìn)行濾波,得到的往往是斷續(xù)的、不完整的結(jié)構(gòu)信息,為了能成功地檢測到真正的邊緣, 一般
43、都要先對原圖像進(jìn)行平滑來去除圖像中的噪聲,再進(jìn)行邊緣檢測。高斯拉普拉斯(laplacian of gaussian)邊緣檢測算子將高斯濾波和拉普拉斯邊緣檢測結(jié)合在一起,先對圖像進(jìn)行平滑和積分以濾掉噪聲,消除噪聲后再進(jìn)行邊緣檢測(銳化和微分),得到的效果比較好,且實現(xiàn)容易。坎尼(canny)邊緣算子提取的邊緣線型連接程度也較好,邊緣提取的也較完整,,但易受噪聲影響,為了獲得理想的邊緣檢測結(jié)果,必須與理想濾波器結(jié)合使用,實現(xiàn)起來比較復(fù)雜。邊緣檢測是圖像分割的一部分,并且一直是圖像處理中的熱點研究問題。本章所介紹的這幾種方法都是目前最常用的邊緣檢測方法。需要注意的是,沒有一種邊緣檢測方法可以應(yīng)用于所
44、有的圖像邊緣提取中,只有根據(jù)具體情況,選擇某種方法,才能得到最佳的效果。5邊緣檢測算法的硬件實現(xiàn)我們現(xiàn)在正處于數(shù)字化和信息化的時代,由于計算機(jī)技術(shù)和微電子工藝的發(fā)展,使現(xiàn)代數(shù)字系統(tǒng)的設(shè)計和應(yīng)用進(jìn)入到了一個新的階段。因此,電子設(shè)計自動化(eda)技術(shù)在數(shù)字系統(tǒng)的設(shè)計和應(yīng)用中起到了越來越重要的作用。目前,eda技術(shù)已經(jīng)成為電子設(shè)計技術(shù)的強(qiáng)有力工具,如果沒有eda技術(shù)的支持,要想完成超大規(guī)模集成電路的設(shè)計和制造是不可想象的。相反,由于生產(chǎn)制造技術(shù)的不斷進(jìn)步又對eda技術(shù)提出了更高的要求,以使其不斷地向前發(fā)展!在上一章中,我們已經(jīng)用matlab軟件實現(xiàn)了對圖像的邊緣檢測,而在實時的圖像處理過程中,由于
45、對處理的速度有較高的要求,這時候純粹用軟件的方法是很難達(dá)到預(yù)期要求的,所以在本章中,我們將要討論如何用verilog硬件描述語言實現(xiàn)對圖像的邊緣檢測。在經(jīng)典的邊緣檢測算法中,sobel邊緣檢測算法由于其計算量小、實現(xiàn)簡單、處理速度快,并且得到的邊緣光滑、連續(xù)等優(yōu)點而得到非常廣泛的應(yīng)用。下面我們將以sobel算子為例展開詳細(xì)的介紹。5.1sobel邊緣檢測算法經(jīng)典的sobel圖像邊緣檢測法,在圖像空間中是利用兩個方向模板與圖像進(jìn)行鄰域卷積來完成的,這兩個方向模板一個是用來檢測垂直邊緣,一個是用來檢測水平邊緣的。sobel算法的優(yōu)點是計算簡單,速度快,這種算法的基本原理是:由于圖像邊緣附近的亮度變
46、化較大,因此可以把那些在相鄰的區(qū)域內(nèi),灰度值變化超過某個適當(dāng)閾值t的像素點當(dāng)作邊緣點。但由于它只采用了兩個方向模板算子,只能檢測圖像水平方向和垂直方向的邊緣,所以,這種算法對于紋理比較復(fù)雜的圖像,其邊緣檢測效果可能欠佳;同時,經(jīng)典sobel算法也認(rèn)為,凡灰度值大于或等于閾值的像素點都是邊緣點。這種判定依據(jù)是不太合理的,這樣會造成邊緣點的誤判,因為多噪聲點的灰度新值也是很大的。圖5.01所示的是sobel邊緣檢測法框圖:圖5.01 sobel邊緣檢測法框圖從圖5.01中可以看出,在對一幅圖像進(jìn)行sobel邊緣檢測的過程中,首先要利用sobel算子計算出圖像的水平梯度和垂直梯度,再將這兩個方向的梯
47、度結(jié)合起來,最后利用門限處理模塊對圖像的邊緣進(jìn)行判斷,最后輸出圖像的邊緣檢測結(jié)果。圖5.02一幅圖像的區(qū)域(z是灰度值)和sobel算子圖5.02(a)為一副圖像的33區(qū)域,圖(b)和圖(c)分別為sobel算子的x方向(垂直方向)梯度算子和y方向(水平方向)的梯度算子。當(dāng)采用sobel算子對圖5.02(a)所示的33區(qū)域做梯度計算時,可得到標(biāo)記為z5的像素點x方向梯度和y方向的梯度分量分別為:梯度計算的公式為: (5.1)該設(shè)計在門限處理的時候,采用基本全局門限,即:當(dāng)某像素點(x,y)的梯度值f(x,y)大于或等于設(shè)定門限t時,規(guī)定該點的灰度值為255,當(dāng)小于設(shè)定門限t時則為0。表達(dá)式如下
48、: (5.2)5.2sobel邊緣檢測的硬件實現(xiàn)實際對圖像進(jìn)行處理的過程中,用sobel算子對物體進(jìn)行邊緣檢測是經(jīng)常用到的方法,由于對處理的速度要求較高,因此用純軟件的方法很難達(dá)到實際要求。而fpga對這種可完成的處理任務(wù)幾乎沒有限制,非常適合高速、并行信號的處理,并且fpga容量大、密度高,有內(nèi)置存儲器,且容易實現(xiàn),因此fpga被廣泛應(yīng)用于實時圖像處理系統(tǒng)中。根據(jù)圖5.01所示的框圖中,可以知道在用硬件實現(xiàn)sobel邊緣檢測時應(yīng)該包括門限處理模塊和梯度計算模塊。但是為了進(jìn)一步對圖像數(shù)據(jù)做模塊處理,在硬件實現(xiàn)時還需要用到圖像數(shù)據(jù)緩沖模塊。5.2.1圖像數(shù)據(jù)緩沖模塊為了得到33的方形模板窗,在這
49、里通過應(yīng)用基于ram的移位寄存器宏模塊altshift taps來實現(xiàn)此功能,而且還可以省去一些控制信號,使用起來非常方便。altshift_taps宏功能模塊是一個可配置的、具有抽頭(taps)輸出的移位寄存器,每個抽頭在移位寄存器鏈的指定位置輸出數(shù)據(jù)。圖5.03(a)和圖5.03(b)所示的分別為特制的8位輸入/8位輸出、3抽頭,且相鄰兩個抽頭相距256個寄存器的altshift_taps0功能模塊及其內(nèi)部寄存器鏈結(jié)構(gòu)圖,圖(b)中的buffer0,buffer1,buffer2分別為由256個8位移位寄存器構(gòu)成的寄存器鏈。當(dāng)圖像的第n行數(shù)據(jù)在像素時鐘同步下從shiftin7:0端輸入到a
50、ltshift_taps0的buffer0后,隨著第n+1行圖像數(shù)據(jù)輸入到buffer0中,第n行的圖像數(shù)據(jù)依次存入buffer1中,而當(dāng)?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端輸出給梯度計算模塊,進(jìn)行梯度計算。圖5.03altshift_taps0功能模塊及其內(nèi)部寄存器機(jī)構(gòu)圖5.2.2梯度計算模塊在sobel算子的邊緣檢測中,圖像像素點的梯度計算可由sobel算子與圖像像素做
51、卷積運(yùn)算的輸出經(jīng)過梯度計算公式的計算獲得。為了實現(xiàn)卷積運(yùn)算需要做乘法和加法運(yùn)算,我們以兩個4位二進(jìn)制數(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è)計者使用,設(shè)計者也可以通過自己編寫代碼并引用參數(shù)化的加法器或乘法器實例,來完成加法器和乘法器的設(shè)計。圖5.04(左)為33的濾波模板,圖5.04(右)為卷積運(yùn)算的原理圖。圖5.04 33濾波模板和卷積運(yùn)算原理圖從圖中也可以看出,為了實現(xiàn)卷積運(yùn)算,乘法和加法的運(yùn)算是必不可少的。在許多關(guān)于用硬件實現(xiàn)邊緣檢測的設(shè)計中,采用的都是分立的d觸發(fā)器、乘法器和加法器。但是這樣實現(xiàn)起來會十分復(fù)雜。所以,在這里,我們選擇采用可編程乘加器altmult_add模塊和可編程多路并行加法器parallel_add模塊來實現(xiàn)卷積運(yùn)算,這樣就使得設(shè)計被大大簡化了??删幊坛思悠鱝ltmult_add可以接收多組數(shù)據(jù)的輸入,各組數(shù)據(jù)相乘后再進(jìn)行相加或相減作為結(jié)果輸出。而且altmult_add在使用時可以根據(jù)設(shè)計的需要設(shè)置乘法器的個數(shù)、輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024知名大學(xué)與科研機(jī)構(gòu)聯(lián)合培養(yǎng)研究生協(xié)議
- 2025年度企業(yè)財務(wù)內(nèi)部控制與合規(guī)審計合同范本3篇
- 專用購銷交易2024版協(xié)議格式版A版
- 二零二四商標(biāo)授權(quán)及知識產(chǎn)權(quán)跨界合作合同3篇
- 萬科物業(yè)2024停車場運(yùn)營管理協(xié)議
- 2024年談蕾離婚后財產(chǎn)與子女撫養(yǎng)協(xié)議書3篇
- 個性化小額資金借貸款項協(xié)議范本一
- 二零二四衛(wèi)生院衛(wèi)生間改造與裝修施工合同3篇
- 2025產(chǎn)學(xué)研科技成果轉(zhuǎn)化合同:生物科技產(chǎn)業(yè)合作框架4篇
- 2024路燈購銷安裝合同范本
- SQL Server 2000在醫(yī)院收費審計的運(yùn)用
- 《FANUC-Oi數(shù)控銑床加工中心編程技巧與實例》教學(xué)課件(全)
- 微信小程序運(yùn)營方案課件
- 抖音品牌視覺識別手冊
- 陳皮水溶性總生物堿的升血壓作用量-效關(guān)系及藥動學(xué)研究
- 安全施工專項方案報審表
- 學(xué)習(xí)解讀2022年新制定的《市場主體登記管理條例實施細(xì)則》PPT匯報演示
- 好氧廢水系統(tǒng)調(diào)試、驗收、運(yùn)行、維護(hù)手冊
- 中石化ERP系統(tǒng)操作手冊
- 五年級上冊口算+脫式計算+豎式計算+方程
- 氣體管道安全管理規(guī)程
評論
0/150
提交評論