《opencv中文手册.doc》由会员分享,可在线阅读,更多相关《opencv中文手册.doc(73页珍藏版)》请在金锄头文库上搜索。
1、目录 1 梯度、边缘和角点 o 1.1 Sobel o 1.2 Laplace o 1.3 Canny o 1.4 PreCornerDetect o 1.5 CornerEigenValsAndVecs o 1.6 CornerMinEigenVal o 1.7 CornerHarris o 1.8 FindCornerSubPix o 1.9 GoodFeaturesToTrack 2 采样、插值和几何变换 o 2.1 InitLineIterator o 2.2 SampleLine o 2.3 GetRectSubPix o 2.4 GetQuadrangleSubPix o 2.5
2、Resize o 2.6 WarpAffine o 2.7 GetAffineTransform o 2.8 2DRotationMatrix o 2.9 WarpPerspective o 2.10 WarpPerspectiveQMatrix o 2.11 GetPerspectiveTransform o 2.12 Remap o 2.13 LogPolar 3 形态学操作 o 3.1 CreateStructuringElementEx o 3.2 ReleaseStructuringElement o 3.3 Erode o 3.4 Dilate o 3.5 MorphologyEx
3、 4 滤波器与色彩空间变换 o 4.1 Smooth o 4.2 Filter2D o 4.3 CopyMakeBorder o 4.4 Integral o 4.5 CvtColor o 4.6 Threshold o 4.7 AdaptiveThreshold 5 金字塔及其应用 o 5.1 PyrDown o 5.2 PyrUp 6 连接部件 o 6.1 CvConnectedComp o 6.2 FloodFill o 6.3 FindContours o 6.4 StartFindContours o 6.5 FindNextContour o 6.6 SubstituteConto
4、ur o 6.7 EndFindContours o 6.8 PyrSegmentation o 6.9 PyrMeanShiftFiltering o 6.10 Watershed 7 图像与轮廓矩 o 7.1 Moments o 7.2 GetSpatialMoment o 7.3 GetCentralMoment o 7.4 GetNormalizedCentralMoment o 7.5 GetHuMoments 8 特殊图像变换 o 8.1 HoughLines o 8.2 HoughCircles o 8.3 DistTransform o 8.4 Inpaint 9 直方图 o
5、9.1 CvHistogram o 9.2 CreateHist o 9.3 SetHistBinRanges o 9.4 ReleaseHist o 9.5 ClearHist o 9.6 MakeHistHeaderForArray o 9.7 QueryHistValue_1D o 9.8 GetHistValue_1D o 9.9 GetMinMaxHistValue o 9.10 NormalizeHist o 9.11 ThreshHist o 9.12 CompareHist o 9.13 CopyHist o 9.14 CalcHist o 9.15 CalcBackProje
6、ct o 9.16 CalcBackProjectPatch o 9.17 CalcProbDensity o 9.18 EqualizeHist 10 匹配 o 10.1 MatchTemplate o 10.2 MatchShapes o 10.3 CalcEMD2 梯度、边缘和角点Sobel使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );src 输入图像. dst 输出图像. xorder x 方向
7、上的差分阶数 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 通过对图像用相应
8、的内核进行卷积操作来计算图像差分:由于Sobel 算子结合了 Gaussian 平滑和微分,所以,其结果或多或少对噪声有一定的鲁棒性。通常情况,函数调用采用如下参数 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 来计算一阶 x- 或 y- 方向的图像差分。第一种情况对应:核。第二种对应:或者核的选则依赖于图像原点的定义 (origin 来自 IplImage 结构的定义)。由于该函数不进行图像尺度变换,所以和输入图像(数组)相比,输出图像(数组)的元素通常具有更大的绝对数值(译者注:即
9、像素的位深)。为防止溢出,当输入图像是 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 核大小 (与 cvSobel 中定义
10、一样). 函数 cvLaplace 计算输入图像的 Laplacian变换,方法是先用 sobel 算子计算二阶 x- 和 y- 差分,再求和:对 aperture_size=1 则给出最快计算结果,相当于对图像采用如下内核做卷积:类似于 cvSobel 函数,该函数也不作图像的尺度变换,所支持的输入、输出图像类型的组合和cvSobel一致。Canny采用 Canny 算法做边缘检测void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 )
11、;image 单通道输入图像. edges 单通道存储边缘的输出图像 threshold1 第一个阈值 threshold2 第二个阈值 aperture_size Sobel 算子内核大小 (见 cvSobel). 函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。 注意事项:cvCanny只接受单通道图像作为输入。 外部链接:经典的canny自调整阈值算法的一个opencv的实现见在OpenCV中自适应确定canny算法的分割门限 PreCo
12、rnerDetect计算用于角点检测的特征图,void cvPreCornerDetect( const CvArr* image, CvArr* corners, int aperture_size=3 );image 输入图像. corners 保存候选角点的特征图 aperture_size Sobel 算子的核大小(见cvSobel). 函数 cvPreCornerDetect 计算函数其中D表示一阶图像差分, 表示二阶图像差分。 角点被认为是函数的局部最大值:/ 假设图像格式为浮点数IplImage* corners = cvCloneImage(image);IplImage* d
13、ilated_corners = cvCloneImage(image);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( &corners );c
14、vReleaseImage( &dilated_corners );CornerEigenValsAndVecs计算图像块的特征值和特征向量,用于角点检测void cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv, int block_size, int aperture_size=3 );image 输入图像. eigenvv 保存结果的数组。必须比输入图像宽 6 倍。 block_size 邻域大小 (见讨论). aperture_size Sobel 算子的核尺寸(见 cvSobel). 对每个象素,函数 cvCor
15、nerEigenValsAndVecs 考虑 block_size block_size 大小的邻域 S(p),然后在邻域上计算图像差分的相关矩阵:然后它计算矩阵的特征值和特征向量,并且按如下方式(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 输入图像. e