指紋自動(dòng)識(shí)別系統(tǒng)畢業(yè)論文_第1頁
指紋自動(dòng)識(shí)別系統(tǒng)畢業(yè)論文_第2頁
指紋自動(dòng)識(shí)別系統(tǒng)畢業(yè)論文_第3頁
指紋自動(dòng)識(shí)別系統(tǒng)畢業(yè)論文_第4頁
指紋自動(dòng)識(shí)別系統(tǒng)畢業(yè)論文_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、. . . . 理工大學(xué)畢業(yè)設(shè)計(jì)(論文)指紋自動(dòng)識(shí)別系統(tǒng)學(xué)院(系):專業(yè)班級(jí):學(xué)生:指導(dǎo)教師:1 緒 論1.1、指紋自動(dòng)識(shí)別技術(shù)的歷史、現(xiàn)狀和未來自動(dòng)指紋識(shí)別技術(shù)是一種有著廣泛應(yīng)用背景的身份鑒定技術(shù)。本論文主要介紹了自動(dòng)指紋識(shí)別系統(tǒng)的指紋圖像處理和指紋匹配兩部分。指紋識(shí)別的基本原理為:采用細(xì)節(jié)點(diǎn)坐標(biāo)模型來做細(xì)節(jié)匹配,即對(duì)指紋的脊線末梢和指紋的脊線分支點(diǎn)提取特征點(diǎn)來鑒定指紋。具體的自動(dòng)指紋識(shí)別系統(tǒng)框圖見圖1-1。圖1-1 自動(dòng)指紋識(shí)別系統(tǒng)框圖考古證實(shí),公元前7000年到6000 年以前,古敘利亞和中國,指紋作為身份鑒別己經(jīng)開始應(yīng)用??脊虐l(fā)現(xiàn),在這個(gè)時(shí)代,一些粘土器上留有藝匠人的指紋,中國的一些文

2、件上印有起草者的大拇指指紋,在 Jercho 的古城市的房屋留有磚匠一對(duì)大拇指指紋的印記等。雖然指紋的一些特征己經(jīng)被人們認(rèn)識(shí)和接受而不能證明,但指紋己廣泛應(yīng)用社會(huì)的各個(gè)方面。19世紀(jì)初,科學(xué)研究發(fā)現(xiàn)了至今仍然承認(rèn)的指紋的兩個(gè)重要特征:一是兩個(gè)不同手指的指紋脊線的式樣(ridge pattern)不同,另外一個(gè)是指紋脊線的式樣終生不改變。這個(gè)研究成果使得指紋在犯罪鑒別中得以正式應(yīng)用。(主要代表性的事件有:1896年阿根廷首次應(yīng)用,然后是1901年的格蘭,20世紀(jì)初其他國家也相繼應(yīng)用到犯罪鑒別中) 20世紀(jì) 60年代,由于計(jì)算機(jī)可以有效的處理圖形,人們開始著手研究利用計(jì)算機(jī)來處理指紋。從那時(shí)起,自

3、動(dòng)指紋識(shí)別系統(tǒng) AFIS在法律實(shí)施方而的研究和應(yīng)用在世界許多國家展開。20世紀(jì)80年代,個(gè)人電腦、光學(xué)掃描這兩項(xiàng)技術(shù)的革新,使得它們作為指紋取像的工具成為現(xiàn)實(shí),從而使指紋識(shí)別可以在其他領(lǐng)域中得以應(yīng)用,比如代替IC卡?,F(xiàn)在(90 年代后期),低價(jià)位取像設(shè)備的引入與其飛速發(fā)展,可靠的比對(duì)算法的發(fā)現(xiàn)為個(gè)人身份識(shí)別應(yīng)用的增長提供了舞臺(tái)。對(duì)指紋識(shí)別技術(shù)來說,被廣泛接受意味著在影響千萬人的日常生活的各個(gè)地方使用。通過取代個(gè)人識(shí)別碼和口令,指紋識(shí)別技術(shù)可以阻止非授權(quán)的訪問,可以防止盜用 ATM、蜂窩、智能卡、桌面 PC、工作站與其計(jì)算機(jī)網(wǎng)絡(luò);在通過、網(wǎng)絡(luò)進(jìn)行的金融交易時(shí)進(jìn)行身份認(rèn)證;在建筑物或工作場所,指紋

