




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上軟件架構(gòu)項(xiàng)目報告目錄1 項(xiàng)目概述2 需求分析2.1系統(tǒng)用例圖和流程圖使用基于場景的用例分析方法可知,在操作系統(tǒng)的場景中用戶可進(jìn)行的操作如下:(1)用戶加載目標(biāo)股票的TXT文件,將目標(biāo)股票的TXT文件生成股票走勢圖(2)將目標(biāo)走勢圖與其他走勢圖進(jìn)行比較,計(jì)算兩兩之間的相似度(3)選取與目標(biāo)走勢圖相似度最高的走勢圖(4)輸出結(jié)果并保存系統(tǒng)用例圖如下所示:相應(yīng)的流程圖如下:2.2功能需求通過上面對系統(tǒng)的分析可知,系統(tǒng)核心的功能主要有如下幾種:(1) 批量導(dǎo)入樣本文件;(2) 形成走勢圖,即股市中的K線圖;(3) 計(jì)算相似度,并選取相似度最大的走勢圖;因此可以將整個系統(tǒng)分為兩
2、大功能模塊,功能模塊圖如下所示:2.3非功能性需求2.3.1性能需求由于系統(tǒng)運(yùn)行需要導(dǎo)入大量的數(shù)據(jù),因此要求系統(tǒng)在算法實(shí)現(xiàn)上能保證盡可能的提供運(yùn)行效率,降低反應(yīng)時間。同時,本系統(tǒng)是對股市行情的研究比較,開發(fā)的系統(tǒng)要求結(jié)果準(zhǔn)確。2.3.2 質(zhì)量需求對于系統(tǒng)的相關(guān)質(zhì)量的屬性需求如下表:質(zhì)量屬性序列號 質(zhì)量屬性要求說明 1 有導(dǎo)入目標(biāo)股票的TXT文件方法2 有三種不同算法來計(jì)算相似度3界面簡潔大方,方便操作 2.3.3安全性需求1. 服務(wù)器應(yīng)該在合適溫度、適度的環(huán)境下工作,避免劇烈的震動;2. 各種電源線和數(shù)據(jù)線的鋪設(shè)要合理而安全,避免出現(xiàn)意外脫接現(xiàn)象的發(fā)生;3. 服務(wù)器所在地區(qū)應(yīng)保持電壓穩(wěn)定及電源
3、的持續(xù)供應(yīng),盡量避免高頻率的人為斷電現(xiàn)象(例如:錯拉電閘、保險絲熔斷等),以保持服務(wù)器中數(shù)據(jù)的一致性;4. 當(dāng)提前獲知斷電時間時,應(yīng)在網(wǎng)頁上及時發(fā)布相關(guān)信息(例如:服務(wù)器將于幾時幾分關(guān)閉),避免站點(diǎn)的突然關(guān)閉;5. 服務(wù)器管理員應(yīng)確保服務(wù)器密碼不泄漏;6. 服務(wù)器所在房間應(yīng)做好安全防盜工作,避免盜竊現(xiàn)象的發(fā)生。2.4可行性分析2.4.1技術(shù)可行性系統(tǒng)實(shí)現(xiàn)依靠相對比較熟悉的HTML、JavaScript、java語言,功能實(shí)現(xiàn)也相對簡單。因此完成此項(xiàng)目的風(fēng)險較小。2.4.2經(jīng)濟(jì)可行性本系統(tǒng)所用到的應(yīng)用軟件、硬件系統(tǒng)都易于獲得.因此,開發(fā)成本較低。而引進(jìn)使用本系統(tǒng)后,與傳統(tǒng)方式相比,具有高效率、低
4、成本、高質(zhì)量的特點(diǎn),可以節(jié)省不少人力、物力及財力。所以,從經(jīng)濟(jì)的角度來看,該系統(tǒng)可行。2.4.3操作可行性本系統(tǒng)是直接面對用戶的,而用戶往往對計(jì)算機(jī)并不是非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實(shí)現(xiàn)這一點(diǎn),就要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面,從而保證系統(tǒng)的易用性。界面簡潔友好,操作方便。3 總體設(shè)計(jì)4 詳細(xì)設(shè)計(jì)4.1感知哈希算法4.1.1算法概述感知哈希算法pHash(Perceptual Hash Algorithm), 意思是為圖片生成一個指紋(字符串格式), 兩張圖片的指紋越相似, 說明兩張圖片就越相似.。為降低均值對算法的影響程度,pHas
5、h算法使用離散余弦變換(DCT)來獲取圖片的低頻成分。而對于兩張圖片相似度的計(jì)算則是基于漢明距離的。離散余弦變換(DCT)是種圖像壓縮算法,它將圖像從像素域變換到頻率域。然后一般圖像都存在很多冗余和相關(guān)性的,所以轉(zhuǎn)換到頻率域之后,只有很少的一部分頻率分量的系數(shù)才不為0,大部分系數(shù)都為0(或者說接近于0)。漢明距離是以理查德·衛(wèi)斯里·漢明的名字命名的。在信息論中,漢明距離描述的是兩個n長碼字x=(x1x2xn),y=(y1y2yn)之間的距離,Dx,y=k=1nxkyk其中,表示模2加運(yùn)算,xk0,1,yk0,1.D(x,y)表示兩碼字在相同位置上不同碼符號的數(shù)目的總和,它能
6、夠反映兩碼字之間的差異,進(jìn)而提供碼字之間的相似程度的客觀依據(jù)。4.1.2 算法詳細(xì)步驟(1)縮小尺寸:pHash以小圖片開始,但圖片大于8*8,32*32是最好的。這樣做的目的是簡化了DCT的計(jì)算,而不是減小頻率。具體的代碼實(shí)現(xiàn)如下圖:(2)簡化色彩:將圖片轉(zhuǎn)化成灰度圖像,進(jìn)一步簡化計(jì)算量。下圖是轉(zhuǎn)化為灰度圖像的函數(shù)grayscale()的實(shí)現(xiàn);(3)計(jì)算DCT:計(jì)算圖片的DCT變換,得到32*32的DCT系數(shù)矩陣。下圖是進(jìn)行二維DCT變換的函數(shù)applyDCT()的實(shí)現(xiàn)。(4)縮小DCT:雖然DCT的結(jié)果是32*32大小的矩陣,但我們只要保留左上角的8*8的矩陣,這部分呈現(xiàn)了圖片中的最低頻率
7、。(5)計(jì)算平均值:如同均值哈希一樣,計(jì)算DCT的均值。(6)計(jì)算hash值:這是最主要的一步,根據(jù)8*8的DCT矩陣,設(shè)置0或1的64位的hash值,大于等于DCT均值的設(shè)為“1”,小于DCT均值的設(shè)為“0”。組合在一起,就構(gòu)成了一個64位的整數(shù),這就是這張圖片的指紋。(7)對比圖片指紋:得到圖片的指紋后, 就可以對比不同的圖片的指紋, 計(jì)算出64位中有多少位是不一樣的。一般情況下,如果不相同的數(shù)據(jù)位數(shù)不超過5, 就說明兩張圖片很相似, 如果大于10, 說明它們是兩張不同的圖片。這里是基于漢明距離來對相似度進(jìn)行計(jì)算,定義的相似度計(jì)算公式為:sim=1-漢明距離位數(shù)下面兩張圖片分別是對漢明距離
8、和相似度的實(shí)現(xiàn)函數(shù),具體如下:. 4.2 Levenshtein距離算法4.2.1算法概述我們這里所要研究的相似度算法是這樣進(jìn)行的,UML圖如上。4.2.2生成圖片的指紋在我們的程序中,生成圖片哈希值的方法是produceFingerPrint(),他返回的是一個String類型的字符串類型。這個方法里面主要涉及6個部分:(1)讀取圖片實(shí)現(xiàn)這個功能的方法是通過readImage(filename)方法來完成的,這個方法封裝在ImageRead類中,它通過獲取圖片的路徑名來得到該圖片。代碼如下:(2)將圖片縮小到固定尺寸因?yàn)槲覀兊玫降膱D片可能會大小不一致,多以我們需要將他們縮小成一致的格式,這里
9、我們將他們縮小成8*8的尺寸,總共64個像素,除去了圖片的細(xì)節(jié),只保留了結(jié)構(gòu)、明暗等基本信息,摒棄不同尺寸、比例帶來的圖片差異。實(shí)現(xiàn)方法是:thumb(BufferedImage source, int width,int height, boolean b),代碼如下:(3)簡化色彩將縮小后的圖片,轉(zhuǎn)為64級灰度。也就是說,所有像素點(diǎn)總共只有64種顏色。通過灰度值的計(jì)算來實(shí)現(xiàn)的,方法為rgbToGray()(4)計(jì)算平均值計(jì)算64個像素的灰度平均值,通過方法average()來實(shí)現(xiàn)。代碼如下:(5)比較像素灰度將每個像素的灰度,與平均值進(jìn)行比較。大于或等于平均值,記為1;小于平均值,記為0。
10、(6)計(jì)算哈希值將上一步的比較結(jié)果,組合在一起,就構(gòu)成了一個64位的整數(shù),這就是這張圖片的指紋。組合的次序并不重要,只要保證所有圖片都采用同樣次序就行了。代碼如下:4.2.3計(jì)算編輯距離,得出相似度計(jì)算圖片指紋的相似度。進(jìn)而算出圖片的相似度。(1)編輯距離概述Levenshtein 距離,又稱編輯距離,指的是兩個字符串之間,由一個轉(zhuǎn)換成另一個所需的最少編輯操作次數(shù)。許可的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。編輯距離的算法是首先由俄國科學(xué)家Levenshtein提出的,故又叫Levenshtein Distance。(2)舉例說明a.首先是有兩個字符串,這里寫一個
11、簡單的 abc和abeb.將字符串想象成下面的結(jié)構(gòu)。A處 是一個標(biāo)記,為了方便講解,不是這個表的內(nèi)容。 abcabcabe0123a1A處b2e3c.來計(jì)算A處 出得值它的值取決于:左邊的1、上邊的1、左上角的0.按照Levenshtein distance的意思:上面的值和左面的值都要求加1,這樣得到1+1=2。A處 由于是兩個a相同,左上角的值加0.這樣得到0+0=0。這是后有三個值,左邊的計(jì)算后為2,上邊的計(jì)算后為2,左上角的計(jì)算為0,所以A處 取他們里面最小的0.d.于是表成為下面的樣子abcabcabe0123a10b2B處e3在B處
12、 會同樣得到三個值,左邊計(jì)算后為3,上邊計(jì)算后為1,在B處 由于對應(yīng)的字符為a、b,不相等,所以左上角應(yīng)該在當(dāng)前值的基礎(chǔ)上加1,這樣得到1+1=2,在(3,1,2)中選出最小的為B處的值。e.于是表就更新了 abcabcabe0123a10b21e3C處C處 計(jì)算后:上面的值為2,左邊的值為4,左上角的:a和e不相同,所以加1,即2+1,左上角的為3。在(2,4,3)中取最小的為C處 的值。f.于是依次推得到abc0123a1A處 0D處 1G處 2b2B處 1E處 0H處 1e3C處
13、 2F處 1I處 1 I處: 表示abc 和abe 有1個需要編輯的操作。這個是需要計(jì)算出來的。同時,也獲得一些額外的信息。A處: 表示a 和a 需要有0個操作。字符串一樣B處: 表示ab 和a 需要有1個操作。C處: 表示abe 和a
14、0; 需要有2個操作。D處: 表示a 和ab 需要有1個操作。E處: 表示ab 和ab 需要有0個操作。字符串一樣F處: 表示abe 和ab 需要有1個操作。G處: 表示a 和abc 需要有2個操作。H處: 表示ab 和abc
15、60; 需要有1個操作。I處: 表示abe 和abc 需要有1個操作。g.計(jì)算相似度先取兩個字符串長度的最大值maxLen,用1-(需要操作數(shù)除maxLen),得到相似度。例如abc 和abe 一個操作,長度為3,所以相似度為1-1/3=0.666(3)具體實(shí)現(xiàn)具體實(shí)現(xiàn)代碼如下:4.3 歐式距離相似度算法4.3.1算法概述該算法的核心思想是計(jì)算兩條直線的歐氏距離。4.3.2算法步驟運(yùn)用道格拉斯-普克算法將折線簡化,提取出折線的特征點(diǎn)。步驟如下,(1)在曲線首尾兩點(diǎn)間虛連一條直線,求出其余各點(diǎn)到該直線的距離,如下圖(1)。(2)選其最
16、大者與閾值相比較,若大于閾值,則離該直線距離最大的點(diǎn)保留,否則將直線兩端點(diǎn)間各點(diǎn)全部舍去,如下圖(2),第4點(diǎn)保留。(3)依據(jù)所保留的點(diǎn),將已知曲線分成兩部分處理,重復(fù)第1、2步操作,迭代操作,即仍選距離最大者與閾值比較,依次取舍,直到無點(diǎn)可舍去,最后得到滿足給定精度限差的曲線點(diǎn)坐標(biāo),如下圖(3)、(4)依次保留第6點(diǎn)、第7點(diǎn),舍去其他點(diǎn),即完成線的化簡。具體的代碼實(shí)現(xiàn)如下:將兩條折線A,B垂直平移至X軸,如下圖二。將其中一條折線A縮放一定比例得到A;使得A上所有點(diǎn)的平均值與B相等,如下圖三。通過A上的點(diǎn)向B做垂線,求出垂距H,得出累計(jì)垂距Hs如下圖四。相似度用1/Hs表示,當(dāng)Hs=0時,取相
17、似度為1,算法實(shí)現(xiàn)為代碼二、代碼三。具體的代碼實(shí)現(xiàn)如下:4.4 加權(quán)最優(yōu)解4.4.1算法概述上面三種算法或多或少有相應(yīng)的側(cè)重,因此我們小組決定根據(jù)上面三種算法提供一個加權(quán)的最優(yōu)解。在獲得三種算法得出的相關(guān)的相似度值后,為每種算法賦予相關(guān)的加權(quán)值,通過加權(quán)運(yùn)算獲得最優(yōu)的結(jié)果。4.4.2算法步驟(1)獲得三面三種算法的結(jié)果;(2)進(jìn)行加權(quán)運(yùn)算。分別給算法A(感知哈希算法)、算法B(Levenshtein距離算法)和算法C(歐式距離相似度算法)權(quán)數(shù)為0.5、0.3、0.2。 具體代碼實(shí)現(xiàn)如下:5 系統(tǒng)實(shí)現(xiàn)整個系統(tǒng)架構(gòu)思想是基于構(gòu)件的軟件開發(fā)思想,通過運(yùn)用structs框架,將前端界面設(shè)計(jì)和后臺功能實(shí)現(xiàn)相結(jié)合。具體的界面設(shè)計(jì)和系統(tǒng)集成如下介紹。5.1界面設(shè)計(jì)界面設(shè)計(jì)秉承簡單實(shí)用的設(shè)計(jì)思想,將整個系統(tǒng)需求的具體功能在首界面就全部展現(xiàn)出來了。同時,為增加用戶的體驗(yàn)好感度,運(yùn)用了相關(guān)的JavaScript技術(shù)實(shí)現(xiàn)。具體的界面效果如下圖:5.2系統(tǒng)集成5.2.1系統(tǒng)目錄結(jié)構(gòu)整個項(xiàng)目既有前臺界面編寫,又有后臺算法實(shí)現(xiàn),由于不同的模塊代碼編寫的人員不同,最終需要進(jìn)行代碼的集成整合。通過對代碼的集成最后形成的代碼系統(tǒng)目錄如下圖所示:5.2.2 structs具體實(shí)現(xiàn)Structs部分的實(shí)現(xiàn)包括相關(guān)的VO層、action、service以及structs配置文件實(shí)現(xiàn)。在這里就
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買抹賬房合同范例
- 儲物柜協(xié)議合同范例
- 人員施工安全合同范例
- 住房裝潢合同范例
- 主要合同與補(bǔ)充合同范例
- 企業(yè)外包招聘合同范例
- 個人加盟協(xié)議合同范例
- 出讓生鮮小店合同范例
- 農(nóng)資化肥進(jìn)貨合同范本
- 關(guān)于門頭使用合同范例
- 曲靖市出租汽車從業(yè)資格證區(qū)域科目考試題(附答案)
- 2025年安徽城市管理職業(yè)學(xué)院單招職業(yè)技能考試題庫匯編
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年河南建筑職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年湖南食品藥品職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2025年家政服務(wù)策劃免責(zé)聲明協(xié)議
- 2025新人教版語文七年級下冊《第四單元》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 2024人工智能大模型技術(shù)財務(wù)應(yīng)用藍(lán)皮書
- DB51T 2572-2019 干旱河谷造林技術(shù)規(guī)程
評論
0/150
提交評論