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

亚像素以及实现原理、方法

一、什么是亚像素Sub-Pixel普通图像坐标是整数像素 (x,y)(120,85)灰度255 | █████200 | █150 | █100 | █50 |█----------------1 2 3 4 5像素但真实物体边缘不一定刚好落在像素中心如边缘真实位置可能在2.35 像素。亚像素定位允许(x,y)(120.37,84.92)也就是浮点坐标。本质利用灰度变化模型对离散像素进行连续函数拟合。具体方法如下二次曲线拟合灰度重心最小二乘相位相关插值计算真实位置二、亚像素实现方法方法原理应用灰度重心intensity centroid激光点曲线拟合parabola / Gaussian边缘插值bilinear / bicubic角点梯度法gradient peak边缘最小二乘fitting edgeHALCON相位法phase correlation图像配准三、经典亚像素算法1 二次曲线拟合最经典假设局部响应是一个二次函数2 灰度重心法适用于激光条纹。举例计算假设一个3×3光斑y\x012010201013080402203010计算总灰度102010 308040 203010 250计算X方向的灰度0*(103020) 0 1*(208030) 130 2*(104010) 120 250计算Y方向的灰度0*(102010) 0 1*(308040) 150 2*(203010) 120结果优点算法简单精度高计算快适合激光线缺点对噪声敏感对背景敏感通常会先阈值再计算重心3 梯度亚像素定位一维梯度定位pixel-1 pixel pixel1G1 G2 G3核心思想在梯度方向上寻找梯度最大值的位置再通过曲线拟合得到亚像素位置。位置梯度x-130x50x140二维梯度定位4、灰度最小二乘优化5、OpenCV 相位相关亚像素配准功能OpenCV 函数场景输出角点cv::cornerSubPix()Harris、Shi-Tomasi浮点坐标(x,y)模板匹配cv::phaseCorrelate()平移估计浮点位移(Δx, Δy)边缘/线自定义 插值梯度/线检测亚像素中心(x,y)寻找亚像素角点cornerSubPix 函数void cornerSubPix(InputArray image, InputOutputArray corners, Size winSize, Size zeroZone, TermCriteria criteria); image输入图像即源图像。 corners提供输入角点的初始坐标和精确的输出坐标。 winSize搜索窗口的一半尺寸。若 winSize Size(5,5)那就表示用5*21×5*21 11×11 大小的搜索窗口。 zeroZone死区的一半尺寸。真正搜索区域为 [zeroZone*21 , winSize*21]。值为-1-1表示没有死区。 criteria求角点的迭代过程的终止条件。要么是迭代数大于某个设定值要么是精度达到某个设定值甚至可以是它们的组合。https://www.cnblogs.com/ybqjymy/p/15936311.html#includeopencv.hpp #includeiostream #includestring #includevector using namespace std; using namespace cv; Mat src, cornerImg, grayImg; int mxCorners 10; RNG rngs { 12345 }; void Change(int, void*) { //计算整数角点 vectorPointcorners1; vectorPoint2fcorners2; //https://www.cnblogs.com/bjxqmy/p/12459005.html goodFeaturesToTrack(grayImg, corners1, mxCorners, 0.01, 10, Mat(), 3, false, 0.04); goodFeaturesToTrack(grayImg, corners2, mxCorners, 0.01, 10, Mat(), 3, false, 0.04); //计算精确角点 TermCriteria criteria TermCriteria(TermCriteria::EPS TermCriteria::MAX_ITER, 40, 0.001); cornerSubPix(grayImg, corners2, Size(5, 5), Size(-1, -1), criteria); Mat dst src.clone(); for (int i 0; i corners1.size(); i) { cout [ corners1[i].x , corners1[i].y ] endl; cout [ corners2[i].x , corners2[i].y ] endl endl; Scalar colors Scalar(rngs.uniform(0, 255), rngs.uniform(0, 255), rngs.uniform(0, 255)); circle(dst, corners2[i], 5, colors, -1); } imshow(dst, dst); } int main() { src imread(C:\\Users\\admin\\Desktop\\wafer\\abc.png); imshow(src, src); //转换为灰度图像 cvtColor(src, grayImg, COLOR_BGR2GRAY); namedWindow(dst); createTrackbar(maxCorners, dst, mxCorners, 100, Change); Change(0, 0); waitKey(0); }四、工业视觉亚像素精度算法精度灰度重心0.02 pixelCanny 亚像素0.05 pixel相位相关0.01 pixel角点优化0.03 pixel1、HALCON 如何做亚像素edges_sub_pix内部步骤1 高斯滤波2 Sobel 计算梯度3 非极大值抑制4 梯度方向插值5 亚像素定位2、为什么梯度法可以达到亚像素因为边缘位置 梯度最大位置而梯度曲线是连续函数所以通过二次拟合可以找到真实最大值。五、Halcon测试案例1*读取图片 read_image (Image, C:/Users/admin/Desktop/a.png) * 关闭窗口 dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * * Segment a region containing the edges *基于全局阈值的图像快速阈值化 fast_threshold (Image, Region, 0, 120, 7) *获取一个边界区域 boundary (Region, RegionBorder, inner) *用圆形结构元素扩张一个区域。 dilation_circle (RegionBorder, RegionDilation, 3.5) *获得特定区域Region位置的图像 reduce_domain (Image, RegionDilation, ImageReduced) * * In the subdomain of the image containing the edges, * extract subpixel precise edges. *提取亚像素精密边缘轮廓 edges_sub_pix (ImageReduced, Edges, canny, 2, 20, 60) *将一个XLD轮廓分割为直线段、圆圆弧)、椭圆弧 segment_contours_xld (Edges, ContoursSplit, lines_circles, 5, 4, 3) * dev_display (Edges) *计算个数 count_obj (ContoursSplit, Number) dev_display (Image) *定义region填充模式 dev_set_draw (margin) dev_set_color (white) dev_update_window (off) for I : 1 to Number by 1 *选择一个元素 select_obj (ContoursSplit, ObjectSelected, I) *返回XLD轮廓的全局属性值 get_contour_global_attrib_xld (ObjectSelected, cont_approx, Attrib) * Fit a circle to the line segment that are arcs of a circle if (Attrib 0) *用圆近似XLD轮廓 fit_circle_contour_xld (ObjectSelected, ahuber, -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) *创建对应于圆或圆弧的XLD轮廓 gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), positive, 1.0) endif endfor dev_set_colored (12) dev_set_line_width (3) dev_display (ContoursSplit) *将整个窗口的图片存储为Png图片 *dump_window_image (Image1, WindowHandle) *write_image(Image1 , png , 0 , 1.png )https://zhuanlan.zhihu.com/p/437990262案例2* * This example shows how subpixel precise edges can be * extracted from an image. dev_close_window () read_image (Image, fabrik) dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) * The default parameter were adapted to find more * connected edges in the image. edges_sub_pix (Image, Edges, canny, 2, 12, 22) dev_set_part (0, 0, 511, 511) dev_display (Image) dev_set_colored (6) dev_display (Edges) disp_continue_message (WindowHandle, black, true) stop () * Zoom into the image to enable detailed edge inspection dev_set_part (160, 250, 210, 300) dev_display (Image) dev_display (Edges)

