《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数

《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数

为方便阅读,在不影响说明的前提下,笔者对函数进行了简化:

  • :: 用符号“**”,替换:“procedure”
  • :: 用大写字母“X”,替换:“IHUntypedObjectX”
  • :: 省略了字符:“const”、“OleVariant”

【示例】 说明

函数:

procedure AddNoiseWhiteContourXld( const Contours: IHUntypedObjectX; out NoisyContours: IHUntypedObjectX; NumRegrPoints: OleVariant; Amp: OleVariant);

简化后为:

** AddNoiseWhiteContourXld( Contours: X; out NoisyContours: X; NumRegrPoints, Amp);

  1 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
  2 
  3 为简化文本,在不影响
  4 说明的前提下,笔者对函数进行了简化:
  5 :: 用符号“**”,替换:“procedure”
  6 :: 用大写字母“X”,替换:“IHUntypedObjectX”
  7 :: 省略了字符:“const”、“OleVariant”
  8 【示例】
  9 说明
 10 函数:
 11 procedure AddNoiseWhiteContourXld( const Contours: IHUntypedObjectX; out NoisyContours: IHUntypedObjectX; NumRegrPoints: OleVariant; Amp: OleVariant); 
 12 简化后为:
 13 ** AddNoiseWhiteContourXld( Contours: X; out NoisyContours: X; NumRegrPoints, Amp); 
 14 ----------------------
 15 【《zw版·Halcon-delphi系列原创教程》,网址,cnblogs.com/ziwang/】
 16 ----------------------
 17 
 18 ** 3dFromFundamentalMatrix( Rows1, Cols1, Rows2, Cols2, CovRR1, CovRC1, CovCC1, CovRR2, CovRC2, CovCC2, FMatrix, CovFMat, out X, out Y, out Z, out W, out CovXYZW); 
 19 说明,  从矩阵建立3d对象
 20 
 21 ** AffineTransObjectModel3D( ObjectModel3D, HomMat3d, out ObjectModel3DAffineTrans); 
 22 说明,  affine_trans_object_model_3d,把一个任意有限3D变换用于一个3D目标模型。
 23 
 24 ** AffineTransPoint3D( HomMat3d, Px, Py, Pz, out Qx, out Qy, out Qz); 
 25 说明,  affine_trans_point_3d,对点运用一个随即仿射三维变换。
 26 
 27 ** AreaObjectModel3D( ObjectModel3D, out Area); 
 28 说明,  测量3d物体表面面积
 29 
 30 ** CamParPoseToHomMat3d( CameraParam, Pose, out HomMat3d); 
 31 说明,  Cam_Par_Pose_To_Hom_Mat_3d,从相机内部参数计算一个3D汉明矩阵。
 32 
 33 ** ClearAllObjectModel3D; 
 34 说明,  clear_all_object_model_3d,释放所有3D目标模型的内存。
 35 
 36 ** ClearAllShapeModel3D; 
 37 说明,  clear_all_shape_model_3d,释放所有3D轮廓模型的内存。
 38 
 39 ** ClearObjectModel3D( ObjectModel3D); 
 40 说明,  clear_object_model_3d,释放一个3D目标模型的内存。
 41 
 42 ** ClearShapeModel3D( ShapeModel3DID); 
 43 说明,  clear_shape_model_3d,释放一个3D轮廓模型的内存。
 44 
 45 ** ConnectionObjectModel3D( ObjectModel3D, Feature, Value, out ObjectModel3DConnected);
 46 
 47 ** ConvertPoint3DCartToSpher( X, Y, Z, EquatPlaneNormal, ZeroMeridian, out Longitude, out Latitude, out Radius); 
 48 说明,  convert_point_3d_cart_to_spher,把直角坐标系中的一个3D点转变为极坐标。
 49 
 50 ** ConvertPoint3DSpherToCart( Longitude, Latitude, Radius, EquatPlaneNormal, ZeroMeridian, out X, out Y, out Z); 
 51 说明,  convert_point_3d_spher_to_cart,把极坐标中的一个3D点转变为直角坐标。
 52 
 53 ** ConvexHullObjectModel3D( ObjectModel3D, out ObjectModel3DConvexHull); 
 54 说明,  ConvexHullObjectModel3D,影响区域凸性的3D模型系数。
 55 
 56 ** CopyObjectModel3D( ObjectModel3D, Attributes, out CopiedObjectModel3D); 
 57 说明,  复制3d模型对象
 58 
 59 ** CreateCamPoseLookAtPoint( CamPosX, CamPosY, CamPosZ, LookAtX, LookAtY, LookAtZ, RefPlaneNormal, CamRoll, out CamPose); 
 60 说明,  create_cam_pose_look_at_point,从摄像机中心和观察方向创建一个3D摄像机位置。
 61 
 62 ** CreateShapeModel3D( ObjectModel3D, CamParam, RefRotX, RefRotY, RefRotZ, OrderOfRotation, LongitudeMin, LongitudeMax, LatitudeMin, LatitudeMax, CamRollMin, CamRollMax, DistMin, DistMax, MinContrast, GenParamNames, GenParamValues, out ShapeModel3DID); 
 63 说明,  create_shape_model_3d,为匹配准备一个3D目标模型。
 64 
 65 ** CreateSurfaceModel( ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue, out SurfaceModelID); 
 66 说明,  建立表面模型
 67 
 68 ** DeserializeHomMat3d( SerializedItemHandle, out HomMat3d); 
 69 说明,  3d汉明矩阵数据转换
 70 
 71 ** DeserializeObjectModel3D( SerializedItemHandle, out ObjectModel3D); 
 72 说明,  3d模型对象数据转换
 73 
 74 ** DeserializeShapeModel3D( SerializedItemHandle, out ShapeModel3DID); 
 75 说明,  3d轮廓模型数据转换
 76 
 77 ** DisparityImageToXyz( Disparity: X; out X: X; out Y: X; out Z: X; CamParamRect1, CamParamRect2, RelPoseRect); 
 78 说明,  disp_xld,显示物体到3D坐标系。
 79 
 80 ** DisparityToPoint3D( CamParamRect1, CamParamRect2, RelPoseRect, Row1, Col1, Disparity, out X, out Y, out Z); 
 81 说明,  disparity_to_point_3d,将一个图像点和它的不均衡值转换为一个矫正立体系统中的三维点。
 82 
 83 ** DispObjectModel3D( WindowHandle, ObjectModel3D, CamParam, Pose, GenParamName, GenParamValue);
 84 
 85 ** DistanceObjectModel3D( ObjectModel3DFrom, ObjectModel3DTo, Pose, MaxDistance, GenParamNames, GenParamValues);
 86 
 87 ** FindShapeModel3D( Image: X; ShapeModel3DID, MinScore, Greediness, NumLevels, GenParamNames, GenParamValues, out Pose, out CovPose, out Score); 
 88 说明,  find_shape_model_3d,在一个图像中找出一个3D模型的最佳匹配。
 89 
 90 ** FindSurfaceModel( SurfaceModelID, ObjectModel3D, RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle, GenParamName, GenParamValue, out Pose, out Score, out SurfaceMatchingResultID); 
 91 说明,  找出表面模型
 92 
 93 ** FitPrimitivesObjectModel3D( ObjectModel3D, ParamName, ParamValue, out ObjectModel3DOut); 
 94 说明,  根据3D模型获取对象
 95 
 96 ** GenBoxObjectModel3D( Pose, LengthX, LengthY, LengthZ, out ObjectModel3D); 
 97 说明,  生成3d对象框架
 98 
 99 ** GenCylinderObjectModel3D( Pose, Radius, MinExtent, MaxExtent, out ObjectModel3D); 
