原文作者写的一系列博客,挺不错的学习halcon:http://blog.sina.com.cn/s/blog_442bfe0e0100yjtn.html

1.get_image_pointer1(Image : : : Pointer, Type, Width, Height)

返回第一通道的点,图像数据类型,图像尺寸。

2.disp_image(Image : : WindowHandle : )

在输出窗口显示灰度图像

3.visualize_results_of_find_marks_and_pose (ImageL, WindowHandle1, RCoordL, CCoordL, StartPoseL, StartCamParL)

内部函数,显示初步标定的坐标系和MARKS中心,MARKS中线用十字线标出。

4.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose : )

储存以点为基础的标定观测值,将观测值储存与标定数据句柄中。

5.calibrate_cameras( : : CalibDataID : Error)

根据标定数据模型中的值标定摄像机。

6.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue)

查询储存或计算得到的标定模型中的数据。

7.write_cam_par( : : CameraParam, CamParFile : )

把相机内参数写入TXT文件

8.write_pose( : : Pose, PoseFile : )

把相机的位姿写入TXT文件

9.gen_binocular_rectification_map( : Map1, Map2 : CamParam1, CamParam2, RelPose,SubSampling, Method, MapType : CamParamRect1, CamParamRect2, CamPoseRect1,CamPoseRect2, RelPoseRect)

把相机参数和姿态作为输入,输出为校正图像和矫正后的参数和姿态。

10.map_image(Image, Map : ImageMapped : : )

dev_update_window ('off')
* Set the image path
ImgPath := '3d_machine_vision/stereo/'
* Read the first images to get their size
i := 0
read_image (ImageL, ImgPath+'calib_distorted_l_'+i$'03d')
read_image (ImageR, ImgPath+'calib_distorted_r_'+i$'03d') //分别读取左右目图像,编号长3位//
* Reopen the windows with an appropriate size
dev_close_window ()
dev_close_window ()
get_image_pointer1 (ImageL, PointerL, TypeL, WidthL, HeightL)
get_image_pointer1 (ImageR, PointerR, TypeR, WidthR, HeightR)
dev_open_window (0, 0, WidthL, HeightL, 'black', WindowHandle1)
dev_open_window (0, WidthL+5, WidthL, HeightL, 'black', WindowHandle2)//为左右目各打开一

个图形窗口//
* Set the calibration plate description file
CaltabName := 'caltab_30mm.descr'
* Set the initial values for the interior camera parameters
StartCamParL := [0.0125, 0, 7.4e-6, 7.4e-6,WidthL/2.0,HeightL/2.0,WidthL,HeightL]
StartCamParR := StartCamParL
* parameter settings for find_caltab and find_marks_and_pose
SizeGauss := 3
MarkThresh := 120
MinDiamMarks := 5
StartThresh := 128
DeltaThresh := 10
MinThresh := 18
Alpha := 0.9
MinContLength := 15
MaxDiamMarks := 100
* Create a calibration data model in which all calibration data
* including the image coordinates of the calibration marks and
* the observation poses of the calibration plate will be
* accumulated
create_calib_data ('calibration_object', 2, 1, CalibDataID)      //创建标定数据模型句柄//
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamParL)//在标定模型中

设置相机的类型和原始参数//
set_calib_data_cam_param (CalibDataID, 1, 'area_scan_division', StartCamParR)
set_calib_data_calib_object (CalibDataID, 0, CaltabName)        //定义一个标定对象//

* Start the loop over the calibration images
for i := 0 to 10 by 1
    * Read and display the calibration images
    read_image (ImageL, ImgPath+'calib_distorted_l_'+i$'03d')
    read_image (ImageR, ImgPath+'calib_distorted_r_'+i$'03d')
    disp_image (ImageL, WindowHandle1)
    disp_image (ImageR, WindowHandle2)                         //读取并显示图像//
    * Search for the calibration plate
  find_caltab (ImageL, CaltabL, CaltabName, SizeGauss, MarkThresh, MinDiamMarks)
  find_caltab (ImageR, CaltabR, CaltabName, SizeGauss, MarkThresh, MinDiamMarks)//输出标定板区域//
    disp_region (CaltabL, WindowHandle1)
    disp_region (CaltabR, WindowHandle2)                     //显示标定区域//          
    * Extract the calibration marks and estimate an initial pose
    find_marks_and_pose (ImageL, CaltabL, CaltabName, StartCamParL, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordL, CCoordL, StartPoseL)
    * Visualize the extracted calibration marks and the
    * coordinate system defined by the estimated pose.
    visualize_results_of_find_marks_and_pose (ImageL, WindowHandle1, RCoordL, CCoordL, StartPoseL, StartCamParL)                      //显示初步标定的坐标系和MARKS中心//
    * Extraction of marks and pose as well as visualization of the
    * results for the second image.
    find_marks_and_pose (ImageR, CaltabR, CaltabName, StartCamParR, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordR, CCoordR, StartPoseR)
    visualize_results_of_find_marks_and_pose (ImageR, WindowHandle2, RCoordR, CCoordR, StartPoseR, StartCamParR)
    * Store the image coordinates of the calibration marks as well
    * as the estimated initial poses for all stereo pairs in the
    * calibration data model
    *  - Camera 0 is the (L)eft camera
    *  - Camera 1 is the (R)ight camera
    set_calib_data_observ_points (CalibDataID, 0, 0, i, RCoordL, CCoordL, 'all', StartPoseL)
    set_calib_data_observ_points (CalibDataID, 1, 0, i, RCoordR, CCoordR, 'all', StartPoseR)
                                                        //在标定数据模型句柄中储存标定结果//

