畢業(yè)論文---數(shù)字圖像處理_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  邊緣檢測的概念,是使用數(shù)學(xué)方法提取圖像像元中具有亮度值(灰度)空間方向梯度大的邊、線特征的過程。許多工作屬于在一個圖像中發(fā)現(xiàn)有意義的強度變化的能力的算法的設(shè)計已完成。這項工作的許多動機來自需要產(chǎn)生保持圖像重要的結(jié)構(gòu)信息的相對緊密的描述。這些信息對創(chuàng)造分割和使邊緣檢測對應(yīng)用的一種大的品種關(guān)鍵的對象識別算法是很有用處的。這項目是描

2、述邊緣檢測的過程和試圖實時并且總結(jié)其至關(guān)重要的角色的圖像處理。</p><p>  邊緣檢測是一種基本的和重要的話題在計算機視覺和圖像處理。在這篇文章中我們討論了幾種數(shù)字圖像處理技術(shù)應(yīng)用于邊緣特征提取。首先,利用小波變換用于圖像來去除噪聲的采集。第二,一些邊緣檢測算子微分邊緣檢測等,原木邊緣檢測,精明的邊緣檢測和二進制形態(tài)進行了分析。然后根據(jù)仿真結(jié)果,分析了各類高速船優(yōu)缺點。這些邊緣檢測算子進行了比較。結(jié)果表明,

3、二元形態(tài)學(xué)算子能取得更好的邊緣特征。最后,為了獲得清晰的、完整的圖像輪廓的方法,并給出了邊境關(guān)閉。實驗過程中,邊緣檢測后,用本文方法是可行的</p><p>  關(guān)鍵詞:Terms-Edge檢測、數(shù)字圖像處理、小波分析操作員</p><p><b>  Abstract</b></p><p>  The concept of edge det

4、ection is of great consequence to a variety of topics considered in image processing. Much work has been done pertaining to the design of algorithms capable of detecting significant intensity changes present in an image.

5、 The motivation for much of this work comes from the need to generate compact descriptions which retain the image’s important structural information. This information is imperative to the creation of segmentation and obj

6、ect recognition algorithms making edg</p><p>  Edge detection is a basic and important subject in computer vision and image processing. In this paper we discuss several digital image processing techniques ap

7、plied in edge feature extraction. Firstly, wavelet transform is used to remove noises from the image collected. Secondly, some edge detection operators such as Differential edge detection, Log edge detection, Canny edge

8、detection and Binary morphology are analyzed. And then according to the simulation results, the advantages and disadvant</p><p>  Index:Terms-Edge detection, digital image processing, operator, wavelet analv

9、sis</p><p><b>  前 言</b></p><p>  邊緣是一套那些有灰色像素的階躍變化和頂層變化,二者之間的對象和背景、對象和對象、區(qū)域、地區(qū)之間和克萊門特和寬厚。indwells邊總是在兩個相鄰地區(qū)都有不同的灰色的水平。這是由于灰色的水平是不連續(xù)的。邊緣檢測是一種基于范圍不連續(xù)性的圖像分割新方法,。圖像的邊緣檢測是一種基本的內(nèi)容,包括圖象處理與分

10、析,也是一種問題,即完全無法解決為止。當(dāng)圖像是后天獲得的,這個因素產(chǎn)生了如投影、混合、變異和噪聲。這些因素帶來圖像特征的模糊和變形,因而很難提取圖像特征。另外,由于這樣的因素同樣也很難去檢測邊緣。該方法是已被研究的圖像邊緣和輪廓特征的檢測與提取的熱點領(lǐng)域出現(xiàn)的圖像處理和分析技術(shù)。</p><p>  邊緣特征提取已應(yīng)用于許多領(lǐng)域,有著廣泛的應(yīng)用前景。本文主要討論了關(guān)于優(yōu)勢和劣勢的幾個邊緣檢測算子,并據(jù)此在Visu

11、al C++中編程實現(xiàn)。</p><p><b>  目 錄</b></p><p><b>  目 錄IV</b></p><p>  第1章 數(shù)字圖像處理概述1</p><p>  1.1 數(shù)字圖像處理系統(tǒng)概述1</p><p>  1.2 數(shù)字圖像處理系統(tǒng)2&

12、lt;/p><p>  第2章 開發(fā)工具Visual C++6.0簡介4</p><p>  2.1 Visual C++開發(fā)工具的概述4</p><p>  2.2 VC作為面向?qū)ο笤O(shè)計的原因及其優(yōu)點4</p><p>  2.3 框架和文檔—視結(jié)構(gòu)5</p><p>  第3章 CDIB類的構(gòu)造9<

13、/p><p>  3.1 CDIB類構(gòu)造的概述9</p><p>  3.2 幾種重要的操作函數(shù)12</p><p>  第4章 圖像邊緣檢測比較15</p><p>  4.1 圖像邊緣檢測的基本步驟15</p><p>  4.2 圖像邊緣檢測基本算子與實現(xiàn)15</p><p> 

14、 4.3 邊緣檢測算法應(yīng)用與性能比較24</p><p>  第5章 系統(tǒng)測試27</p><p>  5.1 系統(tǒng)測試的概述27</p><p>  5.2測試的實施27</p><p><b>  結(jié) 論29</b></p><p><b>  參考文獻30</

15、b></p><p><b>  致 謝31</b></p><p><b>  第1章 緒論</b></p><p>  1.1 數(shù)字圖像處理系統(tǒng)概述</p><p>  “圖”是物體透射光或反射光的分布,“像”是人的視覺系統(tǒng)對圖的接收在大腦中形成的印象或認(rèn)識。圖像是兩者的結(jié)合。圖像

16、處理就是對圖像信息進行加工處理,以滿足人的視覺心理和實際應(yīng)用的需要。簡單的說,依靠計算機對圖像進行各種目的的處理我們就稱之為數(shù)字圖像處理,其英文名稱是“Digital Image Processing”。早期的數(shù)字圖像處理的目的是以人為對象,為了滿足人的視覺效果而改善圖像的質(zhì)量,處理過程中輸入的是質(zhì)量差的圖像,輸出的是質(zhì)量好的圖像,常用的圖像處理方法有圖像增強、復(fù)原等[1]。隨著計算機技術(shù)的發(fā)展,有一類圖像處理是以機器為對象,處理的目的

