Coordinate Spaces

本主题包含以下部分:

  • 根空间

  • 用户空间

  • 像素空间

任何VisionPro图像支持一系列坐标空间,以提供一个数值框架来表达特定特征的位置。最有用的空间是根空间,它将点与原始获取图像中的像素相关联,以及用户空间,用于在标定和固定的空间中获取特征位置和测量值。

根空间

图像的根空间是一个左手坐标系,与在任何图像处理之前获取的图像的像素完美对齐。根空间的原点 (0, 0) 通常位于图像的左上角像素的左上角。正x轴向右延伸,正y轴向下延伸。

下图展示了一个图像,并在图像上叠加了红色的根空间。

在获取的图像中,根空间坐标网格定义了图像像素之间的边界。任何特征的位置都可以用网格中的 (X, Y) 值来描述。

当获取的图像经历图像处理操作(如降采样、形态学处理)导致图像中像素总数发生变化时,VisionPro 会自动重新调整根空间,以确保处理后的图像中的特征具有相同的根空间坐标位置。

下图展示了经过降采样缩小后的相同图像。

经过图像处理后,根空间坐标网格不再与像素边界相对应。VisionPro 会自动调整根空间,以确保图像特征(例如“COGNEX”中的字母“C”)保持相同的坐标位置。

用户空间

VisionPro 校准和夹具工具创建用户空间,这些空间定义了图像根空间之外的任意数量的附加坐标系统。所使用的工具决定了用户空间的坐标系统的方向和单位,并确定它如何与根空间相关联。

下图展示了一个添加到获取图像根空间中的用户空间。

在这种情况下,用户空间是一个右手坐标系统,其原点位于“COGNEX”文本的底部。一个特征在不同的坐标空间中具有不同的坐标位置。

每个用户空间都有一个唯一的名称,您的应用程序可以使用这个名称来确定 VisionPro 用于报告工具结果的空间。与图像相关联的所有用户空间都存储在一个坐标空间树中。

像素空间

像素空间类似于根空间,但 VisionPro 不会调整它以反映图像处理操作的效果。像素空间的原点始终是左上角的第一个像素的左上角。如果对图像进行子采样,特征在子采样图像的像素空间中的位置将与在原始图像的像素空间中的位置不同。

一般来说,像素空间在应用中很少有用,尽管在指定显示图形时可能会有用。

Coordinate Spaces的更多相关文章

  1. Blink Coordinate Spaces

    Blink Coordinate Spaces Blink Coordinate Spaces Types of Zoom There are two types of zoom in Chromiu ...

  2. OpenCASCADE Coordinate Transforms

    OpenCASCADE Coordinate Transforms eryar@163.com Abstract. The purpose of the OpenGL graphics process ...

  3. OpenCASCADE Camera

    OpenCASCADE Camera eryar@163.com Abstract. OpenCASCADE introduce a new class Graphic3d_Camera for th ...

  4. 孙鑫MFC学习笔记11:保存图像

    1.CPtrArray指针数组 2.CPtrArray返回void指针,需要做类型转换 3.View类中的OnPaint调用OnPrepareDC和OnDraw,如果覆盖OnPaint,就不会调用On ...

  5. golang.org/x/mobile/exp/gl/glutil/glimage.go 源码分析

    看这篇之前,建议先看之前几篇,这几篇是基础. Go Mobile 例子 basic 源码分析 http://www.cnblogs.com/ghj1976/p/5183199.html OpenGL ...

  6. 图形变幻矩阵 Transforms

    https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d ...

  7. Foundations of Game Engine Development Volume 1 Mathematics (Eric Lengyel 著)

    http://www.foundationsofgameenginedev.com/ Chapter1 Vectors and Matrices (已看) Chapter2 Transforms (已 ...

  8. Game Engine Architecture 6

    [Game Engine Architecture 6] 1.Data-Parallel Computations A GPU is a specialized coprocessor designe ...

  9. Input Team

    The Chromium Input team (aka input-dev) is a web platform team focused on making touch (P1) and othe ...

  10. Layout Team

    The layout team is a long-term engineering team tasked with maintaining, supporting, and improving t ...

随机推荐

  1. 从混沌到秩序:Python的依赖管理工具分析

    Python 的依赖管理工具一直没有标准化,原因主要包括: 历史发展的随意性:Python发展早期对于依赖管理的重视程度不足,缺乏从一开始就进行统一规划和设计的意识 社区的分散性:Python社区庞大 ...

  2. zz Spring 是一种反模式

    Java 将会消亡 – Martin Vysny – 第一性原理思考 原文标题"Java 将会消亡", 我并不认可 Java 会消亡一说, 作者还处于 FP 亢奋期,而我已经从 F ...

  3. Springboot使用mongodb遇到问题及解决

    网上看到使用mongodb好像很简单,没有什么问题,可我一用就怎么都连不上,先看看我的配置 在pom.xml中添加依赖 1234 <dependency>    <groupId&g ...

  4. 【转载】Netty堆外内存泄漏排查

    https://www.imooc.com/article/298943 上篇文章介绍了Netty内存模型原理,由于Netty在使用不当会导致堆外内存泄漏,网上关于这方面的资料比较少,所以写下这篇文章 ...

  5. Qt编写安防视频监控系统24-自定义悬浮条

    一.前言 自定义悬浮条功能集成在通用视频控件中,就是提供一个顶部的悬浮条,放一排功能按钮,有抓拍.录像.云台控制.关闭等,相当于可以直接单击对应的按钮针对该通道的视频进行操作,悬浮条的含义就是鼠标移入 ...

  6. .NET Bioss相关数据读写

    本文我们介绍针对Bios如何读取.写入数据,比如最常见的SN读取以及烧录 WMI查询 先看看WMI方式,可以用于查询和管理Windows系统的各种信息,包括读取BIOS信息 WMI-Win32_BIO ...

  7. SuperMap Objects中如何正确获取选择Selection以及提示“遇到一个未知错误,请重新打开窗口。ErrorMessage:尝试读取或写入受保护的内存。这通常指示他内存已损坏”

    之前有一个项目中,首先在主线程(即UI线程)中通过Query()选择所需要的点几何对象记录集,然后将记录集转换为选择集,再刷新地图,从而实现将点几何对象选择并高亮显示的效果.随后通过另外一个工作线程在 ...

  8. 得物自研客服IM中收发聊天消息背后的技术逻辑和思考实现

    本文由得物技术WWQ分享,原题"客服发送一条消息背后的技术和思",本文有修订和改动. 1.引言 在企业IM客服场景中,客服发送一条消息的背后,需要考虑网络通信.前端展示.后端存储以 ...

  9. JDK 19 Virtual Threads 虚拟线程

    前言 Project Loom Loom 是什么? 为什么要引入 Loom? Virtual threads Platform thread 是什么? Virtual thread 是什么? Virt ...

  10. 【狂神说Java】Java零基础学习笔记-预科

    [狂神说Java]Java零基础学习笔记-预科 预科01:学习准备:博客 博客,英文名为Blog,它的正式名称为网络日记 为什么要写博客? 需要总结和思考.有时候我们一直在赶路,却忘了放慢脚步 提升文 ...