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

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  學(xué)院(系): 軟件學(xué)院 </p><p>  專 業(yè): 軟件工程 </p><p>  學(xué) 生: </p><p>  指導(dǎo)教師:

2、 </p><p>  完成日期 201 年 月</p><p>  MFC圖像變換系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  Design and Implementation of The Image Transform Software on MFC System</p><p>  MFC圖像變換軟件的設(shè)計(jì)

3、與實(shí)現(xiàn)</p><p><b>  軟件工程 </b></p><p>  隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)的更新速度不斷提高,人們的思想文化素質(zhì)的提高,對圖像的要求也越來越高。本軟件實(shí)現(xiàn)圖像的圖像底片化、圖片灰度化、水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、負(fù)像等。</p><p>  圖像的變換是很常見的處理方式,通過對圖像的顯示方式或者圖像數(shù)據(jù)進(jìn)行處理來實(shí)現(xiàn)不同

4、的圖像特效。本系統(tǒng)主要是面向BMP格式的24位圖像,本程序利用MFC編程技術(shù),首先建立一個基于單文檔的應(yīng)用程序,添加子菜單按鈕,分別實(shí)現(xiàn)各個特效功能。程序運(yùn)行后,首先打開一個24位的BMP格式圖像,選擇實(shí)現(xiàn)不同的功能按鈕。</p><p>  BMP圖像 MFC Visual C++ 水平翻轉(zhuǎn) 垂直翻轉(zhuǎn) 灰度化 放大 縮小 底片化</p><p>  Design and

5、 Implementation of The Image Transform Software on MFC System</p><p>  The major of software engineering Li Yuanyuan</p><p>  Abstract: With the development of science and technology, update sp

6、eed computer continues to improve, people's ideological and cultural qualities, the image are increasingly high requirements. The software implementation of the image, the picture negatives of gray, flip horizontal f

7、lip vertical, negative, etc.</p><p>  Image transform approach is very common, through or image data processing to achieve image effects to different display of the image. The system is mainly to 24 bit imag

8、e based on BMP format, the program uses the MFC programming technology, first build an application based on a single document, Ka Ko the menu button, implementation of each specific function. After the program is running

9、, first open a BMP format image 24, choice of different functional buttons.</p><p>  Key words: BMP Image MFC Visual C++ Flip Horizontal Flip vertical Gray Amplification Negative</p><p

10、><b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 研究的背景1</p><p>  1.2國內(nèi)外現(xiàn)狀1</p><p>  1.3研究的意義1</p><p>  1.4 論文結(jié)構(gòu)2</p>

11、<p><b>  2 關(guān)鍵技術(shù)3</b></p><p>  2.1 Visual C++3</p><p>  2.1.1 Visual C++簡述3</p><p>  2.1.2 MFC的簡介3</p><p>  2.1.3 將Visual C++應(yīng)用于數(shù)字圖像的幾何變換4</p&

12、gt;<p>  2.2 BMP圖形和BMP文件結(jié)構(gòu)4</p><p>  2.2.1 BMP文件結(jié)構(gòu)4</p><p>  2.2.2 BMP圖像的讀寫7</p><p>  2.3圖像變化的基本形式8</p><p>  2.3.1 圖像的平移8</p><p>  2.3.2 圖像的旋轉(zhuǎn)

13、9</p><p>  2.3.3 圖像的縮放9</p><p><b>  3 需求分析11</b></p><p>  3.1系統(tǒng)設(shè)計(jì)目標(biāo)11</p><p>  3.2需求分析結(jié)果11</p><p>  3.3可行性分析12</p><p>  3.3.1

14、經(jīng)濟(jì)可行性12</p><p>  3.3.2操作可行性12</p><p><b>  4 概要設(shè)計(jì)13</b></p><p>  4.1 功能模塊概述13</p><p>  4.2圖像顯示模塊14</p><p>  4.3圖像翻轉(zhuǎn)模塊14</p><p&g

15、t;  4.4圖像瀏覽模塊14</p><p>  4.5圖像特效處理模塊15</p><p>  5 詳細(xì)設(shè)計(jì)與系統(tǒng)實(shí)現(xiàn)16</p><p>  5.1圖像顯示模塊的設(shè)計(jì)16</p><p>  5.2圖像翻轉(zhuǎn)模塊17</p><p>  5.2.1水平翻轉(zhuǎn)17</p><p> 

16、 5.2.2垂直翻轉(zhuǎn)19</p><p>  5.3圖像瀏覽模塊21</p><p>  5.3.1圖像放大21</p><p>  5.3.2圖像縮小22</p><p>  5.4圖像特效處理22</p><p>  5.4.1圖像灰度化處理23</p><p>  5.4.2圖

17、像負(fù)像24</p><p>  6系統(tǒng)運(yùn)行與總結(jié)27</p><p>  6.1圖像打開27</p><p>  6.2水平翻轉(zhuǎn)27</p><p>  6.3垂直翻轉(zhuǎn)28</p><p>  6.4圖像放大28</p><p>  6.5圖像縮小29</p><

18、;p>  6.6圖像灰度29</p><p>  6.7圖像負(fù)像30</p><p><b>  7結(jié)束語31</b></p><p><b>  參考文獻(xiàn)32</b></p><p><b>  致謝33</b></p><p><

19、;b>  1 緒論</b></p><p><b>  1.1 研究的背景</b></p><p>  圖像時現(xiàn)代信息社會中最基本的信息。數(shù)字圖像處理的研究對象是圖像處理技術(shù),這是計(jì)算機(jī)技術(shù)的重要分支和發(fā)展方向。數(shù)字圖像處理時信息科學(xué)、工程學(xué)、醫(yī)學(xué)、生理學(xué)、甚至社會科學(xué)等許多學(xué)科的重要基礎(chǔ),同時也是一種具有巨大的經(jīng)濟(jì)和社會效益的使用技術(shù),廣泛應(yīng)用于軍

20、事、氣象、交通、探礦、水利、農(nóng)業(yè)甚至娛樂等領(lǐng)域。隨著信息高速公路和數(shù)字地球等概念的提出和發(fā)展,數(shù)字圖像處理技術(shù)已得到更加充分的發(fā)展,并在現(xiàn)代信息社會中占據(jù)了非常重要的低位。</p><p>  隨著圖像處理技術(shù)的廣泛應(yīng)用,學(xué)習(xí)和掌握這門科學(xué)顯得格外重要,圖像處理已經(jīng)成為信息技術(shù)相關(guān)領(lǐng)域的核心課程。</p><p><b>  1.2國內(nèi)外現(xiàn)狀</b></p>

