圖像處理畢業論文_第1頁
圖像處理畢業論文_第2頁
圖像處理畢業論文_第3頁
圖像處理畢業論文_第4頁
圖像處理畢業論文_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、圖像處理畢業論文摘 要:隨著信息技術的蓬勃發展,尤其是計算機技術的日新月異,為數字圖像處理的發展提供了廣闊的空間。該數字圖像處理系統是基于windows平臺的圖像處理系統,實現了對灰度級圖像的編輯,可以進行圖像導入和導出,視圖設置,可以調整圖片尺寸,旋轉和翻轉圖片,圖片增強優化,圖像邊緣檢測與分割,圖像編碼以及打印輸出圖片。本文主要介紹了數字圖像處理系統的設計和實現過程,系統設計運用mfc的設計思想,通過vc+實現系統框架,簡化了軟件的開發,提高了軟件系統的靈活性、可擴展性和重用性。同時系統所有的操作設計得十分簡單方便,無需具備有專業的知識,也能對圖片完成編輯操作。關 鍵 詞 :vc+,mfc

2、,灰度級圖像,圖像編輯abstract:with the rapid development of information technology, especially in the progress of computer technology, it provides wide space to the application of digital image processing. digital image processing system is an image processing system based on the windows platform. to realize

3、the image editor of gray level, import and export images, view settings, you can adjust picture size, rotate and flip images enhance the optimization and print output picture.the analysis and the implementation procedure of digital image processing system were introduced in this paper. the design id

4、ea of mfc was used and the system structure was implemented by vc+. so the development of software can be predigested and flexibility, expansibility and reusability of software system can be improved. keywords: vc+,mfc,grayscale image,image edit目 錄1前言.21.1課題設計的背景和意義.22圖像處理的方法概要與應用領域.22.1數字圖像處理的方法概要.

5、 22.2數字圖像處理的應用領域.22.3數字圖像系統簡介.43數字圖像處理系統開發技術基礎.43.1 c+語言優點.43.2 vc+平臺簡介.43.3 mfc技術簡介.63.4 mdi應用程序的構成.64需求分析.74.1系統功能需求分析.74.2系統處理流程分析.85系統總體設計.85.1系統功能模塊劃分.85.2類的設計.95.3系統框架類.106系統的詳細設計.106.1文件模塊的設計.106.2圖像編輯模塊.126.3圖像處理模塊.136.4圖像的增強和復原.187 系統調試 .20結 論. .21致 謝.22參考文獻 .231 前言隨著科學技術的發展和人民生活水平的提高,數字攝像機

6、的出現和數字圖像處理技術的發展,在日新月異的數字化時代中,越來越引起人們的廣泛關注,數字圖像處理已經成為必備的基礎知識。近幾十年來由于計算機技術的蓬勃發展,圖像處理技術也得到了空前的發展和應用。目前,圖像處理技術已經廣泛應用于工業、軍事、醫學、交通、農業、天氣預報、銀行、超市、重要部門的監控報警系統、可視電話、網絡傳輸等等領域,成為各個學科學習和研究對象。隨著圖像處理技術的廣泛應用,學習和掌握這門科學顯得格外重要,圖像處理已經成為信息技術相關領域的核心課程。數字圖像處理取得的另一個巨大成就是在醫學上獲得的成果。1972年英國emi公司工程師housfield發明了用于頭顱診斷的x射線計算機斷層

7、攝影裝置,也就是我們通常所說的ct(computer topography)。ct的基本方法是根據人的頭部截面的投影,經計算機處理來重建截面圖像,稱為圖像重建。1975年emi公司又成功研制出全身用的ct裝置,獲得了人體各個部位鮮明清晰的斷層圖像。1979年,這項無損傷診斷技術獲得了諾貝爾獎,說明它對人類做出了劃時代的貢獻。 與此同時,圖像處理技術在許多應用領域受到廣泛重視并取得了重大的開拓性成就,屬于這些領域的有航空航天、生物醫學工程、工業檢測、機器人視覺、公安司法、軍事制導、文化藝術等,使圖像處理成為一門引人注目、前景遠大的新型學科。 隨著圖像處理技術的深入發展,從70年代中期開始,隨著計

8、算機技術和人工智能、思維科學研究的迅速發展,數字圖像處理向更高、更深層次發展。1.1課題設計的背景和意義所謂圖像處理,就是對圖像信息進行加工以滿足人的視覺心理或應用需求的行為。視覺是人類從大自然中獲取信息的最主要的手段。據統計,在人類獲取的信息中,視覺信息約占60,聽覺信息約占20,其他的如味覺信息、觸覺信息等加起來約占20。由此可見視覺信息對人類的重要性,而圖像正是人類獲取視覺信息的主要造徑。所謂“圖”,就是物體透射或者反射光的分布;“像”是人的視覺系統接收圖的信息而在大腦中形成的印象或認識。前者是客觀存在的,而后者是人的感覺,圖像就是兩者的結合。2 數字圖像處理的方法概要與應用領域2.1數

