基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)_第1頁
基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)_第2頁
基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)_第3頁
基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)_第4頁
基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于JAVA平臺的圖像處理軟件的設(shè)計與實現(xiàn)摘要:隨著計算機技術(shù)的迅速發(fā)展,數(shù)字圖像處理技術(shù)在各個領(lǐng)域的研究和應(yīng)用日益深入和廣泛。Java是Sun公司推出的一種面向?qū)ο缶幊陶Z言。Java非常適合于企業(yè)網(wǎng)絡(luò)和Internet環(huán)境,現(xiàn)已成為Internet中最受歡迎、最有影響的編程語言之一。目前國內(nèi)使用Java語言開發(fā)的圖像處理系統(tǒng)比較少,這也增加了這方面的研究價值。本論文首先對Java處理圖形圖像的算法做介紹,并設(shè)計Java GUI(圖形用戶界面)用來顯示圖像處理的結(jié)果。關(guān)鍵詞:Java Graphics 2D,圖形圖像,Java GUI,多媒體,數(shù)字圖像一、緒論4(一)課題來源5(二)課題的目的

2、和意義5(三)本軟件的特點5(四) JAVA語言的發(fā)展概況51.JAVA語言的誕生52.JAVA語言的發(fā)展63.JAVA語言的成熟6(五)JAVA語言的特點61、簡單性62、面向?qū)ο?3、分布式74、健壯性75、安全性76、可移植性7二、問題分析7(一)功能設(shè)計7(二)設(shè)計問題81、理論問題:82、技術(shù)問題:83、實踐問題:8(三)設(shè)計原則8(四)開發(fā)工具的選擇8(五)使用到的主要技術(shù)91、java.awt92、93、9三、設(shè)計與實現(xiàn)10(一)總體結(jié)構(gòu)設(shè)計101、對BufferedImages類對象進行圖像數(shù)據(jù)處理方案如下:102、軟件的組成和功能103、軟件功能測試:14四 結(jié)束語14參考文

3、獻16一、緒論20世紀70年代以來,隨著計算機的廣泛應(yīng)用,其使用者對其畫面表現(xiàn)能力的需求也隨之提高,數(shù)字圖像處理技術(shù)應(yīng)運而生,它是一門迅速發(fā)展的新興學(xué)科,目的是在計算機上實現(xiàn)和強化人的視覺以及人對視覺信息的加工處理能力。目前國內(nèi)外市場依然是以Adobe公司的Photoshop為主流的圖形圖像處理軟件,軟件擁有強大的處理能力,豐富的工具庫,代表著計算機圖形圖像處理領(lǐng)域的最高技術(shù)標準。進入21世紀,隨著計算機技術(shù)的迅猛發(fā)展和相關(guān)理論的不斷完善,數(shù)字圖像處理技術(shù)在許多應(yīng)用領(lǐng)域受到廣泛重視并取得了重大的開拓性成就,如航空航天、生物醫(yī)學(xué)工程、工業(yè)檢測、機器人視覺、公安司法、軍事制導(dǎo)、文化藝術(shù)等領(lǐng)域。圖形

4、圖像處理技術(shù)已成為一門引人注目、前景遠大的新型學(xué)科。 Internet是全球最大的計算機網(wǎng)絡(luò),它起源于1968年美國國防部高級研究計劃局 (ARPA-Advanced Research Project Agency)主持研制用于支持軍事研究的計算機實驗網(wǎng)ARPANET。網(wǎng)絡(luò)的發(fā)展,同時為圖形圖像技術(shù)提供了發(fā)展的空間,并且網(wǎng)絡(luò)的多媒體化,豐富化,同時也對圖形圖像處理提出了更高的要求,Google的衛(wèi)星地圖便是非常成功的例子如今,各式各樣的,形形色色的精美圖片,在各個領(lǐng)域得到了廣泛的應(yīng)用,圖形圖像技術(shù)已經(jīng)成為必不可少的應(yīng)用。 (一)課題來源本課題根據(jù)我大三學(xué)習(xí)期間所學(xué)習(xí)的JAVA開發(fā)課程結(jié)合現(xiàn)在網(wǎng)

