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