




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
InitLineIterator 初始化线段迭代器 int cvInitLineIterator( const CvArr* image, CvPoint pt1, CvPoint pt2, CvLineIterator* line_iterator, int connectivity=8 ); image 带采线段的输入图像.pt1 线段起始点 pt2 线段结束点 line_iterator 指向线段迭代器状态结构的指针 connectivity 被扫描线段的连通数,4 或 8. 函数 cvInitLineIterator 初始化线段迭代器,并返回两点之间的象素点数目。两个点必须 在图像内。当迭代器初始化后,连接两点的光栅线上所有点,都可以连续通过调用 CV_NEXT_LINE_POINT 来得到。线段上的点是使用 4连通或 8连通利用 Bresenham 算法逐点计算的。 例子:使用线段迭代器计算彩色线上象素值的和 CvScalar sum_line_pixels( IplImage* image, CvPoint pt1, CvPoint pt2 ) CvLineIterator iterator; int blue_sum = 0, green_sum = 0, red_sum = 0; int count = cvInitLineIterator( image, pt1, pt2, for( int i = 0; i imageData); y = offset/image-widthStep; x = (offset - y*image-widthStep)/(3*sizeof(uchar) ); printf(“(%d,%d)n“, x, y ); return cvScalar( blue_sum, green_sum, red_sum ); 编辑 SampleLine 将图像上某一光栅线上的像素数据读入缓冲区 int cvSampleLine( const CvArr* image, CvPoint pt1, CvPoint pt2, void* buffer, int connectivity=8 ); image 输入图像 pt1 光栅线段的起点 pt2 光栅线段的终点 buffer 存储线段点 的缓存区,必须有足够大小来存储点 max( |pt2.x-pt1.x|+1, |pt2.y-pt1.y|+1 ) :8连通情况 下,或者 |pt2.x-pt1.x|+|pt2.y-pt1.y|+1 : 4连通情况下.connectivity 线段的连通方式, 4 or 8. 函数 cvSampleLine 实现了线段迭代器的一个特殊应用。它读取由 pt1 和 pt2 两点确定 的线段上的所有图像点,包括终点,并存储到缓存中。 编辑 GetRectSubPix 从图像中提取象素矩形,使用子象素精度 void cvGetRectSubPix( const CvArr* src, CvArr* dst, CvPoint2D32f center ); src 输入图像.dst 提取的矩形.center 提取的象素矩形的中心,浮点数坐标。中心必须位于图像内部. 函数 cvGetRectSubPix 从图像 src 中提取矩形: dst(x, y) = src(x + center.x - (width(dst)-1)*0.5, y + center.y - (height(dst)-1)*0.5) 其中非整数象素点坐标采用双线性插值提取。对多通道图像,每个通道独立单独完成提取。 尽管函数要求矩形的中心一定要在输入图像之中,但是有可能出现矩形的一部分超出图像 边界的情况,这时,该函数复制边界的模识(hunnish:即用于矩形相交的图像边界线段的象 素来代替矩形超越部分的象素) 。 编辑 GetQuadrangleSubPix 提取象素四边形,使用子象素精度 void cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst, const CvMat* map_matrix ); src 输入图像.dst 提取的四边形.map_matrix3 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“ int main( int argc, char* argv ) IplImage* src; if( argc=2 int delta = 1; int angle = 0; cvNamedWindow( “src“, 1 ); cvShowImage( “src“, src ); for(;) float m6; double factor = (cos(angle*CV_PI/180.) + 1.1)*3; CvMat M = cvMat( 2, 3, CV_32F, m ); int w = src-width; int h = src-height; m0 = (float)(factor*cos(- angle*2*CV_PI/180.); m1 = (float)(factor*sin(-angle*2*CV_PI/180.); m2 = w*0.5f; m3 = - m1; m4 = m0; m5 = h*0.5f; cvGetQuadrangleSubPix( src, dst, cvNamedWindow( “dst“, 1 ); cvShowImage( “dst“, dst ); if( cvWaitKey(5) = 27 ) break; angle = (angle + delta) % 360; return 0; 编辑 Resize 图像大小变换 void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR ); src 输入 图像.dst 输出图像.interpolation 插值方法: CV_INTER_NN - 最近邻插值, CV_INTER_LINEAR - 双线性插值 (缺省使用) CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。 当图像放大时,类似于 CV_INTER_NN 方法 CV_INTER_CUBIC - 立方插值 . 函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支 持 ROI. 编辑 WarpAffine 对图像做仿射变换 void cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) ); src 输入图像.dst 输出图像.map_matrix23 变换矩阵 flags 插值方法和以下开关选项的组合: CV_WARP_FILL_OUTLIERS - 填充所有输出图像的象素。如果部分象素落在输入图像 的边界外,那么它们的值设定为 fillval. CV_WARP_INVERSE_MAP - 指定 map_matrix 是输出图像到输入图像的反变换,因此 可以直接用来做象素插值。否则, 函数从 map_matrix 得到反变换。 fillval 用来填充边界外面的值 函数 cvWarpAffine 利用下面指定的矩阵变换输入图像: 如果没有指定 CV_WARP_INVERSE_MAP , , 否则, 函数与 cvGetQuadrangleSubPix 类似,但是不完全相同。 cvWarpAffine 要求输入和输出 图像具有同样的数据类型,有更大的资源开销(因此对小图像不太合适)而且输出图像的 部分可以保留不变。而 cvGetQuadrangleSubPix 可以精确地从 8 位图像中提取四边形到浮 点数缓存区中,具有比较小的系统开销,而且总是全部改变输出图像的内容。 要变换稀疏矩阵,使用 cxcore 中的函数 cvTransform 。 编辑 GetAffineTransform 由三对点计算仿射变换 CvMat* cvGetAffineTransform( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* map_matrix ); src 输入图像的三角形顶点坐标。dst 输出图像的相应的三角形顶点坐标。 map_matrix 指向 23 输出矩阵的指针。 函数 cvGetAffineTransform 计算满足以下关系的仿射变换矩阵: 这里,dst(i) = (xi,yi),src(i) = (xi,yi),i = 02. 编辑 2DRotationMatrix 计算二维旋转的仿射变换矩阵 CvMat* cv2DRotationMatrix( CvPoint2D32f center, double angle, double scale, CvMat* map_matrix ); center 输入图像的旋转中心坐标 angle 旋转角度(度) 。正值表示逆时针旋转 (坐标原点假设在左上角).scale 各项同性的尺度因子 map_matrix 输出 23 矩阵的指针 函数 cv2DRotationMatrix 计算矩阵: | (1-)*center.x - *center.y - | *center.x + (1-)*center.y where =scale*cos(angle), =scale*sin(angle) 该变换并不改变原始旋转中心点的坐标,如果这不是操作目的,则可以通过调整平移量改 变其坐标(译者注:通过简单的推导可知,仿射变换的实现是首先将旋转中心置为坐标原点, 再进行旋转和尺度变换,最后重新将坐标原点设定为输入图像的左上角,这里的平移量是 center.x, center.y). 编辑 WarpPerspective 对图像进行透视变换 void cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) ); src 输入图像.dst 输出图像.map_matrix33 变换矩阵 flags 插值方法和以下开关选项的组合: CV_WARP_FILL_OUTLIERS - 填充所有缩小图像的象素。如果部分象素落在输入图像的 边界外,那么它们的值设定为 fillval. CV_WARP_INVERSE_MAP - 指定 matrix 是输出图像到输入图像的反变换,因此可以 直接用来做象素插值。否则, 函数从 map_matrix 得到反变换。 fillval 用来填充边界外面的值 函数 cvWarpPerspective 利用下面指定矩阵变换输入图像: 如果没有指定 CV_WARP_INVERSE_MAP , , 否则, 要变换稀疏矩阵,使用 cxcore 中的函数 cvTransform 。 编辑 WarpPerspectiveQMatrix 用 4 个对应点计算透视变换矩阵 CvMat* cvWarpPerspectiveQMatrix( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* map_matrix ); src 输入图像的四边形的 4 个点坐标 dst 输出图像的对应四边形的 4 个点坐标 map_matrix 输出的 33 矩阵 函数 cvWarpPerspectiveQMatrix 计算透视变换矩阵,使得: (tixi,tiyi,ti)T=matrix(xi,yi,1)T 其中 dst(i)=(xi,yi), src(i)=(xi,yi), i=03. 编辑 GetPerspectiveTransform 由四对点计算透射变换 CvMat* cvGetPerspectiveTransform( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* map_matrix ); #define cvWarpPerspectiveQMatrix cvGetPerspectiveTransform src 输入 图像的四边形顶点坐标。dst 输出图像的相应的四边形顶点坐标。map_matrix 指向 33 输 出矩阵的指针。 函数 cvGetPerspectiveTransform 计算满足以下关系的透射变换矩阵: 这里,dst(i) = (xi,yi),src(i) = (xi,yi),i = 03. 编辑 Remap 对图像进行普通几何变换 void cvRemap( const CvArr* src, CvArr* dst, const CvArr* mapx, const CvArr* mapy, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) ); src 输入图像.dst 输出图像.mapxx 坐标的映射 (32fC1 image).mapyy 坐标的映射 (32fC1 image).flags 插值方法和以下开关选项的组合: CV_WARP_FILL_OUTLIERS - 填充边界外 的像素. 如果输出图像的部分象素落在变换后的边界外,那么它们的值设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江汽车职业技术学院《深度报道研究》2023-2024学年第二学期期末试卷
- 黑龙江林业职业技术学院《信息系统开发与应用综合专题》2023-2024学年第二学期期末试卷
- 河北医科大学临床学院《土地规划设计》2023-2024学年第二学期期末试卷
- 重庆信息技术职业学院《环境与健康》2023-2024学年第二学期期末试卷
- 新疆维吾尔医学专科学校《卫生监督学A》2023-2024学年第二学期期末试卷
- 晋中师范高等专科学校《机械基础与液压传动》2023-2024学年第二学期期末试卷
- 上海中侨职业技术大学《中医诊断学实验》2023-2024学年第二学期期末试卷
- 湖南司法警官职业学院《机器视觉系统设计与应用》2023-2024学年第二学期期末试卷
- 2024年医学研究与试验发展服务项目资金申请报告代可行性研究报告
- 连续刚构桥毕业设计答辩
- 地七年级下册全册知识要点总复习-2024-2025学年七年级地理教学课件(人教版2024)
- 创业大赛活动策划方案
- 西部计划考试试题及答案
- 【广安】2025上半年四川广安理工学院筹建处第一次招聘非事业编制专任教师15人笔试历年典型考题及考点剖析附带答案详解
- 2025医院护理面试题库及答案
- 《建设工程施工合同(示范文本)》(GF-2017-0201)条款
- 【MOOC】大学体育(二)-华中科技大学 中国大学慕课MOOC答案
- 【MOOC】断层影像解剖学-山东大学 中国大学慕课MOOC答案
- 2024版《糖尿病健康宣教》课件
- 高中地理思维导图(高清 可以放大)
- 创造心智与创新训练智慧树知到期末考试答案章节答案2024年陕西师范大学
评论
0/150
提交评论