![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机视觉
文章平均质量分 87
NLP工程化
NLP工程师
展开
-
博客文章索引汇总--计算机视觉
一.MoveIt教程1.MoveIt教程[1]:Getting Started2.MoveIt教程[2]:MoveIt! Quickstart in RViz3.MoveIt教程[3]:Move Group C++ Interface4.MoveIt教程[4]:Move Group Python Interface5.MoveIt教程[5]:MoveIt! Commander Scripting6.MoveIt教程[6]:Robot Model and Robot State7.MoveIt教原创 2020-10-11 00:02:46 · 317 阅读 · 0 评论 -
计算机视觉学习日记2
1.视觉测量相关书籍解析:[1]视觉测量[张广军][2]机器人视觉测量与控制[徐德等][3]视觉测量原理与方法[邾继贵][4]计算机双目立体视觉[高宏伟][5]三维测量技术及应用[李中伟]参考文献:[1]超全的3D视觉数据集汇总:https://bbs.cvmart.net/topics/1346[2]国内最全的3D视觉学习资料已开源:https://zhuanlan.zhihu.com/p/186222916[3]基于RGB图像的机器人抓取:https://zhuanlan原创 2021-02-05 14:10:44 · 185 阅读 · 0 评论 -
Emgu学习日记2
1.各种颜色空间解析:public static Image<Hsv, Byte> imageHsv=new Image<Hsv, byte>(mat.Bitmap);public static Image<Rgb, Byte> Rgbimg = new Image<Rgb, byte>(mat.Bitmap);public static I...原创 2019-07-21 16:18:57 · 487 阅读 · 0 评论 -
Python与图像处理10
1. LoG算子解析:高斯-拉普拉斯算子[Laplacian of Gaussian,LoG]。它的基本思想是先对图像进行高斯模糊[噪声和离群点],然后再求二阶导数,二阶导数等于0处对应的像素就是图像的边缘。2.DoG算子 [2]解析:高斯函数差分[Difference of Gaussian,DoG]。它的基本思想是将两幅图像在不同参数下高斯滤波结果相减。3.获取视...原创 2017-04-06 17:59:10 · 953 阅读 · 0 评论 -
Python与图像处理9
实际焦距是特定相机的参数,由于目前CCD尺寸多种多样,因此,实际焦距也是多种多样。为此,将各种相机的实际焦距都换算成35mm相机的焦距称为等效焦距,这样,不同CCD尺寸的相机就可以在一个平台基础上比较了。原创 2017-01-09 19:41:55 · 1181 阅读 · 0 评论 -
Python与图像处理8
(1)图像匹配:图像匹配是指在一个大的图像区域寻找一个合适的子区域,与目标相似。(2)图像配准:图像配准是指将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程,它已经被广泛地应用于遥感数据分析、计算机视觉、图像处理等领域。上述配准技术的流程如下:首先对两幅图像进行特征提取得到特征点;通过进行相似性度量找到匹配的特征点对;然后通过匹配的特征点对得到图像空间坐标变换参数;最后由坐标变换参数进行图像配准。原创 2016-11-27 22:09:00 · 4928 阅读 · 0 评论 -
Canny边缘检测原理
边缘是对象和背景之间的边界,还能表示重叠对象之间的边界。边缘检测是图像分割的一部分,图像分割的目的是识别出图像中的区域。边缘检测是定位边缘像素的过程,而边缘增强是增加边缘和背景之间的对比度以便能够更清楚地看清边缘的过程。边缘跟踪是沿着边缘进行跟踪的过程,这个过程通常会把边缘像素采集到一个列表中,链码算法是边缘跟踪算法的一个特例。原创 2016-11-18 11:32:03 · 40547 阅读 · 1 评论 -
Python与图像处理7
假设我们已经得到了相机内部参数(相机矩阵),畸变系数(5个)和相机外部参数(旋转矩阵(R)和平移矩阵(T)),就可以利用反向投影误差对找到的参数的准确性进行估计。因为标定图像有很多张,所以可以计算所有标定图像的误差平均值。原创 2016-10-23 11:25:08 · 6728 阅读 · 0 评论 -
Python与图像处理4
1. 肩宽测量自然挺胸抬头。用软尺沿身体背面的两肩端点水平测量,不可过松或太紧,得出的测量尺寸。2. 胸围测量自然挺胸抬头。沿胸部隆起的最高点,用软尺水平围绕身体一周,软尺恰好相连,不可过松或太紧,得出的测量尺寸即为上胸围尺寸。3. 腰围测量自然站直,挺胸抬头。上身与下身连接处最为纤细的部分即为腰部。用软尺沿腰部水平围绕一周,软尺恰好相连,不可过松或太紧,得出的尺寸即为腰围。原创 2016-10-17 09:55:57 · 1860 阅读 · 0 评论 -
Python与图像处理3
cv2.fastNlMeansDenoisingMulti():适用于短时间的图像序列(灰度图像)。imgtoDenoiseIndex设置哪些帧需要去噪,需要传入一个帧的索引。temporaWindowSize设置用于去噪的相邻帧的数目(奇数)。在这种情况下temporaWindowSize帧的图像会被用于去噪,中间的帧就是要去噪的帧。原创 2016-10-01 12:52:23 · 3117 阅读 · 0 评论 -
Python与图像处理2
OTSU(最大类间方差法)就是计算出灰度图最佳阈值的算法。如下所示:(1)先对灰度图进行直方图计算并归一化处理,得到0-255之间每个像素在灰度图中出现的概率,即表示为某个像素在灰度图中出现了个,灰度图总的像素点为个,则这个像素的出现概率为。(2)每个灰度图可以由阈值将灰度图分为,两大类,很容易得到,类在灰度图中的出现概率以及灰度均值。(3)计算灰度图,类得类间方差,在最佳阈值处,求得的类间方差最大,也就是类间方差最大的那个时刻的阈值就为灰度图的最佳阈值。原创 2016-09-27 23:34:10 · 6162 阅读 · 0 评论 -
Python与图像处理1
图像边缘检测算子的4个步骤,如下所示:(1)图像滤波:传统边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出的是,大多数滤波器在降低噪声的同时也造成了了边缘强度的损失,因此,在增强边缘和降低噪声之间需要一个折衷的选择;(2)图像增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度的幅值来完成的;原创 2016-09-25 23:52:24 · 3064 阅读 · 2 评论 -
Python与图像处理6
(1)Graph Cut的目标和背景的模型是灰度直方图,Grab Cut取代为RGB三通道的混合高斯模型GMM;(2)Graph Cut的能量最小化(分割)是一次达到的,而Grab Cut取代为一个不断进行分割估计和模型参数学习的交互迭代过程;(3)Grab Cut允许不完全的标注,Graph Cut需要用户指定目标和背景的一些种子点,但是Grab Cut只需要提供背景区域的像素集,最后如果需要得到更精确的分割,可以在初次分割的结果上加上一些确定的种子点,再运行算法。原创 2016-07-22 16:57:18 · 1149 阅读 · 0 评论 -
Python与图像处理5
图像增强可分成两大类:频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。原创 2016-07-04 23:41:57 · 1782 阅读 · 0 评论 -
FFmpeg学习日记2
将多张图像合成视频 解析:ffmpeg -f image2 -r 5 -i G:/image/image%02d.png -vcodec mpeg4 G:/image.mp42.设置Adobe Audition CC 2017中文界面 解析:编辑C:\Program Files\Adobe\Adobe Audition CC 2017\painter.ini文件,如下所示:...原创 2017-11-05 18:01:10 · 708 阅读 · 0 评论 -
FFmpeg学习日记1
1. ffmpeg编译和安装FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。./configure --enable-shared --disable-yasm --prefix=/usr/...原创 2016-08-16 14:20:00 · 541 阅读 · 0 评论 -
MoveIt教程[30]:Integration/Unit Tests
一.Getting Started二.Integration Test三.Test Robots四.Unit Tests五.Kinematic Tests参考文献:[1]Integration/Unit Tests:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/tests/tests_tutorial.html...原创 2020-01-28 21:56:12 · 436 阅读 · 0 评论 -
MoveIt教程[29]:Benchmarking
一.Getting Started二.Example三.Viewing Results四.Parameters of the BenchmarkOptions Class五.Parameters of the BenchmarkExecutor Class六.Benchmarking of Different Motion Planners: CHOMP, STOMP and OMPL...原创 2020-01-28 21:52:22 · 443 阅读 · 0 评论 -
MoveIt教程[28]:Joystick Control Teleoperation
一.Getting Started二.Running the Code三.Joystick Command Mappings四.Debugging参考文献:[1]Joystick Control Teleoperation:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/joystick_control_teleoper...原创 2020-01-28 21:48:02 · 580 阅读 · 0 评论 -
MoveIt教程[27]:Planning Adapter Tutorials
一.Getting Started二.Prerequisites三.Installing MoveIt! from Source四.Using Planning Request Adapter with Your Motion Planner1.Running OMPL as a pre-processor for CHOMP2.Running CHOMP as a post-proce...原创 2020-01-28 21:45:11 · 436 阅读 · 0 评论 -
MoveIt教程[26]:STOMP Planner
一.Getting Started二.Prerequisites三.Installing MoveIt! from Source四.Using STOMP with Your Robot五.Running the Demo1.Running STOMP with Obstacles in the Scene六.Tweaking some of the parameters for ST...原创 2020-01-28 21:38:12 · 486 阅读 · 0 评论 -
MoveIt教程[25]:CHOMP Planner
Covariant Hamiltonian optimization for motion planning[CHOMP]是一种新型的基于梯度的轨迹优化方法,它使得许多日常的运动规划问题变得既简单又可训练([Ratliff et al., 2009c]。当高维运动规划将轨迹生成划分为不同的规划和优化阶段时,该算法利用协变梯度法和函数梯度法优化阶段,设计了完全基于轨迹优化的运动规划算法。给定一个不可...原创 2020-01-28 16:58:39 · 2658 阅读 · 0 评论 -
MoveIt教程[24]:OMPL Planner
Open Motion Planning Library是一个强大的集合,最先进的采样为基础的运动规划算法,在MoveIt中是默认规划器。有关更多信息,请参见项目网页。一.OMPL Settings在这里,回顾了OMPL的重要配置设置。这些设置通常可以在ompl_planning.yaml文件中找到。该文件位于robots moveit_config包中。1.Longest Valid Se...原创 2020-01-28 15:40:56 · 1778 阅读 · 0 评论 -
MoveIt教程[23]:Custom Constraint Samplers
一.Overview一些规划问题需要更复杂的或自定义的约束采样器来解决更困难的规划问题。这个文档解释了如何创建一个自定义的运动规划约束采样器来使用MoveIt。二.Getting Started如果还没有这样做,确保已经完成了开始的步骤。三.Creating a constraint sampler1.创建一个ROBOT_moveit_plugins包,并在其中为ROBOT_constr...原创 2020-01-28 15:20:51 · 477 阅读 · 0 评论 -
MoveIt教程[22]:Fake Controller Manager
MoveIt提供了一系列用于仿真的假轨迹控制器。例如,由MoveIt的安装助手生成的demo.launch,在RViz中使用假控制器实现良好的可视化。对于配置,编辑文件config/fake_controllers.yaml,并调整所需的控制器类型。以下是可用的控制器:1.interpolate:执行平滑插值之间的via点-默认为可视化2.via points:通过点遍历,w/o插值之间-有...原创 2020-01-28 15:14:57 · 930 阅读 · 0 评论 -
MoveIt教程[21]:Kinematics Configuration
在本节中,将研究为机器人配置运动学的一些参数。一.The kinematics.yaml fileMoveIt Setup Assistant生成的kinematics.yam文件是MoveIt的主要运动学配置文件,可以在panda_moveit_config GitHub项目中看到Panda机器人的完整示例文件:panda_arm: kinematics_solver: kdl_kin...原创 2020-01-28 14:24:46 · 1365 阅读 · 0 评论 -
MoveIt教程[20]:TRAC-IK Kinematics Solver
TRAC-IK是由TRACLabs开发的一个逆向运动学求解器,它通过线程将两个IK实现组合在一起,以获得比常见的开源IK求解器更可靠的解决方案。从它们的文档:[TRAC-IK]为KDL中流行的逆雅可比矩阵方法提供了一个可选的逆运动学求解器。具体来说,KDL的收敛算法是基于牛顿法的,牛顿法在存在关节限制的情况下不能很好地工作,而关节限制在很多机器人平台上都很常见。同时运行两个IK实现。一个是对K...原创 2020-01-28 14:10:23 · 3685 阅读 · 0 评论 -
MoveIt教程[19]:IKFast Kinematics Solver
在本节中,将介绍为MoveIt配置IKFast插件。一.What is IKFast来自Wikipedia: IKFast,机器人运动学编译器,是Rosen Diankov的OpenRAVE运动规划软件中提供的一个强大的逆运动学求解器。与大多数逆运动学求解器不同,IKFast可以解析求解任何复杂运动学链的运动学方程,并生成语言特定的文件[如C++]供以后使用。最终的结果是非常稳定的解决方案,可...原创 2020-12-19 15:24:45 · 2622 阅读 · 4 评论 -
MoveIt教程[18]:Perception Pipeline Tutorial
MoveIt允许使用Octomap无缝集成3D传感器。一旦正确配置,应该看到这样的东西在rviz中。一.Configuration在本节中,将使用MoveIt配置机器人上的3D传感器。MoveIt的主要组件处理3D感知的是Occupancy Map Updater。更新程序使用插件架构来处理不同类型的输入。MoveIt中当前可用的插件是:The PointCloud Occupancy M...原创 2020-01-20 17:42:43 · 1802 阅读 · 0 评论 -
MoveIt教程[17]:Low Level Controllers
在本节中,将简单介绍MoveIt的配置,在机器人上用控制器。假设机器人为手臂提供了FollowJointTrajectory动作服务,[可选]为gripper提供GripperCommand服务。如果机器人没有提供这个功能,建议使用ROS控制框架,以便在硬件通信层周围轻松地添加此功能。一.YAML Configuration要创建的第一个文件是YAML配置文件[称为控制器,并将其放在MoveI...原创 2020-01-20 16:01:39 · 1140 阅读 · 1 评论 -
MoveIt教程[16]:URDF and SRDF
一.URDFMoveIt首先介绍URDF[通用机器人描述格式],这是在ROS中描述机器人的本机格式。在本教程中,将找到URDF的参考资料、重要的技巧和MoveIt列表特定的需求。1.URDF ResourcesURDF ROS Wiki Page:URDF ROS Wiki页面是关于URDF的大部分信息的来源。URDF Tutorials:使用URDF的教程。SOLIDWORKS UR...原创 2020-01-20 15:28:47 · 1381 阅读 · 0 评论 -
MoveIt教程[14]:Pick and Place Tutorial
在MoveIt中,抓取是使用MoveGroup接口完成的。为了抓住一个物体,需要创建moveit_msg::graspmsg,它允许定义抓取操作中涉及的各种poses和postures。一.Running The Demo打开两个终端。在第一个终端启动RViz,等待一切加载完毕:roslaunch panda_moveit_config demo.launch在第二个终端运行pick和p...原创 2020-01-20 11:30:23 · 2025 阅读 · 1 评论 -
MoveIt教程[13]:Planning with Approximated Constraint Manifolds
OMPL支持自定义约束,以支持遵循期望行为的规划轨迹。约束可以在关节空间和笛卡儿空间中定义,笛卡儿空间可以是基于方向的,也可以是基于位置的。在规划轨迹时,每个关节状态都需要遵循所有设置的约束,默认情况下通过拒绝采样来执行。然而,这可能会导致非常长的计划时间,特别是当约束非常严格且废品率相应很高时。Sucan等人提出了一种方法,他们预先计算约束流形的近似值,并据此进行轨迹规划。OMPL插件包含对给...原创 2020-01-20 10:50:41 · 895 阅读 · 0 评论 -
MoveIt教程[12]:Time Parameterization
MoveIt目前主要是一个kinematic运动规划框架-它计划关节或末端执行器的位置,但不是速度或加速度。然而,MoveIt利用后处理时间参数化运动轨迹的速度和加速度值。下面将解释MoveIt的这一部分所涉及的设置和组件。一.Speed Control1.From File默认情况下MoveIt将关节轨迹的速度和加速度设置为robot的URDF或joint_limits.yaml中允许的缺...原创 2020-01-20 10:12:46 · 1027 阅读 · 0 评论 -
MoveIt教程[11]:Visualizing Collisions
本节将浏览C++示例代码,该代码允许在RViz中移动与机器人手臂交互时,可视化机器人、自身和外部世界之间的冲突接触点。一.Running the CodeRoslaunch启动文件,直接从moveit_tutorials运行代码:roslaunch moveit_tutorials visualizing_collisions_tutorial.launch现在应该可以看到Panda机器...原创 2020-01-20 09:41:59 · 681 阅读 · 0 评论 -
MoveIt教程[15]:MoveIt! Setup Assistant
一.OverviewMoveIt Setup Assistant是一个图形用户界面配置任何robot使用MoveIt。它的主要功能是为robot生成一个Semantic Robot Description Format [SRDF]文件。此外,它还生成其它必要的配置文件,以便与MoveIt 管道一起使用。要了解更多关于SRDF的信息,可以浏览URDF/SRDF概览页面。二.Getting St...原创 2020-01-07 11:04:19 · 2004 阅读 · 0 评论 -
MoveIt教程[10]:Motion Planning Pipeline
在MoveIt中,motion planners被设置为规划路径。然而,在很多情况下,可能希望对运动规划请求进行预处理,或者对规划的路径进行后处理[例如,对时间参数化]。在这种情况下,使用规划管道,其中链的motion planner与预处理和后处理阶段。预处理和后处理阶段称为计划请求适配器,可以通过ROS参数服务器的名称进行配置。在本教程中,将运行C++代码来实例化和调用这样的规划管道。一.R...原创 2020-01-07 09:46:54 · 1359 阅读 · 2 评论 -
MoveIt教程[9]:Motion Planning API
在MoveIt中,运动规划器加载使用插件基础设施。这允许MoveIt在运行时加载运动规划器。在本例中,将运行完成此任务所需的C++代码。一.Running the Demo打开两个shell。在第一个shell中启动RViz和等待一切完成加载:roslaunch panda_moveit_config demo.launch在第二个shell中,运行launch文件:roslaunch...原创 2020-01-07 09:18:45 · 1588 阅读 · 7 评论 -
MoveIt教程[8]:Planning Scene ROS API
在本教程中,将研究如何使用场景差分来执行两个操作:[1]向世界添加和删除对象[2]在robot上附加和分离对象一.Running the code打开两个shell。在第一个shell启动RViz和等待一切完成加载:roslaunch panda_moveit_config demo.launch在第二个shell中,运行这个演示的launch文件:roslaunch moveit...原创 2020-01-07 08:50:01 · 1628 阅读 · 0 评论 -
MoveIt教程[7]:Planning Scene
PlanningScene类提供了将用于collision检查和constraint检查的主接口。在本教程中,将探索这个类的C++接口。一.The entire code全部代码参考文献[1]。1.Setup可以使用RobotModel或URDF和SRDF轻松地设置和配置PlanningScene类。然而,这并不是实例化一个PlanningScene的推荐方法。PlanningSceneM...原创 2020-01-07 08:21:14 · 1440 阅读 · 2 评论