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