霍夫圆型硬币检测Matlab程序

1. 图像读取和预处理

使用MATLAB的uigetfile函数读取图像,可以从文件系统中选择图像文件。读取的图像随后经过灰度化处理,将彩色图像转换为灰度图像,以降低计算复杂度并去除不必要的颜色信息。

 2. 中值滤波

在图像预处理过程中,使用中值滤波来去除噪声。中值滤波是一种非线性滤波方法,可以有效去除椒盐噪声,同时保留图像中的边缘信息,使得后续的边缘检测更加准确。

3. 图像二值化和形态学操作

为了进一步增强图像的特征,采用自适应阈值方法对图像进行二值化处理,将灰度图像转换为二值图像,从而将目标物体与背景分离开来。接着,使用形态学的开操作来去除小型噪声点,并通过闭操作连接断裂的边缘,以增强目标区域的连通性。

4. 边缘检测

边缘检测是图像处理中的关键步骤之一。在本研究中,使用Sobel算子进行边缘检测,以提取图像中目标物体的边缘信息。Sobel算子是一种一阶微分算子,通过计算图像中灰度的梯度变化来检测边缘。

5. 圆形检测

通过霍夫变换来检测图像中的圆形物体。霍夫变换是一种参数空间中的累加方法,用于检测具有特定几何形状的物体。在本程序中,使用imfindcircles函数来检测圆的圆心和半径,并将检测结果可视化。

通过这些步骤,实现了对图像中圆形物体的检测和标注,最终输出了检测到的圆的数量及其中心坐标。

6.结果

clear; clc; close all;
% 读取图像
[file, path] = uigetfile({'*.bmp;*.jpg;*.png;*.jpeg', ...'图像文件 (*.bmp, *.jpg, *.png)'; '*.*', '所有文件 (*.*)'}, '选择图像文件');
if isequal(file, 0)disp('用户取消了文件选择');return;
end
% 读取并转换图像为灰度
img = imread(fullfile(path, file));
img = rgb2gray(img);
figure;
imshow(img);
title('原始图像');
% 应用中值滤波
Img = medfilt2(img, [3 3]);
figure;
imshow(Img);
title('中值滤波后的图像');
threshold = graythresh(Img );
Img  = imbinarize(Img , threshold );
% 应用形态学操作去噪
Img = imopen(Img, strel('disk', 1));
figure;
imshow(Img);
title('形态学操作后的图像');
% 添加闭操作合并连通域
Img = imclose(Img, strel('disk', 3));
figure;
imshow(Img);
title('闭操作后的图像');% 使用边缘检测来检测硬币
edges = edge(Img, 'sobel', 0.1);
figure;
imshow(edges);
title('边缘检测后的图像');
% 使用霍夫变换来检测圆
[centers, radii] = imfindcircles(edges, [15 1000]); % 根据图像调整最小和最大半径
% 显示原始图像并绘制检测到的圆
figure;
imshow(img);
hold on;
% 使用viscircles显示圆形
viscircles(centers, radii, 'EdgeColor', 'b');
% 使用plot标注圆心
% plot(centers(:,1), centers(:,2), 'yo', 'MarkerSize', 10, 'LineWidth', 2);
% 在圆的中心显示直径
for i = 1:length(radii)text(centers(i,1)-16, centers(i,2), sprintf('%.1f', radii(i)*2), ...'Color', 'r', 'FontSize', 12, 'FontWeight', 'bold');
end
% 输出检测到的圆的数量
disp(['检测到的圆的数量: ', num2str(length(centers))]);
% 输出每个圆的中心坐标
disp('圆的中心坐标:');
disp(centers);
hold off;
title('检测到的圆及其中心坐标');

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态,对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码,发现web-view是给绝对定…

EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法

背景 最近在实际操作阿拉伯文小语种OCR功能的时候,尝试了诸多开源算法,但效果均不尽如人意。 说实在的,针对阿拉伯文的OCR开源算法,若仅仅是效果没那么优秀,比如识别率能有个70%80%,我还能微调微调&#…

例行性工作(at,crontab)

(一)单一执行的例行性工作: ----at (1)原理:仅处理执行一次就结束了 (2)命令及其解释: (2.1)at命令格式:at [参数] [执行时间] &am…

C++ Builder XE12关于KonopkaControls与TMS VCL UI Pack组件的安装

1、先打开open project,选中安装的组件工程,并打开。 2、在option中设置 3、点击编译并进行安装install