9、字圖像處理的方法概要圖像處理的方法多種多樣,般可分為圖像變換、圖像增強和復原、圖像分割、圖像壓縮編碼、圖像描述和圖像識別等幾類:1)圖像變換由于圖像陣列很大,直接在空間域中進行處理,涉及的計算量很大。利用正交變換(如傅里葉變換、余弦變換等)的性質和特點,將圖像變換到頻率域中進行處理,不僅可減少計算量,而且可獲得更有效的處理,如博里葉變換可在領域中進行數字濾波處理。目前新興研究的小波交換在時域和頻域中都具有良好的局部化特性,它在圖像處理中也有著廣泛而有效的應用。該部分主要研究各種變換模型和處理方法。2)圖像增強和復原圖像增強和復原的目的都是為了提高圖像的質量。圖像增強。利用各種數學方法和變換手段

10、提高圖像中目標與非目標(如背景)的對比度與清晰度,達到突出目標,有效地表示和提示圖像,以利于人或機器進行分析處理的目的。該部分主要研究各種增強模型和處理方法。圖像復原。在景物成像過程中,由于成像設備與物體的相對運動、介質散射、系統畸變(如成像系統的變焦、成像器材的固有缺陷)、噪聲干擾等因素會造成圖像質量降低,稱之為“退化”,典型現象是圖像模糊。使退化的圖像恢復本來面目,真實反映原景物圖像的處理,稱為圖像復原。該部分主要研究各種校正模型和處理方法。圖像增強不考慮圖像降質的原因,突出圖像中所感興趣的部分。如強化圖像高頻分量,可使圖像中物體輪廓清晰,細節明顯;強化低頻分量,可減少圖像中噪聲影響。圖像

11、復原要求對圖像降質的原因有一定的了解,一般而言,應根據降質過程建立“降質模型”再采用某種濾波方法,恢復或重建原來的圖像。3)圖像壓縮編碼把數字化的圖像數據按一定規則進行排列或運算的過程稱為圖像編碼。內于圖像的數據量很大,存儲要占很大的空間,傳輸也要花費不少時間,為此利用圖像本身的內在特性(如像素灰度值之間的相關性),按某種特殊方式編碼,以壓縮總的信息量,稱之為圖像壓縮編碼。該部分主要研究各種高效壓縮編碼方法。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件進行。編碼是壓縮技術中最重要的方法,它在圖像處理技術中是發展最早且比較成熟的技術。4)圖像分割圖像分割是數字圖像處理中的關鍵技術之。圖像

12、分割是將圖像中有意義的特征部分提取出來,其有意義的特征有圖像中的邊緣、區域等,這是進一步進行圖像識別、分析和理解的基礎。雖然目前已研究出不少邊緣提取、區域分割的方法,但還沒有一種普遍適用于各種圖像的有效方法。因此,對圖像分割的研究還在不斷深入之中,是目前圖像處理中研究的熱點之一。5)圖像描述圖像描述是圖像識別和理解的必要前提。作為最簡單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采用二維形狀描述,它有邊界描述和區域描述兩類方法。對于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發展,已經開始進行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。2

13、.2數字圖像處理的應用領域圖像信息是人類主要的信息來源之一,圖像處理的應用領域也涉及到人們工作生活中的方方面面。主要應用可歸納為以下幾個方面:(1)醫用圖像處理。醫學上不論是基礎研究還是臨床應用,都是圖像處理種類極多的領域。例如生物醫學的顯微圖像的處理分析,如紅白細胞和細菌,染色體分析;臨床診斷中x光圖像的鑒別、超聲波圖像(b超)的分析、眼底照片的分析等都是醫療輔助診斷的重要手段,尤其是計算機層析成像技術(ct),可以獲得人體剖面圖,使肌體病變特別是腫瘤的診斷起到了革命性的變化,近年來出現的核磁共振ct,使人體免受各種硬射線的傷害,而且圖像更為清晰。(2)遙感圖像的處理。飛機或人造衛星傳送來的

