图像旋转公式及opencv中cvGetQuadrangleSubPix 的用法.doc_第1页
图像旋转公式及opencv中cvGetQuadrangleSubPix 的用法.doc_第2页
图像旋转公式及opencv中cvGetQuadrangleSubPix 的用法.doc_第3页
图像旋转公式及opencv中cvGetQuadrangleSubPix 的用法.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

图像任意角度的旋转公式 图像旋转是指把定义的图像绕某一点以逆时针或顺时针方向旋转一定的角度,通常是指绕图像的中心以逆时针方向旋转。 首先根据旋转的角度、图象对角线的长度计算旋转后的图像的最大宽度、高度,根据旋转后图象最大的宽度、高度生成新的缓冲区,假设图像的左上角为(left, top),右下角为(right, bottom),则图像上任意点(x, y)绕其中心(xcenter, ycenter)逆时针旋转angle角度后,新的坐标位置(x1, y1)的计算公式为: xcenter = (width+1)/2+left; ycenter = (height+1)/2+top; x1 = (x-xcenter) cos- (y - ycenter) sin+xcenter; y1 = (x-xcenter) sin+ (y- ycenter) cos+ ycenter; 与图像的镜像变换相类似,把原图中的象素值读入新缓冲区的(x1,y1)点处。注意在新缓冲区中与原图没有对应的象素点的值用白色代替。 GetQuadrangleSubPix提取象素四边形,使用子象素精度 void cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst, const CvMat* map_matrix );src 输入图像. dst 提取的四边形. map_matrix 3 2 变换矩阵 A|b (见讨论). 函数 cvGetQuadrangleSubPix 以子象素精度从图像 src 中提取四边形,使用子象素精度,并且将结果存储于 dst ,计算公式是: dst(x + width(dst) / 2,y + height(dst) / 2) = src(A11x + A12y + b1,A21x + A22y + b2) 其中 A和 b 均来自映射矩阵(译者注:A, b为几何形变参数) ,映射矩阵为: 其中在非整数坐标 的象素点值通过双线性变换得到。当函数需要图像边界外的像素点时,使用重复边界模式(replication border mode)恢复出所需的值。多通道图像的每一个通道都单独计算。 例子:使用 cvGetQuadrangleSubPix 进行图像旋转 #include cv.h#include highgui.h#include math.h#includeint main( int argc, char* argv )IplImage* src;/* the first command line parameter must be image file name */if( (src = cvLoadImage(.1q.png, -1)printf(sdfs);IplImage* dst = cvCloneImage( src );int delta = 1;int angle = 0; int opt = 0; / 1: 旋转加缩放 / 0: 仅仅旋转 double factor; cvNamedWindow( src, 1 );cvShowImage( src, src );for(;)float m6; / Matrix m looks like: / / m0 m1 m2 = A11 A12 b1 / m3 m4 m5 A21 A22 b2 / CvMat M = cvMat( 2, 3, CV_32F, m );int w = src-width;int h = src-height;if(opt) / 旋转加缩放 factor = (cos(angle*CV_PI/180.) + 1.05)*2; else / 仅仅旋转 factor = 1;m0 = (float)(factor*cos(-angle*2*CV_PI/180.);m1 = (float)(factor*sin(-angle*2*CV_PI/180.);m3 = -m1;m4 = m0;/ 将旋转中心移至图像中间 m2 = w*0.5f; m5 = h*0.5f; / dst(x,y) = A * src(x,y) + bcvGetQuadrangleSubPix( src, dst, &M);cvNamedWindow( dst, 1 );cvShowImage( dst,

温馨提示

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

评论

0/150

提交评论