opencv中文参考手册

上传人:xzh****18 文档编号:34613641 上传时间:2018-02-26 格式:DOC 页数:116 大小:1.54MB
返回 下载 相关 举报
opencv中文参考手册_第1页
第1页 / 共116页
opencv中文参考手册_第2页
第2页 / 共116页
opencv中文参考手册_第3页
第3页 / 共116页
opencv中文参考手册_第4页
第4页 / 共116页
opencv中文参考手册_第5页
第5页 / 共116页
点击查看更多>>
资源描述

《opencv中文参考手册》由会员分享,可在线阅读,更多相关《opencv中文参考手册(116页珍藏版)》请在金锄头文库上搜索。

1、Cv 中文参考手册Cv 图像处理Wikipedia,自由的百科全书注意:本章描述图像处理和分析的一些函数。大多数函数都是针对两维象素数组的,这里,我们称这些数组为“图像”,但是它们不一定非得是 IplImage 结构,也可以是 CvMat 或者 CvMatND 结构。 梯度、边缘和角点Sobel使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分 void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );src 输入图像. dst 输出图像. xorder x 方向

2、上的差分阶数 yorder y 方向上的差分阶数 aperture_size 扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除了尺寸为 1, 其它情况下, aperture_size aperture_size 可分离内核将用来计算差分。对 aperture_size=1 的情况, 使用 3x1 或 1x3 内核 (不进行高斯平滑操作)。这里有一个特殊变量 CV_SCHARR (=-1),对应 3x3 Scharr 滤波器,可以给出比 3x3 Sobel 滤波更精确的结果。Scharr 滤波器系数是: 对 x-方向 以及转置矩阵对 y-方向。 函数 cvSobel 通过对图像用

3、相应的内核进行卷积操作来计算图像差分: 由于 Sobel 算子结合了 Gaussian 平滑和微分,所以,其结果或多或少对噪声有一定的鲁棒性。通常情况,函数调用采用如下参数 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 来计算一阶 x- 或 y- 方向的图像差分。第一种情况对应: 第二种对应: 或者 核的选则依赖于图像原点的定义 (origin 来自 IplImage 结构的定义)。由于该函数不进行图像尺度变换,所以和输入图像(数组) 相比,输出图像 (数组)的元素通常具有更大的绝对数

4、值(译者注:即象素的深度)。为防止溢出,当输入图像是 8 位的,要求输出图像是 16 位的。当然可以用函数 cvConvertScale 或 cvConvertScaleAbs 转换为 8 位的。除了 8-比特 图像,函数也接受 32-位 浮点数图像。所有输入和输出图像都必须是单通道的,并且具有相同的图像尺寸或者 ROI 尺寸。 Laplace计算图像的 Laplacian 变换 void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );src 输入图像. dst 输出图像. aperture_size 核大小 (与

5、 cvSobel 中定义一样 ). 函数 cvLaplace 计算输入图像的 Laplacian 变换,方法是先用 sobel 算子计算二阶 x- 和 y- 差分,再求和: dst(x,y) = d2src/dx2 + d2src/dy2对 aperture_size=1 则给出最快计算结果,相当于对图像采用如下内核做卷积: 类似于 cvSobel 函数,该函数也不作图像的尺度变换,所支持的输入、输出图像类型的组合和 cvSobel 一致。 Canny采用 Canny 算法做边缘检测 void cvCanny( const CvArr* image, CvArr* edges, double

6、threshold1, double threshold2, int aperture_size=3 );image 输入图像. edges 输出的边缘图像 threshold1 第一个阈值 threshold2 第二个阈值 aperture_size Sobel 算子内核大小 (见 cvSobel). 函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1 和 threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。 PreCornerDetect计算用于角点检测的特征图, void cvPreCorne