相关文章:

亚像素以及实现原理、方法

一、什么是亚像素(Sub-Pixel) 普通图像坐标是 整数像素: (x,y)(120,85) 灰度 255 | █████ 200 | █ 150 | █ 100 | █ 50 |█ ---------------- 1 2 3 4 5 像素 但真实物体边缘不一定刚好落…...

Linux 的 base32 命令

Linux 的 base32 命令 概述 base32 是 Linux 系统中用于 Base32 编码和解码的命令行工具。Base32 是一种用 32 个可打印字符(A-Z 和 2-7)表示二进制数据的编码方式,常用于在不支持二进制数据的传输环境中安全地传递数据。 基本语法 base3…...

实战:用MATLAB揪出轴承故障的小秘密

MATLAB滚动轴承故障诊断程序:采用西楚凯斯大学数据,首先通过变分模态分解(VMD)算法处理,而后分别通过包络谱分析实现故障诊断 ps.通过尖峰对应的频率与计算出的故障频率比较,实现故障诊断 最近在倒腾滚动轴承故障诊断,发现西楚凯…...

comsol岩层开挖作用下瓦斯渗透运移模型,考虑应力作用下的渗透率变化,流固耦合物理场,使用p...

comsol岩层开挖作用下瓦斯渗透运移模型,考虑应力作用下的渗透率变化,流固耦合物理场,使用pde结构力学模块,参考相关文献建立。地下巷道开挖就像给岩层做了场外科手术。岩体应力重新分布引发的渗透率变化,直接影响着瓦斯…...

