2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科生畢業(yè)論文</b></p><p> 題 目多功能圖像瀏覽器制作 </p><p> 系 別</p><p> 班 級 </p><p> 姓 名

2、 </p><p> 學(xué) 號 </p><p> 答辯時(shí) </p><p><b>  目 錄</b></p><p><b>  摘要1</b></p&

3、gt;<p>  1 多功能圖像瀏覽器概述3</p><p><b>  1.1 概念3</b></p><p><b>  1.2 背景3</b></p><p>  1.3 國內(nèi)外發(fā)展現(xiàn)狀3</p><p>  1.4 市場前景4</p><p>

4、<b>  2 可行性分析4</b></p><p>  2.1 技術(shù)可行性4</p><p>  2.2 經(jīng)濟(jì)可行性5</p><p><b>  3 需求分析5</b></p><p>  3.1 功能需求5</p><p>  3.2 性能需求5</p

5、><p>  4 系統(tǒng)技術(shù)原理5</p><p>  4.1 圖像編碼5</p><p>  4.2 圖像空間變換6</p><p>  4.2.1 圖像平移7</p><p>  4.2.2 圖像旋轉(zhuǎn)7</p><p>  4.2.3 圖像縮放8</p><p>

6、;  4.3 圖像色彩8</p><p>  4.3.1 Bitmap對象8</p><p>  4.3.2 圖像顏色值得提取9</p><p>  4.3.3 圖像顏色設(shè)定與重顯9</p><p><b>  5 系統(tǒng)設(shè)計(jì)10</b></p><p>  5.1 圖像處理變換流程10

7、</p><p>  5.2 系統(tǒng)軟件結(jié)構(gòu)10</p><p>  5.3 功能模塊10</p><p>  5.4 系統(tǒng)開發(fā)環(huán)境13</p><p>  5.4.1 硬件環(huán)境13</p><p>  5.4.2 軟件環(huán)境13</p><p><b>  6 系統(tǒng)實(shí)現(xiàn)13&

8、lt;/b></p><p>  6.1 瀏覽模塊13</p><p>  6.1.1 圖像打開13</p><p>  6.1.2 圖像放大縮小14</p><p>  6.1.3 圖像旋轉(zhuǎn)15</p><p>  6.1.4 圖像平移17</p><p>  6.1.5 其他

9、功能18</p><p>  6.2.1 馬賽克19</p><p>  6.2.2 百葉窗20</p><p>  6.3 圖像處理模塊21</p><p>  6.3.1 特色處理21</p><p>  6.3.2 彩色圖像24</p><p>  6.3.3 圖像壓縮26&

10、lt;/p><p>  6.3.4 圖像格式轉(zhuǎn)換26</p><p>  6.3.5 墻紙?jiān)O(shè)置27</p><p><b>  7 軟件測試27</b></p><p>  7.1 測試原理與方法27</p><p>  7.2 功能測試27</p><p>  7.

11、3 分析與結(jié)論29</p><p>  8 重點(diǎn)難點(diǎn)及問題解決29</p><p>  8.1 重點(diǎn)問題及解決29</p><p>  8.2 難點(diǎn)問題及解決29</p><p><b>  9 結(jié)論29</b></p><p>  9.1 系統(tǒng)特色29</p><

12、p>  9.2 下一步展望30</p><p><b>  參考文獻(xiàn)31</b></p><p><b>  謝辭33</b></p><p>  多功能圖像瀏覽器制作</p><p>  張凡 指導(dǎo)教師:羅江巖</p><p>  摘要:圖像瀏覽器是日常圖

13、像應(yīng)用中必可少的應(yīng)用軟件之一,目前市場上大多數(shù)采用ACDSee圖像瀏覽器。而此類瀏覽器在一些圖像的支持方面還有有一定的問題。本文首先介紹了多功能圖像瀏覽器的應(yīng)用現(xiàn)狀和前景,然后主要介紹了采用Visual Basic.Net程序設(shè)計(jì)語言來開發(fā)多功能圖片瀏覽器的開發(fā)過程,詳細(xì)介紹了圖像瀏覽器功能模塊的實(shí)現(xiàn)。實(shí)現(xiàn)的主要功能有:圖像瀏覽、旋轉(zhuǎn)、格式轉(zhuǎn)換、拷貝、刪除、粘貼、剪切、打印、特效處理以及圖像壓縮和快捷鍵鍵盤控制,此瀏覽器支持多種圖像格式

14、,包括GIF、JPG、BMP、ICO等。實(shí)現(xiàn)了了Visual Basic.Net中利用GetPixel()方法和SerPixl()方法來實(shí)現(xiàn)圖像特色處理功能。最后本文通過功能測試表明,本系統(tǒng)在對圖像的色彩處理和圖像的格式處理方面具有一定的特色,系統(tǒng)有一定的實(shí)用價(jià)值。</p><p>  關(guān)鍵詞:圖像控制;圖像瀏覽;色彩處理;格式轉(zhuǎn)換;Visual Basic.Net;GetPixel;SetPixel</p

15、><p>  Multi-Function Image Browser Development</p><p>  Zhang Fan Tutor:Luo Jiangyan</p><p>  Abstrct: Image browser is daily image application will be less application software of

16、, at present the majority of the market by using ACDSee image browser. While the browser in some image support still has some problems. This article first introduced the multifunctional image viewer application status an

17、d trend, then introduces the Visual Basic.Net programming language to develop multifunctional picture browser development process, introduces in detail the image browser function module realizat</p><p>  Key

18、 words: Image Control; Image Browsing; Format Conversion; Image Color; Visual Basic.Net; GetPixel; SetPixel   隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)的更新速度不斷提高,人們的思想文化素質(zhì)的提高,對圖像的要求也越來越高。因此把原始圖像與計(jì)算機(jī)結(jié)合起來,從而創(chuàng)作出許多更加完美的圖像,滿足人們的需求。計(jì)算機(jī)圖像處理,是指利用計(jì)算機(jī)對圖像進(jìn)行一

