随笔分类 - 12、opencv基础
摘要:什么是图像分割 图像分割(Image Segmentation)是图像处理最重要的处理手段之一 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。 根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans 距离变换常见算法有两种 - 不断膨胀/腐蚀得到 - 基于倒角距离 分水岭变换常见的算法 - 基于浸泡理论
阅读全文
摘要:点多边形测试 测试一个点是否在给定的多边形内部,边缘或者外部 double pointPolygonTest( InputArray contour, // 输入的轮廓 Point2f pt, // 测试点 bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示在边界上,-1表示在外部,true返回实际距离 ) 步骤 构建一张400x400大小的图片, Ma
阅读全文
摘要:矩的概念介绍 1、几何矩 2、中心距 3、中心归一化距 4、图像中心Center(x0, y0)
阅读全文
摘要:基于RDP算法实现,目的是减少多边形轮廓点数 approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed) cv::boundingRect(InputArray points)//得到轮廓周围最小矩形左上交点坐标和右下角点坐标,绘制一个矩形 cv::minAreaRect(InputArr
阅读全文
摘要:概念介绍 什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。 正式定义:包含点集合S中所有点的最小凸多边形称为凸包 Graham扫描算法 首先选择Y方向最低的点作为起始点p0 从p0开始极坐标扫描,依次添加p1….pn(排序顺序是根据极坐标的角度大小,逆时针方向) 对每个点pi来说,如果添加pi点到凸包中导致一个左转向(逆时针方法)则添加该点
阅读全文
摘要:轮廓发现(find contour) 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。 所以边缘提取的阈值选定会影响最终轮廓发现结果 //发现轮廓 cv::findContours( InputOutputArray binImg, // 输入图像,非0的像素被看成1,0的像素值保持不变,8-bit OutputArrayOfArrays contours, // 全部发现的轮廓对象 Outp
阅读全文
摘要:OpenCV中提供了六种常见的匹配算法如下: 1、计算平方不同 2、计算相关性 3、计算相关系数 模板匹配介绍 – 匹配算法介绍 1、计算归一化平方不同 2、计算归一化相关性 3、计算归一化相关系数
阅读全文
摘要:直方图反向投影(Back Projection) 反向投影是反映直方图模型在目标图像中的分布情况。 简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型。 反向投影 – 步骤 1.建立直方图模型 2.计算待测图像直方图并映射到模型中 3.从模型反向计算生成图像 实现步骤与相关API 加载图片imread 将图像从RGB色彩空间转换到HSV色彩空间c
阅读全文
摘要:直方图比较方法-相关性计算(CV_COMP_CORREL) 直方图比较方法-卡方计算(CV_COMP_CHISQR) 直方图比较方法-十字计算(CV_COMP_INTERSECT) 直方图比较方法-巴氏距离计算(CV_COMP_BHATTACHARYYA )
阅读全文
摘要:直方图概念 上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。 这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的.
阅读全文
摘要:直方图均衡化 图像直方图: 是指对整个图像像在灰度范围内的像素值是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。 直方图反映了图像灰度的分布情况。是图像的统计学特征。 直方图均衡化 通过上一课中的remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布, 然后在得到映射后的像素值即可。 equalizeHist( InputAr
阅读全文
摘要:像素重映射(cv::remap) 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。
阅读全文
摘要:霍夫圆检测原理 从平面坐标到极坐标转换三个参数 假设平面坐标的任意一个圆上的点,转换到极坐标中: 处有最大值,霍夫变换正是利用这个原理实现圆的检测。
阅读全文
摘要:霍夫直线变换介绍 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换 对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间,可以得到r的大小 属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,
阅读全文
摘要:Canny算法介绍 五步 in cv::Canny 高斯模糊 - GaussianBlur 灰度转换 - cvtColor 计算梯度 – Sobel/Scharr 非最大信号抑制 高低阈值输出二值图像 Canny算法介绍-高低阈值输出二值图像 T1, T2为阈值, 凡是高于T2的都保留, 凡是小于T1都丢弃, 从...
阅读全文
摘要:拉普拉斯算子(Laplance operator)
阅读全文
摘要:卷积边界问题 图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。 处理边缘 在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘, 这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。 openCV中默认的处理方法是: BO
阅读全文
摘要:卷积概念 1、卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。 2、Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。 3、把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。 常见
阅读全文
摘要:阈值类型一阈值二值化(threshold binary) 阈值类型一阈值反二值化(threshold binary Inverted) 阈值类型一截断 (truncate) 阈值类型一阈值取零 (threshold to zero) 阈值类型一阈值反取零 (threshold to zero inv
阅读全文