机器视觉
记录学习图像过程中笔记
绝尘花遗落
一骑红尘妃子笑,无人知是荔枝来
展开
-
Opencv3笔记33——亚像素级角点检测
1.概述\quad 我们处理图像的目的不是提取用于识别的特征点而是进行几何测量,需要更高的精度。函数goodFeaturesToTrack()只能提供简单的像素坐标,但是有的时候实数坐标值。 亚像素级角点检测的位置在摄像机标定,跟踪并重建摄像机的轨迹,或者重建跟踪目标的三维结构时,是一个基本的测量值。 一个向量和与其正交的向量的点积为0. 其中(a)点p附近的图像时均匀的,其梯度为...原创 2018-08-28 16:08:15 · 1735 阅读 · 1 评论 -
Opencv3笔记32——Shi-Tomasi角点检测
1.角点检测概述Shi-Tomasi算法是Harris算法的改进,此算法最原始定义是将矩阵M的行列式与M的迹相减,再将差值同预定的给定的阈值进行比较。改进的方法是:将两个特征值中较小的一个大于阈值,就是强角点2.确定图像强角点:goodFeaturesToTrack()函数函数原型:void goodFeaturesToTrack(InputArray image,OutputAr...原创 2018-08-27 11:27:39 · 1365 阅读 · 0 评论 -
Opencv3笔记31——Harris角点检测
1. 兴趣点和角点在图像处理和计算机视觉领域,兴趣点,也被称为关键点、特征点。被用于解决物体识别和图像识别,图像匹配、视觉跟踪、三维建模等一系列的问题。 图像特征类型被分为三种: 1. 边缘 2. 角点(感兴趣关键点) 3. 斑点(Blobs)感兴趣区域 角点是个很特殊的存在。如果某一点在任意方向的一个微小变动都会引起灰度很大的变化,我们称之为角点。角点作为图像上的特征点,包含重要的...原创 2018-08-25 14:30:04 · 1493 阅读 · 0 评论 -
Opencv3笔记30——模板匹配
1. 概念和原理模板匹配就是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图,而是通过在输入图像上滑动图像块,对实际图像快和输入图像进行匹配的一种匹配方法。2.模板匹配:matchTemplate()函数函数模板:void matchTemplate(InputArray image, InputArray temp1,OutputArray...原创 2018-08-24 14:36:14 · 1206 阅读 · 0 评论 -
Opencv3笔记29——反向投影
1. 反向投影反向投影就是一种记录给定图像中像素店如何适应直方图模型像素分布方式的一种方法。简单来说就是,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征的方法2. 工作原理对测试图像中的每个像素p(i,j)p(i,j)p(i,j),获取色调数据并找到该色调(hi,j,si,j)(hi,j,si,j)(h_{i,j},s_{i,j})在直方图的bin的位...原创 2018-08-23 16:17:11 · 1465 阅读 · 0 评论 -
Opencv3笔记28——直方图对比
1. 对比要对两个直方图进行比较,首先必须选择一个衡量直方图相似度的对比标准。我们用compareHist()函数来对比两个直方图的相似度,函数的返回值就是d(H1,H2)d(H1,H2)d(H_1,H_2)2. 对比直方图:compareHist()函数c++函数原型double compareHist(InputArray H1,InputArray H2,int met...原创 2018-08-21 19:06:52 · 1314 阅读 · 0 评论 -
Opencv3笔记27——直方图基础
1.概述直方图广泛的应用于很多计算机视觉当中,通过标记帧与帧之间显著的边缘和颜色的统计变化,来检测视频场景的变化。 直方图就是对数据进行统计的一种方法,并且将统计值组织到一系列事先定义好的bin当中。bin其数值就是从数据中计算出的特征统计量,这些数据可以是诸如梯度,方向,色彩或者其他特征。 图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方图,标绘了图像中每个...原创 2018-08-20 11:10:12 · 859 阅读 · 0 评论 -
Opencv3笔记26——图像修补
1. 概念利用那些已经被破坏的区域的边缘,即边缘的颜色和结构,繁殖和混合到损坏的图像,以达到图像修补的目的。2.图像修补:inpaint()函数图像修补函数inpaint函数实现,它可以用来从描述的照片中清除灰尘和划痕,或者从静态图像或视频中去除不需要的物体。函数原型如下:void inpaint(InputArray src,InputArray inpaintMask,Ou...原创 2018-08-18 17:22:18 · 2016 阅读 · 0 评论 -
Opencv3笔记25——分水岭算法
1. 定义分水岭算法(watershed algorithm)可以将图像中的边缘转化为“山脉”,将均匀区域转化为“山谷”,在这方面有助于分割目标。 分水岭算法:是一种基于拓扑理论的数学形态学的分割方法。把图像看作是测地学上的拓扑地貌,图像中的每一个点像素值的灰度值表示该点的海拔高度,每一个局部极小值及其影响的区域称为“集水盆”,集水盆的边界可以看成分水岭。在每一个局部极小值表面刺穿一个小孔,...原创 2018-08-18 16:52:03 · 2542 阅读 · 0 评论 -
Opencv3笔记24——图像的矩
1. 定义大小为M×NM×NM\times N的数字图像f(x,y)f(x,y)f(x,y)的二维(p+1)(p+1)(p+1)阶定义为: mpq=∑x=0M−1∑y=0N−1xpyqf(x,y)mpq=∑x=0M−1∑y=0N−1xpyqf(x,y)m_{pq} = \sum\limits_{x = 0}^{M-1}\sum\limits_{y = 0}^{N-1}x^{p}y^{q}f(...原创 2018-08-15 10:20:17 · 1912 阅读 · 0 评论 -
Opencv3笔记23——多边形包围轮廓
1. 返回外部矩形边界 boundingRect(()函数 函数原型Rect boundingRect(InputArray points)输入的二维的点集2. 寻找最小包围矩形 minAreaRect()函数RotatedRect minAreaRect(InputArray points)输入一个参数为二维的点集3. 寻找最小包...原创 2018-08-14 19:11:00 · 2588 阅读 · 0 评论 -
Opencv3笔记22——寻找物体的凸包
1 凸包凸包(Convex Hull)是一个计算几何(图形学)中常见的概念。给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形。2 寻找凸包:convexHull()函数函数原型void convexHull(InputArray points, OutputArray hull, bool clockwise = false,bool returnPoints = ...原创 2018-08-13 10:26:58 · 2104 阅读 · 1 评论 -
Opencv3笔记21——查找并绘制轮廓
1. 寻找轮廓:findContours()函数2. 绘制轮廓函数drawContours()3. 基础示例程序:轮廓查找4. 综合示例一个轮廓一般对应一系列的点。也就是图像中的一条直线。1. 寻找轮廓:findContours()函数函数原型void findContours(InputOutputArray image,OutputArrayOfAr...原创 2018-08-11 11:31:01 · 15255 阅读 · 1 评论 -
Opencv3笔记20——直方图均衡化
概念和特点均衡化处理后的图像只能是近似均匀分布,均衡化图像的动态范围扩大了。但是本是扩大了量化间隔,量化级别减少。原来灰度不同的像素经过处理后可能变的相同,形成了一片相同的灰度区域实现直方图均衡化:equalizeHist()函数函数原型void equalizaeHist(InputArray src,OutputArray dst)步骤: 1. 计算输入图像直方图HH...原创 2018-08-10 16:53:11 · 1092 阅读 · 0 评论 -
Opencv3笔记19——仿射变换
仿射变换仿射变换(Affine Transformation or Affine Map)又称仿射映射。在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。保持二维图像的“平直性”和“平行性” 一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)再加上一个向量(平移)的形式 常用的三种常见的变换形式旋转,rotation(线性变换)平移,transla...原创 2018-08-10 16:27:43 · 1284 阅读 · 0 评论 -
Opencv3笔记18——重映射
1 重映射的概念2 实现重映射:remap()函数3 基本重映射4 综合示例1 重映射的概念重映射就是把一副图像中某位置的像素放置到另一个图片指定位置的过程,为了完成映射过程,需要获得一些插值为非整数像素的坐标。 g(x,y)=f(h(x,y))g(x,y)=f(h(x,y))g(x,y) = f(h(x,y)) * g()g()g()是目标图像 * f()f()f(...原创 2018-08-10 14:36:19 · 954 阅读 · 0 评论 -
Opencv3笔记17——霍夫变换
1.概述2. Opencv中的霍夫线变换3. 原理3.1 二维直线3.2 点简化3.3 交点3.4 阈值化4.标准霍夫变换:HoughLines()函数5 累计概率霍夫变换:HoughLinesP()函数6 霍夫圆变换7 霍夫梯度法的原理8. 霍夫梯度法的缺点9. 霍夫圆变换:HoughCircles()函数10 综合示例1.概述霍夫变换(H...原创 2018-08-09 14:21:53 · 1462 阅读 · 1 评论 -
Opencv3笔记15——阈值化
1 线性滤波1.1 平滑处理平滑处理(smoothing)也称模糊处理(bluring),常用于减少图像上的噪点或者失真,降低图像分辨率 1.2 图像滤波与滤波器目的:抽出对象的特征作为图像识别的特征模式适应图像处理的要求消除图像数字化混入的噪声要求:不能损坏图像的轮廓及边缘等重要的信息图像清晰视觉效果好 平滑滤波的目的:模糊消除噪声 空间域平滑...原创 2018-08-06 19:25:47 · 813 阅读 · 0 评论 -
Opencv3笔记14——图像金字塔
6 图像金字塔与图像尺寸缩放opencv提供尺寸缩放的方法resize函数pyrUp(),pyrDOwn()函数,对图像进行向上采样和向下采样6.1 关于图像金字塔图像金字塔主要用于图像分割高斯金字塔:向下采样,主要的图像金字塔拉普拉斯金字塔:用来从金字塔底层图像重建上层未采样的图像区别:高斯金字塔用来向下采样图像,拉普拉斯金字塔用来从底层图像向上采样,重建一个...原创 2018-08-08 08:42:20 · 494 阅读 · 0 评论 -
Opencv3笔记13——漫水填充
5 漫水填充漫水填充法是一种用特定的颜色填充算法填充连通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。常用来标记或分离图像的一部分,比便对其进一步的处理或分析,也可以用输入图像获取掩码区域,掩码会加速处理过程。或只处理掩码指定的像素点5.1 floodFill函数第一种int floodFill(InputOutputArray image,Poi...原创 2018-08-07 19:22:40 · 1583 阅读 · 1 评论 -
Opencv3笔记12——形态学滤波(2)
4 形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽4.1 开运算开运算(Opening Operation)其实就是先腐蚀后膨胀的过程dst = open(src,element) = dilate(erode(src,element));开运算用来消除小物体,在纤细处分离物体并且在平滑较大的物体的边界不明显改变其体积4.2 闭运算先膨胀后腐蚀的过程(...原创 2018-08-07 19:20:23 · 1187 阅读 · 0 评论 -
Opencv3笔记11——形态学滤波(1)
3 形态学滤波(1):腐蚀与膨胀3.1 形态学概述数学形态学建立在格论核拓扑学基础上的图像分析学科,基础的运算包括:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,Top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度等膨胀和腐蚀消除噪声分割出独立的图像元素,在图像中连接相邻的元素寻找图像中的明显的极...原创 2018-08-07 19:18:02 · 8050 阅读 · 0 评论 -
Opencv3笔记10——非线性滤波
2 非线性滤波2.2 中值滤波基本思想:用像素点邻域灰度值的中值代替该像素的灰度值,该方法用去除脉冲噪声,椒盐 噪声的同时又能保留图像的边缘细节 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。用中值代替邻域中的点的像素值,从而消除独立的噪声点,对于斑点噪声(speckle noise)和椒盐噪声(salt-and–pepper noise)。2.3 双边...原创 2018-08-07 19:15:47 · 984 阅读 · 0 评论 -
Opencv3笔记9——线性滤波
1 线性滤波1.1 平滑处理平滑处理(smoothing)也称模糊处理(bluring),常用于减少图像上的噪点或者失真,降低图像分辨率 1.2 图像滤波与滤波器目的:抽出对象的特征作为图像识别的特征模式适应图像处理的要求消除图像数字化混入的噪声要求:不能损坏图像的轮廓及边缘等重要的信息图像清晰视觉效果好 平滑滤波的目的:模糊消除噪声 空间域平滑...原创 2018-08-07 19:13:47 · 1498 阅读 · 0 评论 -
Opencv笔记8——XML和YAML文件
XML和YAML文件XML(eXtensible Markup Lauguage)是一种元标记语言,所谓的“元标记”就是开发者可以根据自身需要定义自己的标记。XML时一种语义/结构化语言,它描述了文档的结构和语义 YAML(Ain’t a Markup Language)强调这种语言是以数据为中心的。YAML是一种可读性高,用来表示资料序列的格式FileStorage 类操作文件的使...原创 2018-08-07 19:02:11 · 870 阅读 · 0 评论 -
Opencv3笔记7——图像对比度和FFT
图像对比度,亮度值调整理论公式 g(x)=a×f(x)+bg(x)=a×f(x)+bg(x) = a\times f(x) +bf(x)表示源图像像素g(x)表示输出图像像素aaa表示增益b表示偏置,用来控制图像的亮度#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.h...原创 2018-08-07 19:01:40 · 3669 阅读 · 0 评论 -
Opencv3笔记6——ROI区域和线性混合
感兴趣区域ROIROI(region of interest) 感兴趣的区域 定义: 1. 一种是使用矩形表示区域Rect,指定矩形的左上角坐标和矩形的长宽 2. 指定感兴趣行或列的范围(Range),Range是指从起始索引到终止索引的一连续序列bool ROI_AddImage(){ Mat srcImage1 = imread("dota_p...原创 2018-08-07 19:00:31 · 697 阅读 · 0 评论 -
Opencv3笔记5——访问图像中的元素
访问图像中像素LUT函数:Look up table 操作operationsOnArrays:LUT()<lut>函数来进行批量图像元素查找,扫描和操作图像计时函数getTickCount() 和 getTickFrequecny() 1. getTickCount() 函数返回CPU自某事情以来走过的始终周期 2. getTickFrequency(...原创 2018-08-01 14:49:45 · 1120 阅读 · 0 评论 -
Opencv3笔记4——数据结构与基本绘图
1. 点的表示:Point类typedef Point_<int> Point2i;typedef Point2i Point;typedef Point_<float> Point2f2. 颜色的表示:Scalar类Scalar 表示具有4个元素的数组,Scalar(a, b, c):c 红色,b绿色,c蓝色3. 尺寸size()类type...原创 2018-08-01 14:15:26 · 594 阅读 · 0 评论 -
Opencv3笔记3——highGUI图形用户界面初步
1. 图像的载入imread()函数Mat imread(const string filename, intflags = 1);(1) filename支持的格式类型Windows位图 .bmp,.dibJPEG文件:.jpeg,.jpg,*.jpe JPEG2000文件:*.jp2PNG图片:*.png便携文件格式:*.pbm,*.pgm,*.ppm Sun r...原创 2018-08-01 14:07:56 · 8778 阅读 · 0 评论 -
Opencv3笔记2——初步接触
初步了解一下Opencv的使用方法,具体的时候和原理在后面会由更新图像显示#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){ // 读入一张图片 Mat img =原创 2018-07-28 21:09:26 · 553 阅读 · 1 评论 -
Opencv3笔记1+Visual Studio 2015安装过程
下载opencv软件https://opencv.org/releases.html解压opencv,记住安装的位置解压后的文件 build的文件中的内容,其中只有64为的文件,没有x86 source中的文件 配置电脑环境变量 配置visual studio 2015 新建一个新的空白的win32控制台程序,打开属性管理器,新建x64的new propetr...原创 2018-07-28 20:59:47 · 546 阅读 · 0 评论 -
图像处理——图像预处理
图像预处理1. 像素亮度变换像素亮度变换修改像素的亮度,变换只取决与各像素自身的性质。1.1 位置相关的亮度校正在理想的情况下,图像获取和数字化设备的灵敏度不应该与图像的位置有关,实际情况下是不对的。光线离光轴越远透镜对它削弱越多。 如果退化具有系统性,就可以通过亮度校正加以抑制。一个乘性的错误系数e(i,j)e(i,j)e(i,j)描述相对于理想的等同传递函数...原创 2018-02-10 19:54:06 · 14929 阅读 · 0 评论 -
图像处理——图像及其表达与性质
若干概念图像数字化1 采样2 量化3 数字图像性质31 数字图像的度量和拓扑序列2 直方图3 熵4 图像的视觉感知5 图像的品质6 图像中的噪声彩色图像1 色彩物理学2 人所感知的色彩3 彩色空间1 若干概念图像(image):我们通常在直观上理解其意义,例如人类眼睛视网膜上的图像或者TV摄像机抓取的图像。亮度(bri...原创 2018-02-08 12:19:42 · 4651 阅读 · 1 评论 -
图像处理——图像及其数学与物理背景
图像及其数学与物理背景1 基础1.1 线性线性:这与矢量(线性)空间(vector(linear) space)有关,其中常用矩阵代数。允许矢量空间的一个新元素可以表示为已有元素与系数(标量,通常是实数)乘积的和。叠加原理:输入的和(分别地,乘)产生各自输入的和(分别地,乘)。1.2 狄拉克(Dirac)分布和卷积狄拉克分布(Dirac distribution):δ(x...原创 2018-02-08 12:31:56 · 913 阅读 · 0 评论 -
图像处理——图像分析的数据结构
图像分析的数据结构1 图像数据表示的层次四个层次:图标图像(iconic images):最底层的表示,有含有原始数据的图像组成,原始数据也就是像素亮度数据的整数矩阵。为了突出对后续处理重要 的图像的某些方面,需要进行预处理(滤波或边缘锐化)分割图像(segmented images):为可能属于同一物体的区域。几何表示(geometric representation):保存2...原创 2018-02-08 20:01:33 · 8918 阅读 · 0 评论