7、rDetect( const CvArr* image, CvArr* corners, int aperture_size=3 );image 输入图像. corners 保存候选角点的特征图 aperture_size Sobel 算子的核大小 (见 cvSobel). 函数 cvPreCornerDetect 计算函数 其中 表示一阶图像差分, 表示二阶图像差分。 角点被认为是函数的局部最大值:/ 假设图像格式为浮点数IplImage* corners = cvCloneImage(image);IplImage* dilated_corners = cvCloneImage(image

8、);IplImage* corner_mask = cvCreateImage( cvGetSize(image), 8, 1 );cvPreCornerDetect( image, corners, 3 );cvDilate( corners, dilated_corners, 0, 1 );cvSubS( corners, dilated_corners, corners );cvCmpS( corners, 0, corner_mask, CV_CMP_GE );cvReleaseImage( cvReleaseImage( CornerEigenValsAndVecs计算图像块的特征值

9、和特征向量,用于角点检测 void cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv,int block_size, int aperture_size=3 );image 输入图像. eigenvv 保存结果的数组。必须比输入图像宽 6 倍。 block_size 邻域大小 (见讨论). aperture_size Sobel 算子的核尺寸 (见 cvSobel). 对每个象素,函数 cvCornerEigenValsAndVecs 考虑 block_size block_size 大小的邻域 S(p),然后在邻域上计算

10、图像差分的相关矩阵: 然后它计算矩阵的特征值和特征向量,并且按如下方式(1, 2, x1, y1, x2, y2)存储这些值到输出图像中,其中 1, 2 - M 的特征值,没有排序 (x1, y1) - 特征向量,对 1 (x2, y2) - 特征向量,对 2 CornerMinEigenVal计算梯度矩阵的最小特征值,用于角点检测 void cvCornerMinEigenVal( const CvArr* image, CvArr* eigenval, int block_size, int aperture_size=3 );image 输入图像. eigenval 保存最小特征值的图像

11、. 与输入图像大小一致 block_size 邻域大小 (见讨论 cvCornerEigenValsAndVecs). aperture_size Sobel 算子的核尺寸(见 cvSobel). 当输入图像是浮点数格式时,该参数表示用来计算差分固定的浮点滤波器的个数. 函数 cvCornerMinEigenVal 与 cvCornerEigenValsAndVecs 类似,但是它仅仅计算和存储每个象素点差分相关矩阵的最小特征值,即前一个函数的 min(1, 2) CornerHarris哈里斯(Harris)角点检测 void cvCornerHarris( const CvArr* ima

12、ge, CvArr* harris_responce, int block_size, int aperture_size=3, double k=0.04 );image 输入图像。 harris_responce 存储哈里斯(Harris)检测 responces 的图像。与输入图像等大。 block_size 邻域大小(见关于 cvCornerEigenValsAndVecs 的讨论)。 aperture_size 扩展 Sobel 核的大小(见 cvSobel)。格式. 当输入图像是浮点数格式时,该参数表示用来计算差分固定的浮点滤波器的个数。 k Harris detector fre

13、e parameter. See the formula below. harris 检测器的自由参数。请看如下公式。 The function cvCornerHarris runs the Harris edge detector on image. Similarly to cvCornerMinEigenVal and cvCornerEigenValsAndVecs, for each pixel it calculates 2x2 gradient covariation matrix M over block_sizeblock_size neighborhood. Then,

14、it stores det(M) - k*trace(M)2 to the destination image. Corners in the image can be found as local maxima of the destination image. 函数 cvCornerHarris 对输入图像进行 Harris 边界检测。类似于 cvCornerMinEigenVal 和 cvCornerEigenValsAndVecs。对每个像素,在 block_size*block_size 大小的邻域上,计算其 2*2 梯度共变矩阵(或相关异变矩阵)M。然后,将 det(M) - k*

15、trace(M)2 (此公式有待考证,最后的“2”是否应为平方符号?)保存到输出图像中。输入图像中的角点在输出图像中由局部最大值表示。 FindCornerSubPix精确角点位置 void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,int count, CvSize win, CvSize zero_zone,CvTermCriteria criteria );image 输入图像. corners 输入角点的初始坐标,也存储精确的输出坐标 count 角点数目 win 搜索窗口的一半尺寸。如果 win=(5,

16、5) 那么使用 5*2+1 5*2+1 = 11 11 大小的搜索窗口 zero_zone 死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为 (-1,-1) 表示没有死区。 criteria 求角点的迭代过程的终止条件。即角点位置的确定,要么迭代数大于某个设定值,或者是精确度达到某个设定值。 criteria 可以是最大迭代数目,或者是设定的精确度,也可以是它们的组合。 函数 cvFindCornerSubPix 通过迭代来发现具有子象素精度的角点位置,或如图所示的放射鞍点(radial saddle points)。 子象素级角点定位的实现是基于对向量正交性的观测而实现的,即从中央点 q 到其邻域点 p 的向量和 p 点处的图像梯度正交(服从图像和测量噪声)。考虑以下的表达式: i=DIpiT(q-pi)其中,DIpi 表示在 q 的一个邻域点 pi 处的图像梯度,q 的值通过最小化 i 得到。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 理论文章

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号