图漾FM855-E1相机专栏(待更新)

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

文章目录

1.FM855-E1相机

在这里插入图片描述

FM855-E1相机外观

1.1 FM855-E1工作场景

   适用材质:复杂场景下的栈板识别,比如室内有阳光斜射,有天窗,高反材质,黑色托盘等等。
   特点:波段940nm,抗光性较强。

  当前客户典型应用
  1.复杂场景下的栈板识别,比如需要抗阳光,抗高反,黑色托盘等;
  2.大件拼接体积测量;

  通过获取单帧散斑结构光纹理进行深度计算;相比于FM815-E1,产品具有较高的帧率,相比于FM851-E2,产品具有一定的抗阳光能力,适用于一些半户外或者动态场景的应用,比如识别,分类,定位等;

1.2 FM855-E1 IO线和数据线定义

1.2.1 IO接口定义

在这里插入图片描述

电源&触发接口外观

在这里插入图片描述
在这里插入图片描述

IO触发接口线序

1.2.2 数据接口线

   FM855-E1相机,网路数据线如下图所示:
在这里插入图片描述
   如果相机在动态场景中使用,建议使用高柔线,非高柔线容易引发掉线问题。

1.2.3 M12 X-Code转RJ45网线说明

   RJ45端符合EIA/TIA 568B标准,线缆说明如下图所示。
在这里插入图片描述
   如想详细了解EIA/TIA 568A与B网线标准的区别,请查看如下链接:网线色标编码标准

1.2.4 FM855-E1相机连接拓扑网络

   FM855-E1相机拓扑网络如下图:
在这里插入图片描述

DC供电方式

在这里插入图片描述

POE供电方式

1.2.5 FM855-E1相机正面安装方向

  FM855-E1相机正面安装方向如下:
在这里插入图片描述
   从左到右依次是右IR镜头,散斑投射器,RGB相机,左IR镜头。

1.2.6 上下面螺纹孔安装

  FM855-E1相机上下面有一组M3螺纹孔(螺纹深度5mm)

1.2.7 相机IO指示灯

   FM855-E1相机状态指示灯如下图所示:
在这里插入图片描述

1.3 FM855-E1相机性能指标

  FM855-E1相机的性能指标如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.4 规格指标

在这里插入图片描述

1.5 相机产品比较

在这里插入图片描述

2.FM855-E1相机调参技巧

  1.FM855-E1相机,仍建议使用官网PercipioViewer软件打开相机。

2.1 下载看图软件连接相机

  1.FM855-E1相机,建议搭配图漾官网PercipioViewer看图软件使用,看图软件下载链接:图漾PercipioViewer软件下载链接

在这里插入图片描述

  2.PercipioViewer看图软件详细操作,可查看此链接:图漾官网PercipioViewer软件操作手册

2.2 图漾PercipioViewer软件更改相机IP

  详细更改相机的IP操作,可打开链接:
  PercipioViewer软件更改相机IP

2.3 深度图调参

2.3.1 相机的IR参数

  PercipioViewer软件参数设置:
在这里插入图片描述

  :关闭Light Source模块下的auto ctrl属性,这个时候,打开相机的左右IR取流,才能看到散斑图。

  个人推荐的参数配置:
在这里插入图片描述

2.3.2 相机的Depth参数

  PercipioViewer软件参数设置:
在这里插入图片描述
  个人推荐的参数配置:
在这里插入图片描述

相机组件属性名称属性相机默认参数推荐参数默认范围
Range深度图深度图中像素值的单位TY_FLOAT_SCALE_UNIT10.0125~8
调整工作范围视差搜索范围TY_INT_SGBM_DISPARITY_NUM1601 - 320
开始搜索的视差值TY_INT_SGBM_DISPARITY_OFFSET16-43负1280至1280
视差匹配窗口的高TY_INT_SGBM_MATCH_WIN_HEIGHT151-19奇数
视差匹配窗口的宽TY_INT_SGBM_MATCH_WIN_WIDTH151-17 奇数
用于深度计算的 IR 图像数量TY_INT_SGBM_IMAGE_NUM11
周围像素约束惩罚参数 P2TY_INT_SGBM_SEMI_PARAM_P24004500-65535
误匹配相关最优匹配点与次优匹配点的百分比TY_INT_SGBM_UNIQUE_FACTOR600-511
最优匹配点与次优匹配点差值的绝对值TY_INT_SGBM_UNIQUE_ABSDIFF4000-65535
搜索滤波开关TY_BOOL_SGBM_HFILTER_HALF_WIN1true/false
中值滤波开关TY_BOOL_SGBM_MEDFILTER1true/false
中值滤波设置数值TY_INT_SGBM_MEDFILTER_THRESH1001-511
左右一致性检查开关TY_BOOL_SGBM_LRCTRUEtrue/false
左右一致性设置数值TY_INT_SGBM_LRC_DIFF81-4095
纹理滤波阈值TY_INT_SGBM_TEXTURE_THRESH00-65535
纹理滤波偏移值TY_INT_SGBM_TEXTURE_OFFSET只读只读

  同时建议开启滤波设置,不然会有很多误匹配的点。
在这里插入图片描述

2.3.3 FS/PM带SGBM参数相机调参说明

   诸如FM855-E1,FM815-IX-E1,PS800,PS802等带有SGBM参数的相机,需要进行如下操作,才能打开SGBM参数:
在这里插入图片描述
   相机参数说明连接
   而SGBM参数主要作用如下:
在这里插入图片描述

2.3.3.1 disparityNum和disparityOffset参数调整技巧

   disparityNum:视差范围。
   disparityOffset:最小视差值。

使用场景
   客户想要更改预定义的深度范围(近远端值)。
调整方向:
   深度范围减小, disparityNum大概率减小。
   深度范围远端往相机端缩进, disparityOffset变大,反之亦反。

   而disparityNum和disparityOffset参数设置,计算公式如下:

disparityNum = (baseline* fx) / depth_thres.first - (baseline* fx) / depth_thres.second + 15;
disparityOffset = ((baseline * fx) / (depth_thres.second)) - DISPARITY_TRANSLATION;

   计算公式里的每个参数的具体含义如下:

参数名输入/输出参数解释
baseline100相机基线,例如62,100,300,450等
fx1069.77depth内参fx,可通过相机config读出
depth_thres.first500需要成像的最近距离,单位mm
depth_thres.second2000需要成像的最远距离,单位mm
DISPARITY_TRANSLATION0常见为0或64,取决于左右IR是否有夹角
disparityNum175.4655
disparityOffset53.4885

   完整的计算表格从本帖子置顶位置下载。

2.3.3.2 matchWinW和matchWinH参数调整技巧

   matchWinW:匹配块横向大小
   matchWinH:匹配块纵向大小

使用场景
  针对被测物要测量的特征(针对的是平滑面,还是物体细节),进行细微的调整。
调整方向
  一般的预设置的匹配块大小可认为是一个全局考虑的值;深度图越需要平滑的,匹配块大概率是从预设值向大调整,反之,亦反。

   注意事项:请首先按照 matchWinW = matchWinH 的方式进行调整;
