![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openCV
文章平均质量分 85
Farmwang
博采众长,兼收并蓄!
展开
-
OpenCV
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using OpenCvSharp;namespace OpenCVTest{ public partial...原创 2021-07-19 07:10:19 · 275 阅读 · 0 评论 -
Sift特征点匹配过程
由步骤一我们已经获得了图片的特征点向量集合。现在来看看特征点匹配,特征点匹配的一个应用就是物体的识别,比如说我有2张图片A和B,图片的内容相同,只是图片的大小尺寸不同。假设A图片尺寸比较大,且我们已经采用sift算法对图片A和B都进行了检测,获得了它们的特征点集合,现在我们的问题是需要把A和B中相应的特征点给对应连线起来。 既然是匹配,当然每个特征点向量要相似才能匹配到一起,这里采用的是转载 2017-07-06 17:09:28 · 5540 阅读 · 0 评论 -
Sift描述子形成的步骤
1、 构造高斯差分空间图像。 Sift特征点的检测时在DOG图像上进行的,DOG图像是将相邻尺度空间图像相减得到的。且金字塔的每一层都要构造一个DOG空间图像。默认参数是金字塔4层,即4个octave,每一个octave中有5张不同尺度的图片,不同octave的图片尺寸大小不同,所以每一层中就会得到4幅DOG图像。高斯金字塔的第1层第1副原图像是将原图像放大2倍且sigma(si转载 2017-07-06 17:02:38 · 2955 阅读 · 0 评论 -
surf特征
特征的匹配大致可以分为3个步骤:特征的提取计算特征向量特征匹配对于3个步骤,在OpenCV2中都进行了封装。所有的特征提取方法都实现FeatureDetector接口,DescriptorExtractor接口则封装了对特征向量(特征描述符)的提取,而所有特征向量的匹配都继承了DescriptorMatcher接口。在图像配准中,特征点的描述往往不是位置这么简单,而是使用了一个N维转载 2017-07-06 16:56:31 · 3318 阅读 · 0 评论 -
OpenCV中feature2D学习——SIFT和SURF算子实现特征点提取与匹配
概述 之前的文章SURF和SIFT算子实现特征点检测简单地讲了利用SIFT和SURF算子检测特征点,在检测的基础上可以使用SIFT和SURF算子对特征点进行特征提取并使用匹配函数进行特征点的匹配。具体实现是首先采用SurfFeatureDetector检测特征点,再使用SurfDescriptorExtractor计算特征点的特征向量,最后采用BruteForceMatche转载 2017-07-05 18:09:17 · 916 阅读 · 0 评论 -
OpenCV中feature2D学习——SURF和SIFT算子实现特征点检测
在OpenCV的features2d中实现了SIFT和SURF算法,可以用于图像特征点的自动检测。具体实现是采用SurfFeatureDetector/SiftFeatureDetector类的detect函数检测SURF/SIFT特征的关键点,并保存在vector容器中,最后使用drawKeypoints函数绘制出特征点。 实验所用环境是opencv2.4.0+vs2008+转载 2017-07-05 18:03:35 · 351 阅读 · 0 评论 -
OpenCV中feature2D学习——SIFT和SURF算法实现目标检测
概述 之前的文章SURF和SIFT算子实现特征点检测和SURF算子实现特征点提取与匹配简单地讲了利用SIFT和SURF算子检测特征点,并且对特征点进行特征提取得到特征描述符(descriptors),在此基础上还可以进一步利用透视变换和空间映射找出已知物体(目标检测)。这里具体的实现是首先采用SURF/SIFT特征点检测与特征提取,然后采用FLANN匹配法保留好的匹配点,再转载 2017-07-05 17:57:23 · 784 阅读 · 1 评论 -
goodFeaturesToTrack——Shi-Tomasi角点检测
J.Shi和C.Tomasi在1994年在其论文“Good Features to Track”中,提出了一种对Harris角点检测算子的改进算法——Shi-Tomasi角点检测算子,可以看到,OpenCV中函数goodFeaturesToTrack就是直接取自他们论文的名字。goodFeaturesToTrack有比cornerHarris更多的控制参数,函数原型:voi转载 2017-07-05 17:44:05 · 581 阅读 · 0 评论 -
Harris角点检测
Harris角点检测算子是对Moravec角点检测算子的改进。Moravec角点检测算子通过一个(2*N+1)*(2*N+1)的窗口在图像中逐像素滑动,计算原图像与滑动后图像的像素间的距离和来定义灰度的变化大小,包含了水平、垂直还有4个对角线方向一共8个方向上的移动。Harris扩展了检测方向,检测结果具有旋转不变性;对滑块窗口使用了高斯系数,对离中心越近的点赋予更高的权重,以增强对噪转载 2017-07-05 17:41:18 · 324 阅读 · 0 评论 -
findContours函数参数详解
物体的轮廓勾勒出了物体的整体形状,物体形状的边界像素一起组合成了轮廓。灰度图像边界的明显特征是边界两侧灰度级的突变,根据这个特征,使用Sobel、拉普拉斯或Canny之类的边缘检测算子可以有效的检测到物体的边界,所有连续的边界像素组合在一起成为一个整体,就构成了物体的轮廓。轮廓检测可以使用findContours函数,检测步骤是:1. 使用拉普拉斯或Canny转载 2017-07-05 17:27:29 · 4754 阅读 · 2 评论 -
Opencv距离变换distanceTransform应用——细化字符轮廓&&查找物体质心
OpenCV中distanceTransform方法用于计算图像中每一个非零点距离离自己最近的零点的距离,distanceTransform的第二个Mat矩阵参数dst保存了每一个点与最近的零点的距离信息,图像上越亮的点,代表了离零点的距离越远。可以根据距离变换的这个性质,经过简单的运算,用于细化字符的轮廓和查找物体质心(中心)。一、细化轮廓#inclu转载 2017-07-05 17:10:15 · 730 阅读 · 0 评论 -
Opencv Surf算子特征提取与最优匹配
OpenCV中Surf算子提取特征,生成特征描述子,匹配特征的流程跟Sift是完全一致的,这里主要介绍一下整个过程中需要使用到的主要的几个opencv方法。1. 特征提取特征提取使用SurfFeatureDetector类中的detect方法,先定义一个SurfFeatureDetector类的对象,通过对象调用detect方法就可以提取输入图像的Surf特转载 2017-07-05 17:04:41 · 587 阅读 · 1 评论 -
Surf算法特征点检测与匹配
Speeded Up Robust Features(SURF,加速稳健特征),是一种稳健的局部特征点检测和描述算法。最初由Herbert Bay发表在2006年的欧洲计算机视觉国际会议(Europen Conference on Computer Vision,ECCV)上,并在2008年正式发表在Computer Vision and Image Understanding期刊上。转载 2017-07-05 16:56:21 · 1526 阅读 · 0 评论 -
Opencv Sift算子特征提取与匹配
SIFT算法的过程实质是在不同尺度空间上查找特征点(关键点),用128维方向向量的方式对特征点进行描述,最后通过对比描述向量实现目标匹配。概括起来主要有三大步骤:1、提取关键点;2、对关键点附加详细的信息(局部特征)也就是所谓的描述器;3、通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,建立物体间的对应关系。转载 2017-07-05 16:46:43 · 768 阅读 · 1 评论 -
Sift算子特征点提取、描述及匹配全流程解析
Sift之前的江湖在Sift横空出世之前,特征点检测与匹配江湖上占据霸主地位的是角点检测家族。先来探究一下角点家族不为人知的恩怨情仇。角点家族的族长是Moravec在1977年提出的Moravec角点检测算子,它是一种基于灰度方差的角点检测方法,该算子计算图像中某个像素点沿水平、垂直方向上的灰度差异,以确定角点位置,Moravec是第一个角点检测算法,也是角点家族的开山鼻祖。转载 2017-07-05 16:43:03 · 743 阅读 · 0 评论 -
Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
一、 图像金字塔图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像。把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺寸)逐渐降低的图像,一直到金字塔的顶部只包含一个像素点的图像,这就构成了传统意义上的图像金字塔。获得图像金字塔一般包括二个步骤:1. 利用低通滤波器平滑转载 2017-07-05 16:32:04 · 829 阅读 · 0 评论 -
error: ‘Mat’ was not declared in this scope
使用opencv 报错如下: 经查看原来是没有添加using namespace cv; 的原因,截图如下: himat.cpp: In function ‘int main()’:himat.cpp:6:1: error: ‘Mat’ was not declared in this scope Mat img; ^himat.cpp:6:1: note: suggested alt原创 2017-06-27 21:08:06 · 7715 阅读 · 1 评论 -
Surf描述子形成步骤
1. 构造高斯金字塔尺度空间 其实surf构造的金字塔图像与sift有很大不同,就是因为这些不同才加快了其检测的速度。Sift采用的是DOG图像,而surf采用的是Hessian矩阵行列式近似值图像。首先来看看图像中某个像素点的Hessian矩阵,如下:即每一个像素点都可以求出一个Hessian矩阵。但是由于我们的特征点需要具备尺度无关性,所以在进行Hessian矩转载 2017-07-06 17:17:24 · 4346 阅读 · 0 评论 -
尺度空间理论
尺度空间理论自然界中的物体随着观测尺度不同有不同的表现形态。例如我们形容建筑物用“米”,观测分子、原子等用“纳米”。更形象的例子比如Google地图,滑动鼠标轮可以改变观测地图的尺度,看到的地图绘制也不同;还有电影中的拉伸镜头等等……尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。尺度越大图像越模糊。为什么要讨转载 2017-07-10 10:09:18 · 647 阅读 · 0 评论 -
SIFT学习--构建尺度空间
现实世界的对象只会在某些尺度上有意义。比如面前一棵树,如果在大的尺度上,树是有意义的,从另一个角度来说,树叶的信息被抛弃了。尺度空间就是从数字图像的角度模拟这些概念。如果要去除一些详细的信息,你必须确保你没有引入新的错误的细节,一个较好的做法是运用高斯核来进行模糊处理。所以要创建一个尺度空间,你必须拿到原始图像并且逐渐产生模糊处理后的图像。下面是一个例子:转载 2017-12-05 14:58:18 · 868 阅读 · 0 评论 -
高斯模糊原理
基本概念二维高斯模糊,或者说高斯滤波,是图像处理中非常常见的操作。操作的核心是使用一个从高斯分布中采样得到的掩膜,或者叫核,和输入图片中的每个像素及其邻域进行计算,结果保存到输出图片中。假设高斯核窗口尺寸为(2w+1)×(2w+1),高斯分布的标准差为 σ,则高斯核可以表示为矩阵的形式 由于高斯分布的概率密度函数的非零值区间主要集中在 (−3σ,3σ) 内,所以为了保证选取的高斯核转载 2017-12-03 21:06:58 · 1382 阅读 · 0 评论 -
图像处理 二维高斯分布
为X,Y的相关系数!为0;σ1=σ2=σ二维高斯曲面的公式(x,y代表像素的模板坐标,模板中心位置为原点)根据这个公式,我们可以计算得到不同σ的高斯模板。下面是C语言程序实现:当σ即半径为0.7时:#include "stdafx.h"#include #include #include using namespace std;#defin转载 2017-12-03 10:00:39 · 40275 阅读 · 2 评论 -
一维高斯分布
高斯模糊是数字图像模板处理法的一种。其模板是根据二维正态分布(高斯分布)函数计算出来的。 正态分布最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。故名高斯模糊。高斯滤波实际上是一种低通滤波器,也就是说,低波通过,高波滤去。对于图像来讲,就是在低频的部分通过,对于高频的地方滤去。对图像的边缘转载 2017-12-03 09:44:06 · 20998 阅读 · 0 评论 -
图像处理:基础(模板、卷积运算)
1.使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算。 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相 乘,所有乘积之和作为区域中心像素的新值。 卷积核:卷积时使用到的权用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行、列都是奇数,转载 2017-12-01 10:55:37 · 1312 阅读 · 0 评论 -
关于尺度空间的理解
通常会听到尺度变化等这类词语,看到的也总是一堆的数学公式,有时候真的不知道这到底有啥用,有啥意义,没有弄懂这些意义,当然就更不可能的理解,不可能去掌握应用它了,现在我才理解,小波变化其实也是一种尺度变化。今天我看到一篇南航数学系写的关于尺度空间解释的文章,感觉很通俗易懂,我们不从数学上来推倒什么是尺度空间,只是从生活常识方面来解释尺度空间的意义,意义懂了,数学方面自然就好理解了。转载 2017-12-01 10:32:56 · 1755 阅读 · 1 评论 -
FAST特征点检测features2D
#include #include #include #include using namespace cv; void main() { Mat image; image = imread("church01.jpg"); // vector of keyPoints std::vector key转载 2017-11-29 09:00:23 · 597 阅读 · 0 评论 -
FAST特征点检测&&KeyPoint类
FAST特征点检测算法由E.Rosten和T.Drummond在2006年在其论文“Machine Learning for High-speed Corner Detection”中首次提出。英文全称是“Features from Accelerated Segment Test”,可以翻译成“基于加速分割测试的特征”。从论文名字可以看出FAST是一种高效的特征点(角点)检测算法,基本上可以满转载 2017-11-29 08:54:52 · 972 阅读 · 0 评论 -
图像处理基本概念——卷积,滤波,平滑
1.图像卷积(模板)(1).使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算。 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。 卷积核:卷积时使用到的权用一个矩阵表示,该矩阵是一个权矩阵。 卷积示转载 2017-09-13 21:13:54 · 642 阅读 · 0 评论 -
cvtColor
cvCvtColor(...)是Opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。 参数: CV_RGB2GRAY是RGB到gray, CV_GRAY2RGB是gray到RGB.处理结果是彩色的,则转灰色就是了: void cvCvtColor( const CvArr* src, CvArr* dst, int code转载 2015-09-21 20:19:57 · 914 阅读 · 0 评论 -
尺度不变特征变换(SIFT)特征提取分析
基本介绍关于SIFT算法,2004年David Lowe发表在Int. Journal of Computer Vision的经典论文[2]中,对尺度空间(scale space)是这样定义 :It has been shown by Koenderink (1984) and Lindeberg (1994) that under avariety of reasonable转载 2017-07-10 13:49:51 · 3436 阅读 · 0 评论 -
【基础】图像梯度
梯度梯度的本意是一个向量(矢量)。标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。1、在单变量的实值函数的情况,梯度只是导数,对于一个线性函数,梯度是线的斜率。转载 2017-07-10 13:02:53 · 742 阅读 · 0 评论 -
图像的梯度
可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导: 图像梯度: G(x,y) = dx i + dy j; dx(i,j) = I(i+1,j) - I(i,j); dy(i,j) = I(i,j+1) - I(i,j); 其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。 图像梯度一般也可以用中值差分: dx(i,j) = [I(i+1,j转载 2017-07-10 12:55:45 · 519 阅读 · 0 评论 -
尺度空间理论
1. 特征的不变性何谓特征?每个物体,我们总可以用一些词语或部件来描述它,比如人脸的特征:两个眼睛、一个鼻子和一个嘴巴。对于图像而言,我们需要计算机去理解图像,描述图像就需要计算机去取得图像的特征,对图像比较全面的描述即一个二维矩阵,矩阵内的每个值代表图像的亮度。有时候我们需要让计算机更简化的来描述一个图像,抓住一些显著特征,这些特征要具有一些良好的性质,比如局部不变性。局部不变性一般转载 2017-07-10 12:06:19 · 1490 阅读 · 0 评论 -
FAST特征点检测&&KeyPoint类
FAST特征点检测算法由E.Rosten和T.Drummond在2006年在其论文“Machine Learning for High-speed Corner Detection”中首次提出。英文全称是“Features from Accelerated Segment Test”,可以翻译成“基于加速分割测试的特征”。从论文名字可以看出FAST是一种高效的特征点(角点)检测算法,基本上可转载 2017-07-05 16:21:48 · 356 阅读 · 0 评论 -
高斯模糊的算法(高斯卷积 高斯核)
通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场合,图像处理恰好提供了一个直观的应用实转载 2017-07-05 16:17:32 · 48057 阅读 · 11 评论 -
Opencv函数之resize
原函数void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )前两个参数分别为输入和输出图像。dsize表示输出图像的大小,如果为0,则dsize=Size(round(fx∗src.cols),rou原创 2017-06-30 13:02:32 · 576 阅读 · 0 评论 -
opencv函数之-addWeighted
addWeighted函数void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。原创 2017-06-30 11:36:06 · 3583 阅读 · 0 评论 -
split函数提取彩色图像的三个通道
split函数的主要功能是把一个彩色图像分割成3个通道,方便进一步的图像处理:CV_EXPORTS void split(const Mat& src, Mat* mvbegin); CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);Mat img =imread("./a.jpg",原创 2017-06-29 22:58:25 · 1241 阅读 · 0 评论 -
Centos setup opencv
tar -xvf OpenCV-2.4.3.tar.bz2 解压 cd OpenCV-2.4.3. 进入目录 cmake CMakeLists.txt make make install成功原创 2017-05-23 21:44:46 · 171 阅读 · 0 评论 -
Opencv 源码解读之 ImageEncoder
ImageDecoder类ImageDecoder这个类,这个类其实就是一个图像数据的解析类。且看下面的源代码:class BaseImageDecoder //这就是我们要找的ImageDecoder类{public: BaseImageDecoder(); virtual ~BaseImageDecoder() {}; int widt原创 2015-09-24 11:47:41 · 1374 阅读 · 0 评论