首页 > 其他分享 >VisionPro 多图像拼接简单操作

VisionPro 多图像拼接简单操作

时间:2023-08-25 11:57:06浏览次数:34  
标签:VisionPro imgList 拼接 imageStitcher 画框 图像 RunParams CogImageFileTool

应用场景:
  比如在一个视觉项目应用中,由于FOV过大,单相机像素精度不能满足预期,那么就需要分开布局多个相机拍摄。但是如果涉及到测量,定位,计数等类似应用的时候,图像拼接技术则显的非常重要。
  这里模拟四台相机分别拍摄一组二维码图像,然后将四张图拼接成为一张图,最后实现读码的功能。
实现功能:

 1. 准备4张图像

 2. 在VisionPro中新建一个ToolBlock,然后添加4个CogImageFileTool工具

 3. 然后依次加载上面准备好的4张图像

注意:这里用CogImageFileTool工具模拟真实环境中4台相机,真实环境中
只需要将CogImageFileTool替换成CogAcqFifoTool,然后为每个CogAcqFifoTool工具分配一台相机即可。

4. 添加CogIDTool工具,用于读取拼接后图像的二维码

这里的InputImage可以暂时不用引用,后面直接在脚本中赋值即可。

5. 重点部分:为ToolBlock编写脚本

5.1 添加程序集Dll

 5.2 引用命名空间:

 5.3 代码部分:

 1 public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
 2 {
 3   private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;
 4   private List<CogImage8Grey> imgList = new List<CogImage8Grey>();
 5   private CogCopyRegionTool imageStitcher = new CogCopyRegionTool();
 6   private CogIDTool idTool;
 7     
 8   public override bool GroupRun(ref string message, ref CogToolResultConstants result)
 9   {
10     //if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break();
11     imgList.Clear();
12    
13     // Run each tool using the RunTool function
14     foreach(ICogTool tool in mToolBlock.Tools)
15     {
16       if(tool is CogImageFileTool)
17       {
18         //如果是真实现场的相机,这里需要改成CogAcqFifoTooL
19         CogImageFileTool imageTool = (CogImageFileTool) tool;
20         imageTool.Run();
21         if(imageTool.OutputImage != null)
22         {
23           //将所有采到的图像,按上往下的顺序,依次保存在List集合中
24           imgList.Add((CogImage8Grey)imageTool.OutputImage);
25         }
26       }
27     }
28     
29     CogImage8Grey img = new CogImage8Grey();
30     img.Allocate(imgList[0].Width * 2, imgList[0].Height * 2);
31     
32     //指定画框
33     imageStitcher.DestinationImage = img;
34     
35     imageStitcher.Region = null;
36     imageStitcher.RunParams.ImageAlignmentEnabled = true;
37     
38     for (int i = 0; i < 4; i++)
39     {
40       //这里指定图像存放在画框中的起始XY点,然后程序跳转到if else下面
41       //将当前遍历到的照片贴进画框中
42       if(i == 0) 
43       {
44         imageStitcher.RunParams.DestinationImageAlignmentX = 0;
45         imageStitcher.RunParams.DestinationImageAlignmentY = 0;
46       }
47       else if(i == 1)
48       {
49         imageStitcher.RunParams.DestinationImageAlignmentX = imgList[i].Width;
50         imageStitcher.RunParams.DestinationImageAlignmentY = 0;
51       }
52       else if(i == 2)
53       {
54         imageStitcher.RunParams.DestinationImageAlignmentX = 0;
55         imageStitcher.RunParams.DestinationImageAlignmentY = imgList[i].Height;
56       }
57       else
58       {
59         imageStitcher.RunParams.DestinationImageAlignmentX = imgList[i].Width;
60         imageStitcher.RunParams.DestinationImageAlignmentY = imgList[i].Height;
61       }
62       //将当前遍历到的图像贴进画框中
63       imageStitcher.InputImage = CogImageConvert.GetIntensityImage(imgList[i], 0, 0, imgList[i].Width, imgList[i].Height);
64       imageStitcher.Run();
65     }
66     mToolBlock.Outputs[0].Value = imageStitcher.OutputImage;
67     
68     // Read ID Tool
69     idTool= mToolBlock.Tools["CogIDTool1"] as CogIDTool;
70     idTool.InputImage = (CogImage8Grey) mToolBlock.Outputs[0].Value;
71     idTool.Run();
72     
73     return false;
74   }
75 }