4、識(shí)別技術(shù)可以取代鑰匙、證件、圖章和卡閱讀器。然而,必須指出的是,指紋識(shí)別技術(shù)到目前在國乃至世界上仍未普與,其主要原因是:(1)速度慢,目前一般系統(tǒng)辨別時(shí)需要數(shù)秒鐘甚至更長;(2)價(jià)格高,系統(tǒng)過于昂貴;(3)性能差,錯(cuò)誤拒識(shí)率(False Reject Rate:FRR)和錯(cuò)誤接受率(FalseAccepted Rate:FAR)過高。因此,對(duì)快速而精確的指紋識(shí)別方法的研究有著重要的科學(xué)意義和應(yīng)用價(jià)值。一般來說,一個(gè)指紋自動(dòng)識(shí)別系統(tǒng)(Automated Fingerprint Identification System:AFIS)主要包括指紋圖像提取子系統(tǒng)、指紋識(shí)別子系統(tǒng)和指紋壓縮存儲(chǔ)子系統(tǒng)幾個(gè)

5、部分組成。其中,指紋識(shí)別子系統(tǒng)是整個(gè)系統(tǒng)的核心部分,包括指紋圖象處理、特征提取、指紋分類與匹配等四部分。本文將主要對(duì)指紋圖象處理和特征提取的部分算法加以討論和研究。1.2、本文的主要研究工作本文主要的研究容是在VC+環(huán)境下實(shí)現(xiàn)指紋圖像的小波變換和預(yù)處理,同時(shí)還研究指紋特征提取與匹配算法問題。全文對(duì)小波的基本理論進(jìn)行了簡要介紹,并對(duì)指紋圖像小波變換的實(shí)現(xiàn)、基于小波變換頻率特性的應(yīng)用指紋圖像濾波處理、指紋圖像增強(qiáng)處理的理論以與VC+編程實(shí)現(xiàn)進(jìn)行了比較深入地研究,并列出了實(shí)現(xiàn)程序。此外,本文還在對(duì)指紋圖像的預(yù)處理方法進(jìn)行分析和研究的基礎(chǔ)上,提出了一套指紋預(yù)處理算法,采用該算法可以得到清晰的指紋點(diǎn)線圖

6、,效果較為突出。第2章 VC+環(huán)境下小波變換與指紋圖像處理2.1 小波的基本理論2.1.1 小波分析圖像處理小波變換是最近20多年來發(fā)展起來的用于信號(hào)分析和信號(hào)處理的一種新的域變換技術(shù)。由于小波變換是把信號(hào)在不同尺度上進(jìn)行小波展開,它更適合于處理突變信號(hào)和非平穩(wěn)信號(hào)。小波變換技術(shù)已受到人們極大的重視。Fourier變換是數(shù)學(xué)分析中最古老的學(xué)科之一,即一個(gè)信號(hào)可表示成一系列正弦和余弦函數(shù)之和。但Fourier變換只有頻率分辨率而沒有時(shí)間分辨率,這就意味我們可以確定信號(hào)中包含的所有頻率,但不能確定具有這些頻率的信號(hào)出現(xiàn)在什么時(shí)候,只適宜處理平穩(wěn)信號(hào)。在非平穩(wěn)信號(hào)的分析中,人們希望存在一種變換函數(shù),

7、能夠滿足在高頻信號(hào)中,有相對(duì)小的時(shí)間間隔以便給出較高的精度,而在低頻信號(hào)中能夠以相對(duì)較寬的時(shí)間間隔給出完全的信息。小波是有限寬度的基函數(shù),這些基函數(shù)不僅在頻率上而且在位置上是變換的,它們是有限寬度的波。基于它們的變換稱為小波變換。小波變換具有時(shí)間一頻率自動(dòng)伸縮能力,這種能力可以在任何希望的頻率圍上產(chǎn)生頻譜信息。小波理論的提出可追溯到1910年Haar提出的規(guī)正交基。1975年Caldern發(fā)表了接近小波級(jí)數(shù)展開的再生公式,1981年Stromberg對(duì)Harr系進(jìn)行了改進(jìn),證明了小波函數(shù)的存在性。1984年法國地理學(xué)家Morlet在分析地震波的局部性質(zhì)時(shí)引入了小波的概念,繼而Y. Meyer于

8、1986年創(chuàng)造性地構(gòu)造出了具有一定衰減性的二進(jìn)小波函數(shù),掃除了人們對(duì)于小波函數(shù)是否存在的疑慮,從而真正掀起了小波研究的熱潮。同年,S. Mallat將多分辨率分析的概念引入了小波分析與小波函數(shù)的構(gòu)造中,并將小波函數(shù)的構(gòu)造統(tǒng)一于多分辨率分析的框架之下,同時(shí),Mallat提出的快速算法使小波變換從理論研究進(jìn)一步走向各種應(yīng)用領(lǐng)域。1988年Daubechies構(gòu)造出了具有緊支集的正交小波集。1989年,Goifman, Meyer和Quake等引入了小波包。1990年,錦泰和王建忠構(gòu)造了基于樣條函數(shù)的單正交小波函數(shù)。1992年,Coher, Daubechies, Feauveau提出了具有緊支撐的

