php网站建设模板下载/关键词竞价广告

php网站建设模板下载,关键词竞价广告,合肥网站建设=388元,网页微信版登录文章目录 1.获取om3文件2.准备可视化3.准备3D可视化4.读取3D模型5.显示成对注册结果16.显示成对注册结果27.联合注册模型8.处理图像8.1子采样8.2 图像计算与平滑8.3 三角测量 9.基于表面做3D匹配10.评估模型准确度10.1 在场景中找到模型10.2 计算模型和场景之间的距离 11.立体系…

文章目录

  • 1.获取om3文件
  • 2.准备可视化
  • 3.准备3D可视化
  • 4.读取3D模型
  • 5.显示成对注册结果1
  • 6.显示成对注册结果2
  • 7.联合注册模型
  • 8.处理图像
    • 8.1子采样
    • 8.2 图像计算与平滑
    • 8.3 三角测量
  • 9.基于表面做3D匹配
  • 10.评估模型准确度
    • 10.1 在场景中找到模型
    • 10.2 计算模型和场景之间的距离
  • 11.立体系统重建
    • 11.1 开始匹配
    • 11.2 执行立体系统重建

此示例显示从3D对象获取和模型创建到匹配的完整流程

步骤是:

  • 成对注册3D数据
  • 全局注册所有3D数据
  • 注册3D数据的联合
  • 采样和平滑抑制异常值
  • 三角测量
  • 模型提取和培训
  • 匹配来自另一个相机的图像
    在这里插入图片描述

1.获取om3文件

dev_update_off () //暂停刷新
获取om3文件名
list_image_files ('universal_joint_part', 'default', [], AllImageFiles)
tuple_regexp_select (AllImageFiles, 'intensities', ImageFiles)  //选择符合公式的数组元素
ImageFiles := sort(ImageFiles) //图像文件

2.准备可视化

dev_close_window () //关闭窗体
dev_open_window (250, 0, 748 + 12, 300, 'black', WindowHandle3D) //打开窗体1
dev_open_window (0, 0, 748 / 2, 240, 'black', WindowHandle1) //打开窗体2
dev_open_window (0, 748 / 2 + 12, 748 / 2, 240, 'black', WindowHandle2) //打开窗体3
set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')  //设置窗体1字体
set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')  //设置窗体2字体
set_display_font (WindowHandle3D, 16, 'mono', 'true', 'false') //设置窗体3字体
准备可视化
Color1 := 'green'   //设置颜色1为绿色
Color2 := 'yellow'  //设置颜色2为黄色
Color3 := 'gray'    //设置颜色3为灰色
dev_set_window (WindowHandle1) //切换窗体1
dev_set_draw ('margin') //设置轮廓
dev_set_color (Color1)  //切换颜色1
dev_set_window (WindowHandle2) //切换窗体2
dev_set_draw ('margin') //设置轮廓
dev_set_color (Color2)  //设置颜色2

3.准备3D可视化

准备3D可视化
CamParam1 := [0.06,0,8.5e-6,8.5e-6,380.0,150.0,760,300]   //相机1内部参数
CamParam2 := [0.06,0,8.5e-6,8.5e-6,380.0,275.0,760,550]   //相机2内部参数
create_pose (70, -20, 1800, 125, 345, 185, 'Rp+T', 'gba', 'point', PoseVisualize) //创建一个三维坐标系
Instructions[0] := '旋转: 鼠标左键' 
Instructions[1] := '缩放:   Shift + 鼠标左键'
Instructions[2] := '移动:   Ctrl  + 鼠标左键'
VisualizeParameterNames := ['color','color_0','color_1','point_size','point_size_0','point_size_1'] //参数名称
VisualizeParameterValues := [Color3,Color1,Color2,1.0,1.0,1.0] //参数值read_image (Image, 'universal_joint_part/universal_joint_part_intensities_00')  //读取图像1
read_image (Image2, 'universal_joint_part/universal_joint_part_intensities_01') //读取图像2
gen_rectangle1 (Rectangle, 0, 0, 479, 747) //创建矩形dev_set_window (WindowHandle1) //切换窗体1
dev_display (Image) //显示图像
dev_set_window (WindowHandle2) //切换窗体2
dev_display (Image) //显示图像
Message := '该程序为基于表面的3D匹配创建的一个3D模型'
Message[1] := '通过从一系列3D传感器图像来注册3D传感器数据'
Message[2] := ' '
Message[3] := '之后,该模型用于将对象定位在不同源的3D数据中'
Message[4] := ' '
Message[5] := ' '
Message[6] := '步骤 1:'
Message[7] := '成对注册3D传感器数据'
disp_message (WindowHandle3D, Message, 'window', 12, 12, 'white', 'false') //显示信息
disp_continue_message (WindowHandle3D, 'black', 'true') //暂停信息
stop () //暂停

