数字摄影测量实习报告_第1页
数字摄影测量实习报告_第2页
数字摄影测量实习报告_第3页
数字摄影测量实习报告_第4页
数字摄影测量实习报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

数字摄影测量实习报告书学号:20111000684班级序号:113112-05姓名:舒超指导老师:宋妍成绩:中国地质大学(武汉)信息工程学院遥感科学技术系2014年6月目录实习一:Moravec算子点特征提取 31.1实习目的: 31.2实习原理: 31.3实习步骤以及代码分析: 41.4结果分析: 8实习二:边缘提取算法 102.1实习目的: 102.2实习原理: 102.3实习步骤以及代码: 102.4结果分析: 12实习总结 13实习一:Moravec算子点特征提取1.1实习目的:用程序设计语言(VisualC++或者C语言)编写一个完整的提取点特征的程序,通过对提供的图像数据进行特征点提取,输出提取出的点特征坐标。本实验的目的在于让学生深入理解Moravec算子原理。通过上机调试程序加强动手能力的培养,通过对实验结果的分析,增强学生综合运用所学知识解决实际问题的能力。1.2实习原理:Moravec角点检测算法是最早的角点检测算法之一。该算法将角点定义为具有低“自相关性”的点。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个patch,并检测这个patch和周围其他patch的相关性。这种相关性通过两个patch间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的patch都会非常相似。如果像素在边缘上,则周围的patch在与边缘正交的方向上会有很大差异,在与边缘平行的方向上则较为相似。而如果像素是各个方向上都有变化的特征点,则周围所有的patch都不会很相似。Moravec会计算每个像素patch和周围patch的SSD最小值作为强度值,取局部强度最大的点作为特征点。1.3实习步骤以及代码分析:步骤流程图如下:程序实现以及相关关键代码:voidCMy2010302590183cylView::OnMoravec()//读取图像以及相关算法{ //TODO:Addyourcommandhandlercodehere CMmoravecDlgdlg; dlg.DoModal();CMy2010302590183cylDoc*pDoc=GetDocument(); LPSTRm_pDIB=(LPSTR)::GlobalLock((HGLOBAL)pDoc->hdib);//得到句柄内存起始地址存放位图数据hdib句柄变量存放BMP位图::GlobalUnlock((HGLOBAL)pDoc->hdib); LPBITMAPINFOm_pBMP;//指向BITMAPINFO结构的指针 m_pBMP=(LPBITMAPINFO)::GlobalLock(pDoc->hdib); //获取指向BITMAPINFO结构的指针 ::GlobalUnlock((HGLOBAL)pDoc->hdib); intBitCount=m_pBMP->bmiHeader.biBitCount; DWORDWidth=::DIBWidth(m_pDIB);//获取位图宽 DWORDHeight=::DIBHeight(m_pDIB);//获取位图高 LPBYTElpData=(LPBYTE)::FindDIBBits(m_pDIB);//定义字符指针变量,原位图指针 intWidthBytes=WIDTHBYTES(Width*BitCount);//获取字节DWORDpixelCount=WidthBytes*Height; intck1=dlg.c1; intck2=dlg.c2; doubleyz=dlg.m_yuzhi; DWORDr,c; INTh; double*xx=newdouble[Width*Height]; intk; k=INT(ck1/2); for(r=ck1/2;r<Height-ck1/2;r++) for(c=ck1/2;c<Width-ck1/2;c++) { doublemin,v[4]={0.0}; for(h=0;h<=ck1-1;h++) { v[0]+=pow((double)(*((BYTE*)(lpData+r*WidthBytes+(c-k+h)))-*((BYTE*)(lpData+(r)*WidthBytes+(c-k+1+h)))),2);//0°方向 v[1]+=pow((double)(*((BYTE*)(lpData+(r-k+h)*WidthBytes+(c+k-h)))-*((BYTE*)(lpData+(r-k+h+1)*WidthBytes+(c+k-h-1)))),2);//45°方向 v[2]+=pow((double)(*((BYTE*)(lpData+(r-k+h)*WidthBytes+(c)))-*((BYTE*)(lpData+(r-k+1+h)*WidthBytes+(c)))),2); //90°方向 v[3]+=pow((double)(*((BYTE*)(lpData+(r-k+h)*WidthBytes+(c-k+h)))-*((BYTE*)(lpData+(r-k+1+h)*WidthBytes+(c-k+h+1)))),2); //135°方向 } min=min(min(min(v[0],v[1]),v[2]),v[3]);//求出v1,v2,v3,v4中的最小值 if(min>yz) xx[r*Width+c]=min; } bool*bMatrix=newbool[Width*Height]; memset(bMatrix,0,Width*Height*sizeof(bool)); DWORDx,y; doublemax2; boolb=false; inttempX(0),tempY(0);for(x=ck2/2;x<Height-ck2/2;x+=ck2) { for(y=ck2/2;y<Width-ck2/2;y+=ck2) { max2=0; for(DWORDm=(x-ck2/2);m<(x+ck2/2);m++) { for(DWORDn=(y-ck2/2);n<(y+ck2/2);n++) if(xx[m*Width+n]>max2) { max2=xx[m*Width+n]; tempY=m; tempX=n; b=true; } } if(b) { bMatrix[tempY*Width+tempX]=1; } }} intsum=0;//特征点总数for(DWORDi=0;i<Height;i++) for(DWORDj=0;j<Width;j++) { if(bMatrix[i*Width+j]) { *((BYTE*)(lpData+i*WidthBytes+j))=0; *((BYTE*)(lpData+i*WidthBytes+j+1))=0; *((BYTE*)(lpData+i*WidthBytes+j-1))=0; *((BYTE*)(lpData+(i+1)*WidthBytes+j))=0; *((BYTE*)(lpData+(i-1)*WidthBytes+j))=0; *((BYTE*)(lpData+i*WidthBytes+j+2))=0; *((BYTE*)(lpData+i*WidthBytes+j-2))=0; *((BYTE*)(lpData+(i+2)*WidthBytes+j))=0; *((BYTE*)(lpData+(i-2)*WidthBytes+j))=0; sum++; } } if(sum<4000) { CStringstrInfo; strInfo.Format("特征点数%d\n",sum); MessageBox(strInfo,"提示",MB_OK); } else { CStringstrInfo; strInfo.Format("特征点数较多,请设置合理参数"); MessageBox(strInfo,"提示",MB_OK); } Invalidate();}1.4结果分析:按照提示,对老师所给数据进行分析,当窗口大小设置为5*5,,阈值设置为5000的时候,对右核线影像进行分析,得到特征点43个,同时图像分析,得出如下结果: 调整阈值和窗口大小,程序能够正常运行,且经过测试,结果精确度有较好的保证。实习二:边缘提取算法2.1实习目的:熟悉Matlab环境下的编程,熟悉边缘提取算法。2.2实习原理:Sobel算子实现思路如下:对输入图像分别使用水平和垂直模板做卷积计算,对得到的两个处理结果求平方和,该平方和与阈值的平方比较。只有当某点的两种卷积的平方大于阈值的平方,且水平占优(水平模板卷积结果大于垂直模板卷积的结果,且该点的卷积平方大于其左右两点的卷积平方和)或者垂直占优(垂直模板卷积的结果大于水平模板卷积的结果,且该点的卷积平方和大于其上下两点的卷积平方和)时,该点的输出结果为255,否则为0。输出的结果为二值图像。第一行和最后一行本来就是图像边界,不包括可用信息,因此相应的输出为0,按照这个思路课题编写了相应的Sobel算子实现程序2.3实习步骤以及代码:2.4结果分析:原图像sobel边缘提取实习总结本次实习过程中,根据自身实际情况,我选择使用vc环境下的编程完成实习,而没有采用Matlab环境下的编程。在实习过程中,我熟悉了sobel算法以及Morave

温馨提示

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

最新文档

评论

0/150

提交评论