一般匹配块大小必须是奇数且大于等于3;

2.3.3.3 P1和P2参数调整技巧

   P1:控制视差平滑度的第一个参数。[已取消该设置]
   P1scale:控制视差平滑度的尺度参数。[已取消该设置]
   P2:控制视差平滑度的第二个参数。

使用场景: 需要调整深度图平滑度的情况。
调整方向 P1越大,越倾向于生成连续的视差图。 P1scale作用在平滑度上,P1sacle范围是[0~1],越大就越平滑。 P2越大,越倾向于消除小的视差变化。P2必须大于P1。

   注意事项:建议先调整P1sacle,后P1,再P2。

2.3.3.4 uniqueFator和uniqueAbsDiff参数调整技巧

   uniqueFator:唯一性检查阈值,最优与次优的比值约束。
   uniqueAbsDiff:唯一性检查阈值,绝对值差阈值。

使用场景:被测物有杂点、飞点、空洞过多等情况。
调整方向:后处理约束参数调整过小会产生杂点或飞点;过大则会产生大片空洞。 一般uniqueAbsDiffuniqueFator约束性更强。

2.3.4 相机的RGB参数

  PercipioViewer软件参数设置:
在这里插入图片描述

  个人推荐的参数配置:
在这里插入图片描述
  1.主要是将自动曝光目标亮度设置在3500左右。
  2.如果是在色温较大的工作场景,建议把RgbAWB自动白平衡关掉。
  3.每个参数的作用,可参看链接:相机参数作用

2.4 深度图评估

2.4.1 评估点云

  打开深度取图开关,打开下图如下位置:

在这里插入图片描述
  个人建议参考上图中的13,2的数值会收到ROI大小和ROI是否平整等因素有关,会波动较大。

2.4.2 填充空洞

在这里插入图片描述

2.4.3 滤波功能

在这里插入图片描述

2.4.4 时域滤波功能

在这里插入图片描述

2.4.5 中值滤波

在这里插入图片描述

2.4.6 调节深度图渲染效果

  个人推荐使用Turto渲染功能,该功能类似Opencv中的colorformap函数。

在这里插入图片描述

2.5 保存图像

  详细操作和图像格式,可打开链接:图漾看图软件保存图片

2.5.1 单张存图

在这里插入图片描述
  具体操作步骤如下:
在这里插入图片描述

2.5.2 连续存图

  Percipio Viewer 可以按照预设帧数连续保存图像(深度图、彩色图、左右灰度图、深度图映射至彩色图的对齐图、彩色图映射至深度图的对齐图、点云图、深度与彩色对齐后生成的点云图)。
在这里插入图片描述
  保存的格式,具体说明如下:连续保存图片

2.6 相机保存参数配置

  保存相机参数进相机storage区域,具体操作流程如下图:
  图漾相机保存参数配置
在这里插入图片描述

在这里插入图片描述

2.6.1 保存参数限制

  只能保存每个组件control下的属性,其他的参数无法保存进相机里。
在这里插入图片描述

2.6.2 保存参数注意事项

   1.在打开相机取流的时候,无法进行参数保存,需要关闭相机取流后,再进行保存参数。
   2.无法保存相机Device组件里的触发属性,。
在这里插入图片描述
   3.无法保存深度图和点云图的质量评估及后处理功能。
在这里插入图片描述
   4.无法保存Color组件的校正畸变,以及AutoISP功能。
在这里插入图片描述
   5.相机系统层的属性无法保存,如对时设置,接收包比例,图像重传等功能。

3.FM855-E1相机SDK相关

  FM855-E1相机,推荐使用的编程语言和SDK版本如下:

3.1 TYCamera之C++语言SDK(推荐)

  FM855-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。
  具体操作和Sample和案例,可打开如下链接:
  1.图漾相机3.X.X版本C++语言SDK
  2.图漾相机4.X.X版本C++语言SDK
  3.图漾官网C++语言教程

  官网修改后的C++语言SDK,可参考链接:官网修改后的C++语言的SDK

  1.如果只是单纯使用FM855-E1相机,或者其他旧的相机,没有使用GM46X和PMD相机,建议使用3.6.66版本SDK。
  2.如果同时使用FM855-E1和GM46X新相机,个人仍建议使用4.X.X版本中的Sample_V1例子。

3.2 TYCamera之ROS1版本(推荐)

  FM855-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。
  具体操作和Sample和案例,可打开如下链接:
  1.图漾相机-ROS1_SDK_ubuntu_3.X.X版本编译
  2.图漾相机-ROS1_SDK_ubuntu 4.X.X版本编译
  3.图漾官网ROS1教程

  1.如果只是单纯使用FM855-E1相机,或者其他旧的相机,没有使用GM46X和PMD相机,建议使用3.6.66版本SDK。
  2.如果同时使用FM855-E1和GM46X新相机,建议使用4.1.18及其以上版本SDK。

3.3 TYCamera之ROS2版本(推荐)

  FM855-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。
  具体操作和Sample和案例,可打开如下链接:
  1.图漾相机-ROS2-SDK-Ubuntu 3.X.X版本编译
  2.图漾相机-ROS2-SDK-Ubuntu 4.X.X版本编译
  3.图漾官网ROS2教程

  1.如果只是单纯使用FM855-E1相机,或者其他旧的相机,没有使用GM46X和PMD相机,建议使用3.6.66版本SDK。
  2.如果同时使用FM855-E1和GM46X新相机,建议使用4.1.18及其以上版本SDK。