4.读取3D模型

读取一个 3D 模型
read_object_model_3d ('universal_joint_part/universal_joint_part_xyz_00.om3', 'm', \[], [], ObjectModel3D, Status)
PreviousOM3 := ObjectModel3D
RegisteredOM3s := ObjectModel3D
copy_object_model_3d (ObjectModel3D, 'all', CollectedAffineObjects) //复制一个 3D 模型对象
Offsets := []
hom_mat3d_identity (HomMat3DStart) //创建一个三维变换矩阵
HomMat3DCompose := HomMat3DStart
采取22次扫描中的15次进行三角测量
NumTrainingImages := 15
NumSearchImages := |ImageFiles| - NumTrainingImages
for Index := 1 to NumTrainingImages - 1 by 1读取下一个 3D 模型read_object_model_3d ('universal_joint_part/universal_joint_part_xyz_' + Index$'02d', 'm',\[], [], ObjectModel3D, Status)跳过小对象,因为注册可能会失败get_object_model_3d_params (ObjectModel3D, 'num_points', ParamValue) //获取 3D 模型的参数if (ParamValue < 1000)clear_object_model_3d (ObjectModel3D) //清除3D模型continue endif注册最后一个成功的比赛和当前的模型搜索两个 3D 模型之间的转换register_object_model_3d_pair (ObjectModel3D, PreviousOM3, 'matching', 'default_parameters',\'accurate', Pose, Score)如果注册失败,请忽略此视图if (|Pose| == 0 or Score < 0.7)clear_object_model_3d (ObjectModel3D) //清除3D模型continueendiftry积累结果pose_to_hom_mat3d (Pose, HomMat3D)  //将一个三位模式转换为一个同质变换矩阵RegisteredOM3s := [RegisteredOM3s,ObjectModel3D]Offsets := [Offsets,HomMat3D]创建可视化的3D对象模型hom_mat3d_compose (HomMat3DCompose, HomMat3D, HomMat3DCompose)            //将两个三维变换矩阵相乘操作affine_trans_object_model_3d (ObjectModel3D, HomMat3DCompose, ObjectModel3DAffineTrans) //将一个 3D 模型进行任意仿射转换CollectedAffineObjects := [ObjectModel3DAffineTrans,CollectedAffineObjects]准备下一轮PreviousOM3 := ObjectModel3D显示所有3D对象模型dev_set_window (WindowHandle3D) //切换窗体1disp_object_model_3d_safe (WindowHandle3D, CollectedAffineObjects, CamParam1, PoseVisualize, VisualizeParameterNames, VisualizeParameterValues)disp_message (WindowHandle3D, '注册模型', 'window', 12, 12, 'black', 'true') //显示信息显示灰度值图像进行说明dev_set_window (WindowHandle1) //切换窗体2dev_display (Image) //显示图像dev_set_line_width (3) //设置线宽dev_display (Rectangle) //显示矩形Message := '视图 ' + Index disp_message (WindowHandle1, Message, 'window', 12, 12, 'black', 'true') //显示信息读取图像read_image (Image, ImageFiles[Index]) //读取图像现在显示新的框架,看到两个框架dev_set_window (WindowHandle2) //切换窗体3dev_display (Image) //显示图像dev_set_line_width (3) //设置线宽dev_display (Rectangle) //显示矩形Message := '视图 ' + (Index + 1) disp_message (WindowHandle2, Message, 'window', 12, 12, 'black', 'true') //显示信息catch (Exception1) clear_object_model_3d (ObjectModel3D) //清除3D模型endtry
endfor

5.显示成对注册结果1