21、;<p>  隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)的更新速度不斷提高,人們的思想文化素質(zhì)的提高,對圖像的要求也越來越高。因此把原始圖像與計(jì)算機(jī)結(jié)合起來,從而創(chuàng)作出許多更加完美的圖像,滿足人們的需求。計(jì)算機(jī)圖像處理,是指利用計(jì)算機(jī)對圖像進(jìn)行一系列加工,以便獲得人所們需要的效果。圖像是人類獲取和交換信息的主要來源,人類感知外界信息,80%以上是通過視覺得到的。因此,圖像處理的應(yīng)用領(lǐng)域必然涉及到人類生活和工作的方方面面。圖像處理或圖像

22、分析方法的應(yīng)用越來越廣泛,其主要理論基礎(chǔ)是形態(tài)數(shù)學(xué),立體學(xué),集合論等。</p><p>  圖像處理雖然也可以用光學(xué)方法或模擬技術(shù)來實(shí)現(xiàn),但目前主要是利用計(jì)算機(jī)來實(shí)現(xiàn),稱為數(shù)字圖像處理。因此,圖像處理一般是指數(shù)字圖像處理。常見的圖像處理有圖像數(shù)字化、圖像編碼、圖像增強(qiáng)、圖像復(fù)原、圖像分割與圖像分析等。經(jīng)過處理后的圖像,一定能夠更好的被用于工業(yè)或者個人目的。為此開發(fā)這個數(shù)字圖像處理軟件,能夠處理一些圖像,并對圖像處

23、理技術(shù)此方面進(jìn)行深入的研究。</p><p><b>  1.3研究的意義</b></p><p>  圖像處理學(xué)是一門綜合性邊緣學(xué)科。從研究范圍來看,它與計(jì)算機(jī)圖形學(xué)、模式識別、計(jì)算機(jī)視覺等既有聯(lián)系又有區(qū)別。</p><p>  圖形學(xué)原本指用圖形、圖表、繪圖等形式表達(dá)數(shù)據(jù)信息的科學(xué)。而計(jì)算機(jī)圖形學(xué)研究的是如何利用計(jì)算機(jī)技術(shù)來產(chǎn)生這些形式。和

24、圖像分析對比,兩者的處理對象和輸出結(jié)果正好相反。計(jì)算機(jī)圖形學(xué)試圖從非圖像形式的數(shù)據(jù)描述來生成圖像。另一方面,模式識別與圖像分析則比較相似,只是前者試圖把圖像抽象成符號描述的類別,它們有相同的輸入,而不同的輸出結(jié)果之間可較方便的進(jìn)行轉(zhuǎn)換。至于計(jì)算機(jī)視覺主要強(qiáng)調(diào)用計(jì)算機(jī)去實(shí)現(xiàn)人的視覺功能,其中涉及圖像處理的許多技術(shù),但目前的研究內(nèi)容主要與圖像理解相結(jié)合。</p><p>  由此看來,以上學(xué)科相互聯(lián)系,相互交叉,它們

25、之間并沒有絕對的界限。雖各有側(cè)重但又相互補(bǔ)充。另外以上各學(xué)科都得到了人工智能、神經(jīng)網(wǎng)絡(luò)、遺傳算法、模糊邏輯等新理論、新工具、新技術(shù)的支持,所以它們又都在近年得到了長足發(fā)展。</p><p>  在計(jì)算機(jī)出現(xiàn)之前,模擬圖像處理占主導(dǎo)地位。隨著計(jì)算機(jī)的發(fā)展,數(shù)字圖像處理發(fā)展速度越來越快。與人類對視覺機(jī)能著迷的歷史相比,它是一門相對年輕的學(xué)科。盡管目前一般采用順序處理的計(jì)算機(jī),對大數(shù)據(jù)量的圖像處理速度不如光學(xué)方法快,但

26、是其處理的精度高,實(shí)現(xiàn)多種功能的、高度復(fù)雜的運(yùn)算求解非常靈活方便。在其短短的歷史中,它卻成功的應(yīng)用于幾乎所有與成像有關(guān)的領(lǐng)域,并正發(fā)揮相當(dāng)重要的作用。 </p><p><b>  1.4 論文結(jié)構(gòu)</b></p><p>  本文共分為6章,各章主要內(nèi)容介紹如下:</p><p>  第一章首先簡單介紹課題研究的背景,國內(nèi)外的發(fā)展?fàn)顩r、本系統(tǒng)

27、研究的主要意義以及本論文的組織結(jié)構(gòu)。</p><p>  第二章主要介紹系統(tǒng)開發(fā)的平臺,以及主要關(guān)鍵技術(shù)如:Visual C++、BMP圖形和BMP文件結(jié)構(gòu)、圖像變化的基本形式等。</p><p>  第三章主要介紹本系統(tǒng)的系統(tǒng)設(shè)計(jì)目標(biāo)、需求分析結(jié)果、可行性分析。</p><p>  第四章主要介紹課題的功能模塊設(shè)計(jì)以及詳細(xì)設(shè)計(jì)過程。先做出整體功能模塊圖,再對各功能

28、模塊進(jìn)行概述,最后介紹個模塊的流程圖。</p><p>  第五章主要介紹系統(tǒng)主要編碼與實(shí)現(xiàn)過程。</p><p>  第六章主要介紹系統(tǒng)運(yùn)行與總結(jié)。</p><p><b>  2 關(guān)鍵技術(shù)</b></p><p>  2.1 Visual C++</p><p>  2.1.1 Visual

29、C++簡述</p><p>  Visual C++(簡稱VC)是微軟公司提供的基于C/C++的應(yīng)用程序集成開發(fā)工具。VC擁有豐富的功能和大量的擴(kuò)展庫,使用它能有效的創(chuàng)建高性能的Windows應(yīng)用程序和Web應(yīng)用程序。VC的優(yōu)越性主要表現(xiàn)在以下幾個方面:</p><p><b>  開發(fā)分布式應(yīng)用。</b></p><p>  開發(fā)的應(yīng)用程序運(yùn)

30、行效率高、具有健壯性。</p><p>  能縮短軟件升級周期。</p><p>  能夠生成多線程應(yīng)用,而多線程應(yīng)用對于增加并發(fā)響應(yīng)有實(shí)際意義。</p><p>  VC除了提供高效的C/C++編譯器外,還提供了大量的可重用類和組件,包括著名的微軟基礎(chǔ)類庫(MFC)和活動模板類庫(ATL),因此它是軟件開發(fā)人員不可多得的開發(fā)工具。</p><p