19、系列加工,以便獲得人們所需要的效果。</p><p>  圖像是人類獲取和交換信息的主要來源,人類感知外界信息,80%以上是通過視覺得到的。因此,圖像處理的應(yīng)用領(lǐng)域必然涉及到人類生活和工作的方方面面[1]。</p><p>  1 多功能圖像瀏覽器概述</p><p><b>  1.1 概念</b></p><p> 

20、 圖像瀏覽器是指能夠?qū)崿F(xiàn)圖像的顯示和基本變化的一種瀏覽器。</p><p>  多功能圖像瀏覽器即能夠?yàn)g覽圖片并實(shí)現(xiàn)圖像的一些基本變化,如剪切、放大縮小、旋轉(zhuǎn)。還能夠?qū)崿F(xiàn)對一些簡單視頻的播放和對圖像增加馬賽克等一些高級的變化的圖像瀏覽器。</p><p><b>  1.2 背景</b></p><p>  從1991年開始開發(fā),1992年正式

21、完成的Erwise瀏覽器才是世界上首款圖形界面的瀏覽器。Erwise瀏覽器于1991年由Kim Nyberg等四名在赫爾辛基理工大學(xué)上學(xué)的學(xué)生開發(fā),1992年正式完工。在當(dāng)時(shí),Erwise是唯一一款具備文本搜索、可載入多個(gè)Web頁面的瀏覽器,瀏覽器基于X-Windows平臺。但是由于功能和技術(shù)方面的缺陷以及對市場的把握問題,使得這款瀏覽器過早的推出市場的平臺[2]。</p><p>  維基百科上顯示,當(dāng)今世界上

22、絕大多數(shù)人認(rèn)為1993年正式發(fā)布Mosaic瀏覽器是世界上首款圖形界面的瀏覽器,也就是后來的Netscape瀏覽器,曾經(jīng)掀起了互聯(lián)網(wǎng)的一股大的風(fēng)波。</p><p>  1.3 國內(nèi)外發(fā)展現(xiàn)狀</p><p>  現(xiàn)如今圖像瀏覽器技術(shù)已然非常成熟,市面上也出想了大量的各種類型的圖像瀏覽器,如ACDSee、美圖看看等。其中最知名的要數(shù)由ACD Systems這個(gè)全球圖像管理和技術(shù)圖像軟件頂尖

23、的公司開發(fā)的ACDSee圖像瀏覽器。</p><p>  在國外,ACD Systems 軟件公司于1989年合并成立,并于1993年4月28日更名,跨入CD-ROM軟件開發(fā)行業(yè)。公司明白,如果ACD Systems公司開發(fā)出市場上最快的JPEG解碼軟件,它將在市場中占有技術(shù)領(lǐng)先地位。經(jīng)過深入的研發(fā),ACDSee如今迅速崛起,成為圖像瀏覽和管理的主導(dǎo)軟件。ACDSee與Mosaic瀏覽器綁定,可用于JPEG解碼和

24、瀏覽。ACDSee作為共享軟件迅速占領(lǐng)全球網(wǎng)絡(luò),全球擁有超過2500萬的用戶。ACD Systems 每月軟件的下載量近100萬[3]。</p><p>  在國內(nèi),知名圖像瀏覽器美圖看看是目前最快的萬能看圖軟件,完美兼容所有主流圖片格式,擁有簡潔干凈的界面,用戶好評度極高。美圖看看采用自主研發(fā)的圖像引擎,專門針對數(shù)碼照片優(yōu)化,使大圖片的瀏覽性能全面提升!</p><p>  但是在大多數(shù)

25、圖像瀏覽器在對圖像格式的支持力度上還有待加強(qiáng),市場上多數(shù)是只能支持某些種類的圖片格式,大多數(shù)格式無法支持,而且一些特殊功能無法滿足客戶的需求還有待加強(qiáng)。</p><p><b>  1.4 市場前景</b></p><p>  圖像瀏覽器的地位越來越重要,我自己現(xiàn)在打開電腦以后,任何圖像的瀏覽都需要瀏覽器。我們看到無論是國際上,還是國內(nèi)主要的廠商,其實(shí)也都看到了這一點(diǎn)

26、。最近,我們發(fā)現(xiàn)這一兩年,圖像瀏覽器瀏覽器,國外的包括ACDSee,市場做得最多的。 </p><p>  國內(nèi)瀏覽器方面應(yīng)該是美圖看看做得比較好的,之前一直也有很多自己的創(chuàng)新。之前美圖看看自己做,還沒有明顯競爭。但是最近一段時(shí)間我們發(fā)現(xiàn),大的互聯(lián)網(wǎng)企業(yè),包括百度、騰訊、阿里、盛大,我們都聽說已經(jīng)在考慮進(jìn)一步開發(fā)圖像瀏覽器這個(gè)重要產(chǎn)品。</p><p>  由此我們可以看到,多功能圖像瀏覽

27、器的開發(fā)前景是很良好的。</p><p><b>  2 可行性分析</b></p><p><b>  2.1 技術(shù)可行性</b></p><p>  Visual Basic.Net編程語言是微軟推出的最新版本。過去只有C++才能夠使用的操作系統(tǒng)的高級功能,現(xiàn)在Visual Basic也同樣可以使用。另外,Visual

28、 Basic.Net還擴(kuò)展了圖像處理功能,使得大部分圖像處理功能可以在VB下快速實(shí)現(xiàn)。</p><p>  綜上所述,使用Visual Basic.Net開發(fā)多功能圖像瀏覽器在技術(shù)上可行。</p><p><b>  2.2 經(jīng)濟(jì)可行性</b></p><p>  考慮一項(xiàng)產(chǎn)品是否在經(jīng)濟(jì)上可行需要考慮一下幾個(gè)方面:基礎(chǔ)投資、直接間接受益、投資收

