圖像處理畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  圖像處理畢業(yè)論文</b></p><p>  摘 要:隨著信息技術(shù)的蓬勃發(fā)展,尤其是計(jì)算機(jī)技術(shù)的日新月異,為數(shù)字圖像處理的發(fā)展提供了廣闊的空間。該數(shù)字圖像處理系統(tǒng)是基于Windows平臺(tái)的圖像處理系統(tǒng),實(shí)現(xiàn)了對(duì)灰度級(jí)圖像的編輯,可以進(jìn)行圖像導(dǎo)入和導(dǎo)出,視圖設(shè)置,可以調(diào)整圖片尺寸,旋轉(zhuǎn)和翻轉(zhuǎn)圖片,圖片增強(qiáng)優(yōu)化,圖像邊緣檢測(cè)與分割,圖像編碼以及打印輸出圖片。本文主要

2、介紹了數(shù)字圖像處理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,系統(tǒng)設(shè)計(jì)運(yùn)用MFC的設(shè)計(jì)思想,通過(guò)VC++實(shí)現(xiàn)系統(tǒng)框架,簡(jiǎn)化了軟件的開(kāi)發(fā),提高了軟件系統(tǒng)的靈活性、可擴(kuò)展性和重用性。同時(shí)系統(tǒng)所有的操作設(shè)計(jì)得十分簡(jiǎn)單方便,無(wú)需具備有專業(yè)的知識(shí),也能對(duì)圖片完成編輯操作。</p><p>  關(guān) 鍵 詞 :VC++,MFC,灰度級(jí)圖像,圖像編輯</p><p>  Abstract:With the rapid deve

3、lopment of information technology, especially in the progress of computer technology, it provides wide space to the application of Digital Image Processing. Digital image processing system is an image processing system b

4、ased on the Windows platform. To realize the image editor of gray level, import and export images, view settings, you can adjust picture size, rotate and flip images Enhance the optimization and print output picture.The

5、analysis and the implementation </p><p>  Keywords: VC++,MFC,Grayscale image,Image edit</p><p><b>  目 錄</b></p><p>  1前言................................................

6、..........2</p><p>  1.1課題設(shè)計(jì)的背景和意義........................................2</p><p>  2圖像處理的方法概要與應(yīng)用領(lǐng)域..................................2</p><p>  2.1數(shù)字圖像處理的方法概要......................

7、............... 2</p><p>  2.2數(shù)字圖像處理的應(yīng)用領(lǐng)域......................................2</p><p>  2.3數(shù)字圖像系統(tǒng)簡(jiǎn)介............................................4</p><p>  3數(shù)字圖像處理系統(tǒng)開(kāi)發(fā)技術(shù)基礎(chǔ).........

8、.......................4</p><p>  3.1 C++語(yǔ)言優(yōu)點(diǎn).................................................4</p><p>  3.2 VC++平臺(tái)簡(jiǎn)介................................................4</p><p>  3.3 M

9、FC技術(shù)簡(jiǎn)介.................................................6</p><p>  3.4 MDI應(yīng)用程序的構(gòu)成...........................................6</p><p>  4需求分析....................................................7&

10、lt;/p><p>  4.1系統(tǒng)功能需求分析............................................7</p><p>  4.2系統(tǒng)處理流程分析............................................8</p><p>  5系統(tǒng)總體設(shè)計(jì)...............................

11、.................8</p><p>  5.1系統(tǒng)功能模塊劃分............................................8</p><p>  5.2類的設(shè)計(jì)....................................................9</p><p>  5.3系統(tǒng)框架類.......

12、..........................................10</p><p>  6系統(tǒng)的詳細(xì)設(shè)計(jì).............................................10</p><p>  6.1文件模塊的設(shè)計(jì).............................................10</p><p

13、>  6.2圖像編輯模塊...............................................12</p><p>  6.3圖像處理模塊...............................................13</p><p>  6.4圖像的增強(qiáng)和復(fù)原.........................................

14、..18</p><p>  7 系統(tǒng)調(diào)試 ..................................................20</p><p>  結(jié) 論......... .............................................21</p><p>  致 謝...................

15、......................................22</p><p>  參考文獻(xiàn) ......................................................23</p><p><b>  1 前言</b></p><p>  隨著科學(xué)技術(shù)的發(fā)展和人民生活水平的提高,數(shù)字?jǐn)z像機(jī)的出

16、現(xiàn)和數(shù)字圖像處理技術(shù)的發(fā)展,在日新月異的數(shù)字化時(shí)代中,越來(lái)越引起人們的廣泛關(guān)注,數(shù)字圖像處理已經(jīng)成為必備的基礎(chǔ)知識(shí)。近幾十年來(lái)由于計(jì)算機(jī)技術(shù)的蓬勃發(fā)展,圖像處理技術(shù)也得到了空前的發(fā)展和應(yīng)用。目前,圖像處理技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)、軍事、醫(yī)學(xué)、交通、農(nóng)業(yè)、天氣預(yù)報(bào)、銀行、超市、重要部門的監(jiān)控報(bào)警系統(tǒng)、可視電話、網(wǎng)絡(luò)傳輸?shù)鹊阮I(lǐng)域,成為各個(gè)學(xué)科學(xué)習(xí)和研究對(duì)象。隨著圖像處理技術(shù)的廣泛應(yīng)用,學(xué)習(xí)和掌握這門科學(xué)顯得格外重要,圖像處理已經(jīng)成為信息技術(shù)相

17、關(guān)領(lǐng)域的核心課程。</p><p>  數(shù)字圖像處理取得的另一個(gè)巨大成就是在醫(yī)學(xué)上獲得的成果。1972年英國(guó)EMI公司工程師Housfield發(fā)明了用于頭顱診斷的X射線計(jì)算機(jī)斷層攝影裝置,也就是我們通常所說(shuō)的CT(Computer Topography)。CT的基本方法是根據(jù)人的頭部截面的投影,經(jīng)計(jì)算機(jī)處理來(lái)重建截面圖像,稱為圖像重建。1975年EMI公司又成功研制出全身用的CT裝置,獲得了人體各個(gè)部位鮮明清晰的

18、斷層圖像。1979年,這項(xiàng)無(wú)損傷診斷技術(shù)獲得了諾貝爾獎(jiǎng),說(shuō)明它對(duì)人類做出了劃時(shí)代的貢獻(xiàn)。 與此同時(shí),圖像處理技術(shù)在許多應(yīng)用領(lǐng)域受到廣泛重視并取得了重大的開(kāi)拓性成就,屬于這些領(lǐng)域的有航空航天、生物醫(yī)學(xué)工程、工業(yè)檢測(cè)、機(jī)器人視覺(jué)、公安司法、軍事制導(dǎo)、文化藝術(shù)等,使圖像處理成為一門引人注目、前景遠(yuǎn)大的新型學(xué)科。 隨著圖像處理技術(shù)的深入發(fā)展,從70年代中期開(kāi)始,隨著計(jì)算機(jī)技術(shù)和人工智能、思維科學(xué)研究的迅速發(fā)展,數(shù)字圖像處理向更高、更深層次發(fā)展。