9、雙正交小波基。至此,小波理論系統(tǒng)的構(gòu)架得以建立,它為原來信號(hào)處理領(lǐng)域里各自獨(dú)立的方法,如多尺度分析、拉普拉斯金字塔、精確重建濾波器組等提供了一個(gè)統(tǒng)一的理論框架。隨著理論研究的不斷深入和應(yīng)用領(lǐng)域的不斷擴(kuò)展,小波分析越來越顯示出它的獨(dú)特魅力。1、小波概念小波變換的定義是把某一被稱為基本小波(也叫母小波motherwavelet)的函數(shù)做位移后,再在不同尺度下與待分析的信號(hào)做積:(2.2)等效的頻域表示是:(2.3)式中和分別是和的傅里葉變換。小波變換有以下特點(diǎn):1) 有多分辨率(multi-resolution),也叫多尺度(multi-scale)的特點(diǎn),可以由粗與細(xì)地逐步觀察信號(hào)。2) 可以看

10、成用基本頻率特性為的帶通濾波器在不同尺度下對(duì)信號(hào)做濾波。由于傅里葉變換的尺度特性可知,這組濾波器具有品質(zhì)因數(shù)恒定,即相對(duì)帶寬(帶寬與中心頻率之比)恒定的特點(diǎn)。注意,越大相對(duì)頻率越低。3) 適當(dāng)?shù)剡x擇基小波,使在時(shí)域上為有限支撐,在頻域上也比較集中,就可以使在時(shí)、頻域都具有表征信號(hào)局部特征的能力,因此有利于檢測(cè)信號(hào)的瞬態(tài)或奇異點(diǎn)。正如上所述,小波分析的一個(gè)主要優(yōu)點(diǎn)就是能夠分析信號(hào)的局部特征。比如說,采用小波分析可以發(fā)現(xiàn)疊加在一個(gè)非常規(guī)的正弦信號(hào)上的一個(gè)非常小的畸變信號(hào)的出現(xiàn)時(shí)間。傳統(tǒng)的傅里葉變換只能得到平坦的頻譜上的兩個(gè)尖峰。利用小波分析可以非常準(zhǔn)確地分析出信號(hào)在什么時(shí)刻發(fā)生畸變。小波分析可以檢

11、測(cè)出許多其他分析方法忽略的信號(hào)特性,例如,信號(hào)的趨勢(shì)、信號(hào)的高階不連續(xù)點(diǎn)、自相似特性。小波分析還能以非常小的失真度實(shí)現(xiàn)對(duì)信號(hào)的壓縮與消噪,它在圖像數(shù)據(jù)壓縮方面的潛力已經(jīng)得到確認(rèn)。在二維情況下,小波分析除了“顯微”能力外還具有“極化”能力(即方向選擇性),因而引人注意。2、小波在圖像處理中的應(yīng)用圖像處理是小波分析應(yīng)用的重要領(lǐng)域,近年來小波分析已被證明是進(jìn)行圖像處理強(qiáng)有力的工具之一,由于小波分析技術(shù)可以將信號(hào)或圖像分層次按小波基展開,并且可以根據(jù)圖像的性質(zhì)與事先給定的圖像處理要求確定到底要展開到哪一級(jí)為止,從而不僅能有效地控制計(jì)算量,滿足實(shí)時(shí)處理的需要,而且可以方便地實(shí)現(xiàn)通常由子帶編碼技術(shù)實(shí)現(xiàn)的累

12、進(jìn)編碼(即采取逐步浮現(xiàn)的方式傳送多媒體圖像)。同時(shí),小波變換具有放大、縮小和平移的功能,能夠很方便地產(chǎn)生各種分辨率的圖像,從而適合于不同分辨率圖像的處理。因此,近十年來,基于小波變換的圖像壓縮算法得到了很大發(fā)展,取得了許多重要的成果,而且越來越成為該領(lǐng)域研究和應(yīng)用的熱點(diǎn)。2.1.2連續(xù)小波變換 1、定義對(duì)任意信號(hào),f(t)的連續(xù)小波變換定義是:(2.1)a為尺度因子,b為平移因子。如果滿足容許條件; ,則稱為容許小波,可由恢復(fù)原信號(hào)(2.2)其中,根據(jù)Parseval 恒等式:(2.3)可見 f(t)的連續(xù)小波變換就相當(dāng)于f(t)通過傳遞函數(shù)為的系統(tǒng)的輸出。2、特性在介紹小波特性之前先給出窗函