17、是使機器能夠自動識別目標(biāo),這稱之為圖像的識別,因為這其中要牽涉到一些復(fù)雜的模式識別的理論??偟膩碚f,數(shù)字圖像處理包括以下幾項內(nèi)容。</p><p><b>  1.點運算</b></p><p>  點運算主要是針對圖像的像素進行加,減,乘,除等運算。圖像的點運算可以有效的改變圖像的直方圖分布,這針對提高圖像的分辨率以及圖像均衡都是非常有益的。</p>

18、<p><b>  2.幾何處理</b></p><p>  幾何處理主要包括圖像的坐標(biāo)轉(zhuǎn)換,圖像的移動,縮小,放大,旋轉(zhuǎn),多個圖像的配準(zhǔn)以及圖像扭曲校正等。幾何處理是最常見的圖像處理手段,幾乎是任何圖像處理軟件都提供了最基本的圖像縮放功能。</p><p><b>  3.圖像增強和復(fù)原</b></p><p>

19、;  圖像增強和復(fù)原的目的是為了提高圖像的質(zhì)量,去除噪聲、提高圖像的清晰度等。圖像增強主要是突出圖像中感興趣的目標(biāo)部分,如強化圖像高頻分量,課使圖像中的物體輪廓清晰,細(xì)節(jié)明顯;而強化圖像低頻分量,可減少圖像中噪聲的影響等。圖像復(fù)原則要求對圖像降質(zhì)的成因有一定的了解,根據(jù)降質(zhì)過程建立降質(zhì)模型,然后采用某種濾波方法,恢復(fù)或重建原來的圖像。</p><p>  4.圖像時域—頻域變換</p><p&

20、gt;  圖像變換就是通過時域和頻域的變換找到其中的特征,再加以變換的過程。傅立葉變換是最基礎(chǔ)的圖像變換。在傅立葉變換基礎(chǔ)上又有離散余弦變換、沃爾什—哈達瑪變換和小波變換等。</p><p><b>  5.圖像形態(tài)學(xué)處理</b></p><p>  圖像形態(tài)學(xué)是數(shù)學(xué)形態(tài)學(xué)的延伸,是一門獨立的研究科學(xué)。利用圖像學(xué)處理技術(shù),可以實現(xiàn)圖像的腐蝕,細(xì)化,和分割等效果。一般圖

21、像分割有兩種情況,一是圖像邊緣檢測,二是區(qū)域分割。邊緣檢測是最常用的方法,主要是通過邊緣檢測算子、模板和曲面擬合來達到圖像分割的目的。</p><p><b>  6.圖像的編碼</b></p><p>  圖像編碼研究是屬于信息論中信源編碼的范疇,其主要的宗旨是利用圖像信號的統(tǒng)計特性及人類視覺特性對圖像進行高效編碼,從而達到壓縮的目的,圖像編碼是數(shù)字圖像處理中一個經(jīng)

22、典的研究范疇,有60多年的歷史,目前,已經(jīng)制定了多種編碼標(biāo)準(zhǔn),如H.261,JEPG,MEPG等。</p><p><b>  7.圖像分析和理解</b></p><p>  圖像分析和理解是圖像處理技術(shù)的發(fā)展和深入,也是人工智能和模式識別的一個分支。在圖像分析和理解中主要有圖像的描述和圖像的分類識別。圖像分類識別屬于模式識別(當(dāng)今的模式識別方法有3種:統(tǒng)計識別法,句

23、法結(jié)構(gòu),模式識別法,和模糊識別法)的范疇,其主要內(nèi)容是圖像經(jīng)過某些預(yù)處理(增強、復(fù)原、壓縮)后,進行圖像分割和特征提取,從而進行分類判別[2]。</p><p>  1.2 數(shù)字圖像處理系統(tǒng)</p><p>  1.2.1 數(shù)字圖像處理系統(tǒng)硬件</p><p>  早期的數(shù)字圖像處理系統(tǒng)為了提高處理速度、增加容量都采用大型機。隨著計算機性價比(性能價格比)日新月異的

24、提高,以小型機為主的微型圖像處理系統(tǒng)得到發(fā)展。主機為PC機,配置以圖像采集卡及顯示設(shè)備就構(gòu)成了最基本的微型圖像處理系統(tǒng)。目前,國產(chǎn)的CA540、VP32、FGCT11010N8、CA-CPE-3000等圖像板研制成功并已商品化。微型圖像處理系統(tǒng)成本低、應(yīng)用靈活。便于推廣。特別是微型計算機的性能逐年提高,使得微型圖像處理系統(tǒng)的性能也不斷升級,加之軟件配置豐富,使其更具實用意義[3]。</p><p>  1.顯示卡

25、 顯示卡是記憶和保存圖像的地方,通常,存儲的凸現(xiàn)要隨時顯示在顯示器上。PC機多采用800×600或1024×768個像素點。通常在圖像處理裝置中,灰度值紅(R)、綠(G)、藍(lán)(B)各占8位(bit),共計24位,可以表示1670萬種顏色,這種顯示卡稱為真彩色顯示卡。</p><p>  2.計算機 圖像處理的主要特點是數(shù)據(jù)量大、運算時間長,因而對系統(tǒng)硬件配置要求較高。目前,在PC機上配置奔騰P

26、4 2.4G以上CPU、512MB內(nèi)存。80G以上硬盤的計算機已屬常見,計算速度大幅度提高,可與幾年前的大型機媲美。為了加快圖像的顯示和處理速度,用于圖像處理的PC機配置應(yīng)盡可能高一些。</p><p>  3.圖像存貯裝置 圖像數(shù)據(jù)量龐大,早期其存儲成為問題。到目前為止,除了大容量磁盤可供存儲圖像數(shù)據(jù)之外,MO、CD、DVD等光學(xué)存儲裝置以及SAN、NAS等網(wǎng)絡(luò)存儲系統(tǒng),為存儲海量圖像數(shù)據(jù)提供了極好的支持。&l

