版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 設計題目 基于VB的數字圖像</p><p> 處理技術的開發(fā)與研究</p><p><b> 目 錄</b></p><p> 摘要 ………………………………………………………………………………</p><p> 引言 …………………………………………………………………
2、…………… </p><p> 第一章 系統的概述 ………………………………………………………………</p><p> 1.1 系統的主界面 …………………………………………………… </p><p> 1.2 系統的功能 ……………………………………………………………… </p><p> 1.3 系統的簡單操作 …
3、…………………………………………………………</p><p> 第二章 Visual Basic的介紹及API函數………………………………………</p><p> 2.1 Visual Basic 簡介 …………………………………………… …………</p><p> 2.2 Windows API 函數………………………………………………………</p
4、><p> 第三章 圖像處理技術 ………………………………………………………… </p><p> 3.1 過濾 …………………………………………………………………… </p><p> 3.2 彩色轉換 …………………………………………………………… </p><p> 3.3 卷積處理 …………………………………………
5、……………………… </p><p> 3.4 濾波 ………………………………………………………………… </p><p> 3.4.1 最大值濾波………………………………… ………………… </p><p> 3.4.2 最小值濾波 …………………………………………………</p><p> 3.4.3 中值濾波…
6、………………………………………………………</p><p> 3.5 對比度增強 ………………………………………………………………</p><p> 3.6 FFT分析 ……………………………………………………………… </p><p> 第四章 系統軟件設計 …………………………………………………………… </p><p>
7、; 4.1 程序設計 ………………………………………………………… </p><p> 4.1.1 需求分析…………………………………………………………</p><p> 4.1.2 總體設計 …………………………………………………………</p><p> 4.1.3 詳細設計…………………………………………………………</p>
8、<p> 4.1.4 編碼和測試…………………………………………………………</p><p> 4.2 關鍵技術………………………………………………………………… </p><p> 4.2.1 代碼轉換…………………………………………………………</p><p> 4.2.2 API函數調用………………………………………………………………
9、</p><p> 4.2.3 然后顯示調色板中的顏色…………………………………………………</p><p> 4.2.4 工具欄中的工具調用………………………………………………</p><p> 4.2.5 菜單欄的編輯………………………………………………………</p><p> 歷史框恢復的原理………………………………………
10、………</p><p> 實現兩幅圖像疊加成新圖像………………………………………</p><p> 常見問題及回答……………………………………………………………</p><p> 結束語 ……………………………………………………………………………… </p><p> 參考文獻 ………………………………………………………………………
11、…… </p><p> 附錄 ………………………………………………………………………………</p><p> 外文翻譯1………………………………………………………………………</p><p> 外文翻譯2………………………………………………………………………</p><p> 學術論文……………………………………………………
12、…………………… </p><p> 基于VB的數字圖像處理技術的開發(fā)與研究</p><p> 摘要:本文首先介紹數字圖像處理技術的背景和意義,然后介紹基于VB的所完成的圖像處理應用軟件,具體介紹該軟件的功能、結構及簡單操作。接著介紹一下VB和Windows的API函數,最后著重介紹軟件中一些圖像處理技術,關鍵技術講解利用VB中的API函數,并通過VB編程語言如何進行圖像處理的實現
13、,介紹在這個設計過程中碰到的難題及解決方法。</p><p> 關鍵詞: Visual Basic、API、圖像處理、FFT</p><p> According to the VB arithmetic figure </p><p> picture handles technical development and research</p>
14、<p> Abstract: This text introduces first the arithmetic figure picture handles technical background with meaning, then introduction according to the VB a picture for completing handles to apply the software, intr
15、oducing function, construction and simple operations of that software in a specific way.Introduce the VB immediately after with the Windows the function of API, emphasize to introduce finally the some picture in inside i
16、n software handles technique, the key technique explains in detail the e</p><p> Key words: Visual Basic、API、圖像處理、FFT</p><p><b> 引 言</b></p><p> 隨著科學技術的不斷發(fā)展,計算機的更新速度
17、不斷提高,人們的思想文化素質的提高,對圖像的要求也越來越高。因此把原始圖像與計算機結合起來,從而創(chuàng)作出許多更加完美的圖像,滿足人們的需求。計算機圖像處理,是指利用計算機對圖像進行一系列加工,以便獲得人們所需要的效果。</p><p> 圖像是人類獲取和交換信息的主要來源,人類感知外界信息,80%以上是通過視覺得到的。因此,圖像處理的應用領域必然涉及到人類生活和工作的方方面面。圖像處理或圖像分析方法的應用越來越廣
18、泛,其主要理論基礎是形態(tài)數學,立體學,集合論等。圖像處理或圖像分析方法的應用越來越廣泛,其主要理論基礎是形態(tài)數學,立體學,集合論等。圖像處理的應用領域很廣,大致可以分為六大領域以及十余個子領域:材料科學:光學材料,金屬材料,晶體材料,陶瓷建筑材料。</p><p> 地學:巖礦結構,巖體裂隙特征,土體顆粒。</p><p> 生命科學:生物,植物,醫(yī)學,基因。</p>&
19、lt;p> 地理學:經濟地理,土地資源,地貌,氣象學。</p><p> 機器人: 包括電路設計,識別等。</p><p> 鑒定:指紋鑒定,財務印章管理,防偽鑒定等。</p><p> 圖像處理雖然也可以用光學方法或模擬技術來實現,但目前主要是利用計算機來實現,稱為數字圖像處理。因此,圖像處理一般是指數字圖像處理。</p><p&
20、gt; 常見的圖像處理有圖像數字化、圖像編碼、圖像增強、圖像復原、圖像分割與圖像分析等。經過處理后的圖像,一定能夠更好的被用于工業(yè)或者個人目的。為此開發(fā)這個數字圖像處理軟件,能夠處理一些圖像,并對圖像處理技術此方面進行深入的研究。</p><p><b> 軟件系統的概述</b></p><p> 因在本章節(jié)中,我們將對基于VB圖像處理軟件進行分析。給出它的主體
21、界面,能實現的功能以及系統的簡單操作。</p><p> 1.1系統的主體界面</p><p> 由于現在關于圖像處理的應用軟件很多,優(yōu)秀的有Adobe公司的Photoshop、Macromedia公司的Fireworks等,它們的版本不斷在更新,功能也在不斷的提高。本應用軟件就參照圖像處理軟件――新視覺的主體界面。本軟件的主體界面如下:</p><p> 包
22、括主界面、工作區(qū)、工具欄、調色板、歷史框。如圖1</p><p><b> 1.2系統的功能</b></p><p> 該系統的功能主要集中在菜單欄和工具欄中,菜單欄中所體現的都是處理圖像的功能。包括以下方面:</p><p> 1.新建一幅圖像,或者打開、保存、關閉和退出等功能。</p><p> 2.對圖像進
23、行復制、粘貼、剪切、全選、取消選擇和翻轉。其中翻轉包括水平翻轉和垂直翻轉。</p><p> 3.過濾圖像,包括銳化、浮雕、腐蝕、風化。</p><p> 4對圖像進行濾波處理:包括最小值濾波處理、最大值濾波處理和中值處理。</p><p> 5.對彩色圖像進行變換:包括彩色轉灰度、彩色轉黑白、平滑處理、霓紅處理。</p><p>
24、6.軟化圖像,包括紅色、綠色、橙色;硬化圖像,包括紅色、綠色、藍色。</p><p> 7.對圖像進行卷積處理,包括水平增強、垂直增強和雙向增強。</p><p> 8.對圖像進行邊緣探測,例如右下邊緣抽出,拉普拉斯(8鄰域)。</p><p> 9.給圖像進行對比度增強,進行FFT分析,以及對兩幅圖像進行合成。</p><p> 工
25、具欄中的功能主要體現在工具中,正如平時畫圖工具的工具一樣,可以選擇一定的區(qū)域,放大圖像、畫圓、畫方,輸入文字、剪切一定的區(qū)域,簡單的漸變等。</p><p> 1.3 系統簡單操作</p><p><b> 舉兩個簡單的例子:</b></p><p> 其一,我們要處理一幅圖片,要想得到一個浮雕的效果。那么,首先在文件菜單項中選擇打開文件
26、,到指定的目錄下選擇你需要處理的圖片,打開之后,在菜單欄中的過濾選項中選擇浮雕,那么軟件就執(zhí)行相應的操作,進行圖像處理。處理完后,如果不需要其它操作,就可以在文件菜單項中選擇保存項,保存到你指定的目錄下。</p><p> 其二,我們要自己建一幅自己的圖片。選擇菜單欄中文件下的新建,然后在工作區(qū),選擇工具條的多種工具,可以畫圓,也可以畫放方,剪切一定的區(qū)域,進行簡單的漸變色,輸入文字等,然后保存即可。</
27、p><p> 第二章Visual Basic的介紹及API函數</p><p> 2.1 Visual Basic簡介</p><p> Visual Basic(簡稱VB)是美國微軟公司開放的一種可視化編程工具。它功能強大、簡單易學,能夠方便快捷地開放Windows應用程序。它主要沿襲了BASIC系列語言的語法,非常簡潔。</p><p>
28、; Visual Basic中的“Visual ”,其含義是“可視化的”,指的是開發(fā)圖形用戶界面(GUI—Graphical User Interfaces)的方法?!癇asic”指的是BASIC(Beginners All-Purpose Symbol Instruction Code,即初學者通用符號指令代碼)語言。Visual Basic與一般的BASIC語言不同,它是可視化的BASIC語言,不必編寫大量代碼是描述程序界面,而只
29、要把預先建立好的對象拖放到窗口界面中即可。</p><p> Visual Basic具有以下突出特點:</p><p><b> 方便的開發(fā)環(huán)境。</b></p><p> Visual Basic提供了完善的可視化編程環(huán)境。可以同時打開多個工程,可以建立多文檔界面和單文檔界面,具有強大的代碼編輯器。在代碼窗口中可以自動列出控件的屬性和
30、方法,可以自動提示函數的語法。</p><p><b> 事件驅動的程序機制</b></p><p> Visual Basic程序運行的基本方法是由“事件”來驅動程序運行的。不使用傳統編程中的“主程序”和“子程序”之間細致的連帶關系,而是將大規(guī)模的程序分為若干個單一的、獨立的、小規(guī)模的段落程序,分別由各種“事件”來驅動執(zhí)行,大大降低了程序的編寫難度。</p
31、><p> Visual Basic版本簡介:它有三種版本,各自滿足不同的開發(fā)需要。</p><p> 1.學習版。利用學習版編程人員可以輕松的開發(fā)出Windows下的應用程序。它包括所有的內部控件及Grid、Tab和Data_Bound控件。學習版提供的文檔有《程序員指南》、《聯機幫助》、及《Visual Basic聯機手冊》。</p><p> 2.專業(yè)版。為
32、專業(yè)編程人員提供了一整套進行系統開發(fā)的功能完備的工具。該版本包括學習版的全部功能同ActiveX控件,還包括Internet控件和Crystal Report Writer。專業(yè)版提供的文檔有《程序員指南》、《聯機幫助》、《部件工具指南》。</p><p> 3.企業(yè)版。使得專業(yè)編程人員能夠開發(fā)功能強大的組內分別式應用程序。該版本包括專業(yè)版的全部功能連同工程版的控制系統等。企業(yè)版提供的文檔除包括專業(yè)般的所有文檔
33、外,還有《客戶/服務器應用程序開發(fā)指南》和《SourceSafe User’s Guide》。</p><p> 因為本軟件開發(fā)的平臺為企業(yè)版Visual Basic 6.0,而且現在市面上流行的也是企業(yè)版Visual Basic6.0,因此這里我們主要介紹Visual Basic 6.0。</p><p> Visual Basic 6.0是微軟公司系列可視化開發(fā)工具Visual S
34、tudio 6.0中的產品,是創(chuàng)建Windows應用程序最簡便、最快捷的開發(fā)工具之一。同時Visual Basic 6.0具有強大的圖形圖像處理功能,并廣泛應用于圖形設計、圖像處理及多媒體技術中。</p><p> 2.2 Windows API函數</p><p> Win32 API即為Microsoft 32位平臺的應用程序編程接口(Application Programmi
35、ng Interface)。所有在Win32平臺上運行的應用程序都可以調用這些函數。</p><p> 使用Win32 API,應用程序可以充分挖掘Windows的32位操作系統的潛力。 Mircrosoft的所有32位平臺都支持統一的API,包括函數、結構、消息、宏及接口。使用 Win32 API不但可以開發(fā)出在各種平臺上都能成功運行的應用程序,而且也可以充分利用每個平臺特有的功能和屬性。</p>
36、<p> 在具體編程時,程序實現方式的差異依賴于相應平臺的底層功能的不同。最顯著的差異是某些函數只能在更強大的平臺上實現其功能。例如,安全函數只能在Windows NT操作系統下使用。另外一些主要差別就是系統限制,比如值的范圍約束,或函數可管理的項目個數等等。</p><p> 標準Win32 API函數可以分為以下幾類:</p><p> 1. 窗口管理 2. 窗口通
37、用控制3. Shell特性圖形設備接口</p><p> 4. 系統服務 5. 國際特性 6. 網絡服務</p><p> 而在我們的軟件設計過程中將使用其中的兩類,分別為窗口管理函數和圖形設備接口函數。</p><p> 在Windows程序設計領域處于發(fā)展初期時,Windows程序員可使用的編程工具唯有API函數。這些函數在程序員手中猶如"積木塊
38、"一樣,可搭建出各種界面豐富、功能靈活的應用程序。不過,由于這些函數結構復雜,所以往往難以理解,而且容易誤用。</p><p> 隨著軟件技術的不斷發(fā)展,在Windows平臺上出現了很多優(yōu)秀的可視化編程環(huán)境,程序員可以采用"所見即所得"的編程方式來開發(fā)具有精美用戶界面和功能的應用程序。這些可視化編程環(huán)境操作簡便、界面友好,比如:Visual C++,Delphi,Visual Ba
39、sic等等。在這些工具中提供了大量的類庫和各種控件,它們替代了API的神秘功能。事實上,這些類庫和控件都是構筑在Windows API的基礎上的,但它們使用方便,加速了Windows應用程序的開發(fā),所以受到程序員的普遍采用。有了這些類庫和控件,程序員們便可以把主要精力放在整體功能的設計上,而不必過于關注具體細節(jié)。不過,這也導致了非常多的程序員在類庫面前"固步自封",對下層API函數的強大功能一無所知。</p&g
40、t;<p> 實際上。程序員要想開發(fā)出更靈活、更實用、更具效率的應用程序,必然要涉及到直接使用API函數。雖然類庫和控件使應用程序的開發(fā)容易得多,但它們只提供Microsoft Windows的一般功能,對于一些比較復雜和特殊的功能來說,單使用類庫和控件是難以實現的,必須直接使用API函數來編寫。API函數是構筑整個Windows框架的基石,只有充分理解和利用API函數,才能深入到Windows的內部,充分發(fā)揮各種32位
41、平臺的強大功能和靈活性,才能成功地擴展和突破類庫、控件和可視開發(fā)環(huán)境的限制。</p><p><b> 圖像處理技術</b></p><p><b> 基本圖像處理技術</b></p><p> 圖像的顏色是由三種基本顏色,即紅(R)、綠(G)、藍(B)有機組合而成的,稱為三基色。每種基色可取0到255的值,因此由三
42、基色可組合成(256*256*256)1677萬種顏色,每種顏色都有其對應的R、G、B值。例如,常見的7種顏色及其對應的R、G、B值如圖2所示。</p><p> 對一幅彩色圖像的各像素值進行變換并依變換后的新像素值重新顯示,則可以實現不同的顯示效果</p><p><b> 3.1過濾技術</b></p><p> 包括銳化、浮雕、風化
43、、腐蝕。這里介紹兩種分別是銳化和浮雕。</p><p> 1.位圖圖像的銳化處理的算法如下:</p><p> 計算源圖像像素f(i,j)的像素值與邊緣上相鄰像素f(i-1,j-1) 像素值之差的絕對值的百分比之和,然后將該值作為處理后圖像像素g(i,j)的像素值。例如:</p><p> rr=r1+0.25*abs(r1-r2)或者 0.25改為0.5也可
44、</p><p> gg=g1+0.25*abs(g1-g2)</p><p> bb=b1+0.25*abs(b1-b2)</p><p> 式中r1,g1,b1分別為f(i,j)的紅、綠、藍分量值, r2,g2,b2分別為f(i-1,j-1)的紅、綠、藍分量值, rr,gg,bb分別為g(i,j)的紅、綠、藍分量值。</p><p>
45、; 2. 位圖圖像的浮雕處理的算法是</p><p> G(i,j)= f(i,j)- f(i-1,j)+常數</p><p> 式中,G(i,j)為處理后圖像的像素值,f(i,j)為源圖像的像素值,F(i-1,j)為前一個相鄰像素的值。常數一般取128。即</p><p> rr=r1-r2+128</p><p> gg=g1-
46、g2+128</p><p> bb=b1-b2+128</p><p> 式中, r1,g1,b1分別為為源圖像的像素f(i,j)的紅、綠、藍分量值;r2,g2,b2分別為前一個相鄰像素f(i-1,j)的紅、綠、藍分量值,rr,gg,bb分別為處理后圖像的像素G(i,j)的紅、綠、藍分量值。</p><p><b> 彩色圖像變換</b>
47、;</p><p> 包括彩色轉灰度、彩色轉黑白、平滑處理、逆反處理和霓紅處理。這里介紹一下彩色轉灰度和逆反處理。</p><p> 1.彩色圖像生成灰度圖像的一般算法如下:</p><p> Col=Picture1.Point(x,y)</p><p> r= Col AND &0xff</p><p
48、> g=( Col AND &0xff00)/256</p><p> b=( Col AND &0xff0000)/(256*256)</p><p> rr=gg=bb=(r+g+b)/3</p><p> 其中Col為獲取到的像素值f(i,j),r,g,b分別為原像素值f(I,j)的分量值,rr,gg,bb分別為處理后g(i,j)
49、的分量值。</p><p> 2. 位圖圖像的逆反處理的算法如下:</p><p><b> rr=255-r</b></p><p><b> gg=255-g</b></p><p><b> bb=255-b</b></p><p> 式
50、中,r,g,b分別為源圖像像素f(i,j)的紅、綠、藍分量值,rr,gg,bb分別為處理后像素g(i,j)的紅、綠、藍分量值。</p><p><b> 3.3 卷積處理</b></p><p> 卷積濾波的原理如下:</p><p> y(m1- 1, m2 - 1 )= ∑x(m1- n1 ,m2 - n2)*h(n1,n2)<
51、/p><p> 式中x(m1,m2)為輸入圖像信號,h(n1,n2)為濾波系統對單位采樣序列的 (n1,n2)響應,稱 濾波算子。</p><p><b> 濾波處理</b></p><p> (1)平均值濾波(類似于柔化)</p><p> 平均值濾波是指在圖像中以當前像素f(i,j)為中心切出一個N*M(例如3*
52、3)像素組成的圖像塊,如圖5-21所示的那樣,設當前像素f(i,j)的灰度值為g(i,j)時,則</p><p> g(i,j)={ f(i,j)+ f(i-1,j-1)+ f(i,j-1)+ f(i+1,j-1)+ f(i-1,j)+ f(i+1,j) + f(i-1,j+1)+ f(i,j+1)+ f(i+1,j+1)}/9 </p><p><b> (2)最小值濾波&
53、lt;/b></p><p> 最小值濾波是指在圖像中以當前像素f(i,j)為中心切出一個N*M(例如3*3)像素組成的圖像塊,,設當前像素f(i,j)的灰度值為g(i,j)時,則g(i,j)取N*N個諸像素灰度值中的最小值。</p><p><b> (3) 最大值濾波</b></p><p> 最大值濾波是指在圖像中以當前像素f
54、(i,j)為中心切出一個N*M(例如3*3)像素組成的圖像塊,設當前像素f(i,j)的灰度值為g(i,j)時,則g(i,j)取N*N個諸像素灰度值中的最大值。 </p><p><b> 3.5 對比度增強</b></p><p> 對比度增強處理可以使圖像對比度得到拉伸,產生原圖像中顏色較暗的區(qū)域更暗,較亮的區(qū)域更亮的效果。</p><p&g
55、t;<b> 算法如下:</b></p><p> Vpic(2)= R*RELATIVE R > R </p><p> R/RELATIVE R ≤R</p><p> Vpic(1)= G*RELATIVE G> G </p><p> G/REL
56、ATIVE G≤G </p><p> Vpic(0)= B*RELATIVE B>B </p><p> B/RELATIVE B≤ B </p><p> 式中,R、G、B分別為原始圖像像素的紅、綠、藍分量值。RELATIVE為對比度拉伸算子。(可以改為任意值,不過一般不宜太大)數組Vpic()為輸出圖像像素的紅、綠、
57、藍分量值。分別為R、G、B原始圖像紅、綠、藍分量的平均值。</p><p><b> 3.6 FFT分析</b></p><p> 圖像的傅立葉分析技術是圖像處理的一項重要技術,它在頻域內分析圖像的特征。在醫(yī)學領域的計算機層析技術中,傅立葉分析技術對圖像的三維重建具有重要的意義。對圖像進行二維FFT計算,可求得圖像的振幅譜和相位譜。二維FFT算法如下:</p
58、><p> ?。?)求出每一行的一維FFT,并存儲在中間矩陣數組內。</p><p> (2)求出中間數組矩陣的每一列的FFT,得到的結果就是二維的 FFT。</p><p> ?。?)為了顯示二維圖像FFT的幅值,可以求出每一個圖像點的復數的幅值|H(u,v)|。并將幅值作對數變換D(u,v)= Lg(1+|H(u,v)|),最后量化成可顯示的0-255之間的數值
59、。 </p><p> 可寫為 F(k1,k2)=f(n1,n2) </p><p> F(k1,k2)=[ f(n1,n2) ] </p><p> 令 G(n1,k2)= f(n1,n2) </p><p> 則原式 F(k1,k2)= G(n1,k2) </p><p> 式中 W1= ,W2
60、= ,f(n1,,n2)為輸入圖像的像素值。</p><p> 以上就是我選取的一些圖像處理技術,這里舉幾例而已。</p><p> 第四章 系統軟件設計</p><p><b> 4.1 軟件設計</b></p><p> 現在我們來介紹一下整個系統的程序設計,如何通過前面提到的VB平臺和Windows AP
61、I函數,把圖像處理技術表現出來。</p><p> 4.1.1 需求分析</p><p> 根據現在社會的需求,要得到不同的圖像效果也是理所當然的。接下來,我介紹一下本軟件的大致要求及其需實現的功能模塊。</p><p> 在VB中,我們創(chuàng)建一些窗體。包括主窗體frmMain、工作區(qū)窗體frmPaint、工具窗體frmTool、調色板窗體frmColorcha
62、rge、歷史框窗體Hstory、新建窗體frmNew、圖像大小frmSize、控制窗體frmControl,其它為一些功能窗體,如對比度增強frmDuibidu,圖像合成frmHecheng,FFT分析frmFFT。</p><p> 主窗體frmMain:是整個軟件的核心,我們用作VB中唯一的MDI窗體。MDI窗體是用來包容其它窗口的中心窗口。VB規(guī)定一個應用程序只能使用一個MDI窗體,因為一個MDI窗體用到
63、了應用程序中的所有組件及功能。因此我們用它來作程序主界面。</p><p> 工作區(qū)窗體frmPaint:被作為工作區(qū),用來放置圖片,進行圖像處理以及其它操作。</p><p> 工具窗體frmTool:放置在左端,有一些常用工具可進行選擇使用。</p><p> 調色板窗體frmColorcharge:作為調用系統顏色,選擇顏色的用途。</p>
64、<p> 歷史框窗體Hstory:作為返回工具一樣,可以使圖片回到前幾次處理的狀態(tài),不過,次歷史框只允許回到前八次操作。</p><p> 控制窗體frmControl:作為工具欄的輔助,在工作區(qū)上端顯示當前選擇的工具。</p><p> 新建窗體frmNew:新建一工作區(qū)域。</p><p> 圖像大小frmSize:對圖像工作區(qū)域進行設置。只
65、對新建區(qū)域有效。</p><p> 那么我們在這里順便介紹一下本軟件用到的BAS模塊文件。DailogAPI、GuiAPI、FFTMod、texiao、Simplepaints、PublicMod、PHMod1、PHMod2。這些模塊文件都包含很多函數聲明,以及很多算法都包含在其中。這些模塊起到一定的聲明作用,以及被其它程序調用。</p><p> DailogAPI包含獲取公共對話框
66、API函數,如打開指定文件,保存指定文件等。</p><p> GuiAPI包含大部分圖形設備接口API函數,包括位圖函數、剪切函數、顏色函數等,起到非常重要的作用。</p><p> FFTMod模塊包含傅利葉算法、一維FFT模塊程序,被frmFFT窗體調用,進行FFT分析。</p><p> texiao模塊包含大部分圖像處理技術的算法。被主窗體中菜單欄功
67、能項中選擇,進行圖像處理。</p><p> Simplepaints模塊是對工具欄中的算法進行總和,工具欄中的選擇項中的功能都在此模塊中體現出來。</p><p> PublicMod、PHMod1、PHMod2都算是公共的模塊調用程序,包含公共的函數聲明、公共變量和公共調用程序。</p><p> 以上就是我們所設計的窗體和模塊集。</p>
68、<p> 該系統的功能主要集中在菜單欄和工具欄中,菜單欄包括以下方面選項:</p><p> 1. 文件:包括新建、打開、保存、關閉和退出幾項。</p><p> 2. 編輯:包括復制、粘貼、剪切、全選、取消選擇和翻轉。其中翻轉包括水平翻轉和垂直翻轉。</p><p> 3. 過濾:包括銳化、浮雕、腐蝕、風化。</p><p&g
69、t; 4. 濾波處理:包括最小值濾波處理、最大值濾波處理和中值處理。</p><p> 5. 彩色圖像變換:包括彩色轉灰度、彩色轉黑白、平滑處理、霓紅處理。</p><p> 6. 軟化硬化:包括軟化紅色、軟化綠色、軟化橙色,硬化紅色、硬化綠色、硬化藍色。</p><p> 7. 卷積處理:包括水平增強、垂直增強和雙向增強。</p><p
70、> 8. 邊緣探測:包括右下邊緣抽出、拉普拉斯(8鄰域)。</p><p> 9. 其它:包括對比度增強、FFT分析和圖像合成。</p><p> 10. 工具窗口:包括調色板、歷史框和工具欄。</p><p> 11. 幫助:關于軟件的一些幫助信息。</p><p> 工具欄包括十個工具選擇項,分別是:</p>
71、<p> 1. 移動 :顯示的圖標在工作區(qū)為箭頭圖標,默認情況下都為移動。</p><p> 2. 選擇 :選擇工作區(qū)中的區(qū)域,以便進行復制粘貼操作,以及區(qū)域操作。</p><p> 3. 放大 :放大圖片,便于操作。</p><p> 4. 噴漆 :在指定的區(qū)域進行噴色。</p><p> 5. 文字 :輸入文字。&l
72、t;/p><p> 6. 裁剪 :剪切選中的區(qū)域。</p><p> 7. 畫圓 :畫圓形,有三種選擇方式。</p><p> 8. 畫方 :畫方,有三種選擇方式。</p><p> 9. 吸管 :拾取顏色值,表現為顏色分量RGB值。</p><p> 10. 漸變:簡易的漸變工具。</p><
73、;p> 4.1.2總體設計(概要設計)</p><p> 經過需求分析階段的設計,系統必須“做什幺”已經清楚了, 接下來,將進行總體設計。在這個階段,我們將確定系統的軟件結構,如圖:</p><p><b> 4.1.3詳細設計</b></p><p> 詳細設計階段的根本目標是確定應該怎樣具體的實現所要求的系統。也就是設計出程序
74、的“藍圖”,在接下來的編碼階段里,這些描述將被直接翻譯成程序設計所使用的語言。也就是說,詳細設計的結果決定了最終的程序代碼的質量。</p><p> 本設計的程序流程圖:</p><p><b> 圖像處理過程:</b></p><p> 4.1.4編碼和測試</p><p> 編碼是在對軟件進行了總體設計和詳細
75、設計之后進行的,編碼不過是把軟件設計的結果翻譯成某種程序設計語言書寫的程序,因此,程序的質量基本上由設計的質量決定。但是,程序設計語言的特性和編碼途徑也會對程序的可靠性、可讀性、可測試性和可維護性產生深遠的影響。</p><p> 在開發(fā)此軟件的漫長過程中,面對錯綜復雜的問題,主觀認識不可能完全符合客觀現實,因此在系統生命周期的每個階段都不可避免地會產生錯誤。我力求在每個階段結束之前通過嚴格的審查,盡可能多地發(fā)
76、現并糾正錯誤;但是,經驗表明審查并不能發(fā)現所有差錯,此外在編碼過程中還不可避免地會引入新的錯誤。因此,在軟件投入運行之前,要盡可能多地發(fā)現軟件中的錯誤。目前系統測試仍然是保證系統質量的關鍵步驟。</p><p> 在本系統的整個測試過程中,集合了單元測試和集成測試。</p><p> 單元測試集中檢驗系統設計的最小單元——模塊。正式測試之前先通過編譯程序檢查并且改正所有語法錯誤,然后用
77、詳細設計描述做指南,對重要的執(zhí)行通路進行測試以便發(fā)現模塊內部的錯誤。在對子功能模塊進行單元測試主要采用白盒測試法,利用一些典型的數據進行測試,盡量多的發(fā)現可能出現的錯誤,對于一些邏輯錯誤及時改正。而對功能模塊進行單元測試時采用黑盒測試與白盒測試相結合的方法。把經過測試的相關的子模塊聯成一個大的功能模塊,首先用黑盒測試的方法,進行功能測試,對產生的錯誤進行分析、定位,在出錯的子模塊中重新進行白盒測試,更正錯誤。</p>&l
78、t;p> 當用單元測試成功測試完每個功能模塊后,把所有窗體模塊按設計要求放在一起結合成所要的系統進行集成測試。在集成測試中,我也同時采用黑盒測試與白盒測試相結合的方法。</p><p> 本軟件功能基本都能實現,也有幾個問題還存在疑惑。</p><p> 4.2 實現的關鍵技術</p><p> 在整個軟件的實現過程中,歸納一下關鍵技術主要有以下幾個方
79、面:</p><p><b> 4.2.1轉換代碼</b></p><p> 如何使圖像處理技術的算法轉換為VB能夠識別的語言,并體現出來。我們可以通過一個例子來說明。舉例實現圖像的浮雕。</p><p> 圖像的浮雕處理的算法是</p><p> G(i,j)= f(i,j)- f(i-1,j)+常數</
80、p><p> 式中,G(i,j)為處理后圖像的像素值,f(i,j)為源圖像的像素值,F(i-1,j)為前一個相鄰像素的值。常數一般取128。即</p><p> rr=r1-r2+128</p><p> gg=g1-g2+128</p><p> bb=b1-b2+128</p><p> 式中, r1,g1,
81、b1分別為為源圖像的像素f(i,j)的紅、綠、藍分量值;r2,g2,b2分別為前一個相鄰像素f(i-1,j)的紅、綠、藍分量值,rr,gg,bb分別為處理后圖像的像素G(i,j)的紅、綠、藍分量值。</p><p> 那么我們通過VB編程語言實現它。代碼如下:</p><p> Public Sub EmbossPicture(Rx1%, Ry1%, Rx2%, Ry2%) </
82、p><p> With frmMain.ActiveForm </p><p> ReDim r(.Buffer.Width, .Buffer.Height) </p><p> ReDim g(.Buffer.Width, .Buffer.Height)</p><p> ReDim B(.Buffer.Width, .Buff
83、er.Height)</p><p> BeginProcess</p><p> frmMain.PB1.max = Rx2 - Rx1</p><p> For xx = Rx1 To Rx2 - 2</p><p> For yy = Ry1 To Ry2 - 2</p><p> r(xx, yy)
84、= (Abs(r(xx, yy) - r(xx + 1, yy + 1) + 128))</p><p> g(xx, yy) = (Abs(g(xx, yy) - g(xx + 1, yy + 1) + 128))</p><p> B(xx, yy) = (Abs(B(xx, yy) - B(xx + 1, yy + 1) + 128))</p><p>
85、 If frmMain.ActiveForm.SelectArea.Visible = True Then</p><p> SetPixel frmMain.ActiveForm.BufferSelected.hdc, xx, yy, RGB(r(xx, yy), g(xx, yy), B(xx, yy))</p><p><b> Else</b></p
86、><p> SetPixel frmMain.ActiveForm.Buffer.hdc, xx, yy, RGB(r(xx, yy), g(xx, yy), B(xx, yy))</p><p><b> End If</b></p><p><b> Next yy</b></p><p>
87、 frmMain.PB1.Value = xx - Rx1</p><p><b> Next xx</b></p><p> EndProcess</p><p><b> End Sub</b></p><p> 這里有幾個變量,xx,yy,為坐標值,r,g,b為顏色分量值,Rx1,Rx
88、2,Ry1,Ry2分別為圖像坐標的和終點。上面的Public Sub到End Sub是一個過程。With redim 是一個一系列語句,獲取原圖像顏色分量值。BeginProcess到EndProcess是指進度條開始工作到結束。先獲取原圖像的顏色分量值。接下來看兩個循環(huán),那么它就分別對紅R、綠G、藍B三個顏色的分量指進行改變,如果工作區(qū)的選擇區(qū)域為真,換句話說,你打開一個工作區(qū),SetPixel為一個API函數,該函數將指定坐標處的像
89、素設為指定的顏色。如果函數執(zhí)行成功,那么返回值就是函數設置像素的RGB顏色值。因此我們就可以改變一幅圖像的RGB值。其它算法這里不作介紹,都可以通過VB語言進行轉換。</p><p> 4.2.2 調用API函數</p><p> 因為軟件編程成要時不時的調用API函數,所以我們來了解一下如何調用Windows API 函數。VB應用程序要訪問API函數,必須在VB應用程序中用Decl
90、are語句將API函數聲明為外部過程。</p><p> 具體步驟操作如下:通過“工程/添加模塊”在當前工程內加入一個BAS模塊文件。到VB中選擇菜單項中的外接程序,選擇外接程序管理器中的VB 6 API Viewer執(zhí)行VB程序組中的API文本瀏覽器,啟動API函數查看工具。單擊“文件|加載文本文件”命令,裝入Win32api.Txt文件。添加指定的API函數到選定項框中,并將函數聲明復制到剪貼板。將剪貼板中
91、的內容粘貼到BAS模塊文件中。</p><p> 這樣,我們API函數就調入到VB程序中了。</p><p> 4.2.3 如何顯示調色板中的多種顏色</p><p> 在這里我們調用一個顏色文件default.swt。調入這個文件之后,在調色板中就會出現系統默認的選擇顏色項。</p><p> 4.2.4工具欄中工具的調用</
92、p><p> 工具欄中的很多圖標,可以到專門的圖標下載網站去下載,下載完后就可以直接插入本軟件中被調用。至于工具欄中多種算法的實現,比如選擇、剪切、輸入文字等。大多參考現成的代碼,然后進行修改。具體代碼可看后面的抓圖,在這工具欄中,還存在著一點問題,待需改進。</p><p> 4.2.5 菜單欄的編輯</p><p> 在VB中創(chuàng)建菜單,我們可以使用工具項中的菜
93、單編輯器。如圖</p><p> 在標題中輸入菜單欄上能顯示的菜單名,名稱里面輸入英文字母,便于調用和編程。你可以添加索引和快捷鍵,快捷鍵會顯示在菜單名之后。菜單里面還可以擁有自己的子菜單。例如,在文件菜單項下,你可以在創(chuàng)建子菜單打開文件、保存文件、退出等。在菜單編輯器中還有很多附加選項,如果需要,都可以使用。</p><p> 4.2.6 歷史框恢復的原理</p>&l
94、t;p> 歷史框的原理是設置多個圖片臨時框,共設置九個,當第一次處理圖片時,把原圖片放入第一圖片框。當進行第二次處理是,把第一次處理的圖片放人第二圖片框,依次類推。當第九次圖片處理時,放第八次處理過的圖片進第九個圖片框。當第十次時圖片處理時,第九次處理的圖片會取代原圖像的圖片框,依次類推。簡介代碼如下:</p><p> Dim a As Integer</p><p> Fo
95、r a = 0 To 8</p><p> Hstory.Picture1(a).Picture = LoadPicture()</p><p><b> Next a</b></p><p> frmMain.ActiveForm.Buffer.Picture = Picture1(index).Image</p><
96、;p> frmMain.ActiveForm.Buffer.Picture表示當前使用的工作的圖片框。Hstory.Picture1(a)表示歷史窗體中的圖片框。LoadPicture()為裝載圖片,如果括號為空,表示不裝載或者刪除。</p><p> 實現兩幅圖像疊加形成新的圖像</p><p> 實現兩幅圖像疊加成新圖像,在我的畢業(yè)設計中采用了paintpicture方法。
97、PaintPicture 方法,可以在窗體、圖片框和 Printer 對象上的任何地方,繪制圖形。PaintPicture 方法的語法是:[object.]PaintPicture pic, destX, destY[, destWidth[, destHeight[, srcX _[, srcY[, srcWidth[, srcHeight[, Op]]]]]]]。目標 object 指的是窗體、圖片框或 Printer 對象,這些地
98、方都是 pic 圖片表現的處所。如果 object 被忽略了,則認為指定的就是當前的窗體。pic 參數必須是一個圖片對象,它是由窗體或控件的 Picture 屬性決定。destX 和 destY 參數,是按照 objec 的 ScaleMode,該圖象將出現的水平和垂直位置。destWidth 和 destHeight 參數是可選項,用來設置在 object 目標中該圖象的寬度和高度。srcX 和 srcY 參數是可選項,用來定義 pi
99、c 中裁剪區(qū)左上角的 x 和 y 坐標。P</p><p> 因此,如果我們要合成圖像,應該盡量是背景圖的寬度和高度都比前景圖的值都要大,然后利用paintpicture方法,把前景圖放置到背景圖中。假設前景圖為Picture1,背景圖為Picture2,合成代碼如下:</p><p> Picture1.PaintPicture Picture2.Picture, PicLeft,
100、PicTop, , , , ,, &H8800C6</p><p> 其中&H8800C6很重要,它表示用 And 運算合并目標像素與源位圖。不可以缺少。其它寬度和高度等選項可以不設置。</p><p> 4.3 常見問題及解答</p><p> 在這里我們介紹一下常見的關于圖像處理技術的問題及解答。</p><p>
101、 1.圖像和數字圖像的區(qū)別</p><p> 答:圖像是用各種觀測系統以不同形式和收到觀測客觀世界而獲底的,可以直接或間接作用于人眼并進而產生視知覺的實體。常見圖像是連續(xù)的,為了能用計算機對圖像進行加工,需要把連續(xù)的圖像離散化,這種離散化了的圖像是數字圖像。</p><p> 2.圖像處理的基本流程是怎樣的?</p><p> 答:一個基本的圖像處理過程可分為
102、采集、顯示、存儲、通信和處理分析。</p><p> 而在本軟件中,也是采用這個過程,先輸入圖像,進行采集,內部存儲,然后進行處理和分析,最后輸出圖像。</p><p> 3.在VB中怎樣獲取圖像中顏色的值(或者說是rgb分量值)?</p><p> 答:利用Windows API函數中的Getpixel函數,該函數的功能就是函數檢索指定坐標點的像素的RGB顏
103、色值。</p><p> 4.本軟件中圖像處理的速度偏慢?</p><p> 答:那是由于本軟件中對于圖像技術代碼實現的時候,并沒有采用很多較高程度的算法,主要偏重于能實現,而且能夠清晰的看到圖像處理的表面流程。當然,也可以采用一些加速算法,縮短處理圖像的時間。</p><p> 5.軟件中的對話框的實現</p><p> 答:我們可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計--基于matlab的數字圖像處理的設計與實現
- 畢業(yè)設計----基于matlab的數字圖像處理
- 數字圖像處理畢業(yè)設計
- 數字圖像處理畢業(yè)設計
- 畢業(yè)設計數字圖像銳化算法的研究與實現
- 畢業(yè)設計--基于數字圖像處理的車牌定位與識別
- c++數字圖像處理 畢業(yè)設計
- 數字圖像的水印嵌入研究【畢業(yè)設計】
- 畢業(yè)設計(論文)數字圖像邊緣檢測算法研究實現
- 電子信息工程畢業(yè)設計基于dct的數字圖像水印設計
- 畢業(yè)設計----數字圖像處理技術研究
- 基于matlab的數字圖像處理畢業(yè)設計含源文件
- 畢業(yè)設計----數字圖像處理系統的研制
- 數字圖像處理方法研究與實現——基于vc的圖像增強實現設計
- 數字圖像取證技術的設計與實現.pdf
- 數字圖像處理課程設計--基于matlab的數字圖像處理
- 電子信息工程畢業(yè)設計基于matlab的數字圖像處理仿真系統實現
- 基于FPGA的數字圖像顯示系統設計實現.pdf
- 數字圖像課程設計--圖像預測編碼系統的設計與實現
- 數字圖像課程設計--基于直方圖變換實現的圖像增強
評論
0/150
提交評論