19、</p><p>  1.1課題設(shè)計(jì)的背景和意義</p><p>  所謂圖像處理,就是對(duì)圖像信息進(jìn)行加工以滿足人的視覺(jué)心理或應(yīng)用需求的行為。視覺(jué)是人類從大自然中獲取信息的最主要的手段。據(jù)統(tǒng)計(jì),在人類獲取的信息中,視覺(jué)信息約占60%,聽(tīng)覺(jué)信息約占20%,其他的如味覺(jué)信息、觸覺(jué)信息等加起來(lái)約占20%。由此可見(jiàn)視覺(jué)信息對(duì)人類的重要性,而圖像正是人類獲取視覺(jué)信息的主要造徑。所謂“圖”,就是物體透

20、射或者反射光的分布;“像”是人的視覺(jué)系統(tǒng)接收?qǐng)D的信息而在大腦中形成的印象或認(rèn)識(shí)。前者是客觀存在的,而后者是人的感覺(jué),圖像就是兩者的結(jié)合。</p><p>  2 數(shù)字圖像處理的方法概要與應(yīng)用領(lǐng)域</p><p>  2.1數(shù)字圖像處理的方法概要</p><p>  圖像處理的方法多種多樣,—般可分為圖像變換、圖像增強(qiáng)和復(fù)原、圖像分割、圖像壓縮編碼、圖像描述和圖像識(shí)別

21、等幾類:</p><p><b>  1)圖像變換</b></p><p>  由于圖像陣列很大,直接在空間域中進(jìn)行處理,涉及的計(jì)算量很大。利用正交變換(如傅里葉變換、余弦變換等)的性質(zhì)和特點(diǎn),將圖像變換到頻率域中進(jìn)行處理,不僅可減少計(jì)算量,而且可獲得更有效的處理,如博里葉變換可在領(lǐng)域中進(jìn)行數(shù)字濾波處理。目前新興研究的小波交換在時(shí)域和頻域中都具有良好的局部化特性,它在

22、圖像處理中也有著廣泛而有效的應(yīng)用。該部分主要研究各種變換模型和處理方法。</p><p><b>  2)圖像增強(qiáng)和復(fù)原</b></p><p>  圖像增強(qiáng)和復(fù)原的目的都是為了提高圖像的質(zhì)量。</p><p> ?、賵D像增強(qiáng)。利用各種數(shù)學(xué)方法和變換手段提高圖像中目標(biāo)與非目標(biāo)(如背景)的對(duì)比度與清晰度,達(dá)到突出目標(biāo),有效地表示和提示圖像,以利于

23、人或機(jī)器進(jìn)行分析處理的目的。該部分主要研究各種增強(qiáng)模型和處理方法。</p><p> ?、趫D像復(fù)原。在景物成像過(guò)程中,由于成像設(shè)備與物體的相對(duì)運(yùn)動(dòng)、介質(zhì)散射、系統(tǒng)畸變(如成像系統(tǒng)的變焦、成像器材的固有缺陷)、噪聲干擾等因素會(huì)造成圖像質(zhì)量降低,稱之為“退化”,典型現(xiàn)象是圖像模糊。使退化的圖像恢復(fù)本來(lái)面目,真實(shí)反映原景物圖像的處理,稱為圖像復(fù)原。該部分主要研究各種校正模型和處理方法。</p><p

24、>  圖像增強(qiáng)不考慮圖像降質(zhì)的原因,突出圖像中所感興趣的部分。如強(qiáng)化圖像高頻分量,可使圖像中物體輪廓清晰,細(xì)節(jié)明顯;強(qiáng)化低頻分量,可減少圖像中噪聲影響。圖像復(fù)原要求對(duì)圖像降質(zhì)的原因有一定的了解,一般而言,應(yīng)根據(jù)降質(zhì)過(guò)程建立“降質(zhì)模型”再采用某種濾波方法,恢復(fù)或重建原來(lái)的圖像。</p><p><b>  3)圖像壓縮編碼</b></p><p>  把數(shù)字化的圖

25、像數(shù)據(jù)按一定規(guī)則進(jìn)行排列或運(yùn)算的過(guò)程稱為圖像編碼。內(nèi)于圖像的數(shù)據(jù)量很大,存儲(chǔ)要占很大的空間,傳輸也要花費(fèi)不少時(shí)間,為此利用圖像本身的內(nèi)在特性(如像素灰度值之間的相關(guān)性),按某種特殊方式編碼,以壓縮總的信息量,稱之為圖像壓縮編碼。該部分主要研究各種高效壓縮編碼方法。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件進(jìn)行。編碼是壓縮技術(shù)中最重要的方法,它在圖像處理技術(shù)中是發(fā)展最早且比較成熟的技術(shù)。</p><p>

26、<b>  4)圖像分割</b></p><p>  圖像分割是數(shù)字圖像處理中的關(guān)鍵技術(shù)之—。圖像分割是將圖像中有意義的特征部分提取出來(lái),其有意義的特征有圖像中的邊緣、區(qū)域等,這是進(jìn)一步進(jìn)行圖像識(shí)別、分析和理解的基礎(chǔ)。雖然目前已研究出不少邊緣提取、區(qū)域分割的方法,但還沒(méi)有一種普遍適用于各種圖像的有效方法。因此,對(duì)圖像分割的研究還在不斷深入之中,是目前圖像處理中研究的熱點(diǎn)之一。</p&g

27、t;<p><b>  5)圖像描述</b></p><p>  圖像描述是圖像識(shí)別和理解的必要前提。作為最簡(jiǎn)單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采用二維形狀描述,它有邊界描述和區(qū)域描述兩類方法。對(duì)于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發(fā)展,已經(jīng)開(kāi)始進(jìn)行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。<

28、/p><p>  2.2數(shù)字圖像處理的應(yīng)用領(lǐng)域</p><p>  圖像信息是人類主要的信息來(lái)源之一,圖像處理的應(yīng)用領(lǐng)域也涉及到人們工作生活中的方方面面。主要應(yīng)用可歸納為以下幾個(gè)方面:</p><p>  (1)醫(yī)用圖像處理。醫(yī)學(xué)上不論是基礎(chǔ)研究還是臨床應(yīng)用,都是圖像處理種類極多的領(lǐng)域。例如生物醫(yī)學(xué)的顯微圖像的處理分析,如紅白細(xì)胞和細(xì)菌,染色體分析;臨床診斷中X光圖像的

29、鑒別、超聲波圖像(B超)的分析、眼底照片的分析等都是醫(yī)療輔助診斷的重要手段,尤其是計(jì)算機(jī)層析成像技術(shù)(CT),可以獲得人體剖面圖,使肌體病變特別是腫瘤的診斷起到了革命性的變化,近年來(lái)出現(xiàn)的核磁共振CT,使人體免受各種硬射線的傷害,而且圖像更為清晰。</p><p>  (2)遙感圖像的處理。飛機(jī)或人造衛(wèi)星傳送來(lái)的遙感圖像,由于各種原因圖像質(zhì)量不是很好,必須在成像、存儲(chǔ)、傳輸、判讀過(guò)程中進(jìn)行各種數(shù)字處理與分析(如輻

30、射校正、幾何畸變校正、多光譜統(tǒng)計(jì)信息分類等),并將其變?yōu)榭梢暤馁Y源信息或氣象信息,如大氣預(yù)報(bào)中的衛(wèi)星云圖。目前遙感技術(shù)已在資源調(diào)查、災(zāi)害監(jiān)測(cè)、農(nóng)業(yè)規(guī)劃、城市規(guī)劃、環(huán)境保護(hù)等方面得到了廣泛的應(yīng)用。</p><p>  (3)文字的識(shí)別與圖紙的判讀。文字與圖紙是科技信息的主要傳輸手段。文字與圖紙?jiān)趫D像處理中都是以最簡(jiǎn)單的二值圖像形式出現(xiàn)的。文字識(shí)別的應(yīng)用包括手寫體文字的識(shí)別、圖文混合中文字的識(shí)別等,如郵政編碼的自動(dòng)識(shí)

