explore_halcon.hdev(29)之p_do_mosaicking函数模块

函数:

对图像进行拼接,拼接步骤:1.读取图像 2.计算特征点 3.计算变换矩阵 4.拼接

效果图:

explore_halcon.hdev(29)之p_do_mosaicking函数模块

算子:

1.change_radial_distortion_cam_par( : : Mode, CamParamIn, DistortionCoeffs : CamParamOut):根据指定的径向畸变确定新的相机参数。不适用与线扫描相机

参数:

Mode:

  • 'fixed':只修改畸变系数,其他相机内部参数不变。会导致场景可见部分的变化
  • 'fullsize':缩放系数explore_halcon.hdev(29)之p_do_mosaicking函数模块explore_halcon.hdev(29)之p_do_mosaicking函数模块和图像中心explore_halcon.hdev(29)之p_do_mosaicking函数模块会修改为了保护场景中的可见部分。因此,原始图像中可见的所有点在校正图像中也可见。通常,这会导致修改后的图像中没有定义像素
  • 'adaptive':是其他模式之间的权衡。场景的可见部分略微减少,以防止修改图像中的未定义像素。缩放因子与中心点修改
  • 'preserve_resolution':在fullsize'模式下,原始图像中可见的所有点在修改后的图像中也可见。修改后图像的大小增加了,保证校正后的图像任何部分的分辨率都不会降低

原始图像:

explore_halcon.hdev(29)之p_do_mosaicking函数模块

校正后图像:

explore_halcon.hdev(29)之p_do_mosaicking函数模块

explore_halcon.hdev(29)之p_do_mosaicking函数模块  explore_halcon.hdev(29)之p_do_mosaicking函数模块  explore_halcon.hdev(29)之p_do_mosaicking函数模块  explore_halcon.hdev(29)之p_do_mosaicking函数模块

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):将多个图像拼接成一个图像