31、>  Visual C++6.0是功能最為強(qiáng)大的可視化開發(fā)工具之一,它不僅支持傳統(tǒng)的軟件開發(fā)方法,更重要的是它能支持面向?qū)ο蟆⒖梢暬拈_發(fā)風(fēng)格。因此Visual C++6.0又稱作是一個集成開發(fā)工具,它提供了軟件代碼自動生成和可視化的資源編輯功能。</p><p>  Visual C++ 具有多種優(yōu)點(diǎn):它提供了面向?qū)ο蟮膽?yīng)用程序框架MFC(Microsoft Foundation Class),簡化了程

32、序員的編程工作,提高了模塊的可重用性;提供了基于CASE技術(shù)的可視化軟件的自動生成和維護(hù)工具AppWizard、Class Wizard、Visual Studio、Wizard Bar等,實(shí)現(xiàn)了直觀、可視的程序設(shè)計(jì)風(fēng)格,方便地編輯和管理各種類,維護(hù)程序的源代碼;封裝了Windows的API函數(shù)、USER、KERNEL、GDI函數(shù),簡化了編程時創(chuàng)建、維護(hù)窗口的許多復(fù)雜的工作。</p><p>  2.1.2 MF

33、C的簡介</p><p>  MFC的英文全稱是Microsoft Foundation Class Library,MFC中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立Windows下的應(yīng)用程序,這是一種相對SDK來說更為簡單的方法。因?yàn)榭傮w上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。

34、</p><p>  Microsoft Visual C++提供了相應(yīng)的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口;Class Wizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。</p><p>  2.1.3 將Visual C++應(yīng)用于數(shù)字圖像的幾何變換</p>

35、;<p>  VC豐富的功能和大量的擴(kuò)展庫,類的重用特性以及它對函數(shù)庫、DLL庫的支持能使程序更好的模塊化,并且通過向?qū)С绦虼蟠蠛喕藥熨Y源的使用和應(yīng)用程序的開發(fā),正由于VC具有明顯的優(yōu)勢,因而我選擇了它來作為數(shù)字圖像幾何變換的開發(fā)工具。</p><p>  在本程序的開發(fā)過程中,VC的核心知識、消息映射機(jī)制、對話框控件編程等都得到了生動的體現(xiàn)和靈活的應(yīng)用。</p><p>

36、  2.2 BMP圖形和BMP文件結(jié)構(gòu)</p><p>  2.2.1 BMP文件結(jié)構(gòu)</p><p>  BMP圖像文件被分成4個部分:位圖文件頭(Bitmap File Header)、位圖信息頭(Bitmap Info Header)、顏色表(Color Map)和位圖數(shù)據(jù)(即圖像數(shù)據(jù),Data Bits或Data Body)。</p><p>  第1部分為

37、位圖文件頭BITMAPFILEHEADER,是一個結(jié)構(gòu)體類型,該結(jié)構(gòu)的長度是固定的,為14個字節(jié)。其定義如下:</p><p>  BITMAPFILEHEADER結(jié)構(gòu)的各個域詳細(xì)說明如下:</p><p>  bfType:位圖文件類型,必須是0x424D,即字符串“BM”,也就是說,所有的“*.bmp”文件的頭兩個字節(jié)都是“BM”。</p><p>  bfSi

38、ze:位圖文件大小,包括這14個字節(jié)。</p><p>  bfReserved1, bfReserved2:Windows保留字,暫不用。</p><p>  bfOffBits:從文件頭到實(shí)際的位圖數(shù)據(jù)的偏移字節(jié)數(shù),圖2-1中前3個部分的長度之和。</p><p>  第2部分為位圖信息頭BITMAPINFOHEADER,也是一個結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)的長

39、度也是固定的,為40個字節(jié)(WORD為無符號16位整數(shù),DWORD為無符號32位整數(shù),LONG為32位整數(shù))。其定義如下:</p><p>  BITMAPINFOHEADER結(jié)構(gòu)的各個域的詳細(xì)說明如下:</p><p>  biSize:本結(jié)構(gòu)的長度,為40個字節(jié)。</p><p>  biWidth:位圖的寬度,以像素為單位。</p><p&

40、gt;  biHeight:位圖的高度,以像素為單位。</p><p>  biPlanes:目標(biāo)設(shè)備的級別,必須是1。</p><p>  biBitCount:每個像素所占的位數(shù)(bit),其值必須為1(黑白圖像)、4(16色圖)、8(256色)、24(真彩色圖),新的BMP格式支持32位色。</p><p>  biCompresssion:位圖壓縮類型,有效

41、的值為BI_RGB(未經(jīng)壓縮)、BI_RLE8、BI_RLE4、BI_BITFILEDS(均為Windows定義常量)。這里只討論未經(jīng)壓縮的情況,即biCompression=BI_RGB。</p><p>  biSizeImage:實(shí)際的位圖數(shù)據(jù)占用的字節(jié)數(shù),該值的大小在第4部分位圖數(shù)據(jù)中有具體解釋。</p><p>  biXPelsPerMeter:指定目標(biāo)設(shè)備的水平分辨率,單位是

42、像素/米。</p><p>  biYPelsPerMeter:指定目標(biāo)設(shè)備的垂直分辨率,單位是像素/米。</p><p>  biClrUsed:位圖實(shí)際用到的顏色數(shù),如果該值為零,則用到的顏色數(shù)為2的biBitCount次冪。</p><p>  biClrImportant:位圖顯示過程中重要的顏色數(shù),如果該值為零,則認(rèn)為所有的顏色都是重要的。</p&g

43、t;<p>  第3部分為顏色表。顏色表實(shí)際上是一個RGBQUAD結(jié)構(gòu)的數(shù)組,數(shù)組的長度由biClrUsed指定(如果該值為零,則由biBitCount指定,即2的biBitCount次冪個元素)。RGBQUAD結(jié)構(gòu)是一個結(jié)構(gòu)體類型,占4個字節(jié),其定義如下:</p><p>  RGBQUAD結(jié)構(gòu)的各個域的詳細(xì)說明如下:</p><p>  rgbBlue:該顏色的藍(lán)色分量;

44、</p><p>  rgbGreen:該顏色的綠色分量;</p><p>  rgbRed:該顏色的紅色分量;</p><p>  rgbReserved:保留字節(jié),暫不用。</p><p>  第4部分是位圖數(shù)據(jù),即圖像數(shù)據(jù),其緊跟在位圖文件頭、位圖信息頭和顏色表(如果有顏色表的話)之后,記錄了圖像的每一個像素值。對于有顏色表的位圖,位圖

