欢迎来到天天文库
浏览记录
ID:23387496
大小:627.00 KB
页数:8页
时间:2018-11-06
《光学图象处理课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、宋树鹏图象翻转的研究光学图象处理实验(课程设计)应用物理系宋树鹏2007年12月82宋树鹏图象翻转的研究图像处理—翻转姓名:宋树鹏学号:05110901169摘要:本文介绍了一种图象旋转的方法,方法原理是先算出旋转后的坐标,再将原有图像数据按照新的坐标输出就可以得到旋转了的图像。本实验的程序是在VC++环境中完成的。关键词旋转坐标变换一.图象翻转的背景图像翻转是指把定义的图像绕某一轴以逆时针或顺时针方向旋转。 在实际应用中,有时需要将一幅图像作一定的翻转.二.翻转方法对图像可进行上下,左右的翻转,也可以9
2、0度和270度的旋转。有镜像等效果和简单旋转的效果。图1翻转的方法介绍如下:可以把行首尾倒置,列首尾倒置,行列的首尾同时倒置,就是利用矩阵的变换原理。图像翻转变换的基本流程图像的旋转变换一般可以分为以下几个步骤:82宋树鹏图象翻转的研究⑴翻转变换参数的获得要对图像进行旋转变换必须首先获得图像以及旋转变换的基本参数,如要知道图像的宽度和高度,图像的坐标中心,旋转角度,旋转方向等等。有时这些参数可以直接获得,有时要通过计算和测试。⑵预处理在对图像进行旋转变换前还必须进行相关的预处理。⑶翻转变换按照前面算法描述
3、中给出的公式计算出对原始图像进行旋转后新图像的每个像素对应的源图像的像素位置。⑷后续处理由于进行图像旋转后得到的新图像和原始图像相比在大小和形状上都可能存在差异,在原始图像位置以外的部分像素灰度值必须预先规定好。比如矩形图像旋转校正后的新图像的四个角上并没有和原始图像相对应的像素,可以自己定义成黑点或白点。旋转变换后的图像会变大,要计算放大因子来恢复原始图像大小。三.源程序及详细说明下面讲述的是算法源程序,算法源程序如下:float*ar;CYang1Doc*pDoc=GetDocument();LPST
4、Rlpyuan=(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB());if(::DIBNumColors(lpyuan)!=256){//MessageBox("目前只支持256色位图的反色!","系统提示",MB_ICONINFORMATION
5、MB_OK);//::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());//return;}LPSTRlpzhong=::FindDIBBits(lpyuan);intwidth,height;i
6、nti,j;82宋树鹏图象翻转的研究width=(int)DIBWidth(lpyuan);height=(int)DIBHeight(lpyuan);ar=newfloat[height*width];for(j=0;j7、*width+i];::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());delete[]ar;pDoc->SetModifiedFlag(TRUE);pDoc->UpdateAllViews(NULL);第j行第i列的元素转换为倒数第j行第i列的元素,然后再复值回去,就基本完成了一个简单的翻转。二、for(j=0;j8、r(j=0;j9、)for(i=0;i
7、*width+i];::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());delete[]ar;pDoc->SetModifiedFlag(TRUE);pDoc->UpdateAllViews(NULL);第j行第i列的元素转换为倒数第j行第i列的元素,然后再复值回去,就基本完成了一个简单的翻转。二、for(j=0;j8、r(j=0;j9、)for(i=0;i
8、r(j=0;j9、)for(i=0;i
9、)for(i=0;i
此文档下载收益归作者所有