explore_halcon.hdev(29)之p_do_mosaicking函数模块
函数:
对图像进行拼接,拼接步骤:1.读取图像 2.计算特征点 3.计算变换矩阵 4.拼接
效果图:
算子:
1.change_radial_distortion_cam_par( : : Mode, CamParamIn, DistortionCoeffs : CamParamOut):根据指定的径向畸变确定新的相机参数。不适用与线扫描相机
参数:
Mode:
- 'fixed':只修改畸变系数,其他相机内部参数不变。会导致场景可见部分的变化
- 'fullsize':缩放系数
、
和图像中心
会修改为了保护场景中的可见部分。因此,原始图像中可见的所有点在校正图像中也可见。通常,这会导致修改后的图像中没有定义像素
- 'adaptive':是其他模式之间的权衡。场景的可见部分略微减少,以防止修改图像中的未定义像素。缩放因子与中心点修改
- 'preserve_resolution':在fullsize'模式下,原始图像中可见的所有点在修改后的图像中也可见。修改后图像的大小增加了,保证校正后的图像任何部分的分辨率都不会降低
原始图像:
校正后图像:
2.tile_images_offset(Images : TiledImage : OffsetRow, OffsetCol, Row1, Col1, Row2, Col2, Width, Height : ):将多个图像对象平铺到具有明确定位信息的大图像中
3.points_harris(Image : : SigmaGrad, SigmaSmooth, Alpha, Threshold : Row, Column):使用Harris查找感兴趣点
参数:
Image :输入图像
SigmaGrad:用于计算梯度的平滑量
SigmaSmooth:用于梯度积分的平滑量
Alpha :平方梯度矩阵的平方迹的权值
Threshold:点的最小滤波器响应
Row、 Column :检测点的行列坐标
4.proj_match_points_ransac(Image1, Image2 : : Rows1, Cols1, Rows2, Cols2, GrayMatchMethod, MaskSize, RowMove, ColMove, RowTolerance, ColTolerance, Rotation, MatchThreshold, EstimationMethod, DistanceThreshold, RandSeed : HomMat2D, Points1, Points2):通过查找点与点之间的对应,计算两个图像之间的投影变换矩阵
参数:
GrayMatchMethod:灰度值比较度量( 'ssd':使用的是灰度值差异的平方和。'sad':绝对差的和。'ncc' :标准化的互相关)
MaskSize:灰度值掩膜大小
RowMove、ColMove:平均行、列坐标移位(第二幅图像中心点相对于第一幅图像中位置点的偏移量)
RowTolerance、ColTolerance:匹配搜索窗口高度、宽度的一半(确定图像中计算点的区域)
Rotation:旋转角度范围
MatchThreshold:灰度匹配阈值
EstimationMethod:变换矩阵估计算法
DistanceThreshold:转换一致性检查的阈值
RandSeed :随机数生成器的种子
转换的步骤:首先,确定第一幅和第二幅图像中掩膜在输入点附近的灰度值相关性,并利用两幅图像中窗口的相似性生成掩膜之间的初始匹配,掩膜大小MaskSize*MaskSize。
5.bundle_adjust_mosaic( : : NumImages, ReferenceImage, MappingSource, MappingDest, HomMatrices2D, Rows1, Cols1, Rows2, Cols2, NumCorrespondences, Transformation : MosaicMatrices2D, Rows, Cols, Error):执行图像镶嵌的束调整
参数:
NumImages:用于校准的不同图像的数量
ReferenceImage:参考图像的索引
MappingSource:转换源图像的索引
MappingDest:变换的目标图像的指标
HomMatrices2D:3*3投影变换矩阵数组
Rows1、Cols1:对应点在各自源图像中的行、列坐标
Rows2、Cols2:对应点在各自目标图像中的行、列坐标
NumCorrespondences:各图像对中的对应点数
Transformation :要使用的转换类
6.dev_set_window_extents( : : Row, Column, Width, Height : ):改变活动图形窗口的位置和大小
7.gen_bundle_adjusted_mosaic(Images : MosaicImage : HomMatrices2D, StackingOrder, TransformDomain : TransMat2D):将多个图像拼接成一个图像