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

这篇具有很好参考价值的文章主要介绍了MATLAB示例——图像中圆的识别与判断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基本介绍

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

二、程序代码

2.1 加载图像

加载图像代码如下:

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

运行效果如下:
MATLAB示例——图像中圆的识别与判断

2.2 灰度化与二值化

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

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

运行效果如下:
MATLAB示例——图像中圆的识别与判断
可以发现图像有许多噪声,接下来需要对图像进行形态学处理去噪。

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);

运行效果如下:
MATLAB示例——图像中圆的识别与判断

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

运行效果如下:
MATLAB示例——图像中圆的识别与判断

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

只有对于圆,该度量值等于 1;而对于任何其他形状,该度量值都小于 1。可以通过设置适当的阈值来控制判别过程。此示例中使用 0.94 的阈值。

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

运行效果如下:
MATLAB示例——图像中圆的识别与判断

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


ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~文章来源地址https://www.toymoban.com/news/detail-451083.html

到了这里,关于MATLAB示例——图像中圆的识别与判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab图像处理-模式识别方法

    模式识别方法 模式分类或模式匹配的方法有很多,总体分为四大类: 以数据聚类的监督学习方法; 以统计分类的无监督学习方法; 通过对基本单元判断是否符合某种规则的结构模式识别方法; 可同时用于监督或者非监督学习的神经网络分类法。 1. 线性判别法  线性判别法

    2024年02月07日
    浏览(43)
  • 图像形状及数量识别(matlab实现)

    基于视觉的沙粒形状识别系统模型需要借助计算机对特征的信息处理和分析,实现像人一样的智能识别,所以通常模式识别与机器学习存在着一定的联系。机器识别技术的实现主要分为以下几个步骤: (1) 获取图像数据。 (2) 数据预处理。 (3) 图像特征提取。 (4) 设

    2024年02月08日
    浏览(29)
  • 图像去噪简单介绍—并给出示例代码

    图像去噪是指在图像中移除噪声,以使其更加清晰。在本教程中,我们将深入介绍图像去噪的基本原理、常见噪声类型,以及几种常用的去噪方法,包括传统的滤波方法和深度学习方法。 在讲解去噪的方法之前,我们需要了解一些基本原理。噪声通常被定义为信号中的任何不

    2024年02月02日
    浏览(31)
  • 【图像处理】基于MATLAB的RGB车牌识别

    目录 基于MATLAB的RGB车牌识别 基于MATLAB的RGB车牌识别通常可以分为以下步骤: 读入待处理图像,将RGB图像转换为HSV图像; 提取HSV图像中的Hue和Saturation通道; 利用颜色索引表的方式对提取出的Hue和Saturation进行阈值分割,得到二值化图像; 对二值化图像进行形态学操作,实现

    2023年04月22日
    浏览(46)
  • 6 图像处理实现螺纹识别案例(matlab程序)

      2. 代码 clear;clc;close all I=imread(\\\'luowen1.bmp\\\');   %读取螺纹图片 try     I=rgb2gray(I);         %如果是RGB图,则转换成灰度图 catch end figure imshow(I) title(\\\'原图(半边螺纹)\\\') for K=1:15     I=wiener2(I,[5 5]);   %通过滤波15次把多余点滤除 end [m,n]=size(I); I=edge(I,\\\'canny\\\');       %通过边缘检测

    2024年02月12日
    浏览(41)
  • 数字图像处理之matlab大作业:车牌识别

    1、基于模板的车牌识别,带GUI GitHub - joeyos/LicensePlateRecognition: License plate recognition 2、基于模板的车牌识别,注释详细 https://github.com/hangxyz/License-Plate-Recognition-by-MATLAB 3、其他优秀作品 1)董同学:带语音播报的车牌识别 车牌识别-基于模板匹配_勇敢歪歪的博客-CSDN博客_车牌识

    2024年02月08日
    浏览(42)
  • MATLAB【数字图像处理】 大作业:人脸表情识别

    运用已掌握的知识以及查阅相关资料,设计方案能够识别人脸表情中的高兴、厌恶、生气、悲伤、面无表情这五类表情。 本系统是基于PCA算法的人脸特征提取。运用PCA算法来实现人脸特征提取,然后通过计算欧式距离来判别待识别测试人脸。 整个系统的流程是首先是人面部

    2024年02月06日
    浏览(38)
  • 数字图像处理实验之Matlab对图像的基本处理

    1、提取Lena图像的左半上角部分,与原始Lena图像在同一个figure中显示,并做适当命名 效果图 2、利用 imnoise , 对原始Lena图像叠加高斯噪声,产生4幅、14幅、140幅的含噪图像。对这些含噪图像采用 相加  运算,来验证、比较图像相加消除叠加性噪声的效果。将原始图像、1幅噪

    2024年02月03日
    浏览(57)
  • 手机摄像头+Matlab完成图像的自动识别

    Matlab中有现成的图像识别的例子。如果已经有摄像头了,那么就用摄像头进行试验。但是本老觉得笔记本摄像头很不方便,又不舍得花钱去买新的摄像头(主要是穷),既然手机有摄像头,那能不能用手机的摄像头呢?那样就很方便了。 Matlab没啥干不了的,有两种方法,一种

    2024年02月12日
    浏览(39)
  • 霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)

    当使用霍夫变换进行车道线识别时,可以按照以下步骤来编写 MATLAB 代码: 读入图像:使用 imread 函数读取包含车道线的图像。 图像预处理:为了减少噪音和突出车道线,可以对图像进行预处理。通常,可以采用以下步骤: 将图像转换为灰度图像:使用 rgb2gray 函数将彩色图

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包