资讯详情

MATLAB示例——图像中圆的识别与判断

目录

    • 一、基本介绍
    • 二、程序代码
      • 2.1 加载图像
      • 2.2 灰度化和二值化
      • 2.3 形态学处理
      • 2.4 寻找边界
      • 2.5 确定圆形物体

一、基本介绍

本案例将介绍检测图像中的圆度并判断其圆度。

二、程序代码

2.1 加载图像

加载图像代码如下:

I = imread('pillsetc.png'); figure(1),imshow(I);%显示原始图像 

运行效果如下: 在这里插入图片描述

2.2 灰度化和二值化

灰度化和二值化代码如下:

I2 = rgb2gray(I);%灰度化 bw = imbinarize(I2);%二值化 figure(2),imshow(bw) 

运行效果如下: 可以发现图像有很多噪音,然后需要对图像进行形态处理。

2.3 形态学处理

代码如下:

%删除少于 30 所有像素对象 bw = bwareaopen(bw,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); 

运行效果如下:

2.4 寻找边界

接下来需要寻找边界,指定 ‘noholes’ 选项将通过阻止 bwboundaries 搜索内部轮廓来加快处理速度,代码如下:

[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

运行效果如下:

2.5 确定圆形对象

估计每个对象的面积和周长: 圆的面积: a r e a = π r 2 area=\pi r^2 area=πr2 圆的周长: p e r i m e t e r = 2 π r perimeter=2\pi r perimeter=2πr

使用这些结果形成简单的度量来表示对象的圆度: m e t r i c = 4 π ∗ a r e a p e r i m e t e r 2 metric=\frac{4\pi*area}{perimeter^2} metric=perimeter24π∗area​

使用 regionprops 获得所有对象的面积估计值。请注意,bwboundaries 返回的标签矩阵可以被 regionprops 重用,代码如下:

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;%计算圆度
	metric_string = sprintf('%2.2f',metric);%显示结果

    %如果圆度大于阈值threshold,则用黑色圆圈绘制圆心(代表为圆)
	if metric > threshold
        centroid = stats(k).Centroid;
        plot(centroid(1),centroid(2),'ko');
    end
  
    text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...
       'FontSize',14,'FontWeight','bold')   %在边界左侧显示圆度
  
end
title('指标越接近1代表越接近圆形');

运行效果如下:

上述即为完整代码的各个步骤,完整代码也可参考资源:https://download.csdn.net/download/didi_ya/85299183


ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~

标签: bw氯气传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台