29、益率和投資回收期。</p><p>  本系統(tǒng)在開發(fā)的過程中只需要.Net開發(fā)平臺作為開源,在投資方面沒有要求,所以在經(jīng)濟(jì)上也是可行的。</p><p><b>  3 需求分析</b></p><p><b>  3.1 功能需求</b></p><p>  該系統(tǒng)的功能主要集中在菜單欄和工具欄中

30、,菜單欄中所體現(xiàn)的都是處理圖像的功能。包括以下方面:</p><p>  1)圖像打開、保存、關(guān)閉和退出等功能;</p><p>  2)對圖像進(jìn)行復(fù)制、粘貼、剪切、翻轉(zhuǎn)。其中翻轉(zhuǎn)包括:水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、逆時(shí)針90度旋轉(zhuǎn)和順時(shí)針90度旋轉(zhuǎn);</p><p>  3)可以實(shí)現(xiàn)上一張、下一張、放大、縮小等基本處理;</p><p>  4)過濾

31、圖像,包括:銳化、浮雕、柔化、霧化、油畫等;</p><p>  5)對彩色圖像進(jìn)行二值化變換,包括:黑白處理和輪廓提取;</p><p>  6)可以對圖像進(jìn)行格式的轉(zhuǎn)化和壓縮;</p><p>  7)可以進(jìn)行圖像顯示特效的變換,包括:百葉窗、馬賽克等;</p><p>  8)可以實(shí)現(xiàn)簡單音頻、視頻的播放。</p><

32、;p>  工具欄中的功能主要體現(xiàn)基本變換,菜單欄實(shí)現(xiàn)各種圖像效果的處理。</p><p><b>  3.2 性能需求</b></p><p>  本系統(tǒng)開發(fā)之后在進(jìn)行工作的時(shí)候處理時(shí)間不能過慢,可用時(shí)間長,便于操作,有邏輯層次感,開發(fā)軟件美觀。在對較大圖像處理的時(shí)候保證內(nèi)存的充足,使其在對圖像處理的過程中不會(huì)出現(xiàn)內(nèi)存不足現(xiàn)象。 </p><

33、p><b>  4 系統(tǒng)技術(shù)原理</b></p><p><b>  4.1 圖像編碼</b></p><p>  1988年在圖像編碼的發(fā)展歷史中是極為重要的一年。四十年研究成果的集中表現(xiàn):靜止圖像壓縮的JPEG建議[4]之原理框圖已基本建立。重要專著[5]出版發(fā)行。二十世紀(jì)40年代末的Shannon信息論使圖像編碼基本原理的起源[6],

34、該理論的指導(dǎo)下出現(xiàn)了一批編碼方法:Huffman編碼、算數(shù)編碼、字典編碼[7]等。</p><p>  在本系統(tǒng)中涉及到了圖像的壓縮編碼,圖像編碼的研究內(nèi)容是圖像數(shù)據(jù)壓縮。在滿足一定圖像質(zhì)量的條件下用盡可能少的數(shù)據(jù)量來表示圖像。</p><p>  在VB.Net,System.Drawing.Imaging.Encoder類封裝了一個(gè)全局唯一標(biāo)示符(GUID),它表示圖像解碼器參數(shù)的類別

35、。Encoder對象通??梢砸詤?shù)形式傳遞到GDI+其他圖像處理方法中控制其行為,例如,本程序使用Encoder類的Quality字段控制圖像質(zhì)量。</p><p>  本系統(tǒng)在壓縮式通過圖像質(zhì)量的降低實(shí)現(xiàn)。在使用Encoder類的Quality字段控制圖像質(zhì)量時(shí),應(yīng)該使用System.Drawing.image類的save()方法以下重載形式圖像文件格式。聲明如下:</p><p>  

36、Overloads Public Sub Save(ByVal filename as String,ByVal encoder as ImageCodecInfo,ByVal encoderParams as EncoderParameters )</p><p>  其中,參數(shù)ByVal filename As String是包含要將此Image對象保存為文件的名稱;參數(shù)ByVal encoder As Im

37、ageCodeInfo表示Image對象的ImageCoderInfo對象;參數(shù)byVal encoderParams As EncoderParametes表示一個(gè)EncoderParameters,它制定圖像編碼器使用的參數(shù)。</p><p>  4.2 圖像空間變換</p><p>  圖像的基本算法涉及到了圖像的一些基本的變換,如平移、縮放和旋轉(zhuǎn)等。</p><

38、p>  一個(gè)幾何運(yùn)算需要兩個(gè)獨(dú)立的算法。首先,需要一個(gè)算法來定義空間變換本身,用它描述每一個(gè)像素如何從其初試位置“移動(dòng)”到終止位置,即每個(gè)像素的“運(yùn)動(dòng)”;同時(shí),還需要一個(gè)用于灰度級插值的算法,這是因?yàn)?,在一般情況下,輸入圖像的位置坐標(biāo)(x,y)為整數(shù),而輸出圖像的位置坐標(biāo)為非整數(shù),反過來也是如此[8]。</p><p>  如果用f(x,y)來表示輸入圖像的灰度函數(shù),用g(x,y)來表示輸出圖像的灰度函數(shù),

39、那就可以方便的用數(shù)學(xué)方法來描述輸入,輸出圖像點(diǎn)之間的空間關(guān)系。幾何運(yùn)算的一般定義為如公式4-1所示:</p><p>  這里如公式4-2所示</p><p>  唯一的描述了空間變換,若他們是連續(xù)的,則幾何變換保持圖形的連通性。如果令公式4-2中</p><p>  其中ct-sd不為0,就得到簡單的空間幾何變換。用矩陣表示如公式4-4所示:</p>