dev_set_window (WindowHandle1)   //切换窗体2
dev_close_window () //关闭窗体
dev_set_window (WindowHandle2)   //切换窗体3
dev_close_window () //关闭窗体
dev_set_window (WindowHandle3D)  //切换窗体1
dev_set_window_extents (0, 0, 760, 550) //调整窗体大小
dev_clear_window () //清除窗体
显示成对注册的结果
Message := '成对注册结果'
disp_message (WindowHandle3D, Message, 'window', 12, 12, 'black', 'true') //显示信息
Message := '成对注册在许多图像上存在累积错误的风险,' 
Message[1] := '因此,结果将在下一步全局细化'disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false') //显示信息
visualize_object_model_3d (WindowHandle3D, CollectedAffineObjects, CamParam2, PoseVisualize,\['colored','disp_background'], [12,'true'], [], [], Instructions,\PoseVisualize)
clear_object_model_3d (CollectedAffineObjects) //清除3D模型

6.显示成对注册结果2

基于成对登记结果的所有视图的全局注册

全局登记需要近似的相对姿态(由齐次矩阵表示)作为输入。 在本例中,使用成对注册的结果。另一种可能性是使用机器人的姿势,例如,如果相机连接到机器人手臂上。

dev_clear_window () //清除窗体
Message := '步骤 2:'
Message[2] := ' '
Message[3] := '需要3D相机数据的全局注册来完善结果'
Message[4] := '这可能需要一分钟,请稍候...'
disp_message (WindowHandle3D, Message, 'window', 12, 12, 'white', 'false') //显示信息
register_object_model_3d_global (RegisteredOM3s, Offsets, 'previous', [], 'max_num_iterations',\1, HomMat3DRefined, Score) //改进 3D 模型间的相对变换
应用结果
affine_trans_object_model_3d (RegisteredOM3s, HomMat3DRefined, GloballyRegisteredOM3s) //将一个 3D 模型进行任意仿射转换
清除输入数据
clear_object_model_3d (RegisteredOM3s) //清除3D模型
Title := '全局注册结果'
visualize_object_model_3d (WindowHandle3D, GloballyRegisteredOM3s, CamParam2, PoseVisualize,\'colored', 12, Title, [], Instructions, Pose) 

7.联合注册模型

union_object_model_3d (GloballyRegisteredOM3s, 'points_surface', UnionOptimized) //将多个 3D 模型集合当一个 3D 模型
dev_clear_window () //清除窗体
Title := '联合注册模型'
Message := '这个结果还是存在噪音'
Message[2] := '因此,下一步将进行进一步的处理。.'
disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false') //显示信息
visualize_object_model_3d (WindowHandle3D, UnionOptimized, CamParam2, PoseVisualize, \['point_size','color','disp_background'], [1.0,'gray','true'],\Title, [], Instructions, Pose)
clear_object_model_3d (GloballyRegisteredOM3s) //清除3D模型

8.处理图像

对原始数据:二次采样,平滑和三角测量

8.1子采样

样本距离表示目标精度。 在采样模式'准确'中,这个大小的体素必须至少包含'min_num_points'点,以被认为是有效的。 返回体素中所有点的平均值。
MinNumPoints := 5
SampleDistance := 0.53D对象模型的处理进行采样
sample_object_model_3d (UnionOptimized, 'accurate', SampleDistance, 'min_num_points',\MinNumPoints, SampleExact)Title := '采样对象(采样距离: ' + SampleDistance + 'mm)'
Message := '采样次数减少重叠区域的点数.'
Message[1] := '因此,现在的分数需要进行平均分配'
Message[2] := '另外,体素的点数少于'+ MinNumPoints + ' 删除的点数.'
* Message[3] :=  MinNumPoints + ' 删除的点数.'
*Message[3] := 'less than ' + MinNumPoints + ' points are removed.'
dev_clear_window () //清除窗体
disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false') //显示信息
visualize_object_model_3d (WindowHandle3D, SampleExact, CamParam2, Pose, \['point_size','color','disp_background'], [1.0,'gray','true'],\Title, [], Instructions, Pose)
clear_object_model_3d (UnionOptimized) //清除3D模型

8.2 图像计算与平滑

暂时移动物体,使坐标系的原点位于物体的正下方。
这样,结合smooth_object_model_3d'mls_force_inwards'选项,
平滑对象模型的法线将向下指示,使基于表面的3D匹配更加强大。