14、遙感圖像,由于各種原因圖像質量不是很好,必須在成像、存儲、傳輸、判讀過程中進行各種數字處理與分析(如輻射校正、幾何畸變校正、多光譜統計信息分類等),并將其變為可視的資源信息或氣象信息,如大氣預報中的衛星云圖。目前遙感技術已在資源調查、災害監測、農業規劃、城市規劃、環境保護等方面得到了廣泛的應用。(3)文字的識別與圖紙的判讀。文字與圖紙是科技信息的主要傳輸手段。文字與圖紙在圖像處理中都是以最簡單的二值圖像形式出現的。文字識別的應用包括手寫體文字的識別、圖文混合中文字的識別等,如郵政編碼的自動識別,計算機光筆輸入,經掃描儀掃描的文字材料是以圖像文件的形式保存,如何將其轉變成文本文件等等。目前此類應

15、用技術已比較成熟,如ocr軟件等。圖紙的判讀則涉及到各種邏輯圖和機械設計圖的自動讀取問題,其中也包括圖紙上的文字識別問題(即圖文混合下的文字識別)。(4)工業領域的應用。產品外觀檢測與篩選,表面缺陷的自動檢測,組裝與流水線上的自動化,工業材料的質量檢驗。(5)農業上的應用。包括農產品色度的檢測(如鑒別水果成熟度),農牧產品,作物的表血形狀和特征參數的測定。(6)其他。指紋識別、影視中的特效等。2.3數字圖像系統簡介數字圖像處理系統是一款簡單而又實用的灰度級圖像處理軟件,是基于windows平臺的應用程序,利用visual c+6.0的編譯環境提高了系統的開發速度,實現數字圖像的查看與編輯操作。

16、主要內容有:圖像文件的打開和保存,實現了對灰度級圖像的操作。圖像的幾何變換,實現對圖像文件的旋轉、縮放、以及鏡像處理。圖像增強和復原,實現對降質的圖像進行改善處理和提高圖像質量的逼真度。圖像的邊緣檢測和分割,產生更適合人觀察和識別的圖像。圖像編碼,對圖像采用不同的表達方法以減小表示圖像所需的數據量。3 數字圖像處理系統開發技術基礎3.1 c+語言優點c語言是一個面向對象的語言,使用c編寫的代碼更加簡捷、高效,更具可維護性和可重用性。c+語言的優點主要有以下幾點: 1、使用new和delete進行動態內存分配和釋放 運算符new和delete是c新增的運算符,提供了存儲的動態分配和釋放功能。它的

17、作用相當于c語言的函數malloc()和free(),但是性能更為優越。使用new比使用malloc()有以下的幾個優點: (1)、new自動計算要分配類型的大小,不使用sizeof運算符,比較省事,可以避免錯誤。 (2)、它自動地返回正確的指針類型,不用進行強制指針類型轉換。 (3)、可以用new對分配的對象進行初始化。 2、使用inline內連函數替代宏調用 對于頻繁使用的函數,c語言建議使用宏調用代替函數調用以加快代碼執行,減少調用開銷。但是宏調用有許多的弊端,可能引起不期望的副作用。例如宏: define abs(a) (a)0?(a):(a), 當使用abs(i)時,這個宏就會出錯。

18、 所以在c中應該使用inline內連函數替代宏調用,這樣即可達到宏調用的功能,又避免了宏調用的弊端。使用內連函數只需把inline關鍵字放在函數返回類型的前面。例如: inline int add(int a,int b);聲明add()為內連函數 這樣編譯器在遇到add()函數時,不再進行函數調用,而是直接嵌入函數代碼以加快程序的執行。 3、使用函數重載 在c語言中,兩個函數的名稱不能相同,否則會導致編譯錯誤。而在c中,函數名相同而參數不同的兩個函數被解釋為重載。例如: void puthz(char *str); /在當前位置輸出漢字 void puthz(int x,int y,char

19、 *str); 在x,y處輸出漢字 使用函數重載可以幫助程序員應付更多的復雜;同時在大型程序中,使函數名易于管理和使用,而不必絞盡腦汁地去處理函數名。 4、使用引用(reference)代替指針進行參數傳遞 在c語言中,如果一個函數需要修改用作參數的變量值的時候 ,參數應該聲明為指針類型。例如: void add(int *a) (*a)+; 但是對于復雜的程序,使用指針容易出錯,程序也難以讀懂。在c中,對于上述情況 可以使用引用來代替指針,使程序更加清晰易懂。引用就是對變量取的一個別名,對引用進行操作,就相當于對原有變量進行操作。例如使用引用的函數定義為:void add(int &a) (

20、a+;); /a為一個整數的引用 5、使用“類”對數據進行封裝 c語言是模塊化的程序語言,通過函數的使用和文件的單獨編譯實現了一定的數據封裝功能。但c通過使用“類”的強大功能,在數據封裝、繼承等很多的方面比c做得更好。通過使用“類”把數據和對數據的所有操作集合封裝在一起,建立了一個定義良好的接口,使程序員在使用一個類的時候可以只關心它的使用,而不必關心它的實現。 6、類模版 類模版使得程序員在設計一個類時,可以將數據類型作為類的參數,從而定義一個類屬類。作為參數的類型既可以是c+語言提供的基本類型與復合數據類型,也可以是程序員自定義的類類型。類屬類的主要用途是定義包容數據結構。利用類模版,以此

