imfindcircles


使用圆形霍夫变换查找圆

Syntax

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

Description

centers = imfindcircles(A,radius)在图像A中找到半径近似等于半径的圆。 
中心的输出是一个两列的矩阵,其中包含图像中圆心的(x,y)坐标。

[centers,radii] = imfindcircles(A,radiusRange)查找半径在radiusRange指定范围内的圆。 
附加输出参数radii包含与中心中每个圆心相对应的估计半径。

[centers,radii,metric] = imfindcircles(A,radiusRange)还返回一个列向量metric,
其中包含每个圆的累加器阵列峰值的大小(降序排列)。 中心行和半径行对应于公制行。

[___] = imfindcircles(___,Name,Value)使用以前的任何语法,使用一个或多个Name,
Value对参数指定其他选项。

Examples

检测图像中的五个最强圆
本示例说明如何查找图像中的所有圆,以及如何保留和显示最强的圆。

clear all
close all
clc
A = imread('coins.png');
imshow(A)
%查找半径r像素在[1530]范围内的所有圆。
[centers, radii, metric] = imfindcircles(A,[15 30]);
%根据度量值保留五个最强的圆圈。
centersStrong5 = centers(1:5,:); 
radiiStrong5 = radii(1:5);
metricStrong5 = metric(1:5);
%在原始图像上绘制五个最强的圆周长。
viscircles(centersStrong5, radiiStrong5,'EdgeColor','b');

在这里插入图片描述
在这里插入图片描述
在图像的明亮和黑暗圆圈周围绘制线条

clear all
close all
clc
A = imread('circlesBrightDark.png');
imshow(A)
%定义半径范围。
Rmin = 30;
Rmax = 65;
%找到半径范围内图像中的所有亮圈。
[centersBright, radiiBright] = imfindcircles(A,[Rmin Rmax],'ObjectPolarity','bright');
%找到半径范围内图像中的所有黑圈。
[centersDark, radiiDark] = imfindcircles(A,[Rmin Rmax],'ObjectPolarity','dark');
%在明亮圆圈的边缘周围绘制蓝线。
viscircles(centersBright, radiiBright,'Color','b');
%在黑圈的边缘周围绘制红色虚线。
viscircles(centersDark, radiiDark,'LineStyle','--');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Input Arguments

radius — Circle radius

圆半径是要检测的圆形对象的近似半径,指定为正数。
radiusRange —半径范围
要检测的圆形对象的半径范围,指定为[rmin rmax]形式的正整数的2元素向量,其中rmin小于rmax。

Name-Value Pair Arguments
‘ObjectPolarity’-对象极性
‘明亮’(默认)| ‘黑暗’

“Method”-计算方法
‘PhaseCode’(默认)| ‘TwoStage’
计算方法是用于计算累加器数组的技术,指定为由“Method”和表中的值之一组成的逗号分隔对。

‘PhaseCode’Atherton和Kerbyson的相位编码方法。 这是默认值。
‘TwoStage’该方法用于两阶段循环霍夫变换

“Sensitivity” —灵敏度系数
0.85(默认)| [0,1]范围内的数字
灵敏度因子是圆形霍夫变换累加器阵列的灵敏度,指定为逗号分隔的一对,由“Sensitivity”和[0,1]范围内的数字组成。 随着灵敏度系数的增加,imfindcircles会检测到更多的圆形对象,包括弱圆形和部分模糊的圆形。 较高的灵敏度值也会增加错误检测的风险。

‘EdgeThreshold’-边缘渐变阈值
[0,1]范围内的数字
边缘梯度阈值设置用于确定图像中边缘像素的梯度阈值,指定为由’EdgeThreshold’和[0,1]范围内的数字组成的逗号分隔对。 指定0将阈值设置为零梯度幅度。 指定1以将阈值设置为最大梯度幅度。 将阈值设置为较低值时,imfindcircles会检测到更多的圆形对象(弱边缘和强边缘)。 随着阈值的增加,它会检测到边缘较弱的圆圈。 默认情况下,imfindcircles使用函数Graythresh自动选择边缘渐变阈值。

Output Arguments

centers—圆心的坐标
圆心坐标,以P×2矩阵形式返回,该矩阵在第一列中包含圆心的x坐标,在第二列中包含y坐标。 行数P是检测到的圆圈数。 中心根据圆圈的强度排序

radii—估计半径
圆心的估计半径作为列向量返回。 半径(j)处的半径值对应于以center(j,:)为中心的圆。

metric—圆心强度
圆强度是圆心的相对强度,以向量形式返回。 度量(j)处的值对应于半径半径(j)以圆心(j,:)为中心的圆。

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值