45、數(shù)據(jù)就是該像素顏色在調(diào)色板中的索引值;對于真彩色圖,位圖數(shù)據(jù)就是實(shí)際的R、G、B值(三個分量的存儲順序是B、G、R)。下面就2色、16色、256色位圖和真彩色位圖分別介紹。</p><p>  對于2色位圖,用1位就可以表示該像素的顏色(一般0表示黑,1表示白),所以一個字節(jié)可以表示8個像素。</p><p>  對于16色位圖,用4位可以表示一個像素的顏色,所以1個字節(jié)可以表示2個像素。

46、</p><p>  對于256色位圖,1個字節(jié)剛好可以表示1個像素。</p><p>  對于真彩色圖,3個字節(jié)才能表示1個像素。</p><p>  2.2.2 BMP圖像的讀寫</p><p>  2.2.2.1 BMP圖像的讀:</p><p>  (1)首先定義BMP文件頭和信息頭變量</p>

47、<p>  BITMAPFILEHEADER bf; //BMP文件頭結(jié)構(gòu)體</p><p>  BITMAPINFOHEADER bi; //BMP信息頭結(jié)構(gòu)體</p><p>  (2)創(chuàng)建文件輸入流 fp</p><p>  fp=fopen(fileName,"rb"); //fileName為BMP圖像文件名</p&

48、gt;<p>  (3)讀取信息頭、文件頭</p><p>  fread(&bf,sizeof(BITMAPFILEHEADER),1,fp); </p><p>  fread(&bi,sizeof(BITMAPINFOHEADER),1,fp);</p><p>  經(jīng)過這兩條程序把BMP圖像的信息頭、文件頭賦給bf和bi變量,可

49、以根據(jù)bf和bi得到圖像的各種屬性。</p><p>  (4) 讀取BMP調(diào)色板</p><p>  fread(ipRGB2,sizeof(RGBQUAD),256,fp); </p><p>  (5)讀取BMP位圖數(shù)據(jù)</p><p>  定義一個二維數(shù)組Imgdata來存取BMP位圖數(shù)據(jù)</p><p> 

50、 unsigned char * * Imgdata; </p><p>  Imgdata=new unsigned char*[bi.biHeight]; //聲明一個指針數(shù)組</p><p>  for ( i=0;i<bi.biHeight;i++) </p><p>  Imgdata[i]=new unsigned char[(bi.b

51、iWidth*3+3)/4*4]; //每個數(shù)組元素也是一個指針數(shù)組 </p><p>  for ( i=0;i<bi.biHeight;i++ ) </p><p>  for(j=0;j<(bi.biWidth*3+3)/4*4;j++) </p><p>  fread(&Imgdata[i][j],1,1,fp);//每次

52、只讀取一個字節(jié),存入數(shù)組 </p><p>  2.2.2.2 BMP圖像的寫:</p><p>  (1)創(chuàng)建一個輸出流fp</p><p>  fp=fopen("mybmp.bmp","wb"); </p><p>  (2) 寫B(tài)MP圖像的信息頭、文件頭</p><

53、p>  fwrite(&bf2,sizeof(BITMAPFILEHEADER),1,fp); </p><p>  fwrite(&bi2,sizeof(BITMAPINFOHEADER),1,fp);</p><p>  (3) 寫B(tài)MP調(diào)色板</p><p>  fwrite(ipRGB2,sizeof(RGBQUAD),256,fp)

54、; </p><p>  (4) 寫B(tài)MP圖像的位圖數(shù)據(jù)部分</p><p>  for (i=(bi.biHeight)-1 ;i>=0;i--) </p><p>  for (j=0 ;j<(bi.biWidth*3+3)/4*4;j++) </p><p>  fwrite(&Imgdata[i

55、][j],1,1,fp); </p><p>  2.3圖像變化的基本形式</p><p>  圖像的基本變換形式,通常包括圖像的平移、圖像的鏡像變換、圖像的轉(zhuǎn)置、圖像的縮放和圖像的旋轉(zhuǎn)等。</p><p>  2.3.1 圖像的平移</p><p>  圖像平移就是將圖像中所有的點(diǎn)都按照指定的平移量水平、垂直移動。設(shè)(x0,y0)為原圖

56、像上的一點(diǎn),圖像水平平移量為tx,垂直平移量為ty,則平移后點(diǎn)(x0,y0)坐標(biāo)將變?yōu)椋▁1,y1)。</p><p>  顯然(x0,y0)和(x1,y1)的關(guān)系如下:</p><p><b>  用矩陣表示如下:</b></p><p>  對該矩陣求逆,可以得到逆變換:</p><p><b>  即&l

57、t;/b></p><p>  這樣,平移后的圖像上的每一點(diǎn)都可以在原圖像中找到對應(yīng)的點(diǎn)。例如,對于新圖中的(0,0)像素,代入上面的方程組,可以求出對應(yīng)原圖中的像素(-tx,-ty)。如果tx或ty大于0,則(- tx,- ty)不在原圖中。對于不在原圖中的點(diǎn),可以直接將它的像素值統(tǒng)一設(shè)置為0或則255(對于灰度圖就是黑色或白色)。同樣,若有點(diǎn)不在原圖中,也就說明原圖中有點(diǎn)被移出顯示區(qū)域。如果不想丟失被移

58、出的部分圖像,可以將新生成的圖像寬度擴(kuò)大|tx |,高度擴(kuò)大| ty |。</p><p>  2.3.2 圖像的旋轉(zhuǎn)</p><p>  一般圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn),旋轉(zhuǎn)一定的角度。旋轉(zhuǎn)后,圖像的大小一般會改變。和圖像平移一樣,既可以把轉(zhuǎn)出顯示區(qū)域的圖像截去,也可以擴(kuò)大圖像范圍以顯示所有的圖像。</p><p>  可以推導(dǎo)一下旋轉(zhuǎn)運(yùn)算的變換公式。如下圖所

59、示,點(diǎn)(x0,y0)經(jīng)過旋轉(zhuǎn)θ度后坐標(biāo)變成(x1,y1)。</p><p><b>  在旋轉(zhuǎn)前:</b></p><p><b>  旋轉(zhuǎn)后:</b></p><p><b>  寫成矩陣表達(dá)式為:</b></p><p>  2.3.3 圖像的縮放</p>&

