首页 > 其他分享 >Halcon图像拼接

Halcon图像拼接

时间:2024-10-24 12:48:14浏览次数:7  
标签:control Halcon Width 拼接 图像 Images input gen

read_image (Image13, 'E:/vs//13.png')
get_image_size (Image13, Width, Height)

gen_rectangle1 (Rectangle, 0, 0, Height, Width/2)
reduce_domain (Image13, Rectangle, ImageReduced)
crop_domain (ImageReduced, Image1)

gen_rectangle1 (Rectangle, 0, Width/4, Height, 3*Width/4)
reduce_domain (Image13, Rectangle, ImageReduced)
crop_domain (ImageReduced, Image2)

gen_rectangle1 (Rectangle, 0, Width/2, Height, Width)
reduce_domain (Image13, Rectangle, ImageReduced)
crop_domain (ImageReduced, Image3)

tile_images— 将多个图像对象平铺为一个大图像。常用于固定点位拍摄图像拼接

concat_obj (Image1, Image2, Images)
concat_obj (Images, Image3, Images)
count_obj (Images, Number)
tile_images_offset (Images, TiledImage, [0,0,0], [0, Width/4,Width/2], [-1,-1,-1], [-1,-1,-1], [-1,-1,-1], [-1,-1,-1], 1527, 623)

proj_match_points_ransac 是一个在Halcon中用于基于RANSAC算法进行点匹配的算子。这个算子能够通过灰度匹配方法计算点之间的相似度,然后使用RANSAC算法从中筛选出内点,并估计出最佳的变换矩阵。最后,输出匹配点对和变换矩阵,用于后续的图像处理任务。

From := [1,2]
To := [2,3]
Num := |From|
*需要变量来累加投影变换矩阵, 匹配点的坐标,以及匹配的个数每个图像对的点。

ProjMatrices := []
Rows1 := []
Cols1 := []
Rows2 := []
Cols2 := []
NumCorrespondences := []
for J := 0 to Num - 1 by 1
    F := From[J]
    T := To[J]
    select_obj (Images, ImageF, F)
    select_obj (Images, ImageT, T)
    * 提取两幅图像中的点。
    SigmaGrad := 1
    SigmaSmooth := 3
    Alpha := 0.04
    Threshold := 0
    points_harris (ImageF, SigmaGrad, SigmaSmooth, Alpha, Threshold, RowFAll, ColFAll)
    points_harris (ImageT, SigmaGrad, SigmaSmooth, Alpha, Threshold, RowTAll, ColTAll)
    * 为搜索窗口的位置定义初始值
    
        FShiftR := 0
        FShiftC := 0
        TShiftR := 0
        TShiftC := Width/4
        
    RowMove := (FShiftR - TShiftR) / 1
    ColMove := (FShiftC - TShiftC) / 1
    * 执行匹配
    MaskSize := 1
    RowTolerance := 80
    ColTolerance := 80
    Rotation := 0
    MatchThreshold := 50
    DistanceThreshold := 0.4
    RandSeed := 0
    proj_match_points_ransac (ImageF, ImageT, RowFAll, ColFAll, RowTAll, ColTAll, 'sad', MaskSize, RowMove, ColMove, RowTolerance, ColTolerance, Rotation, MatchThreshold, 'gold_standard', DistanceThreshold, RandSeed, ProjMatrix, Points1, Points2)
    *累加变换矩阵
    ProjMatrices := [ProjMatrices,ProjMatrix]
    * 匹配点。
    Rows1 := [Rows1,subset(RowFAll,Points1)]
    Cols1 := [Cols1,subset(ColFAll,Points1)]
    Rows2 := [Rows2,subset(RowTAll,Points2)]
    Cols2 := [Cols2,subset(ColTAll,Points2)]
    NumCorrespondences := [NumCorrespondences,|Points1|]
    * 生成十字,表示平铺图像中提取的点。必须取平铺图像中图像的行偏移量考虑在内。
    
    gen_cross_contour_xld (PointsF, RowFAll + FShiftR, ColFAll + FShiftC, 6, rad(45))
    gen_cross_contour_xld (PointsT, RowTAll + TShiftR, ColTAll + TShiftC, 6, rad(45))
    * 生成匹配的点对作为线的表示。我们创建XLD轮廓线,使我们可以放大到图形窗口仔细观察一下比赛结果。

    RowF := subset(RowFAll,Points1) + FShiftR
    ColF := subset(ColFAll,Points1) + FShiftC
    RowT := subset(RowTAll,Points2) + TShiftR
    ColT := subset(ColTAll,Points2) + TShiftC
    gen_empty_obj (Matches)
    for K := 0 to |RowF| - 1 by 1
        gen_contour_polygon_xld (Match, [RowF[K],RowT[K]], [ColF[K],ColT[K]])
        concat_obj (Matches, Match, Matches)
    endfor
    * 现在显示提取的数据。
    dev_set_color ('blue')
    dev_display (Matches)
    dev_set_color ('green')
    dev_display (PointsF)
    dev_display (PointsT)
endfor

bundle_adjust_mosaic

NumImages (input_control):用于校准的不同图像的数量。 限制:NumImages >= 2

ReferenceImage (input_control):参考图像的索引。

MappingSource (input_control):变换的源像的下标。

MappingDest (input_control):变换的目标像的下标。

HomMatrices2D (input_control):3×3射影变换矩阵的数组。

Rows1 (input_control):源图像中相应点的行坐标。

Cols1 (input_control):源图像中对应点的列坐标

Rows2 (input_control):目标图像中相应点的行坐标。

Cols2 (input_control):目标图像中相应点的列坐标。

nummappings (input_control):对应图像对中的点对应数。