31、別,計(jì)算機(jī)光筆輸入,經(jīng)掃描儀掃描的文字材料是以圖像文件的形式保存,如何將其轉(zhuǎn)變成文本文件等等。目前此類應(yīng)用技術(shù)已比較成熟,如OCR軟件等。圖紙的判讀則涉及到各種邏輯圖和機(jī)械設(shè)計(jì)圖的自動(dòng)讀取問(wèn)題,其中也包括圖紙上的文字識(shí)別問(wèn)題(即圖文混合下的文字識(shí)別)。</p><p>  (4)工業(yè)領(lǐng)域的應(yīng)用。產(chǎn)品外觀檢測(cè)與篩選,表面缺陷的自動(dòng)檢測(cè),組裝與流水線上的自動(dòng)化,工業(yè)材料的質(zhì)量檢驗(yàn)。</p><p&

32、gt;  (5)農(nóng)業(yè)上的應(yīng)用。包括農(nóng)產(chǎn)品色度的檢測(cè)(如鑒別水果成熟度),農(nóng)牧產(chǎn)品,作物的表血形狀和特征參數(shù)的測(cè)定。</p><p>  (6)其他。指紋識(shí)別、影視中的特效等。</p><p>  2.3數(shù)字圖像系統(tǒng)簡(jiǎn)介</p><p>  數(shù)字圖像處理系統(tǒng)是一款簡(jiǎn)單而又實(shí)用的灰度級(jí)圖像處理軟件,是基于Windows平臺(tái)的應(yīng)用程序,利用Visual C++6.0的編譯

33、環(huán)境提高了系統(tǒng)的開(kāi)發(fā)速度,實(shí)現(xiàn)數(shù)字圖像的查看與編輯操作。主要內(nèi)容有:</p><p>  圖像文件的打開(kāi)和保存,實(shí)現(xiàn)了對(duì)灰度級(jí)圖像的操作。</p><p>  圖像的幾何變換,實(shí)現(xiàn)對(duì)圖像文件的旋轉(zhuǎn)、縮放、以及鏡像處理。</p><p>  圖像增強(qiáng)和復(fù)原,實(shí)現(xiàn)對(duì)降質(zhì)的圖像進(jìn)行改善處理和提高圖像質(zhì)量的逼真度。</p><p>  圖像的邊緣檢測(cè)

34、和分割,產(chǎn)生更適合人觀察和識(shí)別的圖像。</p><p>  圖像編碼,對(duì)圖像采用不同的表達(dá)方法以減小表示圖像所需的數(shù)據(jù)量。</p><p>  3 數(shù)字圖像處理系統(tǒng)開(kāi)發(fā)技術(shù)基礎(chǔ)</p><p>  3.1 C++語(yǔ)言優(yōu)點(diǎn)</p><p>  C++語(yǔ)言是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,使用C++編寫的代碼更加簡(jiǎn)捷、高效,更具可維護(hù)性和可重用性。C++語(yǔ)言

35、的優(yōu)點(diǎn)主要有以下幾點(diǎn): 1、使用new和delete進(jìn)行動(dòng)態(tài)內(nèi)存分配和釋放 運(yùn)算符new和delete是C++新增的運(yùn)算符,提供了存儲(chǔ)的動(dòng)態(tài)分配和釋放功能。它的作用相當(dāng)于C語(yǔ)言的函數(shù)malloc()和free(),但是性能更為優(yōu)越。使用new比使用malloc()有以下的幾個(gè)優(yōu)點(diǎn): (1)、new自動(dòng)計(jì)算要分配類型的大小,不使用sizeof運(yùn)算符,比較省事,可以避免錯(cuò)誤。 (2)、它自動(dòng)地返回正確的指

36、針類型,不用進(jìn)行強(qiáng)制指針類型轉(zhuǎn)換。 (3)、可以用new對(duì)分配的對(duì)象進(jìn)行初始化。 2、使用inline內(nèi)連函數(shù)替代宏調(diào)用 對(duì)于頻繁使用的函數(shù),C語(yǔ)言建議使用宏調(diào)用代替函數(shù)調(diào)用以加快代碼執(zhí)行,減少調(diào)用開(kāi)銷。但是宏調(diào)用有許多的弊端,可能引起不期望的副作用。例如宏: #define abs(a) ((a)<0?(-a):(a)), 當(dāng)使用abs(I++)時(shí),這個(gè)宏就會(huì)出錯(cuò)。 所以在C++中應(yīng)該使用inline內(nèi)連

37、函數(shù)替代宏調(diào)用,這</p><p>  例如: inline int Add(int a,int b);//聲明Add()為內(nèi)連函數(shù) 這樣編譯器在遇到Add()函數(shù)時(shí),不再進(jìn)行函數(shù)調(diào)用,而是直接嵌入函數(shù)代碼以加快程序的執(zhí)行。 3、使用函數(shù)重載 在C語(yǔ)言中,兩個(gè)函數(shù)的名稱不能相同,否則會(huì)導(dǎo)致編譯錯(cuò)誤。而在C++中,函數(shù)名相同而參數(shù)不同的兩個(gè)函數(shù)被解釋為重載。例如: void

38、PutHz(char *str); //在當(dāng)前位置輸出漢字 void PutHz(int x,int y,char *str); //在x,y處輸出漢字 使用函數(shù)重載可以幫助程序員應(yīng)付更多的復(fù)雜;同時(shí)在大型程序中,使函數(shù)名易于管理和使用,而不必絞盡腦汁地去處理函數(shù)名。 4、使用引用(reference)代替指針進(jìn)行參數(shù)傳遞 在C語(yǔ)言中,如果一個(gè)函數(shù)需要修改用作參數(shù)的變量值的時(shí)候 ,參數(shù)應(yīng)該聲明為指

39、針類型。例如: void Add(int *a) {(*a)++;} 但是對(duì)于復(fù)雜的程序,使用指針容易出錯(cuò),程序也難以讀懂。在C++中,對(duì)于上述情況 可以使用引用來(lái)</p><p>  5、使用“類”對(duì)數(shù)據(jù)進(jìn)行封裝 C語(yǔ)言是模塊化的程序語(yǔ)言,通過(guò)函數(shù)的使用和文件的單獨(dú)編譯實(shí)現(xiàn)了一定的數(shù)據(jù)封裝功能。但C++通過(guò)使用“類”的強(qiáng)大功能,在數(shù)據(jù)封裝、繼承等很多的方面比C做得更好。通過(guò)使用“類

