基于MATLAB图像中的圆形目标识别和标记

一、前言

在数字图像处理中,有些图像类别可以使用圆形度进行区分。圆度有时被称为圆形度,其定义为:圆度 = 4πA / P²,其中A是面积,P是周长。这个公式的来源是,对于圆来说,这个值等于1,因为圆的周长P=2πr,面积A=πr²,代入得4π*(πr²)/(4π²r²)=1。而对于其他形状,这个值小于1,越接近1,说明形状越接近圆。这个可能是一个标准化的圆度指标,称为圆形度或圆度系数。例如,正方形的面积是a²,周长是4a,所以圆度为4πa²/(4a)^2 =4πa²/(16a²)=π/4≈0.7854。所以这个值越接近1,形状越圆,而正方形的圆度是π/4,约0.785。下面示例说明如何使用对彩色图像进行处理,根据对象的圆度对其进行分类。

二、程序代码

%确定图像中的圆形目标( 主要用了圆形度参数进行测量)-该题综合性较强建议同学们进行练习并总结

close all;

clear all;

clc;

I = imread('pillsetc.png'); %读取MATLAB内置图像

figure(1),imshow(I); %显示原始彩色图像

I2 = rgb2gray(I);%彩色图像转灰度图像

bw = imbinarize(I2);%图像二值化

figure(2),imshow(bw)

bw = bwareaopen(bw,30);%数字形态学处理:删除包含少于 30 个像素的所有对象

figure(3),imshow(bw);

se = strel('disk',2); %设置圆盘结构元素

bw = imclose(bw,se);%闭运算(先膨胀后腐蚀)

figure(4),imshow(bw);

bw = imfill(bw,'holes'); %填充孔洞

figure(5),imshow(bw);

%% IV.寻找边界

B,L\] = bwboundaries(bw,'noholes');%边界提取-只关注外边界 figure(6),imshow(label2rgb(L,@jet,\[.5 .5 .5\]))%标记矩阵L转化为RGB图像 hold on for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2);%绘制白色边界线 end %% V.判断圆形 stats = regionprops(L,'Area','Centroid');%测量图像区域的属性(实际像素数和质心) threshold = 0.94;%阈值 % 边界循环 for k = 1:length(B) boundary = B{k};%获取标签"k"对应的(X,Y)边界坐标 %计算物体的近似周长 delta_sq = diff(boundary).\^2; perimeter = sum(sqrt(sum(delta_sq,2))); area = stats(k).Area;%计算标签'k'对应的面积 metric = 4\*pi\*area/perimeter\^2;%计算圆度-圆的圆度为1 metric_string = sprintf('%2.2f',metric);%显示结果 %如果圆度大于阈值threshold,则用黑色圆圈表示(代表为圆) if metric \> threshold centroid = stats(k).Centroid; % plot(centroid(1),centroid(2),'ko'); % plot(centroid(1),centroid(2),'k+');%在圆心用十字线显示 plot(centroid(1),centroid(2),'w+');%在圆心用白色的十字线显示 end text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color',... 'y', 'FontSize',14,'FontWeight','bold') %在边界左侧显示圆度 end title('指标越接近1代表越接近圆形'); 三、运行结果 ![](https://i-blog.csdnimg.cn/direct/7c9f0be6501c489694ed1ca3717b5386.jpeg) 如果大家觉得本文对大家学习和研究有所帮助,请点赞和关注,欢迎转发!

相关推荐
LeonDL16821 分钟前
基于YOLO11深度学习的电梯内车辆识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·深度学习·pyqt5·yolo数据集·yolo11深度学习·电梯内车辆识别系统
gihigo19981 小时前
MATLAB数值分析方程求解方法详解
算法·机器学习·matlab
熊猫_豆豆1 小时前
用AI训练数据,预测房地产价格走势(Python版)
人工智能·ai模型·房产预测
听雨~の(>^ω^<2 小时前
OSTrack视频单目标跟踪
人工智能·目标跟踪·音视频
轻微的风格艾丝凡2 小时前
Simulink 在汽车工业中的深度应用与技术实践
matlab·汽车·simulink
说私域2 小时前
基于“开源AI智能名片链动2+1模式S2B2C商城小程序”的私域用户池构建与运营研究
人工智能·小程序
海边夕阳20063 小时前
【每日一个AI小知识】:什么是多模态AI?
人工智能
songyuc4 小时前
【S2ANet】Align Deep Features for Oriented Object Detection 译读笔记
人工智能·笔记·目标检测
asdfg12589634 小时前
DETR:新一代目标检测范式综述
人工智能·目标检测·目标跟踪
doubao365 小时前
如何有效降低AIGC生成内容被识别的概率?
人工智能·深度学习·自然语言处理·aigc·ai写作