27、t;/p><p>  1.2.2 數(shù)字圖像處理軟件系統(tǒng)</p><p>  微型圖像處理系統(tǒng)既包含硬件設(shè)備,也需要一定的軟件環(huán)境支持。目前,圖像處理系統(tǒng)平臺多為Microsoft Windows或X-Windows,開發(fā)的主流工具Microsoft公司的VC++。這是因為VC++是一種具有高度綜合性能的軟件開發(fā)工具,用它開發(fā)出來的程序有著運行速度快、可移植能力強等優(yōu)點。本文中的復(fù)原方法就是在W

28、indows平臺下,用VC++ 6.0實現(xiàn)的。</p><p>  第2章 開發(fā)工具簡介</p><p>  2.1 Visual C++開發(fā)工具的概述</p><p>  VC++是Microsoft公司推出的開發(fā)Win32應(yīng)用程序(Windows 95/98/2000/XP/NT)的面向?qū)ο蟮目梢暬晒ぞ?。隨著VC++所提供的Microsoft基礎(chǔ)類庫(Mi

29、crosoft Foundation Class Library,簡寫為MFC),對Windows95/NT所用的Win 32應(yīng)用程序接口(Win 32 Application Programming Interface-API)進行了徹底的封裝,從而可以使用完全的面向?qū)ο蟮姆椒▉磉M行Win 32應(yīng)用程序的開發(fā),這樣大大縮短了應(yīng)用程序開發(fā)周期,降低了開發(fā)成本,也將程序員從大量的復(fù)雜勞動中解放出來[4]。</p><p

30、>  VC++ Developer Studio 包含有編寫程序代碼的文本編輯器、設(shè)計用戶界面(菜單、對話框、圖標(biāo)等)的資源編輯器,建立項目配置的項目管理器、檢查程序錯誤的集成調(diào)試器等工具,同時它還提供了功能強大的應(yīng)用程序向?qū)Чぞ逜ppWizard和類向?qū)Чぞ逤lassWizard。AppWizard用于生成各種不同類型的具有Windows界面風(fēng)格的應(yīng)用程序的基本框架,在生成應(yīng)用程序框架后,使用ClassWizard 便可輕松完成

31、創(chuàng)建新類、定義消息處理函數(shù)、重載虛擬函數(shù)等操作。</p><p>  VC++的資源編輯器能以所見所得的形式直接編輯應(yīng)用程序用戶界面,為所有資源分配ID標(biāo)識號。ClassWizard能把對話框模板與自動生成的類定義或與已有的類代碼連接起來,為菜單項、控件等資源生成空的處理函數(shù)模板,創(chuàng)建自消息映射的編程工作便簡化為用資源編輯器直觀的設(shè)計界面,完善對話框類代碼。在空的處理模板出填寫響應(yīng)用戶操作的代碼,是一種完善的可視

32、化編程方法。</p><p>  2.2 VC++優(yōu)點</p><p>  1.VC提供面向?qū)ο蟮耐暾Z法與語義</p><p>  面向?qū)ο蟪绦蚓哂谐橄笮?、封裝性、繼承性與多態(tài)性等特點,這些特點都體現(xiàn)在類的定義中。</p><p>  2.VC還是一種結(jié)構(gòu)化的程序設(shè)計語言</p><p>  面向?qū)ο笫菑拿嫦蜻^程發(fā)展

33、而來的,它沒有拋棄面向過程,而是對其揚長避短。因此,利用VC開發(fā)應(yīng)用程序,既可以采用面向過程的方法,也可以采用面向?qū)ο蟮姆椒ā?lt;/p><p>  3.VC中的MFC是理解面向?qū)ο笳Z法與語義的最好平臺</p><p>  MFC是Microsoft的基本類庫,里面包含大量的與計算機系統(tǒng)有關(guān)的類。通過這些類的使用,可以幫助用戶理解面向?qū)ο蟪绦蛟O(shè)計的特點。</p><p&g

34、t;  Visual C++ 不僅僅是一個編譯器。它是一個全面的應(yīng)用程序開發(fā)環(huán)境,使用它你充分利用具有面向?qū)ο筇匦缘腃++來開發(fā)出專業(yè)級的 Windows 應(yīng)用程序。Visual C++作為一種程序設(shè)計語言,它同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和可視化的資源編輯功能。在使用Visual C++開發(fā)應(yīng)用程序的過程中,系統(tǒng)為我們生成了大量的各種類型的文件[5]。</p><p>  Visual C++

35、采用的框架是MFC。MFC不僅僅是人們通常理解的一個類庫。你如果選擇了MFC,也就選擇了一種程序結(jié)構(gòu),一種編程風(fēng)格。MFC是一個很大的、擴展了的C++類層次結(jié)構(gòu),它能使開發(fā)Windows應(yīng)用程序變得更加容易。MFC是在整個Windows家族中都是兼容的,也就是說,無論Windows3.x、Windows95還是Windows NT,所使用的MFC是兼容的。每當(dāng)新的Windows版本出現(xiàn)時,MFC 也會得到修改以便使舊的編譯器和代碼能在新

36、的系統(tǒng)中工作。MFC也回得到擴展,添加新的特性、變得更加容易建立應(yīng)用程序。使用MFC的最大優(yōu)點是它為你做了所有最難做的事。MFC中包含了上成千上萬行正確、優(yōu)化和功能強大的Windows代碼。你所調(diào)用的很多成員函數(shù)完成了你自己可能很難完成的工作。從這點上講MFC極大地加快了你的程序開發(fā)速度。</p><p>  由于MFC編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)點,它使得我們編程時極少需要關(guān)心對象方法的實現(xiàn)細(xì)節(jié),同時類庫

