位图仿射变换算法研究

位图仿射变换算法研究

ID:38111687

大小:172.33 KB

页数:4页

时间:2019-05-25

位图仿射变换算法研究_第1页
位图仿射变换算法研究_第2页
位图仿射变换算法研究_第3页
位图仿射变换算法研究_第4页
资源描述:

《位图仿射变换算法研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机技术与应用进展-2004位图仿射变换算法研究*徐磊陈淑珍武汉火学电子信息学院,湖北武汉430072摘要仿射变换是比较重要的图像变换方法,在对位图进行仿射变换时,位图像素点颜色信.息位数不同,对其进行仿射变换操作时的算法也不同本文分别对不同颜色信息位图进行分析,得出了对他们进行仿射变换时的算法,并用程序实现.关健词仿射变换位图像素1引言图像的仿射变换也叫图像的几何变换,包括图像的平移,镜像,转置,缩放,旋转,等操作。在程序实现的过程中,有些变换如平移,镜像,缩放等操作使用一般的显示函数,只要修改相应的参

2、数即可,但是在进行旋转操作的时候仅仅进行参数的修改是不能实现的,这时就需要对图像进行点操作,即对组成图像的每一个像素进行操作,以达到变换的目的。在位图格式中,不同的图像,其像素点的颜色信息位数不同,本文分析对不同DIB位图进行仿射变换时的算法。2相关知识2.1仿射变换图像变换是指数字图像的儿何变换(或称为空间变换),即图像中点与点之间的空间映射关系。仿射变换是一种特殊的变换方式,其一般表达式为:a=a,2气[x,Y,1l=[u,V,1llall气a3,其中(x,y)为新图像中的点,(u,v)为与(x,y)对

3、应的原图像上的点。将上式展开可得:︸1X--1a=u+a2,v+a3,71..y--1‘a,2u+422,+432仿射变换能实现位图的平面映射,常见的包括平移,旋转,缩放和剪切等。2.2DIB位图文件结构简介一个BMP文件大体上分成4个部分:位图文件头,位图信息头,调色板,位图数据111对于2色位图,用1位就可以表示该像素的颜色,(一般0表示黑,1表示白),所以一个字节就可裤者简介:徐磊(1980-),男,硕士生,现从事多媒体信号分析与网络技术研究位图仿射变换算法研究以表示8个像素;对于16色位图,用4位可

4、以表示一个像素的颜色,所以一个字节就可以表示2个像素;对于256色位图,1个字节刚好可以表示一个像素;对于真彩色图,3个字节才能表示一个像索。3获取图像数据的方法要对图像进行处理,必须先读出图像数据。通过以下语句获得图像数据B1.CStringFilter-"bitmapfiles(*.bmp)l*.bmplallfiles(*.*)I*.*I";/定义打开文件类型CFileDialogdlgopen(TRUE,Filter,O,OFNesHIDEREADONLYIOFN一OVERWRITEPROMPT,F

5、ilter,0);/定义打开对话框if(IDCANCEL==dlgopen.DoModal())return;/显示打开对话框FileName=dlgopen.GetPathNameQ;/得到文件名CFilebsFile((LPCTSTR)FileName,CFile::modeReadWrite);/打开文件,可读可写bsFile.SeekToBegin();/从文件的开始filelength=bsFile.GetLength();/图像文件长度memyadd=(LPBYTE)malloc(filelen

6、gth);/分配内存,存放位图数据bsFile.ReadHuge(memyadd,filelength);/将位图数据读入内存bi=(BITMAPINFOHEADER*)(memyadd+sizeof(BITMAPFILEHEADER));/将指针bi指向位图数据的/信息头bf=(BITMAPFILEHEADER*)memyadd;//将指针bf指向位图数据的刀文件头,即位图数据的开始/部分这样就可以得到图像数据,读出图像数据后,就可以通过指针对图象数据进行操作了。4点操作的算法实现算法的基本思想是,根据不

7、同的仿射变换方法对读出的图像数据进行变换,在变换的过程中,不能改变原数据,以避免不必要的麻烦,这就需要开辟新的内存用于存储变换后的图像数据:同时,在有些仿射变换中,可能会修改图像的信息头的信息,如剪切操作会改变图像的长度,宽度等,就需要修改相应的信息头,变换结束后将新的位图数据覆盖原数据送显示即可,如果不希望覆盖原数据,可以重新构造一个位图文件,通过上面的变换可以得到构造新位图文件所需的文件头,信息头,位图数据等。在进行仿射变换时,需要注意的问题是,原图像数据变换后复制到新的内存的相应位置时,不能影响新的数

8、据中同一个字节中的其他数据。对于像素的大小占用的内存不是一个字节的整数倍的位图(即2色和16色图),它们占用的内存都小于一个字节,在算法实现时要稍微复杂。对于256色和真彩色的位图,由于占用的内存为一个字节的整数倍,不会影响到前后的像素点的数据,因此算法相对简单。因此需要在变换前先检查位图的颜色信息,可通过一下语句获得颜色信息:colnum=bi->biBitCount;读取颜色信息后,就可以针对对不同颜色信息的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。