halcon算子 gen_image_to_world_plane_map

gen_image_to_world_plane_map 

名称

gen_image_to_world_plane_map —生成一个投影图,该投影图描述图像平面与世界坐标系的平面z = 0之间的映射。

签名

gen_image_to_world_plane_map(:地图CameraParamWorldPoseWidthInHeightInWidthMappedHeightMapped缩放地图类型:)

描述

gen_image_to_world_plane_map生成投影图Map,该图描述了图像坐标平面与世界坐标系中的z = 0平面(测量平面)之间的映射。该地图可用于通过操作员map_image校正图像校正后的图像既没有显示出径向畸变,也没有显示出透视畸变。它对应于通过无失真相机获取的图像,该图像垂直于测量平面。通过传递相对于WorldPose中的相机坐标系的3D姿势来选择世界坐标系 CameraParam中,您必须传递内部摄像机参数(请参阅calibrate_cameras 参数的顺序和基础相机模型)。

在许多情况下CameraParamWorldPose与操作校准相机的结果calibrate_cameras参见以下示例。

可以通过WidthInHeightIn参数指定要映射的图像的大小 输出图像左上角的像素位置由世界坐标系的原点确定。可以通过参数WidthMappedHeightMapped和 Scale选择输出图像的大小WidthMappedHeightMapped必须以像素为单位。

使用参数Scale,可以指定转换后图像中像素的大小。有两种典型的情况:首先,您可以缩放图像,以使变换后的图像中的像素坐标直接对应于度量单位,例如,一个像素对应一个微米。如果要在转换后的图像中进行测量,然后直接产生度量结果,这将很有用。第二种情况是缩放图像,以使其内容显示为与原始图像相似的大小。这很有用,例如,如果您想在转换后的图像中执行基于形状的匹配。

比例必须指定为所需像素大小/原始单位的比率1um的像素大小意味着变换后的图像中的像素对应于测量平面中的1um x 1um区域。原始单位由校准对象的坐标确定。如果原始单位是米(使用标准校准板就是这种情况),则可以使用参数值 'm''cm''mm''microns'或 'um'来直接设置变换后的图像中像素坐标的单位。

映射函数存储在输出图像Map中。 地图具有与映射后生成的图像相同的大小。 MapType用于指定输出Map的类型如果选择“ nearest_neighbor”,则“地图”由一个包含一个通道的图像组成,其中对于所得图像的每个像素,将存储输入图像像素的线性化坐标,该坐标是与转换坐标最近的像素。如果选择“双线性” 插值,则映射由一张包含五个通道的图像组成。在结果图像中每个像素的第一通道中,存储输入图像中像素的线性化坐标,该坐标相对于转换后的坐标位于左上角。其他四个通道包含用于双线性插值的转换坐标的四个相邻像素的权重,顺序如下:

image.png

例如,第二通道包含相对于转换后的坐标位于左上方的像素的权重。如果选择“ coordinate_map_sub_pix”,则“地图”由一个语义类型为“ vector_field_absolute”的矢量场图像组成,其中将针对所得图像的每个像素,将子像素的精确坐标存储在输入图像中。

如果几个图像必须使用相同的相机参数被映射, gen_image_to_world_plane_map结合map_image比操作者更有效image_to_world_plane因为只需进行一次计算的映射函数的需要。

如果要在另一个程序中重新使用创建的地图,则可以使用操作符write_image将其另存为多通道图像,格式为 'tiff'

并行化

  • 多线程类型:可重入(与非排他运算符并行运行)。

  • 多线程作用域:全局(可以从任何线程调用)。

  • 未经并行处理。

参量

地图(output_object)  (多通道)图像 对象(int4 / int8 / uint2 / vector_field)

包含映射数据的图像。

CameraParam(input_control)  数字数组→ (实数/整数)

内部摄像机参数。

元素数量: CameraParam == 8 || CameraParam == 10 || CameraParam == 11 || CameraParam == 12 || CameraParam == 14

WorldPose(input_control)  姿势→ (实数/整数)

相机坐标系中世界坐标系的3D姿势。

元素数: 7

WidthIn(input_control)  range.x → (整数)

要转换的图像的宽度。

限制:WidthIn> = 1

HeightIn(input_control)  范围→ (整数)

要转换的图像的高度。

限制:HeightIn> = 1

WidthMapped(input_control)  range.x → (整数)

生成的映射图像的宽度(以像素为单位)。

限制:WidthMapped> = 1

HeightMapped(input_control)  范围→ (整数)

生成的映射图像的高度(以像素为单位)。

限制:HeightMapped> = 1

比例尺(input_control)  数字→ (字符串/整数/实数)

规模或单位。

默认值: “ m”

建议值:'m''cm''mm''microns''um',1.0,0.01,0.001,1.0e-6,0.0254,0.3048,0.9144

MapType(input_control)  字符串→ (字符串)

映射的类型。

默认值: “双线性”

值列表:“ bilinear”“ coord_map_sub_pix”“ nearest_neighbor”

示例:

*校准相机
calibrate_cameras(CalibDataID,Error)
*获取相机参数。
get_calib_data(CalibDataID,'camera',0,'params',CamParam)
*示例值,如果没有可用的校准数据:
CamParam:= [0.0087,-1859、8.65e-006、8.6e-006、362.5、291.6、768、576]
*获取参考姿势(校准对象0的姿势4)
get_calib_data(CalibDataID,'calib_obj_pose',[0,4],“pose”,Pose)
*示例值,如果没有可用的校准数据:
Pose:= [-0.11,-0.21、2.51、352.73、346.73、336.48、0]
*补偿板厚 
set_origin_pose(Pose,-1.125,-1.0,0,PoseNewOrigin)
*将图像转换为世界平面。
read_image(Image,'calib/calib-3d-coord-04')
gen_image_to_world_plane_map(MapSingle,CamParam,PoseNewOrigin,\
 CamParam [6],CamParam [7],900、800、0.0025,'bilinear')\
 map_image(Image,MapSingle,ImageMapped)
* 清理
clear_calib_data(CalibDataID)


#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«   2021年1月   »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:

Powered By Z-BlogPHP 1.6.0 Valyria

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864