定位算子编程实现.ppt
文本预览下载声明
影像内定向(框标点的定位) 组长: 郭晓虎 指导教员:郭海涛教员 组员: 张莎莎 苏博 李芳林 王儒杰 Wong-Ttrinder圆点定位算子程序实现 圆点定位算子编程实现 int i,j; LPBYTE lpSrc; float x,y; float Mx,My; long m10=0,m01=0,m00=0; long huidu=0,pingjun=0; int yuzhi=0; float M20,M02,M11,yuandu; M20=0.0;M02=0.0;M11=0.0; //定义变量及其初始化 圆点定位算子编程实现 BYTE *temp=new BYTE[(Width+L_Width)*Height]; memcpy(temp,image,(Width+L_Width)*Height); 圆点定位算子编程实现 for(j=0;jHeight;j++) { for(i=0;i(Width+L_Width);i++) { lpSrc=(LPBYTE)image+(Width+L_Width)*(Height-1-j)+i; if( huidu(*(lpSrc))) huidu=*(lpSrc);//最大灰度 pingjun+=(*lpSrc);//灰度和 }//取得最大灰度和灰度和 } pingjun=pingjun/((Width+L_Width)*Height);//平均灰度 yuzhi=(pingjun+huidu)/2;//取最大灰度和平均灰度的平均为阈值 圆点定位算子编程实现 for(j=0;jHeight;j++) { for(i=0;i(Width+L_Width);i++) { lpSrc=(LPBYTE)image+(Width+L_Width)*(Height-1-j)+i; if(*lpSrcyuzhi)//计算该灰度是否大于阈值 *lpSrc=1; else *lpSrc=0; } } //图像0,1二值化 圆点定位算子编程实现 for(j=0;jHeight;j++) for(i=0;i(Width+L_Width);i++) { lpSrc=(LPBYTE)image+(Width+L_Width)*(Height-1- j)+i; m10+=(*lpSrc)*i; m00+=(*lpSrc); m01+=(*lpSrc)*j;//计算m10,m00,m01; } 圆点定位算子编程实现 x=m10/(m00*1.0); y=m01/(m00*1.0);//计算定位点的x,y坐标 圆点定位算子编程实现 for(j=0;jHeight;j++) { for(i=0;i(Width+L_Width);i++) { lpSrc=(LPBYTE)image+(Width+L_Width)*(Height-1-j)+i; M20+=(i-x)*(i-x)*(*lpSrc); M02+=(j-y)*(j-y)*(*lpSrc); M11+=(i-x)*(j-y)*(*lpSrc);//计算M20,M02,M11 } } 圆点定位算子编程实现 Mx=(M20+M02)/2+sqrt(((M20-M02)/2)*((M20M02)/2)+M11*M11); My=(M20+M02)/2-sqrt(((M20-M02)/2)*((M20-M02)/2)+M11*M11); yuandu=Mx/My; //计算Mx,My,圆度r 圆点定位算子编程实现 //完成在中间画十字的动作 CPoint m_pt1;//定义点 m_pt1=0;//初始化点 m_pt1.x=x; m_pt1.y=y; m_pt1.x=(int)(m_pt1.x+0.5); m_pt1.y=(int)(m_pt1.y+0.5);//四舍五入 圆点定位算子编程实现 //要弹出对话框显示x,y,及圆度(yuandu)
显示全部