40、<p>  當(dāng)c,d,s,t,e,r取某些特殊值時(shí),就可以得到常用的圖像平移,旋轉(zhuǎn)和縮放的變換。</p><p>  4.2.1 圖像平移</p><p>  圖像的平移變換如公式4-5所示:</p><p>  將圖像上的點(diǎn)(,)移動(dòng),之后得到新的坐標(biāo)點(diǎn)(,)進(jìn)行圖像的平移變換。在本程序中在圖像超出屏幕大小,或者向移動(dòng)圖像的時(shí)候可以進(jìn)行鼠標(biāo)左鍵按下拖動(dòng)

41、進(jìn)行平移,其實(shí)現(xiàn)原理為記錄鼠標(biāo)移動(dòng)位置,然后讓圖像的頂點(diǎn)按照鼠標(biāo)移動(dòng)變換進(jìn)行變換。</p><p>  4.2.2 圖像旋轉(zhuǎn)</p><p>  圖像的旋轉(zhuǎn)變換如公式4-6所示:</p><p><b>  (公式4-6)</b></p><p>  以原點(diǎn)為中心將點(diǎn)(,)旋轉(zhuǎn)角度而得到新的坐標(biāo)(,)。在本程序中采用VB

42、.Net中的RotateFlip方法進(jìn)行圖像的旋轉(zhuǎn)。</p><p>  4.2.3 圖像縮放</p><p>  圖像的縮放如公式4-7所示:</p><p><b>  (公式4-7)</b></p><p>  以原點(diǎn)為中心將圖形的個(gè)坐標(biāo)點(diǎn)分別乘以c,t得出新的坐標(biāo)點(diǎn)可對圖像</p><p>

43、;<b>  進(jìn)行放大縮小。</b></p><p><b>  4.3 圖像色彩</b></p><p>  圖像的顏色是由三種基本顏色,即紅(R)、綠(G)、藍(lán)(B)有機(jī)組合而成的,稱為三基色。每種基色可取0到255的值,因此由三基色可組合成(256*256*256)1677萬種顏色[9][10],每種顏色都有其對應(yīng)的R、G、B值。例如,常見

44、的7種顏色及其對應(yīng)的R、G、B值如圖4-1所示。</p><p>  對一幅彩色圖像的各像素值進(jìn)行變換并依變換后的新像素值重新顯示,則可以實(shí)現(xiàn)不同的顯示效果[11]。如表4-1所示。</p><p>  表4-1 常見的7種顏色及其RGB值</p><p>  4.3.1 Bitmap對象</p><p>  對圖像文件進(jìn)行處理的類主要

45、為Bitmap類,Bitmap類屬于System.Drawing命名空間,該命名空間提供了對GDI+基本圖形功能的訪問。此類封裝GDI+位圖,此位圖由圖像及其屬性的像素?cái)?shù)據(jù)組成。Bitmap對象是Bitmap類的實(shí)例,用于處理由像素?cái)?shù)據(jù)定義的圖像,此對象的常用方法和屬性如表4-2所示:</p><p>  表4-2 Bitmap的常用方法和屬性</p><p>  4.3.2 圖像顏色值

46、得提取</p><p>  對圖像進(jìn)行處理時(shí)要使用GetPixel方法獲取此Bitmap中指定像素的顏色。這些顏色是由(R,G,B)三基色和(A)透明度組成的。獲取指定像素顏色值使用GetPixel方法,格式為</p><p>  Dim tuxing As System.Drawing.Bitmap</p><p>  c=tuxing.GetPixel(i,j)

47、</p><p>  其中,tuxing表示變量名,(i,j)為取得顏色的坐標(biāo)位置,GetPixel方法將指定位置的顏色值返回一個(gè)長整形的整數(shù)。</p><p>  4.3.3 圖像顏色設(shè)定與重顯</p><p>  重新設(shè)置圖像的像素使用Color.FromArgb方法。方法是從4個(gè)8位ARGB分量值創(chuàng)建Color結(jié)構(gòu)。盡管此方法允許為每個(gè)分量傳遞32位值,單每個(gè)

48、分量的值僅限于8位,格式為:</p><p>  Overloads Public Shared Function FromArgb(Integer,Integer,Integer,Integer)As Color</p><p>  而重顯圖像則采用SetPixel方法,用法如下:</p><p>  c=c.FromArgb(a,rr,rr,rr)</p&

49、gt;<p>  tuxing.Setpixel(i,j,c)</p><p><b>  5 系統(tǒng)設(shè)計(jì)</b></p><p>  5.1 圖像處理變換流程</p><p>  在本系統(tǒng)中有總體流程圖,系統(tǒng)功能開發(fā)按照流程圖實(shí)現(xiàn),如圖5-1所示。</p><p>  圖5-1 系統(tǒng)流程圖</p&g

50、t;<p>  5.2 系統(tǒng)軟件結(jié)構(gòu)</p><p>  通過對需求分析階段的總結(jié)可以看出系統(tǒng)的總體結(jié)構(gòu),如圖5-2所示。</p><p>  圖5-2 軟件結(jié)構(gòu)圖</p><p><b>  5.3 功能模塊</b></p><p>  一個(gè)完整的圖像瀏覽器要有圖像的各種方式瀏覽,包括特效和特色瀏覽以及

51、形狀的變換,本系統(tǒng)三個(gè)功能模塊如圖5-3所示:</p><p>  圖5-3 系統(tǒng)總體功能模塊</p><p>  1)圖像瀏覽:上一張、下一張、旋轉(zhuǎn)、復(fù)制、剪切、刪除等。</p><p>  此模塊主要為圖像的各種方式的瀏覽,包括打開、保存和打印等功能的實(shí)現(xiàn),此模塊是本系統(tǒng)中工作量最大的模塊,其中主要涉及到圖像的空間變換算法,如圖5-4所示:</p>

52、<p>  圖5-4 圖像瀏覽功能</p><p>  2)圖像特效:馬賽克顯示、飛入和百葉窗</p><p>  涉及到的技術(shù)主要為使用SetPixel為圖像設(shè)置新的像素點(diǎn)如圖5-5所示:</p><p>  圖5-5 圖像特效功能</p><p>  3)圖像處理:色彩的處理和格式的處理</p><p