37、中的各種對象的強大功能足以完成我們程序中的絕大部分所需功能,這使得應(yīng)用程序中程序員所需要編寫的代碼大為減少,有力地保證了程序的良好的可調(diào)試性。</p><p>  最后要指出的是MFC類庫在提供的對象的各種屬性和方法都是經(jīng)過謹(jǐn)慎的編寫和嚴(yán)格的測試,可靠性很高,這就保證了使用MFC類庫不會影響程序的可靠性和正確性。</p><p>  2.3 框架和文檔—視結(jié)構(gòu)</p><

38、;p>  基于MFC的應(yīng)用程序框架(Application Framework)是定義可程序結(jié)構(gòu)的MFC類庫中類的集合,它是VC++ 編輯的骨架。運用MFC應(yīng)用程序框架具有以下優(yōu)點:</p><p>  1.標(biāo)準(zhǔn)化的程序結(jié)構(gòu)和用戶接口:這對具有標(biāo)準(zhǔn)用戶界面的Win 32程序來說??梢詷O大的減輕程序員的負(fù)擔(dān),使程序員不必過多的考慮界面,而把主要精力放在程序設(shè)計上,以提高程序設(shè)計的效率。</p>

39、<p>  框架產(chǎn)生的程序代碼短,運行速度快,具有很大的靈活性。</p><p>  3.MFC封裝了Win 32 SDK中的幾乎所有的函數(shù),能夠?qū)崿F(xiàn)Win 32系統(tǒng)的任務(wù)功能。</p><p>  MFC框架的核心是文檔-視結(jié)構(gòu)(Document-View Architecture)。簡單的說,文檔-視結(jié)構(gòu)就是將數(shù)據(jù)和對數(shù)據(jù)的觀察相分離,文檔僅處理數(shù)據(jù)的讀、寫等操作,視則是顯示

40、和處理數(shù)據(jù)的窗口,視可以操作文檔中的數(shù)據(jù)。</p><p>  MFC框架的基本結(jié)構(gòu)包括應(yīng)用程序?qū)ο?、主框架窗口、文檔、視等,框架通過命令消息將它們結(jié)合在一起,共同對用戶的操作做出響應(yīng)。</p><p>  應(yīng)用程序的對象類由CWinApp派生,一個應(yīng)用程序有且僅有一個應(yīng)用程序?qū)ο螅?fù)責(zé)應(yīng)用程序?qū)嵗某跏蓟瓦M程結(jié)束時的資源清除,以及創(chuàng)建和管理應(yīng)用程序所支持的所有文檔模板的工作。<

41、/p><p>  主框架窗口是應(yīng)用程序的主窗口。MFC框架定義了兩種基本的主框架窗口類,即單文檔接口SDI(Single Document Interface)主框架窗口類和多文檔接口MDI(Multiple Document Interface)主框架窗口類。對于SDI,視是主窗口的子窗口;對于MDI必須從CMDIChildWnd派生出主框架窗口的子窗口,視是該子窗口的子窗口。</p><p&g

42、t;  文檔類由Document類派生,文檔是一個應(yīng)用程序數(shù)據(jù)元素的集合,它構(gòu)成應(yīng)用程序所使用的數(shù)據(jù)單元,另外,它還提供了管理和維護數(shù)據(jù)的手段。文檔是一種數(shù)據(jù)源,數(shù)據(jù)源由很多種,最常見的是磁盤文件,但它不一定是一個磁盤文件,文檔的數(shù)據(jù)源也可以來自串行口,網(wǎng)絡(luò)或攝像機輸入信號等,視類從CView或其子類(CEditView、CFormView、CRecordView、CScrollView等)派生,是數(shù)據(jù)的用戶窗口,為用戶提供了文檔可視的

43、數(shù)據(jù)顯示,它將文檔的部分或者全部內(nèi)容顯示在窗口中。視還給用戶提供了一個與文檔中的數(shù)據(jù)進行交互的界面,它把用戶的輸入轉(zhuǎn)化為對文檔中數(shù)據(jù)的操作。每個文檔都會由一個或多個視顯示,一個視既可以輸出到屏幕窗口中,也可以輸出到打印機上。圖2.1表示了MFC框架結(jié)構(gòu)中各對象之間的關(guān)系。應(yīng)用程序管理一個(SDI)或多個(MDI)文檔模板,每個文檔模板管理一個或者多個文檔。用戶通過主框架窗口中的視觀察和處理拉數(shù)據(jù)。</p><p>

44、;  文檔-視結(jié)構(gòu)大大簡化了多數(shù)應(yīng)用程序的設(shè)計開發(fā)過程。它帶來的好處主要有:</p><p>  1.將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離。這是一種“分而治之”的思想,這種思想使得模塊劃分更加合理、模塊獨立性更強,同時也簡化了數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面設(shè)計工作。文檔只負(fù)責(zé)數(shù)據(jù)管理,不涉及用戶界面;視只負(fù)責(zé)數(shù)據(jù)輸出與用戶界面的交互,可以不靠率應(yīng)用程序的數(shù)據(jù)是如何組織的。甚至當(dāng)文檔中的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時也不必改動視的

45、代碼。</p><p><b>  SDI框架結(jié)構(gòu)</b></p><p>  (b)MDI框架結(jié)構(gòu)</p><p>  圖2.1 MFC應(yīng)用程序框架結(jié)構(gòu)</p><p>  2.MFC在文檔-視結(jié)構(gòu)中提供了許多標(biāo)準(zhǔn)操作界面,包括新建文件、打開文件、保存文件、打印等,減輕了用戶的工作量。用戶不必再編寫這些重復(fù)的代碼,從而

46、可以把更多的精力放到編寫應(yīng)用程序特定功能的代碼上(主要是從數(shù)據(jù)源中讀取數(shù)據(jù)和顯示)。</p><p>  支持打印的打印預(yù)覽,用戶無需編寫代碼或只需要編寫很少的代碼,就可以為應(yīng)用程序提供打印和打印預(yù)覽功能。</p><p>  由于文檔-視結(jié)構(gòu)功能強大,因此一般用VC++進行程序設(shè)計時都首先使用AppWizard生成基于文檔-視結(jié)構(gòu)的單文檔或多文檔應(yīng)用程序框架,然后在其中添加自己需要的代碼