get_object_model_3d_params (SampleExact, 'center', Center) //获取 3D 模型的参数
get_object_model_3d_params (SampleExact, 'bounding_box1', BoundingBox) //获取 3D 模型的参数
hom_mat3d_identity (HomMat3DTrans) //创建一个三维变换矩阵
hom_mat3d_translate_local (HomMat3DTrans, -Center[0], -Center[1], -BoundingBox[2], HomMat3DTranslate) //对三维变换矩阵进行平移操作
affine_trans_object_model_3d (SampleExact, HomMat3DTranslate, SampleExactTrans)//将一个 3D 模型进行任意仿射转换
smooth_object_model_3d (SampleExactTrans, 'mls', 'mls_force_inwards', 'true', SmoothObject3DTrans)//对 3D 模型的三维点进行平滑处理
hom_mat3d_invert (HomMat3DTranslate, HomMat3DInvert) //对二维变换矩阵进行倒置操作
affine_trans_object_model_3d (SmoothObject3DTrans, HomMat3DInvert, SmoothObject3D) //将一个 3D 模型进行任意仿射转换
Title := '平滑对象'
Message := '平滑减少更多噪音'
dev_clear_window () //清除窗体
disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false') //显示信息
visualize_object_model_3d (WindowHandle3D, SmoothObject3D, CamParam2, Pose, \['point_size','color','disp_background'], [1.0,'gray','true'],\Title, [], Instructions, Pose)
clear_object_model_3d (SampleExact)          //清除3D模型
clear_object_model_3d (SampleExactTrans)     //清除3D模型
clear_object_model_3d (SmoothObject3DTrans)  //清除3D模型

8.3 三角测量

Message := '请等待三角测量...'
Message[1] := '检查状态栏以获取进度信息。'
dev_clear_window () //清除窗体
disp_message (WindowHandle3D, Message, 'window', 12, 12, 'white', 'false') //显示信息
triangulate_object_model_3d (SmoothObject3D, 'greedy', [], [], Surface3D, Information) //创建一个 3D 对象模型的表面三角
Title := '平滑和三角形表面处理'
dev_clear_window ()
visualize_object_model_3d (WindowHandle3D, Surface3D, CamParam2, Pose, 'disp_background', \'true', Title, [], Instructions, Pose)
clear_object_model_3d (SmoothObject3D)   //清除3D模型

9.基于表面做3D匹配

从处理后的数据中分割万能接头部分,并从中提取基于表面的3D匹配模型。

connection_object_model_3d (Surface3D, 'mesh', 1, ObjectModel3DConnected) //确定三维对象模型的连接的组件
clear_object_model_3d (Surface3D)   //清除3D模型
选择大型组件
select_object_model_3d (ObjectModel3DConnected, ['has_triangles','num_triangles'], 'and', [1,2000], [1,100000], ObjectModel3DSelected)
Title := '大型连接组件以不同的颜色显示'
Message:= '在三角测量之后,所需对象可以容易地被分割,'
Message[1]:='该分割于基于表面的3D匹配的训练模型.'
dev_clear_window ()
disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false')
visualize_object_model_3d (WindowHandle3D, ObjectModel3DSelected, CamParam2, Pose, ['colored','disp_background'], [12,'true'], Title, '#' + ObjectModel3DSelected, Instructions, Pose)
clear_object_model_3d (ObjectModel3DConnected)   //清除3D模型
select_object_model_3d (ObjectModel3DSelected, ['central_moment_2_x','central_moment_2_y'], 'and', [150,200], [400,230], ObjectModel3DCross)
clear_object_model_3d (ObjectModel3DSelected)   //清除3D模型
Title := '分段培训模式'
Message := '该对象被用作基于表面的3D匹配的输入'
dev_clear_window ()
disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false')
visualize_object_model_3d (WindowHandle3D, ObjectModel3DCross, CamParam2, Pose, ['colored','disp_background'], [12,'true'], Title, '#' + ObjectModel3DCross, Instructions, Pose) 
确定生成的3D对象模型的法线方向
test_normal_direction (ObjectModel3DCross, InvertNormals)
创建一个最终反向法线的曲面模型
create_surface_model (ObjectModel3DCross, 0.03, 'model_invert_normals', InvertNormals, SurfaceModelID)