21、就可以定義出具有共性(除類型參數除外、其余全相同)的一組類。即通過使用類模版,可使得所定義類中的某些數據成員、某些成員函數的參數、某些成員參數的返回值都可以使任意類型的(包括系統預定義類型以及用戶自定義類型),從而使得一段程序可用于處理多種不同類型的對象。3.2 vc+平臺簡介vc+是在windows平臺下構建32位應用程序的強大而又復雜的開發工具,是目前世界上使用非常廣泛的工具之一。vc+的應用非常廣泛,從桌面應用程序到服務器端軟件,從系統軟件到應用軟件,從單機程序到分布式應用程序,從圖形圖像處理到游戲開發,vc+無所不在 6。vc+是windows平臺上的c+編程環境,學習vc要了解很多w

22、indows平臺的特性并且還要掌握mfc、atl、com等的知識,難度比較大。vc+ developer studio 包含有編寫程序源代碼的編輯器,設計用戶界面(菜單、對話框、圖標等)的資源編輯器,建立項目配置的項目管理器,檢查程序錯誤的集成調式等工具,同時,它還提供了功能強大的應用程序向導appwizard和類向導classwizard工具。appwizard用于生成各種不同類型的具有windows界面風格的應用程序的基本框架,在生成應用程序框架后,使用classwizard便可輕松完成創建新類,映射消息、定義消息處理函數、重載虛函數等操作1。3.3 mfc技術簡介mfc (microso

23、ft foundation class library,微軟基礎類庫)是微軟為了簡化程序員的開發工作所開發的一套c+類的集合,是一套面向對象的函數庫,以類的方式提供給客戶使用。利用這些類可以有效的幫助程序員完成windows應用程序的開發。mfc中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立windows下的應用程序,這是一種相對sdk來說更為簡單的方法。因為總體上,mfc框架定義了應用程序的輪廓,并提供了用戶接口的標準實現方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。microsoft visual c+提供了相應的工具來完成這

24、個工作:appwizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設計用戶接口;classwizard用來協助添加代碼到框架文件;最后,編譯,則通過類庫實現了應用程序特定的邏輯。3.4 mdi應用程序的構成用appwizard產生一個mdi工程jia(無ole等支持),appwizard創建了一系列文件,構成了一個應用程序框架。這些文件分四類:頭文件(.h),實現文件(.cpp),資源文件(.rc),模塊定義文件(.def),等。從cwinapp、cdocument、cview、cmdiframewnd、cmdichildwnd類對應地派生出cjiaapp、cjia

25、doc、cjiaview、cmainframe、cchildframe五個類,這五個類的實例分別是應用程序對象、文檔對象、視對象、主框架窗口對象和文檔邊框窗口對象。主框架窗口包含了視窗口、工具條和狀態欄。對這些類或者對象解釋如下。(1)應用程序應用程序類派生于cwinapp。基于框架的應用程序必須有且只有一個應用程序對象,它負責應用程序的初始化、運行和結束。(2)邊框窗口如果是sdi應用程序,從cframewnd類派生邊框窗口類,邊框窗口的客戶子窗口(mdiclient)直接包含視窗口;如果是mdi應用程序,從cmdiframewnd類派生邊框窗口類,邊框窗口的客戶子窗口(mdiclient)

26、直接包含文檔邊框窗口。如果要支持工具條、狀態欄,則派生的邊框窗口類還要添加ctoolbar和cstatusbar類型的成員變量,以及在一個oncreate消息處理函數中初始化這兩個控制窗口。邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協調模式狀態(如上下文的幫助(shift+f1模式)和打印預覽)。(3)文檔邊框窗口文檔邊框窗口類從cmdichildwnd類派生,mdi應用程序使用文檔邊框窗口來包含視窗口。(4)文檔文檔類從cdocument類派生,用來管理數據,數據的變化、存取都是通過文檔實現的。視窗口通過文檔對象來訪問和更新數據。(5)視視類從cview或它的派生類派生。

27、視和文檔聯系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內容,并把用戶輸入轉換成對文檔的操作。(6)文檔模板文檔模板類一般不需要派生。mdi應用程序使用多文檔模板類cmultidoctemplate;sdi應用程序使用單文檔模板類csingledoctemplate。應用程序通過文檔模板類對象來管理上述對象(應用程序對象、文檔對象、主邊框窗口對象、文檔邊框窗口對象、視對象)的創建。4 需求分析4.1系統功能需求分析需求分析簡單地說就是分析用戶的需求。需求分析是設計系統的起點,需求分析的結果是否準確地反映了用戶的實際要求,將直接影響到后面各個階段的設計,并影響到設計結果是否合理和實

