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. ng-alain: delon/abc/sc 简化容器

    简化表单HTML模板的高阶组件,并进一步优化了一些细节: 更友好的表单校验状态 自动化响应式布局 自动维护表单 id 它由 se-container 容器(指令)和 se 组件来表示一个表单,一个简单 ...

  2. 聊一聊坑人的 C# MySql.Data SDK

    一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MyS ...

  3. Rocky Linux8升级9随记

    发现Rocky Linux已经升级了9.0版本,看着自己用着的8.5版本,跃跃欲试,于是就索性升级了.两者的支持年限没有太大的差别,先说我的想法:升不升级无所谓. 并不是9.0有什么特别牛的特性,只是 ...

  4. 【MyBatis】学习笔记15:通过分步查询解决一对多或多对多问题

    目录 对象 SmbmsProvider.java SmbmsBill.java 接口 providerMapper.java orderMapper.java 映射文件 providerMapper. ...

  5. Timestamp和LocalDateTime 互转

    jdk:1.81.Timestamp 转 LocalDateTime Timestamp time = Timestamp.from(Instant.now());LocalDateTime loca ...

  6. Qt开发经验小技巧186-190

    关于是使用QList还是QVector的问题,一直是众多Qter的选择问题,主要是这两个玩意提供的的接口函数基本一致,比如插入.删除.取值等. 大多数情况下可以用QList.像append.prepe ...

  7. [转]CMake与Make最简单直接的区别

    写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时就会特别麻烦 ...

  8. IM通讯协议专题学习(七):手把手教你如何在NodeJS中从零使用Protobuf

    1.前言 Protobuf是Google开源的一种混合语言数据标准,已被各种互联网项目大量使用. Protobuf最大的特点是数据格式拥有极高的压缩比,这在移动互联时代是极具价值的(因为移动网络流量到 ...

  9. Note / Solution Set -「Binomial Sum」两道例题

      删本地文件的时候瞟了一眼内容 ... 这篇好像忘记发布了?   给定 \(n,k\), 求出 \[\textit{ans}=\sum_{i=0}^n\binom{n}{i}i^k\bmod(10^ ...

  10. Windows 风格的个人网盘,支持OnlyOffice、支持音视频聊天、支持自动更新

    一年前,我开源了这个网盘,详见Windows风格的个人网盘,支持文档在线编辑,这一年期间,这个网盘进行了大量的更新,具体如下: 新增支持的功能如下: 支持 OnlyOffice (Word.Excel ...