影像内定向(框标点的定位)_第1页
影像内定向(框标点的定位)_第2页
影像内定向(框标点的定位)_第3页
影像内定向(框标点的定位)_第4页
影像内定向(框标点的定位)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

影像内定向(框标点的定位)组长:郭晓虎指导教员:郭海涛教员组员:张莎莎苏博李芳林王儒杰定位算子复习指运用某种算法来精确确定图像中特征的具体位置的算子.

[一]、定位算子、特征定位的意义

Wong-Ttrinder圆点定位算子

Wong和Wei-Hsin利用二值图像重心对圆点进行定位。首先利用阈值T=(最小灰度值+平均灰度值)/2将窗口中的影像二值化为gij(i=0,1,…,n-1;j=0,1,…,m-1)然后计算目标重心坐标(x,y)与圆度r

[二]、Wong-Ttrinder圆点定位算子1111111111111x=m10/m00

y=m01/m00

m00=13m01=2+9+20+15+6=52m10=5+18+35+24+9=91x=91/13=

7.0y=52/13=

4.01111111111111

Wong-Ttrinder圆点定位算子[二]、Wong-Ttrinder圆点定位算子r=Mx/My

1111111111111Wong-Ttrinder圆点定位算子[二]、Wong-Ttrinder圆点定位算子r=Mx/My

M20=4+3+0+3+4=14M02=4+3+0+3+4=14Mx=14+0=14M11=1-1-1+1=0My=14-0=14r=1.0

1111111111111

Wong-Ttrinder圆点定位算子[二]、Wong-Ttrinder圆点定位算子

Trinder发现,该算子受二值化影响,误差可达0.5像素,因此他利用原始灰度Wij为权Wong-Ttrinder圆点定位算子[二]、Wong-Ttrinder圆点定位算子Wong-Ttrinder圆点定位算子程序实现

11111111实现结圆点定位算子编程实现

inti,j;

LPBYTElpSrc;

floatx,y;

floatMx,My;

longm10=0,m01=0,m00=0;

longhuidu=0,pingjun=0;

intyuzhi=0;

floatM20,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);开辟BYTE型内存空间空间大小为(Width+L_Width)*Height把原图像复制到该内存空间中圆点定位算子编程实现

for(j=0;j<Height;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;//取最大灰度和平均灰度的平均为阈值首先利用阈值T=(最小灰度值+平均灰度值)/2将窗口中的影像二值化为gij(i=0,1,…,n-1;j=0,1,…,m-1)获取阈值圆点定位算子编程实现

for(j=0;j<Height;j++)

{

for(i=0;i<(Width+L_Width);i++)

{

lpSrc=(LPBYTE)image+(Width+L_Width)*(Height-1-j)+i;

if(*lpSrc>yuzhi)//计算该灰度是否大于阈值

*lpSrc=1;

else

*lpSrc=0;

}

}

//图像0,1二值化二值化圆点定位算子编程实现for(j=0;j<Height;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;}计算m10,m00,m01圆点定位算子编程实现

x=m10/(m00*1.0);

y=m01/(m00*1.0);//计算定位点的x,y坐标x=m10/m00

y=m01/m00

计算x,y坐标圆点定位算子编程实现计算M20,M02,M11

for(j=0;j<Height;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计算Mx,My,圆度圆度r=Mx/My

圆点定位算子编程实现//完成在中间画十字的动作CPointm_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)

CStringss1,ss2,ss3,ss; ss1.Format("%f",x); ss2.Format("%f",y);//因为函数MessageBox()要求输出的类型必须是字符型,调用Format()函数进行转换 ss3.Format("%f",yuandu); ss="x="+ss1; ss+="y="; ss+

温馨提示

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

最新文档

评论

0/150

提交评论