47、,完成應(yīng)用程序的特定功能。</p><p>  第3章 CDIB類的構(gòu)造</p><p>  3.1 CDIB類構(gòu)造的概述</p><p>  3.1.1 BMP圖像格式的基本內(nèi)容</p><p>  在本次畢業(yè)設(shè)計中,采用的是一種標(biāo)準(zhǔn)的圖像格式BMP。BMP格式是Windows窗口系統(tǒng)交換圖形、圖像數(shù)據(jù)的一種標(biāo)準(zhǔn)。</p>

48、<p>  圖像文件由文件頭和圖像數(shù)據(jù)兩部分組成。文件頭的內(nèi)容由制作該圖像文件的公司決定。一般包括文件類型、文件制作者、文件制作時間、版本號、文件大小等內(nèi)容。各個文件的制作還牽涉到圖像文件的壓縮方式,涉及到壓縮效率。</p><p>  BMP格式的圖像文件又可以分為許多種類,如真彩色位圖、256色位圖,采用RLE(游程編碼)壓縮格式的BMP位圖等等。在實際的工程應(yīng)用和圖像算法效果驗證中經(jīng)常要處理的是2

49、56級并且是沒有壓縮的BMP灰度圖像,例如通過黑白采集卡采集得到的圖像就是這種格式。</p><p>  這種文件格式就是每一個像素用8bit表示,顯示出來的圖像是黑白效果,最黑的像素的灰度(也叫作亮度)值為“0”,最白的像素的灰度值為“255”,整個圖像各個像素的灰度值隨機的分布在“0”到“255”的區(qū)間中,越黑的像素,其灰度值越接近于“0”,越白(即越亮)的像素,其灰度值越接近于“255”;與此對應(yīng)的是在該文

50、件類型中的顏色表項的各個RGB分量值是相等的,并且顏色表項的數(shù)目是256個。真彩色圖像要復(fù)雜一些,表示圖像時,常用的圖像彩色模式有RGB模式、CMYK模式和HIS模式,一般情況下我們只使用RGB模式,R對應(yīng)紅色,G對應(yīng)綠色,B對應(yīng)藍(lán)色,它們統(tǒng)稱為三基色,這三中色彩的不同搭配,就可以搭配成各種現(xiàn)實中的色彩,此時彩色圖像的每一個像素都需要3個樣本組成的一組數(shù)據(jù)表示,其中每個樣本用于表示該像素的一個基本顏色。</p><p

51、>  BMP文件由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成。如表3-1所示:</p><p>  表3-1 BMP文件的組成</p><p>  文件頭主要包含文件的大小、文件類型、圖像數(shù)據(jù)偏離文件頭的長度等信息;位圖信息頭包含圖象的尺寸信息、圖像用幾個比特數(shù)值來表示一個像素、圖像是否壓縮、圖像所用的顏色數(shù)等信息。顏色信息包含圖像所用到的顏色表,顯示圖像時需用到這個顏色表來生

52、成調(diào)色板,但如果圖像為真彩色,即圖像的每個像素用24個比特來表示,文件中就沒有這一塊信息,也就不需要操作調(diào)色板。文件中的數(shù)據(jù)塊表示圖像的相應(yīng)的像素值,需要注意的是:圖像的像素值在文件中的存放順序為從左到右,從下到上,也就是說,在BMP文件中首先存放的是圖像的最后一行像素,最后才存儲圖像的第一行像素,但對與同一行的像素,則是按照先左邊后右邊的的順序存儲的;另外一個需要關(guān)注的細(xì)節(jié)是:文件存儲圖像的每一行像素值時,如果存儲該行像素值所占的字節(jié)

53、數(shù)為4的倍數(shù),則正常存儲,否則,需要在后端補0,湊足4的倍數(shù)。一般256色位圖BMP文件頭(除數(shù)據(jù)外)總共有1078個字節(jié)。</p><p>  下面詳細(xì)說明上述三個結(jié)構(gòu)在Windows.h中都有定義[6]。</p><p>  位圖文件頭(BITMAPFILEHEADER):</p><p>  VC++對位圖文件頭的定義:</p><p>

