计算机科学与技术专业综合实习报告.doc_第1页
计算机科学与技术专业综合实习报告.doc_第2页
计算机科学与技术专业综合实习报告.doc_第3页
计算机科学与技术专业综合实习报告.doc_第4页
计算机科学与技术专业综合实习报告.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机科学与技术专业综合实习报告题目: 图像轮廓跟踪算法设计与实现 学 生: 别 佳 学 号: 051006301 指导教师: 郑小东 日 期: 2008年11月16日 目 录一:实践目标3二:图像轮廓跟踪算法原理3三:开发工具3四:数据结构描述31:链码32:链码方向的旋转43:链码的寻址44:图像矩阵4五:算法描述4六:程序运行结果7七:问题与不足8八:老师评语9图像轮廓跟踪算法设计与实现一:实践目标1:设计图像轮廓跟踪算法,并寻找图像的轮廓。2:以矩阵为例,寻找矩阵的边界。验证轮廓跟踪算法设计。二:图像轮廓跟踪算法原理1:利用区域边界点搜索区域轮廓的方法。原理是从某一边界点出发,通过沿着一个方向(顺时针)不断搜索下一个轮廓点的方法,得到区域的完整轮廓。轮廓跟踪算法的关键是寻找下一个边界点2:寻找下一个边界点的方法: 按照水平向右的方向逐行寻找第一个值为1的起始点(如果第一行中第一个起始点没有找到,则从第二行、第三行开始寻找直到找到第一个起始点)。 将水平向右的方向逆时针旋转145。再按照每次顺时针旋转45寻找其周围的像素点是否存在,如果不存在继续旋转45;如果存在,当它的值为0时继续旋转45,如果为1时,则此点位边界点,停止旋转。 记录进入该边界点的方向,再按照逆时针旋转145。再按照每次顺时针旋转4寻找此周围的像素点是否存在,如果不存在继续旋转45;如果存在,当它的值为0时继续旋转45,如果为1时,则此点位边界点,停止旋转。 继续,直到最后一个边界点为第一个起始点,则算法结束。三:开发工具 Microsoft Visual C+四:数据结构描述1:链码、链码将中心像素邻域内的8个点逆时针方向编码,其对应编码与方向编码完全相同。324*0557162:链码方向的旋转从上图可以看出,方向按逆时针旋转45度,链码值加1,若链码值大于7时,则其以8取模就可以得到正确的链码。若取相反的方向,可以对链码值加4得到,给链码值加8可以回到原方向。3:链码的寻址 通过中心像素临近像素的过程,叫做链码的寻址。链码的寻址是通过中心像素坐标加上偏移向量表来实现的。这个过程经常借助偏移向量来实现的。 下图为获得中心像素的偏移向量表,表中按照链码的顺序给出了八方向的X,Y偏移量,偏移向量表可利用二维数组directData82来实现。 偏移向量表(directData82)链码01234567X偏移110-1-1-101Y偏移0-1-1-10-1114:图像矩阵用二维矩阵ImageNN来表示图像。 五:算法描述1:初始矩阵如图所示,以方框内部的像素点为起始边界点。 2:起始点为中心像素点,搜索边界点搜索过程如下图 3:搜索到符合条件的像素点,令代表此像素点的值为7(为边界点)然后以此像素点为新的起始点重新搜索。 4:当搜索回到第一个起始点,算法结束。如下图 六:程序运行结果 七:问题与不足1:仅对单区域进行跟踪,没能实现多个区域的跟踪。 解决方法:用一个一维数组来表示已访问的区域。 当对一个区域搜索完成以后,检索数组。对没有访问的区域进行轮廓跟踪。直到所有区域访问完成。2:如果起始点为第一行(最后一行)、第一列(最后一列)中的元素,由于它不能构成八邻域。则算法条件不满足。 解决方法:可在整个矩阵中增加两行(分别作为第一行、最后一行)、两列(第一列、最后一列)。 参考文献注:1、计算机数据与图形处理;化学工业出版社;贾志刚2、计算机图形学理论与实践;北京航空航天大学出版社;李春雨3:数字图像处理开发入门与编程实践;电子工业出版社;左飞,万晋森,刘航八:老师评语九:部分代码#includeiostream.h#define N 7int ImageNN=0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0;/图像矩阵int main(int argc, char* argv)int i,j,k,m;int directData82=1,0,1,-1,0,-1,-1,-1,-1,0,-1,1,0,1,1,1;/链码向量表int x,y;/某一边界点的位置(坐标值)int nx,ny;/搜索到的轮廓点的值int F_x,F_y;/起始点的坐标int index;int startindex;/起始链码cout原图像endl;for(i=0;iN;i+)for(j=0;jN;j+)coutImageij ;coutendl;for(i=0;iN;i+)for(j=0;jN;j+)if(Imageij=1)x=F_x=j;y=F_y=i,k=0; break;if(k=0)break;index=0; do /轮廓跟踪算法 /循环搜索下一边界点,直到回到起始点m=0;/对边界点进行搜索时,用来判断是否为第一个搜索到的1(边界点)startindex=index+3+8; /对此边界点周围进行搜索时的起始链码for(i=0;i=7;i+) index=(startindex-i)%8;/进入搜索到的该轮廓点的链码nx=x+directDataindex0;ny=y+directDataindex1;/得到搜索的轮廓点在矩阵中的位置if(Imagenynx=1)/判断矩阵元素值为一,如果是,则为找到的边界点.令该边界点在矩阵中的元素值为7Imagenynx=7; m=1; /表示此次循环结束. x=nx;y=ny; /保存搜索到的边界点坐标值if(m=1)break;/搜索结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论