Opencv图像处理函数及其应用

更新时间:2023-07-20 18:58:01 阅读: 评论:0

搜索文档搜索论坛■
Open Source Computer Vision Library
论坛
商业
专题
讲座
例程
安装
常见问题
函数说明
Cv图像处理
Wikipedia,自由的百科全书
注意:本章描述图像处理和分析的一些函数。大多数函数都是针对两维象素数组的,这里,我们称这些数组为“图像”,但是它们不一定非得是IplImage 结构,也可以是CvMat或者CvMatND结构。
目录
1 梯度、边缘和角点
1.1 Sobel
1.2 Laplace
1.3 Canny
1.4 PreCornerDetect
1.5 CornerEigenValsAndVecs
ps填色快捷键
1.6 CornerMinEigenVal
1.7 CornerHarris
1.8 FindCornerSubPix
1.9 GoodFeaturesToTrack
2 采样、插值和几何变换
2.1 InitLineIterator
2.2 SampleLine
2.3 GetRectSubPix
2.4 GetQuadrangleSubPix
2.5 Resize
2.6 WarpAffine
2.7 GetAffineTransform
2.8 2DRotationMatrix
2.9 WarpPerspective
2.10 WarpPerspectiveQMatrix
2.11 GetPerspectiveTransform
2.12 Remap
2.13 LogPolar
3 形态学操作
3.1 CreateStructuringElementEx
3.2 ReleaStructuringElement
3.3 Erode
3.4 Dilate
3.5 MorphologyEx
4 滤波器与色彩空间变换
4.1 Smooth
4.2 Filter2D
4.3 CopyMakeBorder
4.4 Integral
4.5 CvtColor
4.6 Threshold
霸道的近义词4.7 AdaptiveThreshold
5 金字塔及其应用
5.1 PyrDown
5.2 PyrUp
6 连接部件
6.1 CvConnectedComp
6.2 FloodFill
6.3 FindContours
6.4 StartFindContours
6.5 FindNextContour
6.6 SubstituteContour
6.7 EndFindContours
6.8 PyrSegmentation
6.9 PyrMeanShiftFiltering
6.10 Watershed
7 图像与轮廓矩
7.1 Moments
7.2 GetSpatialMoment
7.3 GetCentralMoment
7.4 GetNormalizedCentralMoment
7.5 GetHuMoments
8 特殊图像变换
8.1 HoughLines
8.2 HoughCircles
8.3 DistTransform
8.4 Inpaint
9 直方图
波澜壮阔反义词
9.1 CvHistogram
9.2 CreateHist
9.3 SetHistBinRanges
蛋黄焗虾
9.4 ReleaHist
9.5 ClearHist
9.6 MakeHistHeaderForArray
9.7 QueryHistValue_1D
9.8 GetHistValue_1D
9.9 GetMinMaxHistValue
9.10 NormalizeHist
9.11 ThreshHist
9.12 CompareHist
9.13 CopyHist
9.14 CalcHist
9.15 CalcBackProject
9.16 CalcBackProjectPatch
9.17 CalcProbDensity
我的宁夏
9.18 EqualizeHist
10 匹配
10.1 MatchTemplate
10.2 MatchShapes
10.3 CalcEMD2
梯度、边缘和角点
Sobel
使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分
void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );
src
输入图像.
dst
输出图像.
xorder
x 方向上的差分阶数
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 通过对图像用相应的内核进行卷积操作来计算图像差分:
由于Sobel 算子结合了 Gaussian 平滑和微分,所以,其结果或多或少对噪声有一定的鲁棒性。通常情况,函数调用采用如下参数 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1,
aperture_size=3) 来计算一阶 x- 或 y- 方向的图像差分。第一种情况对应:
核。
第二种对应:
或者
核的选则依赖于图像原点的定义 (origin 来自 IplImage 结构的定义)。由于该函数不进行图像尺度变换,
所以和输入图像(数组)相比,输出图像(数组)的元素通常具有更大的绝对数值(译者注:即像素的位深)。为防止溢出,当输入图像是 8 位的,要求输出图像是 16 位的。当然可以用函数cvConvertScale 或 cvConvertScaleAbs 把运算结果(dst)转换为 8 位的。除了8-位图像,函数也接受32-位浮点数图像。所有输入和输出图像都必须是单通道的,并且具有相同的图像尺寸或者ROI尺寸。
Laplace
计算图像的 Laplacian 变换
void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
src
输入图像.
dst
输出图像.
aperture_size
核大小 (与 cvSobel 中定义一样).
函数 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 );
image
单通道输入图像.
edges
单通道存储边缘的输出图像
threshold1
第一个阈值
threshold2
第二个阈值
aperture_size
Sobel 算子内核大小 (见 cvSobel).
函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。
注意事项:cvCanny只接受单通道图像作为输入。
外部链接:经典的canny自调整阈值算法的一个opencv的实现见在OpenCV中自适应确定canny算法的分割门限 (blog.chinaunix/u/30231/showart_233944.html)
PreCornerDetect
计算用于角点检测的特征图,
void cvPreCornerDetect( 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);
IplImage* corner_mask = cvCreateImage( cvGetSize(image), 8, 1 );
cvPreCornerDetect( image, corners, 3 );
cvDilate( corners, dilated_corners, 0, 1 );
cvSub( corners, dilated_corners, corners );
cvCmpS( corners, 0, corner_mask, CV_CMP_GE );
cvReleaImage( &corners );
cvReleaImage( &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).
对每个象素,函数 cvCornerEigenValsAndVecs 考虑 block_size × block_size 大小的邻域 S(p),然后在邻域上计算图像差分的相关矩阵:

本文发布于:2023-07-20 18:58:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1107427.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   输入   差分   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图