60、lt;p>  圖像的縮放操作將會改變圖像的大小,產(chǎn)生的圖像中的像素可能在原圖中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行近似處理。一般的方法是直接賦值為和它最相近的像素值,也可以通過一些插值算法來計(jì)算。</p><p>  假設(shè)圖像x軸方向縮放比率為fx,y軸方向縮放比率為fy,那么原圖中點(diǎn)(x0,y0)對應(yīng)與新圖中的點(diǎn)(x1,y1)的轉(zhuǎn)換矩陣為:</p><p><b>  其逆

61、運(yùn)算如下:</b></p><p><b>  即</b></p><p>  例如,當(dāng)fx=fy=0.5時,圖像被縮放到一半大小,此時縮小后圖像中的(0,0)像素對應(yīng)于原圖中的(0,0)像素;(0,1)像素對應(yīng)于原圖中的(0,2)像素;(1,0)像素對應(yīng)于原圖中的(2,0)像素,以此類推。在原圖基礎(chǔ)上,每行隔一個像素取一點(diǎn),每隔一行進(jìn)行操作。其實(shí)是將原圖

62、每行中的像素重復(fù)取值一遍,然后每行重復(fù)一次。</p><p><b>  3 需求分析</b></p><p><b>  3.1系統(tǒng)設(shè)計(jì)目標(biāo)</b></p><p>  需求分析簡單地說就是分析用戶的需求。需求分析是設(shè)計(jì)系統(tǒng)的起點(diǎn),需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影響到后面各個階段的設(shè)計(jì),并影響到設(shè)計(jì)

63、結(jié)果是否合理和實(shí)用。</p><p>  需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。</p><p>  調(diào)查的重點(diǎn)是“數(shù)據(jù)”和“處理”,通過調(diào)查、收集與分析,獲得用戶對數(shù)據(jù)的要求如下:</p><p>  (1)圖像的打開、關(guān)閉及保存:

64、打開并顯示圖像,并在處理過圖像后關(guān)閉或保存圖像的修改。</p><p> ?。?)處理要求。指用戶要完成什么處理功能,對處理的響應(yīng)時間有什么要求,處理方式是批處理還是其他處理方式,能夠完成圖像一般的編輯處理。</p><p>  (3)處理效果與效率。圖像處理中一個很重要的問題就是如何表示有關(guān)的知識并以恰當(dāng)?shù)姆绞揭雸D像處理。由于圖像處理任務(wù)的復(fù)雜性,目前要找出一個通用的方法適應(yīng)各種情況是

65、幾乎不可能的。另一方面,在建立普適的圖像處理方法時,往往會忽略某類圖像具有的特定屬性。相反,針對某類特定問題,則可能找到有效的方法。為此,有研究者提出基于對象圖像處理的概念:限定圖像處理的對象為一類特殊的圖像BMP,考察對象的共有屬性(稱為先驗(yàn)),并將其結(jié)合到圖像處理的任務(wù)中以提供更多的信息,從而提升圖像處理的性能、提高處理效果。由于圖像的處理是通過對一個個像素點(diǎn)進(jìn)行處理,要想提高處理速度就需要尋找一個快速的處理方法。 </p&g

66、t;<p>  本系統(tǒng)是Windows應(yīng)用程序,可以進(jìn)行圖像的導(dǎo)入和導(dǎo)出,處理后的圖片進(jìn)行保存,圖像的特效處理以及打印輸出圖片。</p><p><b>  3.2需求分析結(jié)果</b></p><p>  本系統(tǒng)的主要功能有:</p><p>  圖像文件的打開和保存,實(shí)現(xiàn)了對24位BMP格式圖像的操作。</p>&

67、lt;p>  圖像的復(fù)制,實(shí)現(xiàn)將位圖像復(fù)制到其他的工具中。</p><p>  圖像的放大,實(shí)現(xiàn)圖像按照原比例放大顯示,呈現(xiàn)放大效果。</p><p>  圖像的縮小,實(shí)現(xiàn)圖像按照原比例縮小顯示,呈現(xiàn)縮小效果。</p><p>  圖像的水平翻轉(zhuǎn),實(shí)現(xiàn)對圖像數(shù)據(jù)的左右水平方向的相互轉(zhuǎn)換。</p><p>  圖像的垂直翻轉(zhuǎn),實(shí)現(xiàn)對圖像數(shù)

68、據(jù)的垂直上學(xué)方向的相互轉(zhuǎn)換。</p><p>  圖像的負(fù)像處理,實(shí)現(xiàn)對圖像的底片化效果顯示。</p><p>  圖像的灰度化處理,實(shí)現(xiàn)對彩色圖像的黑白化處理</p><p><b>  3.3可行性分析</b></p><p>  3.3.1經(jīng)濟(jì)可行性</p><p>  即考慮到成本問題,人

69、力管理消耗大量的時間和物資而該系統(tǒng)只需極少部分人的管理且提高效益,這樣就需要在管理中提供一個簡單易操作可行性高的系統(tǒng),也就是本項(xiàng)目所要開發(fā)的管理系統(tǒng)。并且開發(fā)一個小型的管理系統(tǒng)的成本也不高,是完全可以承受的。從這一方面來看,經(jīng)濟(jì)上是可行的。 </p><p>  3.3.2操作可行性</p><p&g

70、t;  該軟件主要是用Visual C++6.0作為系統(tǒng)的開發(fā)工具,軟件開發(fā)高速發(fā)展的今天,技術(shù)發(fā)達(dá),用來實(shí)現(xiàn)網(wǎng)絡(luò)軟件開發(fā)的工具很多,我們可以利用這些工具來進(jìn)行研究。在windows操作系統(tǒng)下利用MFC實(shí)現(xiàn)界面化操作,建立基于單文檔的應(yīng)用程序。在添加子菜單完成各項(xiàng)功能。MFC開發(fā)環(huán)境成熟,有龐大的庫函數(shù),有一系列的的規(guī)范,只需學(xué)習(xí)后恰當(dāng)?shù)恼{(diào)用,再需簡單掌握MFC相關(guān)庫函數(shù)就可獲得圖像位圖陣列。從操作技術(shù)上是可行的。</p>

71、<p><b>  4 概要設(shè)計(jì)</b></p><p>  4.1 功能模塊概述</p><p>  圖像簡單特效及加密處理系統(tǒng)是一個典型的圖像處理軟件,它由圖像顯示、圖像翻轉(zhuǎn)、圖像翻轉(zhuǎn)、圖像瀏覽、圖像特效等模塊組成。</p><p><b>  圖像顯示模塊</b></p><p>

72、  該模塊主要是可以打開一個位圖文件即BMP格式的圖像,并能將BMP格式的圖像進(jìn)行復(fù)制到剪貼板上,載將位圖復(fù)制在其他工具中的模塊。</p><p><b>  圖像翻轉(zhuǎn)模式</b></p><p>  該模塊主要是將位圖圖像進(jìn)行旋轉(zhuǎn)包括將水平方向翻轉(zhuǎn),垂直方向翻轉(zhuǎn)及順時針90°旋轉(zhuǎn)的模塊。</p><p><b>  圖像瀏

73、覽模塊</b></p><p>  該模塊主要是可以對位圖進(jìn)行縮放顯示包括對圖像的按照多大的比例放大和縮小或按照原來大小顯示位圖。</p><p><b>  圖像特效模塊</b></p><p>  該模塊主要是對位圖進(jìn)行一些特效功能處理包括圖像負(fù)像、圖片灰度化二個部分。負(fù)像就是將圖像轉(zhuǎn)換成底片形式,圖像灰度化就是將彩色轉(zhuǎn)變?yōu)榛叶?/p>