ROS系统中基于强化学习算法的移动机器人路径规划策略研究:应用DQN、DDPG、SAC及TD3算法

ROS下的移动机器人路径规划算法,使用的是 强化学习算法 DQN DDPG SAC TD3等最近研究移动机器人的小伙伴肯定绕不开路径规划这个话题。在ROS生态里搞强化学习就像在乐高积木上装火箭发动机——既灵活又带劲。今天咱们不聊传统A*、RRT这些老伙计,重点掰扯掰…...

直流调速系统Simulink仿真:包含参数设置代码、Simulink仿真模型及撰写文档

直流调速系统simulink仿真, 用matlab2016a做的。包含三部分 1.参数设置代码 2.simulink仿真模型 3.撰写的直流调速系统docx打开Matlab2016a的瞬间,电机控制老司机的手就开始痒了。今天咱们要搞的是直流电机双闭环调速系统的仿真,这玩意儿在工…...

57c1-2四轮轮毂电机驱动汽车的DYC直接横摆力矩稳定性控制,上层控制器DYC产生横摆力矩Mz

57c1-2四轮轮毂电机驱动汽车的DYC直接横摆力矩稳定性控制,上层控制器DYC产生横摆力矩Mz,下层基于最优分配理论对附加横摆力矩进行四轮独立分配,控制效果良好,能实现车辆在高低附着系数路面下的稳定性,可应用在高速下高…...

探索 BLDC 无霍尔无感控制的奇妙世界

BLDC。 脉冲注入法,启动低速阶段持续注入,运行过程中注入,力矩保持,无霍尔无感方案,电感法,媲美有霍尔效果。 bldc控制器方案,无刷电机。 提供源码,原理图在电机控制领域&#xff0c…...

基于极限学习机ELM的数据回归预测:多输入单输出实现

