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

【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数

引言

自动检测图像中的圆形或圆形对象,并可视化检测到的圆形。


函数详解

imfindcircles

imfindcircles是MATLAB中的一个函数,用于在图像中检测并找出圆形区域。

基本语法:

[centers, radii] = imfindcircles(A, radiusRange)
[centers, radii, metric] = imfindcircles(A, radiusRange, Name, Value)

参数详解:

  • A:输入图像,应为一个二维灰度或二值图像。

  • radiusRange:一个包含两个元素的向量,定义了要检测的圆的半径范围。例如,[20 25]表示检测半径在20到25之间的圆。

  • Name, Value:指定附加的参数名称/值对。例如,你可以指定对象的极性(“ObjectPolarity”)、敏感度(“Sensitivity”)和边缘阈值(“EdgeThreshold”)。

返回值详解:

  • centers:一个Nx2的矩阵,表示N个检测到的圆的中心点的x和y坐标。

  • radii:一个Nx1的向量,表示N个检测到的圆的半径。

  • metric:一个Nx1的向量,表示每个检测到的圆的度量值。度量值越高,检测到的圆越可能是真实的圆。

viscircles

viscircles是MATLAB中的一个函数,用于在图像上绘制圆形。

基本语法:

h = viscircles(centers, radii)
h = viscircles(centers, radii, Name, Value)

参数详解:

  • centers:一个Mx2的矩阵,表示M个圆的中心点的x和y坐标。例如,如果你有两个圆,其中心分别为(1,2)和(3,4),那么centers就应该是[1 2; 3 4]

  • radii:一个Mx1的向量,表示M个圆的半径。例如,如果你有两个圆,其半径分别为5和6,那么radii就应该是[5; 6]

  • Name, Value:指定附加的参数名称/值对。例如,你可以指定圆的颜色、线宽等。

返回值详解:

  • h:一个句柄,指向由viscircles函数创建的图形对象。你可以使用这个句柄来修改或删除这些对象。例如,你可以使用delete(h)来删除这些对象。

应用案例

% 读取图像文件
img = imread("coloredChips.png");
% 显示图像
imshow(img, []);

% 使用imfindcircles函数在图像中查找暗色的圆,半径在20到25之间
% "ObjectPolarity"设置为"dark"表示查找暗色的圆
% "Sensitivity"设置为0.95,这是检测算法的灵敏度
[centersDark, radiiDark] = imfindcircles(img, [20 25], "ObjectPolarity", "dark", "Sensitivity", 0.95)
% 使用viscircles函数在图像上画出找到的暗色的圆
hDark = viscircles(centersDark, radiiDark);

% 使用imfindcircles函数在图像中查找亮色的圆,半径在20到25之间
% "ObjectPolarity"设置为"bright"表示查找亮色的圆
% "Sensitivity"设置为0.95,这是检测算法的灵敏度
% "EdgeThreshold"设置为0.1,这是检测算法的边缘阈值
[centersBright, radiiBright, metricBright] = imfindcircles(img, [20 25], "ObjectPolarity" ,"bright", "Sensitivity", 0.95, "EdgeThreshold", 0.1)
% 使用viscircles函数在图像上画出找到的亮色的圆,颜色设置为蓝色
hBright = viscircles(centersBright, radiiBright, "Color", "b");


参考资料

  • https://ww2.mathworks.cn/help/images/detect-and-measure-circular-objects-in-an-image.html

http://www.kler.cn/a/412508.html

相关文章:

  • 如何更好地设计SaaS系统架构
  • 【Petri网导论学习笔记】Petri网导论入门学习(十) —— 3.2 关联矩阵与状态方程
  • vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘
  • 【数据分析】基于GEE解析2000-2020年武汉市FVC时空变化特征
  • solr 远程命令执行 (CVE-2019-17558)
  • Flink中普通API的使用
  • 【竞技宝】LOL-传奇杯:KB3-1击败M3
  • w059基于springboot的课程答疑系统
  • 4 Java数组
  • femor 第三方Emby应用全平台支持v1.0.54更新
  • MySQL-关于InnoDB(1)
  • Spring Boot 3启动加载器详解(含源码解析)
  • Gstreamer中,appsink、appsrc、fakesink与第三方交互
  • Web富文本编辑器 wangeditor 解决 XSS 攻击方法
  • 同步时序电路——描述
  • Tomcat中如何开启gzip压缩?
  • OkHttp3 - 2. OkHttp的核心组件与架构
  • 数据结构C语言描述5(图文结合)--队列,数组、链式、优先队列的实现
  • 【一篇搞定配置】网络分析工具WireShark的安装与入门使用
  • Shell脚本实践练习
  • 简单的TCPSocket客户端使用案例(已入OPCommon)
  • 40分钟学 Go 语言高并发:Select多路复用
  • 【python量化教程】如何使用必盈API的股票接口,获取最新实时交易数据
  • 机器学习模型——线性回归
  • 数据链路层(一)-使用点对点信道的数据链路层
  • Edge浏览器保留数据,无损降级退回老版本+禁止更新教程(适用于Chrome)