10.评估模型准确度

1.来自原始相机数据表面的3D匹配
2.将来自三角测量的结果应用于注册/三角测量管线的数据。
3.在此步骤中,我们评估该模型的准确度。

Message := '首先,我们尝试找到由相同相机获取的3D数据中的模型,而不是训练数据。'
for Index := 1 to NumSearchImages by 1* 读取下一个视图read_image (Image, ImageFiles[NumTrainingImages + Index - 1]) //读取图像* 从文件中读取一个 3D 模型read_object_model_3d ('universal_joint_part/universal_joint_part_xyz_' + (NumTrainingImages + Index - 1)$'02d', 'm', [], [], ObjectModel3D, Status)set_grayvals_object_model_3d (Image, ObjectModel3D)

10.1 在场景中找到模型

3D 背景中找出最佳匹配find_surface_model (SurfaceModelID, ObjectModel3D, 0.07, 0.2, 0.5, 'false', [], [],\PoseMatch, Score, SurfaceMatchingResultID)pose_to_hom_mat3d (PoseMatch, HomMat3D) //将相机参数从 3D 姿态转变成 3×4 投影矩阵affine_trans_object_model_3d (ObjectModel3DCross, HomMat3D, ObjectModel3DAffineTrans)//将一个 3D 模型进行任意仿射转换dev_clear_window ()Title := '基于表面的匹配对应的原始数据 (' + Index + '/' + NumSearchImages + ')'visualize_object_model_3d (WindowHandle3D, [ObjectModel3DAffineTrans,ObjectModel3D],\CamParam2, Pose, ['alpha_0','alpha_1','color_0','intensity_1'],\[1.0,0.8,'green','&gray'], Title, [], Instructions, Pose)

10.2 计算模型和场景之间的距离

    计算指定 3D 模型到另一个 3D 模型的距离distance_object_model_3d (ObjectModel3D, ObjectModel3DAffineTrans, [], 0, 'distance_to', 'points')准备可视化中的颜色* 蓝色:远( - >),绿色:近(< - ),红色:近( - >* - >:强度随距离增加。* < - :强度随距离减小set_distance_colors (ObjectModel3D, 1.0, 2.0)Title := '模型质量评估,显示场景点'Message := '绿色阴影部分与模型对应 'Message[1] := '红色阴影部分距离模型很远'Message[2] := '蓝色阴影部分是背景'dev_clear_window ()disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false')visualize_object_model_3d (WindowHandle3D, ObjectModel3D, CamParam2, Pose, \['alpha_0','color_0','intensity_red_0','intensity_green_0',\'intensity_blue_0','disp_background'], \[1.0,'gray','&interest','&correct','&distance','true'],\Title, [], Instructions, Pose)清除场景和变形的模型clear_object_model_3d (ObjectModel3DAffineTrans)   //清除3D模型clear_object_model_3d (ObjectModel3D)   //清除3D模型
endfor
clear_surface_model (SurfaceModelID) //清除指定的曲面匹配模型

11.立体系统重建

来自不同相机的数据的3D匹配。在这种情况下:立体系统重建

init_stereo_and_surface_model (CamParam0, StereoModelID, cam_H_ref)
tuple_regexp_select (AllImageFiles, 'camera_0', ImageFiles1) //选择符合公式的数组元素
tuple_regexp_select (AllImageFiles, 'camera_1', ImageFiles2) //选择符合公式的数组元素
tuple_regexp_select (AllImageFiles, 'camera_2', ImageFiles3) //选择符合公式的数组元素
tuple_regexp_select (AllImageFiles, 'camera_3', ImageFiles4) //选择符合公式的数组元素
hom_mat3d_identity (HomMat3DScale) //创建一个三维变换矩阵
* 从mm到m(传感器数据之间的差异)
HomMat3DScale[0] := 0.001
HomMat3DScale[5] := 0.001
HomMat3DScale[10] := 0.001
affine_trans_object_model_3d (ObjectModel3DCross, HomMat3DScale, OM3DModelTmp) //将一个 3D 模型进行任意仿射转换
clear_object_model_3d (ObjectModel3DCross) //清除3D模型
get_object_model_3d_params (OM3DModelTmp, 'center', Center) //获取 3D 模型的参数
hom_mat3d_identity (HomMat3DTrans) //创建一个三维变换矩阵
hom_mat3d_translate_local (HomMat3DTrans, -Center[0], -Center[1], -Center[2], HomMat3DTranslate) //对三维变换矩阵进行平移操作
affine_trans_object_model_3d (OM3DModelTmp, HomMat3DTranslate, OM3DModel) //将一个 3D 模型进行任意仿射转换
get_object_model_3d_params (OM3DModelTmp, 'diameter', Diameter) //获取 3D 模型的参数
clear_object_model_3d (OM3DModelTmp) //清除3D模型
dev_set_draw ('margin') //设置轮廓
dev_set_line_width (3)  //设置线宽