3.4 TYCamera之C#语言SDK

  1.目前只建议使用3.X.X版本

  建议参考以下链接
  1.图漾相机——C#语言 3.X.X版本属性设置
  2.图漾官网3.X.X版本C#语言属性设置

  如果涉及到和GM46X和PMD相机混用的情况,建议联系图漾技术获取最新的SDK和说明手册。

  VCamera的详细操作可打开链接:VCamera 使用指南(C#)

3.5 TYCamera之Python语言SDK

  1.目前只建议使用3.X.X版本

  建议参考以下链接:
  1.图漾相机——Python 3.X.X版本属性设置
  2.图漾官网3.X.X版本Python语言属性设置

  如果涉及到和GM46X和PMD相机混用的情况,建议联系图漾技术获取最新的SDK和说明手册。

  VCamera的详细操作可打开链接:VCamera 使用指南(Python)

3.6 Halcon语言SDK

  建议参考以下链接:
  1.图漾Halcon版本SDK使用教程【V1.1.X新版本】

3.7 VisionPro语言SDK

  建议参考以下链接:
  1.图漾相机搭配VisionPro使用简易教程
  如果使用VisionPro调用TOF相机,,请更新官网最新版本的驱动。

4.FM855-E1相机常见FAQ

4.1 如何获取FM855-E1相机内参?

4.1.1 方法一 运行DumpCalibInfo

SDK3.6.52之后版本,新增示例程序,此示例程序可以将相机的标定参数以json文件的形式导出到本地。

  编译C++语言中的例子,之后运行Sample_V1文件夹中的DumpCalibInfo例子,会生成一个json文件,里面记录FM855–E1相机的内外参信息。
在这里插入图片描述
  生成的json文件如下图:

{
	"sn": "207000152898",
	"timestamp": "2025-12-22 15:26:10",
	"depth_calib_info" : {
		"intri": [
		1038.711182,
		0.000000,
		661.240784,
		0.000000,
		1038.711182,
		473.852783,
		0.000000,
		0.000000,
		1.000000
		],
		"image_width": 1280,
		"image_height": 960,
		"scale_unit": 1.000000
	},
	"color_calib_info" : {
		"intri": [
		1854.750610,
		0.000000,
		1283.600952,
		0.000000,
		1854.823242,
		936.768982,
		0.000000,
		0.000000,
		1.000000
		],
		"extri": [
		0.999992,
		0.003131,
		-0.002648,
		24.949505,
		-0.003122,
		0.999990,
		0.003352,
		-0.082591,
		0.002658,
		-0.003344,
		0.999991,
		-0.044184,
		0.000000,
		0.000000,
		0.000000,
		1.000000,
		0.247844
		],
		"distortion": [
		0.247844,
		0.422229,
		0.000910,
		-0.000698,
		0.189628,
		0.511626,
		0.388798,
		0.323837,
		0.001284,
		-0.000207,
		-0.002286,
		0.000561
		],
		"image_width": 2560,
		"image_height": 1920
	}
}

4.1.2 方法二 运行DumpAllFeature例子

  图漾C++语言SDK下载链接
  使用官网如下路径下的x64压缩包,通过鼠标右键+shift键,进入到PowerShell界面,运行DumpAllFeatures例子,生成对应内容:
在这里插入图片描述

4.1.3 通过PV软件

  具体方法如下:
在这里插入图片描述在这里插入图片描述
  获取的fetch_config.xml中的文件内容如下:

<?xml version="1.0" ?>
<config version="1">
<comprotocol>1.0</comprotocol>
<component id="0x80000000" addr="0x01000000" name="device">
<feature id="0x5f00" name="SN" rw="1">207000144919</feature>
<feature id="0x5f01" name="vendor" rw="1">Percipio</feature>
<feature id="0x5f02" name="model" rw="1">FM855-E1</feature>
<feature id="0x5f08" name="user defined name" rw="1">Percipio</feature>
<feature id="0x1202" addr="0x204" name="frame per trigger" rw="3">1</feature>
<feature id="0x7523" addr="0x208" name="struct trigger mode" rw="3"/>
<feature id="0x7525" addr="0x218" name="struct trigger mode ex" rw="3"/>
<feature id="0x1010" absaddr="0x64c" name="persistent IP" rw="3"/>
<feature id="0x1011" absaddr="0x65c" name="persistent netmask" rw="3"/>
<feature id="0x1012" absaddr="0x66c" name="persistent gateway" rw="3"/>
<feature id="0x1014" addr="0x400020" name="packet delay" rw="3" min="0" max="10000" inc="1"/>
<feature id="0x1017" addr="0x40002c" name="packet size" rw="3" min="100" max="1500" inc="1"/>
<feature id="0x1016" addr="0x400024" name="ntp server ip" rw="3"/>
<feature id="0x4207" addr="0x214" name="trigger out io" rw="2" writableAtRun="1"/>
<feature id="0x4205" addr="0x20c" name="cmos sync" rw="3"/>
<feature id="0x4203" name="keep alive onoff" rw="3"/>
<feature id="0x1204" name="keep alive timeout" rw="3" min="2000" inc="1" max="30000"/>
<feature id="0x1206" addr="0x210" name="trigger delay us" rw="3" min="0" max="1300000" inc="1"/>
<feature id="0x1208" addr="0x21C" name="trigger duration us" rw="3" min="1" max="1300000" inc="1"/>
<feature id="0x3209" addr="0x220" name="stream async" rw="3">
<entry name="async off" value="0"/>
<entry name="async depth" value="1"/>
<entry name="async rgb" value="2"/>
<entry name="async depth rgb" value="3"/>
<entry name="async all" value="255"/>
</feature>
<feature id="0x3201" addr="0x200" name="trig pol" rw="3">
<entry name="falling edge" value="0"/>
<entry name="rising edge" value="1"/>
</feature>
<feature id="0x1210" addr="0x228" name="capture time us" rw="1" volatile="1"/>
<feature id="0x3211" addr="0x22c" name="sync type" rw="3" volatile="1">
<entry name="sync type none" value="0"/>
<entry name="sync type host" value="1"/>
<entry name="sync type ntp" value="2"/>
<entry name="sync type ptp slave" value="3"/>
<entry name="sync type can" value="4"/>
<entry name="sync type ptp master" value="5"/>
</feature>
<feature id="0x4212" addr="0x230" name="sync ready" rw="1" volatile="1"/>
<feature id="0x7216" addr="0x268" name="struct DI0 workmode" rw="3" volatile="1"/>
<feature id="0x4213" addr="0x23c" name="flash light enable" rw="3" volatile="1" writableAtRun="1"/>
<feature id="0x1214" addr="0x240" name="flash light intensity" rw="3" min="0" max="63" inc="1" volatile="1" writableAtRun="1"/>
<intpf>AWQAUAA=</intpf>
<feature id="0x5fe0" name="device extrinsic" rw="1">0.9999999999999999 -2.1894390259468748e-20 1.048771394937079e-18 0.0 -4.4305557072085296e-20 1.0 -1.7419553150136537e-19 0.0 8.146006362862501e-19 6.071076960992772e-19 1.0 8.326672684688674e-17 0.0 0.0 0.0 1.0</feature>
         <feature id="0x5f03" name="hardware version" rw="1" hide="0">1.3.0</feature>
        <feature id="0x5f04" name="firmware version" rw="1" hide="0">3.13.77</feature>
        <build>
            <hash>model:AP04B05-001AM85X_X_X7_F121_DVP;rtl:R0.0.9_0_gfa09cb487d;kernel:R3.13.77-0-gc484756878;tycam:R3.6.49-86ae766a;gevcam:R3.13.77-0-gd613cccf</hash>
        </build>
<config_version>r3.14.0-98e107aed31beca07d70659cfb32057aad38e691
Mon Nov 13 03:21:11 UTC 2023</config_version>
<tech_model>AS850-GT6-410-CB0S0</tech_model>
<generated_time>2023-11-22T140126</generated_time>
<calibration_time>2023-11-22T134233</calibration_time>
</component>
<component id="0x00010000" addr="0x02000000" name="depth">
<feature id="0x210a" addr="0x63c" name="scale unit" rw="3" hide="0" min="0.0125" max="8.0" writableAtRun="1">1.0</feature>
<feature id="0x1003" name="intrinsic width" rw="1" hide="1">1280</feature>
<feature id="0x1004" name="intrinsic height" rw="1" hide="1">960</feature>
<feature id="0x7000" name="depth intrinsic" rw="1" hide="0">1055.6165850642942 0.0 648.4675941467285 0.0 1055.6165850642942 511.1427707672119 0.0 0.0 1.0</feature>
<feature id="0x1104" addr="0x10" name="image width" rw="1" hide="0"/>
<feature id="0x1105" addr="0x14" name="image height" rw="1" hide="0"/>
<feature id="0x3109" addr="0x18" name="image mode" rw="3" hide="0">
<entry value="0x202801e0" name="DEPTH16_640x480"/>
<entry value="0x205003c0" name="DEPTH16_1280x960"/>
<entry value="0x201400f0" name="DEPTH16_320x240"/>
</feature>
<feature id="0x1610" addr="0x600" name="image number" rw="3" hide="1" min="1" max="1">1</feature>
<feature id="0x1611" addr="0x604" name="disparity num" rw="3" hide="1" min="1" max="320" writableAtRun="1">160</feature>
<feature id="0x1612" addr="0x608" name="disparity offset" rw="3" hide="1" min="-1280" max="1280" writableAtRun="1">16</feature>
<feature id="0x1613" addr="0x60c" name="match window height" rw="3" hide="1" min="1" inc="2" max="19" writableAtRun="1">15</feature>
<feature id="0x1614" addr="0x610" name="semi global param p1" rw="3" hide="1" min="0" max="10000" writableAtRun="1" available="0">200</feature>
<feature id="0x161f" addr="0x640" name="semi global param p1 scale" rw="3" hide="1" min="0" max="25" writableAtRun="1" available="0">15</feature>
<feature id="0x1615" addr="0x614" name="semi global param p2" rw="3" hide="1" min="0" max="10000" writableAtRun="1">400</feature>
<feature id="0x1616" addr="0x618" name="uniqueness factor param" rw="3" hide="1" min="0" max="511" writableAtRun="1">60</feature>
<feature id="0x1617" addr="0x61c" name="uniqueness min absolute diff" rw="3" hide="1" min="0" max="10000" writableAtRun="1">400</feature>
<feature id="0x4619" addr="0x624" name="enable half window size" rw="3" hide="1" writableAtRun="1">true</feature>
<feature id="0x161a" addr="0x628" name="match window width" rw="3" hide="1" min="1" inc="2" max="17" writableAtRun="1">15</feature>
<feature id="0x461b" addr="0x62C" name="enable median filter" rw="3" hide="1" writableAtRun="1">1</feature>
<feature id="0x461c" addr="0x630" name="enable LRC" rw="3" hide="1" writableAtRun="1">true</feature>
<feature id="0x161d" addr="0x634" name="max LRC diff" rw="3" hide="1" min="1" max="4095" writableAtRun="1">8</feature>
<feature id="0x161e" addr="0x638" name="median filter thresh" rw="3" hide="1" min="1" max="511" writableAtRun="1">100</feature>
</component>
<component id="0x00040000" addr="0x03000000" name="leftir">
<feature id="0x3109" addr="0x18" name="image mode" rw="1">
<entry value="0x105003c0" name="mono8 1280x960"/>
</feature>
<feature id="0x1104" addr="0x10" name="image width" rw="1">1280</feature>
<feature id="0x1105" addr="0x14" name="image height" rw="1">960</feature>
<feature id="0x1003" name="intrinsic width" rw="1">1280</feature>
<feature id="0x1004" name="intrinsic height" rw="1">960</feature>
<feature id="0x7000" name="intrinsic" rw="1">1104.5226895779542 0.0 653.9212902050149 0.0 1104.4849581285523 512.6613948964257 0.0 0.0 1.0</feature>
<feature id="0x7006" name="distortion" rw="1">-0.40452408480146795 0.3155020120267352 -0.002318719836013125 0.0012867047016921465 0.24269827671170519 -0.13465522198931576 0.10288224012522049 0.41694258454851446 -0.002444766680069397 0.0004346660239811876 0.0049228293860162555 -0.0009998836752821692</feature>
<feature id="0x7008" name="rectified intrinsic" rw="1">1055.6165850642942 0.0 648.4675941467285 0.0 1055.6165850642942 511.1427707672119 0.0 0.0 1.0</feature>
<feature id="0x4510" addr="0x324" name="undistort" rw="3"/>
<feature id="0x1301" addr="0x304" name="exposure time" rw="3" min="3" max="1774" inc="1" writableAtRun="1"/>
<feature id="0x1303" addr="0x310" name="gain" rw="3" min="0" max="255" inc="1" writableAtRun="1"/>
<feature id="0x1524" addr="0x328" name="analog gain" rw="3" min="0" max="3" inc="1" writableAtRun="1"/>
</component>
<component id="0x00080000" addr="0x04000000" name="rightir">
<feature id="0x3109" addr="0x18" name="image mode" rw="1">
<entry value="0x105003c0" name="mono8 1280x960"/>
</feature>
<feature id="0x1104" addr="0x10" name="image width" rw="1">1280</feature>
<feature id="0x1105" addr="0x14" name="image height" rw="1">960</feature>
<feature id="0x1003" name="intrinsic width" rw="1">1280</feature>
<feature id="0x1004" name="intrinsic height" rw="1">960</feature>
<feature id="0x7000" name="intrinsic" rw="1">1105.180222504481 0.0 635.9795510924432 0.0 1105.2512488022203 521.3211402485035 0.0 0.0 1.0</feature>
<feature id="0x7006" name="distortion" rw="1">-0.40290627981060245 -0.049497097588038184 0.005930763996641172 -0.0032238557844577838 0.17168410536613027 -0.133855217125926 -0.26430781281390764 0.25959297257898967 0.006503489712587607 -0.0009746040633357764 -0.013254947411669493 0.0028928683761796207</feature>
<feature id="0x7008" name="rectified intrinsic" rw="1">1055.6165850642942 0.0 648.4675941467285 0.0 1055.6165850642942 511.1427707672119 0.0 0.0 1.0</feature>
<feature id="0x7001" name="rightIR to leftIR extrinsic" rw="1"> 0.9997916274201418 -0.003916105253625753 0.020034117405732393 -100.02898244238013 0.0046810315088797174 0.9992561688303683 -0.03827789177145711 -0.2569660590626839 -0.019869315151686023 0.03836369604322599 0.9990662826566145 1.4673361148865882 0.0 0.0 0.0 1.0</feature>
<feature bind="0x00044510"/>
<feature id="0x1301" addr="0x304" name="exposure time" rw="3" min="3" max="1774" inc="1" writableAtRun="1"/>
<feature id="0x1303" addr="0x310" name="gain" rw="3" min="0" max="255" inc="1" writableAtRun="1"/>
<feature id="0x1524" addr="0x328" name="analog gain" rw="3" min="0" max="3" inc="1" writableAtRun="1"/>
</component>
<component id="0x00100000" addr="0x05000000" name="rgb">
<feature id="0x3109" addr="0x18" name="RgbImageMode" rw="3">
<entry value="0x22a00780" name="yuyv 2560x1920"/>
<entry value="0x227805a0" name="yuyv 1920x1440"/>
<entry value="0x225003c0" name="yuyv 1280x960"/>
<entry value="0x222801e0" name="yuyv 640x480"/>
<entry value="0x63a00780" name="CSI BAYER12GR_2560x1920"/>
</feature>
<feature id="0x7305" addr="0x224" name="struct aec roi" rw="3" writableAtRun="1" volatile="1">
<pIsAvailable>RgbROIEnabled</pIsAvailable>
<pInvalidator>RgbImageMode</pInvalidator>
</feature>
<feature id="0x4300" addr="0x300" name="RgbAutoExpo" rw="3" writableAtRun="1">
<pIsAvailable>ImageFormatIsYUV</pIsAvailable>
<pInvalidator>RgbImageMode</pInvalidator>
</feature>
<feature addr="0x304" id="0x1301" inc="1" max="66600" min="0" name="exposure time" rw="3" writableAtRun="1">
<pInvalidator>RgbImageMode</pInvalidator>
<pInvalidator>RgbAutoExpo</pInvalidator>
</feature>
<feature id="0x4304" addr="0x314" name="RgbAWB" rw="3" writableAtRun="1">
<pIsAvailable>ImageFormatIsYUV</pIsAvailable>
<pInvalidator>RgbImageMode</pInvalidator>
</feature>
<feature addr="0x328" id="0x1524" inc="1" max="65535" min="1" name="analog gain" rw="3" writableAtRun="1">
<pInvalidator>RgbImageMode</pInvalidator>
<pInvalidator>RgbAutoExpo</pInvalidator>
</feature>
<feature id="0x1104" addr="0x10" name="image width" rw="1" volatile="1"/>
<feature id="0x1105" addr="0x14" name="image height" rw="1" volatile="1"/>
<feature id="0x1003" name="intrinsic width" rw="1">2560</feature>
<feature id="0x1004" name="intrinsic height" rw="1">1920</feature>
<feature id="0x7000" name="rgb intrinsic" rw="1"> 1864.1180144281498 0.0 1307.0030719935453 0.0 1864.6830513476277 958.5870347263894 0.0 0.0 1.0</feature>
<feature id="0x7001" name="rgb to leftIR extrinsic" rw="1"> 0.9999817911394832 0.0053463048999984044 -0.0027990022128712147 24.99383871986873 -0.005382158538158834 0.9999014972278107 -0.012962569616111353 -0.18216453078306927 0.002729424653938707 0.01297739825614758 0.9999120648214821 0.07044507666672253 0.0 0.0 0.0 1.0</feature>
<feature id="0x7006" name="distortion" rw="1">0.12058665834396809 0.5239261811792411 -0.00043789764478739744 -0.0005316767148791899 0.3414723272283012 0.3858539754884713 0.43955206535590785 0.546781530809827 0.000697851625874692 -0.0003086461431789333 0.0009279802106462601 -0.0001894273470827574</feature>
</component>
<component id="0x00400000" addr="0x07000000" name="laser">
<feature id="0x1500" addr="0x500" name="power" rw="3" min="0" max="100" inc="1" writableAtRun="1">100</feature>
<feature id="0x4501" addr="0x504" name="auto ctrl" rw="3"/>
</component>
<component id="0x01000000" addr="0x08000000" name="histogram">
 </component>
<component id="0x02000000" addr="0x09000000" name="storage">
<feature id="0x600a" addr="0x100000" name="custom block" rw="3" volatile="1" size="4096"/>
<feature id="0x600b" addr="0x200000" name="isp block" rw="3" volatile="1" size="65536"/>
</component>
<constraint id="0x00000001">
<rules id="0x0001" msg="image_num x match_h out of range">
<script>
 FunctionCheck(a,b)
 {
 if (0) {
 return ((a + 1) &gt;&gt; 1) * b &lt; 20;
 } else {
 return a * b &lt; 20;
 }
 }
 </script>
<parameter id="0x00011610" rw="1" hide="1">a</parameter>
<parameter id="0x00011613" rw="1" hide="1">b</parameter>
</rules>
</constraint>
<IntSwissKnife Name="ImageFormatIsYUV">
<pVariable id="0x00103109">IMG_MODE</pVariable>
<Formula>(IMG_MODE &amp; 0xff000000) == 0x22000000</Formula>
</IntSwissKnife>
<IntSwissKnife Name="RgbROIEnabled">
<pVariable id="0x00104300">AEC</pVariable>
<pVariable id="0x00103109">IMG_MODE</pVariable>
<Formula>((IMG_MODE &amp; 0xff000000) == 0x22000000) &amp;&amp; AEC</Formula>
</IntSwissKnife>
</config>

4.2 FM855-E1相机内参说明

  运行DumpCalibInfo例子,打印出来的内参如下:

{
	"sn": "207000152898",
	"timestamp": "2025-12-08 18:01:00",
	"depth_calib_info" : {
		"intri": [
		1038.711182,
		0.000000,
		661.240784,
		0.000000,
		1038.711182,
		473.852783,
		0.000000,
		0.000000,
		1.000000
		],
		"image_width": 1280,
		"image_height": 960,
		"scale_unit": 1.000000
	},
	"color_calib_info" : {
		"intri": [
		1854.750610,
		0.000000,
		1283.600952,
		0.000000,
		1854.823242,
		936.768982,
		0.000000,
		0.000000,
		1.000000
		],
		"extri": [
		0.999992,
		0.003131,
		-0.002648,
		24.949505,
		-0.003122,
		0.999990,
		0.003352,
		-0.082591,
		0.002658,
		-0.003344,
		0.999991,
		-0.044184,
		0.000000,
		0.000000,
		0.000000,
		1.000000,
		0.247844
		],
		"distortion": [
		0.247844,
		0.422229,
		0.000910,
		-0.000698,
		0.189628,
		0.511626,
		0.388798,
		0.323837,
		0.001284,
		-0.000207,
		-0.002286,
		0.000561
		],
		"image_width": 2560,
		"image_height": 1920
	}
}

  而运行DumpAllFeature例子,得到的内参如下:

  TY_COMPONENT_DEPTH_CAM:
         TY_STRUCT_CAM_INTRINSIC: comp(0x10000) feat(0x7000) name(depth intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       519.355591 0.000000 330.620392
                       0.000000 519.355591 236.926392
                       0.000000 0.000000 1.000000

  TY_COMPONENT_IR_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x40000) feat(0x7000) name(intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1103.123047 0.000000 688.029053
                       0.000000 1103.051025 464.999268
                       0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x40000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.139530 0.241330 -0.001936 0.005558
                       0.278741 0.411328 0.162599 0.413992
                       -0.012373 0.002406 0.003598 -0.000606

  TY_COMPONENT_IR_CAM_RIGHT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x80000) feat(0x7000) name(intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1100.755249 0.000000 651.039795
                       0.000000 1101.094971 484.487427
                       0.000000 0.000000 1.000000
         TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x80000) feat(0x7001) name(leftIR to rightIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.999506 -0.006591 0.030732 -100.038094
                       0.007075 0.999852 -0.015672 -0.061438
                      -0.030624 0.015882 0.999405 0.618249
                       0.000000 0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x80000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.153073 0.165764 0.001198 -0.002061
                       0.278788 0.425156 0.086344 0.403616
                       0.004514 -0.000852 -0.002535 0.000467

  TY_COMPONENT_RGB_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x100000) feat(0x7000) name(rgb intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1854.750610 0.000000 1283.600952
                       0.000000 1854.823242 936.768982
                       0.000000 0.000000 1.000000
         TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x100000) feat(0x7001) name(rgb to leftIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                      0.999992 0.003131 -0.002648 24.949505
                       -0.003122 0.999990 0.003352 -0.082591
                       0.002658 -0.003344 0.999991 -0.044184
                       0.000000 0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x100000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.247844 0.422229 0.000910 -0.000698
                       0.189628 0.511626 0.388798 0.323837
                       0.001284 -0.000207 -0.002286 0.000561

  从此处看出,DumpCalibInfo例子打印的是出厂标定的内外参,而DumpAllFeature例子,则是会根据分辨率,内参相应做出变化。

4.2.1 深度图内参

在这里插入图片描述
在这里插入图片描述
  1.cx和cy通常大约是图像分辨率W和H的一半,得出FM855-E1相机深度图出厂标定分辨率为1280x960
  2.由于深度相机是虚拟相机,所以其畸变参数以及外参都是零矩阵。

4.2.2 彩色图内参/畸变系数/外参

 TY_COMPONENT_RGB_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x100000) feat(0x7000) name(rgb intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1854.750610 0.000000 1283.600952
                       0.000000 1854.823242 936.768982
                       0.000000 0.000000 1.000000
       
         TY_STRUCT_CAM_DISTORTION: comp(0x100000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.247844 0.422229 0.000910 -0.000698
                       0.189628 0.511626 0.388798 0.323837
                       0.001284 -0.000207 -0.002286 0.000561

  1.cx和cy通常大约是图像分辨率W和H的一半,得出FM855-E1相机深度图出厂标定分辨率为2560x1920
  2.彩色图相机的畸变系数如下:
在这里插入图片描述

TYGetEnum(hDevice, comp_id, TY_ENUM_LENS_OPTICAL_TYPE, &lens_tpye)来区分新旧相机。
   //TY_LENS_PINHOLE是小孔成像,RGB畸变系数依次是k1,k2,p1,p2,k3,k4,k5,k6,s1,s2,s3,s4
   //TY_LENS_FISHEYE是新的鱼眼标定,RGB畸变系数依次是k1,k2,k3,k4

  3.彩色图相机的外参如下:

  TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x100000) feat(0x7001) name(rgb to leftIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                      0.999992 0.003131 -0.002648 24.949505
                       -0.003122 0.999990 0.003352 -0.082591
                       0.002658 -0.003344 0.999991 -0.044184
                       0.000000 0.000000 0.000000 1.000000

在这里插入图片描述

4.2.3 左右IR极限约束前内参/极限校正后内参

在这里插入图片描述

双目立体匹配模型

在这里插入图片描述

在这里插入图片描述

  TY_COMPONENT_IR_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x40000) feat(0x7000) name(intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1103.123047 0.000000 688.029053
                       0.000000 1103.051025 464.999268
                       0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x40000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.139530 0.241330 -0.001936 0.005558
                       0.278741 0.411328 0.162599 0.413992
                       -0.012373 0.002406 0.003598 -0.000606
 TY_COMPONENT_IR_CAM_RIGHT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x80000) feat(0x7000) name(intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1100.755249 0.000000 651.039795
                       0.000000 1101.094971 484.487427
                       0.000000 0.000000 1.000000
         TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x80000) feat(0x7001) name(leftIR to rightIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.999506 -0.006591 0.030732 -100.038094
                       0.007075 0.999852 -0.015672 -0.061438
                      -0.030624 0.015882 0.999405 0.618249
                       0.000000 0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x80000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.153073 0.165764 0.001198 -0.002061
                       0.278788 0.425156 0.086344 0.403616
                       0.004514 -0.000852 -0.002535 0.000467

4.3 FM855-E1相机光心位置

  
在这里插入图片描述
   同时通过RGB外参,可得知RGB至左IR应该在25mm左右。

  TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x100000) feat(0x7001) name(rgb to leftIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                      0.999992 0.003131 -0.002648 24.949505
                       -0.003122 0.999990 0.003352 -0.082591
                       0.002658 -0.003344 0.999991 -0.044184
                       0.000000 0.000000 0.000000 1.000000

5.成像问题FAQ

5.1 FM855-E1 成像问题

5.1.1 黑色托盘成像差

   此时需要查看散斑相机的IR图,首先需要关闭light Source里面的auto ctrl属性,之后再打开左右相机IR图查看散斑信息,是否过曝,过亮,详细操作如下图:
   建议先将analog gain调整至1至2,之后调整gain至20~32区间,调整完毕后再打开深度图取流,观察深度图成像。
在这里插入图片描述

5.1.2 点云噪点多

   搭配图漾PercipioViewer2.6.1及其以上版本软件时,FFM855-E1相机自带的SGBM属性会被隐藏,打开SGBM参数如下图:
在这里插入图片描述

打开相机SGBM参数

  同时建议开启滤波设置,不然会有很多误匹配的点。
在这里插入图片描述

5.1.3 近处拍摄料箱有溢出点云

在这里插入图片描述
  这个是因为出厂默认的disparity_num默认是160,如果在近处使用,建议这个值设置1在116~132之间

5.2 更改不了分辨率?

在这里插入图片描述
   如果某一组件打开,这个时候要想修改其他组件的分辨率,需要先关闭所有组件取流,才能进行修改分辨率。

5.3 为什么打开深度图后,查看相机左右IR图是黑图?

在这里插入图片描述
   如果需要查看左右IR散斑图,需要进行如下操作:
   1.需要关闭深度图取流
   2.同时关闭ligth组件下的auto ctrl属性
   3.再打开左右IR图
加粗样式

6.FM855-E1相机测试结果

6.1 FM855-E1 帧率测试

6.1.1 FM855-E1 出图延迟时间

   出图延迟时间:相机使用默认配置,在连续采集模式下统计从开始曝光到系统完全处理完图像的总之时间,单位微秒。
   出图延时时间测试结果如下所示:
在这里插入图片描述
在这里插入图片描述

FM855-E1相机出图延迟时间结果

6.1.2 FM855-E1 帧率测试

  FPS(帧率):指相机设置在自由采集模式下,上位机每秒采集的图像帧数。
   FM855-E1帧率测试结果如下所示:
在这里插入图片描述
在这里插入图片描述

FM855-E1相机帧率结果

7.FM855-E1相机属性设置

7.1 Device组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage区(代码中可以不设置该属性)
device 组件数据流同步TY_ENUM_STREAM_ASYNCTY_STREAM_ASYNC_ALL、TY_STREAM_ASYNC_OFF、TY_STREAM_ASYNC_DEPTH、TY_STREAM_ASYNC_RGB、TY_STREAM_ASYNC_DEPTH_RGBTYSetEnum(hDevice, TY_COMPONENT_DEVICE, TY_ENUM_STREAM_ASYNC, TY_STREAM_ASYNC_ALL);
状态保持开关TY_BOOL_KEEP_ALIVE_ONOFFtrue / falseTYSetBool(hDevice, TY_COMPONENT_DEVICE, TY_BOOL_KEEP_ALIVE_ONOFF, false);
状态保持时间TY_INT_KEEP_ALIVE_TIMEOUT2000-30000,单位:毫秒TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_KEEP_ALIVE_TIMEOUT, 6000);
采集时间TY_INT_CAPTURE_TIME_US可读不可写,int整型,单位:微秒int32_t default_value=0;
TYGetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_CAPTURE_TIME_US, &default_value);
相机对时功能TY_ENUM_TIME_SYNC_TYPETY_TIME_SYNC_TYPE_NTP、TY_TIME_SYNC_TYPE_HOST、TY_TIME_SYNC_TYPE_NONETYSetEnum(hDevice, TY_COMPONENT_DEVICE, TY_ENUM_TIME_SYNC_TYPE, TY_TIME_SYNC_TYPE_NTP);
设置相机触发模式TY_STRUCT_TRIGGER_PARAM_EX自由采集(TY_TRIGGER_MODE_OFF)、软(硬)触发(TY_TRIGGER_MODE_SLAVE)、TY_TRIGGER_MODE_M-SIG、TY_TRIGGER_MODE_M-PERTY_TRIGGER_PARAM_EX trigger;
trigger.mode = TY_TRIGGER_MODE_OFF;//根据需要的工作模式进行配置
ASSERT_OK(TYSetStruct(hDevice, TY_COMPONENT_DEVICE, TY_STRUCT_TRIGGER_PARAM_EX, &trigger, sizeof(trigger)));
数据传输包大小TY_INT_PACKET_SIZE100-1500,可读写TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_PACKET_SIZE, 100);
接受包比例TY_INT_ACCEPTABLE_PERCENT0-100,可读写TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_ACCEPTABLE_PERCENT, 90)
输出电平TY_BOOL_TRIGGER_OUT_IOtrue / falseTYSetBool(hDevice, TY_COMPONENT_DEVICE, TY_BOOL_TRIGGER_OUT_IO, true);
包延迟时间TY_INT_PACKET_DELAY0-10000,单位:微秒TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_PACKET_DELAY, value);
触发延迟时间TY_INT_TRIGGER_DELAY_US0-1300000,单位:微秒TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_TRIGGER_DELAY_US, time);
触发过滤时间TY_INT_TRIGGER_DURATION_US1-1300000,单位:微秒TYSetInt(hDevice, TY_COMPONENT_DEVICE, TY_INT_TRIGGER_DURATION_US, time);
触发防抖功能TY_STRUCT_DIO_WORKMODE/TY_DI_WORKMODE di_wm;
di_wm.mode = TY_DI_PE_INT;
di_wm.int_act = TY_DI_INT_TRIG_CAP;
uint32_t time_hw = 10;//单位ms,硬件滤波,小于设定时间的电平信号会被过滤
uint32_t time_sw = 200;//单位ms,软件滤波,连续高频触发情形,小于设置周期的后一个触发信号将被过滤
di_wm.reserved[0] = time_hw | (time_sw << 16);
TYSetStruct(hDevice, TY_COMPONENT_DEVICE, TY_STRUCT_DIO_WORKMODE, &di_wm, sizeof(di_wm));
图像重传TY_BOOL_GVSP_RESENDtrue / falseTYSetBool(hDevice, TY_COMPONENT_DEVICE, TY_BOOL_GVSP_RESEND, true)

