基于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) 如果大家觉得本文对大家学习和研究有所帮助,请点赞和关注,欢迎转发!

相关推荐
非优秀程序员11 分钟前
10分钟,用qclaw打造你的AI选股系统--官方每天送4百万token
人工智能·微信·产品经理
清空mega12 分钟前
动手学深度学习——卷积层详解:卷积核是怎么被学出来的?
人工智能·深度学习
沸点小助手14 分钟前
「百虾大战 & 晒晒你的Token账单」沸点获奖名单公示|本周互动话题上新🎊
人工智能·ai编程·沸点
cyyt17 分钟前
深度学习周报(3.23~3.29)
人工智能·深度学习
badhope28 分钟前
10个高星GitHub项目推荐
python·深度学习·计算机视觉·数据挖掘·github
科威舟的代码笔记32 分钟前
OpenClaw 权限风险深度剖析与 AI Agent 授权治理的技术思考
人工智能·openclaw
春日见38 分钟前
GIT操作大全(个人开发与公司开发)
开发语言·驱动开发·git·matlab·docker·计算机外设·个人开发
DeepModel38 分钟前
【特征选择】嵌入法(Embedded)
人工智能·python·深度学习·算法
云烟成雨TD39 分钟前
Spring AI 1.x 系列【14】三月双版本连发!Spring AI 最新功能全掌握
java·人工智能·spring
LaughingZhu42 分钟前
Product Hunt 每日热榜 | 2026-03-28
数据库·人工智能·经验分享·神经网络·chatgpt