学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询
来源:职称驿站所属分类:地质论文 发布时间:2011-06-08浏览:64次
摘要:本文介绍了用牛顿迭代法对栅格影像的纠正,并简要说明牛顿迭代法的基本原理和作者在AutoCAD编写程序的代码示例。同时还介绍了TIF影像的格式读取和回写图象的纹理处理。
关键词:VicualC++,牛顿迭代法,光栅图像,TIF,反走样
随着数字化建设的加快,对基础数据的需求也越来越大,现有的纸质图件进行扫描和矢量化,使之变成电子数据,是数字化建设之所需。但由于图纸的保存时间过久、受潮、扫描操作等各种原因都会引起图纸变形,所以,在矢量化前对光栅图像进行纠正,是保证成图的精度的一个关键环节。下面将详细说明光栅图像纠正中用到的算法、TIF图像的格式以及图像纹理的反走样。
牛顿迭代法(Newton'smethod)
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。定义设迭代序列{xk}收敛到x*,若存在实数p≥1及a≠0,且当k≥k0时xk=x*,有
则称序列{xk}是p阶收敛的.α称为收敛因子。
Newton法
局部收敛定理:设f(x*)=0,f'(x*)≠0,且f(x)在x*附近的二阶导数f''(x)连续,则(2.01)具有二阶收敛,且
二阶收敛表现在计算得数上就是每算一次会有多几乎一倍的精度。对于牛顿迭代法这里不过多讨论,下面是作者用VicualC编写的牛顿迭代法代码:
intOverlayCalss::NewtonMethod(……)
{
……//变量定义略
ii=-1;
for(i=1;i<=ff;i++)
{
ii=ii+1;
Tp[ii][0]=Sour[i][X];Tp[ii][1]=Sour[i][Y];
Tp[ii][2]=0;
Tp[ii][3]=0;
Tp[ii][4]=-Sour[i][X]*Dest[i][X]; Tp[ii][5]=-Dest[i][X]*Sour[i][Y];
Tp[ii][6]=Dest[i][X];
ii=ii+1;
Tp[ii][0]=0;
Tp[ii][1]=0;
Tp[ii][2]=Sour[i][X]; Tp[ii][3]=Sour[i][Y];
Tp[ii][4]=-Sour[i][X]*Dest[i][Y]; Tp[ii][5]=-Sour[i][Y]*Dest[i][Y];
Tp[ii][6]=Dest[i][Y];
}
xa=5;cj=ii;w=0;
for(i=0;i<xa;i++)
for(j=i+1;j<=xa;j++)
z[j][i]=z[i][j];
NX=xa;
for(k=w;k<=NX-1;k++)
{
e=0;
for(i=k;i<=NX;i++)
{
if(fabs(z[i][k])<=fabs(e))continue;
e=z[i][k];
i0=i;
}
if(fabs(e)>fabs(-1.108447E-11))
{
if(i0!=k)
for(j=k;j<=NX+1;j++)
{
tt=z[k][j];z[k][j]=z[i0][j];z[i0][j]=tt;
}
e=1.0/e;
}
else
return0;//返回错误值
}
……//返回迭代后
return1;
}
栅格影像(TIFF)
TIF影像文件是由文件头、参数指针、参数数据表和图象数据4部分组成。
1. 文件头中有字节顺序、TIF版本号和指向第一个参数指针表的指针。
参数指针表是由一个2字节的整数和一系列12字节参域构成。
下面是作者编写的读取二值TIFF图像文件格式的一段代码,但没有对压缩的TIFF格式进行处理。
voidOverlayCalss::Load_TIF()
{
……//变量定义略
rewind(fp);
fread(&TIF_H,8,1,fp);
tif_b=newTIFMAPBLOCK[BlockNO-1];
for(inti=0;i<BlockNO;i++)
{
fread(&tif_b[i],12,1,fp);
switch(tif_b[i].bfcsm)
{
case256:
TIF_W=tif_b[i].bfcszz;
dwx_mm[0]=i;
case257:
TIF_HI=tif_b[i].bfcszz;
dwx_mm[1]=i;
case258:
po_no=tif_b[i].bfcszz;
case259: //压缩
LoadLZW();//压缩解码
break;
case262:
color_index=tif_b[i].bfcszz;
case273:
DA_Z=tif_b[i].bfcszz;
dwx_mm[2]=i;
Date_S=DA_Z;
case277:
if(tif_b[i].bfcszz==3)
{
AfxMessageBox("不是一个256阶灰度TIFF文件!);
fclose(fp);
return;
}
if_color=tif_b[i].bfcszz;
case282:
fblx=tif_b[i].bfcszz;
case283:
fbly=tif_b[i].bfcszz;
case296:
fbldw=tif_b[i].bfcszz;
}
}
if(fbldw==1)
{
……
}
else
{
if(fbldw==3)
{
fbl_mm=10/fb;
fbl=fb/10;
}
else
{
fbl_mm=25.4/fb;
fbl=fb/25.4;
}
}
fclose(fp);
}
反走样
所为走样就是象素近似地描绘平滑的直线、多边形和诸如圆与椭圆的曲线图元边界,在光栅图形中由一系列相同亮度的离散象素构成,这种离散量表示连续量引起的失真。而反走样就是消除或减少这种效果的技术。
结束语
光栅图像纠正在测绘领域中是必不可少的,也是数字图像处理技术的一部分。在本文中作者已经通过二次开发工具ObjectARX,在AutoCAD环境下开发编写了程序,实现了对光栅图像的纠正。在实际作业中有一定的实用价值。
参考文献:
[1] 孙家广,杨长贵.1994.计算机图形学(新版)北京:清华大学出版
[2] GeorgeShepherd,Davidkruglinski著潘爱民译VisualC++.NET技术内幕(第6版)清华大学出版社
《光栅图像纠正算法与TIF格式深讨》
本文由职称驿站首发,您身边的高端学术顾问
文章名称: 光栅图像纠正算法与TIF格式深讨
扫码关注公众号
微信扫码加好友
职称驿站 www.zhichengyz.com 版权所有 仿冒必究 冀ICP备16002873号-3