53、>  在此模塊中涉及到的圖像算法很多,主要包括圖像的壓縮編碼、格式轉(zhuǎn)換以及圖像的彩色處理如圖5-5所示:</p><p>  圖5-6 圖像處理功能</p><p>  5.4 系統(tǒng)開發(fā)環(huán)境</p><p>  5.4.1 硬件環(huán)境</p><p>  開發(fā)硬件環(huán)境CPU采用1*2GB以上,內(nèi)存采用512MB以上,硬盤采用300GB容

54、量以上。</p><p>  5.4.2 軟件環(huán)境</p><p>  首先安裝Microsoft公司的IIS2000,然后再安裝Visual Studio.Net2003或者 Visual Studio.Net2005軟件。本系統(tǒng)的開發(fā)環(huán)境為Visual Basic2100,平臺為.Net4.0版本。(XP下安裝必須是專家版操作系統(tǒng))</p><p><b&

55、gt;  6 系統(tǒng)實(shí)現(xiàn)</b></p><p><b>  6.1 瀏覽模塊</b></p><p>  6.1.1 圖像打開</p><p>  在工具欄或者菜單欄中有圖像打開的選項(xiàng),其中主要使用FolderBroser控件和OpenFileDialog控件實(shí)現(xiàn)[12],如圖6-1所示。</p><p>&

56、lt;b>  其中關(guān)鍵代碼如下:</b></p><p>  file = FolderBrowser.SelectedPath & "\"</p><p><b>  ’獲取用戶路徑</b></p><p>  For Each foundImage As String In My.Compute

57、r.FileSystem.GetFiles(file,FileIO.SearchOption.SearchTopLevelOnly, "*.gif*", "*.jpg*", "*.bmp*", "*.png*", "*jpeg*")</p><p><b>  ’搜索目錄</b></p&

58、gt;<p><b>  i = i + 1</b></p><p>  ReDim Preserve filenames(i)</p><p><b>  ’重新定義數(shù)組大小</b></p><p>  filenames(i) = foundImage</p><p>  Call

59、 ShowPicture()</p><p><b>  ’顯示圖像</b></p><p>  圖6-1 打開圖片文件夾</p><p>  6.1.2 圖像放大縮小</p><p>  在本系統(tǒng)中沒有采用圖像編碼算法,只是簡單對圖片長寬進(jìn)行放大縮小,其中實(shí)現(xiàn)了鍵盤上下鍵控制大小變化的功能。如圖6-2、圖6-3和圖6

60、-4所示。</p><p>  圖6-2 圖像原始大小</p><p>  圖圖6-3 放大效果圖 圖6-4 縮小效果圖</p><p>  6.1.3 圖像旋轉(zhuǎn)</p><p>  圖像旋轉(zhuǎn)本程序采用.Net提供的RotateFlip方法進(jìn)行旋轉(zhuǎn)。方法介紹如表6-1所示[13]。</p>