74、圖像時圖像失去色彩。</p><p><b>  幫助模塊</b></p><p>  該模塊主要包括軟件的版本、開發(fā)單位等信息。</p><p>  本系統(tǒng)的功能模塊圖設(shè)計(jì)如下4.1所示</p><p>  圖4.1 功能模塊圖</p><p><b>  4.2圖像顯示模塊</

75、b></p><p><b>  圖像復(fù)制</b></p><p>  打開一張24位的BMP格式圖像,就能顯示一個BMP格式的圖像,并運(yùn)行復(fù)制功能后,本圖像可以復(fù)制在其他的工具中。</p><p>  如打開一個BMP格式位圖后,在編輯中,點(diǎn)擊“復(fù)制”,再打開一個別的工具如文檔,鼠標(biāo)右擊后選擇“粘貼”,那么這個BMP格式的圖像就顯示在文

76、檔中。</p><p><b>  4.3圖像翻轉(zhuǎn)模塊</b></p><p><b>  (1)水平翻轉(zhuǎn)</b></p><p>  打開一張24位的BMP格式的圖像,運(yùn)行水平翻轉(zhuǎn)功能,點(diǎn)擊垂直翻轉(zhuǎn)子菜單,程序開始處理圖像,處理后的圖像左右兩邊的像素轉(zhuǎn)換過來顯示。</p><p><b>

77、;  (2)垂直翻轉(zhuǎn)</b></p><p>  打開一張24位的BMP格式的圖像,運(yùn)行圖像垂直翻轉(zhuǎn)功能,點(diǎn)擊垂直翻轉(zhuǎn)子菜單,程序開始處理圖像,處理好的圖像上下兩邊的像素轉(zhuǎn)換過來顯示。</p><p><b>  4.4圖像瀏覽模塊</b></p><p><b>  (1)圖像放大</b></p>

78、<p>  打開一張24位的BMP格式的圖像,運(yùn)行圖像放大功能,點(diǎn)擊圖像放大子菜單,程序開始處理圖像,處理后的圖像按照原來的比例擴(kuò)大來顯示。</p><p><b> ?。?)圖像縮小</b></p><p>  打開一張24位的BMP格式的圖像,運(yùn)行圖像縮小功能,點(diǎn)擊圖像縮小子菜單,程序開始處理圖像,處理后的圖像按照原來的比例縮小來顯示。</p&

79、gt;<p>  4.5圖像特效處理模塊</p><p> ?。?)圖像底片化處理</p><p>  打開一張24位的BMP格式的圖像,運(yùn)行圖像底片化處理功能,程序就開始反相圖像,把圖片變成像底片一樣的效果。</p><p> ?。?)圖像灰度化處理</p><p>  彩色圖像被灰度化位黑白圖像。</p>&l

80、t;p>  在RGB模型中,如果R=G=B時,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值,因此,灰度圖像每個像素只需一個字節(jié)存放灰度值(又稱強(qiáng)度值、亮度值),灰度范圍為0-255。一般有以下四種方法對彩色圖像進(jìn)行灰度化: </p><p>  將彩色圖像中的三分量的亮度作為三個灰度圖像的灰度值,可根據(jù)應(yīng)用需要選取一種灰度圖像。 </p><p>  f1(i,j)=R(i,j

81、) f2(i,j)=G(i,j) f3(i,j)=B(i,j) </p><p>  其中fk(i,j)(k=1,2,3)為轉(zhuǎn)換后的灰度圖像在(i,j)處的灰度值。</p><p>  5 詳細(xì)設(shè)計(jì)與系統(tǒng)實(shí)現(xiàn)</p><p>  在每個功能模塊中都用到了函數(shù),void Invalidate( BOOL bErase = TRUE ),</p><

82、p>  該函數(shù)的作用是使整個窗口客戶區(qū)無效。窗口的客戶區(qū)無效意味著需要重繪,例如,如果一個被其它窗口遮住的窗口變成了前臺窗口,那么原來被遮住的部分就是無效的,需要重繪。這時Windows會在應(yīng)用程序的消息隊(duì)列中放置WM_PAINT消息。MFC為 窗口類提供了WM_PAINT的消息處理函數(shù)OnPaint,OnPaint負(fù)責(zé)重繪窗口。視圖類有一些例外,在視圖類的OnPaint函數(shù)中調(diào)用了 OnDraw函數(shù),實(shí)際的重繪工作由OnDraw

83、來完成。參數(shù)bErase為TRUE時,重繪區(qū)域內(nèi)的背景將被擦除,否則,背景將保持不變。</p><p>  5.1圖像顯示模塊的設(shè)計(jì)</p><p>  圖像顯示模塊是能夠讀取位圖文件以及圖像的復(fù)制功能。</p><p><b>  圖像復(fù)制</b></p><p>  圖像復(fù)制就是圖像可以復(fù)制在其他的工具中。本功能是將

84、位圖數(shù)據(jù)轉(zhuǎn)化為DIB格式數(shù)據(jù)在復(fù)制在剪貼板上。流程見圖5.1</p><p>  5-1復(fù)制功能流程圖</p><p><b>  關(guān)鍵代碼:</b></p><p>  BOOL CDIB::Copy()</p><p>  {if (m_lpBits == 0) </p><p>  ret

85、urn FALSE;</p><p>  if (!OpenClipboard(NULL)) </p><p>  return FALSE;</p><p>  EmptyClipboard();</p><p>  HGLOBAL hMem;</p><p>  BYTE *lpDib;</p>&l

86、t;p>  int nLen = sizeof(BITMAPINFOHEADER)</p><p>  + BYTE_PER_LINE(m_nWidth, m_nBitCount)*m_nHeight;</p><p>  hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, nLen);</p><p>  lpDi