40、”把數(shù)據(jù)和對(duì)數(shù)據(jù)的所有操作集合封裝在一起,建立了一個(gè)定義良好的接口,使程序員在使用一個(gè)類的時(shí)候可以只關(guān)心它的使用,而不必關(guān)心它的實(shí)現(xiàn)。 6、類模版 類模版使得程序員在設(shè)計(jì)一個(gè)類時(shí),可以將數(shù)據(jù)類型作為類的參數(shù),從而定義一個(gè)類屬類。作為參數(shù)的類型既可以是c++語(yǔ)言提供的基本類型與復(fù)合數(shù)據(jù)類型,也可以是程序員自定義的類類型。類屬類的主要用途是定義包容數(shù)據(jù)結(jié)構(gòu)。</p><p>  利用類模版,以此就可以

41、定義出具有共性(除類型參數(shù)除外、其余全相同)的一組類。即通過(guò)使用類模版,可使得所定義類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員參數(shù)的返回值都可以使任意類型的(包括系統(tǒng)預(yù)定義類型以及用戶自定義類型),從而使得一段程序可用于處理多種不同類型的對(duì)象。</p><p>  3.2 VC++平臺(tái)簡(jiǎn)介</p><p>  VC++是在Windows平臺(tái)下構(gòu)建32位應(yīng)用程序的強(qiáng)大而又復(fù)雜的開(kāi)發(fā)工具

42、,是目前世界上使用非常廣泛的工具之一。VC++的應(yīng)用非常廣泛,從桌面應(yīng)用程序到服務(wù)器端軟件,從系統(tǒng)軟件到應(yīng)用軟件,從單機(jī)程序到分布式應(yīng)用程序,從圖形圖像處理到游戲開(kāi)發(fā),VC++無(wú)所不在 [6]。VC++是Windows平臺(tái)上的C++編程環(huán)境,學(xué)習(xí)VC要了解很多Windows平臺(tái)的特性并且還要掌握MFC、ATL、COM等的知識(shí),難度比較大。</p><p>  VC++ Developer Studio 包含有編寫

43、程序源代碼的編輯器,設(shè)計(jì)用戶界面(菜單、對(duì)話框、圖標(biāo)等)的資源編輯器,建立項(xiàng)目配置的項(xiàng)目管理器,檢查程序錯(cuò)誤的集成調(diào)式等工具,同時(shí),它還提供了功能強(qiáng)大的應(yīng)用程序向?qū)ppWizard和類向?qū)lassWizard工具。AppWizard用于生成各種不同類型的具有Windows界面風(fēng)格的應(yīng)用程序的基本框架,在生成應(yīng)用程序框架后,使用ClassWizard便可輕松完成創(chuàng)建新類,映射消息、定義消息處理函數(shù)、重載虛函數(shù)等操作[1]。</p

44、><p>  3.3 MFC技術(shù)簡(jiǎn)介</p><p>  MFC (Microsoft Foundation Class Library,微軟基礎(chǔ)類庫(kù))是微軟為了簡(jiǎn)化程序員的開(kāi)發(fā)工作所開(kāi)發(fā)的一套C++類的集合,是一套面向?qū)ο蟮暮瘮?shù)庫(kù),以類的方式提供給客戶使用。利用這些類可以有效的幫助程序員完成Windows應(yīng)用程序的開(kāi)發(fā)。MFC中的各種類結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此

45、基礎(chǔ)上來(lái)建立Windows下的應(yīng)用程序,這是一種相對(duì)SDK來(lái)說(shuō)更為簡(jiǎn)單的方法。因?yàn)榭傮w上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過(guò)預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。Microsoft Visual C++提供了相應(yīng)的工具來(lái)完成這個(gè)工作:AppWizard可以用來(lái)生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口;ClassWizard用來(lái)協(xié)助添加代碼到框

46、架文件;最后,編譯,則通過(guò)類庫(kù)實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。</p><p>  3.4 MDI應(yīng)用程序的構(gòu)成</p><p>  用AppWizard產(chǎn)生一個(gè)MDI工程Jia(無(wú)OLE等支持),AppWizard創(chuàng)建了一系列文件,構(gòu)成了一個(gè)應(yīng)用程序框架。這些文件分四類:頭文件(.h),實(shí)現(xiàn)文件(.cpp),資源文件(.rc),模塊定義文件(.def),等。</p><p&

47、gt;  從CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd類對(duì)應(yīng)地派生出CJiaApp、CJiaDoc、CJiaView、CMainFrame、CChildFrame五個(gè)類,這五個(gè)類的實(shí)例分別是應(yīng)用程序?qū)ο?、文檔對(duì)象、視對(duì)象、主框架窗口對(duì)象和文檔邊框窗口對(duì)象。主框架窗口包含了視窗口、工具條和狀態(tài)欄。對(duì)這些類或者對(duì)象解釋如下。</p><p><b> 

48、?。?)應(yīng)用程序</b></p><p>  應(yīng)用程序類派生于CWinApp?;诳蚣艿膽?yīng)用程序必須有且只有一個(gè)應(yīng)用程序?qū)ο螅?fù)責(zé)應(yīng)用程序的初始化、運(yùn)行和結(jié)束。</p><p><b> ?。?)邊框窗口</b></p><p>  如果是SDI應(yīng)用程序,從CFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClien

49、t)直接包含視窗口;如果是MDI應(yīng)用程序,從CMDIFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含文檔邊框窗口。如果要支持工具條、狀態(tài)欄,則派生的邊框窗口類還要添加CToolBar和CStatusBar類型的成員變量,以及在一個(gè)OnCreate消息處理函數(shù)中初始化這兩個(gè)控制窗口。邊框窗口用來(lái)管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協(xié)調(diào)模式狀態(tài)(如上下文的幫助(SHIFT+F1模式)和打印預(yù)

50、覽)。</p><p><b> ?。?)文檔邊框窗口</b></p><p>  文檔邊框窗口類從CMDIChildWnd類派生,MDI應(yīng)用程序使用文檔邊框窗口來(lái)包含視窗口。</p><p><b> ?。?)文檔</b></p><p>  文檔類從CDocument類派生,用來(lái)管理數(shù)據(jù),數(shù)據(jù)的

51、變化、存取都是通過(guò)文檔實(shí)現(xiàn)的。視窗口通過(guò)文檔對(duì)象來(lái)訪問(wèn)和更新數(shù)據(jù)。</p><p><b>  (5)視</b></p><p>  視類從CView或它的派生類派生。視和文檔聯(lián)系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內(nèi)容,并把用戶輸入轉(zhuǎn)換成對(duì)文檔的操作。</p><p><b>  (6)文檔模板</b&g

52、t;</p><p>  文檔模板類一般不需要派生。MDI應(yīng)用程序使用多文檔模板類CMultiDocTemplate;SDI應(yīng)用程序使用單文檔模板類CSingleDocTemplate。應(yīng)用程序通過(guò)文檔模板類對(duì)象來(lái)管理上述對(duì)象(應(yīng)用程序?qū)ο蟆⑽臋n對(duì)象、主邊框窗口對(duì)象、文檔邊框窗口對(duì)象、視對(duì)象)的創(chuàng)建。</p><p><b>  4 需求分析</b></p&g

53、t;<p>  4.1系統(tǒng)功能需求分析</p><p>  需求分析簡(jiǎn)單地說(shuō)就是分析用戶的需求。需求分析是設(shè)計(jì)系統(tǒng)的起點(diǎn),需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影響到后面各個(gè)階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用。</p><p>  需求分析的任務(wù)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確