100 说明,  创建3d柱状模型
101 
102 ** GenEmptyObjectModel3D( out EmptyObjectModel3D); 
103 说明,  创建一个空的3D模型对象。
104 
105 ** GenObjectModel3DFromPoints( X, Y, Z, out ObjectModel3D); 
106 说明,  从节点生成3d模型对象
107 
108 ** GenPlaneObjectModel3D( Pose, XExtent, YExtent, out ObjectModel3D); 
109 说明,  生成3d模型平面
110 
111 ** GenSphereObjectModel3D( Pose, Radius, out ObjectModel3D); 
112 说明,  创建球形3d模型对象
113 
114 ** GenSphereObjectModel3DCenter( X, Y, Z, Radius, out ObjectModel3D); 
115 说明,  创建中心球形3d模型对象
116 
117 ** GetDispObjectModel3DInfo( WindowHandle, Row, Column, Information, out Value); 
118 说明,  获取显示3d模型对角信息
119 
120 ** GetObjectModel3DParams( ObjectModel3D, ParamName, out ParamValue); 
121 说明,  get_object_model_3d_params,返回一个3D目标模型的参数。
122 
123 ** GetShapeModel3DContours( out ModelContours: X; ShapeModel3DID, Level, View, out ViewPose); 
124 说明,  get_shape_model_3d_contours,返回一个3D轮廓模型视图的轮廓表示。
125 
126 ** GetShapeModel3DParams( ShapeModel3DID, GenParamNames, out GenParamValues); 
127 说明,  get_shape_model_3d_params,返回一个3D轮廓模型的参数。
128 
129 ** GetSheetOfLightResultObjectModel3D( SheetOfLightModelID, out ObjectModel3D); 
130 说明,  获取光线表结果,3d模型
131 
132 ** GnuplotPlotImage( Image: X; GnuplotFileID, SamplesX, SamplesY, ViewRotX, ViewRotZ, Hidden3D); 
133 说明,  gnuplot_plot_image,使用gnuplot使一个图像可视化。
134 
135 ** HomMat3dCompose( HomMat3dLeft, HomMat3dRight, out HomMat3dCompose); 
136 说明,  hom_mat3d_compose,将两个同质三维变换矩阵相乘。
137 
138 ** HomMat3dDeterminant( HomMat3d, out Determinant); 
139 说明,  构建三维变换矩阵。
140 
141 ** HomMat3dIdentity( out HomMat3dIdentity); 
142 说明,  hom_mat3d_identity,构建三维变换同样的齐次变换矩阵。
143 
144 ** HomMat3dInvert( HomMat3d, out HomMat3dInvert); 
145 说明,  hom_mat3d_invert,插入一个同质三维变换矩阵。
146 
147 ** HomMat3dProject( HomMat3d, PrincipalPointRow, PrincipalPointCol, Focus, out HomMat2d); 
148 说明,  hom_mat3d_project,给一个二维投影变换矩阵投影一个仿射三维变换矩阵。
149 
150 ** HomMat3dRotate( HomMat3d, Phi, Axis, Px, Py, Pz, out HomMat3dRotate); 
151 说明,  hom_mat3d_rotate,为一个同质三维变换矩阵添加一个循环。
152 
153 ** HomMat3dRotateLocal( HomMat3d, Phi, Axis, out HomMat3dRotate); 
154 说明,  hom_mat3d_rotate_local,为一个同质三维变换矩阵添加一个循环。
155 
156 ** HomMat3dScale( HomMat3d, Sx, Sy, Sz, Px, Py, Pz, out HomMat3dScale); 
157 说明,  hom_mat3d_scale,为一个同质三维变换矩阵添加一个缩放。
158 
159 ** HomMat3dScaleLocal( HomMat3d, Sx, Sy, Sz, out HomMat3dScale); 
160 说明,  hom_mat3d_scale_local,为一个同质三维变换矩阵添加一个缩放。
161 
162 ** HomMat3dToPose( HomMat3d, out Pose); 
163 说明,  hom_mat3d_to_pose,将一个齐次变换矩阵转换为一个三维模式。
164 
165 ** HomMat3dTranslate( HomMat3d, Tx, Ty, Tz, out HomMat3dTranslate); 
166 说明,  hom_mat3d_translate,为一个同质三维变换矩阵添加一个旋转。
167 
168 ** HomMat3dTranslateLocal( HomMat3d, Tx, Ty, Tz, out HomMat3dTranslate); 
169 说明,  hom_mat3d_translate_local,为一个同质三维变换矩阵添加一个旋转。
170 
171 ** HomMat3dTranspose( HomMat3d, out HomMat3dTranspose); 
172 说明,  计算齐次变换矩阵。
173 
174 ** IntersectPlaneObjectModel3D( ObjectModel3D, Plane, out ObjectModel3DIntersection); 
175 说明,  计算3d模型平面交集。
176 
177 ** MaxDiameterObjectModel3D( ObjectModel3D, out Diameter); 
178 说明,  3d模型最大直径
179 
180 ** MomentsObjectModel3D( ObjectModel3D, MomentsToCalculate, out Moments); 
181 说明,  3d xld对象被看做点云的轮廓,的几何时刻(moments)
182 
183 ** ObjectModel3DToXyz( out X: X; out Y: X; out Z: X; ObjectModel3D, Type_, CamParam, Pose); 
184 说明,  3d对象xyz坐标
185 
186 ** PoseToHomMat3d( Pose, out HomMat3d); 
187 说明,  pose_to_hom_mat3d,将一个三位模式转换为一个齐次变换矩阵。
188 
189 ** PrepareObjectModel3D( ObjectModel3D, Purpose, OverwriteData, GenParamName, GenParamValue); 
190 说明,  为图像准备一个变化模型。
191 
192 ** Project3DPoint( X, Y, Z, CameraParam, out Row, out Column); 
193 说明,  project_3d_point,将三维点投射到子像素图像坐标。
194 
195 ** ProjectHomPointHomMat3d( HomMat3d, Px, Py, Pz, Pw, out Qx, out Qy, out Qw); 
196 说明,  3D目标模型,投影坐标计算
197 
198 ** ProjectiveTransHomPoint3D( HomMat3d, Px, Py, Pz, Pw, out Qx, out Qy, out Qz, out Qw); 
199 说明,  3d节点,投影变换矩阵计算
200 
201 ** ProjectiveTransObjectModel3D( ObjectModel3D, HomMat3d, out ObjectModel3DProjectiveTrans);
202 
203 ** ProjectiveTransPoint3D( HomMat3d, Px, Py, Pz, out Qx, out Qy, out Qz);
204 
205 ** ProjectObjectModel3D( out ModelContours: X; ObjectModel3D, CamParam, Pose, GenParamName, GenParamValue); 
206 说明,  project_object_model_3d,把一个3D目标模型的边缘投影到图像坐标中。
207 
208 ** ProjectPointHomMat3d( HomMat3d, Px, Py, Pz, out Qx, out Qy); 
209 说明,  3D目标模型,节点投影坐标计算
210 
211 ** ProjectShapeModel3D( out ModelContours: X; ShapeModel3DID, CamParam, Pose, HiddenSurfaceRemoval, MinFaceAngle); 
212 说明,  project_shape_model_3d,把一个3D轮廓模型的边缘投影到图像坐标中。
213 
214 ** QuatRotatePoint3D( Quaternion, Px, Py, Pz, out Qx, out Qy, out Qz); 
215 说明,  Quat旋转矩阵,节点3D旋转
216 
217 ** QuatToHomMat3d( Quaternion, out RotationMatrix); 
218 说明,  Quat旋转矩阵,3D矩阵
219 
220 ** ReadObjectModel3D( FileName, Scale, GenParamName, GenParamValue, out ObjectModel3D, out Status); 
221 说明,  读取3d模型测量
222 
223 ** ReadObjectModel3DDxf( FileName, Scale, GenParamNames, GenParamValues, out ObjectModel3D, out DxfStatus); 
224 说明,  read_object_model_3d_dxf,从一个DXF文件中读取一个3D目标模型。
225 
226 ** ReadShapeModel3D( FileName, out ShapeModel3DID); 
227 说明,  read_shape_model_3d,从一个文件中读取一个3D轮廓模型。
228 
229 ** ReduceObjectModel3DByView( Region: X; ObjectModel3D, CamParam, Pose, out ObjectModel3DReduced); 
230 说明,  通过视口,减少图像区域
231 
232 ** RefineSurfaceModelPose( SurfaceModelID, ObjectModel3D, InitialPose, MinScore, ReturnResultHandle, GenParamName, GenParamValue, out Pose, out Score, out SurfaceMatchingResultID); 
233 说明,  细化表面模型
234 
235 ** RegisterObjectModel3DGlobal( ObjectModels3D, HomMats3D, From, To_, GenParamName, GenParamValue, out HomMats3DOut, out Scores); 
236 说明,  注册为全局3d模型对象
237 
238 ** RegisterObjectModel3DPair( ObjectModel3D1, ObjectModel3D2, Method, GenParamName, GenParamValue, out Pose, out Score); 
239 说明,  注册为全局双目3d模型对象
240 
241 ** RenderObjectModel3D( out Image: X; ObjectModel3D, CamParam, Pose, GenParamName, GenParamValue); 
242 说明,  渲染3d模型对象
243 
244 ** RigidTransObjectModel3D( ObjectModel3D, Pose, out ObjectModel3DRigidTrans); 
245 说明,  刚性3d模型变换
246 
247 ** ructSurfaceStereo( Images: X; StereoModelID, out ObjectModel3D); 
248 说明,  从立体表面获取高度
249 
250 ** SampleObjectModel3D( ObjectModel3D, Method, SampleDistance, GenParamName, GenParamValue, out SampledObjectModel3D); 
251 说明,  3d模型样本
252 
253 ** SegmentObjectModel3D( ObjectModel3D, ParamName, ParamValue, out ObjectModel3DOut);
254 
255 ** SelectObjectModel3D( ObjectModel3D, Feature, Operation, MinValue, MaxValue, out ObjectModel3DSelected); 
256 说明,  选择3d模型目标。
257 
258 ** SelectPointsObjectModel3D( ObjectModel3D, Attrib, MinValue, MaxValue, out ObjectModel3DThresholded); 
259 说明,  选择3d模型节点。
260 
261 ** SerializeHomMat3d( HomMat3d, out SerializedItemHandle); 
262 说明,  3d hom矩阵数据序列化
263 
264 ** SerializeObjectModel3D( ObjectModel3D, out SerializedItemHandle); 
265 说明,  3d模型数据序列化
266 
267 ** SerializeShapeModel3D( ShapeModel3DID, out SerializedItemHandle); 
268 说明,  3d轮廓数据序列化
269 
270 ** SetObjectModel3DAttrib( ObjectModel3D, Name, Type_, Data, out ObjectModel3DOut); 
271 说明,  设置3d模型属性
272 
273 ** SetObjectModel3DAttribMod( ObjectModel3D, Name, Type_, Data); 
274 说明,  设置3d模型属性
275 
276 ** SmallestBoundingBoxObjectModel3D( ObjectModel3D, Type_, out Pose, out Length1, out Length2, out Length3);
277 
278 ** SmallestSphereObjectModel3D( ObjectModel3D, out CenterPoint, out Radius); 
279 说明,  3d模型最小外接球形对象
280 
281 ** SmoothObjectModel3D( ObjectModel3D, Method, GenParamName, GenParamValue, out SmoothObjectModel3D); 
282 说明,  平滑3d模型
283 
284 ** SurfaceNormalsObjectModel3D( ObjectModel3D, Method, GenParamName, GenParamValue, out ObjectModel3DNormals); 
285 说明,  3d模型表面
286 
287 ** TransPoseShapeModel3D( ShapeModel3DID, PoseIn, Transformation, out PoseOut); 
288 说明,  trans_pose_shape_model_3d,把一个3D目标模型的坐标系中的位置转变为一个3D轮廓模型的参考坐标系中的位置,反之亦然。
289 
290 ** TriangulateObjectModel3D( ObjectModel3D, Method, GenParamName, GenParamValue, out TriangulatedObjectModel3D, out Information); 
291 说明,  3角曲面3d模型
292 
293 ** UnionObjectModel3D( ObjectModels3D, Method, out UnionObjectModel3D); 
294 说明,  合并3d模型
295 
296 ** VectorToHomMat3d( TransformationType, Px, Py, Pz, Qx, Qy, Qz, out HomMat3d); 
297 说明,  矢量矩阵变换
298 
299 ** VolumeObjectModel3DRelativeToPlane( ObjectModel3D, Plane, Mode, UseFaceOrientation, out Volume); 
300 说明,  3d模型相对体积平面
301 
302 ** WriteObjectModel3D( ObjectModel3D, FileType, FileName, GenParamName, GenParamValue); 
303 说明,  保存3d模型数据
304 
305 ** WriteShapeModel3D( ShapeModel3DID, FileName); 
306 说明,  write_shape_model_3d,向一个文件写入一个3D轮廓模型。
307 
308 ** XyzToObjectModel3D( X: X; Y: X; Z: X; out ObjectModel3D); 
309 说明,  xyz坐标到3d模型在;换