11.1 开始匹配

为可能的正常方向创建曲面模型。 这个方向在多重设置中是不可预测的,因为它取决于使用哪个相机对来重建一个点。
create_surface_model (OM3DModel, 0.04, 'model_invert_normals', 'false', SurfaceModelID) //清除指定的曲面匹配模型开始匹配
for IndexScene := 0 to |ImageFiles1| - 1 by 1* 每个场景打开4个图像gen_empty_obj (Images) //创建空对象read_image (Image1, ImageFiles1[IndexScene]) //读取图像1concat_obj (Images, Image1, Images) //合并图像read_image (Image2, ImageFiles2[IndexScene]) //读取图像2concat_obj (Images, Image2, Images) //合并图像read_image (Image3, ImageFiles3[IndexScene]) //读取图像3concat_obj (Images, Image3, Images) //合并图像read_image (Image4, ImageFiles4[IndexScene]) //读取图像4concat_obj (Images, Image4, Images) //合并图像将场景显示为图像dev_set_window (WindowHandle3D) //切换窗体tile_images (Images, TiledImage, 2, 'vertical') //把多重图像目标拼成一个大图像gen_rectangle1 (ImageBorders, [0,0,480,480], [0,754,0,754], [479,479,959,959], [753,1507,753,1507]) //创建矩形dev_display (TiledImage) //显示平铺图像dev_set_colored (12) //设置12众颜色dev_display (ImageBorders) //显示图像边界Message := '从4个不同的视图重建场景'disp_message (WindowHandle3D, Message, 'window', 12, 12, 'black', 'true') //显示信息