87、b = (BYTE *)GlobalLock(hMem);</p><p>  SaveToDib(lpDib);</p><p>  GlobalUnlock(hMem);</p><p>  SetClipboardData(CF_DIB, hMem);</p><p>  CloseClipboard();</p><

88、;p>  return TRUE;</p><p><b>  }</b></p><p><b>  5.2圖像翻轉(zhuǎn)模塊</b></p><p><b>  5.2.1水平翻轉(zhuǎn)</b></p><p>  水平翻轉(zhuǎn)將圖像水平方向的像素點(diǎn)沿著中間線進(jìn)行翻轉(zhuǎn),處理過程為:獲

89、得當(dāng)前設(shè)備指針,指向當(dāng)前設(shè)備, 定義三個無符號的的指針,為翻轉(zhuǎn)圖像申請一段內(nèi)存空間,大小為圖像內(nèi)存大小。內(nèi)層循環(huán)將每一行的像素點(diǎn)進(jìn)行翻轉(zhuǎn),左側(cè)的像素移到右側(cè),右側(cè)的像素點(diǎn)移到左側(cè)外層循環(huán)將所有行的像素進(jìn)行翻轉(zhuǎn)將左側(cè)的像素點(diǎn)移到右側(cè),講右側(cè)的像素點(diǎn)移到左側(cè)。invalidate()函數(shù)</p><p>  進(jìn)行窗體的重繪。實(shí)現(xiàn)過程見圖5.2</p><p>  5-2圖像水平翻轉(zhuǎn)流程圖<

90、;/p><p><b>  關(guān)鍵代碼:</b></p><p>  BOOL CDIB::VFlip()</p><p><b>  {</b></p><p>  if (!m_lpBits) </p><p>  return FALSE;</p><p

91、>  int y, nByteWidth;</p><p>  BYTE *p1, *p2, *pm;</p><p>  nByteWidth = BYTE_PER_LINE(m_nWidth, m_nBitCount);</p><p>  pm = new BYTE[nByteWidth];</p><p>  for (y=0;

92、 y<m_nHeight/2; y++)</p><p><b>  {</b></p><p>  p1 = m_lpBits+y*nByteWidth;</p><p>  p2 = m_lpBits+(m_nHeight-y-1)*nByteWidth;</p><p>  memcpy(pm, p1, nB

93、yteWidth);</p><p>  memcpy(p1, p2, nByteWidth);</p><p>  memcpy(p2, pm, nByteWidth);</p><p><b>  }</b></p><p>  delete[] pm;</p><p>  return TR

94、UE;</p><p><b>  }</b></p><p><b>  5.2.2垂直翻轉(zhuǎn)</b></p><p>  垂直翻轉(zhuǎn)實(shí)現(xiàn)圖像垂直方向的像素對稱翻轉(zhuǎn),處理過程為:獲得當(dāng)前設(shè)備指針,指向當(dāng)前設(shè)備, 定義三個無符號的的指針,為翻轉(zhuǎn)圖像申請一段內(nèi)存空間,大小為圖像內(nèi)存大小。內(nèi)層循環(huán)將每一行的像素點(diǎn)進(jìn)行翻轉(zhuǎn),左側(cè)的像

95、素移到右側(cè),右側(cè)的像素點(diǎn)移到左側(cè)外層循環(huán)將所有行的像素進(jìn)行翻轉(zhuǎn)將左側(cè)的像素點(diǎn)移到右側(cè),講右側(cè)的像素點(diǎn)移到左側(cè)。具體過程見圖5.3</p><p>  5-3圖像垂直翻轉(zhuǎn)流程圖</p><p><b>  關(guān)鍵代碼:</b></p><p>  BOOL CDIB::Rotate()</p><p><b>  

96、{</b></p><p>  if (m_lpBits == NULL) </p><p>  return FALSE;</p><p>  BYTE *pbits, *p1, *p2, *pa, *pb, *pa1, *pb1;</p><p>  int w2, h2, bw2, bw1, x, y;</p>

97、<p>  w2 = m_nHeight;</p><p>  h2 = m_nWidth;</p><p>  bw1 = BYTE_PER_LINE(m_nWidth, m_nBitCount);</p><p>  bw2 = BYTE_PER_LINE(w2, m_nBitCount);</p><p>  pbits

98、 = new BYTE[bw2*h2];</p><p>  if (m_nBitCount==24)</p><p><b>  {</b></p><p>  for (y=0; y<m_nHeight; y++)</p><p>  for (x=0; x<m_nWidth; x++)</p>

99、;<p><b>  {</b></p><p>  p1 = m_lpBits+bw1*y+x*3;</p><p>  p2 = pbits+bw2*(h2-x-1)+y*3;</p><p>  p2[0] = p1[0];</p><p>  p2[1] = p1[1];</p>&l

100、t;p>  p2[2] = p1[2];</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  return TRUE;</p><p><b>

101、  }</b></p><p><b>  }</b></p><p>  delete[] m_lpBits;</p><p>  m_lpBits = pbits;</p><p>  m_nWidth = w2;</p><p>  m_nHeight = h2;</p&g

102、t;<p>  return TRUE;</p><p><b>  }</b></p><p><b>  5.3圖像瀏覽模塊</b></p><p><b>  5.3.1圖像放大</b></p><p>  圖像放大是圖像按照比例擴(kuò)大,是改變位圖空間的大小。

103、獲得整個位圖的空間尺寸,在不改變位圖的大小,只是將位圖按照原來的大小僅改變相框的大小,而不改變相片的大小。具體流程如5. 4</p><p>  5-4圖像放大的流程圖</p><p><b>  關(guān)鍵代碼:</b></p><p><b>  {</b></p><p>  m_dRoom = m

104、_dRoom*1.2;</p><p>  SetModifiedFlag();</p><p>  UpdateAllViews(NULL);</p><p><b>  }</b></p><p><b>  5.3.2圖像縮小</b></p><p>  圖像縮小是圖像

