




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于JAVA平臺的圖像處理軟件的設計與實現摘要:隨著計算機技術的迅速發展,數字圖像處理技術在各個領域的研究和應用日益深入和廣泛。Java是Sun公司推出的一種面向對象編程語言。Java非常適合于企業網絡和Internet環境,現已成為Internet中最受歡迎、最有影響的編程語言之一。目前國內使用Java語言開發的圖像處理系統比較少,這也增加了這方面的研究價值。本論文首先對Java處理圖形圖像的算法做介紹,并設計Java GUI(圖形用戶界面)用來顯示圖像處理的結果。關鍵詞:Java Graphics 2D,圖形圖像,Java GUI,多媒體,數字圖像一、緒論4(一)課題來源5(二)課題的目的
2、和意義5(三)本軟件的特點5(四) JAVA語言的發展概況51.JAVA語言的誕生52.JAVA語言的發展63.JAVA語言的成熟6(五)JAVA語言的特點61、簡單性62、面向對象73、分布式74、健壯性75、安全性76、可移植性7二、問題分析7(一)功能設計7(二)設計問題81、理論問題:82、技術問題:83、實踐問題:8(三)設計原則8(四)開發工具的選擇8(五)使用到的主要技術91、java.awt92、93、9三、設計與實現10(一)總體結構設計101、對BufferedImages類對象進行圖像數據處理方案如下:102、軟件的組成和功能103、軟件功能測試:14四 結束語14參考文
3、獻16一、緒論20世紀70年代以來,隨著計算機的廣泛應用,其使用者對其畫面表現能力的需求也隨之提高,數字圖像處理技術應運而生,它是一門迅速發展的新興學科,目的是在計算機上實現和強化人的視覺以及人對視覺信息的加工處理能力。目前國內外市場依然是以Adobe公司的Photoshop為主流的圖形圖像處理軟件,軟件擁有強大的處理能力,豐富的工具庫,代表著計算機圖形圖像處理領域的最高技術標準。進入21世紀,隨著計算機技術的迅猛發展和相關理論的不斷完善,數字圖像處理技術在許多應用領域受到廣泛重視并取得了重大的開拓性成就,如航空航天、生物醫學工程、工業檢測、機器人視覺、公安司法、軍事制導、文化藝術等領域。圖形
4、圖像處理技術已成為一門引人注目、前景遠大的新型學科。 Internet是全球最大的計算機網絡,它起源于1968年美國國防部高級研究計劃局 (ARPA-Advanced Research Project Agency)主持研制用于支持軍事研究的計算機實驗網ARPANET。網絡的發展,同時為圖形圖像技術提供了發展的空間,并且網絡的多媒體化,豐富化,同時也對圖形圖像處理提出了更高的要求,Google的衛星地圖便是非常成功的例子如今,各式各樣的,形形色色的精美圖片,在各個領域得到了廣泛的應用,圖形圖像技術已經成為必不可少的應用。 (一)課題來源本課題根據我大三學習期間所學習的JAVA開發課程結合現在網
5、上流行圖形圖像處理軟件,因為個人對這個領域比較感興趣,這個圖形圖像軟件的編寫是對我大學期間所學知識的一個總結。(二)課題的目的和意義主要目的在于通過基于Java平臺的圖像處理軟件的設計與實現,研究Java語言的面向對象編程和多媒體編程,并了解其圖形繪制機制和多線程原理.進一步熟悉JavaAPI類庫,對面向對象編程有更加深入的學習和掌握。本選題的意義在于對圖形圖像處理領域方面的深入和探究,試圖開發出具有實用價值的,或者具有一定參考價值的軟件產品.并且可以進一步了解和掌握軟件開發的全過程,改善和提高自身的軟件設計和開發能力。同時,自身對圖形圖像的處理比較感興趣,能夠增加自身對編程的學習和認識。 (
6、三)本軟件的特點由于自身技術的限制,在開發上面不能展示太多的功能和特色,加上Java語言本身在圖形圖像處理方面并不是很出色,所以在功能上只包含了幾何變換,訪射變換,鈍化,銳化,顏色變換等操作。選擇使用Java語言作為軟件的編程語言,是因為Java語言的簡單和可移植性強的特點,它能夠跨平臺運行,使用起來比較方便,不像c+那樣,是基于源代碼的移植,不能夠跨平臺運行,對于軟件開發沒有Java那樣便捷,并且Java在圖形圖像這方面的研究較少,希望在這上面有所發現。(四) JAVA語言的發展概況1.JAVA語言的誕生 它是有Sun公司開發出來的.它的誕生主要得益于家用電器的芯片.開始時,它的開發者想用C
7、+語言來開發電器的芯片,但是,由于芯片的種類各不相同,因此,程序要進行多次編譯.尤其是C+中的指針操作,一旦操作不慎,就會引起問題,程序可以出錯誤,但是家用電器不能出錯誤.為此,它的開發者將C+語言進行簡化,去掉指針操作,去掉運算符重載等,去掉C+中的多重繼承,得到了Java語言,將它變為一種解釋執行的語言,在每個芯片上裝上一個Java語言虛擬機器。剛開始Java語言被稱之為Oak語言(橡樹語言)。這個也就是Java語言的安全性,它安全的主要根源就是拋棄掉了c+中指針的使用,從而變成了Java中的包裝類的使用。2.JAVA語言的發展 它的發展得益于互聯網的發展.剛開始時,互聯網的發展比較緩慢,
8、每個網頁上面都是靜態的畫面,不能與用戶進行操作.即使是后來的CGI也只是在服務器端進行運行,速度太慢,人們迫切需要能夠在瀏覽器端能與用戶進行交換,并且畫面能夠動起來,但是,WWW上的機器是各種各樣,操作系統也是千差萬別,后來人們想到了Oak語言,它是解釋型執行語言,只要每個機器上的瀏覽器能夠有它的虛擬機器,Oak語言就可以運行,因此Oak語言發展起來,后來改名為Java語言.現在網絡上流行開發語言是Java語言。它是當前社會軟件開發的主流語言,主要得益于它的使用簡單和可移植性強。3.JAVA語言的成熟 JAVA語言現在逐漸成熟起來,它的類已經近千個,它的類無所不包,而且還可以通過第三方購買類,
9、為Java語言的發展提供了良好的發展前景.同時它也是跨平臺的語言,因此許多軟件開發商,硬件開發上也爭先恐后地想乘上Java語言的快車,都聲稱支持JAVA語言,它對微軟發起了有力的挑戰,而且Sun公司正努力開發JAVA芯片。目前JAVA程序已經能運行在從Windows系列、Unix系列、Mac OS系列到Linux等幾乎所有操作系統平臺上,而且特別重要的是它已經能做到"一次編寫,到處運行";另一方面,與C 等傳統程序設計語言相比,用JAVA來開發GUI應用程序的難度已經大大降低;加上JAVA語言所具有的純面向對象、網絡功能強大等特性,使得JAVA非常適于用來編制應用軟件。(五
10、)JAVA語言的特點JAVA語言的特點總結主要有以下6點:1、簡單性 JAVA語言類似于c+,所以c+程序員可以很容易的掌握,但是JAVA語言又是對c+語言的一種簡單化,它摒棄了c+中容易犯錯誤的地方,例如指針的使用和內存管理。而且還提供了豐富的類庫,給程序員的開發帶了很大的方便。2、面向對象 面向對象可以說是JAVA語言最重要的特性,JAVA語言的設計完全是面向對象的,它不像c語言那樣是面向程序設計的。JAVA語言支持靜態和動態的代碼重用和繼承,3、分布式 JAVA語言包括一個支持http和ftp基于TCP/IP協議的子庫,因此JAVA程序可以使用URL打開并且訪問網絡上的對象,和訪問本系統
11、的對象幾乎一樣??梢詾榉植辑h境尤其是Internet提供的動態內容。4、健壯性JAVA致力于檢查編譯和運行時候的錯誤,類型檢查幫助檢查出很多開發早期的錯誤,JAVA自己操縱內存,減少了很多內存出錯的可能性。5、安全性JAVA的安全性可以從兩個方面進行保證,一方面,像指針和內存的釋放等c+功能被摒棄,避免了非法內存操作。另一方面,用JAVA創建瀏覽器時候,語言功能和瀏覽器本身提供的功能結合起來使它更加安全。6、可移植性 大多數的語言產生的目標代碼只能運行在一種cpu上面,即使是那種支持多種cpu的編譯器,也不可能一下產生多種適合的目標代碼。如果你要在多個cpu上運行,就要編譯多次,這給編程技術帶
12、來了很大的不便。而JAVA編譯器就不同了,它產生的目標代碼是針對一種并不存在的JVM虛擬機,這種虛擬機能夠掩蓋不同cpu的差別,是目標代碼可以運行在任何一臺裝有虛擬機的平臺上。二、問題分析(一)功能設計本軟件Java 2D 編程和多線程編程的結合應用,主要功能定位于通過Java 2D API對圖形進行處理的一些機制。整個軟件的操作簡單,設計清晰明了,目的在于功能和效果的測試。軟件的整體布局上簡潔實用,美觀大方。方便使用,功能說明清晰,由于自己的技術水平有限,圖片的處理效果可能不太理想,但是能夠體現出Java在圖形處理方面的基本功能。(二)設計問題本課題研究的目標是:建立一個基于JAVA平臺的符
13、合當代社會理念、具有實用價值的、綜合效益很高的圖片處理機制。要解決的主要問題有以下幾點:1、理論問題: 如今網絡上圖形圖像處理軟件隨處可見,花樣繁多,用處各有不同。如何設計出自己的風格,又要體現出實用性,不流于形式,是需要慎重考慮的。2、技術問題:運用到的JAVA中的多媒體編程,Java 2D,多線程的嚴格使用,體系結構,安全性,使用到的工具,都是我們要慎重考慮的問題,也是開發一個好的圖像處理軟件的必備要求。3、實踐問題:現在網絡上流行的圖形圖像處理軟件功能強大,花樣繁多,需要從實踐中不斷總結,不切實際地模仿別人,拷貝別人,是不可取的。(三)設計原則本課題的主要開發原則遵循以下幾點:1、界面風
14、格簡潔自然,切忌浮躁夸張的風格,為實用者帶來一個輕松的交流環境;2、軟件的主要功能要基本完整,包括銳化,鈍化,拉伸,顏色暗亮,圖片翻轉、等等;3、 遵循Java的圖像處理機制,保證代碼運行的穩定性和可靠性。(四)開發工具的選擇 Esclipes是Java開發的一種軟件,他的性能好使用方便,適用于中小型企業和普通的軟件開發。在這里要用到以下的一些工具:1、Java編譯器 Java編譯器將Java源代碼文件編譯成可執行的Java字節碼。Java源代碼文件的擴展名為 . Java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產生一個class文件,這
15、意味一個Java源代碼文件可能編譯生成多個class文件。2、Java解釋器 Java解釋器對編譯生成的字節碼格式的可執行程序的運行提供支持,它是運行非圖形Java程序的命令行工具。(五)使用到的主要技術 圖像是按空間位置組織的像素的集合,而像素則定義了某個顯示位置的圖像外觀,Java 2D API 在處理圖像中提供了一些實用的處理機制,Java 2D API的圖像處理主要是針對BufferedImage類創建圖像進行的,BufferedImage類對象是直接在內存中創建的,用來保存和操作從文件中或URL中檢索的圖像數據,并提供一組在BufferedImage對象上進行圖像處理操作的XyzOp
16、類,例如,AffineTransformOp、BandCombineOp、ColorConverOp、ConvolveOp、LookupOp、RescaleOp等類,這些類可用于圖像的縮放等幾何變換、仿射變換、邊緣檢測、鈍化、銳化、增強對比、圖像顏色校正等操作,并可以通過Graphics2D對象將圖像數據顯示在屏幕設備上。對圖像的各種操作一般是通過被稱為過濾器(filter)的圖像操作類實現的。1、java.awt java.awt包含了一些新增的2D API類和界面。其中Graphics2D繼承于java.awt.Graphics,是描繪2D圖形的對象。當對象要被描繪時,piant或upda
17、te方法會自動根據適當的圖形上下文,然后調用Graphics2D對象的繪制方法。2、java.awt.image Java 2D API的即時模式圖像處理類和接口處理像素映射圖像的技術。在java.awt.image包中,Java 2D API中的圖像操作類定義了許多過濾器,源圖像經過過濾,產生出新圖像。3、java.awt.color java.awt.color包定義了ColorSpace類。該類包含在當前顏色空間和兩個標準顏色之間進行轉換的方法。 三、設計與實現(一)總體結構設計軟件的處理結構如下圖: 源圖像圖像處理操作目標圖像過濾器(二)具體設計 1、對BufferedImages類對
18、象進行圖像數據處理方案如下:1) 創建BufferedImage對象,將圖像數據存儲在BufferedImage對象中。2) 確定圖像數據處理模式,變換方式。3) 確定變換矩陣Kernel。4) 變換操作,圖像數據處理,應用圖像數據處理操作類。5) 通過Graphics2D對象將圖像顯示在屏幕上 2、軟件的組成和功能1) 軟件的組成如下 2) 軟件的功能介紹如下:1.“翻轉”功能 相應代碼如下:/* 圖像翻轉變換方法 */ 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.“銳化”功能 相應代碼如下: /* 圖像銳化變換方法 */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.“模糊”功能 相應代碼如下/* 圖像模糊變換方法 */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.“變灰”功能 相應代碼如下:/* 圖像變灰方法 */public void grayImage() ColorConvertOp cco = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);cco.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;5.“明暗度”功能 相應代碼如下:/* 圖像變亮方法 */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.“拉伸”功能,相應代碼如下:/* 圖像拉伸方法 */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.“還原”功能 相應代碼如下:/* 圖像還原方法 */public void resume() bfdImage = b
27、fdImage1;this.repaint(); 3、軟件功能測試: 通過點擊按鈕觸發事件,然后通過GUI查看圖像的變化情況,以此測試軟件的處理功能是否可靠。四 結束語 經過一個月的學習和努力,軟件的設計與開發已經基本完成,我感覺在這段時間中受益匪淺。我從圖形圖像處理軟件的需求分析做起,從初步設計,到具體的模塊劃分,再到最后的統一聯結,完成一個圖形圖像處理軟件的編寫過程,我體會到技術工作的樂趣和艱辛。通過這次軟件的編寫,我了解到軟件開發的整個過程:接到任務時首先需要作需求分析,收集材料和做一系列前期的準備工作,然后要具體的分析工作,最后再進行代碼的實現和測試。另外,經過這段時的邊學邊做的過程,
28、我對Java的相關知識有一定了解,并且激發出了濃烈的學習興趣,而這無疑也是非常有益的。這次實踐也是大學期間一個難得的實踐鍛煉機會,相信這次鍛煉將會為我以后的工作和學習起到指導性的作用。參考文獻1 美Bruce EckelJAVA編程思想M 北京:機械工業出版社,2005:609-712。2 廖雷等Java程序設計教程M(第二版)北京:中國電力出版社,2003:13-383 馬 軍Java多線程編程初步J電腦報,2004,4(10):372-375.4 韓徐明浩 著,武傳海 譯Java編程基礎、應用與實例M北京:人民郵電出版社,2005:79-81.5 美Kenneth F. krutsch.Java用戶界面編程指南M.北京:電子工業出版社,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編程技術全接觸M. 北京:清華大學出版設,2008:234-2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府合同范本(2篇)
- 2025公司員工安全培訓考試試題(研優卷)
- 2025年公司安全培訓考試試題附參考答案(A卷)
- 2025年企業安全培訓考試試題附參考答案(預熱題)
- 專題 J-15【簡語法-單選題專練】狀語從句 2025年中考英語講解+練習題匯編(全國)
- 2025企業合作合同版
- 2025年美元借款的合同
- 2025年智能鑄造生產線合作協議書
- 2025電腦租賃合同深圳范本
- 2025年度公園內廣告牌制作合同
- 2024吉林省民航機場集團有限公司招聘筆試參考題庫附帶答案詳解
- 電磁現象及其應用-理解電磁現象及其在日常生活中的應用
- 車輛行駛安全培訓模板
- 開展中醫藥健康文化宣傳活動方案(樣式)
- 油漆涂料行業市場分析
- 呼吸道合胞病毒知識科普
- 跨境數據流動與治理
- 輸血治療知情同意書
- 幼兒園副園長聘任園長合同(36篇)
- 30道中國石油天然氣地球物理勘探工程師崗位常見面試問題含HR常問問題考察點及參考回答
- 高級焊工實操
評論
0/150
提交評論