11.2 执行立体系统重建

    执行立体系统重建count_seconds (T0)  //统计时间reconstruct_surface_stereo (Images, StereoModelID, ObjectModelScene) //重建多视角 3D 曲面count_seconds (T1)  //统计时间Message[1] := '执行匹配...'disp_message (WindowHandle3D, Message, 'window', 12, 12, 'black', 'true') //显示信息3D数据的预处理首先通过消除稀疏点来过滤异常值:1.搜索附近其它点的点,并将对象模型划分为连接的组件2.只选择大组件3.将剩余组件合并为一个对象(如果剩余多个对象)4.在剩余点上,可以执行平滑以计算法线。这个步骤可以任意方向翻转法线,因为没有上下文可用性,哪个方向可能更好count_seconds (T2) //统计时间确定三维对象模型的连接的组件connection_object_model_3d (ObjectModelScene, 'distance_3d', 0.006, ObjectModel3DConnected)根据 3D 模型特征筛选出需要的 3D 模型select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 2000, 10000000, \ObjectModel3DSelected)clear_object_model_3d (ObjectModel3DConnected)     //清除3D模型* if (|ObjectModel3DSelected| > 0)将多个 3D 模型集合当一个 3D 模型union_object_model_3d (ObjectModel3DSelected, 'points_surface', UnionObjectModel3D)3D 模型的三维点进行平滑处理smooth_object_model_3d (UnionObjectModel3D, 'mls', [], [], SmoothObject3D1)count_seconds (T3) //统计时间执行匹配,如果没有找到对象,请尝试其他正常方向从 3D 背景中找出最佳匹配find_surface_model (SurfaceModelID, SmoothObject3D1, 0.02, 0.7, 0.25, 'false', 'num_matches',\3, Pose, Score, SurfaceMatchingResultID)count_seconds (T4) //统计时间elseScore := []endifTitle := '发现 ' + |Score| + ' 物体(带指示得分)在场景中 ' + (IndexScene + 1) + ' 中的 ' + |ImageFiles1|Message := '总执行时间: ' + (T4 - T0)$'4.2' + 's'Message[1] := ' - 重建:     ' + (T1 - T0)$'4.2' + 's'Message[2] := ' - 预处理:   ' + (T3 - T2)$'4.2' + 's'Message[3] := ' - 匹配:     ' + (T4 - T3)$'4.2' + 's'dev_clear_window () //清除窗体disp_message (WindowHandle3D, Message, 'window', 50, 12, 'white', 'false') //显示信息if (|Score| > 0)Objects := []for I := 0 to |Score| - 1 by 1pose_to_hom_mat3d (Pose[I * 7:I * 7 + 6], HomMat3D)//将一个三位模式转换为一个同质变换矩阵affine_trans_object_model_3d (OM3DModel, HomMat3D, ObjectModel3DAffineTrans)//将一个 3D 模型进行任意仿射转换Objects := [Objects,ObjectModel3DAffineTrans]endfor设置灰度值set_grayval_object_model_3d (Image1, SmoothObject3D1, cam_H_ref, CamParam0)3D显示结果visualize_object_model_3d (WindowHandle3D, [SmoothObject3D1,Objects], \CamParam0, [], \['point_size','alpha','alpha_0','color','color_0',\'intensity_0','disp_background'], \[1.5,1.0,1.0,'green','white','&gray','true'], Title,\[' ',Score$'0.2f'], Instructions, PoseOut1)clear_object_model_3d ([ObjectModel3DSelected,SmoothObject3D1,Objects,UnionObjectModel3D])     //清除3D模型clear_object_model_3d (ObjectModelScene)     //清除3D模型elseset_grayval_object_model_3d (Image1, SmoothObject3D1, cam_H_ref, CamParam0)visualize_object_model_3d (WindowHandle3D, SmoothObject3D1, CamParam0, [], \['intensity','disp_background'], ['&gray','true'], \Title, [], Instructions, PoseOut)clear_object_model_3d (ObjectModelScene)     //清除3D模型endif
endfor
stop ()
clear_object_model_3d (OM3DModel)     //清除3D模型
clear_surface_model (SurfaceModelID)  //清除指定的曲面匹配模型
clear_stereo_model (StereoModelID)    //清除指定的多视角立体模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件安全性测试的重要性和常用工具介绍,软件测试服务公司推荐

在当今数字化快速发展的时代&#xff0c;软件已经成为各行各业不可或缺的一部分。然而&#xff0c;随着软件系统的复杂性增加&#xff0c;安全性问题也愈发突出&#xff0c;因此软件产品生产周期中安全测试必不可少。软件安全性测试是指对软件系统进行评估&#xff0c;以发现潜…

使用 ESP8266 和 Android 应用程序实现基于 IOT 的语音控制家庭自动化

