2020-04-28 20:47:10
单相机标定的目的是完成像素坐标到世界坐标之间在的转换。使用halcon标定助手完成的即是单相机标定。程序运行后,载入10张标定板文件,最后用calibrate_cameras算子执行标定。这一步相当于标定向导中载入十标定板图片,最后点击标定按钮。有关halcon标定向导的标定说明见勇哥的另一篇贴子《勇哥的视觉实验:halcon的标定助手》。标定完成后,接下来进行测量。先测量标定版外框之间的宽度,你...
2020-04-25 17:28:45
上一个博文说了一种手眼标定系统的特殊情况,就是相机随着机械手一起移动的情况。虽然前面简单介绍了一种办法,就是每次拍照时让相机回到之前标定的位置,但是这样处理机器人的工作效率就会大大降低,产生很多重复动作,所以这篇博文就来讲一种更简单的标定方案。下面是halcon官方给的手眼标定系统的案例代码。这个例子主要应用于相机固定在机械手末端的手眼系统中,而且标定板相对于机器人也是静止的。在这种情况下,手眼校...
2020-04-11 09:16:37
最近在做的项目有用到手眼标定,是关于两个康耐视工业相机和爱普生SCARA机器人之间的手眼标定,相机是固定安装,属于Eye-to-hand固定方式。考虑到halcon中用于标定的算子和实例都比较丰富,并且halcon作为一款商用的视觉与图像处理软件,其可靠性、精度等都是opencv所不能比的。此次所用到的标定实例是calibrate_hand_eye_scara_stationary_cam,在研...
2020-04-11 08:31:28
*该例程说明了怎样给SCARA机器人做手眼标定。这种情况下,相机相对与机械臂而言是固定安装的,所以能探测到机械臂的整个工作控件范围。用于标定的标定板是固定安装在机械臂的末端工具上。最后,标定结果和用于确定要被抓取的物体的位置的数据都保存到了本地文件中。在例程pick_and_place_scara_stationary_cam.hdev程序中有被使用到。*提供校准板的描述文件和先前校准过的摄像机的...
2020-04-11 08:26:02
需要指出的是,HALCON中有两种标定板,create_caltab函数创建的标定板如下图所示它是一种蜂窝标定板。用默认的参数生成这种标定板的代码如下:create_caltab (27, 31, 0.00258065, [13,6,6,20,20], [15,6,24,6,24],
'light_on_dark', 'calplate.cpd', 'c...
2020-04-11 07:32:58
(一)实验器材准备说明(1)相机型号:MV-EM500M这个相机品牌是维视智造,500万像素,GigE接口。通过官方网站,查到它的基础信息如下:(2)标定板实验型号: HG-40-9X9-4.0-2.0-3.0这型号中的HG不知道啥意思, 40指的是矩形外边之间长宽是40mm。9X9指的是里面的圆形数量是9*9个。后面的4.0-2.0-3.0不知道啥意思。不过这个标定板的厚度是3mm。勇哥这块标定...
2020-04-09 16:58:44
OCR(Optical Character Recongnition)即我们通常意义上讲的光学字符识别。在HALCON中,OCR常被用来分割区域及读取识别图像中的字符含义。HALCON中提供了一组预先训练好的字体(在安装目录下的ocr文件夹中),这些字体来源于各个领域的大量训练数据,可识别文档、制药、工业产品或点打印,甚至手写数字文本。此外,HALCON还包括用于OCR-A和OCR-N的预训练字体...
2020-04-07 16:50:32
今天有个网友问到这个add_metrology_object_line_measure算子没有角度参数,怎么做roi跟随。勇哥网站上搜索了一下,还真没有写过这样的贴子,因此制作了一个小例子,给有需要的朋友参考。代码比较简单。用了形态模板匹配来定位roi位置。第一张图用来定义了模板。中间那几个变量 a,b,c,d,e,f,g,h是roi四个边的顶点。那一部分代码实际上的作用是:已知rectangle...
2020-04-07 10:53:48
* This example demonstrates the functionality of segment_image_mser.
*
* Create artificial example image.
create_example_image (Image)
*
dev_update_off ()
dev_close_window ()
dev_open_window_...
2020-04-07 10:47:37
segment_image_mser(Image : MSERDark, MSERLight : Polarity, MinArea, MaxArea, Delta, GenParamName, GenParamValue : )segment_image_mser使用最大稳定极值区域(MSER)方法将图像分割成灰度值均匀的区域。分割过程通过观察周围的局部区域来判断一个区域是否是均匀的。因此,该算...
2020-04-06 21:23:05
1、摄像机外参:决定摄像机坐标与世界坐标系之间相对位置关系。其中Pw为世界坐标,Pc是摄像机坐标,他们之间关系为Pc = RPw + T式中,T= (Tx,Ty,Tz),是平移向量,R = R(α,β,γ)是旋转矩阵,分别是绕摄像机坐标系z轴旋转角度为γ,绕y轴旋转角度为β,绕x轴旋转角度为α(也可以从左像右看把它理解为先绕x轴旋转α,再绕旋转后的坐标系的y轴旋转β,最后绕再次旋转后的z轴旋转γ)...
2020-04-06 21:16:28
StartCamParam (input_control)数阵-> (实数/整数)Camer type 为:'area_scan_division''area_scan_polynomial,,area_scan_telecentric_division,,area_scan_telecentric_polynomiar'line_scan'(类型不同...
2020-04-06 20:55:57
摄像机分为两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera)。准确来说,叫摄像机系统比较正确。所谓的面扫描摄像系统是指可以通过单纯曝光取得面积影像,而线扫描摄像机,必须利用运动速度才能取得影像。两种不同的摄像系统由于成像的过程有区别,所以标定的过程也有区别,这里仅讨论面扫描摄像系统。流程如下: 1、初始摄像机参数:startCamP...
2020-04-06 20:37:43
勇哥先放上代码,有空时再研究一下。* Attention:
* This program reads the interior camera parameters from the file
* 'camera_parameters.dat', which, e.g., could be generated by the program
* 'camera_calib...
2020-04-06 20:13:39
勇哥先上程序,后面再解释:list_files ('E:/calibration_image', 'files', ImageFiles)
TmpCtrl_AllMarkRows := []
TmpCtrl_AllMarkColumns := []
TmpCtrl_StartPoses := []
TmpCtrl_ReferenceIndex := 0
S...
2020-04-06 17:10:18
两根线的起始点端点值如下:1065.69,1190.38,1054.0,1193.51065.86,1190.35,1054.0,1194.0这个坐标看上去是不是几乎一样,在0.5个像素的差别内。那么两线的角度是不是就应该差不多呢?dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)...
2020-04-04 08:37:16
对于标定来说,一般常见的有用于测量的线性与非线性标定,另一类就是和运动相关的标定,手眼标定。勇哥写过许多epson机器人的手眼标定,也有halcon仿制这种方式的实现方法。但是halcon有自己的手眼标定。CalibObjDescr := 'calibrate_hand_eye_scara_setup_01_calplate.cpd'
CalibrationPlateThickn...
2020-04-01 08:58:09
*重要理解一下这个几个算子
* dev_update_off ()
* dev_update_on ()
* dev_update_pc ('off')
* 计算区域的总数,使用count_obj()算子...
2020-04-01 07:34:52
程序调用十张不同光照下的图片,尝试找ncc模板,求取模板位置。最后计算结果的标准差。代码如下:* This example program shows how to use HALCON's correlation-based
* matching. In particular it demonstrates the robustness of this method against...
2020-03-31 09:37:10
OpenCv的Mat和Halcon的HObject数据类型的互相转换,Halcon的版本是13.0,OpenCV的版本是3.2HObject Mat2HObject(const cv::Mat &image)
{
HObject Hobj = HObject();
int hgt = image.rows;
int wid = image.cols;
int i;
/...
2020-03-31 09:21:52
最小二乘法拟合直线概念:最小二乘法多项式直线拟合,根据给定的点,求出它的函数y=f(x),当然求得准确的函数是不太可能的,但是我们能求出它的近似曲线y=φ(x) 原理假设有点 , I = 1,2,3,……n,求近似曲线y=φ(x),并且使得y=φ(x)与y=f(x)的平方偏差和最小,偏差其中我们要找到一组最好的a b ,“最好的”就是要使选出的a b能使得所有的误差达到最小化。在此要注意以下,y...
2020-03-31 09:08:53
勇哥接触过的基本上是面阵CCD,对于线扫相机没有接触过,这个贴子介绍了线扫相机的halcon标定的知识,放在这里做为扫盲贴子。一、标定板标定 13.0在工业镜头选型过程中,为了方便各位朋友计算工业镜头参数,现提供靶面尺寸表供参考。1.1英寸————靶面尺寸为宽12mm*高12mm,对角线17mm1英寸————靶面尺寸为宽12.7mm*高9.6mm,对角线16mm2/3英寸————靶面尺寸为宽8.8...
2020-03-30 23:24:10
这个不是hlacon的标准标定板。勇哥想知道这个+-0.009mm是怎么整出来了。这个例子值得研究一下。ImgPath := '3d_machine_vision/calib/'
dev_close_window ()
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
dev_update_off...
2020-03-30 23:13:36
*
* Initialize the program
dev_close_window () //关闭图形窗口
dev_open_window (0, 0, 768, 576, 'black', WindowHandle) //打开一个原点在(0,0)的宽为768,高为576,背景为黑色的图形窗口;
dev_update_off ()
dev_set_draw...
2020-03-30 22:45:05
这个例子有点意思 ,非常值得学习一下。它是测量透视畸变图像上的划痕的长度。利用halcon标定板,在透视畸变下进行标定。把畸变消除后,测量标准片的长度,很准确,是3cm。然后测量透视畸变图像上的划痕的长度。代码:* This program measures the length of scratches in world
* coordinates in a perspectively dis...
2020-03-30 22:13:34
two_camera_calibration.hdev* This example program shows how high precision mosaicking
* can be performed with calibrated cameras.
*
* Further information can be found in the
* Solution Guide III-...
2020-03-30 11:48:59
勇哥今天突然想到一个要求:希望read_region读到的Region对象如何转回rectangle2的5个参数。看下面的代码,gen_rectangle2生成的region被保存起来,之后我通过read_region读回来,想得到当初gen_rectangle2的那5个参数常量。通过region_features算子取得的4个参数len1,len2,row,col其小数点后第一位有差别。取到的p...
2020-03-14 07:29:03
1. 分类器使用范围 : 1.1 image segmentation 图像分割; object recognition 对象识别; quality control 质量控制; novelty detection 缺陷检测; optical character recognition(OCR) 光学字符识别;2. 几类重要的HALCON分类器: 2.1 多...
2020-03-06 13:43:05
1.初始化相机并设置相机内部参数和相机类型,确定校准目标。gen_cam_par_area_scan_divisioncreate_calib_dataset_calib_data_cam_paramset_calib_data_calib_object2.校正相机find_calib_objectget_calib_data(CalibDataID, ‘camera’, 0, ‘init_par...
2020-03-06 11:39:03
对于相机采集的图片,会由于相机本身和透镜的影响产生形变,通常需要对相机进行标定,获取相机的内参或内外参,然后矫正其畸变。相机畸变主要分为径向畸变和切向畸变,其中径向畸变是由透镜造成的,切向畸变是由成像仪与相机透镜的不平行造成的。针孔模型是理想透镜的成像模型,但是实际中相机的透镜不可能是理想的模型,透镜形状的非理想特征造成像点会沿径向发生畸变。一个像点沿径向内缩叫负畸变,或桶形畸变沿径向外延叫正畸变...