28、用。需求分析的任務是通過詳細調查現實世界要處理的對象(組織、部門、企業等),充分了解原系統(手工系統或計算機系統)工作概況,明確用戶的各種需求,然后在此基礎上確定新系統的功能。調查的重點是“數據”和“處理”,通過調查、收集與分析,獲得用戶對數據的要求如下:(1)圖像的打開、關閉及保存:打開并顯示圖像,并在處理過圖像后關閉或保存圖像的修改。(2)處理要求。指用戶要完成什么處理功能,對處理的響應時間有什么要求,處理方式是批處理還是其他處理方式,能夠完成圖像一般的編輯處理。(3)處理效果與效率。圖像處理中一個很重要的問題就是如何表示有關的知識并以恰當的方式引入圖像處理。由于圖像處理任務的復雜性,目前

29、要找出一個通用的方法適應各種情況是幾乎不可能的。另一方面,在建立普適的圖像處理方法時,往往會忽略某類圖像具有的特定屬性。相反,針對某類特定問題,則可能找到有效的方法。為此,有研究者提出基于對象圖像處理的概念:限定圖像處理的對象為幾類特殊的圖像(jpg,gif,bmp),考察對象的共有屬性(稱為先驗),并將其結合到圖像處理的任務中以提供更多的信息,從而提升圖像處理的性能、提高處理效果。由于圖像的處理是通過對一個個像素點進行處理,要想提高處理速度就需要尋找一個快速的處理方法。 本系統是windows應用程序,可以進行圖像的導入和導出,視圖設置,附帶和acd see類似功能的圖片編輯器編輯完成以后可

30、以對修改進行保存,可以調整圖片尺寸,旋轉和翻轉圖片,圖片增強優化,圖像的特效處理以及打印輸出圖片。4.2系統處理流程分析在對系統的組織結構和功能進行分析時,需從一個實際業務流程的角度將系統調查中有關該業務流程的資料都串起來作進一步的分析。業務流程分析可以幫助我們了解該業務的具體處理過程,發現和處理系統的調查工作中的錯誤和疏漏,修改和刪除原系統的不合理部分,在新系統基礎上優化業務處理流程。業務流程圖(transaction flow diagram,簡稱tfd),就是用一些規定的符號及連接來表示某個具體的業務處理過程,它是用盡可能少、盡可能簡單的方法來描述業務處理過程的方法,由于它的符號簡單明了

31、,所以非常易于閱讀和理解業務流程。通過對系統的需求分析,系統的基本功能已經確定。整個系統各個模塊的業務流程,如圖4-1所示: 圖4-1 業務流程圖5 系統總體設計5.1系統功能模塊劃分數字圖像處理系統的總體功能模塊如圖4-1所示:圖 5-1 數字圖像處理功能模塊劃分模塊設計是對處理流程圖的注釋性書面文件,以幫助程序設計人員進一步了解模塊的功能和設計要求,本系統采用c+語言開發,由于計算機的硬件和軟件發展日新月異,所以對這種語言利用的過程,也是不斷學習的過程。數字圖像處理系統主要分為三個子模塊,即文件操作模塊、圖像編輯模塊、圖像處理模塊模塊。系統的具體的模塊設計如下:1.文件操作:該模塊主要實現

32、圖像的文件操作,包括打開圖像文件、保存圖像文件、圖像文件的打印等操作。2.圖像編輯:該模塊主要實現圖像的編輯操作,包括圖像的復制、圖像的粘貼、在圖像中添加文字信息等操作。3.圖像操作:該模塊主要實現圖像的特殊處理與縮放處理,包括圖像的點運算、圖像的幾何變換、圖像的增強和復原處理、圖像的邊緣檢測和分割、圖像編碼圖像的特效處理等操作。5.2類的設計對話框類類名類的作用caboutdlg關于對話框類版權信息顯示caddtextdlg添加文字對話框類打開對話框添加文字cdlgarith算術編碼對話類設置算術編碼參數設置cdlgbitplane位平面編碼對話框類輸入位平面編碼參數cdlghistog灰度