使用 ESP8266 实现基于 IOT 的语音控制家庭自动化 欢迎来到另一个令人兴奋的项目,我们将使用 Wi-Fi 模块构建一个语音控制ESP8266家庭自动化系统,您可以在其中通过语音通过 Android 应用程序从世界任何地方控制您的家用电器。是的,您只需使用语音命令即可打开或关闭负载(L…

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解 一、三者的区别与关系 1. 官方迭代过程为&#xff1a; CustomDialog 》 OpenCustomDialog 》 DialogHub 迭代过程表明&#xff0c;弹框的调用越来越便捷&#xff0c;与UI解耦&…

【C++】stack和queue的使用及模拟实现(含deque的简单介绍)

文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍&#xff08;引入…

开源PACS(dcm4che-arc-light)部署教程,源码方式

目录 文件清单下载地址安装概述OpenLDAP、Apache Directory StudioWildflydcm4che 安装部署MySQL源码编译dcm4cheedcm4chee-arc-light OpenLDAP安装ApacheDirectoryStudio安装配置WildFly服务器 部署完成 文件清单 下载地址 Apache directory studio - linkOpenLDAP - linkdcm…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors&#xff0c;见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

C语言动态内存管理(下)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;C语言动态内存管理(下) 发布时间&#xff1a;2025.3.18 隶属专栏&#xff1a;C语言 目录 动态内存常见错误内存泄漏&#xff08;Memory Leak&#xff09;典型场景后果解决方案 悬挂指针&#xff08;Dangling Pointe…

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪&#xff08;Surface-Tracking&#xff09;是指机器人通过实时感知工件曲面的三维形貌&#xff0c;动态调整运动轨迹和位姿&#xff0c;以精确跟随曲面进行加工&#xff08;如打磨、抛光、喷涂等&#xff09;的技术。 力 - 位姿协同控制 力控模式&#xff…

【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节

目录 一、事务标签&#xff08;Transaction Label&#xff09;机制 1.1 事务标签核心规则 1.2 事务标签作用域与并发性 1.3 实现建议与陷阱规避 1.4 协议设计思考 1.5 调试与验证 二、消息分片&#xff08;Fragmentation&#xff09;机制 2.1 分片触发条件 2.2 分片支…

harmonyOS NEXT开发与前端开发深度对比分析

文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…

OpenWebUI:一站式 AI 应用构建平台体验

&#x1f680; 大家好&#xff0c;今天给大家分享一个超棒的 AI 应用构建工具——OpenWebUI&#xff01;体验下来&#xff0c;只能说丝滑&#xff01;必须强烈推荐&#xff01; &#x1f525; 听说过阿里巴巴的 Qwen 吗&#xff1f;他们最新的 Qwen Chat 网站就是用 OpenWebUI…

多线程—进程与线程

1 进程 1.1 进程概念 进程&#xff1a;操作系统提供的一种抽象&#xff0c;当程序在运行时&#xff0c;好像计算机的所有硬件资源都在为其服务。换言之&#xff0c;进程就是程序的一次运行过程。进程是操作系统分配资源的基本单位。 注意&#xff1a;区分进程和程序&#xff0…

ssm框架之mybatis框架动态SQL

1 mybatis动态sql mybatis可以通过各种各样的标签在sql映射文件中实现如下功能 1、语句的动态拼接 2、前后缀格式处理 3、复杂参数处理 常用标签如下&#xff1a; 1.1 if标签 如下示例&#xff0c;当有一个入参为null或者空的时候的时候&#xff0c;不参与计算&#xff0c;…

poetry使用

1.初始化 package name 填入口文件名 poetry init2.在本目录下虚拟 poetry config virtualenvs.in-project true 3.自动生成依赖文件和vent虚拟环境&#xff0c;管理本项目下载包 poetry add flask pandas numpy 4 4.下载依赖 poetry install 5.查看都安装了什么包 poe…

Compose 的产生和原理

引言 compose 出现的目的&#xff1a; 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。 正文 compose 是什么&#xff1f; 就是一套ui框架 和flutter 一样是一套ui框架 Flutter&#xff1a;跨平台开发趋势与企业应用的…

【计算机网络】一二章

一 二 非常棒的例子 相同的传播时延&#xff0c;带宽越大&#xff0c;该链路上所能容纳的比特数越多 相同的传播时延&#xff0c;带宽越大&#xff0c;该链路上所能容纳的比特数越多 往返时间&#xff08;Round-Trip Time&#xff0c;RTT&#xff09;s是指从发送端发送数据分组…

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑&#xff0c;最方便且免费的多设备笔记同步方案就是微软自家的OneNote&#xff0c;使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote&#xff0c;经常会出现无法同步、同步失败&#xff1…

《商业智能(BI)的演进:从数据仓库到智能决策》

01、什么是商业智能BI&#xff1f; 商业智能BI - 派可数据商业智能BI可视化分析平台 首先要了解什么是商业智能BI&#xff08; Business Intelligence &#xff09;&#xff1f;百度商业智能BI有很多很多官方的定义&#xff0c;各种解释&#xff0c;实际上从这么多年的经验出发…

云钥科技工业相机定制服务,助力企业实现智能智造

在工业自动化、智能制造和机器视觉快速发展的今天&#xff0c;工业相机作为核心感知设备&#xff0c;其性能直接决定了检测精度、生产效率和产品质量。然而&#xff0c;标准化工业相机往往难以满足复杂多样的应用场景需求&#xff0c;‌工业相机定制‌逐渐成为企业突破技术瓶颈…