




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、病毒圖象識別實驗報告一·實驗內(nèi)容;2二·實驗目的;4三·實驗要求;4四·算法分析;6五·源程序及注釋;8六·流程圖;14七·結果分析;15八·改進建議;18九·主要問題;19十·實驗分工。19病毒圖象識別實驗報告王丹陽小組一·實驗內(nèi)容; 病理學實驗室的技術人員需要分析幻燈片的數(shù)字圖象?;脽羝嫌性S多要分析的目標,由鼠標單擊確定一個目標。目標邊界的周長是一個有用的測量參數(shù)。 編程任務:確定選中目標的周長。 數(shù)字化的幻燈片是一個矩形網(wǎng)格,里面有點“.”,表示空的地方,有大寫字母“X”,表示
2、目標的一部分。 方格中的一個X是指一個完整的網(wǎng)格方形區(qū)域,包括其邊界和目標本身。網(wǎng)格中心的X與其邊界上8個方向的X都是相鄰的。任何兩個相鄰的X,其網(wǎng)格方形區(qū)域在邊界或拐角處是重疊的,所以它們的網(wǎng)格方形區(qū)域是相鄰的。 一個目標是由一系列相鄰X的網(wǎng)格方形區(qū)域連接起來構成。在網(wǎng)格1中,一個目標填充了全部網(wǎng)絡,在網(wǎng)格2中有兩個目標,其中一個目標只占左下角的一個網(wǎng)格方形區(qū)域,其余的X屬于另一個目標。 技術人員總能單擊一個X,以選中包含該X的目標,記錄單擊時的坐標。行列號是從左上角開始,從1開始編號的。網(wǎng)格1中,技術人員可單擊行2和列2選擇目標;在網(wǎng)格2中,單擊行2和列3就可以選中較大的目標,單擊行4列3
3、就不能選中任何目標。 一個有用的參數(shù)是目標的周長,假定每個X的每條邊上有一個方形的單元。在網(wǎng)格1中目標的周長是8,網(wǎng)格2中,較大目標的周長是18。 目標不會包含任何完全封閉的孔,所以下圖中最左邊的網(wǎng)格不會出現(xiàn),應該是右邊的網(wǎng)格樣式。二·實驗目的;(1)掌握c語言的基本編程技能,模塊化編程思想,并初步學會在實際背景下靈活運用。(2)設計程序算出任意給定的病毒圖像的周長。 (3)在實踐中檢驗c語言水平。三·實驗要求; 輸入有多組網(wǎng)格,對每個網(wǎng)格,第一行是網(wǎng)格的行列數(shù),鼠標單擊的行列號,其整數(shù)范圍都是120。 接下來就是由字符“.”和“X”構成的圖形。 當一行有四個零時,標志輸入
4、結束。 一行中的4個數(shù)字之間各有一個空格,網(wǎng)格數(shù)據(jù)的行之間沒有空行。輸入:6 4 2 3.XXX.XXX.XXX.X.X.X.7 7 2 6XXXXXXXXX.XXX.X.XX.X.X.X.XX.XXXXXXXX7 7 4 4XXXXXXXXX.XXX.X.XX.X.X.X.XX.XXXXXXXX0 0 0 0輸出:對每個網(wǎng)格輸出一行,是選中目標的周長。例如:18488四·算法分析;根據(jù)所給條件,很顯然要用二維數(shù)組儲存該病毒。 在存儲時可用一個變量key來標記該位置有沒有病毒,為接下來的遍歷提供判斷條件。在儲存函數(shù)中,只需用一個二重循環(huán),不斷從屏幕上獲取字符,并按次序存到數(shù)組相應位置
5、,并修改該位置的key值,即可解決存儲問題。但是在實踐中應注意回車符號對輸入的干擾,對回車符號應不儲存。解決存儲問題后,接下來就要解決遍歷問題??上人愠鏊胁《驹氐目傊荛L數(shù),之后按照一定的規(guī)則逐個遍歷,并判斷該病毒元素周圍有沒有其他病毒元素,并實現(xiàn)相關對總周長自減的操作。最終可實現(xiàn)總周長的計算。以上程序完成后,接下來要完成的問題就是病毒的識別,及尋找該病毒的所有病毒元素。本程序運用傳函數(shù)解決病毒的識別問題。該函數(shù)可簡單描述為:首先從鼠標選定的位置開始,把他的病毒元素識別值該外一個與其他識別值不同的值,之后判斷其上下左右及斜對角八個方位是否有病毒元素,若有病毒元素,就要相應修改其病毒元素識別值
6、(key)。按如此規(guī)則傳下去,直到該病毒的所有病毒元素都被標記。所有病毒元素都被標記后,便完成了病毒的識別。接下來的問題就是遍歷。本程序用一個二重循環(huán)來按順序不重復的遍歷所有病毒元素。在遍歷到某一位置時,首先運用病毒元素標記值判斷該位置是否屬于該病毒,若屬于,在判斷其上下左右是否有該病毒的其他病毒元素,并實現(xiàn)周長總數(shù)的自減操作。最后返回該周長值,讓主函數(shù)按規(guī)則輸出。在完成上述工作后,接著對用戶交互界面進行優(yōu)化,接下來就是在主函數(shù)設置大循環(huán),來實現(xiàn)多個測試例的同時測試。之后該程序就完成了 。五·源程序及注釋;/* 病理圖像識別 */*作者:王丹陽 */#include "st
7、dio.h"#include "conio.h"typedef struct /病理微元存儲結構體 int key;/病理微元狀態(tài)存儲變量 ACM;int a;/病理圖的長int b;/病理圖的寬int h;/鼠標單機的橫坐標值int n;/鼠標單擊的縱坐標值 main() /主函數(shù) ACM acm1010; int i,k=0;int sum10; /結果臨時存儲數(shù)組 void cunchu(ACM acm1010); int bianli(ACM acm1010); /函數(shù)聲明 void chuan(ACM acm1010,int x,int y); for(
8、i=0;i<10;i+)sumi=-1; /給臨時結果賦初值 printf("ttt歡迎使用病理圖像識別系統(tǒng)n*"); /主函數(shù)大循環(huán),可實現(xiàn)多個病理圖像的識別 for(k=0;k<10;k+) printf("請輸入網(wǎng)格的行列數(shù),鼠標單擊的行列號。n");/提示用戶輸入數(shù)據(jù) scanf("%d%d%d%d",&b,&a,&h,&n); if(a=0&&b=0&&h=0&&n=0) break; printf("請輸入該病理圖像n&q
9、uot;); cunchu(acm); sumk=bianli(acm); k=0; do printf("第 %d 個病理圖像的邊界周長為 %d 。n",k+1,sumk); /循環(huán)輸出結果 k+; while(sumk!=-1); return 0; void cunchu(ACM acm1010) /存儲函數(shù) int i=0; char num; int j; for(j=0;j<b;j+) for(i=0;i<a;i+) acmij.key=0; /給病理圖像存儲微元賦初值 num=getchar(); num=getchar(); for(j=0;j&
10、lt;b;j+) for(i=0;i<a;i+) if(num='x') acmij.key=1 ; /用狀態(tài)標記數(shù)標記該病理圖像 if(num!='x'&&num!='.') if(i>1)i-; else i=a-1; j-; num=getchar(); int bianli(ACM acm1010)/遍歷函數(shù) int i,j,m=0; int sum; void chuan(ACM acm1010,int x,int y);/函數(shù)聲明 chuan(acm,h-1,n-1); /調(diào)用狀態(tài)參數(shù)傳遞函數(shù) for(j=
11、0;j<b;j+) for(i=0;i<a;i+)if(acmij.key=2) m+; sum=4*m; /給臨時結果變量賦初值 for(j=0;j<b;j+) for(i=0;i<a;i+) if(acmij.key=2) if(i<(a-1)&&acmi+1j.key=2) /遍歷該病理圖像,并實現(xiàn)相關操作 sum-; if(i>0&&acmi-1j.key=2) sum-; if(j<(b-1)&&acmij+1.key=2) sum-; if(j>0&&acmij-1.ke
12、y=2) sum-; return sum; /返回臨時結果void chuan(ACM acm1010,int x,int y)/傳函數(shù) if(acmxy.key=1) acmxy.key=2; /賦傳遞初值 if(acmx+1y.key=1)chuan(acm,x+1,y); if(acmx-1y.key=1)chuan(acm,x-1,y); if(acmxy+1.key=1)chuan(acm,x,y+1); if(acmxy-1.key=1)chuan(acm,x,y-1); /實現(xiàn)狀態(tài)參數(shù)的遞歸傳遞 if(acmx+1y+1.key=1)chuan(acm,x+1,y+1); if
13、(acmx-1y+1.key=1)chuan(acm,x-1,y+1); if(acmx-1y-1.key=1)chuan(acm,x-1,y-1); if(acmx+1y-1.key=1)chuan(acm,x+1,y-1); 開始輸入長寬及鼠標單擊位置調(diào)用存儲函數(shù),把給定的病毒圖像存儲到二維數(shù)組調(diào)用遍歷函數(shù),遍歷該二維數(shù)組,并算出病毒總周長調(diào)用“傳”函數(shù),識別鼠標單擊的病毒區(qū)域判斷循環(huán)是否結束結束六·流程圖;七·結果分析;經(jīng)過一定數(shù)量的數(shù)據(jù)檢驗,該程序能夠檢測到病毒的外形,并按照給定格式輸出該病毒的周長。測試截圖 1測試截圖 2測試截圖 3測試截圖 4測試截圖 5測試截圖 6測試截圖 7測試截圖 8八·改進建議;1、 可引入文件,簡化數(shù)據(jù)的輸入,長久的保存結果,簡化程序的調(diào)試。2、 可改進遍歷算法,簡化遍歷算法的時間復雜度,但這樣會額外增加空間開銷。3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CEMIA 014-2018光纖預制棒用四氯化硅充裝規(guī)范
- T/CECS 10344-2023綠色裝配式邊坡防護面層
- T/CECS 10311-2023自動測斜管
- T/CBMCA 032-2022負離子表面涂覆材料應用技術規(guī)程
- T/CBMCA 025-2022凈化海砂
- T/CARSA 1.5-2022基于低空無人機的高分衛(wèi)星遙感產(chǎn)品真實性檢驗第5部分:組網(wǎng)觀測
- golang基礎面試題及答案
- 洪山美術面試題及答案
- 管理技巧面試題及答案
- 哈市中考試題及答案
- 委托裝訂合同協(xié)議
- 無氟防水劑研發(fā)及在紡織品中的實際應用研究
- 水泥長期購銷合同范本
- 2025-2030年中國制罐行業(yè)現(xiàn)狀調(diào)研分析及發(fā)展趨勢預測報告
- 體檢醫(yī)學知識科普
- 2025年臨床帶教老師心得感想(7篇)
- 新北師版一年級數(shù)學下冊教案教學設計全冊
- 2025年數(shù)字化轉(zhuǎn)型基本普及智能化升級戰(zhàn)略突破-十五五智能制造推進的戰(zhàn)略思考報告-中國工程院(周濟)
- 測繪服務投標方案(技術標)
- 2025-2030全球細胞能量代謝分析儀行業(yè)調(diào)研及趨勢分析報告
- 酒店消防知識培訓課件
評論
0/150
提交評論