33、直方圖對話框類描述圖像灰度級內容cdlghuffman霍夫曼編碼對話框類顯示霍夫曼碼表cdlgshannon香農-費諾編碼對話框類顯示香農-費諾編碼表cgeorotadlg圖像旋轉對話框類對圖像旋轉度數設置cglgimagethre閥值變換對話框類輸入閥值參數cimagepro灰度拉伸對話框類控制灰度拉伸參數cmidfilterdlg中值濾波對話框類選擇中值濾波模版csharpthredlg閥值設定對話框類輸入閥值分割參數cgeozoom圖像縮放對話框類實現縮放大小參數設置csmoothdlg圖像平滑對話框類選擇圖像平滑模版圖5-2 對話框類表mfc類庫中實現了對gdi位圖操作的cbitmap

34、類,但是沒有封裝處理dib(device-independent bitmap 設備無關位圖)位圖操作的相關windows api類,cmydib類就是采用面向對象的思想實現了對該類函數以及數字圖像處理算法的封裝。實現的功能主要有以下幾個方面:(1)讀取bmp圖像文件;(2)獲取圖像的相關信息;(3)顯示圖像;(4)保存圖像;(5)圖像處理的各種算法實現。cbmpshow、crecttrackerex類主要是實現了圖像文本的插入處理。5.3系統框架類cjiaapp、cjiadoc、cjiaview、cmainframe、cchildframe五個類主要實現了應用程序的框架及框架內部的各種邏輯、

35、消息響應機制。6 系統的詳細設計根據前面對系統所需實現功能的分析和系統結構設計,現將對系統進行詳細設計,逐步實現系統的各個功能模塊。6.1文件模塊的設計(1)文件操作模塊文件操作模塊是整個系統中最基本的組成成分。文件操作模塊主要實現圖像文件的打開、打印、修改后的保存以及圖像文件的另存為操作。通過對用戶的需求分析得出文件操作模塊的功能結構圖,文件操作模塊的功能結構圖如圖6-1所示:文件操作模塊圖像打開圖像保存圖像打印圖6-1 文件操作模塊功能結構圖應用程序的的啟動界面如圖6-2所示:圖6-2 圖像啟動界面程序的啟動界面由csplashwnd類實現,在csplashwnd類中的oncreate函數

36、中的定時器settimer(1, 2750, null)設置的定時間隔就是啟動畫面的顯示的時間,該系統設置的顯示時間是2750ms,然后發送wm_timer消息,隱藏啟動畫面;如果系統收到鍵盤或者鼠標單擊消息時也會自動隱藏啟動畫面。(2)文件打開功能的實現,其文件打開界面如圖6-3所示:圖6-3文件打開界面通過文檔視圖結構簡化了數據操作和數據顯示,文檔只負責數據管理,不涉及用戶界面;視只負責數據輸出和用戶界面的交互,可以不考慮應用程序的數據是如何組織的。通過文檔jdoc類中的onopendocument(lpctstr lpszpathname)函數實現對文件的打開,而在視圖jiaview類中

37、實現圖像的顯示。(3)圖像的保存 圖像的保存也是在文檔類實現,首先聲明了cmydib類的指針變量m_pdibimage,經過保存對話框后,程序接下來調用成員函數m_pdibimage-savedib(m_hdib, file)將圖像存為指定文件。另外,一旦將文件更名保存,就需要將該圖像所屬的子窗口標題欄中的標題更名為新的文件名,此項任務由成員函數pchildframe-setwindowtext()負責。(4)圖像的打印圖像的打印實現,通過isprinting()函數判斷cdc對象是否是指向設備上向下文環境的對象,如果是,則執行如下代碼實現打印:/ 獲取打印頁面的水平寬度(象素)int cxp

38、age = pdc-getdevicecaps(horzres);/ 獲取打印頁面的垂直高度(象素)int cypage = pdc-getdevicecaps(vertres);/ 獲取打印機每英寸象素數int cxinch = pdc-getdevicecaps(logpixelsx);int cyinch = pdc-getdevicecaps(logpixelsy);/ 計算打印圖像大小(縮放,根據頁面寬度調整圖像大小)rcdest.top = rcdest.left = 0;rcdest.bottom = (int)(double)cydib * cxpage * cyinch)/

39、(double)cxdib * cxinch);rcdest.right = cxpage;/ 計算打印圖像位置(垂直居中)int temp = cypage - (rcdest.bottom - rcdest.top);rcdest.bottom += temp/2;rcdest.top += temp/2;6.2圖像編輯模塊圖像編輯模塊是圖像處理系統中重要模塊,主要實現圖像文件的編輯操作。包括圖像的復制、粘貼以及在圖像中插入文本操作。圖像編輯模塊的功能結構如圖6-4所示:圖像編輯模塊圖像復制圖像粘貼文本插入圖6-4功能結構圖圖像編輯主要實現對圖像的編輯,用戶在打開圖像之后可以選擇復制圖像或