13、數(shù)的概念。(1) 定義 :非平凡函數(shù)L2(R),稱為一個(gè)窗函數(shù).如果也是屬于L2(R)的,一個(gè)窗函數(shù)的的中心t2與半徑,定義分別是:(2.4)(2.5)假定與都是窗函數(shù),窗函數(shù)的中心與半徑分別用t2與半徑給出,那么函數(shù)是中心在b+at*且半徑等于a的一個(gè)窗函數(shù),因此由(2.1)式可知連續(xù)小波積分給出了信號(hào)f(t)具有時(shí)間窗b十a(chǎn)t*-a,b+at*+a 的局部信息;窗函數(shù)的中心與半徑分別用w*與表示,則由(2.5)式可知除了一個(gè)倍數(shù)與一個(gè)線性相位移。外,連續(xù)小波變換還給出了f的一個(gè)具有頻率窗的局部信息.由以上分析可知當(dāng)尺度a變化時(shí),對(duì)應(yīng)一系列帶通系統(tǒng),并且可以得出以下結(jié)論:(1)信號(hào)f(t)的

14、連續(xù)小波變換就是一系列帶通濾波器對(duì)f(t)濾波后的輸出,a反映了帶通濾波器的帶寬和中心頻率,b則為濾波輸出的時(shí)間參數(shù)。(2)a變化,帶通濾波器的帶寬和中心頻率也變化。a變小,中心頻率變大,帶寬變寬:a變大,中心頻率變小,帶寬變窄f(t)通過帶通濾波器濾波,對(duì)分析信號(hào)的局部特性很有價(jià)值。信號(hào)變化緩慢的地方,主要為低頻成份,頻率圍也較窄,此時(shí)小波變換帶通濾波器應(yīng)相當(dāng)于a大的地方:反之,信號(hào)發(fā)生突變的地方,主要是高頻成份,頻率圍也較寬,小波變換的帶通濾波器相當(dāng)于a小的情況。即伸縮因子a有大到小變化,濾波的圍也從低頻到高頻變化。2.1.3離散小波變換將連續(xù)小波變換的尺度a離散化按照2的幕級(jí)數(shù)進(jìn)行,和時(shí)

15、間位移b進(jìn)行離散化,就得到離散小波變換。通常a的離散化按照2的冪級(jí)數(shù)進(jìn)行,即:,b的離散化為。所以,信號(hào)f(t)的離散小波變換(DWT)定義為:(2.6)(2.7)其中取離散正交小波基,是尺度j下的f(t)的離散小波變換,離散小波變換具有以下的特性;1、是小波函數(shù)以在尺度上的伸縮和時(shí)域上的平移得到的。隨j的變化,在頻域上處于不同的頻段,隨k的變化,在時(shí)域上處于不同的時(shí)段,所以離散小波變換是一種信號(hào)的時(shí)間一頻率分析;2 、尺度j減小時(shí), 在時(shí)域上伸展,在頻域上收縮,中心頻率降低變換的時(shí)域分辨率降低,頻域分辨率提高;尺度j增大時(shí),在時(shí)域上收縮,在頻域上伸展,中心頻率升高,變換的時(shí)域分辨率提高,分辨

16、率的時(shí)頻域分析。頻域分辨率降低。所以,離散小波變換是一種多分辨率的時(shí)頻域分析。2.1.4 指紋圖像二維小波變換概念與算法1、概念:一維信號(hào)的離散小波變換很容易推廣到二維的情況。假設(shè)是一個(gè)一維的尺度函數(shù),是相應(yīng)的小波函數(shù),那么,可以得到一個(gè)二維小波變換的基礎(chǔ)函數(shù):,2、算法 圖像可以看作是二維的矩陣,一般假設(shè)圖像矩陣的大小為N×N,且有N2n(n為非負(fù)的整數(shù))。那么每次小波變換后,圖像便分解為4個(gè)大小為原來尺寸的子塊頻帶區(qū)域,如圖2-2所示,分別包含了相應(yīng)頻帶的小波系數(shù),相當(dāng)于在水平方向和豎直方向上進(jìn)行隔點(diǎn)采樣。進(jìn)行下一層小波變換時(shí),變換數(shù)據(jù)集中在LL頻帶上,圖2-3所示為3層小波變換

17、的系數(shù)分布。 等式(2.11)至等式(2.14)說明了圖像小波變換的數(shù)學(xué)原型。LL頻帶,該頻帶保持了原始圖像容信息,圖像的能量集中于此頻帶: (2.11) HL頻帶,該頻帶保持了圖像水平方向上的高頻邊緣信息: (2.12) LH頻帶,該頻帶保持了圖像豎直方向上的高頻邊緣信息: (2.13) HH頻帶,該頻帶保持了圖像在對(duì)角線方向上的高頻信息: (2.14)其中<.>表示積運(yùn)算。圖2-2 一次離散小波變換后的頻率分布 圖2-3 3層小波變換后的頻率分布2.1.5 二維小波變換編程實(shí)現(xiàn)與運(yùn)行結(jié)果 下面將詳細(xì)地按編程步驟對(duì)圖像小波變換地實(shí)現(xiàn)進(jìn)行分析。(1)函數(shù)描述DWT_Once完成一次

