如果需要了解其他图像处理的文章,请移步小编的GitHub地址

  传送门:请点击我

  如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice

  VisionPro有很多的示例和算子,这里展示一个基础的算子Polar Unwrap Tool。我自己的笔记不会按照顺序一一展示出来的,也许那个文章先OK,我会先release出来的。 其中大部分的图片和步骤都是VisionPro的官方文档,我这里只是自己的学习笔记,不做任何商用。

1,VisionPro 界面文档

  极轴展开工具编辑控件为 PolarUnwrapTool API 提供图形用户界面,可用于将包含在定义区域内的图形部分变换为矩形图形。该工具生成一个输出图形,其中包含输入区域的变换部分。该编辑控件可用于指定采样模式,缩放因子和要使用的区域形状类型。

有关该编辑控件顶部按钮的说明,请参见主题控件参考。极轴展开工具编辑控件支持以下图像缓冲区:
  • Current.InputImage 缓冲区包含该工具将分析的下一个图像以及输入区域的图形。
  • LastRun.InputImage 缓冲区包含由极轴展开工具处理的最后一个图像以及您启用的任何图形。
  • LastRun.OutputImage 缓冲区包含该工具生成的输出图像。

1,设置

  使用设置选项卡选择要使用的采样模式和缩放因子。

  使用以下参数配置工具如何展开输入图形

 

2,区域

  使用区域选项卡选择输入区域的形状

  使用以下参数配置输入区域

 

3,图形

  使用图形选项卡指定该工具生成和显示的图形

  使用图形选项卡的以下选项

 

2,工具原理——使用极轴展开工具展开圆形特征

  极轴展开工具可展开图形的圆形或椭圆形部分以创建矩形图形

  应用程序通常使用极轴展开工具来创建输入图像中径向排列的特征的直线排列。有关可与极轴展开工具一起使用的图像类型,请参阅主题视觉工具和支持的图像类型。

 
  极轴展开工具通过以下步骤执行图形变换:
  • 1,构造一个变换,将您指定的圆形或者椭圆形环状截面映射到矩形输出图形的边界
  • 2,使用此变换将输出图形中像素的中心映射到输入图形中的相应点
  • 3,在变换点处对输入图形中的像素进行采样,以计算输出图像中的像素值
 

2.1 预备知识-图像变换及其采样

1,图形变换

  将一个图形变换为另一个图形的过程首先是在源图形中定义一个区域,并描述如何将该区域变换为矩形输出图像。例如,最简单的图像变换是通过指定输入图像的矩形部分和恒等变换来创建新的输出图像,如下图所示:

  上图中所示的变换在所选区域中的像素和新图像中的像素之间具有一一对应关系。然而,其他变换并不那么简单。例如,如果提供的矩形输入区域相对于输入图像中的像素旋转,则不可能简单地转录像素值以创建无旋转的矩形输出图像,因为输出图像中的整个像素位置与输入图像中的整个像素位置之间不存在对应关系。
 
  下图显示从旋转输入图像生成的输出图像:

  没有直接对应关系的变换的其他示例包括极轴展开变换(如下图所示)和棋盘校准工具生成的非线性变换。

2,变换方法

  变换图像的而过程可以分为以下步骤:

  1,计算将输入区域映射到输出图像边界的数学变换。特定变换取决于需要执行的图像变换类型,下面是仿射变换,该变换选择输入图像中的矩形区域以生成输出图像。

  2,使用此变换将输出图像中每个像素的中心点映射到其在输入图像中的相应位置,下图中的红色箭头显示输出图像左上角像素的中心到输入图像中相应位置的变换。

  3,使用本主题后面介绍的采样方法之一,在变换点对输入图像中的像素值进行采样,并将该值指定给输出图像中的像素,该像素的中心在上一步中确定

 

3,采样方法

  选择用于生成输出图像的采样方法确定变换后的输出图像中的像素值。如下图所示,采样点与输入图像中的像素不一致:

  执行图像变换的视觉工具让您可选择采样方法。您应该试着使用这些方法,确定哪种方法可以在准确性和执行速度之间达到最佳平衡。

4,最近邻采样

  最近邻采样法,如下图所示,将中心离采样点最近的像素的像素值作为采样像素的值:

  最近邻采样比任何其他采样方法执行得更快,但它不会产生最准确的变换图像。

5,双线性插值

  双线性插值采样方法通过对中心距采样点最近的四个像素点的值进行距离加权平均来计算采样值,如下图所示:

  双线性插值产生比最近邻方法更准确的变换,因为它考虑了输入图像中更多像素的值。双线性插值使用以下公式计算采样值:

  其中 abcd 是下图所示的四个距离,归一化使得像素中心之间的距离为 1,p1p2p3p4 是下图所示的四个像素的值数字。

 