7.2 Laser组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage区(代码中可以不设置该属性)
laser组件激光强度自动调节TY_BOOL_LASER_AUTO_CTRLtrue / falseTYSetBool(hDevice, TY_COMPONENT_LASER, TY_BOOL_LASER_AUTO_CTRL, 0);
激光强度TY_INT_LASER_POWER0-100TYSetInt(hDevice, TY_COMPONENT_LASER, TY_INT_LASER_POWER, 100);

7.3 Depth组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage区(代码中可以不设置该属性)
depth组件深度图分辨率TY_ENUM_IMAGE_MODE1280x960\640x480\320x240TYSetEnum(hDevice, TY_COMPONENT_DEPTH_CAM, TY_ENUM_IMAGE_MODE, TY_IMAGE_MODE_DEPTH16_640x480);
深度图中像素值的单位TY_FLOAT_SCALE_UNIT0.0125-8TYSetFloat(hDevice, TY_COMPONENT_DEPTH_CAM, TY_FLOAT_SCALE_UNIT, value)
视差搜索范围TY_INT_SGBM_DISPARITY_NUM1 ~ 320TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_NUM, value);
开始搜索的视差值TY_INT_SGBM_DISPARITY_OFFSET-1280 ~ 1280TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_OFFSET, value);
视差匹配窗口的高TY_INT_SGBM_MATCH_WIN_HEIGHT1 - 19 奇数TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_HEIGHT, value);
视差匹配窗口的宽TY_INT_SGBM_MATCH_WIN_WIDTH1 - 17 奇数TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_WIDTH, value);
用于深度计算的 IR 图像数量TY_INT_SGBM_IMAGE_NUM1TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_IMAGE_NUM, value);
周围像素约束惩罚参数 P2TY_INT_SGBM_SEMI_PARAM_P20 - 10000TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P2, value);
最优匹配点与次优匹配点的百分比TY_INT_SGBM_UNIQUE_FACTOR0 - 511TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_FACTOR, value);
最优匹配点与次优匹配点差值的绝对值TY_INT_SGBM_UNIQUE_ABSDIFF0 - 10000TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_ABSDIFF, value);
搜索滤波开关TY_BOOL_SGBM_HFILTER_HALF_WINtrue/falseTYSetBool(hDevice, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_HFILTER_HALF_WIN, true);
中值滤波开关TY_BOOL_SGBM_MEDFILTERtrue/falseTYSetBool(hDevice, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_MEDFILTER, true);
中值滤波设置数值TY_INT_SGBM_MEDFILTER_THRESH1 - 511TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MEDFILTER_THRESH, value);
左右一致性检查开关TY_BOOL_SGBM_LRCtrue/falseTYSetBool(hDevice, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_LRC, true);
左右一致性设置数值TY_INT_SGBM_LRC_DIFF1 - 4095TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_LRC_DIFF, value);
纹理滤波阈值TY_INT_SGBM_TEXTURE_THRESH0-65535TYSetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_TEXTURE_THRESH, value)
纹理滤波偏移值TY_INT_SGBM_TEXTURE_OFFSET只读int32_t value;
TYGetInt(hDevice, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_TEXTURE_OFFSET, &value);