Transformation(input_control):要使用的转换类。 默认值:“射影” 值列表:'affine', 'projective', 'rigid', 'similarity'。

MosaicMatrices2D (output_control):3×3射影变换矩阵的数组,确定图像在马赛克中的位置。

Rows(output_control):通过束平差重建的点的行坐标。

Cols(output_control):通过束平差重建的点的列坐标。

Error (output_control):每个重构点的平均误差。

gen_bundle_adjusted_mosaic— 将多个图像合并为一个马赛克图像。

Images:输入图像

MosaicImage:输出的马赛克图像

HomMateices2D:3x3 投影数组 变换矩阵。

StackingOrder:马赛克中图像的堆叠顺序。

TransformDomain:转化域

TransMat2D:3x3 投影变换矩阵 ,将所有图像完全转换为输出图像。

 *对图像进行行束调整
    bundle_adjust_mosaic (3, StartImage, From, To, ProjMatrices, Rows1, Cols1, Rows2, Cols2, NumCorrespondences, Transformation, MosaicMatrices2D, Rows, Cols, Error)
 *组合多张图片到一张拼接图片中。
    gen_bundle_adjusted_mosaic (Images, MosaicImage, MosaicMatrices2D, 'default', TransformRegion, TransMat2D)
    

标签:control,Halcon,Width,拼接,图像,Images,input,gen
From: https://blog.csdn.net/2202_75557553/article/details/143104255

相关文章

  • Halcon缺陷检测之光度立体法
      通过在案例中应用摸索算子的特性,对光度立体法有了进一步认识。基于此重新理解文档,希望能够帮助有疑惑的同志,同时也期望看到博客的同志如果有更深的理解以及应用技巧,共享与大家共同交流进步。photometric_stereoImages(input_object):输入图像输入图像(一个至少包含3......
  • python_matlab图像去雾_去雨综述
    图像去雾和去雨是计算机视觉领域的两个重要任务,旨在提高图像质量和可视化效果。本文将综述图像去雾和去雨的算法、理论以及相关项目代码示例。一、图像去雾算法基于暗通道先验的方法:这是广泛应用于图像去雾的经典算法之一。该方法基于一个观察:自然场景中的大多数像素在......
  • Windows Image Acquisition (WIA) 是 Microsoft Windows 操作系统中的一项服务,用于支
    WindowsImageAcquisition(WIA)是MicrosoftWindows操作系统中的一项服务,用于支持与图像设备(如扫描仪、数码相机和其他图像捕捉设备)的交互。WIA提供了一种标准化的接口,使应用程序能够从这些设备获取图像,并进行处理或存储。以下是关于WIA服务的详细信息:主要功能图像设......
  • Photoshop图像算法(四)(代码在每个原理后面)
    色彩均衡化色彩均衡化(或称为直方图均衡化)是一种图像处理技术,目的是改善图像的对比度,使图像中的细节更加明显。它通过重新分配颜色通道的像素值,使得图像的直方图分布更均匀。以下是其基本原理:原理直方图计算:首先计算图像的颜色直方图,即统计每个像素值出现的频率。对于每个......
  • 智能修图软件:Perfectly Clear Workbench AI图像清晰修复软件「mac +win】
    PerfectlyClearWorkbench是一款专为Mac和Windows用户打造的智能图像清晰修复软件。它采用先进的人工智能和机器学习算法,自动识别并修复图像中的曝光不足、色偏、噪点等问题。软件内置丰富的预设和一键增强功能,支持批量处理,大幅提高工作效率。同时,它也提供手动调整选项,满足用户......
  • [图像处理] 基于CleanVision库清洗图像数据集
    CleanVision是一个开源的Python库,旨在帮助用户自动检测图像数据集中可能影响机器学习项目的常见问题。该库被设计为计算机视觉项目的初步工具,以便在应用机器学习之前发现并解决数据集中的问题。CleanVision的核心功能包括检测完全重复、近似重复、模糊、低信息量、过暗、过亮、灰......
  • [快速阅读八] Matlab中bwlookup的实现及其在计算二值图像的欧拉数、面积及其他morph变
    以前看过matlab的bwlookup函数,但是总感觉有点神秘,一直没有去仔细分析,最近在分析计算二值图像的欧拉数时,发现自己写的代码和matlab的总是对不少,于是又去翻了下matlab的源代码,看到了matlab里实现欧拉数的代码非常简单,如下所示:ifn==4lut=4*[00.250.2500.250.5-......
  • 计算机视觉库supervision学习-day(1)-图像检测和标记
    supervision库是一款由roboflow开发的计算机视觉库提供了一系列方便的工具和功能,用于可视化和处理各种计算机视觉任务。它的目标是简化深度学习模型的可视化和后处理步骤,尤其适用于对象检测、图像分割、关键点检测等任务。一、下载supervision库1.在3.8版本及以上的python,使用pi......
  • 开源图像超分ECBSR项目源码分析
    相关介绍项目GitHub地址:https://github.com/xindongzhang/ECBSR项目相关论文:https://www4.comp.polyu.edu.hk/~cslzhang/paper/MM21_ECBSR.pdf(也可以点这里下载)论文解读:Edge-orientedConvolutionBlockforReal-timeSuperResolutiononMobileDevicesWindows环境训练......
  • 基于web的深度学习图像处理界面开发(二)
         现在很多搞算法的人,跑跑代码,比如训练和测试代码搞得飞溜,但想把算法代码打包成一个软件,比如给它包装一个界面,就不会了,一般来说,对使用python的人来说,界面的开发有两种,一种是桌面界面基于qt,另外一种是网页界面基于web。本文的猪脚是基于web开发一个界面。   ......