6,高精度

  高精度采样方法类似于双线性插值,不同之处在于它在确定采样像素的值时考虑了额外的像素。
  一般来说,高精度插值提供比双线性插值方法更高的采样精度,但执行速度较慢。
 

2.2 输入区域和变换

  极轴展开工具可展开给定的 CircularAnnulusSectionEllipticalAnnulusSection 输入区域,以便变换图像的 x 轴始终对应于该区域的角度方向,而变换图像的 y 轴始终对应于该区域的径向方向。
  RadialScaleAngleSpan 属性的值确定输出图像中 x 轴和 y 轴与输入区域中半径和角度的增减关系,如图所示:

 

2.3 输出图像尺寸(采样率)

  输入区域中采样点的数量确定输出图像的像素大小。极轴展开工具会自动计算输出图像的大小,以便最大限度地减少图像畸变。对于圆形输入区域,默认的 x 轴大小是内外圆弧长度的平均值,默认 y 轴大小是内外半径的差值,如下图所示:

  对于椭圆输入区域,默认的 x 轴大小是内外圆弧长度的平均值,默认 y 轴大小是最大和最小内外半径之差的平均值,如下所示数字:

  您可以通过为 ScalingXScalingY 属性提供值来指定不同的输出图像大小。该工具将计算出的输出图像尺寸乘以您为这些缩放因子指定的值。
 

3,使用极轴展开工具

  极轴展开工具支持最近邻采样和双线性插值。有关使用极轴展开工具的更多信息,请参阅下列各节:
 

