当前位置: 首页 > news >正文

Halcon 极坐标变换

(1)极坐标的展开:polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )

(2)极坐标的逆变换:polar_trans_image_inv(PolarImage : XYTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )

其中:Row, Column分别为圆环的中心行列坐标, AngleStart, AngleEnd为起始和终止的角度值,RadiusStart, RadiusEnd为起始和终止的半径角度值, Width, Height为输出图片的宽和高。

极坐标的基本概念

简单地说,极坐标就是:用角度和长度描述位置的坐标系。结合上图明确这三点:

  • 以原点 O 为起点的射线作为参考系, 称O 为极点,这条射线为极轴
  • 点 P 到原点的距离记为 OP¯=r(≥0),称为极径
  • 从参考系射线出发逆时针旋转到OP 所经过的角度记为 θ∈[0,2π),称为极角
从计算的角度上讲θ 的取值范围也可以根据实际问题灵活处理。比如可以写为 θ∈[−π,π) 等。下文会有相应例子。

有了上述三个要素,空间中任意一点都可以用序对 (r,θ) 表示

极坐标和直角坐标的相互转换

(O-1){x=rcosθy=rsinθ⇔{r=x2+y2θ=arcsin⁡yr=arcsin⁡yx2+y2

但是要特别注意:上式中 θ 的值仅对(P在第I象限)成立(此时θ∈[0,π2],同时该点不能为原点)。对于其它象限则需要根据具体情况进行处理

案例:

read_image (Image33, 'E:/Halcon数据/资源图片/11.jpg')

get_image_size (Image33, Width, Height)
R:=Height/2
C:=Width/2
dev_close_window ()
dev_open_window (0, 0, 2*Width, 2*Height, 'black', WindowHandle)
dev_display (Image33)
dev_set_draw ('margin')
gen_rectangle1 (ROI_0, 17.25, 7.75, 222.75, 221.75)

reduce_domain (Image33, ROI_0, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage)
threshold (GrayImage, Region, 0, 80)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 15000, 29999)
smallest_circle (SelectedRegions, OuterRow, OuterColumn, OuterRadius)
gen_circle_contour_xld (OuterCircle, OuterRow, OuterColumn, OuterRadius, 0, 6.28318, 'positive', 1)
dev_display (Image33)
dev_display (OuterCircle)

InnerRow:=OuterRow
InnerColumn:=OuterColumn
InnerRadius:=OuterRadius-45
gen_circle_contour_xld (InnerCircle, InnerRow, InnerColumn, InnerRadius, 0, 6.28318, 'positive', 1)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Image33)
dev_display (OuterCircle)
dev_display (InnerCircle)

WidthPolar := OuterRadius*6.28318
HeightPolar := round(OuterRadius - InnerRadius )
polar_trans_image_ext (Image33, PolarTransImage, InnerRow, InnerColumn, rad(240), -rad(120), OuterRadius , InnerRadius , WidthPolar, HeightPolar, 'bilinear')
dev_close_window ()
dev_open_window (0, 0, 3*WidthPolar, 3*HeightPolar, 'black', WindowHandle)
dev_display (PolarTransImage)

invert_image (PolarTransImage, ImageInvert)

gen_rectangle1 (ROI_0, 7, 13.6749, 42.6667, 467.273)

polar_trans_region_inv (ROI_0, CodeRegionCircular, InnerRow, InnerColumn, rad(240), -rad(120), OuterRadius, InnerRadius, WidthPolar, HeightPolar, Width, Height, 'nearest_neighbor')
dev_close_window ()
dev_open_window (0, 0, 2*Width, 2*Height, 'black', WindowHandle)
dev_display (Image33)
dev_display (CodeRegionCircular)

相关文章:

Halcon 极坐标变换

(1)极坐标的展开:polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : ) (2)极坐标的逆变换:polar_trans_ima…...

JavaScript进阶--深入面向对象

深入面向对象 编程思想 面向过程:多个步骤> 解决问题 性能较高,适合跟硬件联系很紧密的东西,如单片机 但代码维护成本高,扩展性差 面向对象:问题所需功能分解为一个一个的对象(分工合作)>…...

Python列表专题:list与in

Python是一种强大的编程语言,其中列表(list)是最常用的数据结构之一。列表允许我们存储多个元素,并且可以方便地进行各种操作。在Python中,in运算符被广泛用于检测元素是否存在于列表中。本文将深入探讨Python列表及其与in运算符的结合使用。 1. Python列表的基础 1.1 什…...

利用Microsoft Entra Application Proxy在无公网IP条件下安全访问内网计算机

