亚像素边缘检测——基于模糊边缘模型的亚像素圆检测方法

论文:A Novel Subpixel Circle Detection Method Based on the Blurred Edge Model

期刊:IEEE Transactions on Instrumentation and Measurement, 71:1-11, 2021.

作者:Weihua Liu, Xianqiang Yang, Xuebo Yang, Hao Sun, Xinghu Yu, Huijun Gao

单位:Research Institute of Intelligent Control and Systems, Harbin Institute of Technology; Ningbo Institute of Intelligent Equipment Technology Company Ltd; School of Computer Science and Technology, Harbin Institute of Technology

1、主要解决问题:

在计算机视觉和工业应用中,圆检测是重要的特征提取手段,高精度圆检测对于自然场景中圆的标记测量、圆形目标跟踪、球的识别等目标测量和检测任务具有重要意义。例如,锡膏打印机和自动光学检测需要识别圆形标记位置,以便精确地定位印刷电路板(PCB),而圆的检测精度直接影响到这些设备检测的精度。在集成电路中,一方面,PCB上的元件变得越来越复杂,标记识别的偏差会引起放置偏差,因此高精度的圆标记测量至关重要。另一方面,由于PCB具有不同的颜色、形状和尺寸,标记圆的差异也会较大,因此圆检测的高稳定性也很重要。
对此上述问题,图1中传统的圆检测算法基于像素级边缘提取,在获得目标圆边缘后,采用拟合方法获得圆的亚像素信息,在这种方法中,边缘提取精度会导致圆检测结果的偏差,并且像素级的检测方法制约了圆形检测的精度。

传统圆检测方法:
在这里插入图片描述

论文提出了一种基于模糊模型的亚像素圆检测算法。在EDCircles算法基础上设计了候选圆的评分及筛选策略,并将二维子像素边缘定位问题转化为一维问题,应用模糊边缘模型获得子像素边缘的精确位置,还提出了一种基于Huber损失函数的鲁棒圆拟合算法,该算法能较好地抑制异常点的影响。

2、研究方法:

论文以EDCircles算法为基础进行目标圆的检测,虽然此算法检测速度快,但是鲁棒性低,在检测一个圆目标时会产生多个结果。
针对EDCircles算法检测得出的目标圆及干扰圆,论文提出了圆圈分数计算的方法,由极性项、半径项和轮廓项组成圆圈分数计算公式,对检测得出的圆进行得分计算。如图2所示,根据公式计算较符合检测目标的圆得分更高,干扰项则得分更低,选择得分最高的目标圆作为最终检测结果。

检测到多个圆时给出不同圆的分数:
在这里插入图片描述
为了提高检测精度,论文提出了一种基于模糊边缘模型的亚像素圆拟合方法,如图3所示。该方法包含三个步骤:

1)计算图像梯度,使用EDCircles获得所有圆的粗略边界位置,并根据梯度计算边缘的方向。

2)沿着边缘梯度的垂直方向选择长度为L的区域作为子像素拟合区域,使用一维子像素边缘拟合算法计算精确的子像素边缘位置。

3)将所有子像素边缘位置拟合到一个圆,并使用鲁棒最小二乘法获得精确的参数。

图像的边缘梯度:
在这里插入图片描述
传统的边缘模型如图4所示,其中阶跃模型不能很好符合梯度边缘线性变化的情况,而线性模型又过于复杂,模型参数难以计算。

传统边缘模型:
在这里插入图片描述
为了既能符合图像边缘线性变化的情况,又能减少模型计算参数,论文使用了图5的模糊边缘模型,它的优点是在任何地方都可导,这就便于模型参数的优化计算,且计算结果近似于实际图像中的边缘梯度。

模糊边缘模型:
在这里插入图片描述

在EDCircles算法鲁棒性差、拟合结果有偏差的问题中,论文采用Huber损失函数对圆进行拟合。Huber函数根据拟合误差的大小选择不同的损失函数,当误差大于阈值时,采用L2损失函数;当误差小于阈值时,使用L1损失函数。从图6可以看出,论文选用的Huber损失函数相比于仅使用L2损失函数得到更好好的拟合结果。

圆拟合结果:
在这里插入图片描述
L2(蓝线)、Huber(红线)和Original(绿线)。
在实验验证方面,论文选用了手工标注的数据集,选用现在较先进的EDCircles、CHT、ALS和基于ZMs的亚像素圆检测算法来与论文改进后的算法进行比较。从图7中可以看出,论文的方法有效地解决了干扰圆的误检测问题。首先提取图片中有可能的圆结果,然后使用分数评价系统过滤掉由EDCircles产生的误差圆,最终得到一个更符合实际圆边界的检测结果,并且在几个方法中,论文的检测结果是最准确,也是拟合最好的。