40、者剪切圖像,如果想要把復制的圖像保存下來就需要先將圖片保存到剪貼板后進行圖像粘貼,保存操作,這樣就可以把原來圖像中的一部分保存下來。如果需要添加一些說明性文字可以進行文本的插入,單擊編輯/添加字體調出文本插入對話框,進行文本插入說明,這樣可以把圖像的描述信息添加到圖像中。插入文本實現了在圖像中任意位置插入文字,沒有實現字體和顏色的設置。插入文本的代碼如下所示:void cbmpshow:paintbmpandtext()/繪制圖像和文字setdibits(m_pmemdc-getsafehdc(), (hbitmap)m_pmembmp-m_hobject, 0,m_lpbmphdr-bihe

41、ight,(lpvoid)m_lpdibits,(bitmapinfo*)m_lpbmphdr, dib_rgb_colors);if (m_strbmptext.getlength() 0)crect rctext = m_texttracker.m_rect - m_rcdraw.topleft();m_pmemdc-setbkmode(transparent);/設置字體m_pmemdc-settextcolor(rgb(250, 0,0);rctext.offsetrect(1, 1);/根據矩形的寬度,插入換行符cstring strtext = newlinestring(m_st

42、rbmptext, rctext);/ call this member function to format text in the given rectanglem_pmemdc-drawtext(strtext, rctext, dt_left|dt_wordbreak);圖像文本插入界面如圖6-5所示:圖6-5文本插入界面6.3圖像處理模塊圖像處理模塊主要是實現灰度圖像的處理,因為灰度圖像的每個像素的位數正好是8位,即一個字節,這樣,在進行圖像處理時可以不用考慮拼湊字節的問題。而且由于灰度圖調色板的特殊性,進行灰度圖像處理時不必考慮調色板的問題。這部分的主要功能是圖像的點運算、圖像的幾

43、何運算、圖像的正交變換、圖像的增強、圖像邊緣檢測和分割、圖像編碼。經過分析圖像處理的功能,得出圖像處理的功能模塊圖如圖6-6所示:圖像處理模塊圖像點運算幾何運算圖像編碼檢測分割增強復原正交變換圖6-6功能模塊圖點運算(point operation)是一種及簡單有重要的技術,它能讓用戶改變圖像數據占據的灰度范圍。點運算可以按照預定的方式改變一副圖像的灰度直方圖。灰度直方圖是數字圖像處理中一個最簡單、最有用的工具,它描述了一幅圖像的的灰度級內容。任何一幅圖像的直方圖都包括了可觀的信息,某些類型的圖像還可由其直方圖完全描述。圖像直方圖運行效果圖如6-7所示:圖6-7圖像直方圖灰度的線性變換是點運算

44、中最簡單的運算之一,就是將圖像中所有的點的灰度按照線性灰度變換函數進行變換。反轉是灰度線性變化中最常見的一種情形。圖像效果圖反色前與反色后的對比如圖6-8所示:圖6-8圖像反色效果對比圖灰度的閥值變換比較簡單,容易實現,可以將一副灰度圖像轉換成黑白二值圖像。如果圖像中某像素的灰度值小于該閥值,則將該像素的灰度值設為0,否則灰度值設為255。設置閥值為100的閥值變換前后的圖像如圖5-9所示:圖6-9閥值變換前后圖 灰度拉伸灰度拉伸是分段進行線性變換,可以更加靈活的控制輸出灰度直方圖的分布,它可以有選擇的拉伸某段灰度區間以改善輸出圖像。如果一幅圖像灰度集中在較暗的區域而導致圖像偏暗,可以用灰度拉

45、伸功能來拉伸(斜率1)物體灰度區間一改善圖像;同樣如果灰度集中在較亮的區域而導致圖像偏亮,也可用灰度拉伸功能來壓縮(斜率1)物體灰度區間來改善圖像質量。實現灰度拉伸的算法如下:bool cmydib:graystretch(lpstr lpdibbits, long lwidth, long lheight, byte bx1, byte by1, byte bx2, byte by2)unsigned char*lpsrc;/ 指向源圖像的指針longi;longj;/ 循環變量bytebmap256;/ 灰度映射表longllinebytes;/ 圖像每行的字節數llinebytes =

46、widthbytes(lwidth * 8);/ 計算圖像每行的字節數/ 計算灰度映射表for (i = 0; i 0) / 判斷bx1是否大于0(防止分母為0)bmapi = (byte) by1 * i / bx1;else bmapi = 0;for (; i = bx2; i+)if (bx2 != bx1) / 判斷bx1是否等于bx2(防止分母為0)bmapi = by1 + (byte) (by2 - by1) * (i - bx1) / (bx2 - bx1);else bmapi = by1;for (; i 256; i+)if (bx2 != 255) / 判斷bx2是否

47、等于255(防止分母為0)bmapi = by2 + (byte) (255 - by2) * (i - bx2) / (255 - bx2);else bmapi = 255; for(i = 0; i lheight; i+)/ 每行for(j = 0; j lwidth; j+)/ 每列/ 指向dib第i行,第j個象素的指針 lpsrc = (unsigned char*)lpdibbits + llinebytes * (lheight - 1 - i) + j;/ 計算新的灰度值*lpsrc = bmap*lpsrc;return true;灰度拉伸前后如圖6-10所示:圖6-10灰

48、度拉伸圖系統圖像的幾何變換是指原始圖像按照需要產生大小、形狀和位置的變化。使圖像處理和分析的基礎內容之一,它不僅提供了產生某些特殊效果圖像的可能,而且可使圖像處理和分析的程序的簡單化,特別是當圖像具有一定得規律時,一個圖像可以由另一個圖像通過幾何變換來實現。圖像鏡像變換不改變圖像的形狀。鏡像變換分為兩種:一種是水平鏡像,另一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心鏡像進行對換,圖像的垂直鏡像操作是將圖像上半部分和下半部分以圖像水平中軸線為中心鏡像進行對換。鏡像變換效果如圖6-11所示:圖6-11鏡像變換效果圖圖像旋轉是以圖像中心為中心旋轉60度dib圖像

49、效果如圖6-12所示:圖6-12旋轉效果圖圖像的形狀變換(縮放)假設圖像x軸方向縮放比率fx,y軸方向縮放比率是fy,那么原圖中點(x0,y0)對應于新圖中的點(x1,y1)的轉換矩陣為:圖6-12 圖像形狀變換矩陣圖例如,當fx = fy = 0.5時,圖像被縮到一半大小,此時縮小后圖像中的(0,0)像素,(0,1)像素對應于原圖中的(0,2)像素,(1,0)像素對應于原圖中的(2,0)像素,以此類推。在原圖基礎上,每行隔一個像素取一點,每隔一行進行操作。同理fx=fy=2時,圖像放大2 倍,放大后圖像中的(0,0)像素對應于原圖的(0,0)像素;(0,1)像素對應于原圖中的(0,0.5),

50、該像素不存在,可以近似為(0,0)也可近似為(0,1),(0,2)像素對應于原圖中的(0,1)像素,以此類推。其實是將原圖每行中的像素重復取值一遍,然后每行重復一次。圖像參數設置及效果圖如圖6-13所示:圖6-13圖像縮放目前,圖像的正交變換被廣泛地運用于圖像特征提取、圖像增強、圖像復原、圖像壓縮的領域。而這一部分主要是圖像的頻域處理方法,把圖像信號從空間域變換到頻域,可以從另一個角度來分析圖像信號的特性。圖像的頻域處理最突出的特點是其運算速度高,并可采用已有的二位數字濾波技術進行所需的各種圖像處理,因此得到了廣泛的應用。數字圖像的頻域處理最關鍵的是變換處理,即首先將圖像從空間域變換到頻域,然

51、后進行各種處理,再將所得的結果進行逆變換,從頻域在變換到空間域,從而達到圖像處理的目的。數字圖像的頻域處理主要用三種應用:1.利用某些頻域變換可以從圖像中提取圖像的特征;2. 利用圖像頻域處理可實現圖像的高效壓縮編碼;3.減小計算維數,使計算運算次數大大減少,從而提高圖像的處理速度。傅里葉變換、離散余弦變換的處理效果對比如圖5-14所示:圖5-14正交變換效果圖6.4圖像的增強和復原1)圖像增強的目的是改善圖像的視覺效果,或者使圖像更適合于人或機器進行分析處理。通過圖像增強,可以減少圖像中的噪聲,提高目標于背景的對比度,也可以強調或抑制圖像中的某些細節。模版操作是數字圖像處理中經常用到的一種運算方式,圖像的平滑、銳化及下部分的圖像邊緣檢測都要用到模版操作。圖像平滑是一種實用的數字圖像處理技術,主要的目的是為了減少圖像的噪聲。一般情況下,在空間域內可以用領域平均來減少噪聲;在頻率域,由于噪聲頻譜通常所在高頻段,因此可以采用各種形式的低通濾波的辦法來減少噪聲。平滑模版的思想是通過一點和周圍幾點的運算來除去突然變化的點,從而濾掉一定的噪聲,但圖像有一定的模糊。中值波濾是一種非線性的信號處理方法,中值濾波器在1971年由j.w.jukey首先提出并應用在一維信號處理技術中,后來二維圖像信號處理技術

溫馨提示

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

評論

0/150

提交評論