【正文】
圖形用戶界面(Graphical User Interfaces,GUI)則是由窗口、光標、按鍵、菜單、文字說明等對象(Objects)構(gòu)成的一個用戶界面。GUI 是 Graphical User Interface 的簡稱,即圖形用戶接口,通常人機交互圖形化用戶界面設(shè)計經(jīng)常讀做“gooee”,準確來說 GUI 就是屏幕產(chǎn)品的視覺體驗和互動操作部分。 GUI 是一種結(jié)合計算機科學、美學、心理學、行為學,及各商業(yè)領(lǐng)域需求分析的人機系統(tǒng)工程,強調(diào)人—機—環(huán)境三者作為一個系統(tǒng)進行總體設(shè)計。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,比如實現(xiàn)計算、繪圖等。這種設(shè)計目的是優(yōu)化產(chǎn)品的性能,使操作更人性化,減輕使用者的認知負擔,使其更適合用戶的操作需求,直接提升產(chǎn)品的市場競爭力。 縱觀國際相關(guān)產(chǎn)業(yè)在圖形化用戶界面設(shè)計方面的發(fā)展現(xiàn)狀,許多國際知名公司早已意識到 GUI 在產(chǎn)品方面產(chǎn)生的強大增值功能,以及帶動的巨大市場價值,因此在公司內(nèi)部設(shè)立了相關(guān)部門專門從事 GUI 的研究與設(shè)計,同業(yè)間也成立了若干機構(gòu),以互相交流 GUI 設(shè)計理論與經(jīng)驗為目的。隨著中國 IT 產(chǎn)業(yè),移動通訊產(chǎn)業(yè),家電產(chǎn)業(yè)的迅猛發(fā)展,在產(chǎn)品的人機交互界面設(shè)計水平發(fā)展上日顯滯后,這對于提高產(chǎn)業(yè)綜合素質(zhì),提升與國際同等業(yè)者的競爭能力等等方面無疑起了制約的作用。編輯GUI中經(jīng)常使用到的幾個函數(shù),在初次接觸GUI時,若能了解這些函數(shù)是如何運作與使用的,將會使GUI在設(shè)計上更加具有彈性,由于GUI大多是由屬性來控制對象的外觀、功能與特征,因此要完成一個GUI一般需要使用到get、set、fidobj、uicontrol、uimenu與uicontextmenu等函數(shù)[5]。 在GUI中若能夠善用gcf、gca、gco、gcbf、gcbo、findobj等函數(shù)來查詢對象的句柄值,在對象屬性設(shè)置上更能方便與快速地實現(xiàn)GUI對象的目的。以下依序介紹這些函數(shù)帶給我們的優(yōu)點。所謂的當前對象有以下兩個定義:最后建立的對象與最后選取的對象。gcf:對當前的figure對象回報其句柄值,即當前所畫的繪圖窗口句柄值。gca:對當前的axes對象回報其句柄值,即當前所畫的圖形坐標軸句柄值。gco:對當前的對象回報其句柄值,回報其句柄值前先檢查改圖形是否存在,即返回鼠標剛剛單擊過的對象句柄值。gcbf:獲得當前正在執(zhí)行Callback程序的圖形對象的父(figure)對象句柄值。gcbo:獲得當前正在執(zhí)行Callback程序的圖形對象的句柄值。以下給出一段導入avi視頻的代碼實現(xiàn):[filename pathname]=... uigetfile({39。*.avi39。},39。導入視頻39。)。 %讀取avi格式的視頻str=[pathname filename] %將名稱和格式合并,附值給stravi=aviread(str)。 %讀取導入的avi,附值給avi=avi。 %guidata(hObject, handles)。 %存儲數(shù)據(jù)5.系統(tǒng)測試5.1系統(tǒng)測試系統(tǒng)測試是將已經(jīng)確認的軟件、計算機硬件、外沒、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進行信息系統(tǒng)的各種組裝測試和確認測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方。系統(tǒng)測試是盡可能徹底的檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)的完成情況。這階段又可分為三個步驟:模塊測試,測試每個模塊的程序是否有錯誤;組裝測試,測試模塊之間的接口是否正確;確認測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。該階段結(jié)束應(yīng)交付測試報告,說明測試數(shù)據(jù)的選擇,測試用例以及測試結(jié)果是否符合預(yù)期結(jié)果。測試發(fā)現(xiàn)問題之后要經(jīng)過調(diào)試找出錯誤原因和位置,然后進行改正。5.2設(shè)計中遇到的問題及解決辦法(1)為什么在提取水印后得到的嵌入水印后的圖像顯示為一副白屏?解決辦法:在matlab里面,顯示圖像可以用imshow函數(shù)。它是通過將灰度值標度為灰度級調(diào)色板的索引來顯示圖像的。如果I_w是uint8數(shù)組的話,直接顯示是沒問題的。但是對于double數(shù)組,像素值是在[,]范圍內(nèi)的。在顯示的時候必須保證double的值在[,]才能正確顯示。所以我們必須用imshow(I_w,[,])來顯示它,當然也可以用空矩陣[]來指定數(shù)據(jù)范圍,imshow會自動將數(shù)據(jù)進行標記。也就是imshow(I_w,[])或者我們可以強制把double數(shù)組轉(zhuǎn)換成uint8數(shù)組來顯示也可以imshow(uint8(I_w))。(2)在Matlab運行過程中,出現(xiàn)錯誤的時候,程序會不斷的出現(xiàn)許多的錯誤信息,如何中斷當前運算?解決辦法:Matlab中使用: Ctrl+C(3)如何實現(xiàn)矩陣的轉(zhuǎn)換? 例如:把一個3*3的矩陣轉(zhuǎn)成一個1*9的向量,按先行后列的順序。解決辦法:將a轉(zhuǎn)置一下就可以了: b=reshape(a39。,1,9)得出b=[1 2 3 4 5 6 7 8 9](4)在GUI設(shè)計中如何實現(xiàn)變量的傳遞?解決辦法:宣告為全域變量,見欲傳遞的變量在傳遞雙方的Callback位置中都設(shè)置為全域變量,就可以直接在任一方的確Callback中調(diào)用。此種方式是最簡單的操作方式,但是GUI內(nèi)的全域變量太多時,在執(zhí)行上可能會造成混亂。假設(shè)一組運算數(shù)據(jù)A必須在Tag名稱為pushbutton1 與pushbutton2所對應(yīng)的對象Callback中使用,在雙方的Callback中都設(shè)置如下:function pushbutton1_Callback(hObject, eventdata, handles)global A %宣告為全域變量function pushbutton2_Callback(hObject, eventdata, handles)global A %宣告為全域變量6.總結(jié)6.1系統(tǒng)運行環(huán)境(1)系統(tǒng)運行基本配置:硬件要求:Intel Celeron 3 或者Pentium 3以上,256M RAM軟件需求:MATLAB7操作系統(tǒng):Microsoft Windows 2000或 Microsoft Windows XP(2)系統(tǒng)運行推薦配置:硬件要求:Intel Celeron 4 或者Pentium 4以上,512M RAM軟件需求:MATLAB7使用平臺推薦: Microsoft WINDOWS 2000/XP6.2系統(tǒng)運行結(jié)果(1)系統(tǒng)運行之后如圖15所示:圖15系統(tǒng)運行界面 Operating system interface(2)系統(tǒng)進行加解密,攻擊,測試比較等的操作后如圖16所示:圖16系統(tǒng)操作后的界面 Once the system interface6.3系統(tǒng)改進雖然系統(tǒng)的基本功能得到了實現(xiàn),但是還存在一些問題。例如:在avi視頻文件播放的時候,MATLAB函數(shù)會首先會快速播放一次,再按照本系統(tǒng)設(shè)計的播放速度播放。由于時間倉促和設(shè)計經(jīng)驗不豐富,所以程序算法運行的速度比較慢,希望以后可以優(yōu)化算法,使程序運行的速度更快。本系統(tǒng)可以擴展,面向更多格式的視頻,使系統(tǒng)的功能更強大,適用于更多的用戶,保護更多產(chǎn)品的知識產(chǎn)權(quán)和提高產(chǎn)品在傳輸過程安全性。6.4個人總結(jié)在本系統(tǒng)開發(fā)過程中,本人負責測試比較模塊、圖形比較和界面設(shè)計三部分。經(jīng)過了三個月的努力和奮斗,基本上完成了自己負責的任務(wù)。在系統(tǒng)開發(fā)的初期,MATLAB對我來說是新的知識。對我來說更是一個新的挑戰(zhàn)和鍛煉的好機會,自選題以后,我就不斷閱讀關(guān)于MATLAB方面的資料,除了大量閱讀書籍之外,我還到相關(guān)的論壇和其他的人交流MATLAB,學習他們的知識和吸收他們的經(jīng)驗。很快我就對MATLAB有了初步的了解,之后就不斷嘗試使用MATLAB編程,當然在其中遇到很多的問題。接觸多了就懂得一些解決問題的方法,例如對函數(shù)的使用,多看看HELP文件,里面都有對每個函數(shù)的詳細說明和用法,有些還具有代表性的例子,那都是學習的好素材。我除了看HELP文件外,和李老師或者其他組員一起討論問題,上相關(guān)論壇和其他的人交流MATLAB方面的知識都是提高自己能力的好辦法。在選擇界面設(shè)計的軟件的,剛開始我們是選用VC來做界面連接的,但當界面都設(shè)計好了后,對數(shù)據(jù)進行連接的時候。總連接得不那么好,后來經(jīng)過老師和同組人員的討論后,嘗試用MATLAB自帶的GUIDE來做界面設(shè)計,對于數(shù)據(jù)連接方面連接得很好,所以后來選用了GUIDE來做軟件的界面設(shè)計。有時候?qū)δ承﹩栴},走了很多彎路都找不到答案,但在老師的指導下很快就意識到問題的所在。老師時時關(guān)心我們,詢問我們的近況和幫助我們解決了很多的難題,給我們正確的思路。深切地感受到老師的責任感,深深地感謝李環(huán)老師。由于時間倉促以及缺乏實踐經(jīng)驗等原因,這次畢業(yè)設(shè)計所完成的系統(tǒng)存在許多尚待改進之處??偟膩碚f,在這畢業(yè)設(shè)計的過程中,我學習了很多新的知識,并對我大學期間所掌握的知識的綜合運用。吸收了很多寶貴的經(jīng)驗,大大加強了對于實際問題的解決能力和知識的實際運用能力。 參考文獻:[1] 王麗娜 郭遲 李鵬 編著,信息隱藏技術(shù)實驗教程,武漢大學出版社,200410[2] 施建平,圖像數(shù)字水印算法的研究,西北工業(yè)大學學報,200603[3] [美] Duane Hanselman, Bruce Littlefield著,精通Matlab7,清華大學出版社,20065[4] 陳莉娜,數(shù)字水印算法研究,電子科技大學碩士學位論文,20053[5] 李顯宏 編著,電子工業(yè)出版社,200612[6] 張冠南 編著,數(shù)字水印技術(shù),通信學報,200512[7] 王世香 編著,精通MATLAB接口與編程,電子工業(yè)出版社,20071[8] [美] Rafael C. Gonzalez, Richard E. Woods, Stenven L. Eddins 編著,Digital Image Processing Using MATLAB, 電子工業(yè)出版社,20045[9] [加] Joyce Van de Vegte 著,F(xiàn)undamentals of Digital Signal Processing,電子工業(yè)出版,20031[10] [美]John ,Kurtis ,Numerical Methods Using Matlab ,Fourth Edition,電子工業(yè)出版社,20057[11] Barnett watermarking:applications,techniques and challenges[J].Electronics amp。 Communication Engineering Journal,199911[12] Tirkel Ramkin GElectronic watermark[A].Proceeding of DICTA[C].1993致 謝在論文的完稿之際,我深切地感受到論文里面不僅僅包含著我個人的勞動和付出,還凝結(jié)了我身邊許多人的關(guān)心和支持。在此,我要深深地感謝我的導師——李環(huán)老師。在我的畢業(yè)設(shè)計過程中,李環(huán)老師時時關(guān)心我們,當我們遇到難題的時候,及時指導我們,給我們寶貴的建議和正確的思路,加快我們設(shè)計的步伐。從我的畢業(yè)設(shè)計到論文的編寫,李環(huán)老師都給我們悉心的指導,她淵博的知識,工作的細心負責,待人的親切,都給了我深刻的印象。她對一絲不茍的工作態(tài)度、教學的熱誠和治學精神更是我今后人生道路學習的榜樣。同時,還要感謝給予我?guī)椭耐瑢W們,有你們的提示和鼓勵,我才能順利完成本次畢業(yè)設(shè)計。