7.4 RGB组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage区(代码中可以不设置该属性)
color组件像素分辨率TY_ENUM_IMAGE_MODETY_IMAGE_MODE_YUVV_2560x1920、TY_IMAGE_MODE_YUVV_1280x960、TY_IMAGE_MODE_YUVV_1920x1440、TY_IMAGE_MODE_YUVV_640x480、TY_IMAGE_MODE_CSI_BAYER12GBRG_2560x1920TYSetEnum(hDevice, TY_COMPONENT_RGB_CAM, TY_ENUM_IMAGE_MODE, TY_IMAGE_MODE_YUVV_640x480);
ROI区域TY_STRUCT_AEC_ROI长宽范围在设置的分辨率范围内 (x、y)为矩形左上角坐标,w、h为矩形宽和高,w、h不能超过当前分辨率的宽高TY_AEC_ROI_PARAM aec_roi_param;
aec_roi_param.x = 0;
aec_roi_param.y = 0;
aec_roi_param.w = 100;
aec_roi_param.h = 110;
ASSERT_OK(TYSetStruct(hDevice, TY_COMPONENT_RGB_CAM, TY_STRUCT_AEC_ROI, &aec_roi_param, sizeof(TY_AEC_ROI_PARAM)));
自动白平衡TY_BOOL_AUTO_AWBtrue / falseTYSetBool(hDevice, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_AWB, true);
自动曝光TY_INT_AE_TARGET_V0-4000TYSetInt(hDevice, TY_COMPONENT_RGB_CAM, TY_INT_AE_TARGET_Y, 3500)
增益TY_BOOL_AUTO_EXPOSUREtrue / falseTYSetBool(hDevice, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_EXPOSURE, true);
曝光时间TY_INT_EXPOSURE_TIME0-66600TYSetInt(hDevice, TY_COMPONENT_RGB_CAM, TY_INT_EXPOSURE_TIME, value);
模拟增益TY_INT_ANALOG_GAIN1-65535TYSetInt(hDevice, TY_COMPONENT_RGB_CAM, TY_INT_ANALOG_GAIN, value);

