MATLAB:Image Processing Toolbox工具箱入门实战,2024年最新循序渐进

本教程介绍了MATLAB中Image Processing Toolbox的应用,包括使用imfindcircles()检测圆形物体,图像增强与预处理(如形态学操作),以及利用Sobel算子进行裂纹检测。通过实例项目讲解了图像处理的关键步骤,如二值化、连通分量分析和梯度计算。
摘要由CSDN通过智能技术生成

Detect and Measure Circular Objects in an Image- MATLAB & Simulink ExampleThis example shows how to automatically detect circular objects in an image and visualize the detected circles.icon-default.png?t=N7T8https://www.mathworks.com/help/releases/R2021b/images/detect-and-measure-circular-objects-in-an-image.htmlimfindcircles()使用基于圆形 Hough 变换 (CHT) 的算法在图像中寻找圆形。之所以使用这种方法,是因为当存在噪声、遮挡和变化的光照条件时该方法表现稳健。

有关imfindcircles()的详细信息,请参阅帮助文档:

Find circles using circular Hough transform - MATLAB imfindcirclesThis MATLAB function finds the circles in image A whose radii are approximately equal to radius.icon-default.png?t=N7T8https://www.mathworks.com/help/releases/R2021b/images/ref/imfindcircles.html本项目旨在演示调参来寻求圆目标的过程。

rgb = imread('coloredChips.png');
imshow(rgb)

% 此段代码是为了清楚对象是比背景亮还是比背景暗,输出灰度图片看一看
% gray_image = rgb2gray(rgb);
% imshow(gray_image)

% 此段代码用来确定imfindcircles函数里的radiusRange,测出来应该是[25 30]
% d = drawline;  % 画一条线,大致画出圆的直径
% pos = d.Position  % 线的位置
% diffPos = diff(pos);  % 各行之间的一阶差分,也就是delta x和delta y
% diameter = hypot(diffPos(1),diffPos(2))  % 平方和的平方根(斜边)

% 这里开始找圆,用的是imfindcircles()函数
% 背景相当亮,大多数塑料片比背景暗,将参数 'ObjectPolarity' 设置为 'dark' 以搜索较暗的圆。
% imfindcircles 有两种不同寻找圆的方法:默认方法(称为相位编码方法)/两阶段方法,这里指定使用两阶段方法
% 两种方法都能准确找到部分可见(遮挡)塑料片的中心和半径。
[centers,radii] = imfindcircles(rgb,[25 30],'ObjectPolarity','dark', ...
    'Sensitivity',0.92,'Method','twostage');

% 注意到黄色圆都没有被检测到
% 与背景相比,黄色塑料片的强度几乎相同,甚至更亮。因此,要检测黄色塑料片,'ObjectPolarity' 改为 'bright'。
% [centersBright,radiiBright] = imfindcircles(rgb,[25 30], ...
%     'ObjectPolarity','bright','Sensitivity',0.95)
% 找到了三个原先未检测到的黄色塑料片,但仍有黄色塑料片未检测到

% 要查找圆,imfindcircles 仅使用图像中的边缘像素。这些边缘像素基本上是具有高梯度值的像素。
% 'EdgeThreshold' 参数控制像素的梯度值必须有多高,才能将其视为边缘像素并包含在计算中。
% 该参数的高值(更接近 1)只允许包含强边缘(较高梯度值),而低值(更接近 0)的宽容度更高,可在计算中包含较弱的边缘(较低梯度值)。
% 对于检测不到黄色塑料片的情况,是因为对比度低,一些边界像素(在塑料片的圆周上)预期具有低梯度值。因此,请降低 'EdgeThreshold'。
[centersBright,radiiBright,metricBright] = imfindcircles(rgb,[25 30], ...
    'ObjectPolarity',&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值