欢迎来到天天文库
浏览记录
ID:15921627
大小:304.00 KB
页数:11页
时间:2018-08-06
《《数字摄影测量学》课堂实验报告(遥感)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、河南理工大学测绘学院《数字摄影测量学》教学实验报告(专业必修课)┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄实验成绩:评语:指导老师签名:2012年月日实习报告一:点特征提取一、实验的目的与要求通过实习掌握点特征提取的原理、方法和过程,并能用计算机编程实现。二、实验设备1、计算机一台2、立体数字图像3、VC开发平台三、实验步骤1.编写Forstner点特征提取算子的软件,并进行调试。2.进行BMP数字图像的点特征提取。3.提取结果分析,评价特征点的提取的情况。代码如下:doubleWINAPIDet(d
2、oubleN[],intn){if(n==4)return(N[0]*N[3]-N[1]*N[2]);elsereturn0;}//计算矩阵N之迹(即对角线元素之和)的值//参数:大小为n的数组、数组宽度//返回值:矩阵N之迹doubleWINAPITr(doubleN[],intw){doublesum=0.0;for(inti=0;i3、LWINAPIMid(intdg[],intn,intT){BOOLflag=FALSE;inti=0,num=0;for(;iT)num++;if(num>1)flag=TRUE;returnflag;}/////////////////////////////////////////////////////////////////////////////特征提取的函数(仅对灰度图象)//参数:块图象数据指针或数组、块图象宽、块图象高、局部非最大窗口宽、局部非最大窗口高4、//返回值:标记特征点位的二值化块图象指针voidWINAPIForstnerCha(BYTEimage[],BYTE*newimage,intwidth,intheight,intwin_w,intwin_h){staticintT=10;//提取初选点的阈值staticdoubleTq=0.40;//阈值inti,j,l,m,n;//计数器intdg[4];//上下左右四个方向的差分绝对值//BYTE*newimage=newBYTE[width*height];//为保存特征点开辟的数组BYTEt,t5、1,t2,t3,t4;//替换值变量//提取初选点for(i=0;i6、7、j==08、9、i==height-110、11、j==width-1)*(newimage+i*width+j)=0;//窗口边缘点置零else{t=*(image+i*width+j);t1=*(image+(i+1)*width+j);t2=*(image+i*width+(j+1));t3=*(image+(i-1)*width+j);t4=*(image+i*12、width+(j-1));dg[0]=abs(t-t1);//向下的差分绝对值dg[1]=abs(t-t2);//向右的差分绝对值dg[2]=abs(t-t3);//向上的差分绝对值dg[3]=abs(t-t4);//向左的差分绝对值//若四个方向的差分绝对值有任意两个大于阈值,为真,否则为假if(Mid(dg,4,T))*(newimage+i*width+j)=255;//若为真else*(newimage+i*width+j)=0;//若为假}}float*w=newfloat[width*heigh13、t];//存放各点权值的数组intk=3/2;doubleN[4];//窗口的灰度协方差矩阵doublegu,gv;//像素的Robert`s梯度floatq;//兴趣值//提取极值点for(i=0;i14、j-k;n<=j+k-1;n++){//该像素的Robert`s梯度gu=*(image+(m+1)*width+(n+1))-*(image+m*width+n);gv=*(image+m*width+(n+1))-*(image+(m+1)*width+n);//计算灰度协方差矩阵N[0]+=pow(gu,2.0);N[1]+=gu*gv;N[2]=N[1];N[3]+=pow(gv,2.0);}q=(flo
3、LWINAPIMid(intdg[],intn,intT){BOOLflag=FALSE;inti=0,num=0;for(;iT)num++;if(num>1)flag=TRUE;returnflag;}/////////////////////////////////////////////////////////////////////////////特征提取的函数(仅对灰度图象)//参数:块图象数据指针或数组、块图象宽、块图象高、局部非最大窗口宽、局部非最大窗口高
4、//返回值:标记特征点位的二值化块图象指针voidWINAPIForstnerCha(BYTEimage[],BYTE*newimage,intwidth,intheight,intwin_w,intwin_h){staticintT=10;//提取初选点的阈值staticdoubleTq=0.40;//阈值inti,j,l,m,n;//计数器intdg[4];//上下左右四个方向的差分绝对值//BYTE*newimage=newBYTE[width*height];//为保存特征点开辟的数组BYTEt,t
5、1,t2,t3,t4;//替换值变量//提取初选点for(i=0;i6、7、j==08、9、i==height-110、11、j==width-1)*(newimage+i*width+j)=0;//窗口边缘点置零else{t=*(image+i*width+j);t1=*(image+(i+1)*width+j);t2=*(image+i*width+(j+1));t3=*(image+(i-1)*width+j);t4=*(image+i*12、width+(j-1));dg[0]=abs(t-t1);//向下的差分绝对值dg[1]=abs(t-t2);//向右的差分绝对值dg[2]=abs(t-t3);//向上的差分绝对值dg[3]=abs(t-t4);//向左的差分绝对值//若四个方向的差分绝对值有任意两个大于阈值,为真,否则为假if(Mid(dg,4,T))*(newimage+i*width+j)=255;//若为真else*(newimage+i*width+j)=0;//若为假}}float*w=newfloat[width*heigh13、t];//存放各点权值的数组intk=3/2;doubleN[4];//窗口的灰度协方差矩阵doublegu,gv;//像素的Robert`s梯度floatq;//兴趣值//提取极值点for(i=0;i14、j-k;n<=j+k-1;n++){//该像素的Robert`s梯度gu=*(image+(m+1)*width+(n+1))-*(image+m*width+n);gv=*(image+m*width+(n+1))-*(image+(m+1)*width+n);//计算灰度协方差矩阵N[0]+=pow(gu,2.0);N[1]+=gu*gv;N[2]=N[1];N[3]+=pow(gv,2.0);}q=(flo
6、
7、j==0
8、
9、i==height-1
10、
11、j==width-1)*(newimage+i*width+j)=0;//窗口边缘点置零else{t=*(image+i*width+j);t1=*(image+(i+1)*width+j);t2=*(image+i*width+(j+1));t3=*(image+(i-1)*width+j);t4=*(image+i*
12、width+(j-1));dg[0]=abs(t-t1);//向下的差分绝对值dg[1]=abs(t-t2);//向右的差分绝对值dg[2]=abs(t-t3);//向上的差分绝对值dg[3]=abs(t-t4);//向左的差分绝对值//若四个方向的差分绝对值有任意两个大于阈值,为真,否则为假if(Mid(dg,4,T))*(newimage+i*width+j)=255;//若为真else*(newimage+i*width+j)=0;//若为假}}float*w=newfloat[width*heigh
13、t];//存放各点权值的数组intk=3/2;doubleN[4];//窗口的灰度协方差矩阵doublegu,gv;//像素的Robert`s梯度floatq;//兴趣值//提取极值点for(i=0;i14、j-k;n<=j+k-1;n++){//该像素的Robert`s梯度gu=*(image+(m+1)*width+(n+1))-*(image+m*width+n);gv=*(image+m*width+(n+1))-*(image+(m+1)*width+n);//计算灰度协方差矩阵N[0]+=pow(gu,2.0);N[1]+=gu*gv;N[2]=N[1];N[3]+=pow(gv,2.0);}q=(flo
14、j-k;n<=j+k-1;n++){//该像素的Robert`s梯度gu=*(image+(m+1)*width+(n+1))-*(image+m*width+n);gv=*(image+m*width+(n+1))-*(image+(m+1)*width+n);//计算灰度协方差矩阵N[0]+=pow(gu,2.0);N[1]+=gu*gv;N[2]=N[1];N[3]+=pow(gv,2.0);}q=(flo
此文档下载收益归作者所有