不同自然图像的结果:
在这里插入图片描述
(a)原始图像 (b)EDCircles ©ZM (d)CHT (e)ASL (f)论文方法
然后进行抗噪性能测试,自动生成样本图像,并添加具有不同信噪比(SNRs)的噪声,比较添加噪声的识别结果和原始识别结果中,圆心位置以及半径的变化。从表1可以看出,论文的方法在噪声干扰下,受影响是最小的,并且偏差有小于0.1像素,这也说明论文算法的精度达到了十分之一像素级。
不同信噪比下的真值偏差:
在这里插入图片描述
在抗变光稳定性分析中,比较了几种方法在光照亮度1~30变化的条件下,圆检测结果的圆心坐标的位置变化,以及圆的半径变化。由图8可以看出,论文的方法圆心坐标位置和半径的变化幅度较小,且检测异常的情况也比较少,总体来说抗变光稳定性还是优于其他的算法。

不同亮度下的检测结果:
在这里插入图片描述
(a)x坐标变化; (b)y坐标变化; ©半径变化; (d)EDCircles、ZM和论文的方法的方框图。
为了评估论文的方法处理不同标记点的检测效果,选择了工厂安装的PCB板上的几幅典型图像进行测试。从图9可以看出,与其他方法相比,论文的方法无论是在标准圆或是在非标准圆中,在所有标记点上都表现得更好,而其他算法在某些标记上有偏差。并且在边界的拟合精确程度上,论文方法的拟合精确度也更高,更贴近真实的边界。

不同标记的检测结果:
在这里插入图片描述
(a)原始图像; (b)EDCircles; ©ZM; (d)CHT; (e)ASL; (f)论文方法
论文绘制了评分系统中不同系数下圆圈检测的受试者工作特征曲线(ROCs),数据集由论文中使用的所有标记图像组成,阳性和阴性样品的比例为1:1。在图10中示出了不同阈值下的真阳性率(TPR)与假阳性率(FPR)的对比。可以看出,当系数为0时,它等价于随机分类。当系数不为0时,评分系统起关键作用,所提出的方法在圆检测方面表现很好。

不同系数值下的ROC曲线:
在这里插入图片描述

最后比较了不同拟合区域长度L下论文方法的运行时间,从图11可以看出,L的长度对运行时间几乎没有影响。总的来说,亚像素计算占用90%以上的时间,运行时间在200 ms左右。

不同L长度下的运行时间:
在这里插入图片描述

3、结论:

论文提出了一种基于模糊边缘模型的亚像素圆检测方法。该方法主要包括三个部分:目标圆获取、亚像素边缘拟合和鲁棒圆拟合。在目标圆获取中,提出了基于极性、输入半径和轮廓的圆评分公式,从EDCircles检测出的多个圆结果中筛选出目标圆;亚像素边缘拟合将二维边缘计算转化为一维问题,首先根据梯度方向确定搜索区域,然后利用模糊边缘模型拟合边缘,根据模型参数计算子像素边缘位置;最后,鲁棒圆拟合应用Huber损失函数来拟合圆,提高了对异常点的鲁棒性。通过实验验证表明,与现有方法相比,该方法具有更强的鲁棒性和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/337673.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【实战】SpringBoot自定义 starter及使用

文章目录 前言技术积累SpringBoot starter简介starter的开发步骤 实战演示自定义starter的使用写在最后 前言 各位大佬在使用springboot或者springcloud的时候都会根据需求引入各种starter,比如gateway、feign、web、test等等的插件。当然,在实际的业务…

Find My卡片正成为消费电子香饽饽,伦茨科技ST17H6x可以帮到您

今年CES许多公司发布支持苹果Find My的卡片产品,这种产品轻薄可充电,放在钱包、背包或者手提包可以防丢查找,在智能化加持下,防丢卡片使得人们日益关心自行车的去向。最新的防丢卡片与苹果Find My结合,智能防丢&#x…

AI绘画Stable Diffusion进阶使用

本文讲解,模型底模,VAE美化模型,Lora模型,hypernetwork。 文本Stable Diffusion 简称sd 欢迎关注 使用模型 C站:https://civitai.com/ huggingface:https://huggingface.co/models?pipeline_tagtext-to-…

单体架构、微服务和无服务器架构

前言 在这篇文章中,我将演示在决定使用单体架构、微服务架构和无服务器架构时的权衡的简化心智模型。目标是突显每种风格的固有优势和缺陷,并提供关于何时选择哪种架构风格的指导。 单体架构 对于小团队或项目来说是理想的入门架构。它简单易上手&…

hot100:07接雨水