5、上流行圖形圖像處理軟件,因為個人對這個領(lǐng)域比較感興趣,這個圖形圖像軟件的編寫是對我大學(xué)期間所學(xué)知識的一個總結(jié)。(二)課題的目的和意義主要目的在于通過基于Java平臺的圖像處理軟件的設(shè)計與實現(xiàn),研究Java語言的面向?qū)ο缶幊毯投嗝襟w編程,并了解其圖形繪制機制和多線程原理.進一步熟悉JavaAPI類庫,對面向?qū)ο缶幊逃懈由钊氲膶W(xué)習(xí)和掌握。本選題的意義在于對圖形圖像處理領(lǐng)域方面的深入和探究,試圖開發(fā)出具有實用價值的,或者具有一定參考價值的軟件產(chǎn)品.并且可以進一步了解和掌握軟件開發(fā)的全過程,改善和提高自身的軟件設(shè)計和開發(fā)能力。同時,自身對圖形圖像的處理比較感興趣,能夠增加自身對編程的學(xué)習(xí)和認識。 (

6、三)本軟件的特點由于自身技術(shù)的限制,在開發(fā)上面不能展示太多的功能和特色,加上Java語言本身在圖形圖像處理方面并不是很出色,所以在功能上只包含了幾何變換,訪射變換,鈍化,銳化,顏色變換等操作。選擇使用Java語言作為軟件的編程語言,是因為Java語言的簡單和可移植性強的特點,它能夠跨平臺運行,使用起來比較方便,不像c+那樣,是基于源代碼的移植,不能夠跨平臺運行,對于軟件開發(fā)沒有Java那樣便捷,并且Java在圖形圖像這方面的研究較少,希望在這上面有所發(fā)現(xiàn)。(四) JAVA語言的發(fā)展概況1.JAVA語言的誕生 它是有Sun公司開發(fā)出來的.它的誕生主要得益于家用電器的芯片.開始時,它的開發(fā)者想用C

7、+語言來開發(fā)電器的芯片,但是,由于芯片的種類各不相同,因此,程序要進行多次編譯.尤其是C+中的指針操作,一旦操作不慎,就會引起問題,程序可以出錯誤,但是家用電器不能出錯誤.為此,它的開發(fā)者將C+語言進行簡化,去掉指針操作,去掉運算符重載等,去掉C+中的多重繼承,得到了Java語言,將它變?yōu)橐环N解釋執(zhí)行的語言,在每個芯片上裝上一個Java語言虛擬機器。剛開始Java語言被稱之為Oak語言(橡樹語言)。這個也就是Java語言的安全性,它安全的主要根源就是拋棄掉了c+中指針的使用,從而變成了Java中的包裝類的使用。2.JAVA語言的發(fā)展 它的發(fā)展得益于互聯(lián)網(wǎng)的發(fā)展.剛開始時,互聯(lián)網(wǎng)的發(fā)展比較緩慢,

8、每個網(wǎng)頁上面都是靜態(tài)的畫面,不能與用戶進行操作.即使是后來的CGI也只是在服務(wù)器端進行運行,速度太慢,人們迫切需要能夠在瀏覽器端能與用戶進行交換,并且畫面能夠動起來,但是,WWW上的機器是各種各樣,操作系統(tǒng)也是千差萬別,后來人們想到了Oak語言,它是解釋型執(zhí)行語言,只要每個機器上的瀏覽器能夠有它的虛擬機器,Oak語言就可以運行,因此Oak語言發(fā)展起來,后來改名為Java語言.現(xiàn)在網(wǎng)絡(luò)上流行開發(fā)語言是Java語言。它是當前社會軟件開發(fā)的主流語言,主要得益于它的使用簡單和可移植性強。3.JAVA語言的成熟 JAVA語言現(xiàn)在逐漸成熟起來,它的類已經(jīng)近千個,它的類無所不包,而且還可以通過第三方購買類,

