齐次坐标:是普通坐标乘以一个系数在添加一个w的坐标,例如一个普通坐标点(x,y,z)转换为齐次坐标为(x*w,y*w,z*w,w)
齐次坐标矩阵:包含物体的位置信息与姿态信息的矩阵,最后一行固定数字0001。即一个n维的向量用n+1表示
齐次坐标矩阵的作用:
1.可以描述坐标系B相对于A的空间位置
2.可以将某个物体在坐标系B上的空间信息换到到坐标系上。
3.可以得出同一个坐标系B某向量p旋转某角度θ后的坐标
该函数主要是是针对可变模型的目标匹配,通过齐次坐标转换对图像与目标的转换。
主要流程:
1.读取region,生成相机内参,根据region创建可变形模版,设置可变性模版的重心,获取轮廓Contours
2.第一次查找全部图像中的模版,获取图像当前的齐次变换矩阵HomMat2DOut(图像中的实例相对于模版的描述),之后的每次循环都会更新该矩阵
3.当上一次执行的find_planar_uncalib_deformable_model的Score大于0则将当前待识别的图像根据上一次循环的矩阵求逆(当前图像相对于上一次执行的图像的描述)后进行仿射变换,旋转或平移到上一次图像的相对位姿,根据转换后的图像进行可变形模版的查找,查找后更新HomMat2DOut,获取图像中的Contours轮廓,将模型的中心进行齐次坐标转换,转换后将转换后的坐标与世界坐标计算绝对位姿,在图形上显示绝对位姿。
1.gen_cam_par_area_scan_division( : : Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight : CameraParam):为一个区域扫描相机生成一个相机参数元组,该参数元组具有由分割模型建模的畸变。相机标定后产生的相机内参
Focus:焦距
Kappa:径向扭曲大小,即径向畸变
Sx:单个像元的宽
Sy:单个像元的高
Cx:中心点x坐标
Cy:中心点y坐标
ImageWidth:图像宽
ImageHeight :图像高
2.create_planar_uncalib_deformable_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast, GenParamName, GenParamValue : ModelID):为未标定的透视图匹配创建可变性模版
参数:
Template :输入图像,其域将用于创建模型
NumLevels:金字塔最大数量
AngleStart:参数未使用
AngleExtent:参数未使用
AngleStep:角度步长(分辨率)
ScaleRMin:行最小缩放
ScaleRMax:参数未使用
ScaleRStep:按行方向缩放步长(分辨率)
ScaleCMin:列最小缩放
ScaleCMax:参数未使用
ScaleCStep:按列方向缩放步长
Optimization:一种用来生成模型的优化方法
Metric:匹配度量(该参数决定了模型在图像中被识别的条件,'use_polarity':图像中的对象和模型必须具有相同的对比度)
Contrast:为模版图像中对象的对比度设置阈值或滞后阈值
MinContrast:搜索图像中目标的最小对比度
GenParamName:通用类型参数
GenParamValue:通用类型值
ModelID:可变性模版句柄
3.set_deformable_model_origin( : : ModelID, Row, Column : ):设置可变模型的原点,该原点的设置是根据模版创建输入图像的中心设置的,(-20,-40)表示原点在中心的左上方
4.find_planar_uncalib_deformable_model(Image : : ModelID, AngleStart, AngleExtent, ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, GenParamName, GenParamValue : HomMat2D, Score):求出图像中可变模型的最佳匹配
参数HomMat2D:模型与找到的实例的转换矩阵
5.projective_trans_contour_xld(Contours : ContoursProjTrans : HomMat2D : ):对XLD轮廓应用投影变换
6.projective_trans_pixel( : : HomMat2D, Row, Col : RowTrans, ColTrans):对像素坐标应用齐次变换矩阵
7.vector_to_pose( : : WorldX, WorldY, WorldZ, ImageRow, ImageColumn, CameraParam, Method, QualityType : Pose, Quality):计算出世界坐标与像素坐标之间的点的绝对位姿
参数:
WorldX:世界坐标X
WorldY:世界坐标Y
WorldZ:世界坐标Z
ImageRow:像素坐标Row
ImageColumn:像素坐标Column
CameraParam:相机内参
Method:进行位姿计算的方法(perspective cameras:'planar_analytic'方法是针对世界点在一个水平面上(WorldZ=0))
QualityType :质量度量
Pose:位姿
Quality:位姿质量
8.hom_mat2d_invert( : : HomMat2D : HomMat2DInvert):求二维齐次变换矩阵的逆
9.projective_trans_image(Image : TransImage : HomMat2D, Interpolation, AdaptImageSize, TransformDomain : ):对图像应用仿射变换
参数:
Image :输入图像
TransImage :转换输出图像
HomMat2D:二维齐次变换矩阵
Interpolation:插值的方式
AdaptImageSize:是否自动调整图像大小
TransformDomain :是否改变输入图像的域