news 2026/5/7 20:33:00

基于霍夫变换的圆形物体检测和计数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于霍夫变换的圆形物体检测和计数

一、前言

在计算机视觉的实际应用中,圆形物体检测与计数是非常经典的场景:工业零件质检、药丸计数、圆形工件分拣、硬币统计等场景都离不开这项技术。而霍夫变换(Hough Transform)就是实现圆形检测最核心、最经典的算法之一,它对噪声不敏感、对物体部分遮挡鲁棒性强,非常适合工业视觉场景。

霍夫变换是一种特征检测算法,核心思想是坐标空间映射与投票统计。它将图像空间中的几何边缘点,映射到对应参数空间,通过统计参数空间累加峰值,自动拟合出直线、圆形等规则几何图形,抗遮挡、抗噪声能力强。

在 MATLAB 中,imfindcircles函数正是基于霍夫梯度法实现的官方圆形检测函数,使用简单高效。只需输入灰度图像和半径范围,即可自动检测圆形目标,输出圆心坐标、半径等结果。函数支持调节灵敏度、区分亮暗目标,能有效过滤噪声和干扰,无需手动实现复杂算法,直接用于圆形物体的检测、定位与计数,适合工业质检、零件统计等场景。

下面给出一个利用imfindcircle函数检测圆形物体的实例。

二、程序设计思想和程序代码

读取图像:加载想要处理的图像。

图像预处理:将图像转换为灰度图像,并可能应用滤波器来平滑图像,以便更好地处理。

边缘检测:使用例如 Canny 边缘检测器来找到硬币的边界。

圆形检测:使用霍夫圆变换来识别图像中的圆形(即硬币)。

计数硬币:计算检测到的圆形数量。并将其显示在图片的左上角。

标注几何中心:用*标注了硬币的几何中心

代码:

originalImage = imread('D:\图像处理\image\硬币.jpg');

imshow(originalImage);

holdon;% 保持当前图像,以便在其上绘制。

title('Original Image');

% 转换为灰度图像

grayImage = rgb2gray(originalImage);

% 直方图均衡化

equalizedImage = histeq(grayImage);

% 边缘检测

edges = edge(equalizedImage,'canny', [], 2);% 可以调整阈值和Sigma值

% 霍夫圆变换来识别圆形

[centers, radii] = imfindcircles(edges, [20 100],'ObjectPolarity','bright','Sensitivity', 0.92);% 调整半径和敏感度

% 绘制检测到的硬币

viscircles(centers, radii);

% 绘制每个硬币的几何中心

plot(centers(:,1), centers(:,2),'r*');

% 计数硬币

numberOfCoins = numel(radii);

disp(['硬币个数 : ', num2str(numberOfCoins)]);

% 在图像上显示计数结果

text(10, 10, ['硬币个数: ', num2str(numberOfCoins)],'Color','black','FontSize', 10);

holdoff;% 结束在同一图像上的绘制。

三、程序运行结果图

撰写博客不易,如果你觉得本文对你有所帮助,请关注、点赞,欢迎转发。谢谢大家!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 20:30:42

La Capitaine项目架构解析:从设计到部署的完整体系

La Capitaine项目架构解析:从设计到部署的完整体系 【免费下载链接】la-capitaine-icon-theme La Capitaine is an icon pack designed to integrate with most desktop environments. The set of icons takes inspiration from the latest iterations of macOS and…

作者头像 李华
网站建设 2026/5/7 20:28:25

CUA 分发日志 SCUL 实战解析,用户与公司地址同步失败时到底看什么

在 CUA 生产系统里,最容易让 BASIS、安全管理员和 ABAP 开发团队互相追问的问题,往往不是用户能不能在 SU01 里保存,而是保存之后,子系统到底有没有收到、有没有处理、有没有把处理结果回传。一个用户在中央系统里改了角色分配,业务马上去子系统登录,结果权限没变;公司地…

作者头像 李华
网站建设 2026/5/7 20:26:30

为开源Agent框架OpenClaw配置Taotoken作为模型供应商的详细步骤

为开源Agent框架OpenClaw配置Taotoken作为模型供应商的详细步骤 对于使用OpenClaw框架开发AI Agent的开发者而言,灵活接入不同的模型供应商是构建应用的关键。Taotoken平台提供了OpenAI兼容的API,可以让你在OpenClaw中便捷地统一调用其支持的多种模型。…

作者头像 李华
网站建设 2026/5/7 20:25:33

基于提示词工程的AI智慧日报系统:零代码实现跨文化历史故事生成

1. 项目概述:一个永不重复的AI智慧日报系统每天早晨,当大多数人还在与闹钟挣扎时,我已经习惯性地打开手机,期待一份独特的“精神早餐”。它不是来自某个新闻客户端,也不是来自社交媒体的信息流,而是一段由A…

作者头像 李华
网站建设 2026/5/7 20:24:42

WSA-Pacman:Windows安卓应用管理的终极解决方案

WSA-Pacman:Windows安卓应用管理的终极解决方案 【免费下载链接】wsa_pacman A GUI package manager and package installer for Windows Subsystem for Android (WSA) 项目地址: https://gitcode.com/gh_mirrors/ws/wsa_pacman 还在为在Windows上安装安卓应…

作者头像 李华
网站建设 2026/5/7 20:21:23

Vim插件备份恢复终极指南:Vundle.vim确保配置永不丢失

Vim插件备份恢复终极指南:Vundle.vim确保配置永不丢失 【免费下载链接】Vundle.vim Vundle, the plug-in manager for Vim 项目地址: https://gitcode.com/gh_mirrors/vu/Vundle.vim Vundle.vim作为Vim的插件管理器,不仅能帮助用户轻松管理各类插…

作者头像 李华