18、圖像的小波變換(2)函數(shù)參數(shù)short *spOriginData:二維指針,指向原始的圖像數(shù)據(jù)short *spTransData0:小波變換系數(shù),存放一次水平變換后的小波系數(shù)short *spTransData1:小波變換系數(shù),存放一次數(shù)值變換后的小波系數(shù)int nHeight:圖像屬性參數(shù),數(shù)值為原始圖像的高度值int nHeight_H:圖像屬性參數(shù),數(shù)值為原始圖像高度值的一半int nWidth:圖像屬性參數(shù),數(shù)值為原始圖像的寬度值int nWidth_H:圖像屬性參數(shù),數(shù)值為原始圖像寬度值的一半int layer:小波變換的層數(shù),數(shù)值為1層float fRadius:小波變換因子,

19、在調(diào)用時(shí)候已指定數(shù)值為1.414(3)函數(shù)代碼void CWvltTrans:DWT_Once(short* spOriginData, short* spTransData0, short* spTransData1, int nHeight, int nHeight_H, int nWidth, int nWidth_H, int layer, float fRadius)int Trans_W, /圖像掃描線控制:橫坐標(biāo)Trans_H, /圖像掃描線控制:縱坐標(biāo)Trans_M, /圖像矩陣的橫坐標(biāo)Trans_N; /圖像矩陣的縱坐標(biāo)short Trans_Coeff0; /小波變換系數(shù)s

20、igned short Trans_Coeff1;fRadius=1.414; /變換濾波系數(shù) /本模塊完成變換系數(shù)的賦值采樣 /行變換,第一次(layer=1時(shí))時(shí)nHeight即為原始圖像的高度值 for(Trans_H=0; Trans_H<nHeight; Trans_H+) if(layer = 1) /layer=1時(shí),nWidth_H為原始圖像寬度值的一半for(Trans_N=0; Trans_N<nWidth_H; Trans_N+) Trans_W=Trans_N<<1; if (fRadius=2)spTransData0Trans_HTrans_

21、N = (spOriginDataTrans_HTrans_W);spTransData0Trans_HnWidth_H+Trans_N=(spOriginDataTrans_HTrans_W+1);elsespTransData0Trans_HTrans_N = (spOriginDataTrans_HTrans_W-128);spTransData0Trans_HnWidth_H+Trans_N=spOriginDataTrans_HTrans_W+1-128); /若變換層數(shù)大于1,則僅采樣低頻的小波系數(shù)if(layer > 1)for(Trans_N=0; Trans_N<

22、nWidth_H; Trans_N+)Trans_W=Trans_N<<1;spTransData0Trans_HTrans_N = spTransData1Trans_HTrans_W;spTransData0Trans_HnWidth_H+Trans_N= spTransData1Trans_HTrans_W+1;for(Trans_H=0; Trans_H<nHeight; Trans_H+)for(Trans_N=0; Trans_N<nWidth_H-1; Trans_N+) /奇偶數(shù)值和的一半Trans_Coeff1= (spTransData0Trans_

23、HTrans_N+spTransData0Trans_HTrans_N+1)>>1); /邏輯非操作后數(shù)值加1Trans_Coeff1=Trans_Coeff1+1; /系數(shù)預(yù)測(cè)spTransData0Trans_HnWidth_H+Trans_N= spTransData0Trans_HnWidth_H+Trans_N+Trans_Coeff1; /完成一個(gè)偶系數(shù)的邊界處理Trans_Coeff1 = (spTransData0Trans_HnWidth_H-1+spTransData0Trans_HnWidth_H-2)>>1);Trans_Coeff1=Trans

24、_Coeff1+1;spTransData0Trans_HnWidth-1= spTransData0Trans_HnWidth-1+Trans_Coeff1; /完成一個(gè)奇系數(shù)的邊界處理Trans_Coeff0= (spTransData0Trans_HnWidth_H+spTransData0Trans_HnWidth_H+1)>>2);spTransData0Trans_H0 = spTransData0Trans_H0+Trans_Coeff0; /提升,整數(shù)到整數(shù)的變換for(Trans_N=1; Trans_N<nWidth_H; Trans_N+)Trans_C

25、oeff0 = (spTransData0Trans_HnWidth_H+Trans_N+spTransData0Trans_HnWidth_H+Trans_N-1)>>2);spTransData0Trans_HTrans_N= spTransData0Trans_HTrans_N+Trans_Coeff0; /水平方向的變換結(jié)束 /豎直方向的變換開始,數(shù)據(jù)源未水平變換后的小波系數(shù)for(Trans_M=0; Trans_M<nHeight; Trans_M+)for(Trans_N=0; Trans_N<nWidth_H; Trans_N+)spTransData0