61、;<p>  表6-1 RotateFlipType列舉型別</p><p>  其中關(guān)鍵代碼如下,這里只寫順時(shí)針90度旋轉(zhuǎn)和垂直翻轉(zhuǎn)</p><p>  Dim bmp As New Bitmap(PictureBox1.Image</p><p>  bmp.RotateFlip(RotateFlipType.Rotate90FlipNone)

62、</p><p>  ’指定不翻轉(zhuǎn)的270度旋轉(zhuǎn),即順時(shí)針90度旋轉(zhuǎn)</p><p>  PictureBox1.Image = bmp</p><p>  Dim bmp As New Bitmap(PictureBox1.Image)</p><p>  bmp.RotateFlip(RotateFlipType.Rotate180Fli

63、pNone) </p><p>  ’指定不翻轉(zhuǎn)的180度旋轉(zhuǎn),即垂直翻轉(zhuǎn)</p><p>  PictureBox1.Image = bmp</p><p>  如圖6-5、圖6-6、圖6-7和圖6-8所示。</p><p>  圖6-5 順時(shí)針90度效果圖 圖6-6 逆時(shí)針90度效果圖</p><p

64、>  圖6-7 垂直翻轉(zhuǎn)效果圖 圖6-8 水平翻轉(zhuǎn)效果圖</p><p>  6.1.4 圖像平移</p><p>  在圖像超出屏幕大小,或者向移動(dòng)圖像的時(shí)候可以進(jìn)行鼠標(biāo)左鍵按下拖動(dòng)進(jìn)行平移,其實(shí)現(xiàn)原理為記錄鼠標(biāo)移動(dòng)位置,然后讓圖像的頂點(diǎn)按照鼠標(biāo)移動(dòng)變換進(jìn)行變換,如圖6-9,圖6-10所示。</p><p><b>  

65、關(guān)鍵代碼如下:</b></p><p>  If (MouseMoveX <> 0) And (MouseMoveY <> 0) Then</p><p>  PictureBox1.Top = PictureBox1.Location.Y + MouseMoveY</p><p>  PictureBox1.Left = Pic

66、tureBox1.Location.X + MouseMoveX</p><p><b>  ’圖片移動(dòng)</b></p><p>  If (MouseDownOrUp = 1) Then</p><p><b>  ’鼠標(biāo)按下</b></p><p>  MouseMoveX = MouseX -

67、 OldMouseX</p><p>  MouseMoveY = MouseY - OldMouseY</p><p>  RedrawPicture()</p><p><b>  ’函數(shù)</b></p><p>  OldMouseX = MouseX</p><p>  OldMouseY

68、 = MouseY</p><p>  ’檢測鼠標(biāo)移動(dòng)情況,移動(dòng)坐標(biāo)獲得在MouseMove事件里面</p><p>  圖6-9 圖像原始位置 圖6-10 平移效果圖</p><p>  6.1.5 其他功能</p><p>  其他功能的實(shí)現(xiàn)如上一張、下一張則是讀取圖像文件數(shù)量,用filename()實(shí)

69、現(xiàn),以下為下一張圖像關(guān)鍵代碼:</p><p><b>  n = n + 1</b></p><p>  If n <= i Then</p><p>  If filenames(n) <> "" Then</p><p>  Call ShowPicture()</p&g

70、t;<p><b>  End If</b></p><p><b>  Else</b></p><p>  If (n - i) = 1 Then</p><p><b>  End If</b></p><p>  If (n - i) = 2 Then&l

71、t;/p><p><b>  n = 0</b></p><p>  If filenames(n) <> "" Then</p><p>  Call ShowPicture()</p><p>  幻燈片的播放則使用.Net里面的AutoPlayTimer控件。關(guān)鍵代碼如下</p&g

72、t;<p>  If (n >= 0) And (n < i) Then</p><p><b>  n = n + 1</b></p><p>  Call ShowPicture()</p><p>  ElseIf (n > i) Then</p><p><b>  n

73、= 0</b></p><p>  Call ShowPicture()</p><p><b>  End If</b></p><p>  If (n = i) Then</p><p><b>  n = n + 1</b></p><p><b>

74、;  End If</b></p><p>  6.2 圖像特效模塊</p><p><b>  6.2.1 馬賽克</b></p><p>  在許多需要保密的視頻鏡頭中,使用馬賽克處理鏡頭是比較常用的方式,馬賽克顯示圖像與柔化顯示圖像類似,不過它是通過圖像每個(gè)像素點(diǎn)附近及其本身9個(gè)像素點(diǎn)的RGB值的平均值取代這9個(gè)相熟點(diǎn)的RGB

75、值[14]。</p><p>  本程序使用.Net的System.Drawing.Bitmap類的GetPixel()方法獲取圖像的像素RGB值。然后使用SetPixel()方法為圖像設(shè)置新的像素點(diǎn)RGB值,從而實(shí)現(xiàn)馬賽克的效果。圖6-11為馬賽克效果圖。</p><p><b>  其中關(guān)鍵代碼如下:</b></p><p>  MyCol

76、or(0) = MyImage.GetPixel(i - 1, j - 1)</p><p>  MyColor(1) = MyImage.GetPixel(i - 1, j)</p><p>  MyColor(8) = MyImage.GetPixel(i + 1, j + 1)</p><p><b>  ……</b></p>

77、<p>  ’訪問周圍9個(gè)點(diǎn)的RGB值</p><p>  While (m < 9)</p><p>  rSum += MyColor(m).R</p><p>  gSum += MyColor(m).G</p><p>  bSum += MyColor(m).B</p><p><b

78、>  m += 1</b></p><p><b>  End While</b></p><p>  Dim MyNewColor As System.Drawing.Color = Color.FromArgb(255, CInt(rSum / 9), CInt(gSum / 9), CInt(bSum / 9))</p><

79、p>  ’用RGB的平均值作為當(dāng)前點(diǎn)的RGB值</p><p>  MyImage.SetPixel(i - 1, j - 1, MyNewColor)</p><p>  MyImage.SetPixel(i - 1, j, MyNewColor)</p><p>  MyImage.SetPixel(i + 1, j + 1, MyNewColor)<

80、;/p><p>  ’將計(jì)算后的RGB值回寫到位圖</p><p><b>  6.2.2 百葉窗</b></p><p>  百葉窗的顯示也為SetPixel的應(yīng)用,如圖6-12所示[15]。</p><p><b>  其中關(guān)鍵代碼如下:</b></p><p>  Dim

81、MyBmp As Bitmap = Me.PictureBox1.Image </p><p>  MyGraphics.Clear(Color.Gray)</p><p><b>  ,初始灰色</b></p><p>  Dim MyBitmap As Bitmap = Me.PictureBox1.Image.Clone()</p&

82、gt;<p>  Dim dh As Int16 = MyBitmap.Height / 20</p><p>  Dim dw As Int16 = MyBitmap.Width</p><p>  Dim MyPoint(20) As Point</p><p>  Dim y As Int16</p><p>  For

83、y = 0 To 20 - 1 Step 1</p><p>  MyPoint(y).X = 0</p><p>  MyPoint(y).Y = y * dh</p><p><b>  Next</b></p><p><b>  ,移動(dòng)</b></p><p>  b

84、itmap.SetPixel(MyPoint(j).X + k, MyPoint(j).Y + i, MyBitmap.GetPixel(MyPoint(j).X + k, MyPoint(j).Y + i))</p><p><b>  ,獲取像素</b></p><p>  圖6-11 馬賽克效果圖 圖6-12 百葉窗效果圖<

85、;/p><p>  6.3 圖像處理模塊</p><p>  6.3.1 特色處理</p><p>  包括銳化、浮雕、柔化、霧化、木刻、油畫等。</p><p>  1)銳化:所謂銳化顯示圖像就是通過增強(qiáng)高頻分量減少圖像中的模糊,因此又稱為高通濾波。在圖像處理中通常運(yùn)用一些數(shù)學(xué)算法,對圖像去除噪聲、強(qiáng)調(diào)或抽取輪廓特征等圖像空間的變換,可以實(shí)現(xiàn)圖

86、像的特殊效果的顯示[16]。</p><p>  常用的銳化處理模板是拉普拉斯模板,用該模板銳化處理后的圖像,輪廓線條將明顯增強(qiáng),不過此種方法在增強(qiáng)圖像邊緣的同時(shí)也增加了圖像的噪聲,并且對模板進(jìn)行運(yùn)算時(shí)要考慮溢出點(diǎn)的問題[17][18]。所謂溢出點(diǎn)問題就是大于255或小于0的像素點(diǎn)RGB的處理,將大于255的像素點(diǎn)按照255處理,小于0的像素點(diǎn)按照0處理。</p><p>  本程序中使用