54、用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。</p><p>  調(diào)查的重點(diǎn)是“數(shù)據(jù)”和“處理”,通過(guò)調(diào)查、收集與分析,獲得用戶對(duì)數(shù)據(jù)的要求如下:</p><p> ?。?)圖像的打開(kāi)、關(guān)閉及保存:打開(kāi)并顯示圖像,并在處理過(guò)圖像后關(guān)閉或保存圖像的修改。</p><p> ?。?)處理要求。指用戶要完成什么處理功能,對(duì)處理的響應(yīng)時(shí)間有什么要求,處理方式是批處理還是

55、其他處理方式,能夠完成圖像一般的編輯處理。</p><p>  (3)處理效果與效率。圖像處理中一個(gè)很重要的問(wèn)題就是如何表示有關(guān)的知識(shí)并以恰當(dāng)?shù)姆绞揭雸D像處理。由于圖像處理任務(wù)的復(fù)雜性,目前要找出一個(gè)通用的方法適應(yīng)各種情況是幾乎不可能的。另一方面,在建立普適的圖像處理方法時(shí),往往會(huì)忽略某類圖像具有的特定屬性。相反,針對(duì)某類特定問(wèn)題,則可能找到有效的方法。為此,有研究者提出基于對(duì)象圖像處理的概念:限定圖像處理的對(duì)

56、象為幾類特殊的圖像(JPG,GIF,BMP),考察對(duì)象的共有屬性(稱為先驗(yàn)),并將其結(jié)合到圖像處理的任務(wù)中以提供更多的信息,從而提升圖像處理的性能、提高處理效果。由于圖像的處理是通過(guò)對(duì)一個(gè)個(gè)像素點(diǎn)進(jìn)行處理,要想提高處理速度就需要尋找一個(gè)快速的處理方法。 </p><p>  本系統(tǒng)是Windows應(yīng)用程序,可以進(jìn)行圖像的導(dǎo)入和導(dǎo)出,視圖設(shè)置,附帶和ACD SEE類似功能的圖片編輯器編輯完成以后可以對(duì)修改進(jìn)行保存,

57、可以調(diào)整圖片尺寸,旋轉(zhuǎn)和翻轉(zhuǎn)圖片,圖片增強(qiáng)優(yōu)化,圖像的特效處理以及打印輸出圖片。</p><p>  4.2系統(tǒng)處理流程分析</p><p>  在對(duì)系統(tǒng)的組織結(jié)構(gòu)和功能進(jìn)行分析時(shí),需從一個(gè)實(shí)際業(yè)務(wù)流程的角度將系統(tǒng)調(diào)查中有關(guān)該業(yè)務(wù)流程的資料都串起來(lái)作進(jìn)一步的分析。業(yè)務(wù)流程分析可以幫助我們了解該業(yè)務(wù)的具體處理過(guò)程,發(fā)現(xiàn)和處理系統(tǒng)的調(diào)查工作中的錯(cuò)誤和疏漏,修改和刪除原系統(tǒng)的不合理部分,在新系統(tǒng)

58、基礎(chǔ)上優(yōu)化業(yè)務(wù)處理流程。</p><p>  業(yè)務(wù)流程圖(transaction flow diagram,簡(jiǎn)稱TFD), 就是用一些規(guī)定的符號(hào)及連接來(lái)表示某個(gè)具體的業(yè)務(wù)處理過(guò)程,它是用盡可能少、盡可能簡(jiǎn)單的方法來(lái)描述業(yè)務(wù)處理過(guò)程的方法,由于它的符號(hào)簡(jiǎn)單明了,所以非常易于閱讀和理解業(yè)務(wù)流程。</p><p>  通過(guò)對(duì)系統(tǒng)的需求分析,系統(tǒng)的基本功能已經(jīng)確定。整個(gè)系統(tǒng)各個(gè)模塊的業(yè)務(wù)

59、流程,如圖4-1所示: </p><p>  圖4-1 業(yè)務(wù)流程圖</p><p><b>  5 系統(tǒng)總體設(shè)計(jì)</b></p><p>  5.1系統(tǒng)功能模塊劃分</p><p>  數(shù)字圖像處理系統(tǒng)的總體功能模塊如圖4-1所示:</p><p>  圖 5-1 數(shù)字圖像處理功能模塊劃分<

60、/p><p>  模塊設(shè)計(jì)是對(duì)處理流程圖的注釋性書面文件,以幫助程序設(shè)計(jì)人員進(jìn)一步了解模塊的功能和設(shè)計(jì)要求,本系統(tǒng)采用C++語(yǔ)言開(kāi)發(fā),由于計(jì)算機(jī)的硬件和軟件發(fā)展日新月異,所以對(duì)這種語(yǔ)言利用的過(guò)程,也是不斷學(xué)習(xí)的過(guò)程。</p><p>  數(shù)字圖像處理系統(tǒng)主要分為三個(gè)子模塊,即文件操作模塊、圖像編輯模塊、圖像處理模塊模塊。</p><p>  系統(tǒng)的具體的模塊設(shè)計(jì)如下:&

61、lt;/p><p>  1.文件操作:該模塊主要實(shí)現(xiàn)圖像的文件操作,包括打開(kāi)圖像文件、保存圖像文件、圖像文件的打印等操作。</p><p>  2.圖像編輯:該模塊主要實(shí)現(xiàn)圖像的編輯操作,包括圖像的復(fù)制、圖像的粘貼、在圖像中添加文字信息等操作。</p><p>  3.圖像操作:該模塊主要實(shí)現(xiàn)圖像的特殊處理與縮放處理,包括圖像的點(diǎn)運(yùn)算、圖像的幾何變換、圖像的增強(qiáng)和復(fù)原處

62、理、圖像的邊緣檢測(cè)和分割、圖像編碼圖像的特效處理等操作。</p><p><b>  5.2類的設(shè)計(jì)</b></p><p>  圖5-2 對(duì)話框類表</p><p>  MFC類庫(kù)中實(shí)現(xiàn)了對(duì)GDI位圖操作的CBitmap類,但是沒(méi)有封裝處理DIB(Device-Independent Bitmap 設(shè)備無(wú)關(guān)位圖)位圖操作的相關(guān)Windows

63、API類,CMyDIB類就是采用面向?qū)ο蟮乃枷雽?shí)現(xiàn)了對(duì)該類函數(shù)以及數(shù)字圖像處理算法的封裝。實(shí)現(xiàn)的功能主要有以下幾個(gè)方面:</p><p> ?。?)讀取BMP圖像文件;</p><p> ?。?)獲取圖像的相關(guān)信息;</p><p><b>  (3)顯示圖像;</b></p><p><b> ?。?)保存圖

64、像;</b></p><p>  (5)圖像處理的各種算法實(shí)現(xiàn)。</p><p>  CBmpShow、CRectTrackerEx類主要是實(shí)現(xiàn)了圖像文本的插入處理。</p><p><b>  5.3系統(tǒng)框架類</b></p><p>  CJiaApp、CJiaDoc、CJiaView、CMainFram

65、e、CChildFrame五個(gè)類主要實(shí)現(xiàn)了應(yīng)用程序的框架及框架內(nèi)部的各種邏輯、消息響應(yīng)機(jī)制。</p><p><b>  6 系統(tǒng)的詳細(xì)設(shè)計(jì)</b></p><p>  根據(jù)前面對(duì)系統(tǒng)所需實(shí)現(xiàn)功能的分析和系統(tǒng)結(jié)構(gòu)設(shè)計(jì),現(xiàn)將對(duì)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),逐步實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊。</p><p>  6.1文件模塊的設(shè)計(jì)</p><p