endfor
* Perform the actual calibration
calibrate_cameras (CalibDataID, Errors)         //根据标定数据模型中的值标定摄像机//
* Get the calibrated camera parameters
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParamL)
get_calib_data (CalibDataID, 'camera', 1, 'params', CamParamR)      //获取摄像机参数//
* Since the left camera is the reference camera for the
* calib data model, the pose of the right camera is its
* pose relative to the left camera
get_calib_data (CalibDataID, 'camera', 1, 'pose', cLPcR)    //获取右目相对于左目的位姿//
* Store the results into files
write_cam_par (CamParamL, 'cam_left-125.dat')
write_cam_par (CamParamR, 'cam_right-125.dat')
write_pose (cLPcR, 'pos_right2left.dat')                    //将相机参数写入文件//
* Generate the rectification maps
gen_binocular_rectification_map (MapL, MapR, CamParamL, CamParamR, cLPcR, 1, 'geometric', 'bilinear', RectCamParL, RectCamParR, CamPoseRectL, CamPoseRectR, RectLPosRectR)
 //把相机参数和姿态作为输入,输出为校正图像和矫正后的参数和姿态。//
* Read in a stereo image pair, aquired with the stereo camera system,
* which has been calibrated, just now.
read_image (ImageL, ImgPath+'caliper_distorted_l')
read_image (ImageR, ImgPath+'caliper_distorted_r')
* Rectify the stereo images and display them
map_image (ImageL, MapL, ImageRectifiedL)
map_image (ImageR, MapR, ImageRectifiedR)
dev_set_window (WindowHandle1)
dev_clear_window ()
dev_display (ImageRectifiedL)
dev_set_window (WindowHandle2)
dev_clear_window ()
dev_display (ImageRectifiedR)
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()
dev_set_window (WindowHandle2)
dev_close_window ()
dev_update_window ('on')
dev_set_window (WindowHandle1)
dev_clear_window ()
dev_display (ImageRectifiedL)
clear_calib_data (CalibDataID)

Halcon四 双目视觉的标定的更多相关文章

  1. halcon摄像机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  2. Halcon相机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  3. Halcon学习标定助手

    本文采用halcon标定助手进行标定. 第一步:打开标定助手. 第二步:对描述文件进行修改 具体:打开算子窗口,输入gen_caltab,进行描述文件修改. 参数XNum和YNum为7行*7列的圆,M ...

  4. 分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享

    分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享 全文转载zhao jun 博士的新浪博客,版权为zhaojun博士所有 原文地址:http://blog.sin ...

  5. 基于HALCON的双目立体视觉系统实现

    双目立体视觉是机器视觉的一种重要形式,它是基于视差原理并由多幅图像获取物体三维几何信息的方法.双目立体视觉系统一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得 ...

  6. 球体的双目视觉定位(matlab,附代码)

    球体的双目视觉定位(matlab,附代码) 标签(空格分隔): 机器视觉 引言 双目视觉定位是我们的一个课程设计,最近刚做完,拿出来与大家分享一下,实验的目的是在拍摄的照片中识别球体,并求出该球体到相 ...

  7. Halocn双目相机标定

    [Halcon]Halcon双目标定 相机标定(4)---基于halcon的双目立体视觉标定 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,) 双目测距 ...

  8. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

  9. usb-cam (2)摄像机标定

    http://blog.csdn.net/heyijia0327/article/details/43538695 官方也给出了单目的标定教程和双目视觉的标定教程.本教程基于usb_cam  pack ...

随机推荐

  1. Git学习文档——文件状态git status

    1.已经跟踪的文件有三种状态 已跟踪的文件,即被纳入版本控制的文件,又分为未修改(unmodified).已修改(modified).已暂存(staged)三种状态. 如图: 当在工作目录中新加入一个 ...

  2. 51nod 1444 破坏道路(bfs+枚举)

    1444 破坏道路 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 在某一个国家,那儿有n个城市,他们通过m条双向 ...

  3. linux_bc命令

    bc 命令:     bc 命令是用于命令行计算器. 它类似基本的计算器. 使用这个计算器可以做基本的数学运算. 语法:  语法是      bc [命令开关]命令开关:      -c 仅通过编译. ...

  4. windows 下搭建git服务器,及问题处理。

    最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...

  5. Android利用fidller进行网络抓包

    http://www.oschina.net/question/221817_129716?fromerr=z7ZX9oZR http://www.trinea.cn/android/android- ...

  6. webpack.config.js配置遇到Error: Cannot find module '@babel/core'问题

    在webpack配置,将ES6转成ES5的时候,,出现Error: Cannot find module '@babel/core'错误最初以为是babel-core没有安装上.重装了好几遍babel ...

  7. .NET平台下开源三维 GIS (地形与游戏)平台资料

    .net平台下开源(免费)三维(地形,游戏)GIS平台 open source (free) 3d (terrain,game) gis platform based on .net (C#) Axi ...

  8. 关于iframe的父页面调取子页面里的事件(父往子里传)

    在body里打开一个iframe页面,想要调取打开的这个页面里的函数: $('iframe')[0].contentWindow.sonFn(canshu); [0]:比如在index.html页面里 ...

  9. vue组件懒加载(Load On Demand)

    在Web应用程序中,系统的瓶颈常在于系统的响应速度.如果系统响应速度过慢,用户就会出现埋怨情绪,系统的价值也因此会大打折扣.因此,提高系统响应速度,是非常重要的. 懒加载(Load On Demand ...

  10. #leetcode刷题之路45-跳跃游戏 II

    给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例:输入: [2,3,1,1,4]输出: 2 ...