54、;  Typedef struct tagBITMAPFILEHEADER</p><p><b>  {</b></p><p>  WORD bfType;// 指定文件類型,必須是0X424D,即字符串“BM”</p><p>  WORD bfSize;// 指定文件大小</p><p>  WORD bfRes

55、erved1;// 保留字,不予考慮</p><p>  WORD bfREserved2;// 保留字,不予考慮</p><p>  DWORD bfOffBits;// 從文件頭到實際的位圖數(shù)據(jù)的偏移字節(jié)數(shù)</p><p>  }BITMAPFILEHEADER, FAR*LP BITMAPFILEHEADER,</p><p>  *P

56、BITMAPFILEHEADER;</p><p>  2.位圖信息頭(BITMAPFILEHEADER):</p><p>  VC++對位圖文件頭的定義:</p><p>  Typedef struct tagBITMAPINFOHEADER</p><p><b>  {</b></p><p

57、>  DWORD biSize;// 指定結(jié)構(gòu)長度</p><p>  LONG biWidth;// 圖像寬度</p><p>  LONG biHeight;// 圖像高度</p><p>  WORD biplanes;// 必須是1</p><p>  WORD bitCount; //指定表示顏色時要用到的位數(shù)。常用值有1(黑

58、白//二色圖)、</p><p>  4(16色圖)、8(256色圖)、24(真彩色圖)。</p><p>  DWORD biCompression;// 指出位圖是否壓縮</p><p>  DWORD biSizeImage;// 實際位圖數(shù)據(jù)所占用的字節(jié)數(shù)</p><p>  LONG biXPelsPerMeter;// 水平分辨率

59、</p><p>  LONG biYPelsPerMeter;// 垂直分辨率</p><p>  DWORD biClrUsed;// 指定本圖像實際用到的顏色數(shù),若該值為0則為2的bitCount次方</p><p>  DWORD biClrImportant;// 指定本圖像最重要的顏色數(shù),若該值為0,則認(rèn)為所有顏色都是重要的。</p>&l

60、t;p>  }BITMAPINFOHEADER;</p><p>  3.調(diào)色板(Palette)</p><p>  VC++對調(diào)色板的定義:</p><p>  Typdef struct tagRGBQUAD</p><p><b>  {</b></p><p>  BYTE rgb

61、Blue;</p><p>  BYTE rgbGreen;</p><p>  BYTE rgbRed;</p><p>  BYTE rgbReserved;</p><p><b>  }RGBQUAD;</b></p><p>  其中rgbReServed為保留值。</p>

62、<p>  3.1.2 CDIB類</p><p>  前面只是為圖像文件提供基本的知識和工具,還沒具體涉及到圖像操作的具體內(nèi)容,這里先構(gòu)造一個圖像操作的類,即CDIB類,它是進行圖像處理的“工具箱”。</p><p>  根據(jù)圖像處理的需要,表3-2列出了CDIB類的一些主要成員函數(shù)。</p><p>  表3-2 CDIB類的部分成員函數(shù)</p

63、><p>  3.2 幾種重要的操作函數(shù)</p><p>  1.返回DIB對象像素的起始位置(FindDIBBits())</p><p>  該函數(shù)原型聲明如下:</p><p>  LPBYTE FindDIBBits(LPBYTE lpbi);</p><p>  該函數(shù)只有一個入口參數(shù)lpbi,為一個指向DIB對

64、象的指針,通過計算而返回一個指向DIB圖像像素起始位置的指針。計算過程也非常簡單,只涉及到指針的移動:</p><p><b>  ……</b></p><p>  Return (lpbi+*(LPDWORD) lpbi+PaletteSize(lpbi))</p><p>  2.負(fù)責(zé)獲取DIB位圖的寬度(DIBWidth())</p

65、><p><b>  該函數(shù)的原型為:</b></p><p>  DWORD DIBWidth(LPYTE lpDIB)</p><p>  入口參數(shù)lpbi給出了一個指向DIB對象的指針,在計算完成后返回雙字長度的DIB位圖寬度。對于不同格式的DIB,其圖像寬度的計算方式也有所不同,具體為針對Windows 3.0格式DIB和針對其他格式DIB

66、的兩種不同的計算方式。具體計算過程如下:</p><p>  //返回DIB圖像的寬度</p><p>  if(IS_WIN 30_DIB(lpDIB))</p><p><b>  {</b></p><p>  //對于Windows 3.0 DIB,返回lpbmi->biWidth</p>&

67、lt;p>  return lpbmi->biWidth;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //對于其他格式的DIB,返回lpbmc->bcWid

68、th</p><p>  return (DWORD) lpbmc->bcWidth;</p><p><b>  }</b></p><p>  3.獲取DIB位圖的高度(DIBHeight())</p><p><b>  函數(shù)原型為:</b></p><p>  

69、DWORD DIBHeight(LPBYTE lpDIB);</p><p>  函數(shù)入口參數(shù)lpDIB為一指向DIB對象的指針,計算完成后返回雙字型的DIB位圖高度,具體實現(xiàn)思路和DIBWidth()基本類似,也是需要根據(jù)不同的DIB格式做不同的計算。具體實現(xiàn)過程如下:</p><p>  //返回DIB圖像的高度</p><p>  if(IS_WIN 30_D

