版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> BMP圖像處理軟件的設(shè)計與實現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著時代的發(fā)展,科技的進步,一些簡單的圖片已經(jīng)不能滿足人們的需求。圖像運用的擴大與對圖像本身的精益求精,使人們越來越依賴于各種圖像處理軟件。各種圖像處理軟件也越來越完善,普及程度不斷的提高。</p><p> 本文用Visua
2、l C++作為開發(fā)工具,設(shè)計了一個BMP圖像處理軟件。該圖像處理軟件能夠?qū)崿F(xiàn)對BMP圖像的基本操作,如圖像的打開,關(guān)閉,保存;圖像的基本處理,如圖像放大、縮小、旋轉(zhuǎn)、轉(zhuǎn)置、二值化處理、中值濾波、邊緣檢測、直方圖以及馬賽克效果等等。論文首先分析了國內(nèi)外圖像處理軟件的現(xiàn)狀,以及發(fā)展趨勢,之后詳細地分析了本軟件的功能,完成了系統(tǒng)的總體設(shè)計和功能規(guī)劃,進而對每個模塊完成了詳細設(shè)計和實現(xiàn),最后完成了測試工作。結(jié)果表明,本系統(tǒng)能夠完成要求的所有功能
3、,軟件具有友好的用戶界面和良好的健壯性,具有一定的應(yīng)用價值。</p><p> 關(guān)鍵詞:Visual C++6.0;BMP;圖像處理;數(shù)字圖像處理;圖像處理軟件</p><p> Design and Implementation of BMP </p><p> Image Processing System</p><p><
4、b> Abstract</b></p><p> With the development of science, the simple pictures couldn’t meet people’s demand. The magnification of picture’s usage and the ever delicated image of picture itself, has
5、 made people more and more rely on several of picture-processing software. And the popularization of these softwares is going higher and higher, with the progress made by themselves.</p><p> I use Visual C+
6、+ development to build software which is used to deal with BMP images. This software can carry out some base operations of BMP images, such as open, close and save; some base processes of BMP images, such as magnify, shr
7、ink, rotate, binary process, mid-value filter, edge-detect, cauterization of pictures and the mosaic effect. This paper at first analyzed status of picture-processing software both of domestic an foreign, and the develop
8、ing trend,After analysis the function of this</p><p> KEY WORDS:Visual C++6.0;BMP;picture-processing;Digital Image Processing;</p><p> Image Processing Software</p><p><b>
9、主要符號表</b></p><p><b> 列矩陣</b></p><p><b> 橫矩陣</b></p><p> G,f 矩陣</p><p> w 寬</p><p&g
10、t; h 高 </p><p><b> 卷積算子 </b></p><p><b> 梯度幅值</b></p><p><b> 拉氏算子</b></p><p><b> 拉普拉斯算子</b>&
11、lt;/p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 主要符號表III</b></p><p><b> 1 緒論1</b&g
12、t;</p><p> 1.1本課題設(shè)計的背景1</p><p> 1.2本課題設(shè)計的目的和意義2</p><p> 1.3本課題國內(nèi)外研究狀況2</p><p> 1.4本課題研究的主要內(nèi)容3</p><p> 1.5現(xiàn)有圖像處理軟件4</p><p> 2 開發(fā)環(huán)境及主
13、要技術(shù)介紹5</p><p> 2.1 面向?qū)ο缶幊?</p><p> 2.2 Visual C++ 6.06</p><p> 2.2.1 Visual C++ 6.0概述6</p><p> 2.2.2 Visual C++ 6.0主要部分6</p><p><b> 2.3 MFC
14、7</b></p><p> 2.4設(shè)備上下文DC8</p><p> 2.5數(shù)字圖像處理基礎(chǔ)9</p><p> 2.5.1數(shù)字圖像概述9</p><p> 2.5.2圖像處理概述10</p><p> 2.5.3圖像的基本概念11</p><p> 2.5
15、.4 BMP位圖12</p><p> 3 系統(tǒng)總體設(shè)計13</p><p> 3.1系統(tǒng)總體框架設(shè)計13</p><p> 3.1.1系統(tǒng)的總體框架設(shè)計如下13</p><p> 3.1.2系統(tǒng)流程圖如下13</p><p> 3.1.3系統(tǒng)的模塊設(shè)計14</p><p>
16、; 4 系統(tǒng)詳細設(shè)計與實現(xiàn)17</p><p> 4.1BMP文件結(jié)構(gòu)17</p><p> 4.1.1BMP文件組成17</p><p> 4.1.2BMP文件頭17</p><p> 4.1.3BMP信息頭17</p><p> 4.1.4BMP顏色表18</p><p&
17、gt; 4.1.5BMP圖形數(shù)據(jù)18</p><p> 4.2 CDib類的設(shè)計19</p><p> 4.3 文件操作21</p><p> 4.3.1打開圖片21</p><p> 4.3.2保存圖片21</p><p> 4.4幾何變化21</p><p> 4.
18、4.1鏡像21</p><p> 4.4.2縮放22</p><p> 4.4.3圖像轉(zhuǎn)置22</p><p> 4.4.4圖像旋轉(zhuǎn)22</p><p> 4.5特效顯示22</p><p> 4.5.1馬賽克特效23</p><p> 4.5.2擴散效果23</
19、p><p> 4.5.3平滑效果23</p><p> 4.6灰度變化23</p><p> 4.6.1反色變化23</p><p> 4.6.2黑白變化24</p><p> 4.6.3灰度變化24</p><p> 4.7分析變化25</p><p&g
20、t; 4.7.1邊緣檢測25</p><p> 4.7.2銳化處理25</p><p> 4.7.3霓虹處理26</p><p> 4.7.4濾波處理26</p><p> 4.7.5曝光效果27</p><p> 4.7.6浮雕效果27</p><p> 4.7.7柔
21、化效果27</p><p><b> 5 系統(tǒng)測試28</b></p><p> 5.1測試目的28</p><p> 5.2測試效果28</p><p> 5.2.1文件操作29</p><p> 5.2.2幾何變化30</p><p> 5.2.
22、3特效顯示33</p><p> 5.2.4灰度變化35</p><p> 5.2.5分析變化36</p><p> 5.3 測試結(jié)論40</p><p><b> 6 結(jié)論41</b></p><p><b> 參考文獻42</b></p>
23、<p><b> 致 謝43</b></p><p> 畢業(yè)設(shè)計(論文)知識產(chǎn)權(quán)聲明44</p><p> 畢業(yè)設(shè)計(論文)獨創(chuàng)性聲明45</p><p><b> 附 錄46</b></p><p><b> 1 緒論</b></p
24、><p> 1.1本課題設(shè)計的背景</p><p> 從80年代中期以來,超大規(guī)模集成電路的發(fā)展,為圖形學(xué)的飛速發(fā)展奠定了物質(zhì)基礎(chǔ)。計算機的運算能力的提高,圖形處理速度的加快,使得圖形學(xué)的各個研究方向得到充分發(fā)展,圖形學(xué)已廣泛應(yīng)用于各個領(lǐng)域,代表性的應(yīng)用有:計算機輔助繪圖及設(shè)計、事務(wù)管理中的交匯式繪圖、科學(xué)計算可視化、過程控制、計算機動畫及廣告、計算機藝術(shù)、地形地貌和自然資源的圖形顯示、辦
25、公自動化及電子出版系統(tǒng)。</p><p> 把原始圖像與計算機結(jié)合起來,從而創(chuàng)作出許多更加完美的圖像,滿足了人們的需求。計算機圖像處理,是指利用計算機對圖像進行一系列加工,以便獲得人們所需要的效果。圖像是人類獲取和交換信息的主要來源,人類感知外界信息,80%以上是通過視覺得到的。因此,圖像處理的應(yīng)用領(lǐng)域必然涉及到人類生活和工作的方方面。隨著時代的進步,各種圖像處理軟件也越來越完善,人們對圖像的應(yīng)用和要求也越來越
26、精益,為了給觀看者更深刻的印象,關(guān)于圖片處理的軟件業(yè)收到了大家的歡迎和喜愛,所以圖像處理軟件能夠更好的滿足人們對圖像的需求,其中可以對圖片進行90度的改變和銳化處理。</p><p> 圖像是人類獲取信息、表達信息和傳遞信息的重要手段,圖像處理應(yīng)用廣泛,圖像處理軟件MATLAB雖然能夠?qū)?shù)字圖像進行方便的處理,并且其制作的界面也比較友好,但是由于其過于龐大,移植性和速度方面也很難與VC++相比。另外,由于商業(yè)化
27、的VC++圖像處理軟件價格比較昂貴,而且不便于二次開發(fā),本課題利用VC++集成開發(fā)環(huán)境開發(fā)一套簡單的圖像處理軟件系統(tǒng)。</p><p> 圖像處理技術(shù)起源比較早,但真正發(fā)展是在八十年代后,隨著計算機技術(shù)的高速發(fā)展而迅猛發(fā)展起來。圖像處理或圖像分析方法的應(yīng)用越來越廣泛,其主要理論基礎(chǔ)是形態(tài)數(shù)學(xué),立體學(xué),集合論等。圖像處理或圖像分析方法的應(yīng)用越來越廣泛,其主要理論基礎(chǔ)是形態(tài)數(shù)學(xué),立體學(xué),集合論等。圖像處理的應(yīng)用領(lǐng)域
28、很廣,大致可以分為六大領(lǐng)域以及十余個子領(lǐng)域:</p><p> 1.材料科學(xué):光學(xué)材料、金屬材料、晶體材料、陶瓷建筑材料</p><p> 2.地學(xué):巖礦結(jié)構(gòu)、巖體裂隙特征、土體顆粒</p><p> 3.生命科學(xué):生物、植物、醫(yī)學(xué)、基因</p><p> 4.地理學(xué):經(jīng)濟地理、土地資源、地貌、氣像學(xué)</p><p
29、> 5.機器人:包括電路設(shè)計、識別等</p><p> 6.鑒定:指紋鑒定、財務(wù)印章管理、防偽鑒定等</p><p> 常見的圖像處理有圖像數(shù)字化、圖像編碼、圖像增強、圖像復(fù)原、圖像分割</p><p> 與圖像分析等。經(jīng)過處理后的圖像,一定能夠更好的被用于工業(yè)或者個人目的。為此開發(fā)這個數(shù)字圖像處理軟件,能夠處理一些圖像,并對圖像處理技術(shù)此方面進行深入
30、的研究。</p><p> 1.2本課題設(shè)計的目的和意義</p><p> 目的:本次畢業(yè)設(shè)計是要完成一個BMP圖像處理軟件,其中包括對文件的讀取保存和修改(圖像的反轉(zhuǎn)和銳化)。讀取文件中的圖片可以對文件中的圖片進行讀取,在修改后也可以保存修改后的文件,對圖片進行處理主要是運用指針和模板等對圖像可以進行翻轉(zhuǎn)和銳化。BMP圖像處理軟件是對BMP圖像的基本操作,比如圖像的打開、關(guān)閉、保存,
31、主要是通過對圖像中的每一個像素點運用各種圖像處理算法來達到預(yù)期的效果;BMP圖像的基本處理,圖像的基本處理,如圖像放大、縮小、旋轉(zhuǎn)、轉(zhuǎn)置、二值化處理等等。</p><p> 意義:圖像對于人眼來說是模糊的甚至是不可見的,通過圖象增強技術(shù),可以使模糊甚至不可見的圖像變得清晰明亮,通過圖像處理中的技術(shù),可以將人眼無法識別的圖像進行分類處理,該技術(shù)已經(jīng)廣泛深入地應(yīng)用于國計民生休戚相關(guān)的各個領(lǐng)域,更加滿足人們對于圖像的
32、需求。</p><p> 1.3本課題國內(nèi)外研究狀況</p><p> 麻省理工學(xué)院(MIT)旋風(fēng)I號(Whirlwind I)計算機的附件誕生了。該顯示器用一個類似于示波器的陰極射線管(CRT)來顯示一些簡單的圖形。1958年美國Calcomp公司由聯(lián)機的數(shù)字記錄儀發(fā)展成滾筒式繪圖儀,GerBer公司把數(shù)控機床發(fā)展成為平板式繪圖儀。在整個50年代,只有電子管計算機,用機器語言編程,主
33、要應(yīng)用于科學(xué)計算,為這些計算機配置的圖形設(shè)備僅具有輸出功能。計算機圖形學(xué)處于準(zhǔn)備和醞釀時期,并稱之為:“被動式”圖形學(xué)。</p><p> 從1962年,林肯實驗室的Sutherland發(fā)表一篇題為“一個人機交互通信的圖形系統(tǒng)”的博士論文,他在論文中首次使用計算機圖形學(xué)“Computer Graphics”這個術(shù)語,證明交互計算機圖形學(xué)是一個可行的、有用的研究領(lǐng)域,從而確定計算機圖形學(xué)作為一個嶄新的科學(xué)分支的獨
34、立地位屹立于計算機領(lǐng)域。此后,國內(nèi)外都很重視圖形學(xué)的發(fā)展以及研究,各種各樣的圖像處理軟件顯現(xiàn)出來,比如PhotoShop和Picasa。 </p><p> 70年代是計算機圖形學(xué)發(fā)展過程中一個重要的歷史時期。由于光柵顯示器的產(chǎn)生,在60年代就已萌芽的光柵圖形學(xué)算法,迅速發(fā)展起來,區(qū)域填充、裁剪、消隱等基本圖形概念、及其相應(yīng)算法紛紛誕生,圖形學(xué)進入第一個興盛的時期,并開始出現(xiàn)實用的CAD圖形系統(tǒng)。又因為通用、與
35、設(shè)備無關(guān)的圖形軟件的發(fā)展,圖形軟件功能的標(biāo)準(zhǔn)化問題被提出來。1974年,美國國家標(biāo)準(zhǔn)化局(ANSI)在ACM SIGGRAPH的一個與“與機器無關(guān)的圖形技術(shù)”的工作會議上,提出制定有關(guān)標(biāo)準(zhǔn)的基本規(guī)則。此后ACM專門成立一個圖形標(biāo)準(zhǔn)化委員會,開始制定有關(guān)標(biāo)準(zhǔn)。該委員會于1977、1979年先后制定和修改 “核心圖形系統(tǒng)”(Core Graphics System)。ISO隨后又發(fā)布了計算機圖形接口CGI(Computer Graphics
36、 Interface)、計算機圖形元文件標(biāo)準(zhǔn)CGM(Computer Graphics Metafile)、計算機圖形核心系統(tǒng)GKS(Graphics Kernel system)、面向程序員的層次交互圖形標(biāo)準(zhǔn) PHIGS(Programmer's Hierarchical Interactive Gr</p><p> 國內(nèi)在此領(lǐng)域的研究中最具有代表性的是夢幻科技推出的彩影圖形處理和相片制作軟件,彩影
37、擁有非常智能、傻瓜而功能強大的圖像處理、修復(fù)和合成功能。解決了國內(nèi)外圖像處理軟件過于復(fù)雜、不易操作的問題,讓所有用戶不需要專業(yè)的圖像美工技能即可輕松點擊并制作出絢麗多彩的圖像特效圖。 新一代在線圖像編輯軟件OPCOL是國內(nèi)領(lǐng)先的在線圖像處理系統(tǒng),它采用最新Flash技術(shù)開發(fā),不用下載任何插件,只需flash10的支持即可實現(xiàn)在線圖片編輯,可無縫嵌入主流瀏覽器, 具有文件體積小速度快,兼容各種瀏覽器等特點;適于各種自動在線圖片編輯的場合使
38、用,是未來網(wǎng)站的一個新功能和亮點,滿足您的創(chuàng)新需求,解決網(wǎng)站在線圖片編輯難題。</p><p> 美國MathWorks公司出品的MATLAB軟件,功能十分強大,它主要應(yīng)用于工程計算、信號處理與通訊、圖像處理等領(lǐng)域。MATLAB之所以稱為世界流行的科學(xué)計算與數(shù)學(xué)應(yīng)用軟件,是因為它有著強大的矩陣運算和處理功能,具體表現(xiàn)在強大的數(shù)值計算功能、數(shù)據(jù)分析和科學(xué)計算可視化功能、強大的符號計算功能、強大的非線性動態(tài)系統(tǒng)建模
39、和仿真功能、靈活的程序接口功能等方面。而數(shù)字圖像處理與矩陣運算具有密切的聯(lián)系,并且MATLAB 圖像處理工具箱提供了豐富的圖像處理函數(shù),熟練使用這些函數(shù)可以完成幾乎所有的圖像處理工作。應(yīng)用MATLAB進行數(shù)字圖像處理可以節(jié)省大量編寫低層算法源代碼的時間,避免程序設(shè)計中的重復(fù)勞動,達到事半功倍的效果。另外,新版本的MATLAB在圖形用戶界面(GUI)的制作上作了很大的改善。MATLAB的不足之處是運行程序時需要安裝有MATLAB系統(tǒng),可移
40、植性能差,應(yīng)用不方便,執(zhí)行速度慢。 Photoshop是Adobe公司開發(fā)的世界上最優(yōu)秀的平面圖像處理軟件之一,集圖像掃描、編輯 修改、圖像制作、廣告創(chuàng)意,圖像輸入與輸出與一體,在圖像處理及平面設(shè)計領(lǐng)域里,Photoshop一直都以界面美觀,操</p><p> 1.4本課題研究的主要內(nèi)容</p><p> 本課題主要研究如何利用Visual C++ 集成開發(fā)環(huán)境開發(fā)一個圖像處理軟件。
41、在熟悉圖像處理相關(guān)技術(shù),熟悉圖像處理各種算法之后,在Windows操作系統(tǒng)下,利用C++語言在Visual C++ 6.0開發(fā)環(huán)境下,設(shè)計和實現(xiàn)一個圖像處理軟件。本圖像處理軟件實現(xiàn)對BMP圖像的基本操作,主要有五部分:圖像的文件操作、圖像的幾何變換、圖像的特效顯示、圖像的灰度變化、圖像的分析變化,用各種圖像處理軟件的算法實現(xiàn)其各個模塊的功能。</p><p> 1.5現(xiàn)有圖像處理軟件</p>&l
42、t;p> 隨著對圖像處理需求的擴大,現(xiàn)有的圖像處理軟件多種多樣,數(shù)不勝數(shù)。本文簡單介紹兩個比較有代表性的圖像處理軟件:Photoshop和Picasa。</p><p> Photoshop簡介:Photoshop是平面圖像處理業(yè)界霸主Adobe公司推出的跨越PC和MAC兩界首屈一指的大型圖像處理軟件。它功能強大,操作界面友好,得到廣大第三方開發(fā)廠家的支持,從而也贏得眾多的用戶的青睞。Photoshop
43、是目前公認的最好的通用平面美術(shù)設(shè)計軟件,它的功能完善,性能穩(wěn)定,使用方便,所以在幾乎所有的廣告、出版、軟件公司,Photoshop都是首選的平面工具。它是專門用來進行圖像處理的軟件。通過它可以對圖像修飾、對圖形進行編輯,以及對圖像的色彩處理,另外,還有繪圖和輸出功能等。在實際生活和工作中,可以將數(shù)碼照相機拍攝下來的照片進行編輯和修飾,也可以將現(xiàn)有的圖形和照片,用掃描儀掃入計算機進行加工處理,還可以把攝像機攝入的內(nèi)容轉(zhuǎn)移到計算機上,然后用
44、它實現(xiàn)對影像的潤色。</p><p> Picasa簡介:Google Picasa原為獨立收費的圖片處理軟件,其界面美觀華麗,功能實用豐富。被Google收購后,已改為完全免費軟件。只需擁有Picasa,你就可以隨心所欲地體驗?zāi)愕母枳V圖片和數(shù)碼相。Google照片處理軟件尤其適合于初級數(shù)碼照片愛好者使用,Picasa可以通過簡單的單次點擊式修正來進行高級修改處理,只需動動指尖來處理相片即可獲得震撼效果。它是一
45、個可在計算機上查看、整理、修改和共享圖片的軟件,它會讓所有這些工作變得簡單而有趣。Picasa 不會未經(jīng)您的允許就刪除圖片或?qū)D片放到網(wǎng)絡(luò)上。它自動將你的相片從你的數(shù)碼相機傳輸?shù)侥愕碾娔X上 ,管理圖片并讓你能在幾秒中內(nèi)查找到所需的圖片,讓你輕松地編輯, 打印以及共享相片 ,創(chuàng)建幻燈片,定購打印以及其它更多。Picasa會自動根據(jù)照片拍攝的時間,目錄,機型來判斷,自動建立像簿,查找方便,還有timeline功能。</p>&
46、lt;p> 2 開發(fā)環(huán)境及主要技術(shù)介紹</p><p> 2.1 面向?qū)ο缶幊?lt;/p><p> 面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計)計算機編程架構(gòu)。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 達到了軟件工程的三個主要目標(biāo):重用性、靈活性和擴展性。為了實現(xiàn)整體運算,每個對
47、象都能夠接收信息、處理數(shù)據(jù)和向其它對象發(fā)送信息。</p><p> 面向?qū)ο蟪绦蛟O(shè)計中的概念主要包括:對象、類、數(shù)據(jù)抽象、繼承、動態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。</p><p> 1.對象(Object) :可以對其做事情的一些東西。一個對象有狀態(tài)、行為和標(biāo)識三種屬性。</p><p> 2.類(class)
48、:一個共享相同結(jié)構(gòu)和行為的對象的集合。</p><p> 3.封裝(encapsulation): 第一層意思:將數(shù)據(jù)和操作捆綁在一起,創(chuàng)造出一個新的類型的過程。第二層意思:將接口與實現(xiàn)分離的過程。</p><p> 4.繼承:類之間的關(guān)系,在這種關(guān)系中,一個類共享了一個或多個其他類定義的結(jié)構(gòu)和行為。繼承描述了類之間的“是一種”關(guān)系。子類可以對基類的行為進行擴展、覆蓋、重定義。<
49、/p><p> 5.組合:既是類之間的關(guān)系也是對象之間的關(guān)系。在這種關(guān)系中一個對象或者類包含了其他的對象和類。</p><p> 組合描述了“有”關(guān)系。</p><p> 6.多態(tài):類型理論中的一個概念,一個名稱可以表示很多不同類的對象,這些類和一個共同超類有關(guān)。因此,這個名稱表示的任何對象可以以不同的方式響應(yīng)一些共同的操作集合。</p><p
50、> 7.動態(tài)綁定:也稱動態(tài)類型,指的是一個對象或者表達式的類型直到運行時才確定。通常由編譯器插入特殊代碼來實現(xiàn)。與之對立的是靜態(tài)類型。</p><p> 8.靜態(tài)綁定:也稱靜態(tài)類型,指的是一個對象或者表達式的類型在編譯時確定。</p><p> 9.消息傳遞:指的是一個對象調(diào)用了另一個對象的方法(或者稱為成員函數(shù))。</p><p> 10.方法:也稱
51、為成員函數(shù),是指對象上的操作,作為類聲明的一部分來定義。方法定義了可以對一個對象執(zhí)行那些操作。</p><p><b> 面向?qū)ο笾饕卣鳎?lt;/b></p><p> 封裝性:封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說明,是對象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個整體,以實現(xiàn)獨立性很強的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有
52、那些處理能力),而對象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實現(xiàn)加工能力的算法)對用戶是隱蔽的。封裝的目的在于把對象的設(shè)計者和對象者的使用分開,使用者不必知曉行為實現(xiàn)的細節(jié),只須用設(shè)計者提供的消息來訪問該對象。</p><p> 繼承性:繼承性是子類自動共享父類之間數(shù)據(jù)和方法的機制。它由類的派生功能體現(xiàn)。一個類直接繼承其它類的全部描述,同時可修改和擴充。繼承具有傳遞性。繼承分為單繼承(一個子類只有一父類)和多重繼承
53、(一個類有多個父類)。類的對象是各自封閉的,如果沒繼承性機制,則類對象中數(shù)據(jù)、方法就會出現(xiàn)大量重復(fù)。繼承不僅支持系統(tǒng)的可重用性,而且還促進系統(tǒng)的可擴充性。</p><p> 多態(tài)性:對象根據(jù)所接收的消息而做出動作。同一消息為不同的對象接受時可產(chǎn)生完全不同的行動,這種現(xiàn)象稱為多態(tài)性。利用多態(tài)性用戶可發(fā)送一個通用的信息,而將所有的實現(xiàn)細節(jié)都留給接受消息的對象自行決定,如是,同一消息即可調(diào)用不同的方法。例如:Prin
54、t消息被發(fā)送給一圖或表時調(diào)用的打印方法與將同樣的Print消息發(fā)送給一正文文件而調(diào)用的打印方法會完全不同。多態(tài)性的實現(xiàn)受到繼承性的支持,利用類繼承的層次關(guān)系,把具有通用功能的協(xié)議存放在類層次中盡可能高的地方,而將實現(xiàn)這一功能的不同方法置于較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應(yīng)。在OOPL中可通過在派生類中重定義基類函數(shù)(定義為重載函數(shù)或虛函數(shù))來實現(xiàn)多態(tài)性。</p><p> 2.2
55、 Visual C++ 6.0</p><p> 2.2.1 Visual C++ 6.0概述</p><p> Visual C++ 6.0,簡稱VC或VC6.0,是微軟推出的一款C++編譯器,將“高級語言”翻譯為“低級語言”的程序。它不僅是一個C++編譯器,而且是一個基 于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrat
56、ed development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)pp Wizard、類向?qū)lass Wizard等開發(fā)工具。這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。</p><p> Visual C++ 6.0以擁有“語法高亮”,IntelliSense(自動編譯功能)以及高級除錯功能而著稱。比
57、如,它允許用戶進行遠程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重建功能及累加連結(jié)著稱。這些特征明顯縮短程式編輯、編譯及連結(jié)的時間花費,在大型軟件計劃上尤其顯著。</p><p> 2.2.2 Visual C++ 6.0主要部分</p><p> Developer Studio</p>
58、<p> 這是一個集成開發(fā)環(huán)境,我們?nèi)粘9ぷ鞯?9%都是在它上面完成的,再加上它的標(biāo)題赫然寫著“Microsoft Visual C++”,所以很多人理所當(dāng)然的認為,那就是Visual C++了。其實不然,雖然Developer Studio提供了一個很好的編輯器和很多Wizard,但實際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會介紹。我們也知道,Developer Studio并不是專門用于VC
59、的,它也同樣用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio當(dāng)成Visual C++,它充其量只是Visual C++的一個殼子而已。</p><p><b> b. MFC</b></p><p> 從理論上來講,MFC也不是專用于Visual C++,Borland C++,C++Builder和
60、Symantec C++同樣可以處理MFC。同時,用Visual C++編寫代碼也并不意味著一定要用MFC,只要愿意,用Visual C++來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,Visual C++本來就是為MFC打造的,Visual C++中的許多特征和語言擴展也是為MFC而設(shè)計的,所以用Visual C++而不用MFC就等于拋棄了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC
61、。</p><p> c. Platform SDK</p><p> 這才是Visual C++和整個Visual Studio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,Platform SDK是以Microsoft C/C++編譯器為核心(不是Visual C++,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到Developer Studio沒有編譯程序的
62、功能,這項工作是由是CL來完成的,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構(gòu)成Visual Studio的基石。</p><p><b> 2.3 MFC</b></p><p> MFC(Microsoft Foundation Classes),是一個微軟公司提供的類庫(class libraries),以C++類的形式封裝了Windo
63、ws的API,并且包含一個應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。</p><p><b> MFC的關(guān)鍵技術(shù):</b></p><p> 1. MFC程序的初始化過程</p><p> 建立一個MFC窗口很容易,只用兩步:一是從CWinApp
64、派生一個應(yīng)用程序類,然后建立應(yīng)用程序?qū)ο螅╰heApp),就可以產(chǎn)生一個自己需要的窗口。</p><p> 2.運行時類型識別(RTTI)</p><p> 運行時類型識別(RTTI)即是程序執(zhí)行過程中知道某個對象屬于某個類,平時用C++編程接觸的RTTI一般是編譯器的RTTI,即是在新版本的VC++編譯器里面選用“使能RTTI”,然后載入typeinfo.h文件,就可以使用一個叫ty
65、peid()的運算子,它的地位與在C++編程中的sizeof()運算子類似的地方(包含一個頭文件,然后就有一個熟悉好用的函數(shù))。typeid()關(guān)鍵的地方是可以接受兩個類型的參數(shù):一個是類名稱,一個是對象指針。</p><p><b> 3.動態(tài)創(chuàng)建</b></p><p> 動態(tài)創(chuàng)建就是運行時創(chuàng)建指定類的對象,在MFC中大量使用。如框架窗口對象、視對象,還有文檔
66、對象都需要由文檔模板類對象來動態(tài)的創(chuàng)建。</p><p><b> 4.永久保存</b></p><p> MFC的連續(xù)存儲(serialize)機制俗稱串行化。這里的永久保存是站在Application Framework的角度來說的。即保存一些數(shù)據(jù),框架通過讀這些數(shù)據(jù)能夠自動把原本的對象重構(gòu)出來。這里也是通過兩類宏實現(xiàn)的。這兩類宏分別是在類中增加operato
67、r>>友元函數(shù)(把數(shù)據(jù)串行化到文件中)的聲明和定義。</p><p><b> 5.消息映射</b></p><p> 消息映射與命令傳遞體現(xiàn)了MFC與SDK的不同。在SDK編程中,沒有消息映射的概念,它有明確的回調(diào)函數(shù)中,通過一個switch語句去判斷收到了何種消息,然后對這個消息進行處理。所以,在SDK編程中,會發(fā)送消息和在回調(diào)函數(shù)中處理消息就差不
68、多可以寫SDK程序了。</p><p> 在MFC中,看上去發(fā)送消息和處理消息比SDK更簡單、直接,但可惜不直觀。舉個簡單的例子,如果想自定義一個消息,SDK是非常簡單直觀的,用一條語句:SendMessage(hwnd,message/*一個大于或等于WM_USER的數(shù)字*/,wparam,lparam),之后就可以在回調(diào)函數(shù)中處理了。但MFC就不同了,因為你通常不直接去改寫窗口的回調(diào)函數(shù),所以只能亦步亦趨對
69、照原來的MFC代碼,把消息放到恰當(dāng)?shù)牡胤健?lt;/p><p><b> 6.消息傳遞</b></p><p> 在MFC的消息不僅僅是在派生類和基類之間流動,還可以在同一層次之間流動。對于WM_COMMAND來說,消息處理的順序可以整理為:Frame窗口先接受到消息,依次判斷View、Frame窗口本身、CWinApp的DefWndProc是否處理,如果View要處
70、理消息他也會依次判斷View本身處理還是Document處理,如果是Document處理他也會依次判斷Document本事處理還是Document Template處理。</p><p> 因為上面類的層次關(guān)系。對于消息的傳遞只能通過靜態(tài)、全局函數(shù)、虛函數(shù)來完成。</p><p> 2.4設(shè)備上下文DC</p><p> 設(shè)備上下文DC(Device Cont
71、ext又稱設(shè)備環(huán)境,也稱設(shè)備描述表)是一個Windows數(shù)據(jù)結(jié)構(gòu),它包含了某個設(shè)備的繪制屬性。是一個關(guān)于如何繪制圖形的方法的集合,它可以繪制各種圖形,確定在應(yīng)用窗口中繪制圖形的方式,即確定繪圖模式和映射模式。在繪圖之前,必須獲取繪圖窗口區(qū)域的一個設(shè)備環(huán)境DC。接著進行GDI函數(shù)的調(diào)用,執(zhí)行適合于設(shè)備環(huán)境DC的命令。獲取DC時,Windows初始化了一套完整的屬性和對象集合,可以使用它們渲染顯示。為了創(chuàng)建自己應(yīng)用程序的特定顯示,可以更改這
72、些屬性和對象。Windows的設(shè)備環(huán)境是GDI的關(guān)鍵元素,它代表了不同的物理設(shè)備。分為4種類型,包括顯示器型,打印機型,內(nèi)存型和信息型。</p><p> 2.5數(shù)字圖像處理基礎(chǔ)</p><p> 2.5.1數(shù)字圖像概述</p><p> 人眼能識別的自然景象或圖像原也是一種模擬信號,為了使計算機能夠記錄和處理圖像、圖形,必須首先使其數(shù)字化。數(shù)字化后的圖像、圖
73、形稱為數(shù)字圖像、數(shù)字圖形,一般也簡稱為圖像、圖形。</p><p> 數(shù)字圖像可以看成一個矩陣,或一個二維數(shù)組,這是在計算機上表示的方式。一幅M×N個像素的數(shù)字圖像,其像素灰度值可以用M行、N列的矩陣[G]表示: </p><p><b> (2.1)</b></p><p> 在存儲數(shù)字圖像時,一幅M行、N列的數(shù)字圖像(M
74、215;N個像素),可以用一個M×N的二維數(shù)組T表示。圖像的各個像素灰度值可按一定順序存放在數(shù)組T中。</p><p> 在計算機中,按照顏色和灰度的多少可以將圖像分為二值圖像、灰度圖像、索引圖像和真彩色RGB圖像四種基本類型。大多數(shù)圖像處理軟件都支持這四種類型的圖像。</p><p><b> a. 二值圖像</b></p><p&
75、gt; 一幅二值圖像的二維矩陣僅由0、1兩個值構(gòu)成,“0”代表黑色,“1”代白色。由于每一像素(矩陣中每一元素)取值僅有0、1兩種可能,所以計算機中二值圖像的數(shù)據(jù)類型通常為1個二進制位。二值圖像通常用于文字、線條圖的掃描識別(OCR)和掩膜圖像的存儲。</p><p><b> b. 灰度圖像</b></p><p> 灰度圖像矩陣元素的取值范圍通常為[0,25
76、5]。因此其數(shù)據(jù)類型一般為8位無符號整數(shù)的(int8),這就是人們經(jīng)常提到的256灰度圖像?!?”表示純黑色,“255”表示純白色,中間的數(shù)字從小到大表示由黑到白的過渡色。在某些軟件中,灰度圖像也可以用雙精度數(shù)據(jù)類型(double)表示,像素的值域為[0,1],0代表黑色,1代表白色,0到1之間的小數(shù)表示不同的灰度等級。二值圖像可以看成是灰度圖像的一個特例。</p><p><b> c. 索引圖像&
77、lt;/b></p><p> 索引圖像的文件結(jié)構(gòu)比較復(fù)雜,除了存放圖像的二維矩陣外,還包括一個稱之為顏色索引矩陣MAP的二維數(shù)組。MAP的大小由存放圖像的矩陣元素值域決定,如矩陣元素值域為[0,255],則MAP矩陣的大小為2563,用MAP=[RGB]表示。MAP中每一行的三個元素分別指定該行對應(yīng)顏色的紅、綠、藍單色值,MAP中每一行對應(yīng)圖像矩陣像素的一個灰度值,如某一像素的灰度值為64,則該像素就與
78、MAP中的第64行建立了映射關(guān)系,該像素在屏幕上的實際顏色由第64行的[RGB]組合決定。也就是說,圖像在屏幕上顯示時,每一像素的顏色由存放在矩陣中該像素的灰度值作為索引通過檢索顏色索引矩陣MAP得到。索引圖像的數(shù)據(jù)類型一般為8位無符號整形(int8),相應(yīng)索引矩陣MAP的大小為2563,因此一般索引圖像只能同時顯示256種顏色,但通過改變索引矩陣,顏色的類型可以調(diào)整。索引圖像的數(shù)據(jù)類型也可采用雙精度浮點型(double)。索引圖像一般
79、用于存放色彩要求比較簡單的圖像,如Windows中色彩構(gòu)成比較簡單的壁紙多采用索引圖像存放,如果圖像的色彩比較復(fù)雜,就要用到RGB真彩色圖像。</p><p> d. RGB彩色圖像</p><p> RGB圖像與索引圖像一樣都可以用來表示彩色圖像。與索引圖像一樣,它分別用紅(R)、綠(G)、藍(B)三原色的組合來表示每個像素的顏色。但與索引圖像不同的是,RGB圖像每一個像素的顏色值(
80、由RGB三原色表示)直接存放在圖像矩陣中,由于每一像素的顏色需由R、G、B三個分量來表示,M、N分別表示圖像的行列數(shù),三個MN的二維矩陣分別表示各個像素的R、G、B三個顏色分量。RGB圖像的數(shù)據(jù)類型一般為8位無符號整形,通常用于表示和存放真彩色圖像,當(dāng)然也可以存放灰度圖像。</p><p> 2.5.2圖像處理概述</p><p> 所謂數(shù)字圖像處理(Digital Image Pro
81、cessing),就是指用數(shù)字計算機及其他相關(guān)的數(shù)字技術(shù),對數(shù)字圖像施加某種或某些運算和處理,從而達到某種預(yù)期的處理目的。數(shù)字圖像處理是通過計算機對圖像進行去除噪聲、增強、復(fù)原、分割、提取特征等處理的方法和技術(shù)。數(shù)字圖像處理的產(chǎn)生和迅速發(fā)展主要受三個因素的影響:一是計算機的發(fā)展;二是數(shù)學(xué)的發(fā)展(特別是離散數(shù)學(xué)理論的創(chuàng)立和完善);三是廣泛的農(nóng)牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫(yī)學(xué)等方面的應(yīng)用需求的增長。</p><p>
82、; 數(shù)字圖像處理就是利用計算機對圖像信息進行加工以滿足人的視覺心理或者應(yīng)用需求的行為。實質(zhì)上是一段能夠被計算機還原顯示和輸出為一幅圖像的數(shù)字碼。21世紀是一個充滿信息的時代,圖像作為人類感知世界的視覺基礎(chǔ),是人類獲取信息、表達信息和傳遞信息的重要手段。數(shù)字圖像處理,即用計算機對圖像進行處理,其發(fā)展歷史并不長。數(shù)字圖像處理技術(shù)源于20世紀20年代,當(dāng)時通過海底電纜從英國倫敦到美國紐約傳輸了一幅照片,采用了數(shù)字壓縮技術(shù)。首先數(shù)字圖像處理技
83、術(shù)可以幫助人們更客觀、準(zhǔn)確地認識世界,人的視覺系統(tǒng)可以幫助人類從外界獲取3/4以上的信息,而圖像、圖形又是所有視覺信息的載體,盡管人眼的鑒別力很高,可以識別上千種顏色,但很多情況下,圖像對于人眼來說是模糊的甚至是不可見的,通過圖象增強技術(shù),可以使模糊甚至不可見的圖像變得清晰明亮。另一方面,通過數(shù)字圖像處理中的模式識別技術(shù),可以將人眼無法識別的圖像進行分類處理。通過計算機模式識別技術(shù)可以快速準(zhǔn)確的檢索、匹配和識別出各種東西。</p&
84、gt;<p> 2.5.3圖像的基本概念</p><p><b> a. 像素 </b></p><p> 顯示器的屏幕是由許多點構(gòu)成的,這些點稱為像素。因而,像素其實指的就是點。 </p><p><b> b. 調(diào)色板 </b></p><p> 現(xiàn)實世界的顏色種類是無限
85、的,但計算機顯示系統(tǒng)所能表示的顏色數(shù)量是有限的。為了使計算機能最逼真的重現(xiàn)世界,就必須采用一定的技術(shù)來管理和取舍顏色,為了完成這一任務(wù),調(diào)色板做出了不可磨滅的貢獻。受計算機顯示系統(tǒng)顯示功能的限制,當(dāng)今的顯示器一般只支持16色、256色和真色彩(16777216色)。如果一幅圖像的每一個像素都用其R、G、B(Red、Green、Blue)分量值來表示,那么,所有的圖像文件都將變得非常龐大。例如,一幅200×200的16色圖像共4
86、0000個像素。如果每個像素都用 R、G、B這三個分量值來表示(每個分量占1B(Bate)),則每個像素需要3B,保存整個圖像共需要200×200×3B,即120000B。但如果采用一個顏色表,表中每一行紀錄一種顏色的R、G、B值,這樣,當(dāng)表示一個像素的顏色時,只需指出該顏色在顏色表中的索引即可。通過索引表來表示顏色,則16色只需4位,即lB可以表示兩個像素。保存整個圖像只用200×200×0.5
87、B,即20000B,再加上顏色表占用的3×16=48B,也不過20048B。可見,使用顏色表的16色圖像的存儲量只有未用顏色表的16色圖像的1/6</p><p> 調(diào)色板(Palette)也可以叫顏色查找表,是指在16色或256色顯示系統(tǒng)中由圖像中出現(xiàn)最頻繁的16種或256種顏色所組成的顏色表。對這些顏色按4位(16色)或8位(256色),即O~15或0~255進行編號(索引號)代表R、G、B,3個
88、分量24位顏色值。使用調(diào)色板的圖像叫做調(diào)色板圖像。對調(diào)色板圖像而言,它們的像素值不是顏色值,而是顏色在調(diào)色板查找表中的索引號。 </p><p> 雖然采用調(diào)色板技術(shù)可以大大節(jié)省存儲圖像的空間,但它不是萬能的,因為任何一 門技術(shù)的應(yīng)用都有它的先決條件。對于256色的系統(tǒng),一般都是采用調(diào)色板技術(shù)。而對于24位真色彩系統(tǒng),一般不采用調(diào)色板,直接使用R、G、B值表示像素值,即用3B 來表示一個真色彩像素的顏色值,R、
89、G、B的值分別用lB來表示。否則的話,非但不能減少圖像的存儲空間,反而會額外增加一個調(diào)色板的存儲空間。同時,天才的Windows 操作系統(tǒng)開發(fā)者為了保證Windows基本顯示界面的一致性而保留了一個有20種顏色的內(nèi)部系統(tǒng)調(diào)色板,用來繪制窗口的圖標(biāo)、邊界和按鈕等,以免Windows操作界面被使用者搞得亂七八糟。這個系統(tǒng)調(diào)色板在所有的顯示設(shè)置中都保持不變。因此,在16色的顯示系統(tǒng)中,一般也不操作調(diào)色板,而是直接使用系統(tǒng)調(diào)色板。 </p
90、><p> 2.5.4 BMP位圖</p><p> BMP是英文Bitmap(位圖)的簡寫,它是Windows操作系統(tǒng)中的標(biāo)準(zhǔn)圖像文件格式,能夠被多種Windows應(yīng)用程序所支持。BMP是使用像素陣列來表示的圖像,每個像素的色彩信息由RGB組合或者灰度值表示。根據(jù)顏色信息所需的數(shù)據(jù)位分為1、4、8、16、24及32位等,位數(shù)越高顏色越豐富,相應(yīng)的數(shù)據(jù)量越大。其中使用1位表示一個像素顏色的
91、位圖因為一個數(shù)據(jù)位只能表示兩種顏色,所以又稱為二值位圖。通常使用24位RGB組合數(shù)據(jù)位表示的的位圖稱為真彩色位圖。</p><p> 位圖一共有兩種類型,即:設(shè)備相關(guān)位圖(DDB)和設(shè)備無關(guān)位圖(DIB)。本系統(tǒng)用的是設(shè)備無關(guān)位圖DIB。</p><p><b> BMP文件結(jié)構(gòu):</b></p><p> 位圖文件由4個部分組成:位圖文
92、件頭(bitmap-file header)、位圖信息頭(bitmap-information header)、顏色表(color table)和定義位圖的字節(jié)(位圖數(shù)據(jù),即圖像數(shù)據(jù),Data Bits或Data Body)陣列。圖2.1為位圖結(jié)構(gòu)圖。</p><p> 圖2.1位圖文件結(jié)構(gòu)圖</p><p><b> 3 系統(tǒng)總體設(shè)計</b></p>
93、;<p> 3.1系統(tǒng)總體框架設(shè)計</p><p> 圖像處理的內(nèi)容十分豐富,應(yīng)用領(lǐng)域也十分廣范。本系統(tǒng)主要是通過Visual C++開發(fā)環(huán)境搭建一個圖像處理的平臺,設(shè)計了一個BMP圖像處理軟件。整個系統(tǒng)根據(jù)需求及各個算法之間的關(guān)系,由如下5個模塊及其子模塊構(gòu)成,主要有五部分:圖像的文件操作、圖像的幾何變換、圖像的特效顯示、圖像的灰度變化、圖像的分析變化。</p><p>
94、; 3.1.1系統(tǒng)的總體框架設(shè)計如下</p><p> 圖3.1系統(tǒng)總體框架圖</p><p> 3.1.2系統(tǒng)流程圖如下</p><p><b> 圖3.2系統(tǒng)流程圖</b></p><p> 3.1.3系統(tǒng)的模塊設(shè)計</p><p> 系統(tǒng)采用模塊化設(shè)計,根據(jù)圖像處理的內(nèi)容將整個系
95、統(tǒng)劃分為5個模塊,每個模塊下又有各自的子模塊。具體模塊設(shè)計如下:</p><p><b> a.文件操作模塊</b></p><p> 將指定位圖文件的數(shù)據(jù)讀入到相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,以便進一步處理,再將處理后的數(shù)據(jù)以位圖的格式加以保存。該模塊主要是對BMP圖像進行打開、保存操作。其功能模塊圖如圖3.3所示:</p><p> 圖3.3文件操
96、作模塊功能結(jié)構(gòu)圖</p><p><b> b.幾何變換模塊</b></p><p> 圖像的幾何變換又成為空間變換,即圖像中點與點之間的空間映射關(guān)系。對BMP圖像進行鏡像、縮放、轉(zhuǎn)置。旋轉(zhuǎn)操作。其功能模塊圖如圖3.4所示:</p><p> 圖3.4幾何變換模塊功能結(jié)構(gòu)圖</p><p><b> c
97、.特效顯示模塊</b></p><p> 圖像的特效顯示就是利用人眼的視覺特性通過對圖像分塊然后以不同的次序顯示出來。實現(xiàn)圖像的特效顯示的基本思路是將圖像分割成不同的小塊按一定的方向或次序、分階段地顯示或擦除圖像塊。該模塊主要是對BMP圖像進行圖像漸顯、水平柵條、馬賽克特效、百葉窗特效顯示操作。其功能模塊圖如圖3.5所示:</p><p> 圖3.5特效顯示模塊功能結(jié)構(gòu)圖&
98、lt;/p><p><b> d.灰度變換模塊</b></p><p> 圖像的灰度變換是基于點操作的增強方法,它將每一個像素的灰度值按照一定的數(shù)學(xué)變換公式轉(zhuǎn)換為一個新的灰度值。它是圖像增強的重要手段,可使圖像動態(tài)范圍加大,圖像對比度增強,圖像清晰,特征明顯。該模塊主要是對BMP圖像進行圖像反色變換、亮度調(diào)整、對比度調(diào)整、窗口灰度變換、直方圖均衡化操作。其功能模塊圖如
99、圖3.6所示:</p><p> 圖3.6灰度變化模塊功能結(jié)構(gòu)圖</p><p><b> f.分析變化模塊</b></p><p> 對BMP圖像進行邊緣檢測、輪廓提取操作。其功能模塊圖如圖3.7所示:</p><p> 圖3.7分析變化模塊功能結(jié)構(gòu)圖</p><p> 4 系統(tǒng)詳細
100、設(shè)計與實現(xiàn)</p><p> 4.1BMP文件結(jié)構(gòu)</p><p> 4.1.1BMP文件組成</p><p> BMP文件由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成。文件頭主要包含文件的大小、文件類型、圖像數(shù)據(jù)偏離文件頭的長度等信息。位圖信息頭包含圖像的尺寸信息、圖像用幾個比特數(shù)值來表示一個像素、圖像是否壓縮、圖像所用的顏色數(shù)等信息。顏色信息包含圖像
101、所用到的顏色表,顯示圖像時需用到這個顏色表來生成調(diào)色板。文件中的數(shù)據(jù)塊表示圖像的相應(yīng)的像素值,圖像的像素值在文件中的存放順序為從左到右,從下到上,在BMP文件中首先存放的是圖像的最后一行像素,最后才存儲圖像的第一行像素,但對與同一行的像素,則是按照先左邊后右邊的的順序存儲的。</p><p> 4.1.2BMP文件頭</p><p> BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類型、文件大小
102、和位圖起始位置等信息。其結(jié)構(gòu)定義如下:</p><p> typedef struct tagBITMAPFILEHEADER </p><p><b> { </b></p><p> WORD bfType; // 位圖文件的類型,必須為"BMP" </p><p> DWORD bfSi
103、ze; // 位圖文件的大小,以字節(jié)為單位 </p><p> WORD bfReserved1; // 位圖文件保留字,必須為0 </p><p> WORD bfReserved2; // 位圖文件保留字,必須為0 </p><p> DWORD bfOffBits; // 位圖數(shù)據(jù)的起始位置,以相對于位圖文件頭的偏移</p><p&g
104、t; 量表示,以字節(jié)為單位 </p><p> } BITMAPFILEHEADER;該結(jié)構(gòu)占據(jù)14個字節(jié)。</p><p> 4.1.3BMP信息頭</p><p> BMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息。其結(jié)構(gòu)如下:</p><p> typedef struct tagBITMAPINFOHEADER{ </p&
105、gt;<p> DWORD biSize; // 本結(jié)構(gòu)所占用字節(jié)數(shù) </p><p> LONG biWidth; // 位圖的寬度,以像素為單位 </p><p> LONG biHeight; // 位圖的高度,以像素為單位 </p><p> WORD biPlanes; // 目標(biāo)設(shè)備的平面數(shù)不清,必須為1 </p>&
106、lt;p> WORD biBitCount// 每個像素所需的位數(shù),必須是1(雙色), 4(16色),8(256</p><p> 色)或24(真彩色)之一 </p><p> DWORD biCompression; // 位圖壓縮類型,必須是 0(不壓縮),1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一 </p><p> DWOR
107、D biSizeImage; // 位圖的大小,以字節(jié)為單位 </p><p> LONG biXPelsPerMeter; // 位圖水平分辨率,每米像素數(shù) </p><p> LONG biYPelsPerMeter; // 位圖垂直分辨率,每米像素數(shù) </p><p> DWORD biClrUsed;// 位圖實際使用的顏色表中的顏色數(shù) </p&
108、gt;<p> DWORD biClrImportant;// 位圖顯示過程中重要的顏色數(shù) </p><p> } BITMAPINFOHEADER;該結(jié)構(gòu)占據(jù)40個字節(jié)。</p><p> 4.1.4BMP顏色表</p><p> 顏色表用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結(jié)構(gòu),定義一種顏色。RGBQUA
109、D結(jié)構(gòu)的定義如下:</p><p> typedef struct tagRGBQUAD { </p><p> BYTE rgbBlue;// 藍色的亮度(值范圍為0-255) </p><p> BYTE rgbGreen; // 綠色的亮度(值范圍為0-255) </p><p> BYTE rgbRed; // 紅色的亮度(值
110、范圍為0-255) </p><p> BYTE rgbReserved;// 保留,必須為0 </p><p> } RGBQUAD; </p><p> 4.1.5BMP圖形數(shù)據(jù)</p><p> 位圖數(shù)據(jù)記錄位圖的每一個像素值或該對應(yīng)像素的顏色表的索引值,圖像記錄順序是在掃描行內(nèi)是從左到右,掃描行之間是從下到上。這種格式又稱為B
111、ottom_Up位圖,當(dāng)然與之相對的還有Up_Down形式的位圖,它的記錄順序是從上到下的,對于這種形式的位圖,也不存在壓縮形式。位圖的一個像素值所占的字節(jié)數(shù):當(dāng)biBitCount=1時,8個像素占1個字節(jié);當(dāng)biBitCount=4時,2個像素占1個字節(jié);當(dāng) biBitCount=8時,1個像素占1個字節(jié);當(dāng)biBitCount=24時,1個像素占3個字節(jié),此時圖像為真彩色圖像。當(dāng)圖像不是為真彩色時,圖像文件中包含顏色表,位圖的數(shù)據(jù)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- bmp圖像處理軟件的設(shè)計和實現(xiàn)本科畢業(yè)論文
- 基于matlab的圖像處理軟件設(shè)計畢業(yè)論文
- 基于aforge.net的圖像處理軟件設(shè)計---畢業(yè)論文
- 基于aforge.net的圖像處理軟件設(shè)計---畢業(yè)論文
- 專業(yè)圖像處理軟件的設(shè)計與實現(xiàn).pdf
- 醫(yī)學(xué)圖像處理軟件的設(shè)計與實現(xiàn).pdf
- 面向建筑領(lǐng)域的圖像處理軟件的設(shè)計與實現(xiàn).pdf
- 可移植紅外圖像處理軟件設(shè)計與實現(xiàn).pdf
- 專業(yè)圖像處理軟件——色彩管理模塊的設(shè)計與實現(xiàn).pdf
- 圖像處理軟件界面設(shè)計研究.pdf
- 專業(yè)圖像處理軟件的設(shè)計與開發(fā).pdf
- 語料處理軟件的設(shè)計與實現(xiàn).pdf
- 基于java的圖形圖像處理軟件設(shè)計與實現(xiàn)
- 基于aforge.net的圖像處理軟件設(shè)計實現(xiàn)---開題報告
- 圖像處理課程設(shè)計--應(yīng)用matlab語言編制圖像處理軟件
- 畢業(yè)論文--基于dspbios的圖像采集處理平臺軟件設(shè)計
- 公安專用圖像處理軟件的研制.pdf
- 畢業(yè)論文--基于dspbios的圖像采集處理平臺軟件設(shè)計
- 圖像處理畢業(yè)論文
- 重力數(shù)據(jù)后處理軟件的設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論