Opencv学习——LSD直线检测 OpenCV3版本之后加入了LSD直线检测功能,相比Hough直线检测,LSD能够获得更加理想的效果,具体可以参考文献的主页,包括了文献、代码和演示效果。 http://www.ipol.im/pub/art/2012/gjmr-lsd/LSD原理简单介绍LSD是一种局部直线检测方法,速度较快,LSD算法通过对图像局部分析,得出直线的像素点集,再通过假设参数进行验证求解,将像
光条中心线提取-Steger算法(基于Hessian矩阵) 采用结构光进行扫描检测时,需要提取激光条纹的中心线,本文采用经典的Steger算法提取光条中心。Steger算法原理Steger算法基于Hessian矩阵,能够实现光条中心亚像素精度定位:首先通过Hessian矩阵能够得到光条的法线方向,然后在法线方向利用泰勒展开得到亚像素位置。 对于图像中激光条纹上的任意一点(x,y)(x,y) ,Hessian矩阵可以表示为: H(x,y)=[r
数据结构算法——双向链表 双向链表与单链表相比,各个节点多了一个指向前一个节点的指针,即一个节点有一个指向前驱的指针和指向后继的指针。本文将主要介绍双向链表的基本操作,包括正向遍历链表,反向遍历链表,查找链表中的元素,节点的插入,节点的删除等操作。
数据结构算法——单链表及其操作 单链表是一种非常常用的数据结构,虽然很简单,但是其相关操作还是很容易出错。本文将介绍单链表的几种操作,主要包括链表的反转,链表的排序,求出链表倒数第 k 个值,删除当前节点和找出链表的中间节点。
Opencv学习——图像融合 Opencv相关函数:C++: void seamlessClone(InputArray src, InputArray dst, InputArray mask, Point p, OutputArray blend, int flags)图像融合基本原理:泊松克隆,与图像的梯度和散度相关,具体的原理可查看 http://blog.csdn.net/hjimce/article/detail
Opencv学习——图像分割之分水岭算法 分水岭算法是比较经典的图像分割算法。最近看到一副区域检测和统计的图像,感觉可以通过分水岭算法进行实现,于是顺便对opencv的分水岭算法进行学习。由于示例是python的代码,没有C++的代码,所以打算先用C++实现示例中的功能,然后再对本文开头的图像进行分割。
图像清晰度评价 图像清晰度是衡量图像质量的一个重要指标,对于相机来说,其一般工作在无参考图像的模式下,所以在拍照时需要进行对焦的控制。对焦不准确,图像就会变得比较模糊不清晰。相机对焦时通过一些清晰度评判指标,控制镜头与CCD的距离,使图像成像清晰。一般对焦时有一个调整的过程,图像从模糊到清晰,再到模糊,确定清晰度峰值,再最终到达最清晰的位置。
机器人与变位机协调轨迹仿真 复杂空间轨迹的焊接一般需要变位机的参与,加入变位机能够尽量保证焊缝处于船型焊状态,有利于焊缝成型。本文通过机器人与变位机的耦合关系,分析变位机与机器人的协调运动,并对空间相贯线进行仿真。
简单的opencv GUI库 对图像进行处理时通常需要调整函数的参数,特别是像边缘检测或者是图像亮度调节等操作,常常需要经过多次调节才能得到满意的结果。而每次要重新设置参数都需要重新更改程序中的代码,opencv也有自带的gui,不过一直觉得很不好用,今天发现了一个非常简单的gui库:cvui,只需要包含一个头文件,并且是跨平台的,不需要附属其他文件,非常方便。
Socket编程 本文主要介绍项目使用的TCP/IP通信。 TCP/IP协议族,四个抽象层应用层:TFTP,HTTP,SNMP,FTP,SMIP,DNS,Telnet等; 传输层:TCP,UDP; 网络层:IP,ICMP,OSPF,EIGRP,IGMP, 数据链路层:SLIP,CSLIP,PPP,MTUSocket:
数字图像处理之灰度变换 灰度变换是图像处理技术中的最简单的技术。 图像增强常用的三类基本函数: 1. 线性函数(反转和恒等变换) 2. 对数函数(对数和反对数变换) 3. 幂律函数(n次幂和n次根变换)基本灰度变换函数如图: 直方图处理
Opencv学习——Opencv与Visual studio配置 本文介绍的是一次性配置,不再需要每次创建一个新工程都配置一遍了。本文内容主要摘录自我早期的网易博客,差不都有两年时间了,现在搬到csdn上,便于后续查看。本文还是采用opencv2.4.10+Visual studio2010+win64,其他版本大同小异。
Opencv学习——图像阈值化 图像阈值化是最常用的图像处理方法,在很多领域应用广泛,机器视觉中产品的识别和定位中往往需要采用阈值处理使产品的特征更加明显,易于后续的处理。 本文主要介绍两种阈值处理方法即全局阈值化和局部阈值化。
Opencv学习——仿射变换和透视变换 仿射变换是一种二维坐标之间的变换,变换前后保持图形的平直性和平行性。仿射变换可以理解为是向量经过一次线性变换和一次平移变换。 透视变换可以看做是二维与三维坐标之间的变换,变换前后没有了仿射变换的特性。其实仿射变换是透视变换的一种特殊形式。
C++笔记(一) 数据初始化: (1)int num = 5; //直接赋值 (2)int num(5); //C++初始化方式 单值初始化也可以采用大括号: int emus{7}; int rheas = {12}; int rocs = {}; int psychics{};数组初始化:只能在定义的时候进行初始化 (1)int cards[4] = {1,2,3,4}; (2)int
Kalman滤波器 卡尔曼(kalman)滤波器是一种线性滤波器,主要涉及到5个公式,包括预测部分(Predict)和更新部分(Update)。卡尔曼滤波器中加入了不确定性的估计和更新,使得其比较适合实际应用。