【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发

一、简单场景介绍 假设你需要为一个商城项目接入一个基于SpringAI的智能客服系统,现在我们来基本模拟一下: 当我通过系统提问,大模型会针对我的问题进行回答。 当我们通过程序提问时,SpringAI会将我们的提问封装成Prompts&#x…

一分钟带你认清Java抽象类

abstrat——抽象,抽象类真的有像它的名字一样那么抽象吗?其实不然,它只是一个比较特殊的类别,我们只需要简单地认清它的作用就行,一起来看看吧~ 抽象类的概念 首先我们要明确一个事情:在面向对象的概念中&…

基于vue框架的宠物管理系统fyv66(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,宠物分类,宠物信息,宠物用品,用品分类,洗护类型,商家,宠物洗护 开题报告内容 基于Vue框架的宠物管理系统开题报告 一、背景与意义 随着城市化进程的加速和生活水平的提高,宠物已成为许多家庭的重要成员,宠…

RabbitMQ service is already present - only updating service parameters

Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …

FFmpeg 简介及其下载安装步骤

目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】,然后单击将其打开 2.5.2 找到系统变量中的【Path】,点…

Python异常处理详解:try, except, else, finally的使用方法与示例

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

力反馈手套如何在VR培训解决方案中为用户提供沉浸式体验?

在VR训练中如何为用户带来更加沉浸式的使用体验一直是该领域不断向前探索的发展方向。力反馈手套的融入为VR训练中的沉浸式交互指出了全新的发展方向。通过使用像SenseGlove Nova这样的虚拟现实力反馈手套,用户能够在VR虚拟训练场景中真实的感受到虚拟物体的尺寸大小…

uniapp 小程序0到1教程

先说明一下,uni-app的文档很乱 一、注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序”…

java代码生成器集成dubbo,springcloud详解以及微服务遐想

摘要 今天终于有了点空闲时间,所以更新了一下代码生成器,修复了用户反馈的bug,本次更新主要增加了dubbo和springcloud脚手架的下载功能,架子是本人亲自搭建,方便自由扩展或者小白学习使用,你也许会问为什么…

SeleniumBase在无头模式下绕过验证码的完整指南

概述 在现代Web爬虫技术中,SeleniumBase 是一款强大的自动化测试工具,能够模拟用户行为,进行高效的数据采集。然而,验证码(CAPTCHA)常常成为爬虫项目中的一个难题,尤其是在无头模式&#xff08…

基于SpringBoot的国家基础信息管理功能的设计与实现

目录 前言 一、标准信息参考 1、信息来源 二、后台基础信息的维护管理 1、实体类和Mapper类 2、业务层和控制层设计 3、前端界面实现 三、管理页面效果 1、列表管理界面 2、国家信息调整 四、总结 前言 在之前的博客中,我们基于GeoTools工具实现了全球各个…

怡然自得英语怎么说,柯桥零基础英语培训

放松的;悠然自得的 例句: Everyone here has a really laid-back attitude. 这里的每个人都是一副优哉游哉的态度。 Visitors seeking deserted and unpolluted beaches and a laid-back atmosphere should go elsewhere. 而寻求静谧、清洁的海滩和…

软件测试面试200问(附30W字面试文档)

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

用gost建立私密的内网穿透网络

内网空透是一项非常有用的东西。 现有比较常见的是用FRP,但是FRP需要配置,文档还挺麻烦。 其实gost是一款功能强大的网络神器,可以轻松实现内网穿透。(内网代理) 本文介绍的是升级版内容,客户端也需要go…

过孔对信号质量的影响(方式、仿真、结论)

概述: 关于过孔的作用(信号孔、电源孔、地孔、机械定位孔、散热通风孔),本文主要叙述过孔在焊盘直径、过孔反焊盘直径、有无非功能焊盘、过孔残桩长度等方面对信号质量带来的影响。 一、 过孔影响信号质量的方式 过孔是PCB上的…

打造高效稳定的FastAPI接口:从统一输出到全局异常处理

引言 在现代应用开发中,API无疑是连接前后端的核心桥梁。无论是Web应用、移动App还是服务间的通信,API的性能和稳定性都直接影响用户体验。而随着Python 3的异步特性不断成熟,FastAPI这款轻量级的Web框架因其超高的性能和灵活性迅速走红。那么,如何用FastAPI构建一个高效稳…