70、IB(lpDIB))</p><p><b>  {</b></p><p>  //對于Windows 3.0 DIB,返回lpbmi->biHeight</p><p>  return lpbmi->biHeight;</p><p><b>  }</b></p>

71、<p><b>  else</b></p><p><b>  {</b></p><p>  //對于其他格式的DIB,返回lpbmc->bcHeight</p><p>  return (DWORD) lpbmc->bcHeight;</p><p><b>

72、  }</b></p><p>  4.獲取DIB位圖的位深度(DIBBitCount())</p><p><b>  函數(shù)原型為:</b></p><p>  WORD DIBBitCount(LPBYTER lpbi);</p><p>  入口參數(shù)lpbi為指向DIB對象的指針,函數(shù)最終返回DIB位圖

73、的位深度。函數(shù)實現(xiàn)時根據(jù)是否是Windows 3.0格式的DIB,而決定是從BITMAPINFOHEADER結(jié)構(gòu)的數(shù)據(jù)成員biBitCount中獲取,還是從BITMAPCOREHEADER結(jié)構(gòu)的數(shù)據(jù)成員bcBitCount中獲取。具體過程如下:</p><p><b>  //讀取像素的位數(shù)</b></p><p>  if(IS_WIN 30_DIB(lpbi))&

74、lt;/p><p><b>  {</b></p><p>  //讀取biBitCount值</p><p>  nBitCount=((LPBITMAPINFOHEADER) lpbi) ->biBitCount;</p><p><b>  }</b></p><p>

75、;<b>  else</b></p><p><b>  { </b></p><p>  //讀取biBitCount值</p><p>  nBitCount=((LPBITMAPCOREHEADER) lpbi) ->bcBitCount;</p><p><b>  }&l

76、t;/b></p><p>  5.負(fù)責(zé)DIB對象文件的保存(SaveDIB())</p><p>  BOOL SaveDIB(HDIB hDib,Cfile&file);</p><p>  入口參數(shù)hDib和file分別為保存的DIB和保存的文件對象。函數(shù)執(zhí)行成功將返回True,否則返回False或者拋出CfileException異常DIB文件

77、的保存主要分為對文件頭的保存和對像素點陣的保存,前者可通過結(jié)構(gòu)BITMAPFILEHEADER和BITMAPINFOHEADER加以描述,將其數(shù)據(jù)成員填充完畢后寫入到文件。在進行文件寫入時,需要通過TRY-CATCH語句來捕獲其中可能發(fā)生的異常。</p><p>  6.從制定文件讀取DIB對象到內(nèi)存(ReadDIBFile())</p><p><b>  函數(shù)原型為:<

78、/b></p><p>  HDIB ReadDIBFile(Cfile&file);</p><p>  入口參數(shù)file指定了待讀取的文件,如果函數(shù)執(zhí)行成功將返回一個DIB的句柄否則返回NULL。函數(shù)在執(zhí)行時,首先從文件中讀取DIB文件頭,并判斷是否是合法的DIB對象,如果文件格式正確則為其分配相應(yīng)的內(nèi)存,并完成對圖像點陣的讀取。關(guān)鍵代碼如下:</p>&l

79、t;p><b>  ……</b></p><p>  //嘗試讀取DIB文件頭</p><p>  if(file.Read((LPBYTE) &bmfHeader, sizeof(bmfHeader))!=sizeof(bmfHeader))</p><p><b>  {</b></p>

80、<p>  //大小不對,返回NULL</p><p>  return NULL;</p><p><b>  }</b></p><p><b>  ……</b></p><p><b>  //讀像素 </b></p><p>  

81、if(file,ReadHuge(lpDIB,dwBitsSize-sizeof(BITMAPFILEHEADER))!=dwBitsSize-sizeof(BITMAPFILEHEADER))</p><p><b>  {</b></p><p>  //大小不對,解除鎖定</p><p> ?。海篏lobalUnlock((HGLOBAL

82、) hDIB);</p><p><b>  //釋放內(nèi)存</b></p><p> ?。海篏lobalFree((HGLOBAL) hDIB);</p><p><b>  //返回NULL</b></p><p>  return NULL;</p><p><b&

83、gt;  } </b></p><p>  當(dāng)然圖像操作還有很多,這里只是舉出了幾種必備的操作,也是此次畢業(yè)設(shè)計必需的幾種操作。</p><p>  第4章 數(shù)字圖像邊緣檢測算法的研究與實現(xiàn)</p><p>  4.1 圖像邊緣檢測的基本步驟</p><p>  一種定位二維或三維圖像(特別是醫(yī)學(xué)圖像)中的對象的邊緣的系統(tǒng)。通過

84、輸入端(310)接收表示該圖像的各元素值的數(shù)據(jù)元素集。該數(shù)據(jù)集被存儲在存儲裝置(320)中。處理器(340)確定該圖像中的對象的邊緣。該處理器計算所述數(shù)據(jù)元素的至少一階和/或二階導(dǎo)數(shù),并且計算該圖像的等照度線曲率,所述曲率由κ標(biāo)識。該處理器還確定校正因數(shù)α,該校正因數(shù)α對于由對象的曲率和/或所述數(shù)據(jù)的模糊造成的邊緣錯位進行校正。該校正因數(shù)α取決于所述等照度線曲率κ。然后,該處理器確定取決于所計算出的導(dǎo)數(shù)和所述等照度線曲率的算子的過零點。

85、該系統(tǒng)的輸出端(330)提供對于該圖像中的邊緣位置的指示?;静襟E:</p><p>  1. 濾波。邊緣檢測主要基于導(dǎo)數(shù)計算,但受噪聲影響。但濾波器在降低噪聲的同時也導(dǎo)致邊緣強度的損失。 </p><p>  2. 增強。增強算法將領(lǐng)域中灰度有顯著變化的點突出顯示。一般通過計算梯度幅值完成。 </p><p>  3. 檢測。但在有些圖像中梯度幅值較大的并不是邊緣

86、點。 </p><p>  4. 定位。精確確定邊緣的位置。</p><p>  4.2 圖像邊緣檢測基本算子與實現(xiàn)</p><p>  邊緣檢測的基本算法有很多,有梯度算子、方向算子、拉普拉斯算子和砍尼算子等等。幾種常用的邊緣檢測方法有屬于梯度算子的Roberts算子、Sobel算子、Prewitt算子、Gauss-Laplace 算子等。</p>

87、<p>  4.2.1Roberts算子</p><p>  Robert s 算子采用對角線方向相鄰兩像素之差近似梯度幅值檢測邊緣, 是一種局部差分算子。檢測水平和垂直邊緣的效果好于斜向邊緣, 定位精度高, 但對噪聲很敏感。其模板形式為2 2 的卷積核, 可以表示為:</p><p><b>  程序?qū)崿F(xiàn):</b></p><p>

88、;  void CCh1_1View::OnEdgeRobert() </p><p> ?。?//Robert邊緣檢測運算</p><p><b>  // 獲取文檔</b></p><p>  CCh1_1Doc* pDoc = GetDocument();</p><p>  // 指向DIB的指針<

89、;/p><p>  LPSTRlpDIB;</p><p>  // 指向DIB象素指針</p><p>  LPSTR lpDIBBits;</p><p><b>  // 鎖定DIB</b></p><p>  lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)

90、pDoc->GetHDIB());</p><p>  // 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的邊緣檢測,其它的可以類推)</p><p>  if (::DIBNumColors(lpDIB) != 256)</p><p><b>  {</b></p><p><b> 

91、 // 提示用戶</b></p><p>  MessageBox("目前只支持256色位圖的運算!", "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);</p><p><b>  // 解除鎖定</b></p><p>  ::GlobalUnlock((HGLO

92、BAL) pDoc->GetHDIB());</p><p><b>  // 返回</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  // 更改光標(biāo)形狀</b></

93、p><p>  BeginWaitCursor();</p><p>  // 找到DIB圖像象素起始位置</p><p>  lpDIBBits = ::FindDIBBits(lpDIB);</p><p>  // 調(diào)用RobertDIB()函數(shù)對DIB進行邊緣檢測</p><p>  if (RobertDIB(l

