




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、病毒图象识别实验报告一·实验内容;2二·实验目的;4三·实验要求;4四·算法分析;6五·源程序及注释;8六·流程图;14七·结果分析;15八·改进建议;18九·主要问题;19十·实验分工。19病毒图象识别实验报告王丹阳小组一·实验内容; 病理学实验室的技术人员需要分析幻灯片的数字图象。幻灯片上有许多要分析的目标,由鼠标单击确定一个目标。目标边界的周长是一个有用的测量参数。 编程任务:确定选中目标的周长。 数字化的幻灯片是一个矩形网格,里面有点“.”,表示空的地方,有大写字母“X”,表示
2、目标的一部分。 方格中的一个X是指一个完整的网格方形区域,包括其边界和目标本身。网格中心的X与其边界上8个方向的X都是相邻的。任何两个相邻的X,其网格方形区域在边界或拐角处是重叠的,所以它们的网格方形区域是相邻的。 一个目标是由一系列相邻X的网格方形区域连接起来构成。在网格1中,一个目标填充了全部网络,在网格2中有两个目标,其中一个目标只占左下角的一个网格方形区域,其余的X属于另一个目标。 技术人员总能单击一个X,以选中包含该X的目标,记录单击时的坐标。行列号是从左上角开始,从1开始编号的。网格1中,技术人员可单击行2和列2选择目标;在网格2中,单击行2和列3就可以选中较大的目标,单击行4列3
3、就不能选中任何目标。 一个有用的参数是目标的周长,假定每个X的每条边上有一个方形的单元。在网格1中目标的周长是8,网格2中,较大目标的周长是18。 目标不会包含任何完全封闭的孔,所以下图中最左边的网格不会出现,应该是右边的网格样式。二·实验目的;(1)掌握c语言的基本编程技能,模块化编程思想,并初步学会在实际背景下灵活运用。(2)设计程序算出任意给定的病毒图像的周长。 (3)在实践中检验c语言水平。三·实验要求; 输入有多组网格,对每个网格,第一行是网格的行列数,鼠标单击的行列号,其整数范围都是120。 接下来就是由字符“.”和“X”构成的图形。 当一行有四个零时,标志输入
4、结束。 一行中的4个数字之间各有一个空格,网格数据的行之间没有空行。输入: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输出:对每个网格输出一行,是选中目标的周长。例如:18488四·算法分析;根据所给条件,很显然要用二维数组储存该病毒。 在存储时可用一个变量key来标记该位置有没有病毒,为接下来的遍历提供判断条件。在储存函数中,只需用一个二重循环,不断从屏幕上获取字符,并按次序存到数组相应位置
5、,并修改该位置的key值,即可解决存储问题。但是在实践中应注意回车符号对输入的干扰,对回车符号应不储存。解决存储问题后,接下来就要解决遍历问题。可先算出所有病毒元素的总周长数,之后按照一定的规则逐个遍历,并判断该病毒元素周围有没有其他病毒元素,并实现相关对总周长自减的操作。最终可实现总周长的计算。以上程序完成后,接下来要完成的问题就是病毒的识别,及寻找该病毒的所有病毒元素。本程序运用传函数解决病毒的识别问题。该函数可简单描述为:首先从鼠标选定的位置开始,把他的病毒元素识别值该外一个与其他识别值不同的值,之后判断其上下左右及斜对角八个方位是否有病毒元素,若有病毒元素,就要相应修改其病毒元素识别值
6、(key)。按如此规则传下去,直到该病毒的所有病毒元素都被标记。所有病毒元素都被标记后,便完成了病毒的识别。接下来的问题就是遍历。本程序用一个二重循环来按顺序不重复的遍历所有病毒元素。在遍历到某一位置时,首先运用病毒元素标记值判断该位置是否属于该病毒,若属于,在判断其上下左右是否有该病毒的其他病毒元素,并实现周长总数的自减操作。最后返回该周长值,让主函数按规则输出。在完成上述工作后,接着对用户交互界面进行优化,接下来就是在主函数设置大循环,来实现多个测试例的同时测试。之后该程序就完成了 。五·源程序及注释;/* 病理图像识别 */*作者:王丹阳 */#include "st
7、dio.h"#include "conio.h"typedef struct /病理微元存储结构体 int key;/病理微元状态存储变量 ACM;int a;/病理图的长int b;/病理图的宽int h;/鼠标单机的横坐标值int n;/鼠标单击的纵坐标值 main() /主函数 ACM acm1010; int i,k=0;int sum10; /结果临时存储数组 void cunchu(ACM acm1010); int bianli(ACM acm1010); /函数声明 void chuan(ACM acm1010,int x,int y); for(
8、i=0;i<10;i+)sumi=-1; /给临时结果赋初值 printf("ttt欢迎使用病理图像识别系统n*"); /主函数大循环,可实现多个病理图像的识别 for(k=0;k<10;k+) printf("请输入网格的行列数,鼠标单击的行列号。n");/提示用户输入数据 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); /循环输出结果 k+; while(sumk!=-1); return 0; void cunchu(ACM acm1010) /存储函数 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 ; /用状态标记数标记该病理图像 if(num!='x'&&num!='.') if(i>1)i-; else i=a-1; j-; num=getchar(); int bianli(ACM acm1010)/遍历函数 int i,j,m=0; int sum; void chuan(ACM acm1010,int x,int y);/函数声明 chuan(acm,h-1,n-1); /调用状态参数传递函数 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) /遍历该病理图像,并实现相关操作 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)/传函数 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); /实现状态参数的递归传递 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); 开始输入长宽及鼠标单击位置调用存储函数,把给定的病毒图像存储到二维数组调用遍历函数,遍历该二维数组,并算出病毒总周长调用“传”函数,识别鼠标单击的病毒区域判断循环是否结束结束六·流程图;七·结果分析;经过一定数量的数据检验,该程序能够检测到病毒的外形,并按照给定格式输出该病毒的周长。测试截图 1测试截图 2测试截图 3测试截图 4测试截图 5测试截图 6测试截图 7测试截图 8八·改进建议;1、 可引入文件,简化数据的输入,长久的保存结果,简化程序的调试。2、 可改进遍历算法,简化遍历算法的时间复杂度,但这样会额外增加空间开销。3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市2024-2025学年七年级上学期语文期中测试试卷
- 电路基础知识大专培训广州课件
- 高速换电站基础知识培训
- 打工人的30个DeepSeek提示词
- 高血压糖尿病课件
- 高血压原理课件
- python大学考试大题及答案
- 电缆焊接入门知识培训课件
- 山东省聊城市莘县2022-2023学年九年级上学期期中化学试题(含答案)
- 电磁铁磁力课件
- 污水处理站运行记录台账范本
- 勉县一中小升初数学试卷
- 2025年消毒供应室业务学习考试试题(附答案)
- 2025一建《建设工程经济》计算、时间、数字考点笔记
- 校园基孔肯雅热防控措施课件
- 第1课 中国古代政治制度的形成与发展 课件 统编版高中历史选择性必修1
- 多彩贵州地方课程课件
- 劳技自制收纳盒课件
- 《管理学基础与实务》 课件全套 曾宪达 第1-11章 管理与管理者- 管理创新
- 药师考试历年真题综合测试试卷(含答案)
- 2025年村级防疫员考试模拟试题及答案
评论
0/150
提交评论