105、按照比例縮小,是改變位圖空間的大小。獲得整個位圖的空間尺寸,在不改變位圖的大小,只是將位圖按照原來的大小僅改變相框的大小,而不改變相片的大小。具體流程如5. 5</p><p>  5-5圖像縮小的流程圖</p><p><b>  關(guān)鍵代碼:</b></p><p><b>  {</b></p><

106、p>  // TODO: Add your command handler code here</p><p>  m_dRoom = 1;</p><p>  SetModifiedFlag();</p><p>  UpdateAllViews(NULL);</p><p><b>  }</b></p&

107、gt;<p><b>  5.4圖像特效處理</b></p><p>  5.4.1圖像灰度化處理</p><p>  圖像灰度化將彩色圖像灰度化位黑白色的圖像,處理過程為:獲取指向BITMAPINFO結(jié)構(gòu)的指針(Win3.0)定義三個指針lpsrc指向轉(zhuǎn)置圖像對應(yīng)象素的lpdst指針指向轉(zhuǎn)置圖像的指針,lpnew暫時分配內(nèi)存,獲取原圖像的像素點(diǎn),利用灰

108、度化公式,相應(yīng)的像素點(diǎn)進(jìn)行處理,刪除原來的位圖,創(chuàng)建新的位圖,變成8色的位圖,創(chuàng)建新的調(diào)色板.具體過程見圖5.6</p><p>  5-6圖像灰度化流程圖</p><p><b>  關(guān)鍵代碼:</b></p><p>  BOOL CDIB::Grey()</p><p><b>  {</b>

109、</p><p>  if (!m_lpBits) </p><p>  return FALSE;</p><p>  int y, x, nByteWidth, palsize, grey;</p><p><b>  BYTE *p;</b></p><p>  nByteWidth = B

110、YTE_PER_LINE(m_nWidth, m_nBitCount);</p><p>  for (y=0; y<m_nHeight; y++)</p><p>  for (x=0; x<m_nWidth; x++)</p><p><b>  {</b></p><p>  p = m_lpBits+

111、nByteWidth*y+x*3;</p><p>  grey = (BYTE)(0.299*p[2]+0.587*p[1]+0.114*p[0]);</p><p>  p[0] = grey;</p><p>  p[1] = grey;</p><p>  p[2] = grey;</p><p><b&

112、gt;  }</b></p><p><b>  }</b></p><p><b>  5.4.2圖像負(fù)像</b></p><p>  圖像負(fù)像就是把圖像轉(zhuǎn)換為底片處理,圖像底片化是將圖像實(shí)現(xiàn)底片化效果,將原圖像像素點(diǎn)進(jìn)行反色處理,處理過程為:ondraw()函數(shù)獲取圖像的高度寬度,每行按四字節(jié)對齊。定義一個

113、文檔列指針。一個無符號型的指針對準(zhǔn)原圖像,對圖像進(jìn)行反色。內(nèi)層循環(huán)對每行的對每個像素點(diǎn)進(jìn)行反色,外層循環(huán)逐行進(jìn)行反色。詳細(xì)處理過程見圖5.7</p><p>  5-7圖像底片化處理</p><p><b>  關(guān)鍵代碼:</b></p><p>  BOOL CDIB::Negative()</p><p><b

114、>  {</b></p><p>  if (!m_lpBits) </p><p>  return FALSE;</p><p>  int y, x, nByteWidth, palsize;</p><p><b>  BYTE *p;</b></p><p><b

115、>  {</b></p><p>  nByteWidth = BYTE_PER_LINE(m_nWidth, m_nBitCount);</p><p>  for (y=0; y<m_nHeight; y++)</p><p>  for (x=0; x<m_nWidth; x++)</p><p><

116、b>  {</b></p><p>  p = m_lpBits+nByteWidth*y+x*3;</p><p>  p[0] = ~p[0];</p><p>  p[1] = ~p[1];</p><p>  p[2] = ~p[2];</p><p><b>  }</b&g

117、t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  6系統(tǒng)運(yùn)行與總結(jié)</b></p><p><b>  6.1圖像打開</b></p><p>  系統(tǒng)運(yùn)行后,點(diǎn)擊文件

118、菜單下的打開選項(xiàng),按照指示打開目標(biāo)圖像,打開圖像后如圖6.1所示。</p><p><b>  6.2水平翻轉(zhuǎn)</b></p><p>  運(yùn)行水平翻轉(zhuǎn)功能:打開目標(biāo)圖像后,單擊水平翻轉(zhuǎn)子菜單,經(jīng)處理過后的圖像如圖6.2</p><p><b>  6.3垂直翻轉(zhuǎn)</b></p><p>  運(yùn)行垂

119、直翻轉(zhuǎn)功能:打開目標(biāo)圖像,單擊垂直翻轉(zhuǎn)子菜單,經(jīng)處理過后的圖像如圖6.3</p><p><b>  6.4圖像放大</b></p><p>  運(yùn)行圖像放大功能:打開目標(biāo)圖像,單擊圖像放大子菜單,經(jīng)處理過后的圖像如圖6.4</p><p><b>  6.5圖像縮小</b></p><p>  運(yùn)

120、行圖像縮小功能:打開目標(biāo)圖像,單擊圖像縮小子菜單,經(jīng)處理過后的圖像如圖6.5</p><p><b>  6.6圖像灰度</b></p><p>  運(yùn)行圖像灰度功能:打開目標(biāo)圖像,單擊圖像灰度子菜單,經(jīng)處理過后的圖像如圖6.6</p><p><b>  6.7圖像負(fù)像</b></p><p> 

121、 運(yùn)行圖像負(fù)像功能:打開目標(biāo)圖像,單擊圖像負(fù)像子菜單,經(jīng)處理過后的圖像如圖6.7</p><p><b>  7結(jié)束語</b></p><p>  通過這次系統(tǒng)開發(fā),我學(xué)習(xí)了MFC知識,并運(yùn)用在了我的畢業(yè)設(shè)計(jì)中,我所學(xué)習(xí)到的MFC知識知識MFC庫中的一點(diǎn),仍有很多不懂的地方,在今后的學(xué)習(xí)中有機(jī)會仍蔣繼續(xù)。</p><p>  圍繞對一個具體的系

122、統(tǒng)的開發(fā),把計(jì)算機(jī)的理論與實(shí)踐相結(jié)合,豐富了自己的編程經(jīng)驗(yàn)。在這兩個多月里,我學(xué)到了許多以前沒有學(xué)到的知識和技能,鍛煉了自己的獨(dú)立思考能力和實(shí)際操作能力,系統(tǒng)整理了大學(xué)四年所學(xué)的知識。并自學(xué)了MFC框架開發(fā)技術(shù),VC++技術(shù),圖像處理等眾多的知識,特別是學(xué)會了對軟件開發(fā)中整個流程的分析。從系統(tǒng)需求分析開始,系統(tǒng)的分析和設(shè)計(jì)、系統(tǒng)的實(shí)施、編寫代碼、調(diào)試和書寫文檔以及最后運(yùn)行程序,這些練習(xí)都為我將來的學(xué)習(xí)和工作提供了良好的理論基礎(chǔ)和實(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論