




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE1PAGE一款基于Android平臺的圖像處理系統設計摘要隨著科學技術的不斷進步與發展,互聯網技術以及無線通信技術更是像空氣一樣充斥在每個人的生活中。這導致智能手機、平板電腦等智能終端的快速普及,智能設備在我們的生活中漸漸占據了更加重要的地位。本文提出了一種基于安卓手機的拍照及圖像處理APP的設計與實現方案,介紹了Android平臺以及圖像處理軟件的框架設計。本系統采用AndroidStudio作為集成開發工具,使用Java語言開發。實現了通過調用系統相機或從相冊中獲取圖片并將圖片展現給用戶,由用戶選擇某一區域像素點進行油摻雜含量的獲取等功能。經過實際測試,系統操作簡單便捷,功能較為實用,且對油摻雜含量的平均識別準確率較高,并且在主流型號的安卓設備均能正常使用。關鍵詞:安卓;圖像處理;IntelliJIDEA;Java目錄TOC\o"1-2"\h\z\u1 緒論 11.1研究背景 11.2研究現狀 21.3研究意義 41.4全文組織結構 52基礎知識及相關設計原理 62.1Android簡介 62.2AndroidStudio簡介 102.3AndroidSDK簡介 112.4Android模擬器 112.5RGB介紹 113開發的可行性與需求分析 123.1可行性分析 123.2需求分析 134系統分析與總體設計 144.1總模塊劃分 144.2圖像獲取模塊 144.3圖像顯示模塊 154.4圖像保存模塊 174.5圖像處理模塊 175系統的詳細設計與實現 185.1系統文件的整體結構 185.2系統界面的實現 195.3系統功能的實現 196結論 23參考文獻 25
緒論1.1研究背景隨著我們現代科學和信息技術的不斷進步與快速發展,互聯網信息技術和現代無線通訊網絡技術就像空氣一樣彌漫在每個人的日常生活中。這些使得智能手機、平板電腦等各種移動網絡智能終端設備迅速深入發展和廣泛普及,智能設備在我們的生活中漸漸占據了更加重要的地位。手機軟硬件水平的不斷提升,導致人們對于手機的需求也產生了巨大的變化,從簡簡單單的撥打電話、收發短信等基本功能轉向訪問互聯網、游戲娛樂等需求,如今在這些功能上的使用體驗逐漸成為評價手機的重要因素。反觀近年來的手機操作系統,移動智能終端早已融入了我們日常生活和工作的各個角落。由Google研究和發行的Android操作系統被認為是目前應用最廣泛的一種移動端操作系統。2008年9月,Google正式對外推出了Android1.0版本移動端操作系統,并且正式公布了Android系統的源代碼。此后,Google不斷的更新和升級Android系統版本,Android系統得到了許多硬件廠商和大量用戶的歡迎。據截至2020年10月統計調查機構Netmarketshare的數據,Android和iOS占移動端操作系統的99.78%,其中Android系統所占比例為73.03%。由于ios代碼不開源,價格比較昂貴,得不到開發者和大多數用戶青睞,致使其市場占有份額遠低于安卓。從以上數據可以看出來,安卓移動終端的智能手機在國內具有不可撼動的霸主地位,未來基于Android系統的應用程序必然會走向快速成長的新時代。由于Android系統采用了開源的方式,給予了開發者和終端廠商更大的靈活性,開發者在軟件程序的開發和不同手機的移植上更加簡單,不必再考慮到對于不同廠商的軟件內容進行審核。終端廠家可以根據自己的需求對其進行深度量身定制的系統,來開發出適合自己的本土化應用。隨著終端廠家、電信運營商及第三方應用開發人員的推廣,用戶可供選擇的應用資源將得到進一步豐富。而且Android系統的廣泛使用并非只是局限于移動設備產品。近年來,它迅速發展拓寬了應用領域,包括智能平板電腦、汽車移動操作系統、電視以及機頂盒、智能家電、智慧會議管理系統等。目前各IT技術廠商都在努力積極研究和探索開發前沿的應用程序和軟件,望在Android操作系統技術開發的最后一個關鍵時期占據更大的市場份額。從上述中可以得出結論,安卓移動終端的智能手機在國內具有不可撼動的霸主地位,因此對于基于安卓手機的拍照及圖像處理APP來說將得到更廣泛的應用。科技在發展,社會在進步,企業也把成功的關鍵也由技術、管理轉到了創新這個主題上。現如今,企業已經把自己的創新作為一個企業能夠真正地生存與發展的基礎和核心,創新的內容大致可以概括為:技術、體制、思想等很多方面。概要而言,技術創新的應用可以降低生產成本,改善了生產的效率;要更加有秩序地監督和規范企業的經營和日常運作,那么就需要我們進行制度的革命性創新;在創新中相對比較重要的一個方面便是思維的創新,企業經營管理人員思維的創新能夠促使企業在正確的發展道路上得到保障和進步,員工們的這種思維和創新才能夠增強企業內部員工的凝聚力,為整個企業發展帶來更多的經濟效益。因此,企業若沒有了創新點,它的產品就失去了競爭力,一味的去模仿永遠都只能走在后面。不僅僅是企業,社會的方方面面都是需要創新的,只有這樣社會才能進步。可見軟件的創新是必須的,也是致命的。作為軟件的載體,現在互聯網已經成為了發展最為迅猛的產業之一,這就必然導致了軟件技術的快速更新換代,一個棒的創新很可能顛覆整個軟件產業,導致互聯網革命。可見軟件創新的重要性。如果你的軟件像Facebook那樣有很好的創新點,你也很可能成就自己的軟件王國。軟件行業相比于其他行業,要有更低的起點,更多的機遇。1.2研究現狀1.2.1操作系統研究現狀近年來,隨著電子科學和技術的進步與發展,智能手機的開發與研究以及其應用已經引起了全球移動廠商的廣泛重視。過去幾年,移動廠商使智能設備不僅從功能上獲得很多成就,而且在性能上也取得了相當大幅度的改善。近年來,智能手機正迅速發展成為個人計算與通信的重要核心設備。此外,隨著未來我國5g網絡和WLAN的建立與發展,智能手機的普及率明顯增強。隨著國民經濟的飛速發展,它也基本上流行于老百姓的生活中。由于移動端和智能手機諸多優點,給傳統的互聯網行業帶來了一個全新的服務領域與商機。而且智能手機強大的一個重要功能之一在于它是因為其強大的移動設備操作系統,所以在智能手機操作系統之間的競爭也越來越激烈。目前,手機操作系統主要有以下幾種。(1)Android系統。Android是Google公司于2007年發布的智能手機操作系統,最大的優勢之一就是其具有良好的開放性,同時也很便捷,現在安卓最新的軟件版本是android11,可以直接去其官網查找到每一個軟件版本的源代碼,安卓的底層所采用的是Linux內核,基于安卓平臺而設計和開發的各種應用都是使用java編程語言,安卓系統的軟件兼容性很好,它已經兼容了谷歌市場中許多的手機和應用,為此也吸引了許多的移動終端制作商和程序員。android系統的應用非常廣泛,例如將安卓平臺的應用融入到對電力儀表進行遠程讀取的系統中,很好地解決了傳統的指針式儀表閱讀不方便的問題。又如通過安卓平臺已經實現了對木馬進行檢測的監控系統,實驗結果表明該監控系統可以有效地提高木馬的檢測效率。(2)IOS系統。ios系統最初發布于2007年,蘋果移動設備就是基于這個系統進行開發,隨后ios系統逐漸變得成熟了起來,其用途也隨之拓寬,之后又被廣泛地應用在ipodtouch、ipad、itv等各類產品上。ios系統不僅在設計上擁有炫麗的人機交互界面和完全符合使用者身心的操作體驗感,而且采用了BSDUNIX的軟件內核和UNIX系統的硬件內存進行管理的方式,使得該系統的軟件功能性大幅度地提高,運行更加流暢并且使得用戶在蘋果的應用商店中直接下載和安裝使用該系統的應用程序,基于以上眾多的優點,雖然蘋果機廣泛地受到了歡迎,但是美中不足的一點就是,它主要定位于上層的用戶并且由于該系統被完全封閉,它的研究和開發過程都需要非常高的技術水平和財力支撐,所以其的發展也就受到了限制。(3)Symbian系統。諾基亞在2008年收購塞班并致力于發展塞班系統,曾經塞班系統因其自身具備的工作實時性和支持多任務處理等功能,當時已經占據的市場份額的最大部分。Symbian系統的優點是耗電低、運行內存小,正好符合手機內存有限的特點。塞班系統雖然比較成熟,但是還是存在許多缺點,主要體現在開源不夠徹底,Symbian系統的普遍機型配置都不太高,CPU運行速度也有待加強,在多媒體的支持上不夠寬泛,由于其采用的是多個平臺對第三方軟件的支持,所以兼容性差。之后由于Android系統的出現,它的用戶數量明顯下降,很快就淹沒在市場競爭中,直至消失,在2011年底,諾基亞放棄了塞班系統,直至2014年,徹底停掉了對塞班系統的技術支持。(4)Windowsphone平臺。Windows操作系統最常見的是應用在PC端,為了在手機領域創造出同樣的價值,微軟研發了Windowsphone系統,并且于2010年由微軟公司正式發布。系統設計的最初目的是為了與Android和IOS系統競爭手機市場,以便在智能手機操作系統市場上占有一席之地。在2014年諾基亞放棄了塞班系統之后,開始和微軟合作,共同開發WindowsPhone。現在最新的系統版本是8.1,此系統已經終結,完全被windows10代替,WindowsPhone8.1就是最后一個版本。1.2.2圖像處理技術研究現狀圖像處理技術是20世紀60年代隨著計算機技術和VLSI(VeryLargeScaleIntegration)的發展而產生、發展和不斷成熟起來的一個新興技術領域,它在理論上和實際應用中都取得了很大的成就。圖像處理技術的研究方向雖然分支較多較廣,但是按圖像類型分類,整體研究方向可分為模擬圖像處理和數字圖像處理兩大類。本文主要介紹數字圖像處理,數字圖像處理的主要工作是將圖像信號轉換成數字信號,然后利用硬件設備如計算機對其進行進一步處理。利用電子計算機進行圖像處理的技術起始于二十世紀中期,初期的圖像處理的目標是增強圖像的質量和視覺性,達到人們期望的視覺效果為目的。在當時的圖像處理中,最常見的處理一般是輸入質量低的圖像,通過計算機處理后,將提升質量后的圖像進行輸出,現在,更多的圖像處理技術正在發展,包括圖像的識別、圖像復原、圖像理解等新興技術。數字圖像處理具有很多優點,最重要的一點就是其處理圖像精度較高,處理內容非常繁雜多樣。除此之外,不可忽視的一點就是,數字圖像處理可以利用計算機強大的運算能力進行高強度的復雜運算。而缺點就在于復雜問題的處理速度上,目前也有許多科研工作者致力于提升數字圖像處理速度的算法研究。數字圖像處理技術發展速度極快,現如今已經應用于各個行業領域,對生物工程、電子科學、天文學、物理學、安全工程、工農業、教育業、藝術、經濟、國家軍事防御等領域產生重大的影響并極大促進了這些領域的蓬勃發展。圖像處理技術現如今己經成為一口引人注目和前景廣闊的新興學科。為了解決圖像處理技術帶來的問題,國內外數不勝數的圖像處理類軟件己經被開發出來,但現狀則是這些軟件還是存在或多或少的缺陷,而且整體的設計也沒有創新,在實用性上和用戶體驗上都不再能滿足當代用戶快節奏的使用需求1.3研究意義現如今通過手機我們可以完成越來越多的事情,可以從互聯網接收到各式各樣的信息,可以與朋友在線聊天、視頻,可以在閑暇時間玩玩游戲。而正是不同的APP才能幫助我們達到這一目的。APP還可以與傳統行業相結合,例如美團APP,人們只需要在用餐前通過手機APP向餐廳發起預約,就可以大大縮短在餐廳內的排隊等候時間。又例如各類銀行APP,一些基本的查詢余額、轉賬等業務都可以在手機APP上自助操作,不再需要去銀行柜臺,大大提高了辦事效率。再例如微信朋友圈、微博、抖音等APP的開發,漸漸成為人們通過文字、圖像甚至短視頻等方式向其他人展示自己的生活。而伴隨著科技的發展,文字等傳統媒介漸漸地淡出人們眼中,對于圖像、視頻的需求不斷增大,而且人們漸漸地不再滿足于使用原始圖像、視頻,在使用時都會對圖像加以處理以達到想要的效果。圖像處理目前在天文、醫學、農業等領域都有廣泛的應用。在天文方面,通過對遙感圖片進行圖像處理可以判別出地貌及資源分布;在醫學方面,可以用來通過AI分析檢測病情,對病灶的有無以及位置進行早期輔助診斷;在農業方面,可以對農作物的圖像進行采集與分析,判斷植物長勢與病蟲害情況,幫助實現增產增收。在Android系統應用如此廣泛的今天,開發一款基于Android系統的圖像處理軟件可以便于我們對智能終端獲取到的圖像進行及時的處理。圖像處理技術指通過計算機對數字圖像數據進行分析與處理,可以用于改善圖像的視覺效果,在許多領域都有重要的應用價值。因此,開發出Android平臺的圖像處理軟件具有實用價值。相比于PC終端的圖像處理軟件,移動終端的圖像處理軟件雖然大多在功能數量及專業性上有所欠缺,但具有簡單、便捷的優勢。現在許多年輕人喜歡用圖像記錄生活中的方方面面,拍照后需要對圖像進行一些編輯和處理。對于大多數的普通用戶而言,在手機上對圖像進行一些簡單的處理就能達到目標的效果,沒有必要使用PC端上專業性較強、操作相對繁瑣的專業圖像處理軟件,因此本課題可以對我們實際生活產生幫助。1.4全文組織結構全文一共分為六章,除了本章緒論外,其余五章安排如下:第二章:基礎知識及相關設計原理,主要介紹了本次開發的基礎知識和所使用的相關技術,分別從編程語言,組件與工具,設計模式等角度分析了本次開發的實現前期準備,最后介紹了本次開發所使用的開發工具;第三章:開發的可行性與需求分析,主要從技術,經濟,操作,時間和法律五個角度分析了本次開發的可行性,從功能,運行等方面對本次開發做出系統的開發需求;第四章:系統的詳細設計,對要實現的系統架構,具體功能模塊的實現做出詳細的說明;第五章:系統的詳細設計與實現,詳細介紹了本次研究的實現部分,對每一個功能部分做出介紹,介紹了使用的關鍵類與函數,每一項功能,分別從關鍵代碼和頁面展示兩個角度介紹,全面敘述了開發的整個流程;第六章:總結與展望,主要總結了研究工作,同時針對目前研究工作中存在的一些不足提出了相應的研究展望。
2基礎知識及相關設計原理2.1Android簡介Android僅僅作為一個單詞來看,它的意思為“機器人”,它是基于Linux內核的操作系統,其代碼開源而且免費。安卓系統廣泛應用于智能設備終端,因其豐富硬件設備以及良好的擴展功能收到眾多軟件開發廠商以及開發人員的青睞。2005年,名噪一時的安迪魯賓安卓公司被Google公司收購。幾年后Google公司順勢建立了安卓開發者聯盟,提供平臺給智能硬件設備制造商和通信設備制造商。經過許多企業的共同努力以及安卓自身開源的優勢,安卓逐漸發展龐大。而且因其代碼開源,開發者可以快速掌握安卓的開發技巧并能夠編寫出立即可以在設備上或安卓模擬器上運行的應用程序。相較而言,安卓模擬器與實體機并無區別,操作甚至更為便捷。每個系統或者產品總有幾家做的非常出色的公司,這樣就有了競爭者,顯然,蘋果公司的IOS系統和RIM的BlackberryOS系統是Android系統的主要競爭者。統計到2012年,Android平臺己占據全球智能操作系統份額第一位,占市場的近40%,到2018年,Android系統已經占到全球市場的90%以上。對于終端設備用戶而言,Android之所以收到追捧主要有一下原因:(1)安卓手機各價位均有分布,對于大多數用戶而言都能過在適合自己的價位中選取心儀的產品,用戶體驗感較好。而且現如今的安卓系統操作簡便,能夠滿足廣大用戶群體的需求。(2)可移植性強,Android對任意平臺的移植都不受限制,且系統能夠自己進行垃圾處理。最重要的一點,Android代碼開源,利于開發人員對系統更深一步的理解以及對于系統的創新。Android的底層由C/C++實現,應用層通常由Java語言編寫程序。隨著Android的發展,我們既可以選擇用java編寫Android應用程序,亦可用其它很多語言來編寫。例如使用NDK采用C/C++作為編程語言,使用SL4A則采用Python等語言。在本系統中,我選擇了java語言來編寫程序。2.1.1Android系統結構Android系統構架是安卓系統的體系結構,Android的系統架構和其操作系統一樣,采用了分層的架構,共可分為四層,如圖2-1所示,從高到低依次是Android應用層,Android應用框架層,Android系統運行庫層和Linux內核層。每一層都有明確功能,且層次結構清晰,相互之間工作協調卻又互不干擾。圖2-1Android系統結構圖應用層:主要包括聯系人、瀏覽器、電話、通訊錄、日歷等。這些應用程序通過Java實現,是Google公司早期捆綁的核心應用。應用框架層:主要由活動管理器(ActivityManager)、通知管理器(NotificationManager)、資源管理器(ResourceManager)、內容提供器(ContentProviders)以及視圖(Views)組成。這些組成部分都是使用Java語言編寫的封裝好的API接口,開發人員通過調用這些接口能夠完成對應的功能。其中活動管理器負責控制Application的生命周期,包括應用程序何時開始何時結束等;資源管理器負責各方面的資源分配與整合,便于開發人員對資源進行訪問,提高了工作效率;內容提供器提供了數據跨平臺訪問的功能,不同程序之間可以通過調用ContentProvider來實現數據的交互;視圖系統提供了開發可視化頁面的功能。系統運行庫層:主要由程序庫和Android運行庫組成。程序庫又可分為系統C庫、媒體庫、數據庫SQLite等。媒體庫可以用于對音頻、視頻等媒體文件的播放顯示;SQLite為安卓自帶的輕型數據庫,用于存放較小容量的數據信息。Linux內核層:作為連接軟件與硬件之間的橋梁。主要負責進程間的管理、內存存儲的管理以及網絡之間通信等功能。2.1.2Android應用程序對安卓應用程序的開發實際上是對Activity(活動)、Service(服務)、BroadcastReceiver(廣播接收器)、ContentProvider(內容提供者)四大組件進行組合。這四大組件之間并非獨立存在,而是通過Intent(意圖)進行相互通信。每個應用程序可能包含一個或多個組件,應用中用到的組件需要在AndroidManifest中注冊,否則系統不能識別到這些組件,組件也不能發揮出相應的功能。Activity:是用戶操作的可視化界面;它為用戶提供了一個完成操作指令的窗口。當我們創建完畢Activity之后,需要調用setContentView()方法來完成界面的顯示;以此來為用戶提供交互的入口。在AndroidApp中只要能看見的幾乎都要依托于Activity,所以Activity是在開發中使用最頻繁的一種組件。Activity的生命周期如圖2-2所示。圖2-2Activity的生命周期Service:Android中實現程序后臺運行的解決方案,它非常適合去執行那些不需要和用戶交互而且還要求長期運行的任務。服務的運行不依賴于任何用戶界面,即使程序被切換到后臺,或者用戶打開了另外一個應用程序,服務仍然能夠保持正常運行。BroadcastReceiver:在Android中,廣播是一種廣泛使用的在應用程序之間傳輸信息的機制。廣播接收器是一種過濾、接收和響應廣播的組件。廣播接收器可用于使應用程序響應外部事件。例如,當電話呼叫的外部事件到來時,廣播接收器可用于處理。ContentProvider:用于在不同應用間進行數據交互。2.1.3Android頁面布局管理為了豐富界面的多樣性,安卓系統提供的布局設置發揮了巨大作用,一個較為美觀的頁面往往采用了多種布局的相互組合。在開發過程中常用的布局有5種。LinearLayout(線性布局):最常用也是最簡單的一種布局方式,LinearLayout按照垂直或者水平的順序依次排列子元素(通過android:orientation屬性來控制),每一個子元素都位于前一個元素之后。RelativeLayout(相對布局):RelativeLayout按照控件之間相對位置或相對父容器位置進行排列布局,組件與組件之間存在很強依賴性。TableLayout(表格布局):以行和列的形式對控件進行管理,每一行為一個TableRow對象,或一個View控件。FrameLayout(框架布局):整個界面被當成一塊空白備用區域,所有的子元素都不能被指定放置的位置,它們統統放于這塊區域的左上角,并且后面的子元素直接覆蓋在前面的子元素之上,將前面的子元素部分和全部遮擋。AbsoluteLayout(絕對布局):絕對布局相比其它幾種布局,更為直觀,只需依據子元素android:layout_x和android:layout_y屬性,即相當于x坐標和y坐標。但是因為各手機屏幕并不相同,使用絕對布局會導致頁面錯亂,嚴重影響用戶體驗。FrameLayout(幀布局):幀布局是幾種布局中最簡略的。由于其糟糕的界面風格,開發人員很少使用它。對于布局中使用的組件,前一個組件將覆蓋后一個組件,并且效果處于層疊狀態。2.2AndroidStudio簡介AndroidStudio是用于開發Android應用的官方集成開發環境(IDE),以IntelliJIDEA為基礎構建而成。除了IntelliJ強大的代碼編輯器和開發者工具,AndroidStudio還提供更多可提高Android應用構建效率的功能,例如:基于Gradle的靈活構建系統快速且功能豐富的模擬器統一的環境(供您開發適用于所有Android設備的應用)ApplyChanges功能可將代碼和資源更改推送到正在運行的應用,而無需重啟應用代碼模板和GitHub集成,可協助您打造常見的應用功能及導入示例代碼大量的測試工具和框架Lint工具,能夠找出性能、易用性和版本兼容性等方面的問題C++和NDK支持內置對GoogleCloudPlatform的支持,可輕松集成GoogleCloudMessaging和AppEngine2.3AndroidSDK簡介SDK的中文全稱是軟件開發工具包,它是軟件工程師建立應用軟件的開發工具的集合,AndroidSDK是指Android專屬的軟件開發包。它包含了Android模擬器、Android的調試工具、Android的反匯編工具、開發Android應用程序的API等,是Android開發中不可缺少的一部分,開發人員可以利用它開發Android應用程序。2.4Android模擬器通過AndroidStudio中內置的Android模擬器我們可以在電腦上運行Android應用程序。新建模擬器時,我們可以模擬Android設備上相應的硬件和軟件環境,可以選擇設備型號、SDK的版本、CPU類型、屏幕樣式、SD卡大小等。通過模擬器,我們可以模擬應用程序在智能手機、智能平板、智能電視、智能手表等智能終端上的運行效果,不需要準備相應的硬件設備,大大節約了開發成本。模擬器目前還有一些功能上的限制,比如不支持撥打接聽真實的電話、不支持USB連接等,開發中我們可以運用真實的設備進行測試。2.5RGB介紹2.5.1RGB色彩模式RGB代表紅,綠,藍三個通道的顏色。它是一種目前行業使用最為廣泛的標準顏色模式,要獲得各種顏色,就得通過紅色(R),藍(B),綠色(G)三個顏色通道的變化,以及另一個偏移量的疊加來實現。這個標準幾乎能組合成人眼能夠別的所有的顏色。圖像中每一個像素的RGB分量分配一個0到255范圍內的強度值為RGB色彩模式。例:白色的R、G、B都為255;純紅色R值為255、G值為0、B為0;黑色的R、G、B都為0。RGB圖像按照不同的比例混合三種顏色,就可以使它們在屏幕上重現16777216種顏色。當三種顏色的值相等時,會產生灰色的陰影。2.5.2RGB原理RGB色彩模型的設計和發展的原則即為顏色的光。另一種說法即為加法混合,如紅色,綠色,和藍色的光的方式,顏色混合時,它們重疊彼此的光,和亮度等于的兩個亮度之和,更高的亮度即為更多顏色混合,即如同加法器。此外,有色的光被無色的光稀釋和亮度加強,如藍光和白光遭遇,藍色光被白光淡化,導致出現明亮的淺藍色光。知道RGB混合原理,我們可以了解設置各種顏色的軟件。加法混合的特點:越疊加越明亮。也就是說,將紅,綠,藍三盞燈的疊加時,中心三色疊加的最亮的部分為白色。紅色,綠色和藍色通道,每種顏色各分為255級的亮度,“燈”最弱為0,即為被關閉,并在255出現亮的“燈”。當三色值是255是為最亮的白色,三色數值相同時為無色彩的灰度色,而三色數值都為0時為黑色。2.5.3RGB參數表參數名類型有效值范圍含義RedInteger0-255指定顏色中紅色分量強度GreenInteger0-255指定顏色中綠色分量強度BlueInteger0-255指定顏色中藍色分量強度2.63開發的可行性與需求分析3.1可行性分析可行性分析是開發過程中非常重要的一部分。進行可行性分析并不是要解決任何技術問題或設計難點,而是要從各個方面考慮本次研究的整個過程是否可行。在這個過程中,我們會考慮項目的技術難點和解決方案,采用什么技術,如何開發等方面來說明整個項目是可以完成的。除了技術上的可行性,我們還會說明這個開發周期在經濟上是可行的,也就是說整個開發過程的成本預算在我們的控制范圍之內,或者說開發系統未來的經濟價值是非常可觀的。操作可行性是指交付給用戶使用后能夠在預期范圍時間內掌握使用的基本原理。時間可行性是指整個開發過程符合我們的日期計劃。法律可行性是指開發過程中不涉及任何法律侵權問題,不冒用或者抄襲他人的科學成果。但事實并非如此。可行性分析是開發過程的基礎。下面我們將從技術,經濟,操作,時間和法律五個角度剖析本次學生成績管理系統的可行性。3.1.1技術可行性隨著手機硬件技術的不斷發展,一般的智能手機完全可以滿足圖像處理的性能需求。Android系統本身也提供了繪制2D和3D圖形的方法,采用AndroidStudio作為編程工具,Java語言作為編程語言,技術上完全能實現。3.1.2經濟可行性經濟可行性指我們的開發過程符合我們之前的開發預算,整個開發過程的費用都有清晰的記錄,符合開發過程的要求。而在系統完成后,此圖像處理app在實用性上具有很好的前景,具有很高的經濟價值,這也符合我們在系統開發之前考慮的。綜上所述,我們認為該系統的設計和開發在經濟上是可行的。3.1.3操作可行性此app大部分功能都已經通過設計好的圖形界面來實現,圖像的獲取調用了系統集成的相機或相冊app,在操作上簡單直接,不會給用戶帶來歧義。綜上所述,我們可以得出結論:本次開發從操作上來講是可行的。3.1.4時間可行性在app開發之前,我們已經制定了詳細的工作計劃,整個開發將按照既定的時間表進行,充分保證整個開發計劃的時間可行性。從2020年11月開始,我們要完成對系統的需求分析,同時也要學習相關的開發知識,積累有關的經驗。從2021年3月開始,這一階段我們逐步完善了系統各個模塊的功能,并進行了相關的測試。2021年4月開始,將總結前幾個階段的工作并對系統功能上的不足進行匯總,同時開始撰寫論文。2021年5月,整個開發過程進入尾聲,論文即將完成并提交審閱。3.1.5法律可行性從法律角度上講,我們在整個開發過程中未出現知識產權問題,開發使用的技術資料都是通過合法渠道獲取,開發過程中并未抄襲任何app。綜上所述,此app的開發過程在法律上是可行的。3.2需求分析在這一部分,我們將主要介紹本文的需求分析部分。需求分析是指在對項目有了具體的了解之后,開始對要實現的功能進行一定的分析,并圍繞功能實現、程序操作以及安全運行等方面給出一些實現目標,以便于下一步的開發過程。3.2.1功能需求(1)圖像的獲取與保存。系統首先需要獲取圖像,才能對進行下一步的操作。根據手機上應用程序的特點,獲取圖像的方式可以包括從系統圖庫獲取圖像、手機相機拍照獲取圖像、瀏覽文件獲取圖像三種方式,用戶從不同途徑獲取到的圖像應該都能被處理。(2)圖像基本信息的分析。系統需要能夠對圖像信息進行計算和分析,包括文件路徑、大小、圖像分辨率,在跳轉activity時這些信息顯得尤為重要,而且可以選擇將這些信息呈現給用戶也能為后續的處理提供一些依據。(3)獲取RGB值。系統通過點擊屏幕獲取坐標數據,通過屏幕坐標與圖片坐標間的轉換關系計算出需要提取RGB點的坐標。通過Bitmap內置函數將RGB值提取出,顯示給用戶。圖像處理軟件最主要的功能就是處理圖像,該功能是系統的核心功能,包括了對圖像的調整、編輯,為圖像增加特效及其它相關處理。實現的處理的功能應該考慮手機的性能情況和手機用戶實際需求,不應該采用過于耗時的算法和用戶難以理解用途的功能,所以對算法的效率和功能的便捷性有要求,用戶通過這些功能能夠方便快速的對圖像進行編輯和處理。在實現這些功能時,應該考慮到手機用戶對應用軟件便捷性的要求,每個處理功能都不能有過于復雜的操作步驟。(4)計算油摻雜含量系統通過調用自定義算法,通過獲取到的RGB值計算出油摻雜含量。油摻雜含量的精準度由RGB值的準確性和算法的準確性決定。3.2.2非功能需求1.性能需求(1)本系統運行具有穩定性(2)本系統具有較高的兼容性,可以大多數安卓智能手機運行2.系統頁面需求界面設計美觀、簡單,方便用戶進行操作3.可靠性需求系統在運行期間需要保證數據的準確性,不會對用戶造成誤導。4系統分析與總體設計4.1總模塊劃分該系統作為一款手機圖像編輯處理軟件,要實現的功能較多,將系統功能模塊化能幫助我們將大的系統轉換為若干個小的功能模塊去分塊實現。根據需求的功能,該系統可以分為以下幾個模塊:圖像獲取、圖像編輯、圖像顯示、圖像分析、圖像保存。功能模塊劃分如圖4-1所示,接下來將說明各個模塊的功能設計。圖4-1系統總功能模塊圖4.2圖像獲取模塊圖像獲取模塊可以通過三種途徑獲取手機上的圖像。用戶可以點擊桌面上的圖標打開本軟件,在系統圖庫中選擇要處理的圖片,或者使用手機攝像頭,將拍照現得的圖像交由本軟件處理。也可以在系統的文件管理功能中,瀏覽圖片文件,長按住圖片文件的名字,在彈出框中選擇“打開方式”,此時出現可以選擇的程序的列表,在列表中選擇本軟件即可打開軟件處理此圖片。圖4-2展示了通過不同方式獲取圖片數據的傳遞及模塊間的跳轉。調用系統圖庫和手機攝像頭可以用Android中的Intent,中文意思是“意圖,意向”,它可以幫助應用程序的交互和溝通。我們可以通過Intent機制,通知Android系統打開系統圖庫或手機相機,并將用戶操作得到的結果圖像傳遞給本軟件。應用程序可以注冊系統的默認打開方式,例如音樂播放軟件會注冊MP3等格式的打開方式,圖書軟件會注冊txt、pdf等格式的打開方式。當有多個程序注冊了某一種格式文件的打開方式,用戶在長按住此種格式文件時,會彈出可選程序列表,用戶可選擇希望的程序打開。我們可以在AndroidManifest.xml中注冊打開方式,并且代碼中根據不同情況接受系統傳來的數據并做出相關處理。圖4-2系統操作流程圖4.3圖像顯示模塊圖像顯示模塊負責在從系統圖庫或相機中選擇完圖片后進行圖片的預展示功能,該模塊為用戶提供圖像的縮放與拖拽功能,用戶可以在縮放、拖拽后對圖片某部分進行截圖保存,該截圖為下一步提取某像素RGB值得預處理,縮小選擇范圍。程序的圖像窗口能同時檢測到縮放手勢與拖拽手勢并做出相應的處理。縮放手勢的特征為雙指按下,隨著手指移動兩指間的距離發生變化;拖動手勢的特征是一個手指按下,然后在屏幕上移動。程序中可以定義三個狀態:zoom、drag、none,分別表示縮放狀態、拖拽狀態及普通狀態。根據屏幕監測到的用戶手勢的變化,狀態也發生變化,如圖4-3所示。其中,狀態間切換的觸摸事件的含義如下:①ACTION_DOWN:單點觸摸動作。用戶手指第一次按下時觸發。②ACTION_UP:單點離開動作。用戶手指完全離開時觸發。③ACTION_POINTER_DOWN:多點觸控動作。屏幕上已經有觸點,又有一個手指按壓。④ACTION_POINTER_UP:多點觸摸離開動作。有手指離開,但屏幕上還有觸點。此外,還有一個重要的觸摸事件ACTION_MOVE,即觸摸位置發生變化的事件,它發生于觸摸的按下與松開之間。在拖拽狀態和移動狀態下系統都基于ACTION_MOVE事件對圖片的顯示進行處理。圖4-3手勢操作狀態圖drag狀態由none狀態下通過ACTION_DOWN事件跳轉進入,或者在zoom狀態下通過ACTION_POINTER_UP事件跳轉進入。用戶第一次按下,或屏幕上兩指按下時一個手指離開,此時獲取初始觸摸點的坐標。然后在ACTION_MOVE時記錄當前按壓位置的坐標,計算出圖像的在水平方向的位移與垂直方向的位移,此時將圖像位移后顯示。zoom狀態由drag狀態通過第二個手指按下的事件跳轉進入。ACTION_POINTER_DOWN事件發生時通過觸摸的兩點坐標獲得兩點間的距離Distance1,及兩點的中心坐標(x,y)。然后在ACTION_MOVE時記錄按壓的兩點的坐標,算出此時兩點間的距離Distance2,則圖像的縮放倍數為Distance2/Distance1,此時將圖片縮放后顯示。圖像對比功能要求能將處理的結果圖像與原圖進行對照比較,幫助用戶觀察比較來判斷對圖像的處理是否合適。處理方法比較簡單,當用戶按下對比顯示按鈕,即按鈕監聽到ACTION_DOWN事件,顯示的圖像切換到原圖。當用戶松開對比顯示按鈕,即按鈕監聽到ACTION_UP事件,顯示的圖像切換為處理后的圖像。4.4圖像保存模塊圖像的保存模塊包括了對圖像的臨時保存和永久保存。臨時保存數據是將圖像的數據放在內存中,它用來保存圖像的原始數據和當前處理操作下的圖像數據,利用臨時存儲還能便于圖像數據在不同模塊間的傳輸。各功能模塊由不同的Activity實現,處理好的圖像的數據要在不同的模塊間實現傳輸。通常,不同Activity間傳遞數據可以用intent.putExtras(Bundleextras)方法實現,但用來傳輸圖像數據可能會遇到問題。因為google規定了傳輸數據的大小限制,所以在傳遞數據量比較大的圖像文件時會發生OOM錯誤(內存溢出)。為了保證程序的穩定性和健壯性,本系統采用的方法是通過靜態鍵值對的形式把圖像保存到內存上,不同Activity間只傳遞鍵的數據而不傳遞值的數據。永久保存就是將圖像通過數據流保存到外部存儲上,系統支持將圖片轉化為PNG、WEBP或JPEG格式保存。當圖像保存到手機上時,手機相冊不能立即找到并顯示保存的圖像,還需要將文件插入到系統圖庫中并通知圖庫更新,這樣保存的圖片文件可以實時的顯示在系統的圖庫中。4.5圖像處理模塊4.5.1圖像處理算法通過RGB計算某像素點油摻雜含量時使用到的自定義算法如下:RGB中紅色分量與油摻雜含量之間的關系ffx代表指定顏色中紅色分量強度,RGB中藍色分量與油摻雜含量之間的關系ffx代表指定顏色中藍色分量強度,RGB中油摻雜含量與藍色分量、紅色分量比值之間的關系ffx代表r/b,xRGB中油摻雜含量與綠色分量、紅色分量比值之間的關系ffx代表r/g,x4.5.2圖像處理過程作為系統的核心模塊,該模塊負責對圖像顯示模塊預處理后的圖像進行再處理。通過點擊屏幕提取屏幕坐標,通過屏幕坐標與圖片坐標間的對應關系計算出圖片坐標,調用Bitmap中的方法獲取該像素點上的RGB值,通過自定義圖像處理算法獲取此RGB值計算出油摻雜含量,采用Toast消息提示框的方式顯示最終結果。
5系統的詳細設計與實現5.1系統文件的整體結構本系統基于Android平臺,采用AndroidStudio集成開發環境編程。系統的工程命名為prj_graduation,文件目錄的整體結構如圖5-1所示。圖5-1Manifests文件夾下的AndroidManifest.xml是項目中重要的配置文件,它配置了程序的許多全局變量。java:主要為源代碼和測試代碼res:主要為資源目錄,存儲所有的項目資源。res文件夾下以drawable開頭的幾個包下存放了程序所需要的圖片,layout包下存放了xml格式的頁面布局文件,系統中大部分界面上的內容都在這里實現,values包下存放了字符串、樣式等資源文件。5.2系統界面的實現Android實現系統界面主要有三種方式:通過xml文件配置生成頁面;直接在java代碼中繪制和控制頁面內容;通過繼承View類自定義頁面組件。這三種方法各有優劣,比如通過xml文件配置生成頁面實現簡單、代碼量較少,將負責邏輯控制的java代碼與界面的代碼相分離,程序結構更加合理,但功能上不夠靈活;在java代碼中實現界面程序代碼比XML文件實現繁瑣,但功能上比較靈活,可以將變化流程較復雜的界面組成部分交給java代碼實現;自定義頁面組件的方式需要繼承View類,重寫相關的方法,能夠按照需求實現對界面的靈活控制。本系統中大部分界面的由XML文件實現,配合java代碼對界面進行輔助實現。比如按鈕按下后顏色發生變化、某些頁面元素的隱藏和顯示、獲取圖片資源并按特定要求顯示,這些利用java代碼才能靈活的控制。系統中的縮放移動查看圖片、涂鴉和添加文字功能因為需要監聽用戶的觸屏操作并做出反饋,所以需要自定義頁面組件實現相關功能。例如點擊屏幕獲取某像素點RGB值的功能,在GetRgbActivity類中編寫內部類監聽ImageView的觸摸事件進行RGB值得獲取。5.3系統功能的實現5.3.1導航界面打開應用后,程序首先進入導航界面。界面效果如圖5-2所示。在這個界面下,提供兩個按鈕供用戶選擇圖像的獲取方式。實現此功能的類是MainActivity,它負責處理用戶關于讀取圖片方式的選取。MainActivity中為兩種選取方式對應按鈕添加setOnClickListener監聽,setOnClickListener參數采用匿名內部類方式傳入。事件觸發時調用不同的處理函數。由于如今手機相機成像功能越來越強,照片的分辨率及體積也越來越大,導致使用Intent傳遞圖片資源時會出現OOM(OutOfMemory)。解決方案采用將圖片緩存到本地的方式,使用全局變量的方式將圖片資源的全限定路徑傳入Intent給其他Activity。圖5-2系統導航界面5.3.2圖像預覽在通過用戶選擇的方式獲得到圖片資源后,程序會為用戶提供預覽界面,若用戶對圖像不滿意可及時返回進行重新獲取,點擊圖片后可以跳轉到圖片全屏展示,為選取像素點提供便利,如圖5-3所示。圖片預覽展示此頁面在系統中由ShowActivity完成相應功能,在頁面創建完成后首先要將圖片顯示到ImageView控件中,圖片的全限定路徑由MainActivity通過Intent傳遞字符串采用Map即key-value的方式傳輸到ShowActivity。在ShowActivity的onCreate方法中調用Intent的getExtra(key)方法得到圖片的全限定路徑,再通過BitmapFactory.decodeStream()方法將圖片資源以字節流的方式讀入到內存中并保存到位圖局部變量中,通過調用ImageView的setImageBitmap()方法將位圖顯示到頁面上。圖片點擊跳轉全屏點擊圖片實現跳轉Activity,使用了setOnClickListener()方法為圖片添加了點擊事件監聽,當事件發生時系統會新建一個Intent對象并將圖片資源的全限定路徑傳入給下一個Activity。此頁面還提供了一個保存照片按鈕,以方便用戶對圖片進行保存下次使用。保存功能采用對按鈕進行點擊事件監聽完成,當點擊按鈕時系統會發送一條掃描文件的廣播通知相冊掃描此目錄以便將圖片保存到媒體庫。此處使用方法sendBroadcast(mediaScanIntent)來實現功能。圖5-3預覽界面5.3.3獲取RGB值1.圖片的顯示圖片全屏,并且刪除時間及標題的實現requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);為了實現機型的自動適配,此Activity中對于不同分辨率手機的顯示做了自適應處理,效果如圖5-4所示。實現方式如下:調用getWindowManager().getDefaultDisplay().getMetrics(dm)方法,傳入一個DisplayMetrics對象,將屏幕分辨率等信息傳給DisplayMetrics,最終通過調用DisplayMetrics對象的widthPixels及heightPixels方法得到手機的實際長寬像素個數。將得到的手機像素個數賦給用來展示圖片的ImageView,以使ImageView可以全屏顯示。調用imageView的setLayoutParams()方法,將新建的LayoutParams(width,height)對象傳入,width,height即為要傳入的手機長寬像素個數。2.點擊屏幕提取坐標本系統在GetRgbActivity中通過對imageView添加觸摸事件監聽setOnTouchListener獲取屏幕坐標數據。事件發生時會調用內部類中的onTouch(Viewv,MotionEventevent)方法對事件進行處理,在onTouch()方法中調用event參數的getX()及getY()方法可以獲取到imageView被點擊到的位置的坐標。因為imageView的大小和bitmap的實際大小并不吻合,所以需要將imageView的坐標轉換到bitmap的坐標,才能找到bitmap上觸摸對應點的RGB值。此處采用比例法轉換,經實測精度可以達到使用要求。3.提取像素點的RGB得到bitmap上的坐標后,調用bitmap的getPixel(x,y)方法得到用來表示顏色的int型數據resu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通訊設備修理專業考核試卷
- 茶葉種植的技術推廣與培訓考核試卷
- 草原割草與草原生態保護資金管理考核試卷
- 計算機硬件行業供應鏈金融服務與風險管理考核試卷
- 了解嵌入式技術的標準化進程試題及答案
- 關鍵能力提升信息系統監理師試題及答案
- 信息系統監理師考試考法演變試題及答案
- 軟件測試的設計模式與實現思路試題及答案
- 國企車輛采購管理制度
- 華為公司激勵管理制度
- 2025年河北省中考乾坤押題卷物理試卷B及答案
- 成都設計咨詢集團有限公司2025年社會公開招聘(19人)筆試參考題庫附帶答案詳解
- 河北開放大學2025年《醫用基礎化學#》形考任務4答案
- 江蘇南京茉莉環境投資有限公司招聘筆試題庫2025
- 金屬非金屬地下礦山六大系統簡介
- 建筑施工重大危險源的辨識及控制措施
- 光伏組件項目合作計劃書(范文)
- 常用扣型總結
- 年產噸燃料乙醇工廠設計
- 產程觀察與分娩記錄
- 殯葬工作學習總結
評論
0/150
提交評論