2020-05-19 16:47:17
新项目是3D重建,最近都在查资料看论文,关于生成3D点云,特征检测,点云匹配,曲面重建等等。有篇知乎写得不错,讲了实现3D重建的相关体系和方法。不过我也是从那里面得到了启发,方法和里面也不太相同,因为里面主要是多幅2D图像三维重建和单目三维重建,他们都没有深度信息而是通过SFM等一些算法计算出景深。而我使用的是RGBD传感器如kinect,xtion。所以我关注与3D特征检测匹配等。大家可以看看微...
2020-05-19 16:45:22
一、特征提取Feature Extraction:· SIFT [1] [Demo program][SIFT Library] [VLFeat]· PCA-SIFT [2] [Project]· Affine-SIFT [3] [Project]· SURF [4] [OpenSURF] [Matlab Wrapper]·...
2020-05-19 10:58:21
上一篇讲了利用随即一致性来减少错误匹配的情况,这一篇讲一下使用最小二乘多项式平滑方法来减少姿态的抖动问题。因为我们的设备是手持单目,相机在移动的过程中,会产生细微的抖动。虽然EKF或者G2O(通用图优化)会帮我们最小化错误,但是当我们得到正确的最接近真实的姿态后,我们会发现这些姿态是存在细微抖动的。下图为未平滑的相机姿态(Matlab):我们看到有大量的抖动在里面。体现在图像上则是AR物体会有小幅...
2020-05-19 10:47:38
这一节应该是本项目(Feature Tracking and Synchronous Scene Generation with a Single Camera)的最后一节了,实现了两种选取跟踪点和恢复跟踪的方法,顺便把AR物体换成了AR小游戏。首先讲讲跟踪点的选取。之前的文章中我们选取ORB作为特征点检测的办法,然后手动选取N个ORB角点去利用LK光流法跟踪。这样的方法是事先定义好3D点的位置,...
2020-05-19 10:42:03
这段时间把项目的剩余部分全部完成了,包括角点检测改进和恢复追踪。这一节先继续讲利用OpenGL画AR物体。上一节中我们利用SolvePnP得到了相机的姿态(rotation和translation),利用姿态信息我们可以通过加载model_view_matrix来控制opengl里的相机。首先我试了用cmake重新编译with_opengl版的opencv,但是失败了(后来有了成功编译with_o...
2020-05-19 10:38:40
用了ORB那么久,今天第一次将256bit的描述子打印出来,直观看到了match的汉明距离。上代码:#include <iostream>
#include <bitset>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <...
2020-05-19 08:56:16
上一节我们使用张正友相机标定法获得了相机内参,这一节我们使用 PnP (Perspective-n-Point)算法估计相机初始姿态并更新之。推荐3篇我学习的博客:【姿态估计】Pose estimation algorithm 之 Robust Planar Pose (RPP)algorithm,POSIT算法的原理--opencv 3D姿态估计,三维姿态:关于solvePnP与cvPOSIT。...
2020-05-19 08:53:02
上一节《关于OpenCV的那些事——跟踪点选取方式和特征点跟踪恢复》讲了两种跟踪和恢复的方法,这一篇主要讲第一个优化,使用random sample consensus收敛相机姿态。下一篇讲使用最小二乘多项式平滑消除姿态抖动。我们知道在计算相机姿态的时候,opencv中提供了两种函数:solvePnP, solvePnPRansac。 第二个函数即是利用ransac的思想计算更加精确的姿态。 鉴于...
2020-05-19 08:44:13
这一节我们首先介绍下计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系。以及他们之间的关系。然后介绍如何使用张正友相机标定法标定相机。图像坐标系:理想的图像坐标系原点O1和真实的O0有一定的偏差,由此我们建立了等式(1)和(2),可以用矩阵形式(3)表示。相机坐标系(C)和世界坐标系(W):通过相机与图像的投影关系,我们得到了等式(4)和等式(5),可以用矩阵形式(6)表示。我们...
2020-05-18 21:48:26
偏振镜作用机器视觉中使用偏振镜可以有效降低成像时产生的眩光或热点,加强对比度。它只允许振动方向平行于其允许方向的光能通过,垂直分量被截止。偏光镜可用于测量磁场、温度、分子结构、化学相互作用或声波振动的变化。 当光线通过偏光镜时,光线的偏振态,或其电场的X和Y元件的振幅将会出现变化。 偏振光可以是线偏振、面偏振、圆偏振或椭圆偏振光。下图中,上面一行为原图,下面一行为加了偏振镜的图像。偏振镜片分类在光...
2020-05-18 21:31:24
频闪光源控制器常用到飞拍要求的视觉应用中。下面是一些经验说明。1、光源是一样的,但是光源控制器分普通控制器和频闪控制器。2、频闪控制器点亮光源的时间是很短的,一般小于1ms。亮度是普通控制器的2-3倍,一般是2.5倍左右。如下图:从外观上来看,频闪控制器跟一般控制器没什么不同。区别是瞬间大电流高亮度点亮光源。它不能常亮,这样光源寿命会大降。3、光源点亮一般需要20us才能达到稳定亮度,所以相机在光...
2020-05-18 21:01:40
这个例子中,勇哥使用的相机型号为:型号:MV-EM500M,使用的GigE接口。这个例程演示了利用相机的SDK进行图像采集、保存、缩放、翻转、旋转。采集的图像(实时的)是直接写到了form窗口上,利用了窗体的Paint事件。代码:using System;
using System.Collections.Generic;
using System.ComponentModel;
using...
2020-05-06 15:56:09
官网连接https://www.hikvision.com/cn/prlb_268.html触发代码参考1(没有实际检测过) https://blog.csdn.net/konglingshneg/article/details/89084543 产品https://www.hikrobotics.com/vision/visionlist.htm?type=43https://www.hikr...
2020-05-06 15:50:34
整了两天终于搞定了,还未优化,投影仪500帧/s投编码图案,触发相机拍照,连续不断拍,实现动态三维重建。代码还未整理,先记录一下 #include <stdio.h>#include <Windows.h>#include <conio.h>#include "MvCameraControl.h"#include <string>...
2020-05-05 22:52:29
SCARA机器人手眼标定之目标抓取的例子:显示如何基于由SCARA手眼校准确定的校准信息,使用SCARA机器人执行拾取和放置应用程序。 在第一步骤中,根据模型图像定义形状模型。 然后,基于该形状模型,在每个图像中搜索对象。 对于一个选定的对象,计算可用于掌握该对象的机器人坐标。 为了使该示例适用于实际应用,必须从相机获取图像(而不是从文件读取),并且必须实施机器人的控制(而不是在本示例中被注释掉的...
2020-05-05 20:54:40
一. SCARA机械手介绍 Scara机械手包括3个平移+1个旋转,共计4个自由维度,动作会受到限制,它不能倾斜,但它能提供更快,更精确的性能。 二.SCARA手眼标定注意事项1.SCARA机器人必须提前对摄像机进行校准,然后再对手眼系统进行校正,对于6轴关节机器人,手眼标定前的摄像机标定是可选择的,在后面可以直接通过手眼标定来校准摄像机。2.为SCARA...
2020-05-05 20:31:03
1. 机器人位姿定义: 1.1 如果机器人是abg位姿类型, 通过create_pose算子将数据转换为位姿,旋转矩阵链如下:[x,y,z,RX,RY,RZ]1.2 如果机器人是gba位姿类型, 通过create_pose算子将数据转换为位姿,旋转矩阵链如下: 1.3 如果机器人是zyz位姿类型,则不能使用create_pose,必须创建相应的齐次变换矩阵,并使用hom_mat3d_to_pose...
2020-05-01 16:42:28
1.图像坐标系,摄像机坐标系,世界坐标系勇哥说明一下:图像坐标系就是相机感觉芯片上的坐标系。摄像机坐标系就是镜头表面上的坐标系。世界坐标系就是摄像机看到内容的坐标系。2. 摄像机内部参数:[Focus,Kappa,Sx,Sy,Cx,Cy,Whith,Height]面阵相机(division模式):Focus(焦距):远焦镜头镜头焦距的长度Kappa:扭曲系数(畸变)Sx,Sy:像素大小Cx,Cy:...
2020-05-01 15:46:29
手眼标定之介绍一.机械手类型关节机器人:3个关节,6个自由度,即3个旋转3个平移;SCARA机器人:包括沿X,Y,Z方向的平移和绕U轴旋转的4个自由度,它有3个旋转关节,最适用于平面定位;二.手眼标定方式1.固定相机拍照手眼标定做什么:1.1【已知条件】摄像机坐标系下校正对象的位姿;可以通过校正图像获取;1.2【已知条件】机器人坐标系下机器人工具的位姿; 1.3【未知条件】获取工业摄像机坐标系下为...
2020-05-01 14:36:07
一.3D位姿1.为什么用3D位姿齐次变换矩阵内容即矩阵的元素通常难以阅读,特别是旋转部分。将它转换位3D姿势后,便于阅读;【齐次变换矩阵】 【位姿】2. 3D位姿定义3D位姿用3个平移参数,3个旋转参数来表示; 3.位姿类型位姿为”gba类型”:(TransX = xt; TransY = yt; TransZ = zt; RotX = 0; RotY = 90; RotZ = -90) 位姿为”...
2020-05-01 14:23:37
一.3D坐标摄像机坐标系中的点P的坐标(由字母c表示)世界坐标系(用字母w表示)将写成:二.平移(1)3D坐标点的平移(2)3D坐标系的平移三.旋转(1)3D坐标点的旋转第一次旋转:第二次旋转:(2)3D坐标系的旋转与点相比,坐标系相对于其他坐标系具有方位。 坐标系旋转时,此方向会改变;坐标系的位置可以直接用平移矢量表示,方向包含在旋转矩阵中;--------------------- 作者:ha...
2020-04-29 22:28:36
****scara关节机器人眼在手上的手眼标定例程******** This example explains how to perform the hand-eye calibration for
* a SCARA robot. In this case, the camera is attached to the robot tool
* and the calibration obje...
2020-04-29 21:59:17
代码中有几个外部算子,没办法运行。只能看图识代码了。*
* This example visualizes different poses
* in the camera coordinate system
*
* A calibration plate is held at varying positions in different
* orientations with res...
2020-04-29 21:54:32
*外参标定即为相机坐标系和系统世界坐标系关系的旋转和平移矩阵;可以简化理解为一个3*3的矩阵
ImgPath:='3d_machine_vision/calib/'
dev_close_window()
dev_open_window(0,0,652,494,'black',WindowHandle)
dev_update_off()
dev_set_dr...
2020-04-29 21:23:55
摄像机内参是什么:在本站另一篇文章《勇哥的视觉实验:halcon的标定助手》中用助手进行了标定,其“摄像机参数”就是摄像机的内参。“摄像机位姿”则是摄像机的外参。引用更专业的解释如下:摄像机内参:确定摄像机从三维空间到二维图像的投影关系。
针孔摄像机模型为6个参数(f,κ,Sx,Sy,Cx,Cy)
其中,f为焦距;(在摄像机附带的说明书中可以找到)
κ表示径向畸变量级,如果κ为负值,畸变为桶...
2020-04-29 07:27:28
http://www.ihalcon.com/read-7445.html在进行手眼标定时走了一些弯路,特在此总结,希望其他人少走一些弯路。实验了 1. 2D面阵相机,3DTOF相机 2. 固定相机以及移动相机的手眼标定。在进行手眼标定时(不管是移动相机还是固定相机,不管是2D还是3D sensor)需要的数据准备:1.ToolInBasePose即从机器人上读取的机械臂法兰盘当前的位姿,这...
2020-04-28 20:47:10
单相机标定的目的是完成像素坐标到世界坐标之间在的转换。使用halcon标定助手完成的即是单相机标定。程序运行后,载入10张标定板文件,最后用calibrate_cameras算子执行标定。这一步相当于标定向导中载入十标定板图片,最后点击标定按钮。有关halcon标定向导的标定说明见勇哥的另一篇贴子《勇哥的视觉实验:halcon的标定助手》。标定完成后,接下来进行测量。先测量标定版外框之间的宽度,你...
2020-04-28 20:17:49
这种是eye in hand,即眼在手上。我们需要确定的是相机坐标系和机器人工具坐标系之间的关系。(图1)halcon手眼标定,是相机绑定在机器手的工具坐标系末端,同时对于机械手来说标定物是静态的。这个时候要求两个位置的姿态:一个是CalObjInBasePose, 一个是ToolInCamPoseCalObjInBasePose是在机械基础坐标系下的标定物坐标系下的姿态ToolInCamPose...
2020-04-28 08:31:35
最近几个月因为工作接触到了机械臂的项目,突然对机械臂运动方法产生了兴趣,也就是如何控制机械臂的位置和姿态。借用一张网上的图片,应该是ur5的尺寸。我用到的是ur3机械臂,除了尺寸不一样,各关节结构和初始位置和ur5是一样的。ur机械臂是六自由度机械臂,由D-H参数法确定它的运动学模型,连杆坐标系的建立如上图所示。我当时在这个地方的理解上走了不少弯路,后来找个一个视频,我觉得讲解地比较容易理解,可以...
2020-04-25 17:28:45
上一个博文说了一种手眼标定系统的特殊情况,就是相机随着机械手一起移动的情况。虽然前面简单介绍了一种办法,就是每次拍照时让相机回到之前标定的位置,但是这样处理机器人的工作效率就会大大降低,产生很多重复动作,所以这篇博文就来讲一种更简单的标定方案。下面是halcon官方给的手眼标定系统的案例代码。这个例子主要应用于相机固定在机械手末端的手眼系统中,而且标定板相对于机器人也是静止的。在这种情况下,手眼校...