OpenCV
文章平均质量分 63
chuhang_zhqr
这个作者很懒,什么都没留下…
展开
-
特征提取算法--Surf
本文参考了 http://blog.csdn.net/a784763307/article/details/17289251 http://blog.csdn.net/yujiflying/article/details/8203511 http://blog.csdn.net/cxp2205455256/article/details/41311013 SURF意指 加速的具有鲁棒性的特征转载 2016-03-16 20:57:12 · 11767 阅读 · 0 评论 -
OpenCV_(1):Mat结构的应用
Mat类是OpenCV的C++接口的图像存储类,不必像C接口的IplImage那样要创建释放内存,不用担心内存释放问题,上手快。Mat类由两部分组成:矩阵头(矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针。因为大图像的复制会降低程序的运行速度,为了解决这个问题,引入计数机制。思路是让每个Mat对象有自己的信息头,但共享同一个矩原创 2016-06-30 15:58:54 · 987 阅读 · 0 评论 -
OpenCV_(2):常用数据结构和函数
首先介绍几个常用的结构体:Point2f p(6,2); //二维点Point3f p3f(8,2,0); //三维点vector<float> v;vector<Point2f> Points(20);接下来就是几个常用的类和常用函数:Point:二维点,三维点等Scalar:颜色的表示,RGBA四个元素Size:尺寸的表示,宽和高Rect:矩形的表示,(x,y,width,heig原创 2016-06-30 16:51:22 · 2787 阅读 · 0 评论 -
OpenCV_(3):编程辅助函数
这里介绍一些OpenCV编程中常用的一些辅助函数及应用。 1:在编程时,要调节一些参数的设置,重复编译函数很无聊,就要加入一些滑动条以进行参数设置。 创建滑动条:createTrackbar()int createTrackbar(const string& trackbarname,const string& winname,int* value,int count,TrackbarCallb原创 2016-06-30 22:31:18 · 2163 阅读 · 2 评论 -
OpenCV_(4):输入输出XML和YAML文件
XML是一种可扩展标识语言。YAML是可读性高,用来表达资料序列的格式,是XML的升级。在OpenCV编程时,常用XML作为数据输入,YAML作为数据输出,可以存储和载入任意复杂的数据结构,包括周边的数据结构,以及各种原始数据。 写入或者读取数据到XML或YAML文件中。 (1)实例化一个FileStorage类的对象,用默认带参数的构造函数完成初始化,或者用FileStorage::open(原创 2016-06-30 22:55:07 · 778 阅读 · 0 评论 -
OpenCV_(5):core组件常用函数
OpenCV中包含core组件,这个大组件包含一些图像的基本操作,简述下几个模块: 1:操作图像像素:有三种方式 a. 指针访问:C操作符[],一般就是*data[],速度最快 b. 迭代器iterator, Mat_<Vec3b>::iterator it = outputImage.begin<Vec3b>();//初始位置迭代器 Mat_<vec3原创 2016-07-01 12:55:25 · 1233 阅读 · 0 评论 -
立体匹配中的全局匹配(一)动态规划笔记
近来研究立体匹配,从入门开始,先学习一些基本的算法思想。 立体匹配算法中,全局匹配是一个很重要的部分,利用图像的全局约束信息,对局部图像的模糊不敏感,它的计算代价很高。全局匹配算法通过构建全局能量函数,然后通过优化方法最小化全局能量函数以求得致密视差图。全局匹配算法一般有动态规划、置信传播、模拟退火、图割法、遗传学等,这里首先介绍动态规划,也是从一些论文中提取的思想,可能有不对的地方,望指正。动态原创 2016-09-19 16:17:38 · 28915 阅读 · 14 评论 -
Mastering Opencv ch4:SFM详解(一)
从运动中恢复结构以便能更好的通过摄像机移动来提取图像几何结构。在书中为了使用单目相机,一个离散且稀疏的视频帧集合,而不是连续的视频流。这在后面两两循环组合配对提供了方便性。主要内容: 1:从两幅图像估计摄像机的运动姿态。 2:重构场景 3:从视图中重构 4:重构细化 5:可视化三维点云I:假定使用一个标定过的摄像机——一个先前标定过的摄像机。前面的博客也提到如何进行相机标定。因此,我们假定原创 2016-10-27 16:00:43 · 8063 阅读 · 3 评论 -
Mastering Opencv ch4:SFM详解(二)
前文分析了如何进行特征检测匹配,接下来分析如何求解摄像机矩阵。I:求解基础矩阵首先介绍两个代码段,关于关键点和Point2f相互转化的函数void KeyPointsToPoints(const vector<KeyPoint>& kps, vector<Point2f>& ps) { ps.clear(); for (unsigned int i=0; i<kps.size();原创 2016-10-27 22:22:10 · 3818 阅读 · 5 评论 -
Mastering Opencv ch4:SFM详解(三)
前面已经利用分解本质矩阵E得到两幅图像的姿态R1,R2,t1,t2. 如何把这四个值组合成P1,得到正确的解,接下来就要分析。1:利用三维重构求取在摄像机前面的重构点的所占比,得出最高占比的那个P1,就是要求得解。P1 = Matx34d(R1(0,0), R1(0,1), R1(0,2), t1(0), R1(1,0), R1原创 2016-10-28 00:09:13 · 4195 阅读 · 2 评论 -
使用Opencv保存视频
使用相机或图片集,读取后保存成视频,可以调用opencv内部API,蛮简单的,主要就是VideoWriter类的使用;这里简单记录下,方便查询。#include <opencv2/opencv.hpp>#include <iostream>#include <stdio.h>using namespace cv;using namespace std;int main(int, char*原创 2016-11-15 15:38:41 · 2233 阅读 · 0 评论 -
相机标定原理
之前写过一篇文章怎么使用Opencv进行相机标定,但没有详叙原理,这里从原理上面入手,分析下标定算法原理。1:相机成像原理 首先了解四个坐标系: 像素平面坐标系(u,v)、像平面坐标系(图像物理坐标第(x,y)、相机坐标系(Xc,Yc,Zc)和世界坐标系(Xw,Yw,Zw) 图像像素坐标系(u,v)是以图像左上角为原点,以像素为单位的直角坐标系,u,v表示像点所在的行和列。 图像物理坐标系(原创 2016-12-12 13:37:21 · 21190 阅读 · 3 评论 -
基于Opencv的几种立体匹配算法+ELAS
同http://blog.csdn.net/chuhang_zhqr/article/details/51179881类似,采用 这两个经典的图片进行测试。关于BM和SGBM以及VAR的参数设置请参考 晨宇思远本文代码基于opencv2.4.9 本文源码地址在我的CSDN代码资源: http://download.csdn.net/detail/chuhang_zhqr/97037630原创 2016-12-06 22:55:54 · 13863 阅读 · 6 评论 -
几种典型的立体匹配算法
使用左右两张图片,计算深度图。一下几种算法代码参考 http://www.360doc.com/content/13/0129/11/11533449_263014896.shtml,经验证可行。并得到一下的深度图,貌似DP算法比较快并且效果还蛮好的。 SAD算法#include<iostream> #include<cv.h> #include<highgui.h> using转载 2016-04-18 15:21:11 · 29667 阅读 · 11 评论 -
特征提取算法--Sift
SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,它在空间尺度中对一副图寻找极值点,并提取出其位置、尺度、旋转不变量等描述子得到特征并进行图像特征点匹配,用来侦测与描述影像中的局部性特征。 它是基于物体上的一些局部特征SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;使用 S转载 2016-03-14 22:27:19 · 53822 阅读 · 4 评论 -
特征提取算法--ORB
本文主要参考了一下博客: http://blog.csdn.net/hujingshuang/article/details/46984411 http://blog.csdn.net/stellar0/article/details/8741676 http://blog.sina.com.cn/s/blog_567a58300101iarh.htmlORB算法的论文来自”ORB: an e转载 2016-03-17 16:56:04 · 14929 阅读 · 5 评论 -
大津法---OTSU算法
OPENCV的二值化操作中,有一种“大津阈值处理”的方法,使用函数cvThreshold(image,image2,0,255,CV_THRESH_OTSU) 实现,该函数就会使用大律法OTSU得到的全局自适应阈值来进行二值化图片,而参数中的threshold不再起作用。 OTSU算法 OTSU算法也称最大类间差法,有时也称之为大津算法,由大津于1979年提出,被认为是图像分割中阈值选取的最佳算转载 2016-02-25 11:23:40 · 1296 阅读 · 0 评论 -
RANSAC随机抽样一致算法
本文主要参考了http://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html http://grunt1223.iteye.com/blog/961063 http://www.cnblogs.com/xrwang/p/SampleOfRansac.html http://www.cnblogs.com/yin52133/archi转载 2016-03-22 00:45:49 · 7688 阅读 · 0 评论 -
特征匹配及其优化
本文转载http://www.cnblogs.com/wangguchangqing/p/4333873.html在OpenCV2简单的特征匹配中对使用OpenCV2进行特征匹配的步骤做了一个简单的介绍,其匹配出的结果是非常粗糙的,在这篇文章中对使用OpenCV2进行匹配的细化做一个简单的总结。主要包括以下几个内容: DescriptorMatcher DMatcher KNN匹配转载 2016-03-22 01:01:17 · 4854 阅读 · 0 评论 -
计算机视觉中的ICP算法
本文主要参考了 http://www.cnblogs.com/yin52133/archive/2012/07/21/2602562.html http://blog.sina.com.cn/s/blog_8c84cf510100yv36.html http://blog.csdn.net/wangjie0377/article/details/7098446ICP(Iterative Clo转载 2016-03-22 14:55:40 · 4319 阅读 · 0 评论 -
Bundle Adjustment 原理推导
参考 摄影测量学 武汉大学出版社 金为铣 2001年4月 P23J1718 光束法平差模型: 在解析摄影测量中,将外方位元素(局外点)和模型点坐标(局内点)的计算放在一个整体内进行,此时称其为光束法。光束法平差是以共线方程式作为数学模型,像点的像平面坐标观测值是未知数的非线性函数,经过线性化后按照最小二乘法原理进行计算。该计算也是在提供一个近似解的基础上,逐次迭代来达到趋近于最转载 2016-03-22 15:49:08 · 4736 阅读 · 0 评论 -
特征匹配和单应性
使用 OpenCV 中的蛮力(Brute-Force)匹配和 FLANN 匹配。 1:Brute-Force 匹配的基础 蛮力匹配器是很简单的。首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。 对于 BF 匹配器,我们首先要使用 cv2.BFMatcher() 创建一个 BF-Matcher 对象。它有两个可选参数。第一个是 n转载 2016-04-04 23:21:26 · 4326 阅读 · 0 评论 -
背景减除-提取前景
在很多基础应用中背景检出都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数,或者是交通摄像头,需要提取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出来。 技术上来说,我们需要从静止的背景中提取移动的前景。如果你有一张背景(仅有背景不含前景)图像,比如没有顾客的房间,没有交通工具的道路等,那就好办了。我们只需要在新的图像中减去背景就可以得到前景对象了。转载 2016-04-05 00:55:32 · 21234 阅读 · 5 评论 -
Bundle Adjustment光束平差法概述
本文主要参考 http://blog.csdn.net/abcjennifer/article/details/7588865 http://blog.csdn.net/ximenchuixuezijin/article/details/7246663 http://blog.csdn.net/peterli_xue/article/details/7528624给出从不同视角拍摄的,描述同一转载 2016-03-22 13:16:00 · 17805 阅读 · 0 评论 -
Meanshift 和 Camshift
使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象。 1:Meanshift Meanshift 算法的基本原理是和很简单的。假设我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处(或者是点最多的地方)。如下图所示: 初始窗口是蓝色的“C1”,它的圆心为蓝色方框“C1_o”,而窗口中所有点质心却是“C1转载 2016-04-05 10:10:30 · 1668 阅读 · 0 评论 -
光流
1: 光流 由于目标对象或者摄像机的移动造成的图像对象在连续两帧图像中的移动被称为光流。它是一个 2D 向量场,可以用来显示一个点从第一帧图像到第二帧图像之间的移动。 上图显示了一个点在连续的五帧图像间的移动。箭头表示光流场向量。光流在很多领域中都很有用: • 由运动重建结构 • 视频压缩 • Video Stabilization 等光流是基于一下假设的: 1. 在连续的两帧图像之间(转载 2016-04-05 10:26:14 · 7155 阅读 · 0 评论 -
图像去噪
很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的。在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素。简单来说,像素级别的噪声去除是限制在局部邻域的。 噪声有一个性质。我们认为噪声是平均值为一的随机变量。考虑一个带噪声的像素点,p = p 0 + n,其中 p 0 为像素的真实值,n 为这个像素的噪声。我们可以从不同图片中选取大量的转载 2016-04-05 23:06:38 · 9801 阅读 · 0 评论 -
图像修补
图像修补就是使用坏点周围的像素取代坏点,这样它看起来和周围像素就比较像了。OpenCV 使用函数 cv2.inpaint() 来实施。 第一个算法是根据 Alexandru_Telea 在 2004 发表的文章实现的。它是基于快速行进算法的。以图像中一个要修补的区域为例。算法从这个区域的边界开始向区域内部慢慢前进,首先填充区域边界像素。它要选取待修补像素周围的一个小的邻域,使用这个邻域内的归一化加转载 2016-04-05 23:11:25 · 3215 阅读 · 0 评论 -
Cross-Scale Cost Aggregation for Stereo Matching立体匹配算法介绍
最近,研究了下CVPR2014上的一篇基于多尺度代价聚合的立体匹配算法,这个作者提供了原代码,运行了下,发现效果真心不错,不开后端处理的话,时间在0.4s左右。这个算法比较牛逼的有两点: 1:结合多尺度思想,对原始图像进行下采样,然后在每层图像上计算匹配代价,进行代价聚合,然后多尺度得到的视差进行结合,作为最终的代价聚合值。 2:提供了一个框架,里面包含立体匹配很多常用的经典的方法,可以在每一步原创 2017-01-10 18:35:08 · 7621 阅读 · 22 评论