基于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代表越接近圆形');

三、运行结果

如果大家觉得本文对大家学习和研究有所帮助,请点赞和关注,欢迎转发!

相关推荐
格林威4 分钟前
C#图像分块处理:图像按行或按块(Tile)切分,多个 CPU 核心同时处理不同的区域
开发语言·图像处理·人工智能·机器学习·计算机视觉·c#·工业相机
晓天衡宇•评测社区10 分钟前
Qwen-Image-Bench 榜单更新:19 款文生图模型同榜评测,GPT Image 2 与 Qwen Image 3 Pro 领跑前 2
人工智能
Query*12 分钟前
Agent 开发之项目 AI Native 化:通过大模型与 RAG 赋予产品智能能力
java·人工智能·ai
智购科技自动贩卖机19 分钟前
自动售货机嵌入式系统Go语言开发实践:从资源受限设备到RTOS协程调度的工程化之路
大数据·linux·数据库·人工智能·yolo·架构·golang
Sinclair21 分钟前
从神经网络到文件加密:一次关于 SIREN、ARX 与密码安全性的实验探索
人工智能·机器学习
阿里云大数据AI技术23 分钟前
从三个月到两周:DataWorks Data Agent 重构信飞科技多国数仓交付链路
人工智能·agent
2601_9494999434 分钟前
芯瑞科技 DT‑1414完全兼容HFBR‑1414TZ光模块国产化优选方案深度解析(工程师视角)
运维·网络·人工智能·科技·光模块
BSD_HY38 分钟前
薄膜开关矩阵扫描电路设计中的防鬼键措施
人工智能·算法·矩阵·人机交互·薄膜开关·源头工厂·深圳工厂
2601_9556624639 分钟前
实测6款AI配音工具:从环境部署到本地运行,零成本搭建配音系统
人工智能
单友人41 分钟前
HMHA-RYST 算法技能包 + 聊天记录导出器
人工智能·神经网络·机器学习·语言模型·自动化