26、Trans_MTrans_N*=fRadius;spTransData0Trans_MTrans_N+nWidth_H/=fRadius;/行提升后的數(shù)據(jù)在spTransData0中,spTransData0中的數(shù)據(jù)自然奇偶有序for(Trans_N=0; Trans_N<nWidth_H; Trans_N+) /列變換for(Trans_M=0; Trans_M<nHeight_H; Trans_M+)Trans_H =Trans_M<<1; /頻帶LL部分spTransData1Trans_MTrans_N = spTransData0Trans_HTrans_N;

27、 /頻帶HL部分spTransData1nHeight_H+Trans_MTrans_N = spTransData0Trans_H+1Trans_N; /頻帶LH部分spTransData1Trans_MnWidth_H+Trans_N = spTransData0Trans_HnWidth_H+Trans_N; /頻帶HH部分spTransData1nHeight_H+Trans_MnWidth_H+Trans_N = spTransData0Trans_H+1nWidth_H+Trans_N; /第一次提升奇數(shù)坐標(biāo)系數(shù)for(Trans_M=0; Trans_M<nHeight_H

28、-1; Trans_M+) /豎直方向的變換 Trans_Coeff1 = (spTransData1Trans_MTrans_N+spTransData1Trans_M+1Trans_N)>>1);Trans_Coeff1=Trans_Coeff1+1;spTransData1nHeight_H+Trans_MTrans_N = spTransData1nHeight_H+Trans_MTrans_N+Trans_Coeff1;Trans_Coeff1= (spTransData1Trans_MnWidth_H+Trans_N+spTransData1Trans_M+1nWidt

29、h_H+Trans_N)>>1);Trans_Coeff1=Trans_Coeff1+1;spTransData1nHeight_H+Trans_MnWidth_H+Trans_N = spTransData1nHeight_H+Trans_MnWidth_H+Trans_N+Trans_Coeff1;Trans_Coeff1 = (spTransData1nHeight_H-1Trans_N+spTransData1nHeight_H-2Trans_N)>>1);Trans_Coeff1=Trans_Coeff1+1;spTransData1nHeight-1Tran

30、s_N = spTransData1nHeight-1Trans_N+Trans_Coeff1;Trans_Coeff1 = (spTransData1nHeight_H-1nWidth_H+Trans_N+spTransData1nHeight_H-2nWidth_H+Trans_N)>>1);Trans_Coeff1=Trans_Coeff1+1; /邊界處理spTransData1nHeight-1nWidth_H+Trans_N = spTransData1nHeight-1nWidth_H+Trans_N+Trans_Coeff1;Trans_Coeff0 = (spTr

31、ansData1nHeight_HTrans_N+spTransData1nHeight_H+1Trans_N)>>2);spTransData10Trans_N = spTransData10Trans_N+Trans_Coeff0;Trans_Coeff0 = (spTransData1nHeight_HnWidth_H+Trans_N+spTransData1nHeight_H+1nWidth_H+Trans_N)>>2); /邊界處理spTransData10nWidth_H+Trans_N = spTransData10nWidth_H+Trans_N+Tra

32、ns_Coeff0; /第一次提升偶數(shù)坐標(biāo)系數(shù)for(Trans_M=1; Trans_M<nHeight_H; Trans_M+)Trans_Coeff0 = (spTransData1nHeight_H+Trans_MTrans_N+spTransData1nHeight_H+Trans_M-1Trans_N)>>2);spTransData1Trans_MTrans_N = spTransData1Trans_MTrans_N+Trans_Coeff0;Trans_Coeff0 = (spTransData1nHeight_H+Trans_MnWidth_H+Trans

33、_N+spTransData1nHeight_H+Trans_M-1nWidth_H+Trans_N)>>2);spTransData1Trans_MnWidth_H+Trans_N = spTransData1Trans_MnWidth_H+Trans_N+Trans_Coeff0;/存放小波系數(shù),LL頻帶的系數(shù)進(jìn)行幅值增強(qiáng)處理,其高頻頻帶的系數(shù)則削弱其幅值for(Trans_N=0; Trans_N<nWidth; Trans_N+)for(Trans_M=0; Trans_M<nHeight_H; Trans_M+)spTransData1Trans_MTrans

34、_N*=fRadius;spTransData1Trans_M+nHeight_HTrans_N/=fRadius; 上面的代碼完成了圖像的一層小波變換,圖像變換的結(jié)果存放在spTransData1所指的數(shù)據(jù)空間中,spTransData1的數(shù)據(jù)空間是在CWvltDoc中根據(jù)實(shí)際圖像的大小指定的。下面來分析一下CWvltDoc的程序代碼,了解一下函數(shù)的傳遞和消息傳遞。 在實(shí)際編程中,圖像的類型是24位bmp圖像,并且默認(rèn)的是R、G、B分量一樣的灰度圖像,如果打開的是彩色圖像,程序會(huì)以默認(rèn)的灰度圖像格式進(jìn)行處理。如果需要處理彩色圖像,可以通過分別對(duì)R、G、B分量進(jìn)行小波變換,然后將分量的小波系數(shù)

