main(int argc,charargv[],char**env,第一个参数,int类型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在Vsiual Studio中默认值为1。第二个参数,char类型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。第三个参数是char **类型的env,为字符串数组。
方框滤波 -boxblur函数
均值滤波-blur函数
高斯滤波-GaussianBlur函数
中值滤波-medianBlur函数
双边滤波-bilateralFilter
形态学:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,Top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度。
腐蚀 erode
膨胀dilate
开运算:先腐蚀后膨胀
闭运算:先膨胀后腐蚀
形态学梯度:膨胀图与腐蚀图之差,保留轮廓边缘
顶帽:原图与开运算结果图之差。
黑帽:闭运算的结果图与原图之差。
修改morphologyEx的第三个参数,可以进行其他的形态学操作。
漫水填充:使用特定的颜色填充连通区域。floodFill函数。一个版本带mask,一个不带。
pyrUp 与pyrDown 对图像向上向下采样。
resize函数将图像放大或者缩小,最直接的方法。
高斯金字塔:用来向下采样。拉普拉斯金字塔:用来从金字塔低层图像重建上层。
阈值化
固定阈值操作:Threshold()函数
自适应阈值操作:adaptiveThreshold()函数。
边缘检测步骤:滤波,增强,检测。
Candy算子:最优的边缘检测算法。
高阶用法:
sobel算子:主要用于边缘检测的离散微分算子,用来计算图像灰度函数的近似梯度。
Sobel函数使用扩展的Sobel算子,计算一阶、二阶、三阶或混合图像差分。
Laplacian算子:n维欧几里得空间的一个二阶微分算子。定义为梯度的散度div。
Scharr滤波器:配合Sobel算子的运算而存在。使用Scharr滤波器计算x或y方向的图像差分。
快速准确地检测出直线或者圆。从图像中识别几何形状的基本方法之一。最基本的是从黑白图像中检测直线。(特征提取技术)在opencv中分为霍夫线变换与霍夫圆变换。
霍夫线变换(标准霍夫变换,多尺度霍夫变换,累计概率霍夫变换)
输入是边缘二值图像。
霍夫圆变换 HoughCricles()
通过霍夫梯度法的方法解决圆变换的问题。
把一幅图像的某像素放置到另一个图片指定位置的过程。
remap()函数
仿射变换
一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。常见的有:旋转,平移,缩放。
warpAffine()函数,做一些简单的重映射。
getRotationMatrix2D()函数,用于计算二维旋转变换矩阵。变换将旋转中心映射到它自身。
凸包
给定二维平面上的点集,将最外围的点连接起来构成的凸多边形。
寻找凸包 convexHull()函数
用多边形来表示轮廓
返回外部矩形 boundingRect()函数
寻找最小外围矩形 minAreaRect()函数
寻找最小包围原型 minEnclosingCircle()函数
用椭圆拟合二维点集 fitEllipse()函数
逼近多边形曲线 approxPolyDP()函数
矩的计算 moments()函数
可以计算形状的重心、面积,主轴和其他形状特征
计算轮廓面积 contourArea() 函数
计算整个轮廓或部分轮廓的面积
计算轮廓长度 arcLength()函数
将图像边缘转化为“山脉”,将均匀区域转化为“山谷”,有助于分割目标。
watershed()函数
被破坏的区域不是太大,并且在被破坏区域边缘包含足够多的纹理和颜色,那么图像修补技术可以很好地恢复图像。
inpaint()函数
计算直方图 calcHist()函数,用于计算一个或者多个阵列的直方图。
寻找最值 minMaxLoc()函数,找到全局最小值与最大值。(第二册p134)
直方图对比 compareHist()函数
第三个参数是选择距离的标准,有4种方法。(示例程序第二册p140)
就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征的方法。多用于在输入图像中查找与特定图像最匹配的点或者区域,即定位模板图像出现在输入图像的位置。
计算反向投影 calcBackProject()函数
通道复制 mixChannels()函数
模板匹配 matchTemplate()函数
图像特征分为三类:边缘、角点(感兴趣关键点)和斑点(感兴趣区域)。
某一点在任意方向的一个微小变动都会引起灰度很大的变化,称之为角点。
角点的另外描述:
harris角点检测是一种基于灰度图像的角点提取算法,稳定性高,运算速度较慢,角点信息有丢失和位置偏移现象。
cornerHarris()函数
harris角点检测与绘制实例(第二册P165)
Shi-Tomasi角点检测(对harris的改进)
确定图像强角点 goodFeaturesToTrack()函数
goodFeaturesToTrack()函数可用来初始化一个基于点的对象跟踪操作。(示例程序P171)
进行几何测量,需要更高精度。需要坐标值,不是整数值。
寻找亚像素角点 cornerSubPix()函数
是尺度不变特征变换算法SIFT的加速版,标准的SURF比SIFT快好几倍。surf采用的是海森矩阵行列式近似值图像。
绘制关键点函数 drawKeypoints()函数
KeyPoint类 ,用于表示特征点
示例程序第二册P187
SURF算法为每个检测到的特征定义了位置和尺度,尺度值用于定义围绕特征点的窗口大小。
使用SURF进行特征点描述的主要是drawMatches方法和BruteForceMatcher类的应用。
drawMatches()函数
用于绘制相匹配的两个图像的关键点。
示例程序:SURF特征提取
结果为一个Mat矩阵,行数与特征点向量中的元素个数是一致的。每行都是一个N维描述子的向量。
示例程序第二册P193
使用FLANN进行特征点匹配
快速高效匹配(快速最邻近逼近搜索函数库)
DescriptorMatcher::match方法。
示例程序第二册P196
在FLANN特征匹配的基础上,可利用Homography映射找出已知物体。
进行向量透视矩阵变换 perspectiveTransform()函数
示例程序第二册P206
是brief的改进版
brief就是在特征点附近随机选取若干点对,将这些点的灰度值的大小组合成一个二进制串,将二进制串作为该特征点的特征描述子。ORB没有解决尺度不变性,只追求速度,一般应用在实时的视频处理中。ORB的速度是SIFT的100倍,是SURF的10倍。
示例程序第二册P211