在深度图转3D的时候,我Z方向会往下沉(这个现象拍了个标定块,深度转3D的时候它不是凸出来而是凹下去的)
- read_image (AerialImage, ImageFiles1[IndexI])
- read_image (Z, ImageFiles[IndexI])
- get_image_size (Z, Width, Height)
- * 读取灰度图,将其灰度值作为属性添加到3D模型中。
- * 用灰度图生成标签图像,采用的方法很简单,只做展示用。
- * 自适应的阈值处理方法,将图像分为3个对象,用红蓝绿三种颜色表示。参数4表示高斯平滑的核的大小。如下图所示。
- * threshold (AerialImage, Regions, 8, 255)
- auto_threshold (AerialImage, Regions, 4)
- *将分割后的区域生成标签图像。
- * region_to_label根据分割区域的索引(1…n)将输入区域转换成标签图像,即,第一区域被绘成灰度值1,第二区域被绘成灰度值2。
- region_to_label (Regions, LabelImage, 'byte', Width, Height)
- * 将灰度图和标签图像合并为1个2通道复合图像。
- compose2 (AerialImage, LabelImage, MultiChannelAttribImage)
- * 在常规网格中创建包含X和Y坐标的灰度渐变图像。
- GroundResolution := 1.0
- * 用一阶方程来生成平面(输出图像,类型,垂直方向的参数,水平方向的参数,0阶参数,参考点的行坐标,列坐标,图像的宽高)。
- * ImageSurface(r,c) = Alpha(r - Row) +Beta(c - Column) +Gamma
- gen_image_surface_first_order (X, 'real', 0, GroundResolution, 0, 0, 0, Width, Height)
- gen_image_surface_first_order (Y, 'real', -GroundResolution, 0, 0, 0, 0, Width, Height)
- convert_image_type (Z, ImageConvertedZ, 'real')
- * 创建3D模型
- * 属性名
- AttribName := ['&gray','&terrain']
- * 该算子将包含3D点的X、Y和Z坐标的图像三元组转换为3D对象模型。
- * 从上面的程序可以看出,XY图像为与Z图同样大小的灰度渐变图像,MultiChannelAttribImage为两通道的属性图像,包含灰度图像和分割后的标签图像。
- * 其中MultiChannelAttribImage的图像通道必须和AttribName的维度大小相同。
- * 此时生成的为点云,下面用三角法生成三维图像。
- xyz_attrib_to_object_model_3d (X,Y, ImageConvertedZ, MultiChannelAttribImage, AttribName, ObjectModel3D)
- * 对对象模型进行快速的三角测量,以便更好地进行可视化。
- * 该算子通过三角法将点云重建为三维模型。
- prepare_object_model_3d (ObjectModel3D, 'segmentation', 'true', [], [])
- * 交互式地可视化3d对象模型
- moments_object_model_3d (ObjectModel3D, 'principal_axes', Moments)
- pose_invert(Moments, PoseInvert)
- pose_to_hom_mat3d(PoseInvert, HomMat3D)
- affine_trans_object_model_3d(ObjectModel3D, HomMat3D, ObjectModel_result)
- gen_cam_par_area_scan_division (0.01, 0, 7e-6, 7e-6, Width/2, Height/2,Width, Height, CamParam)
- visualize_object_model_3d (WindowHandle, ObjectModel_result, [], [], \
- ['lut','color_attrib','disp_pose'], \
- ['color1','coord_z','true'], '', [], [], PoseOut)
复制代码
|