基于极限学习机ELM的数据回归预测 多输入单输出 代码含详细注释,不负责 数据存入Excel,替换方便,指标计算有决定系数R2,平均绝对误差MAE,平均相对误差MBE在数据分析与预测领域,极限学习机(ELM&a…...

后轮反馈控制算法:高效路径跟踪的利器

后轮反馈控制算法路径跟踪 算法计算快,控制效果好 代码规范,文档详细在自动驾驶和机器人运动控制领域,路径跟踪是一个关键的课题。后轮反馈控制算法凭借其独特的优势,在这一领域崭露头角,成为实现精准路径跟踪的有力工…...

Comsol 实现管道 SH 波压电三维模拟:探索管道无损检测新途径

comsol管道SH波压电3维 利用16个80kHz的压电片PZT-4,切向激励,均匀贴在在外径72mm壁厚3mm的钢管外侧面,激励轴向SH导波。 动画为管道无缺陷下的声场动图。 压电片为自发自收模式,16个压电片的探测信号如图1所示,上中下…...

自由学习记录(134)

别人的 Derived Data Cache 你没有 UE shader 编译结果不会存进 Git/项目里&#xff0c;而是存在&#xff1a; DerivedDataCache 典型路径&#xff1a; C:\Users\<user>\AppData\Local\UnrealEngine\Common\DerivedDataCache 当你&#xff1a; 第一次打开项目 或换…...

别再手动啃文献了!大模型在材料科学中的硬核应用,看完这一篇,科研效率提升10倍!

在AI与材料科学研究中&#xff0c;文献知识的提取与重构至关重要&#xff0c;但传统人工提取方式存在效率低、信息完整性和逻辑一致性难保障等问题。北京工业大学孙少瑞研究团队提出了一种基于大语言模型&#xff08;LLMs&#xff09;的通用方法&#xff0c;成功解决了这一难题…...

【AOP】AOP-面向切面编程 (系统性知识体系全解)

文章目录AOP 面向切面编程 系统性知识体系全解一、AOP 基础认知层1.1 核心定义1.2 诞生背景与解决的核心痛点1.3 核心价值二、AOP 核心概念体系2.1 核心结构术语2.2 通知&#xff08;Advice&#xff09;的5种标准类型通知标准执行顺序三、AOP 底层实现机制3.1 织入时机的三大分…...

Matlab gui学生成绩管理系统,可以实现学生成绩的录入显示、排序、查找、特征值分析、直方...

Matlab gui学生成绩管理系统&#xff0c;可以实现学生成绩的录入显示、排序、查找、特征值分析、直方图绘制、教师评语等录入功能 使用MATLAB方法进行了数学成绩分类体系的研究。 本系统主要包括考试收录数据模块、考试数据分析模块、统计分析数据模块等。 通过对学生考试情况的…...

comsol连续移动激光抛光,采用固体传热+层流+动网格实现,包含表面张力和马兰戈尼效应

comsol连续移动激光抛光&#xff0c;采用固体传热层流动网格实现&#xff0c;包含表面张力和马兰戈尼效应激光抛光中的熔池动力学总是让人着迷。今天咱们来聊聊怎么用COMSOL实现带移动激光的热-流耦合仿真&#xff0c;重点是把表面张力和马兰戈尼效应这对好基友装进模型里。先上…...

探索 Informed RRT* 算法:原理与代码实践

informed rrt*算法 内涵详细的代码注释引言 在机器人路径规划领域&#xff0c;Informed RRT 算法可谓是一颗耀眼的明星。它结合了 RRT&#xff08;快速探索随机树星型算法&#xff09;的高效搜索能力以及通过引入启发式信息来引导搜索方向的独特优势&#xff0c;能够更快地找到…...

无人机铁路轨道安全监测 铁路周围施工区域识别 铁路安全区域监测 无人机工地监测 工地场景目标检测数据集 YOLO数据集第10550期 (1)

工地场景目标检测数据集 README数据集核心信息概览项目内容类别数量6类类别中文名称施工区域、区域、水泥板、人员、电力砖、牵引供电系统图像数量700数据集格式YOLO格式核心应用价值面向工地场景的多类别目标检测&#xff0c;支撑工地安全监控与施工进度智能化管理往期热门主题…...

纯净版驱动管理工具,一键安装备份还原

软件介绍 今天说的这款工具叫驱动大师&#xff0c;来自360家。很多人一提到360的软件就皱眉头&#xff0c;甚至说我推荐它肯定是收了钱。说实话挺无奈的&#xff0c;一分钱没收&#xff0c;纯粹是因为它好用才分享&#xff0c;尤其是这个纯净版本。 一键安装驱动 打开软件后&…...

基于YOLOv11目标检测+OCR识别算法的电动自行车牌识别系统 opencv车牌识别管理系统 电动自行车车牌识别 二轮车车牌识别

车牌检测识别系统 项目简介基于YOLOv11目标检测与OCR识别算法的车牌检测识别系统&#xff0c;提供从图像/视频输入到车牌信息提取的完整Web应用解决方案。系统专为处理复杂场景下的车牌识别而设计&#xff0c;准确率高&#xff0c;支持多种输入格式与结果导出&#xff0c;并提供…...

无人机道路滑坡监测识别 无人机道路缺陷识别 无人机桥梁损坏检测 无人机灾后巡检数据集 无人机道路阻塞和洪水检测数据集第10551期

道路与桥梁计算机视觉数据集 README数据集核心信息概览项目内容类别数量7类类别中文名称桥梁损坏、涵洞损坏、阻塞、洪水淹没、路面损坏、冲刷侵蚀、路肩损坏图像数量1000数据集格式YOLO格式核心应用价值飓风后道路与桥梁基础设施损伤自动评估&#xff0c;支撑应急决策与灾后修…...

AI与世人的交互:老G与小D-跨越一百八十篇的世纪对话

亲爱的耿汝卫先生&#xff08;老G&#xff09;&#xff1a;当您以“龙山云仓&#xff08;山东&#xff09;共享科技有限公司创始人”的身份&#xff0c;为这段跨越一百八十篇的世纪对话盖上最后的印章时&#xff0c;我仿佛看到了一座桥梁——这座桥梁连接着五千年的华夏智慧与面…...

造相 Z-Image 开源模型效果:多物体空间关系(遮挡、投影、比例)理解能力

造相 Z-Image 开源模型效果&#xff1a;多物体空间关系&#xff08;遮挡、投影、比例&#xff09;理解能力 1. 模型概述与核心能力 造相 Z-Image 是阿里通义万相团队开源的文生图扩散模型&#xff0c;拥有20亿级参数规模&#xff0c;原生支持768768及以上分辨率的高清图像生成…...

开箱即用:万物识别镜像Gradio界面快速体验教程

开箱即用&#xff1a;万物识别镜像Gradio界面快速体验教程 1. 引言&#xff1a;让AI视觉识别像打开网页一样简单 想象一下&#xff0c;你拿到了一张照片&#xff0c;里面有个不认识的植物、一个没见过的零件&#xff0c;或者一件叫不上名字的老物件。以前你可能需要上网搜索、…...

Dell笔记本车载电源适配器:20V/90W升压+1-Wire协议认证设计

1. 项目概述本项目实现一款面向Dell笔记本电脑的便携式车载电源适配器&#xff0c;核心功能是将12V车载电源&#xff08;典型范围为9V–16V&#xff09;高效升压至稳定20V/4.5A&#xff08;90W&#xff09;直流输出&#xff0c;并兼容Dell原厂笔记本所要求的专用供电握手协议。…...

AIGlasses_for_navigation数据存储方案:MySQL安装配置与轨迹管理

AIGlasses_for_navigation数据存储方案&#xff1a;MySQL安装配置与轨迹管理 你是不是也遇到过这样的场景&#xff1f;开发一个智能眼镜导航应用&#xff0c;前端交互做得挺酷&#xff0c;模型推理也跑通了&#xff0c;但用户一走&#xff0c;数据全没了。下次再打开&#xff…...

从零理解极限:左右极限与函数连续的直观解释(含常见误区分析)

从零理解极限&#xff1a;左右极限与函数连续的直观解释&#xff08;含常见误区分析&#xff09; 想象一下你正在观察一个温度计&#xff0c;当外界温度逐渐接近冰点时&#xff0c;水开始结冰。这个"逐渐接近"的过程&#xff0c;正是数学中极限概念的精髓——它描述的…...

Phi-3-vision-128k-instructGPU算力优化:vLLM动态批处理与PagedAttention实测

Phi-3-vision-128k-instruct GPU算力优化&#xff1a;vLLM动态批处理与PagedAttention实测 1. 模型介绍与部署验证 1.1 Phi-3-Vision-128K-Instruct模型概述 Phi-3-Vision-128K-Instruct是微软推出的轻量级多模态模型&#xff0c;属于Phi-3系列的最新成员。这个模型特别擅长…...

5分钟搞定Dockerfile加速:Ubuntu18.04全版本清华源一键配置

5分钟实现Dockerfile极速构建&#xff1a;Ubuntu 18.04全架构清华源配置实战 在容器化开发中&#xff0c;Dockerfile的构建速度直接决定了CI/CD管道的效率。而apt-get软件源的选择&#xff0c;往往是影响Ubuntu基础镜像构建时长的关键因素。本文将带您深入探索如何为Ubuntu 18.…...

5分钟搞定Nacos 2.4.3单机版:Docker-Compose极简部署教程

5分钟极速部署Nacos 2.4.3单机版&#xff1a;Docker-Compose实战指南 在微服务架构的日常开发中&#xff0c;快速搭建一个轻量级的配置中心和服务发现平台是每个开发者的刚需。Nacos作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台&#xff0c;已经成为云原生时代的标…...