35、進(jìn)行映射,這樣便能正確地顯示小波系數(shù)。 一層小波變換地菜單以與小波ID的設(shè)定如圖2-4和圖2-5所示。圖2-4 菜單部分圖2-5 菜單的消息ID下面的代碼是關(guān)于實(shí)現(xiàn)圖像的一層小波變換與其小波系數(shù)的顯示。void CWvltDoc:OnWvltTransOnce() / TODO: Add your command handler code here/讀取數(shù)字圖像的文件頭,獲取圖像的屬性參數(shù)LPBITMAPINFOHEADERlpBitmapInfoHeader = (LPBITMAPINFOHEADER)(m_pBitmap+14);LPBITMAPFILEHEADER lpBitmapFil

36、eHeader = (LPBITMAPFILEHEADER)m_pBitmap;unsigned char *lpData = m_pBitmap + lpBitmapFileHeader->bfOffBits;unsigned long biHeight = lpBitmapInfoHeader->biHeight;unsigned long biWidth = lpBitmapInfoHeader->biWidth;unsigned long biAlign = (biWidth*3+3)/4 *4;unsigned long bmSize = biHeight * bi

37、Align;if(m_pTransfered=NULL)m_pTransfered=(unsigned char*) malloc (bmSize);if(m_pTransfered=NULL)return; /圖像矩陣坐標(biāo)與像素?cái)?shù)據(jù)int x,y,cur;unsigned char tempR, tempG, tempB;float fTempBufforDisp;short MaxPixVal,MinPixVal,Diff;short *spOriginData, *spTransData0, *spTransData1; /分配圖像小波變換所用的數(shù)據(jù)空間spOriginData = ne

38、w short* biHeight;spTransData0 = new short* biHeight;spTransData1 = new short* biHeight;m_WvltCoeff= new short * biHeight;for(int i = 0; i < biHeight; i +)spOriginDatai = new short biWidth;spTransData0i = new short biWidth;spTransData1i = new short biWidth;m_WvltCoeffi = new short biWidth; /創(chuàng)建圖像小

39、波變換類CWvltTrans *pTrans; /從設(shè)備緩存中獲取原始圖像數(shù)據(jù)for(y=0; y<(int)biHeight; y+)for( x=0; x<(int)biWidth; x+)cur = y*biAlign+3*x;tempB=lpDatacur;tempG=lpDatacur+1;tempR=lpDatacur+2;spOriginDatabiHeight-1-yx=(short)(0.3*tempR+0.59*tempG+0.11*tempB); /no problem /完成一次圖像小波變換pTrans->DWT_Once(spOriginData,s

40、pTransData0,spTransData1,biHeight,biHeight/2,biWidth,biWidth/2,1,1.414); /允許圖像復(fù)原操作標(biāo)志m_bOnce = TRUE;m_bOnce = m_bOnce & m_bTwice & m_bTribl & m_bFilter;MaxPixVal=spTransData100;MinPixVal=spTransData100;for( y=0; y<(int)biHeight; y+)for( x=0; x<(int)biWidth; x+)if(MaxPixVal<spTran

41、sData1yx)MaxPixVal=spTransData1yx;if(MinPixVal>spTransData1yx)MinPixVal=spTransData1yx;m_WvltCoeffyx = spTransData1yx;Diff=MaxPixVal-MinPixVal;for(y=0; y<(int)biHeight; y+)for(x=0; x<(int)biWidth; x+)/因?yàn)樾〔ㄗ儞Q后的小波系數(shù)有可能超過255甚至更多,那么就將/小波系數(shù)的圍映射到0255區(qū)間,以后出現(xiàn)類似的處理,目的都是一樣的fTempBufforDisp=spTransData

42、1biHeight-1-yx;fTempBufforDisp-=MinPixVal;fTempBufforDisp*=255;fTempBufforDisp/=Diff;cur= y*biAlign+3*x;/current pixelm_pTransferedcur= (unsigned char)fTempBufforDisp;m_pTransferedcur+1= (unsigned char)fTempBufforDisp;m_pTransferedcur+2= (unsigned char)fTempBufforDisp; /顯示圖像的小波系數(shù)UpdateAllViews(NULL)