题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 算法思想: 这里采取的是暴力解法和双指针的解法,但是这个题目还有其他的两种解法(单调栈和动态规划,同学可以自行了解&#xff…

万界星空科技mes系统可以为企业带来什么好处

随着信息技术的不断发展,MES生产制造系统的作用不断凸显。万界星空科技MES生产制造可以为企业带来四个方面的好处:提升生产效率、降低生产成本、优化生产过程、提高生产质量。本文将从这四个方面分别进行详细阐述,旨在通过对MES生产制造系统的…

2024最新 8 款电脑数据恢复软件推荐分享

数据恢复是一个涉及从设备硬盘驱动器检索已删除文件的过程。这可能需要存储在工作站、笔记本电脑、移动设备、服务器、相机、闪存驱动器上的数据——任何在独立或镜像/阵列驱动器上存储数据的东西,无论是内部还是外部。 在某些情况下,文件可能被意外或故…

[安全警报] Npm木马利用“Oscompatible“包悄然安装AnyDesk

最近,一个名为OsCompatible的恶意包被上传到npm 。该包被发现包含一个针对 Windows 的远程访问木马。 这个名为OsCompatible的软件包于2024年1月9日发布,在被撤下之前共吸引了380次下载。 据了解,OsCompatible包含“几个奇怪的二进制文件”…

力扣hot100 反转链表 指针 递归 一题多解

Problem: 206. 反转链表 文章目录 思路💖 迭代 双指针💖 递归 思路 👨‍🏫 大佬题解 💖 迭代 双指针 ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( 1 ) O(1) O(1) /*** Definition for …

【llm 微调code-llama 训练自己的数据集 一个小案例】

这也是一个通用的方案,使用peft微调LLM。 准备自己的数据集 根据情况改就行了,jsonl格式,三个字段:context, answer, question import pandas as pd import random import jsondata pd.read_csv(dataset.csv) train_data data…

安装MySQL8.0

安装MySQL8.0 第一步我们先把MySQL8.0的镜像拉一下(建议在网络好的情况下 下拉镜像) 之后我们在创造一个容器 conf目录 必须提前上传my.cnf文件到/data/conf目录 并且它与window中的配置文件my.ini后缀名是不一样 data目录 数据保存到宿主机中&#x…

Centos7 如何设置开机启动某个程序

以设置自动启动sentinel-dashboard作为案例 要在CentOS 7上设置开机启动一个Java程序,你可以按照以下步骤进行操作: 1. 进入应用程序的目录 cd /usr/localvim sentinel-dashboard.sh 2. 在sentinel-dashboard.sh 文件中 输入启动脚本 nohup java -D…

ORB-SLAM策略思考之优化器策略

ORB-SLAM策略思考之优化器策略 1 跟踪线程中的优化策略 地图初始化阶段:BA优化(初始化帧位姿固定,优化地图点位姿和第二帧位姿) 当ORB-SLAM判断地图初始化的地图点足以进入地图点位置和第二帧位姿优化阶段时,以初始化…

如何使用GPU租用平台AutoDL

AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 1.价格 截取的部分,价格可以说是非常的优惠了,比其他很多平台都要低,如果是学生党还可以享受到会员价格 2.申请学生认证 只需要有在学校申请的邮箱即可 3.租用GPU 点击右上角控制台 点击…

【网络安全】【密码学】【北京航空航天大学】实验五、古典密码(中)【C语言实现】

实验五、古典密码(中) 实验目的和原理简介参见博客:古典密码(上) 一、实验内容 1、弗纳姆密码(Vernam Cipher) (1)、算法原理 加密原理: 加密过程可以用…

多线程-Thread类及常见方法

目录 1.什么是Thread类 1.1Thread 的常⻅构造⽅法 1.2 Thread 的⼏个常⻅属性 2.启动⼀个线程 - start() 经典面试题:start 和run 区别 3.中断⼀个线程 方法一: 方法二: 4.等待⼀个线程 - join() 5. 获取当前线程引用 方法一: 方法二…

【Linux】—— 命名管道详解

命名管道是一种在操作系统中用于进程间通信的机制,它允许不同的进程之间通过管道进行数据交换。与匿名管道相比,命名管道具有更多的灵活性和功能。在本博客中,我们将深入探讨命名管道的概念、用途以及如何在编程中使用它们。 目录 &#xff…

多线程(看这一篇就够了,超详细,满满的干货)

多线程 一.认识线程(Thread)1. 1) 线程是什么1. 2) 为啥要有线程1.3) 进程和线程的区别标题1.4) Java的线程和操作系统线程的关系 二.创建线程方法1:继承Thread类方法2:实现Runnable接口方法3:匿名内部类创建Thread子类对象标题方法4:匿名内部类创建Runn…

139:leafle加载here地图(v3软件多种形式)

第139个 点击查看专栏目录 本示例介绍如何在vue+leaflet中添加HERE地图(v3版本的软件),并且含多种的表现形式。包括地图类型,文字标记的设置、语言的选择、PPI的设定。 v3版本和v2版本有很大的区别,关键是引用方法上,请参考文章尾部的API链接。 直接复制下面的 vue+leaf…

SpringCloud之Nacos的学习、快速上手

1、什么是Nacos Nacos是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案,用来实现配置中心和服务注册中心。 Nacos 快速开始 2、安装运行nacos nacos下载地址 下载地址: https://github.com/alibaba/nacos/rel…