66、><b> ?。?)文件操作模塊</b></p><p>  文件操作模塊是整個(gè)系統(tǒng)中最基本的組成成分。文件操作模塊主要實(shí)現(xiàn)圖像文件的打開(kāi)、打印、修改后的保存以及圖像文件的另存為操作。</p><p>  通過(guò)對(duì)用戶的需求分析得出文件操作模塊的功能結(jié)構(gòu)圖,文件操作模塊的功能結(jié)構(gòu)圖如圖6-1所示:</p><p>  圖6-1 文件操作模塊

67、功能結(jié)構(gòu)圖</p><p>  應(yīng)用程序的的啟動(dòng)界面如圖6-2所示:</p><p>  圖6-2 圖像啟動(dòng)界面</p><p>  程序的啟動(dòng)界面由CSplashWnd類實(shí)現(xiàn),在CSplashWnd類中的OnCreate函數(shù)中的定時(shí)器SetTimer(1, 2750, NULL)設(shè)置的定時(shí)間隔就是啟動(dòng)畫面的顯示的時(shí)間,該系統(tǒng)設(shè)置的顯示時(shí)間是2750ms,然后發(fā)送W

68、M_TIMER消息,隱藏啟動(dòng)畫面;如果系統(tǒng)收到鍵盤或者鼠標(biāo)單擊消息時(shí)也會(huì)自動(dòng)隱藏啟動(dòng)畫面。</p><p>  (2)文件打開(kāi)功能的實(shí)現(xiàn),其文件打開(kāi)界面如圖6-3所示:</p><p>  圖6-3文件打開(kāi)界面</p><p>  通過(guò)文檔—視圖結(jié)構(gòu)簡(jiǎn)化了數(shù)據(jù)操作和數(shù)據(jù)顯示,文檔只負(fù)責(zé)數(shù)據(jù)管理,不涉及用戶界面;視只負(fù)責(zé)數(shù)據(jù)輸出和用戶界面的交互,可以不考慮應(yīng)用程序的數(shù)

69、據(jù)是如何組織的。通過(guò)文檔JDoc類中的OnOpenDocument(LPCTSTR lpszPathName)函數(shù)實(shí)現(xiàn)對(duì)文件的打開(kāi),而在視圖JiaView類中實(shí)現(xiàn)圖像的顯示。</p><p><b> ?。?)圖像的保存 </b></p><p>  圖像的保存也是在文檔類實(shí)現(xiàn),首先聲明了CMyDIB類的指針變量m_pDibImage,經(jīng)過(guò)保存對(duì)話框后,程序接下來(lái)調(diào)用

70、成員函數(shù)m_pDibImage->SaveDIB(m_hDIB, file)將圖像存為指定文件。另外,一旦將文件更名保存,就需要將該圖像所屬的子窗口標(biāo)題欄中的標(biāo)題更名為新的文件名,此項(xiàng)任務(wù)由成員函數(shù)pChildFrame->SetWindowText()負(fù)責(zé)。</p><p><b> ?。?)圖像的打印</b></p><p>  圖像的打印實(shí)現(xiàn),通過(guò)I

71、sPrinting()函數(shù)判斷CDC對(duì)象是否是指向設(shè)備上向下文環(huán)境的對(duì)象,如果是,則執(zhí)行如下代碼實(shí)現(xiàn)打?。?lt;/p><p>  // 獲取打印頁(yè)面的水平寬度(象素)</p><p>  int cxPage = pDC->GetDeviceCaps(HORZRES);</p><p>  // 獲取打印頁(yè)面的垂直高度(象素)</p><

72、;p>  int cyPage = pDC->GetDeviceCaps(VERTRES);</p><p>  // 獲取打印機(jī)每英寸象素?cái)?shù)</p><p>  int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);</p><p>  int cyInch = pDC->GetDeviceCaps(

73、LOGPIXELSY);</p><p>  // 計(jì)算打印圖像大小(縮放,根據(jù)頁(yè)面寬度調(diào)整圖像大?。?lt;/p><p>  rcDest.top = rcDest.left = 0;</p><p>  rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)</p><p>  / ((

74、double)cxDIB * cxInch));</p><p>  rcDest.right = cxPage;</p><p>  // 計(jì)算打印圖像位置(垂直居中)</p><p>  int temp = cyPage - (rcDest.bottom - rcDest.top);</p><p>  rcDest.bottom +=

75、 temp/2;</p><p>  rcDest.top += temp/2;</p><p><b>  6.2圖像編輯模塊</b></p><p>  圖像編輯模塊是圖像處理系統(tǒng)中重要模塊,主要實(shí)現(xiàn)圖像文件的編輯操作。包括圖像的復(fù)制、粘貼以及在圖像中插入文本操作。</p><p>  圖像編輯模塊的功能結(jié)構(gòu)如圖6-

76、4所示:</p><p><b>  圖6-4功能結(jié)構(gòu)圖</b></p><p>  圖像編輯主要實(shí)現(xiàn)對(duì)圖像的編輯,用戶在打開(kāi)圖像之后可以選擇復(fù)制圖像或者剪切圖像,如果想要把復(fù)制的圖像保存下來(lái)就需要先將圖片保存到剪貼板后進(jìn)行圖像粘貼,保存操作,這樣就可以把原來(lái)圖像中的一部分保存下來(lái)。如果需要添加一些說(shuō)明性文字可以進(jìn)行文本的插入,單擊編輯/添加字體調(diào)出文本插入對(duì)話框,進(jìn)

77、行文本插入說(shuō)明,這樣可以把圖像的描述信息添加到圖像中。插入文本實(shí)現(xiàn)了在圖像中任意位置插入文字,沒(méi)有實(shí)現(xiàn)字體和顏色的設(shè)置。</p><p>  插入文本的代碼如下所示:</p><p>  void CBmpShow::PaintBmpAndText()</p><p>  {//繪制圖像和文字</p><p>  SetDIBits(m_pM

78、emDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject, </p><p>  0,m_lpBMPHdr->biHeight,(LPVOID)m_lpDIBits,(BITMAPINFO*)m_lpBMPHdr, DIB_RGB_COLORS);</p><p>  if (m_strBmpText.GetLength() &g

79、t; 0)</p><p><b>  {</b></p><p>  CRect rcText = m_textTracker.m_rect - m_rcDraw.TopLeft();</p><p>  m_pMemDC->SetBkMode(TRANSPARENT);</p><p><b> 

80、 //設(shè)置字體</b></p><p>  m_pMemDC->SetTextColor(RGB(250, 0,0));</p><p>  rcText.OffsetRect(1, 1);</p><p>  //根據(jù)矩形的寬度,插入換行符</p><p>  CString strText = NewLineStrin

81、g(m_strBmpText, rcText);</p><p>  // Call this member function to format text in the given rectangle</p><p>  m_pMemDC->DrawText(strText, rcText, DT_LEFT|DT_WORDBREAK);}</p><p> 

82、 圖像文本插入界面如圖6-5所示:</p><p>  圖6-5文本插入界面</p><p><b>  6.3圖像處理模塊</b></p><p>  圖像處理模塊主要是實(shí)現(xiàn)灰度圖像的處理,因?yàn)榛叶葓D像的每個(gè)像素的位數(shù)正好是8位,即一個(gè)字節(jié),這樣,在進(jìn)行圖像處理時(shí)可以不用考慮拼湊字節(jié)的問(wèn)題。而且由于灰度圖調(diào)色板的特殊性,進(jìn)行灰度圖像處理時(shí)不必