87、.Net的System.Drawing.Bitmap類的GetPixel()方法獲取圖像的像素RGB值,然后根據(jù)拉普拉斯模板使用SetPixel()方法為圖像設(shè)置新的像素點(diǎn)RGB值,從而實(shí)現(xiàn)銳化顯示圖像的效果。圖6-13為銳化之后處理圖像。以下為本部分關(guān)鍵代碼:</p><p>  Dim pixel As Color</p><p>  Dim Laplacian() As Intege

88、r = {-1, -1, -1, -1, 9, -1, -1, -1, -1}</p><p><b>  ’拉普拉斯模板</b></p><p>  pixel = MyBitmap.GetPixel(x + row, y + col)</p><p>  r += pixel.R * Laplacian(Index)</p>

89、<p>  g += pixel.G * Laplacian(Index)</p><p>  b += pixel.B * Laplacian(Index)</p><p>  If (r > 255) Then</p><p><b>  r = 255</b></p><p><b>  

90、End If</b></p><p><b>  ’處理顏色溢出</b></p><p>  NewBitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b))</p><p>  2) 柔化:圖像柔化是出去圖像中點(diǎn)狀噪聲的一種有效方法。所謂柔化圖像,就是指圖像上任何一個(gè)像素點(diǎn)與其相鄰

91、像素點(diǎn)的顏色值的大小不會(huì)出現(xiàn)劇變的一種處理方法[19]。</p><p>  由于圖像柔化是將圖像上的每個(gè)像素點(diǎn)的RGB值用它附近及其本身的9個(gè)像素點(diǎn)的RGB值的平均值取代,結(jié)果會(huì)在成在去除噪聲的同時(shí)降低了圖像的對比度[20]。為了避免這一缺陷,可以通過引入權(quán)數(shù),從而在去除點(diǎn)狀噪聲的同時(shí)保留原圖像的對比度,即使用高斯模板。</p><p>  本程序使用.Net的System.Drawin

92、g.Bitmap類的GetPixel()方法獲取圖像的像素RGB值。然后根據(jù)高斯模板使用SetPixel()方法為圖像設(shè)置新的像素點(diǎn)RGB值,從而實(shí)現(xiàn)柔化的效果。圖6-14是柔化后的圖像。其中關(guān)鍵代碼如下:</p><p>  Dim pixel As Color</p><p>  Dim Gauss() As Integer = {1, 2, 1, 2, 4, 2, 1, 2, 1}&

93、lt;/p><p><b>  ’高斯模板</b></p><p>  pixel = MyBitmap.GetPixel(x + row, y + col)</p><p>  r += pixel.R * Gauss(Index)</p><p>  g += pixel.G * Gauss(Index)</p&g

94、t;<p>  b += pixel.B * Gauss(Index)</p><p>  NewBitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b))</p><p>  3) 光照:本程序使用.Net的System.Drawing.Bitmap類的GetPixel()方法獲取圖像的像素RGB值。然后使用SetPixel

95、()方法為圖像設(shè)置新的像素點(diǎn)RGB值,從而實(shí)現(xiàn)光照的效果。如圖6-15所示[21]為圖像光照效果圖。其中關(guān)鍵代碼如下:</p><p><b>  其中關(guān)鍵代碼如下:</b></p><p>  Dim MyImage As Bitmap = MyBmp.Clone(New RectangleF(0, 0,</p><p>  MyWidth,

96、 MyHeight), </p><p>  System.Drawing.Imaging.PixelFormat.DontCare)</p><p>  Dim MyCenter As New Point(MyWidth / 2, MyHeight / 2)</p><p>  Dim Radius As Integer = Math.Min(MyWidth /

97、2, MyHeight / 2)</p><p>  ’Radius為強(qiáng)光照射半徑,即光暈</p><p>  Dim MyPixel As Integer = 220.0F * (1.0F - MyLength / Radius)</p><p>  r = MyColor.R + CType(MyPixel, Integer)</p><p&

98、gt;  r = Math.Max(0, Math.Min(r, 255))</p><p>  g = MyColor.G + CType(MyPixel, Integer)</p><p>  g = Math.Max(0, Math.Min(g, 255))</p><p>  b = MyColor.B + CType(MyPixel, Integer)&l

99、t;/p><p>  b = Math.Max(0, Math.Min(b, 255))</p><p>  ’220亮度增加常量,該值越大光亮度越強(qiáng)</p><p>  Dim MyNewColor As Color = Color.FromArgb(255, r, g, b)</p><p>  MyImage.SetPixel(i, j,

100、MyNewColor)</p><p>  ’將增亮后的像素值寫回到位圖</p><p>  4)浮雕:一個(gè)圖像是有很多像素點(diǎn)構(gòu)成的,如果改變像素點(diǎn)的值就可以實(shí)現(xiàn)一些特殊的效果。在.Net中有System.Drawing.Bitmap封裝了GDI+位圖,此位圖有圖像圖像及其屬性的像素?cái)?shù)據(jù)組成,提供了很多的圖像處理方式,如圖6-16為浮雕效果圖。其中關(guān)鍵代碼如下:</p>&l

101、t;p>  For x As Integer = 0 To Width - 2 Step +1</p><p>  For y As Integer = 0 To Height - 2 Step +1</p><p>  Dim r, g, b As Integer</p><p><b>  r = 0</b></p>&

102、lt;p><b>  g = 0</b></p><p><b>  b = 0</b></p><p>  pixel1 = MyBitmap.GetPixel(x, y)</p><p>  pixel2 = MyBitmap.GetPixel(x + 1, y + 1)</p><p>