94、pDIBBits, WIDTHBYTES(::DIBWidth(lpDIB) * 8), ::DIBHeight(lpDIB)))</p><p><b>  {</b></p><p><b>  // 設(shè)置臟標(biāo)記</b></p><p>  pDoc->SetModifiedFlag(TRUE);</p&g

95、t;<p><b>  // 更新視圖</b></p><p>  pDoc->UpdateAllViews(NULL);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

96、/b></p><p><b>  // 提示用戶</b></p><p>  MessageBox("分配內(nèi)存失?。?quot;, "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);</p><p><b>  }</b></p><p>

97、;<b>  // 解除鎖定</b></p><p>  ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());</p><p><b>  // 恢復(fù)光標(biāo)</b></p><p>  EndWaitCursor();</p><p><b>  }&l

98、t;/b></p><p>  4.2.2 Sobel算子</p><p>  對數(shù)字圖像{ f ( x, y) }的每個像素,考察它上下左右鄰點灰度的加權(quán)差, 與之接近的鄰點的權(quán)大。據(jù)此,定義Sobel算子如下:</p><p><b>  實現(xiàn)程序:</b></p><p>  void CCh1_1View:

99、:OnEdgeSobel() </p><p><b>  {</b></p><p>  //Sobel邊緣檢測運算</p><p><b>  // 獲取文檔</b></p><p>  CCh1_1Doc* pDoc = GetDocument();</p><p> 

100、 // 指向DIB的指針</p><p>  LPSTRlpDIB;</p><p>  // 指向DIB象素指針</p><p>  LPSTR lpDIBBits;</p><p><b>  // 鎖定DIB</b></p><p>  lpDIB = (LPSTR) ::Global

101、Lock((HGLOBAL) pDoc->GetHDIB())</p><p>  // 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的邊緣檢測,其它的可以類推)</p><p>  if (::DIBNumColors(lpDIB) != 256)</p><p><b>  {</b></p><p

102、><b>  // 提示用戶</b></p><p>  MessageBox("目前只支持256色位圖的運算!", "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);</p><p><b>  // 解除鎖定</b></p><p>  ::Glob

103、alUnlock((HGLOBAL) pDoc->GetHDIB());</p><p><b>  // 返回</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  // 更改光標(biāo)形狀&

104、lt;/b></p><p>  BeginWaitCursor();</p><p>  // 找到DIB圖像象素起始位置</p><p>  lpDIBBits = ::FindDIBBits(lpDIB);</p><p>  // 調(diào)用SobelDIB()函數(shù)對DIB進行邊緣檢測</p><p>  if

105、 (SobelDIB(lpDIBBits, WIDTHBYTES(::DIBWidth(lpDIB) * 8), ::DIBHeight(lpDIB)))</p><p><b>  {</b></p><p><b>  // 設(shè)置臟標(biāo)記</b></p><p>  pDoc->SetModifiedFlag(TR

106、UE);</p><p><b>  // 更新視圖</b></p><p>  pDoc->UpdateAllViews(NULL);</p><p><b>  }</b></p><p><b>  else</b></p><p><

107、b>  {</b></p><p><b>  // 提示用戶</b></p><p>  MessageBox("分配內(nèi)存失??!", "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);</p><p><b>  }</b></p&g

108、t;<p><b>  // 解除鎖定</b></p><p>  ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());</p><p><b>  // 恢復(fù)光標(biāo)</b></p><p>  EndWaitCursor();</p><p>&l

109、t;b>  }</b></p><p>  4.2.3 Prewitt算子</p><p>  Prewitt算子是一種一階微分算子的邊緣檢測,利用像素點上下、左右鄰點的灰度差,在邊緣處達到極值檢測邊緣,去掉部分偽邊緣,對噪聲具有平滑作用 。其原理是在圖像空間利用兩個方向模板與圖像進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣,一個檢測垂直邊緣。 </p&g

110、t;<p><b>  [1]</b></p><p>  對數(shù)字圖像f(x,y),Prewitt算子的定義如下: </p><p>  G(i)=|[f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)]-[f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)]| </p><p>  G(j)=|[f(i-1,

111、j+1)+f(i,j+1)+f(i+1,j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)]| </p><p>  則 P(i,j)=max[G(i),G(j)]或 P(i,j)=G(i)+G(j) </p><p>  經(jīng)典Prewitt算子認(rèn)為:凡灰度新值大于或等于閾值的像素點都是邊緣點。即選擇適當(dāng)?shù)拈撝礣,若P(i,j)≥T,則(i,j)為邊緣點,P(i,j

112、)為邊緣圖像。這種判定是欠合理的,會造成邊緣點的誤判,因為許多噪聲點的灰度值也很大,而且對于幅值較小的邊緣點,其邊緣反而丟失了。</p><p><b>  實現(xiàn)程序:</b></p><p>  void CCh1_1View::OnEdgePrewitt() </p><p><b>  {</b></p>

113、<p>  //Prewitt邊緣檢測運算</p><p><b>  // 獲取文檔</b></p><p>  CCh1_1Doc* pDoc = GetDocument();</p><p>  // 指向DIB的指針</p><p>  LPSTRlpDIB;</p><p&g

114、t;  // 指向DIB象素指針</p><p>  LPSTR lpDIBBits;</p><p><b>  // 鎖定DIB</b></p><p>  lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());</p><p>  // 判斷是否是

115、8-bpp位圖(這里為了方便,只處理8-bpp位圖的邊緣檢測,其它的可以類推)</p><p>  if (::DIBNumColors(lpDIB) != 256)</p><p><b>  {</b></p><p><b>  // 提示用戶</b></p><p>  MessageBox

116、("目前只支持256色位圖的運算!", "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);</p><p><b>  // 解除鎖定</b></p><p>  ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());</p><p><b

117、>  // 返回</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  // 更改光標(biāo)形狀</b></p><p>  BeginWaitCursor();</p><

118、;p>  // 找到DIB圖像象素起始位置</p><p>  lpDIBBits = ::FindDIBBits(lpDIB);</p><p>  // 調(diào)用PrewittDIB()函數(shù)對DIB進行邊緣檢測</p><p>  if (PrewittDIB(lpDIBBits, WIDTHBYTES(::DIBWidth(lpDIB) * 8), ::DI

119、BHeight(lpDIB)))</p><p><b>  {</b></p><p><b>  // 設(shè)置臟標(biāo)記</b></p><p>  pDoc->SetModifiedFlag(TRUE);</p><p><b>  // 更新視圖</b></p&g

120、t;<p>  pDoc->UpdateAllViews(NULL);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  // 提示用戶<

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論