83、考慮調(diào)色板的問(wèn)題。這部分的主要功能是圖像的點(diǎn)運(yùn)算、圖像的幾何運(yùn)算、圖像的正交變換、圖像的增強(qiáng)、圖像邊緣檢測(cè)和分割、圖像編碼。</p><p>  經(jīng)過(guò)分析圖像處理的功能,得出圖像處理的功能模塊圖如圖6-6所示:</p><p><b>  圖6-6功能模塊圖</b></p><p>  點(diǎn)運(yùn)算(Point Operation)是一種及簡(jiǎn)單有重要

84、的技術(shù),它能讓用戶改變圖像數(shù)據(jù)占據(jù)的灰度范圍。點(diǎn)運(yùn)算可以按照預(yù)定的方式改變一副圖像的灰度直方圖。</p><p>  灰度直方圖是數(shù)字圖像處理中一個(gè)最簡(jiǎn)單、最有用的工具,它描述了一幅圖像的的灰度級(jí)內(nèi)容。任何一幅圖像的直方圖都包括了可觀的信息,某些類型的圖像還可由其直方圖完全描述。</p><p>  圖像直方圖運(yùn)行效果圖如6-7所示:</p><p><b&g

85、t;  圖6-7圖像直方圖</b></p><p>  灰度的線性變換是點(diǎn)運(yùn)算中最簡(jiǎn)單的運(yùn)算之一,就是將圖像中所有的點(diǎn)的灰度按照線性灰度變換函數(shù)進(jìn)行變換。反轉(zhuǎn)是灰度線性變化中最常見(jiàn)的一種情形。</p><p>  圖像效果圖反色前與反色后的對(duì)比如圖6-8所示:</p><p>  圖6-8圖像反色效果對(duì)比圖</p><p>  灰

86、度的閥值變換比較簡(jiǎn)單,容易實(shí)現(xiàn),可以將一副灰度圖像轉(zhuǎn)換成黑白二值圖像。如果圖像中某像素的灰度值小于該閥值,則將該像素的灰度值設(shè)為0,否則灰度值設(shè)為255。</p><p>  設(shè)置閥值為100的閥值變換前后的圖像如圖5-9所示:</p><p>  圖6-9閥值變換前后圖</p><p><b>  灰度拉伸</b></p>&l

87、t;p>  灰度拉伸是分段進(jìn)行線性變換,可以更加靈活的控制輸出灰度直方圖的分布,它可以有選擇的拉伸某段灰度區(qū)間以改善輸出圖像。如果一幅圖像灰度集中在較暗的區(qū)域而導(dǎo)致圖像偏暗,可以用灰度拉伸功能來(lái)拉伸(斜率>1)物體灰度區(qū)間一改善圖像;同樣如果灰度集中在較亮的區(qū)域而導(dǎo)致圖像偏亮,也可用灰度拉伸功能來(lái)壓縮(斜率<1)物體灰度區(qū)間來(lái)改善圖像質(zhì)量。</p><p>  實(shí)現(xiàn)灰度拉伸的算法如下:</

88、p><p>  BOOL CMyDIB::GrayStretch(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, </p><p>  BYTE bX1, BYTE bY1, BYTE bX2, BYTE bY2)</p><p>  {unsigned char*lpSrc;// 指向源圖像的指針</p>

89、<p>  LONGi;LONGj;// 循環(huán)變量</p><p>  BYTEbMap[256];// 灰度映射表</p><p>  LONGlLineBytes;// 圖像每行的字節(jié)數(shù)</p><p>  lLineBytes = WIDTHBYTES(lWidth * 8);// 計(jì)算圖像每行的字節(jié)數(shù)&

90、lt;/p><p>  // 計(jì)算灰度映射表</p><p>  for (i = 0; i <= bX1; i++){</p><p>  if (bX1 > 0) {// 判斷bX1是否大于0(防止分母為0)bMap[i] = (BYTE) bY1 * i / bX1;</p><p><b>  

91、}</b></p><p>  else{ bMap[i] = 0;}</p><p><b>  }</b></p><p>  for (; i <= bX2; i++){</p><p>  if (bX2 != bX1){ // 判斷bX1是否等于bX2(防止分母為0)</p

92、><p>  bMap[i] = bY1 + (BYTE) ((bY2 - bY1) * (i - bX1) / (bX2 - bX1));</p><p><b>  }</b></p><p>  else{ bMap[i] = bY1;}</p><p><b>  }</b></p&g

93、t;<p>  for (; i < 256; i++){</p><p>  if (bX2 != 255){ // 判斷bX2是否等于255(防止分母為0)</p><p>  bMap[i] = bY2 + (BYTE) ((255 - bY2) * (i - bX2) / (255 - bX2));</p><p><

94、;b>  }</b></p><p>  else{ bMap[i] = 255; }</p><p><b>  }</b></p><p>  for(i = 0; i < lHeight; i++){// 每行</p><p>  for(j = 0; j < lWidth;

95、j++){// 每列</p><p>  // 指向DIB第i行,第j個(gè)象素的指針</p><p>  lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;// 計(jì)算新的灰度值</p><p>  *lpSrc = bMap[*lpSrc];</p><

96、p><b>  }}</b></p><p>  return TRUE;</p><p><b>  }</b></p><p>  灰度拉伸前后如圖6-10所示:</p><p>  圖6-10灰度拉伸圖</p><p>  系統(tǒng)圖像的幾何變換是指原始圖像按照需要

97、產(chǎn)生大小、形狀和位置的變化。使圖像處理和分析的基礎(chǔ)內(nèi)容之一,它不僅提供了產(chǎn)生某些特殊效果圖像的可能,而且可使圖像處理和分析的程序的簡(jiǎn)單化,特別是當(dāng)圖像具有一定得規(guī)律時(shí),一個(gè)圖像可以由另一個(gè)圖像通過(guò)幾何變換來(lái)實(shí)現(xiàn)。</p><p>  圖像鏡像變換不改變圖像的形狀。鏡像變換分為兩種:一種是水平鏡像,另一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心鏡像進(jìn)行對(duì)換,圖像的垂直鏡像操作是

98、將圖像上半部分和下半部分以圖像水平中軸線為中心鏡像進(jìn)行對(duì)換。</p><p>  鏡像變換效果如圖6-11所示:</p><p>  圖6-11鏡像變換效果圖</p><p>  圖像旋轉(zhuǎn)是以圖像中心為中心旋轉(zhuǎn)60度DIB圖像效果如圖6-12所示:</p><p>  圖6-12旋轉(zhuǎn)效果圖</p><p>  圖像的形

99、狀變換(縮放)</p><p>  假設(shè)圖像X軸方向縮放比率fx,y軸方向縮放比率是fy,那么原圖中點(diǎn)(x0,y0)對(duì)應(yīng)于新圖中的點(diǎn)(x1,y1)的轉(zhuǎn)換矩陣為:</p><p>  圖6-12 圖像形狀變換矩陣圖</p><p>  例如,當(dāng)fx = fy = 0.5時(shí),圖像被縮到一半大小,此時(shí)縮小后圖像中的(0,0)像素,(0,1)像素對(duì)應(yīng)于原圖中的(0,2)像素