3.1,变换和坐标空间

  当在 8 位或 16 位灰度图像上运行极轴展开工具时,该工具会计算将指定的输入区域映射到矩形输出图像的高度非线性变换。该工具不会将此变换添加到输出图像的坐标空间树中。您应该将输出图像视为新采集的图像。它的当前选定空间总是根(“@”)空间,图像的像素空间(“#”)和根空间之间的变换总是恒等变换。
  极轴展开工具不会让您直接使用这种非线性变换。但是,您可以使用 GetInputPointFromOutputPointGetOutputPointFromInputPoint 方法将各个点从输出图像映射到输入图像并返回。
 
  8位和16位灰度图形的区别如下:

3.2 椭圆输入区

  极轴展开工具可以使用圆形或椭圆形环形截面作为其输入区域。椭圆环形截面的常见用途是从采集图像时处于一定角度的圆形对象展开特征,如下图所示

3.3 展开超过360度

  使用极轴展开工具可以展开多个整圆。可以通过指定大于 360° 或小于 –360° 的角度跨度来完成此操作。这种情况的一个应用是在事先不知道对象方向的情况下展开文本字符串。通过展开 720°,可以确保采集整个字符串的连续副本。
  下图显示如何使用更大的角度跨度来确保输出图像中包含文本字符串的完整副本:

  另一个常见的应用是检测圆形对象中的缺陷,其中对象的方向未知。如果仅将对象展开 360°,则在缺陷位于输出图像的一端的情况下,可能会遗漏缺陷。通过多展开 10° 到 30°,可以确保无论缺陷的位置如何,都会出现在输出图像中。
  下图显示,当缺陷位于角度跨度的起点或终点时,如果指定 AngleSpan 为 360°,则使用斑点工具测量基于面积的缺陷的应用程序是如何失败的。通过将角度跨度增加到 380°,不再遗漏缺陷:

 

4,QuickBuild 示例

  某些视觉应用程序要求您检查以圆弧或整圈打印的文本,例如轮胎或医药帽。例如,下图显示具有曲线文本的零件、要展开的文本区域和展开的文本,然后可以将其传递给 OCRMax 或 OCVMax 工具:

  下例显示 QuickBuild 应用程序使用极轴展开工具生成打印在放大镜表面周围的文本输出图像,其中镜头从一个图像旋转到下一个图像,并且文本可能从展开的输出图像中的任何位置开始。
  1. 配置 QuickBuild 以采集带有圆形文本的零件的图像;来自相机或图像数据库。
  2. 使用查找圆工具定位零件,该工具会返回圆心处的 (x, y) 坐标,并可用于定位稍后使用的极轴展开工具。

  1. 将极轴展开工具添加到您的 QuickBuild 应用程序,并将您零件的输入图像传递给它。
  2. 右键单击极轴展开工具并选择添加引脚

  1. 公开极轴展开区域中心的参数作为 QuickBuild 中的输入终端:

  QuickBuild 现在显示下列输入终端:

  1. 将查找圆工具找到的圆的 (x,y) 坐标连接到极轴展开工具中心的 (x,y) 坐标:
 

  1. 使用极轴展开编辑控件的区域选项卡,使用交互图形圈住零件上的文本。
  将角度跨度设置为 580 以确保输出图像中出现不间断的字符串。有关配置区域和设置超过 360 度的角度跨度的更多信息,请参考上面内容

  1. 运行极轴展开工具并确认生成的展开图像至少包含一个完整的字符串实例:

  生成的输出图像可以传递给其他工具来分析字符串。例如下图显示了经过 OCRMax 工具分析后的字符串:

VisionPro学习笔记(5)——极轴展开工具PolarUnwrapTool的更多相关文章

  1. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  2. Andorid:日常学习笔记(3)——掌握日志工具的使用

    Andorid:日常学习笔记(3)——掌握日志工具的使用 使用Android的日志工具Log 方法: Android中的日志工具类为Log,这个类提供了如下方法来供我们打印日志: 使用方法: Log. ...

  3. Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. VisionPro学习笔记(1)——软件介绍和基本使用

    前言 自己使用visionPro已经有段时间了,最近也一直在研究其算子的理论,为了加深印象,计划将自己的学习笔记整理在博客园,当然其官方文档对如何使用及其各种算子都有详细的介绍,所以这里的笔记仅仅为个 ...

  5. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  6. Java基础学习笔记十一 Eclipse开发工具

    Eclipse是功能强大Java集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是Eclipse进行开发. Eclipse的下载.安装.卸载 下载 http:/ ...

  7. Visionpro学习笔记(壹)

    注册4年,第一次发了随笔.我的博客将主要涉及到visionPro软件的学习,labview数据采集方面的思考,c#及VS的学习 此随笔系列主要是关于VisionPro(以后简称VP)的学习及使用. 近 ...

  8. 多线程学习笔记六之并发工具类CountDownLatch和CyclicBarrier

    目录 简介 CountDownLatch 示例 实现分析 CountDownLatch与Thread.join() CyclicBarrier 实现分析 CountDownLatch和CyclicBa ...

  9. JMeter学习笔记(一) 工具的安装和基本介绍

    因为网上的资料比较多,就不多描述了,在此引用了其他大神的文档,用于学习 这个文档中有比较详细的jmeter工具介绍: https://wenku.baidu.com/view/64f3a5f75901 ...

  10. PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数

    前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...

随机推荐

  1. 如何破解wifi密码?

    前期准备: kali 系统 外置无线网卡 破解过程: 首先,需要登录kali系统,可以是虚拟机. 在虚拟机中设置点击 虚拟机-可移动设备-无线网卡的名称,将无线网卡绑定到kali虚拟机上. 在kali ...

  2. .NET周刊【8月第3期 2023-08-20】

    国内主题 抓的是周树人,与我鲁迅有什么关系? https://www.cnblogs.com/JulianHuang/p/17642511.html 问题:作者看到了一个关于Dictionary.Cl ...

  3. 纯干货!一文get昇腾Ascend C编程入门全部知识点

    本文分享自华为云社区<昇腾Ascend C编程入门教程>,作者:昇腾CANN . 2023年5月6日,在昇腾AI开发者峰会上,华为正式发布了面向算子开发场景的昇腾Ascend C编程语言. ...

  4. 微服务架构|go-zero 的自适应熔断器

    原文链接: go-zero 的自适应熔断器 上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断. 熔断和限流还不太一样,限流是控制请求速率,只要还能承受,那么都会 ...

  5. Win10 误删winsock注册表修复。 winsock.reg

    手贱删除了注册表的winsock项, 导致无法上网. 导入后需要重启电脑才能上网, 这个文件是我在别人电脑里导出来的. 下载地址: https://pan.baidu.com/s/1wH8SdeWsx ...

  6. EXE一机一码打包加密大师(EXE加密, 一机一码, 添加授权,添加静态密码,支持设置试用时间)

    EXE一机一码打包加密大师可以打包加密保护EXE文件,同时给EXE文件添加上一机一码认证,或者静态密码,不同的电脑打开加密后的文件需要输入不同的激活码才能正常使用,保护文件安全,方便向用户收费. 下载 ...

  7. skynet的timer似乎有问题

    skynet.timeout 传进去 number 范围内的数值但是会溢出, 调查发现 skynet.timeout 调用的是 c 的方法: c.intcommand("TIMEOUT&qu ...

  8. java_方法使用细节

    java_方法使用细节 1.一个方法想要返回多个值 思考?一个方法如何返回多个值 返回数组 class AA{ public int[] getSumAndSub(int n1, int n2){ / ...

  9. STL容器:map

    map 可以当作特殊的数组来使用,在数组开不下,或者数组下标不是整数的时候使用 map 就很方便,比如统计字符串的出现个数,统计 int 范围内的数的出现次数等等. 映射是指两个集合之间的元素的相互对 ...

  10. Langchain-Chatchat项目:1-整体介绍

      基于Langchain与ChatGLM等语言模型的本地知识库问答应用实现.项目中默认LLM模型改为THUDM/chatglm2-6b[2],默认Embedding模型改为moka-ai/m3e-b ...