103、<b>  ’獲取像素值</b></p><p>  r = Math.Abs(CType(pixel1.R, Integer) - CType(pixel2.R, Integer) + 128</p><p>  g = Math.Abs(CType(pixel1.G, Integer) - CType(pixel2.G, Integer) + 128</p&

104、gt;<p>  b = Math.Abs(CType(pixel1.B, Integer) - CType(pixel2.B, Integer) + 128)</p><p>  If (r > 255) Then</p><p><b>  r = 255</b></p><p><b>  End If<

105、;/b></p><p><b>  ‘處理顏色溢出</b></p><p>  NewBitmap.SetPixel(x, y, Color.FromArgb(r, g, b))</p><p>  圖6-13 銳化效果圖 圖6-14 柔化效果圖</p><p>  圖6-15

106、光照效果圖 圖6-16 浮雕效果圖</p><p>  6.3.2 彩色圖像</p><p>  彩色圖像的處理包括灰度處理,對比度等。本程序中做了黑白效果處理和輪廓提取,在這里作簡單介紹。</p><p>  圖像的二值化處理就是講圖像上的點(diǎn)的灰度置為0或255,也就是講整個(gè)圖像呈現(xiàn)出明顯的黑白效果[22][23]。即將256個(gè)

107、亮度等級的灰度圖像通過適當(dāng)?shù)拈y值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。也就是黑白處理[24]。</p><p>  在本程序中使用了外部文件Threshold控件,本程序直接調(diào)用其函數(shù),未作詳細(xì)研究。以下為部分代碼:</p><p><b>  黑白效果:</b></p><p>  Dim ts As IThresholder

108、 = </p><p>  NewQuickGlobalMean-Threshold(Me.PictureBox1.Image)</p><p>  ts.DoThresholding()</p><p>  ’調(diào)用Threshold的成員IThresholder</p><p>  Dim outBMP As New Bitmap(Pict

109、ureBox1.Image.Width, </p><p>  PictureBox1.Image.Height)</p><p>  ts.RenderToBitmap(outBMP)</p><p><b>  輪廓提?。?lt;/b></p><p>  Dim ts As IThresholder = New <

110、/p><p>  QuickGlobalMeanThreshold(Me.PictureBox1.Image)</p><p>  ts.DoThresholding()</p><p>  Dim outBMP As New Bitmap(PictureBox1.Image.Width, </p><p>  PictureBox1.Image

111、.Height)</p><p>  ts.RenderToBitmap(outBMP)</p><p>  Dim com As New Fairy4_ContourDIB.ContourDIB</p><p>  圖6-17為黑白效果圖,圖6-18為輪廓效果圖</p><p>  圖6-17 黑白效果圖

112、 圖6-18 輪廓提取效果圖</p><p>  6.3.3 圖像壓縮</p><p>  JPEG的全稱是“聯(lián)合圖片專家組(Joint Photographic Experts Group)”,是由該專家組制訂的用于連續(xù)色調(diào)(包括灰度和彩色)靜止圖像的壓縮編碼標(biāo)準(zhǔn)[24]。JPEG標(biāo)準(zhǔn)的壓縮編碼算法是“多灰度靜止圖像的數(shù)字壓縮編碼”。</p><p>  本程序

113、使用Encoder類的Quality字段控制圖像質(zhì)量。</p><p>  以下為程序關(guān)鍵代碼:</p><p>  Dim MyLevel As Integer = CInt(Me.TextBox1.Text)</p><p>  Dim MyEncoders() As ImageCodecInfo = ImageCodecInfo.GetImageEncoder

114、s()</p><p>  ’獲取JPG格式的編碼方式</p><p>  Dim j As Int16 = 0</p><p>  Dim MyImageCodecInfo As ImageCodecInfo</p><p>  For j = 0 To MyEncoders.Length - 1 Step 1</p><

115、;p>  If MyEncoders(j).MimeType = "image/jpeg" Then</p><p>  MyImageCodecInfo = MyEncoders(j)</p><p>  ’設(shè)置JPG格式圖片質(zhì)量</p><p>  Dim MyEncoderParameters As New EncoderParame

116、ters(1)</p><p>  Dim MyEncoderParameter As New EncoderParameter(MyEncoder, MyLevel)</p><p>  MyEncoderParameters.Param(0) = MyEncoderParameter</p><p>  Form1.PictureBox1.Image.Save(

117、MyFileName, MyImageCodecInfo, MyEncoderParameters)</p><p>  6.3.4 圖像格式轉(zhuǎn)換</p><p>  其中在這里只做BMP格式轉(zhuǎn)換的關(guān)鍵代碼如下:</p><p>  Dim Myfilename As String = Me.saveFileDialog1.Filename</p>&

118、lt;p><b>  ’指定轉(zhuǎn)換的圖片</b></p><p>  Me.PictureBox1.Image.Save(Myfilename+".bmp",System.Drawing.Imaging.ImageFormat.Bmp)</p><p><b>  ’轉(zhuǎn)換為BMP</b></p><p&

119、gt;  在對其他格式進(jìn)行轉(zhuǎn)換的時(shí)候只需將上面的代碼中bmp改為要轉(zhuǎn)換的圖</p><p>  格式即可,利用GDI+技術(shù)將其進(jìn)行格式的轉(zhuǎn)換。</p><p>  6.3.5 墻紙?jiān)O(shè)置</p><p>  本例中我們選擇圖片并取得圖片的完整路徑,然后通過調(diào)用API函數(shù),將這幅圖設(shè)為墻紙,使用的語法為:</p><p>  SystemPara

120、metersInfoSPI_SETDESKWALLPAPER,0,bmpfile,1 </p><p>  ’設(shè)置墻紙,BMP格式圖片</p><p>  其中SystemParametersInfo表示要設(shè)置桌面墻紙,bmpfile是要設(shè)置的圖片的路徑。</p><p><b>  7 軟件測試</b></p><p>

121、;  7.1 測試原理與方法</p><p>  黑盒測試也稱功能測試,它是通過測試來檢測每個(gè)功能是否都能正常使用。白盒測試又稱結(jié)構(gòu)測試,透明盒測試、邏輯驅(qū)動(dòng)測試或基于代碼的測試。白盒測試是一種測試用例設(shè)計(jì)方法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的[25]。</p><p>  本軟件在使用工程中涉及到圖像的處理和變換,在處理方面對系統(tǒng)的

溫馨提示

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

評論

0/150

提交評論