MATLAB的图像提取形态学实战之对特殊形状物体的识别确定——圆形目标的识别计算

该篇博客介绍了使用MATLAB进行图像处理,通过形态学操作和数学方法识别并计算圆形目标。首先对图像进行二值化,然后进行开运算去除噪声,再填充缝隙,最后通过边界检测和面积比例判断找到近似圆形的物体,并计算其面积和周长比以确认是否为圆形。
摘要由CSDN通过智能技术生成

MATLAB的图像提取形态学实战之对特殊形状物体的识别确定——圆形目标的识别计算

clear all;close all;clc;

RGB01=imread('X233.jpg');
subplot(221);
imshow(RGB01);title('原始图像');

I01=rgb2gray(RGB01);
threshold=graythresh(I01);
bw01=im2bw(I01,threshold);%阈值分割二值化
subplot(222);
imshow(bw01);title('二值图像');

bw02=bwareaopen(bw01,5);%形态学开运算去除像素小于10的目标
subplot(223);
imshow(bw02);title('开运算去除噪声');

sse=strel('disk',2);
bw03=imclose(bw02,sse);%对图像进行填充缝隙和孔洞
%寻找图像目标的边界
[B,L]=bwboundaries(bw03,'noholes');
subplot(224);hold on;
imshow(label2rgb(L,@jet,[.1 .1 .1]));title('检测目标图像');
 for k =1:length(B)
     boundary=B{k};
     plot(boundary(:,2),boundary(:,1),'y','LineWidth',1);
 end

 stats=regionprops(L,'Area','Centroid');
 threshold=0.95;
 
 for k =1:length(B)
     boundary=B{k};
     delta_sq=diff(boundary).^2;
     perimeter=sum(sqrt(sum(delta_sq,2)));
     
     area=stats(k).Area;
     
     metric=4*pi*area/perimeter^2;
     
     metric_str=sprintf('%2.2f',metric);
     if metric>threshold
         centroid=stats(k).Centroid;
         plot(centroid(1),centroid(2),'ko');
     end
     
     text(boundary(1,2)-35,boundary(1,1)+13,metric_str,...
         'Color','y','FontSize',14,'FontWeight','bold');
 end     

运行效果如图:
在这里插入图片描述
图片素材不是太好,不过算法从理论上看,没有问题。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值