原理: 可以将CogCopyRegionTool对象想象成一个尚未完成的画框,因为要装4张图,所以首先需要确定画框尺寸 (一张图*2的大小)。
然后准备装照片进去了,拿到一张照片后,首先确定照片应该放置的位置 (第一张00,第二张10,第三张01,第四张11这样)。

确认完一张图像位置之后,则将当前的图片装入指定的位置,以此往复。

6. 最终,我们会得到一张全新的无缝拼接图片(为了便于展示直接通过代码的形式将其传入CogODTool工具的输入)

标签:VisionPro,imgList,拼接,imageStitcher,画框,图像,RunParams,CogImageFileTool
From: https://www.cnblogs.com/ybqjymy/p/17656561.html

相关文章

  • VisionPro CogPMAlignTool图像匹配工具的使用详解
    PMAlign工具:此工具可用于训练模板,然后使用在连续的输入图像中搜索模板。可指定执行模板训练或模板搜索时要使用的算法类型,并可选择利用图像还是利用形状模型集合创建已训练模板。输入图像内的可选搜索区域可限制模板搜索的范围。目的:这里主要分享一下,如何在一个ToolBlock中使......
  • VisionPro 颜色工具
    1.了解4种颜色工具的差异:ColorExtractor颜色提取工具,报告相应颜色像素个数ColorMatch颜色匹配工具,报告相应颜色匹配分数ColorSegmenter颜色分段工具,报告分段图像ColorCompositColorMatch复合颜色匹配工具,适应复合颜色纹理区分2.掌握4种颜色工具的基本操作方法。......
  • VisionPro Blob工具基本使用
    Blob功能用于查找和分析图像中的各种形状。Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。Blob结果报告多种属性面积质心周长主轴…适用场景:1.对象在尺寸、形状、方向上有很大差异(很难或不可能训练模型)2.在背景中没有明......
  • VisionPro PMAlign基本使用
    1.CogPMAlignTool的操作方法抓取图像-设置训练区域及参数-训练模板-设置运行参数与区域-运行-查看结果2.CogPMAlignTool的基本原理图案位置搜索工具(识别+定位)基于边缘特征的模板而不是基于像素的模板匹配支持图像中特征的旋转与缩放边缘特征表示图像中不同区域......
  • VisionPro 几何工具
    一几何创建和拟合工具查找圆、线、角:参数设置:位置、卡尺个数、搜索长度、方向、投影长度、卡尺设置、忽略点数、拟合误差等拟合圆、椭圆、线二几何测量工具......
  • VisionPro FixtureTool
    原理:建立基于图像自身特征的定位坐标空间......
  • VisionPro 物体长度测量
    右侧......
  • VisionPro C#混合编程环境搭建(基于VS2019)
    VisionPro工具分组(因为Vs2019导入VisionPro是全导入,为了方便,可以自建项进行分类)各选择项1VisionProToolEditControls2VisionProDisplayControls3VisionProShapeEditControls4VisionProSystemControls各选择项下的组件VisionProDisplayControls:CogRecor......
  • VisionPro C#混合编程实现工业相机实时图像采集
    1usingSystem;2usingSystem.Collections.Generic;3usingSystem.ComponentModel;4usingSystem.Data;5usingSystem.Drawing;6usingSystem.Linq;7usingSystem.Text;8usingSystem.Windows.Forms;9usingCognex.VisionPro;10usingC......
  • VisionPro 如何通过向导生成项目应用程序
    最终结果Job1:识别二维码Job2:变形匹配......