9、為Java語言的發(fā)展提供了良好的發(fā)展前景.同時它也是跨平臺的語言,因此許多軟件開發(fā)商,硬件開發(fā)上也爭先恐后地想乘上Java語言的快車,都聲稱支持JAVA語言,它對微軟發(fā)起了有力的挑戰(zhàn),而且Sun公司正努力開發(fā)JAVA芯片。目前JAVA程序已經(jīng)能運行在從Windows系列、Unix系列、Mac OS系列到Linux等幾乎所有操作系統(tǒng)平臺上,而且特別重要的是它已經(jīng)能做到"一次編寫,到處運行";另一方面,與C 等傳統(tǒng)程序設(shè)計語言相比,用JAVA來開發(fā)GUI應(yīng)用程序的難度已經(jīng)大大降低;加上JAVA語言所具有的純面向?qū)ο?、網(wǎng)絡(luò)功能強大等特性,使得JAVA非常適于用來編制應(yīng)用軟件。(五

10、)JAVA語言的特點JAVA語言的特點總結(jié)主要有以下6點:1、簡單性 JAVA語言類似于c+,所以c+程序員可以很容易的掌握,但是JAVA語言又是對c+語言的一種簡單化,它摒棄了c+中容易犯錯誤的地方,例如指針的使用和內(nèi)存管理。而且還提供了豐富的類庫,給程序員的開發(fā)帶了很大的方便。2、面向?qū)ο?面向?qū)ο罂梢哉f是JAVA語言最重要的特性,JAVA語言的設(shè)計完全是面向?qū)ο蟮?,它不像c語言那樣是面向程序設(shè)計的。JAVA語言支持靜態(tài)和動態(tài)的代碼重用和繼承,3、分布式 JAVA語言包括一個支持http和ftp基于TCP/IP協(xié)議的子庫,因此JAVA程序可以使用URL打開并且訪問網(wǎng)絡(luò)上的對象,和訪問本系統(tǒng)

11、的對象幾乎一樣??梢詾榉植辑h(huán)境尤其是Internet提供的動態(tài)內(nèi)容。4、健壯性JAVA致力于檢查編譯和運行時候的錯誤,類型檢查幫助檢查出很多開發(fā)早期的錯誤,JAVA自己操縱內(nèi)存,減少了很多內(nèi)存出錯的可能性。5、安全性JAVA的安全性可以從兩個方面進行保證,一方面,像指針和內(nèi)存的釋放等c+功能被摒棄,避免了非法內(nèi)存操作。另一方面,用JAVA創(chuàng)建瀏覽器時候,語言功能和瀏覽器本身提供的功能結(jié)合起來使它更加安全。6、可移植性 大多數(shù)的語言產(chǎn)生的目標代碼只能運行在一種cpu上面,即使是那種支持多種cpu的編譯器,也不可能一下產(chǎn)生多種適合的目標代碼。如果你要在多個cpu上運行,就要編譯多次,這給編程技術(shù)帶

12、來了很大的不便。而JAVA編譯器就不同了,它產(chǎn)生的目標代碼是針對一種并不存在的JVM虛擬機,這種虛擬機能夠掩蓋不同cpu的差別,是目標代碼可以運行在任何一臺裝有虛擬機的平臺上。二、問題分析(一)功能設(shè)計本軟件Java 2D 編程和多線程編程的結(jié)合應(yīng)用,主要功能定位于通過Java 2D API對圖形進行處理的一些機制。整個軟件的操作簡單,設(shè)計清晰明了,目的在于功能和效果的測試。軟件的整體布局上簡潔實用,美觀大方。方便使用,功能說明清晰,由于自己的技術(shù)水平有限,圖片的處理效果可能不太理想,但是能夠體現(xiàn)出Java在圖形處理方面的基本功能。(二)設(shè)計問題本課題研究的目標是:建立一個基于JAVA平臺的符

13、合當代社會理念、具有實用價值的、綜合效益很高的圖片處理機制。要解決的主要問題有以下幾點:1、理論問題: 如今網(wǎng)絡(luò)上圖形圖像處理軟件隨處可見,花樣繁多,用處各有不同。如何設(shè)計出自己的風(fēng)格,又要體現(xiàn)出實用性,不流于形式,是需要慎重考慮的。2、技術(shù)問題:運用到的JAVA中的多媒體編程,Java 2D,多線程的嚴格使用,體系結(jié)構(gòu),安全性,使用到的工具,都是我們要慎重考慮的問題,也是開發(fā)一個好的圖像處理軟件的必備要求。3、實踐問題:現(xiàn)在網(wǎng)絡(luò)上流行的圖形圖像處理軟件功能強大,花樣繁多,需要從實踐中不斷總結(jié),不切實際地模仿別人,拷貝別人,是不可取的。(三)設(shè)計原則本課題的主要開發(fā)原則遵循以下幾點:1、界面風(fēng)

14、格簡潔自然,切忌浮躁夸張的風(fēng)格,為實用者帶來一個輕松的交流環(huán)境;2、軟件的主要功能要基本完整,包括銳化,鈍化,拉伸,顏色暗亮,圖片翻轉(zhuǎn)、等等;3、 遵循Java的圖像處理機制,保證代碼運行的穩(wěn)定性和可靠性。(四)開發(fā)工具的選擇 Esclipes是Java開發(fā)的一種軟件,他的性能好使用方便,適用于中小型企業(yè)和普通的軟件開發(fā)。在這里要用到以下的一些工具:1、Java編譯器 Java編譯器將Java源代碼文件編譯成可執(zhí)行的Java字節(jié)碼。Java源代碼文件的擴展名為 . Java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產(chǎn)生一個class文件,這