100、,(1,0)像素對(duì)應(yīng)于原圖中的(2,0)像素,以此類推。在原圖基礎(chǔ)上,每行隔一個(gè)像素取一點(diǎn),每隔一行進(jìn)行操作。同理fx=fy=2時(shí),圖像放大2 倍,放大后圖像中的(0,0)像素對(duì)應(yīng)于原圖的(0,0)像素;(0,1)像素對(duì)應(yīng)于原圖中的(0,0.5),該像素不存在,可以近似為(0,0)也可近似為(0,1),(0,2)像素對(duì)應(yīng)于原圖中的(0,1)像素,以此類推。其實(shí)是將原圖每行中的像素重復(fù)取值一遍,然后每行重復(fù)一次。</p>&

101、lt;p>  圖像參數(shù)設(shè)置及效果圖如圖6-13所示:</p><p><b>  圖6-13圖像縮放</b></p><p>  目前,圖像的正交變換被廣泛地運(yùn)用于圖像特征提取、圖像增強(qiáng)、圖像復(fù)原、圖像壓縮的領(lǐng)域。而這一部分主要是圖像的頻域處理方法,把圖像信號(hào)從空間域變換到頻域,可以從另一個(gè)角度來(lái)分析圖像信號(hào)的特性。圖像的頻域處理最突出的特點(diǎn)是其運(yùn)算速度高,并可

102、采用已有的二位數(shù)字濾波技術(shù)進(jìn)行所需的各種圖像處理,因此得到了廣泛的應(yīng)用。數(shù)字圖像的頻域處理最關(guān)鍵的是變換處理,即首先將圖像從空間域變換到頻域,然后進(jìn)行各種處理,再將所得的結(jié)果進(jìn)行逆變換,從頻域在變換到空間域,從而達(dá)到圖像處理的目的。</p><p>  數(shù)字圖像的頻域處理主要用三種應(yīng)用:1.利用某些頻域變換可以從圖像中提取圖像的特征;2. 利用圖像頻域處理可實(shí)現(xiàn)圖像的高效壓縮編碼;3.減小計(jì)算維數(shù),使計(jì)算運(yùn)算次數(shù)

103、大大減少,從而提高圖像的處理速度。</p><p>  傅里葉變換、離散余弦變換的處理效果對(duì)比如圖5-14所示:</p><p>  圖5-14正交變換效果圖</p><p>  6.4圖像的增強(qiáng)和復(fù)原</p><p>  1)圖像增強(qiáng)的目的是改善圖像的視覺(jué)效果,或者使圖像更適合于人或機(jī)器進(jìn)行分析處理。通過(guò)圖像增強(qiáng),可以減少圖像中的噪聲,提高

104、目標(biāo)于背景的對(duì)比度,也可以強(qiáng)調(diào)或抑制圖像中的某些細(xì)節(jié)。</p><p>  模版操作是數(shù)字圖像處理中經(jīng)常用到的一種運(yùn)算方式,圖像的平滑、銳化及下部分的圖像邊緣檢測(cè)都要用到模版操作。</p><p>  圖像平滑是一種實(shí)用的數(shù)字圖像處理技術(shù),主要的目的是為了減少圖像的噪聲。一般情況下,在空間域內(nèi)可以用領(lǐng)域平均來(lái)減少噪聲;在頻率域,由于噪聲頻譜通常所在高頻段,因此可以采用各種形式的低通濾波的辦

105、法來(lái)減少噪聲。</p><p>  平滑模版的思想是通過(guò)一點(diǎn)和周圍幾點(diǎn)的運(yùn)算來(lái)除去突然變化的點(diǎn),從而濾掉一定的噪聲,但圖像有一定的模糊。</p><p>  中值波濾是一種非線性的信號(hào)處理方法,中值濾波器在1971年由J.w.Jukey首先提出并應(yīng)用在一維信號(hào)處理技術(shù)中,后來(lái)二維圖像信號(hào)處理技術(shù)所引用。中值濾波在一定的條件下可以克服線性濾波器如最小均方濾波和均值濾波等帶來(lái)的圖像細(xì)節(jié)模糊,而

106、且對(duì)濾除脈沖干擾及圖像掃描噪聲最為有效。</p><p>  中值波濾一般采用一個(gè)含有奇數(shù)個(gè)點(diǎn)的滑動(dòng)窗口,將窗口中個(gè)點(diǎn)灰度值的中值來(lái)代替指定點(diǎn)的灰度值。對(duì)于奇數(shù)個(gè)元素,中值是按大小排序后,中間的數(shù)值;對(duì)于偶數(shù)個(gè)元素,中值是指排序后中間兩個(gè)元素灰度值的平均值。</p><p>  效果圖如圖6-15所示:</p><p>  圖6-15中值濾波效果圖</p>

107、;<p>  圖像銳化處理的目的是使模糊的圖像變得更加清晰起來(lái),增強(qiáng)圖像的邊緣等細(xì)節(jié)。圖像銳化一般有兩種方法:一種是微分法,另一種是高通濾波法。而本數(shù)字圖像處理系統(tǒng)只是實(shí)現(xiàn)了兩種常用的微分銳化方法:梯度銳化和拉普拉斯銳化。</p><p>  梯度銳化閥值的為50,兩種方法的處理效果圖如圖6-16所示:</p><p>  圖6-16圖象銳化效果圖</p>&l

108、t;p>  2)圖像復(fù)原和圖像增強(qiáng)有類似的地方,都是為了改善圖像。但是它們又有明顯的不同,圖像復(fù)原是試圖利用退化過(guò)程的先驗(yàn)知識(shí)使已退花的圖像恢復(fù)本來(lái)面目,即根據(jù)退化的原因,分析引起退化的環(huán)境因素,建立相應(yīng)的數(shù)學(xué)模型,并沿著使圖像降質(zhì)的逆過(guò)程恢復(fù)圖像。由于引起圖象退化的因素眾多而且性質(zhì)不同,為了描述圖像退化過(guò)程所建立的數(shù)學(xué)模型往往多種多樣,而恢復(fù)的質(zhì)量標(biāo)準(zhǔn)也往往存在差異性,因而圖像恢復(fù)是一個(gè)復(fù)雜的數(shù)學(xué)過(guò)程,圖像的復(fù)原的方法、技術(shù)也各

109、不相同。</p><p><b>  7 系統(tǒng)調(diào)試</b></p><p>  由于本系統(tǒng)只是實(shí)現(xiàn)了灰度圖的處理,所以如果處理真彩色位圖時(shí)會(huì)有以下提示:目前系統(tǒng)只支持256位圖的處理如圖7-1所示:</p><p><b>  圖7-1出錯(cuò)圖面</b></p><p>  由于開(kāi)始對(duì)Visual C

110、++的編譯環(huán)境并不是很了解,經(jīng)常會(huì)出現(xiàn)內(nèi)存訪問(wèn)錯(cuò)誤的提示。如圖7-2所示:</p><p>  圖7-2出錯(cuò)提示界面</p><p>  例如在對(duì)圖像平滑對(duì)話框設(shè)置時(shí),在resource.h出現(xiàn)了漏定義現(xiàn)象:</p><p>  #define IDC_EDIT_V19 1038</p><p>  #d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論