在现代混合办公环境中,如何让员工能够从任何地方安全访问公司内部资源成为了企业的重要挑战。传统的VPN解决方案虽然可以满足需求,但有时配置复杂,并可能涉及公网IP的问题。为了解决这个问题,Microsoft Entra(原Azure …...

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

【IEEE独立出版 | 厦门大学主办】 第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 >>往届均已成功见刊检索…...

C++ 内存布局 - Part5: 继承关系中 构造析构与vptr的调整

这里以单继承为例&#xff0c;汇编采用AT&T格式&#xff0c;先看示例代码&#xff1a; #include <iostream>class Base { public:Base() {std::cout << "Base Constructor, this ptr: " << this << std::endl;printVptr();}virtual ~Ba…...

BUG-AttributeError: ‘EnforcedForest‘ object has no attribute ‘node‘

File “/home/adt/miniconda3/envs/bevdet/lib/python3.7/site-packages/trimesh/scene/transforms.py”, line 224, in nodes_geometry ‘geometry’ in self.transforms.node[n]): AttributeError: ‘EnforcedForest’ object has no attribute ‘node’ networkx 2.6.3 pyp…...

Spring Boot 3 配置 Redis 兼容单例和集群

配置项 Spring Boot 3.x 的 redis 配置和 Spring Boot 2.x 是不一样的, 路径多了一个data spring:...data:redis:host: redis.hostport: redis.portpassword: redis.passworddatabase: redis.database兼容单例和集群的配置 开发时一般用一个Redis单例就足够, 测试和生产环境…...

unsat钱包签名算法解析

unsat钱包签名算法解析 在数字货币领域&#xff0c;安全性是至关重要的&#xff0c;而签名算法则是确保交易和信息不可伪造的基础。本文将深入解析 unsat 钱包中使用的签名算法&#xff0c;重点关注如何生成和验证消息签名。 1. 签名算法概述 unsat 钱包使用 ECDSA&#xff…...

mysql删除唯一索引

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

学习之面试题:偏函数

偏函数&#xff08;Partial Function&#xff09;是 Python 中的一个实用工具&#xff0c;通常用于函数式编程中&#xff0c;可以固定一个函数的部分参数&#xff0c;从而生成一个新的函数。偏函数在 Python 中通常通过 functools.partial 实现。在面试中&#xff0c;考察偏函数…...

面试技术点

Java 一、jvm模块 jvm是什么? 是一用用于计算设备的规范,虚构出来的计算机,在计算机上仿真模拟各种计算机功能来实现 jvm 作用是什么? java中所有类必须装载jvm中才能运行,这个装载工作有jvm装载器完成,.class类型文件能在jvm虚拟器中运行,但不能直接在系统中运行,需要…...

基础sql

在执行删除操作之前&#xff0c;建议先运行一个 SELECT 查询来确认你要删除的记录。这可以帮助你避免误删数据。 删除字段id默认值为空字符串的所有数据 delete from users where id ; 删除字段id默认值为null的所有数据 delete from users where id is null; 删除字段upd…...

Jenkins整合Docker实现CICD自动化部署(若依项目)

前期准备 提前准备好jenkins环境 并且jenkins能使用docker命令&#xff0c;并且已经配置好了jdk、node、maven环境&#xff0c;我之前写了安装jenkins的博客&#xff0c;里面讲得比较详细&#xff0c;推荐用我这种方式安装 docker安装jenkins&#xff0c;并配置jdk、node和m…...

kali chrome 安装 hackbar

HackBar 是一个用于在 Kali Linux 中快速测试 SQL 注入和 XSS 漏洞的 Chrome 扩展程序。以下是如何在 Kali Linux 上安装 HackBar 的步骤&#xff1a; 首先&#xff0c;你需要确保你的系统已经安装了 Google Chrome 或 Chromium。如果没有安装&#xff0c;你可以使用以下命令安…...

一文了解 Linux 系统的文件权限管理

文章目录 引入Linux文件权限模型查看文件权限权限信息解析修改文件权限符号模式八进制数字模式 引入 在Linux操作系统中&#xff0c;我们想查看我们对文件拥有哪些权限时&#xff0c;可以在终端键入ls -l或ll命令&#xff0c;终端会输出当前路径下的文件信息&#xff0c;如文件…...

Spark:DataFrame介绍及使用

1. DataFrame详解 DataFrame是基于RDD进行封装的结构化数据类型&#xff0c;增加了schema元数据&#xff0c;最终DataFrame类型在计算时&#xff0c;还是转为rdd计算。DataFrame的结构化数据有Row&#xff08;行数据&#xff09;和schema元数据构成。 Row 类型 表示一行数据 …...

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标&#xff1a; 提示&#xff1a;本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统&#xff1a;Ubuntu 23.04&#xff1b; 文中提到的“本机”&#xff1a;代表&#xff0c;宿主机&#xff0c;物理主机&#xff1b; 首先&#xff0c…...

望繁信科技成功签约国显科技 流程挖掘助力制造业智造未来

近日&#xff0c;上海望繁信科技有限公司&#xff08;简称“望繁信科技”&#xff09;成功与深圳市国显科技有限公司&#xff08;简称“国显科技”&#xff09;达成合作。国显科技作为全球领先的TFT-LCD液晶显示及Mini/Micro LED显示产品供应商&#xff0c;致力于为笔记本、手机…...

枚举在Java体系中的作用

1. 枚举 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; //用public static final修饰常量 public static final int RED 1; public static final int GREEN 2; public static f…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...