15、意味一個Java源代碼文件可能編譯生成多個class文件。2、Java解釋器 Java解釋器對編譯生成的字節(jié)碼格式的可執(zhí)行程序的運行提供支持,它是運行非圖形Java程序的命令行工具。(五)使用到的主要技術(shù) 圖像是按空間位置組織的像素的集合,而像素則定義了某個顯示位置的圖像外觀,Java 2D API 在處理圖像中提供了一些實用的處理機制,Java 2D API的圖像處理主要是針對BufferedImage類創(chuàng)建圖像進行的,BufferedImage類對象是直接在內(nèi)存中創(chuàng)建的,用來保存和操作從文件中或URL中檢索的圖像數(shù)據(jù),并提供一組在BufferedImage對象上進行圖像處理操作的XyzOp

16、類,例如,AffineTransformOp、BandCombineOp、ColorConverOp、ConvolveOp、LookupOp、RescaleOp等類,這些類可用于圖像的縮放等幾何變換、仿射變換、邊緣檢測、鈍化、銳化、增強對比、圖像顏色校正等操作,并可以通過Graphics2D對象將圖像數(shù)據(jù)顯示在屏幕設(shè)備上。對圖像的各種操作一般是通過被稱為過濾器(filter)的圖像操作類實現(xiàn)的。1、java.awt java.awt包含了一些新增的2D API類和界面。其中Graphics2D繼承于java.awt.Graphics,是描繪2D圖形的對象。當對象要被描繪時,piant或upda

17、te方法會自動根據(jù)適當?shù)膱D形上下文,然后調(diào)用Graphics2D對象的繪制方法。2、java.awt.image Java 2D API的即時模式圖像處理類和接口處理像素映射圖像的技術(shù)。在java.awt.image包中,Java 2D API中的圖像操作類定義了許多過濾器,源圖像經(jīng)過過濾,產(chǎn)生出新圖像。3、java.awt.color java.awt.color包定義了ColorSpace類。該類包含在當前顏色空間和兩個標準顏色之間進行轉(zhuǎn)換的方法。 三、設(shè)計與實現(xiàn)(一)總體結(jié)構(gòu)設(shè)計軟件的處理結(jié)構(gòu)如下圖: 源圖像圖像處理操作目標圖像過濾器(二)具體設(shè)計 1、對BufferedImages類對

18、象進行圖像數(shù)據(jù)處理方案如下:1) 創(chuàng)建BufferedImage對象,將圖像數(shù)據(jù)存儲在BufferedImage對象中。2) 確定圖像數(shù)據(jù)處理模式,變換方式。3) 確定變換矩陣Kernel。4) 變換操作,圖像數(shù)據(jù)處理,應(yīng)用圖像數(shù)據(jù)處理操作類。5) 通過Graphics2D對象將圖像顯示在屏幕上 2、軟件的組成和功能1) 軟件的組成如下 2) 軟件的功能介紹如下:1.“翻轉(zhuǎn)”功能 相應(yīng)代碼如下:/* 圖像翻轉(zhuǎn)變換方法 */ public void turnBufferedImage() bfdImage2 = new BufferedImage(bfdImage1.getWidth(), bf

19、dImage1.getWidth(), bfdImage1.getType();DataBuffer db1 = bfdImage1.getRaster().getDataBuffer();DataBuffer db2 = bfdImage2.getRaster().getDataBuffer();for (int i = db1.getSize() - 1, j = 0; i >= 0; i-, j+) db2.setElem(j, db1.getElem(i);if (turn) bfdImage = bfdImage2;turn = false; else bfdImage = b

20、fdImage1;turn = true;2.“銳化”功能 相應(yīng)代碼如下: /* 圖像銳化變換方法 */public void sharpImage() bfdImage = null;float data = -1.0f, -1.0f, -1.0f, -1.0f, 10.0f, -1.0f, -1.0f,-1.0f, -1.0f ;Kernel kernel = new Kernel(3, 3, data);ConvolveOp co = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);co.filter(bfdImage1, bfdI

21、mage2);bfdImage = bfdImage2;3.“模糊”功能 相應(yīng)代碼如下/* 圖像模糊變換方法 */public void blurImage() float data = 0.0625f, 0.125f, 0.0625f, 0.125f, 0.125f, 0.125f,0.0625f, 0.125f, 0.0625f ;Kernel kernel = new Kernel(3, 3, data);ConvolveOp co = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);co.filter(bfdImage1, bfd

22、Image2);bfdImage = bfdImage2;4.“變灰”功能 相應(yīng)代碼如下:/* 圖像變灰方法 */public void grayImage() ColorConvertOp cco = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);cco.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;5.“明暗度”功能 相應(yīng)代碼如下:/* 圖像變亮方法 */public void brightenLUT() short brighten = new