7.5 左IR组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage里(代码中可以不设置该属性)
左ir组件开启畸变校正TY_BOOL_UNDISTORTIONtrue / falseTYSetBool(hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_BOOL_UNDISTORTION, true);
增益TY_INT_GAIN0-255TYSetInt(hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_INT_GAIN, value);
模拟增益TY_INT_ANALOG_GAIN0-3TYSetInt(hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_INT_ANALOG_GAIN, value);
曝光时间TY_INT_EXPOSURE_TIME3-990TYSetInt(hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_INT_EXPOSURE_TIME, value);
是否开启HDRTY_BOOL_HDRtrue / falseTYSetBool(hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_BOOL_HDR, true);
HDR参数TY_BYTEARRAY_HDR_PARAMETER共有9个等级 仅能修改前两位,第一位是0-2,第二位是0-2uint32_t hdr_para[8] = {{0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0};
TYSetByteArray(pData->hDevice, TY_COMPONENT_IR_CAM_LEFT, TY_BYTEARRAY_HDR_PARAMETER, (const uint8_t*)(hdr_para), 1);

7.6 右IR组件

组件类型属性名称属性参数设置方式举例是否可以保存进相机Storage里(代码中可以不设置该属性)
右ir组件开启畸变校正TY_BOOL_UNDISTORTIONtrue / falseTYSetBool(hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_BOOL_UNDISTORTION, true);
增益TY_INT_GAIN0-255TYSetInt(hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_INT_GAIN, value);
模拟增益TY_INT_ANALOG_GAIN0-3TYSetInt(hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_INT_ANALOG_GAIN, value);
曝光时间TY_INT_EXPOSURE_TIME3-990TYSetInt(hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_INT_EXPOSURE_TIME, value);
是否开启HDRTY_BOOL_HDRtrue / falseTYSetBool(hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_BOOL_HDR, true);
HDR参数TY_BYTEARRAY_HDR_PARAMETER共有9个等级 仅能修改前两位,第一位是0-2,第二位是0-2uint32_t hdr_para[8] = {{0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0};
TYSetByteArray(pData->hDevice, TY_COMPONENT_IR_CAM_RIGHT, TY_BYTEARRAY_HDR_PARAMETER, (const uint8_t*)(hdr_para), 1);

8.其他学习资料

  1. 图漾官网相机规格书
  2.双目立体匹配入门【一】
  3.双目立体匹配步骤详解
  4.立体视觉入门指南(1):坐标系与相机参数
  5.双目立体视觉系统空间精度:精确定量分析

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 MAC(媒体访问控制器)与PHY(物理接口收发器)是构成以太网基础架构的两个核心组成部分,它们在数据链路层和物理层中承担着重要功能。以太网技术是计算机网络领域中应用最为广泛的局域网技术之一,其相关标准主要由IEEE通过IEEE 802.3标准来制定,该标准详细规定了从物理层到介质访问控制层的通信协议和规范。MAC主要负责数据链路层的下半部分功能,其核心职责包括对网络中的数据传输进行管理,确保数据能够准确无误地在网络中传输。MAC通过评估网络状态来决定是否可以发送数据,并在发送前为数据附加必要的控制信息,最终将数据和控制信息按照标准格式传输至物理层。在接收数据时,MAC协议负责判断数据传输是否出现错误,若无错误则将数据的控制信息剥离后传递给逻辑链路控制(LLC)层。 PHY则负责物理层的具体实现,涵盖了电信号的传输与接收,以及将数据转换为物理信号发送至网络,或将物理信号转换回数据供MAC处理。IEEE 802.3标准对PHY的规范进行了规定,不同速度的PHY,例如10BaseT和100BaseTX,虽然在物理层上具有相同的分组描述,但所采用的信令机制存在差异,10BaseT使用曼彻斯特编码,而100BaseTX采用4B/5B编码,这种设计防止了硬件在不同速度下能够轻易兼容。 媒体独立接口(MII)是用于连接MAC和PHY的标准接口,作为IEEE 802.3定义的一个以太网行业标准,它包含了数据接口和管理接口。数据接口运用了两条独立的信道,其中一条用于发送器,另一条用于接收器,每条信道都包含数据、时钟和控制信号。总共需要16个信号来实现MII接口,以支持MAC和PHY之间的数据交...
内容概要:本文系统研究了基于交流潮流的电力系统多元件N-k故障模型,通过Matlab代码实现了在多重故障条件下电力系统潮流的精确计算与安全性分析。该模型充分考虑交流潮流的非线性特性,构建了更为精确的N-k故障数学表达形式,能够有效模拟实际电网中多个元件同时发生故障的复杂场景,从而提升对系统脆弱性的识别能力和安全评估的准确性。研究重点涵盖故障组合的高效枚举、交流潮流方程在故障状态下的修正求解方法,以及关键故障场景的筛选机制,并配套提供完整的Matlab仿真程序,便于用户复现结果、验证算法并拓展应用于其他测试系统。; 适合人群:具备电力系统分析基础理论知识和Matlab编程能力的科研人员、电气工程专业研究生,以及从事电网安全评估、可靠性分析和运行调度的工程技术人员。; 使用场景及目标:①开展电力系统多重故障下的安全性与稳定性评估;②支撑电网规划阶段的N-k安全准则校验;③用于学术研究中对连锁故障传播机理的建模与仿真分析;④识别电网中的关键薄弱环节,为提升系统韧性、制定应急控制策略和优化防护资源配置提供技术依据。; 阅读建议:建议读者结合电力系统潮流计算与稳定性相关理论,深入理解N-k故障建模的核心逻辑,重点关注交流潮流在故障注入后的处理方法,务必动手运行所提供的Matlab代码,通过调试与修改加深对算法实现细节的掌握,并尝试将其应用于IEEE标准测试系统或其他实际电网模型中进行对比验证与性能优化。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从0到1学视觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值