机器视觉
文章平均质量分 86
jameshater
这个作者很懒,什么都没留下…
展开
-
远心镜头
远心镜头一共有三种: 1. 物方远心镜头—— 物方远心镜头是将孔径光阑放置在光学系统的像方焦平面上,当孔径光阑放在像方焦平面上时,即使物距发生改变,像距也发生改变,但像高并没有发生改变,即测得的物体尺寸不会变化。 物方远心镜头用于工业精密测量,畸变极小。高性能的可以达到无畸变。2.像方远心镜头—— 像方远心镜头,通过在物方焦平面上放置孔径光阑,使像方主光线平行于光轴,从而虽然CCD芯片转载 2016-01-07 09:26:59 · 764 阅读 · 0 评论 -
计算物体的凸包(convexHull)
1、什么是凸包? 点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。右图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。 一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,这就是凸原创 2016-03-15 09:29:37 · 3919 阅读 · 0 评论 -
meanshift运动跟踪算法详解
这几天学习《学习openCV》中的第十章运动跟踪,里面讲到了meanshift算法,根据书上所讲实在难以理解,meanshift在运动跟踪这个过程中到底起到什么作用,于是经过几天不断地看相关资料和别人的博客文章,慢慢思路清晰了,也终于知道了meanshift这个算法它到底是什么作用,起到什么样的角色,虽然为了弄明白这个算法花了几天的时间,但是通过这个过程学到了很多其他的知识。好了,接下来进入正题。原创 2016-03-27 16:00:01 · 14090 阅读 · 4 评论 -
OpenCV里IplImage的widthStep参数 和width参数
一直以为IplImage结构体中的widthStep元素大小等于width*nChannels,大错特错!(为了快速访问,要内存对齐啊)查看OpenCV2.1的源码,在src/cxcore/cxarray.cpp文件中,找到cvInitImageHeader函数,函数中对widthStep大小赋值如下:[cpp] view plain copy print?转载 2016-05-03 21:37:29 · 1603 阅读 · 0 评论 -
Matlab标定工具箱使用教程
Matlab标定工具箱使用教程这个教程将带你完整地利用20到25张平面棋盘格图像进行相机标定。这个教程将让你学会如何使用所有工具箱的特征:载入图像、提取图像角点、运行标定引擎、显示结果、控制精度添加和删减图像、图像矫正、导出标定不同格式的数据...这个教程对于刚开始使用工具箱的人来说非常重要。首先下载Matlab标定工具箱:[http://www.vision.caltech.edu/boug原创 2016-11-15 16:02:35 · 51506 阅读 · 28 评论 -
工业相机全局曝光和卷帘曝光的区别
全局曝光和卷帘曝光是常见的相机曝光方式。一般来说,CCD相机是全局曝光,而CMOS相机则存在卷帘曝光。那么,这两种方式孰优孰劣呢?或者说,他们两者的差别在哪里呢?那么,先从两者的定义说起。全局曝光 全局曝光的方式比较简单。也就是说光圈打开后,整个图像芯片同时曝光。因此,曝光时间与机械的开关速度有关。既然与机械运动相关,所以,存在理论上的最小曝光时间。卷帘曝光 顾转载 2018-01-16 09:33:12 · 14338 阅读 · 0 评论 -
深度学习资料
原文地址:http://blog.csdn.net/hjimce/article/details/45421595作者:hjimce一、学习清单1、综合类(1)收集了各种最新最经典的文献,神经网络的资源列表:https://github.com/robertsdionne/neural-network-papers 里面包含了深度学习领域经典、以及最新最牛逼的算法转载 2018-01-10 16:48:52 · 345 阅读 · 0 评论 -
OpenCV在C#中应用—OpenCVSharp
1、什么是OpenCVSharp 之前一直是基于OpenCV开发视觉算法,但C++语言对于GUI的开发相对于C#来说确实很不方便,之前就了解到C#下使用OpenCV可以使用EmguCV,这段时间也确实是调通了,但是是通过把C++封装成动态链接库在C#中调用,这样在修改算法的过程中就会非常的不方便,封装DLL的时候也比较麻烦。在C#中除了Emgucv之外,还有一种叫做OpenCVShar...原创 2018-03-21 17:29:40 · 48970 阅读 · 27 评论 -
C# byte数组转化位Bitmap
C# byte数组转换为8bit灰度图像的问题类似的文章在网上可以看到不少,但多多少少都存在一些问题。这两天做实验室的项目用到这个功能,我从头把它整理了一遍。在看代码之前,首先解释几个问题。1、byte数组存放的是图像每个像素的灰度值,byte类型正好是从0~255,存放8bit灰度图像的时候,一个数组元素就是一个像素的灰度值。仅有这个数组还不足以恢复出原来的图像,还必须事先知道图像的长、宽值;...转载 2018-12-05 15:27:30 · 6510 阅读 · 1 评论 -
矩阵的掩码操作
在矩阵上进行掩码操作很简单,主要的思想就是根据一个掩码矩阵(也称为核)去重新计算一幅图像中的每一个像素值。这个掩码矩阵里面的值将决定临近的像素对新像素值的影响多大。从数学的观点上来看,我们利用我们给定的值做了一个加权平均。我们的测试案例:让我们来考虑这个问题:一幅图像的对比增强方法。基本上我们想要对图像的每个像素应用下面的公式:第一种方式是使用公式,然而第二种是使用一种比前者结翻译 2016-02-29 11:03:00 · 4555 阅读 · 0 评论 -
用OpenCV将图像显示在MFC的窗口中
对于OpenCV2.3以上的版本来说没有CvvImage类,所以要自己在工程中添加这个类,这个类的头文件以及实现文件在网上都可以找到现成的。添加好这个类之后,接下来就是怎么去显示这个图像了,首先需要一张图片,有两种方式,一种是通过摄像机获取,一种是直接在电脑文件中打开。首先对于第一种从摄像机中获取图像,先要利用CvCapture* capture创建一个capture指针用来连接摄像机(这原创 2016-03-10 14:20:48 · 3367 阅读 · 0 评论 -
图像腐蚀和膨胀
目标: 在这个教程中你将学会: 应用两个最常用的形态学操作:膨胀和腐蚀。为了这个目的,你将使用下面的OpenCV函数: erode() Dilate()形态学操作: 简要的说:就是一系列基于形状的处理图像的操作。形态学操作对输入图像应用一个结构元素并且产生输出图像。 最基本的翻译 2016-03-08 09:47:25 · 707 阅读 · 0 评论 -
基本的图形绘制
目标:在该教程中你将学会如何去: 使用Point在图像中定义一个二维点; 使用Scalar以及为什么它有用; 使用OpenCV函数line绘制一条直线; 使用ellipse函数绘制一个椭圆 使用rectangle函数绘制矩形; 使用circle函数绘制圆形;翻译 2016-03-03 09:28:28 · 401 阅读 · 0 评论 -
随机数生成器以及OpenCV中的文本
目标:在这个教程中你将学会: 使用随机数生成类(RNG)并且如何从一个均匀分布中得到一个随机数; 使用putText函数在OpenCV窗口中显示文本;代码: 在之前的教程中我们通过给定输入参数例如坐标,颜色,线宽等来绘制了各种不同的几何图形。你可能已经注意到了我们对每个参数给定了特定的值。 在这个教程中,我们打翻译 2016-03-04 11:07:27 · 488 阅读 · 0 评论 -
图像傅立叶变换的物理意义
图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的频谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列转载 2016-03-05 18:50:29 · 1238 阅读 · 0 评论 -
离散傅里叶变换
目标: 我们将寻找下面这些问题的答案: 什么是傅里叶变换以及为什么我们使用它; 在OpenCV中怎么做傅里叶变换; copyMakeBorder(),merge(),dft(),getOptimalDFTSize(),log()以及normalize()等函数的使用;源代码://////////////////翻译 2016-03-05 20:53:13 · 1669 阅读 · 0 评论 -
随机数产生器RNG
用OpenCV做算法的朋友们肯定为随机数烦恼过,新版本一直支持随机数产生器啦,而且还继续支持之前版本的c格式的函数,不过与时俱进,我这里介绍C++的RNG类。它可以压缩一个64位的i整数并可以得到scalar和array的随机数。目前的版本支持均匀分布随机数和Gaussian分布随机数。随机数的产生采用的是Multiply-With-Carry算法和Ziggurat算法。其构造函数的初始化转载 2016-03-06 10:41:25 · 608 阅读 · 0 评论 -
滤波
在上次的opencv源码解析之滤波前言1中,按照opencv_tutorials.pdf中的滤波部分试了下常用的4种滤波器的使用方法。在opencv的C++中,这4个函数分别为:blur,GaussianBlur,meidaBlur,bilateralFilter.下面就这几个函数在opencv中的功能,以及参数做个介绍:均值滤波:其函数声明为:void blur(InputArray s转载 2016-03-06 11:06:05 · 399 阅读 · 0 评论 -
和OpenCV1的互通性
目标: 对于OpenCV的开发团队来说持续地完善这个库是非常重要的。我们一直都致力于向办法去让你的工作过程变得简单容易,与此同时保持这个库的灵活性。新的C++界面就是我们对这个目标的一个发展。然而,向前兼容却是非常重要的。我们不想因为早起的OpenCV库版本而中断你的代码工作。因此,我们确保通过添加一些函数来处理这个问题。在接下来的介绍中你将了解: 相对于O翻译 2016-03-06 11:15:58 · 382 阅读 · 0 评论 -
图像平滑
在这个教程中你将学会怎么使用OpenCV的函数去应用各种不同的滤波器去平滑图像,例如:blurGaussianBlurmedianBlurbilateralFilter理论:平滑,也叫模糊,是一种简单也经常被使用的图像处理操作;平滑的原因有很多。在这个教程中我们将主要集中在为了减少噪音而平滑(其他的平滑方法将在接下来的教程中看到);去达到平滑效果我们将对我们的图像应翻译 2016-03-07 09:27:57 · 738 阅读 · 0 评论 -
图像处理、显示中的行宽(linesize)、步长(stride)、间距(pitch)
在图像数据传输和显示的过程中有一个不常用的参数:间距。间距的名称:它有很多的别名,在使用d3d显示的时候,它叫pitch;在用ffmpeg解码的时候,它叫linesize; 在用ffmpeg转换格式的时候,它叫stride。这篇文章中统一以间距来表示。间距为什么出现:这个参数看起来似乎没什么用,因为它的值和图像的宽度一样。但是那是大多数情况下,一旦遇到它和宽度不一样的时候,如果你不了...转载 2018-12-05 21:27:07 · 9409 阅读 · 1 评论