23、 short256;short pixelValue;for (int i = 0; i < 256; i+) pixelValue = (short) (i + 10);if (pixelValue > 255) pixelValue = 255; else if (pixelValue < 0) pixelValue = 0;brighteni = pixelValue;lut = new ShortLookupTable(0, brighten);LookupOp lop = new LookupOp(lut, null);lop.filter(bfdImage1, b

24、fdImage2);bfdImage = bfdImage2;/* 圖像變暗方法 */public void darkenLUT() short darken = new short256;short pixelValue;for (int i = 0; i < 256; i+) pixelValue = (short) (i - 10);if (pixelValue > 255) pixelValue = 255; else if (pixelValue < 0) pixelValue = 0;darkeni = pixelValue;lut = new ShortLook

25、upTable(0, darken);LookupOp lop = new LookupOp(lut, null);lop.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;6.“拉伸”功能,相應(yīng)代碼如下:/* 圖像拉伸方法 */public void transform() transform.setToScale(scaleX, scaleY);AffineTransformOp ato = new AffineTransformOp(transform, null);bfdImage2.createGraphics().clearRect

26、(0, 0, bfdImage2.getWidth(this),bfdImage2.getHeight(this);ato.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2; X方向:public void setscaleX(double scalex) this.scaleX = scalex; Y方向: public void setscaleY(double scaley) this.scaleY = scaley;7.“還原”功能 相應(yīng)代碼如下:/* 圖像還原方法 */public void resume() bfdImage = b

27、fdImage1;this.repaint(); 3、軟件功能測試: 通過點擊按鈕觸發(fā)事件,然后通過GUI查看圖像的變化情況,以此測試軟件的處理功能是否可靠。四 結(jié)束語 經(jīng)過一個月的學(xué)習(xí)和努力,軟件的設(shè)計與開發(fā)已經(jīng)基本完成,我感覺在這段時間中受益匪淺。我從圖形圖像處理軟件的需求分析做起,從初步設(shè)計,到具體的模塊劃分,再到最后的統(tǒng)一聯(lián)結(jié),完成一個圖形圖像處理軟件的編寫過程,我體會到技術(shù)工作的樂趣和艱辛。通過這次軟件的編寫,我了解到軟件開發(fā)的整個過程:接到任務(wù)時首先需要作需求分析,收集材料和做一系列前期的準備工作,然后要具體的分析工作,最后再進行代碼的實現(xiàn)和測試。另外,經(jīng)過這段時的邊學(xué)邊做的過程,

28、我對Java的相關(guān)知識有一定了解,并且激發(fā)出了濃烈的學(xué)習(xí)興趣,而這無疑也是非常有益的。這次實踐也是大學(xué)期間一個難得的實踐鍛煉機會,相信這次鍛煉將會為我以后的工作和學(xué)習(xí)起到指導(dǎo)性的作用。參考文獻1 美Bruce EckelJAVA編程思想M 北京:機械工業(yè)出版社,2005:609-712。2 廖雷等Java程序設(shè)計教程M(第二版)北京:中國電力出版社,2003:13-383 馬 軍Java多線程編程初步J電腦報,2004,4(10):372-375.4 韓徐明浩 著,武傳海 譯Java編程基礎(chǔ)、應(yīng)用與實例M北京:人民郵電出版社,2005:79-81.5 美Kenneth F. krutsch.Java用戶界面編程指南M.北京:電子工業(yè)出版社,2005:45-89.6 Rogers Cadenhead. Sams'Teach Yourself Java 1.2 in 24 HoursM . London:Pearson,1999:22-63.7 Cay S.HorstmannCore Java 2.Volume I:Fundamentals MLondon:Prentice-Hall,2000:167-2218 孫一林,彭波. Java編程技術(shù)全接觸M. 北京:清華大學(xué)出版設(shè),2008:234-2

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論