43、; /刪除臨時(shí)的數(shù)據(jù)空間delete spOriginData;delete spTransData0;delete spTransData1;編譯后,程序的運(yùn)行如圖2-6所示。圖2-6 一層小波變換的運(yùn)行結(jié)果除了圖像的一層小波變換,很多應(yīng)用使用的是圖像的3層小波變換,下面將分析3層小波變換的實(shí)現(xiàn)代碼。當(dāng)變換層數(shù)大于1時(shí),第2層以后的小波變換的對(duì)象是LL頻帶的小波系數(shù),該頻帶的系數(shù)包含了圖像的基本信息,它是圖像能量集中的頻帶。這樣LL便如第一層小波變換一般分成4個(gè)頻帶,其中LL仍然是下一層小波變換的數(shù)據(jù)源。 下面看一下3層小波變換的實(shí)現(xiàn)代碼:(1)函數(shù)描述DWT_TriLayers完成三次圖像

44、的小波變換(2)函數(shù)參數(shù)short *spOriginData:二維指針,指向原始的圖像數(shù)據(jù)short *spTransData0:小波變換系數(shù),存放一次水平變換后的小波系數(shù)short *spTransData1:小波變換系數(shù),存放一次數(shù)值變換后的小波系數(shù)int nHeight:圖像屬性參數(shù),數(shù)值為原始圖像的高度值int nHeight_H:圖像屬性參數(shù),數(shù)值為原始圖像高度值的一半int nWidth:圖像屬性參數(shù),數(shù)值為原始圖像的寬度值int nWidth_H:圖像屬性參數(shù),數(shù)值為原始圖像寬度值的一半int layer:小波變換的層數(shù),數(shù)值為3層float fRadius:小波變換因子,在調(diào)

45、用時(shí)候已指定數(shù)值為1.414(3)函數(shù)代碼VoidCWvltTrans:DWT_TriLayers(short* spOriginData, short* spTransData0, short* spTransData1, int nHeight, int nHeight_H, int nWidth, int nWidth_H, int layer, float fRadius)int i;short *pData, *pTran0, *pTran1; /圖像的屬性參數(shù)int iWidth, iHeight, iWidth_H, iHeight_H;float fr = fRadius; /

46、獲得數(shù)據(jù)空間的指針pData = spOriginData;pTran0 = spTransData0;pTran1 = spTransData1; /圖像屬性參數(shù)賦值iWidth = nWidth;iWidth_H = nWidth_H;iHeight = nHeight;iHeight_H = nHeight_H; /利用循環(huán)完成兩次小波變換for(i=1; i<=layer; i+)DWT_Once(pData,pTran0,pTran1,iHeight,iHeight_H,iWidth,iWidth_H,i,fr);iHeight=iHeight>>1;iWidth=

47、iWidth>>1;iHeight_H=iHeight/2;iWidth_H=iWidth/2;在CWvltDoc方面,首先給菜單選項(xiàng)定義消息ID,如圖2-7所示。圖2-7 消息ID的定義下面來看一下圖像3層小波變換的實(shí)現(xiàn),并完成小波系數(shù)的顯示。void CWvltDoc:OnWvltTransTrbl() / TODO: Add your command handler code here /讀取數(shù)字圖像的文件頭,獲取圖像的屬性參數(shù)LPBITMAPINFOHEADER lpBitmapInfoHeader = (LPBITMAPINFOHEADER)(m_pBitmap+14);

48、LPBITMAPFILEHEADER lpBitmapFileHeader = (LPBITMAPFILEHEADER)m_pBitmap;unsigned char *lpData = m_pBitmap + lpBitmapFileHeader->bfOffBits;unsigned long biHeight = lpBitmapInfoHeader->biHeight;unsigned long biWidth = lpBitmapInfoHeader->biWidth;unsigned long biAlign = (biWidth*3+3)/4 *4;unsign

49、ed long bmSize = biHeight * biAlign;if(m_pTransfered=NULL)m_pTransfered=(unsigned char*) malloc (bmSize);if(m_pTransfered=NULL)return; /圖像矩陣坐標(biāo)與像素?cái)?shù)據(jù)int x,y,cur;unsigned char tempR, tempG, tempB;float fTempBufforDisp;short MaxPixVal,MinPixVal,Diff;short *spOriginData, *spTransData0, *spTransData1; /分配

50、圖像小波變換的數(shù)據(jù)存空間spOriginData = new short* biHeight;spTransData0 = new short* biHeight;spTransData1 = new short* biHeight;m_WvltCoeff= new short * biHeight;for(int i = 0; i < biHeight; i +)spOriginDatai = new short biWidth;spTransData0i = new short biWidth;spTransData1i = new short biWidth;m_WvltCoeffi = new short biWidth; /創(chuàng)建圖像小波類CWvltTrans *pTrans; /從設(shè)備的圖像緩存中獲取原始圖像的數(shù)據(jù)for(y=0; y<(int)biHeight; y+)for( x=0; x<(int)biWidth; x+)cur = y*biAlign+3*x;tempB=lpDatacur;tempG=lpDatacur+1;tempR=lpDatacur+2;spOrigin

溫馨提示

  • 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)論