SVGA图像处理毕业论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SVGA图像处理毕业论文.doc

  SVGA图像处理毕业论文   SVGA彩色图形卡是一种超级VGA卡,它不仅具有640×480×16色图像显示模式,而且具有640×480×256色图像显示模式。 MicrosoftC/C++7.0提供了丰富的图形库函数,尤其是提供了对SVGA卡所能设置的高分辨率图像模式的支持,利用丰富的图形库函数进行组合,就可以完成各种需要的功能。例如图像处理,动画编程,界面制作等。这一点对编程者来说无疑是十分方便的。 然而遗憾的是许多图形库函数在一些特定的显示模式(如-VERS256COLOR(0x0101)方式(640×480×256)等256色模式)下却无法正常工作,例如使用例程-getimage()和-putimage()时常会出现死机和不能正常工作(出现雪花或不进行任何操作)等现象。用-grstatus()函数检测调用函数的状态时,返回图形错误或警告信息,常见的有图形错误(-1)和不支持请求的视频方式(-2)等,而这些函数在VGA下工作正常。 根据VESA图形标准,在图像模式下,SVGA的Videobuffer(视频缓冲区)是顺序的链结构,且图像数据是按行序顺序存放的,一个像素(屏幕上的一个点)用存储器的一个字节(256色)表示。视频存储器按字节连续寻址,与主机内存采用映射方式通讯,一次只能读写64KB的视频存储器,通过改变段偏移量(I/O操作)来寻址不同的段,即实现对全部视频存储器的操作。 同时,直接访问SVGA的寄存器进行读写操作,充分利用硬件的支持可以大大加快图形的处理速度。实践表明,其运行速度明显优于图形库中提供的函数(以-getimage()和-putimage()为例快30倍)。 笔者通过对视频存储器(Videobuffer)的直接访问实现了256色图像显示模式下图像块的读写功能。下面附上在VESA标准的0x0101(256)图像显示模式下-getimage()和-putimage()两个函数的源程序,该源程序是用MicrosoftC/C++7.0编写的。这两个函数在paq486及兼容机上运行通过。 (作文网zage()和-putimage()两个函数的参数类型说明及意义与MicrosoftC/C++7.0中相应函数的参数类型说明及意义相同。 /*将图像存储到缓冲区中*/ void-getimage256(x1,y1,x2,y2,image) shortx1,y1,x2,y2; char-huge*image; { char-far*buf,-huge*q; longu; shortm,n,i,j,block; m=abs(x2-x1)+1; n=abs(y2-y1)+1; (short)*image=m; (short)*(image+2)=n;/*保留图像的高度与宽度*/ q=image+4; u=min(x1,x2); u+=min(y1,y2)*640L; block=(short)(u/65536L); u-=block*65536L;/*计算偏移量*/ -FP-SEG(buf)=0xA000; -FP-OFF(buf)=u; -outp(0x3c4,14), -outp(0x3C5,block);/*设置页寄存器*/ for(i=0;ilt;n;i++,q+=m){/*行循环*/ -memcpy(q,buf,m); u+=640; if(ult;65536L)buf+=640; else{/*当一行不在同一段时*/ u-=65536L; -FP-SEG(buf)=0xA000; -FP-OFF(buf)=0; block++; -outp(0x3C4,14); -outp(0x3C5,block); if(mgt;640-u)-memcpy(q+640-u,buf,(size-t)(m-640+u)); -FP-OFF(buf)=u; } } } /*在缓冲区中搜索图像*/ void-putimage256(x,y,image,action) shortx,y,action;/*参数action表示图像写方式*/ char-huge*image; { char-far*buf,-huge*q; longu; shortm,n,j,i,block,mm; -memcpy(mm,image,2); if((x+mm)gt;640)m=640-x; elsem=mm; -memcpy(n,image+2,2); if(y+ngt;480)n=480-n;/*取图像的高度和宽度,并进行边界处理*/ q=image+4; u=x; u+=y*640L; block=(short)(u/65536L); u-=block*65536L; -FP-SEG(buf)=0xA000; -FP-OFF(buf)=u; -

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档