MatLab计算图像圆度

2023-05-16

本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像)。

在Matlab2010a中可以实现。

附录效果图:

 

%颗粒圆度 clear;close all; %% %读取源图像 I = imread('999.png'); figure;imshow(I); %% %灰度化、取反 h = rgb2gray(I); figure;imshow(h);%灰度图像 h = imcomplement(h);%取反 figure;imshow(h); %% %中值滤波、二值化 h = medfilt2(h,[4,4]); bw = im2bw(h,graythresh(h)); %% %消除噪点 se = strel('disk',2); bw = imclose(bw,se); figure;imshow(bw); %% %填补闭合图形,填充色为白色 bw  = imfill(bw,'holes'); %% %边界寻找 [B,L] = bwboundaries(bw,'noholes'); % 为每个闭合图形设置颜色显示 figure;imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B)   boundary = B{k};   plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2) end %% %计算面积 stats = regionprops(L,'Area','Centroid');

threshold = 0.94;

% 循环处理每个边界,length(B)是闭合图形的个数,即检测到的陶粒对象个数 for k = 1:length(B)

  % 获取边界坐标'   boundary = B{k};

  % 计算周长   delta_sq = diff(boundary).^2;   perimeter = sum(sqrt(sum(delta_sq,2)));

  % 对标记为K的对象获取面积   area = stats(k).Area;

  % 圆度计算公式4*PI*A/P^2   metric = 4*pi*area/perimeter^2;

  % 结果显示   metric_string = sprintf('%2.2f',metric);

  % 用一个黑色小圆圈标记圆度大于threshold = 0.94 的对象   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,']);

 


 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MatLab计算图像圆度 的相关文章

  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • MATLAB 变量传递和惰性赋值

    我知道在 Matlab 中 当将新变量分配给现有变量时 会进行 惰性 评估 例如 array1 ones 1 1e8 array2 array1 的价值array1不会被复制到array2除非元素array2被修改 由此我推测Matlab中
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • MATLAB parfor 和 C++ 类 mex 包装器(需要复制构造函数?)

    我正在尝试使用概述的方法将 C 类包装在 matlab mex 包装器中here http www mathworks com matlabcentral newsreader view thread 278243 基本上 我有一个初始化
  • 使用不同的背景颜色保存 MATLAB 图窗

    我想打印一个带有深色背景和白色标签的 MATLAB 图 如果我使用print or saveas命令我不知何故失去了颜色 绘图符号再次变暗 背景变为白色 points rand 100 3 plot3 points 1 points 2 p
  • Matlab strcat 不返回字符串?

    imgstr 无法识别 strcat 的输出字符串 homedir C Users images for img 01 bmp 02 bmp 03 bmp imgstr strcat homedir img I imread imgstr
  • MATLAB:图像角坐标和引用元胞数组

    我在比较不同元胞数组中的元素时遇到一些问题 这个问题的背景是我正在使用bwboundariesMATLAB 中的函数可追踪图像的轮廓 该图像是结构横截面 我试图找出整个部分是否具有连续性 即 只有一个轮廓由bwboundaries命令 完成
  • 在 Python 上显示 Matlab mat 文件中的图像

    我目前正在尝试显示从此下载的 Mat 文件中的图像site http www rctn org bruno sparsenet 这是一个 mat 文件 所以我尝试使用 scipy io loadmat 函数加载它 但我似乎无法绘制图像 我究
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 二维随机微分方程 (SDE)

    我第一次研究随机微分方程 我正在寻求模拟和求解二维随机微分方程 模型如下 dp F t p dt G t p dW t where p 是一个 2 1 向量 p theta t phi t F是列向量 F sin theta Psi cos
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • MATLAB 中的内存映射文件?

    我决定使用 memmapfile 因为我的数据 通常为 30Gb 到 60Gb 太大 无法放入计算机内存中 我的数据文件由两列数据组成 对应于两个传感器的输出 并且它们采用 bin 和 txt 格式 m memmapfile G E Str
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl

随机推荐

  • linux程序中文乱码转换,Linux下汉字编码的转换(gbk转换为utf8)

    因为项目的需要linux下将GBK编码转换为utf8编码 xff0c google一下 xff0c 网上的相关资源比较少 xff0c 下面的操作经过本人的反复试验 本例子同样适用于其他的编码转换 有gbk到utf8的转换过程 xff0c 需
  • debian系统下安装ssh服务

    它是什么 xff1f xff1f SSH 为 Secure Shell 的缩写 xff0c 简单地说 xff0c SSH 为建立在应用层基础上的安全协议 SSH 是目前较可靠 xff0c 专为远程登录会话和其他网络服务提供安全性的协议 利用
  • LinuxC编程视频教程

    linux c基础 共21集 xff09 xff1a http www 21edu8 com pcnet programming 29943 show html 29943 0 0 转载于 https blog 51cto com 1054
  • JSON_VALUE

    本页目录 语法入参功能描述示例 语法 span class pln style color rgb 0 0 0 VARCHAR JSON VALUE span span class pun style color rgb 102 102 0
  • 32131313

    32131313131311 55555555 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh test2222222 test333333333 hhhhhhhhhhhhhhhhhhhhhh
  • aida64使用方法_AIDA64中的详细功能使用步骤介绍

    你们知道AIDA64吗 很多的新用户不熟悉AIDA64是怎么使用的 在这里就为你们呈现了AIDA64的详细使用步骤介绍 1 使用AIDA64查看电脑简单信息 打开计算机 系统概述 xff0c 即可查看计算机的一些基本参数包括CPU xff0
  • 万能平板刷机软件_平板电脑怎么刷机 平板电脑刷机方法【教程】

    摘要 xff1a 刷机简单说就是给平板电脑重装系统 xff0c 跟电脑重装系统一样 正常情况下 xff0c 只要硬件没有问题 xff0c 那么就99 99 可以通过刷机搞定你平板上碰到的问题 刷机真的这么神奇么 那么要怎样给平板电脑刷机呢
  • python中strftime函数_Python strftime()用法及代码示例

    在Python中 xff0c 日期和时间不是其自身的数据类型 xff0c 而是名为 strftime 函数用于将日期和时间对象转换为其字符串表示形式 它需要一个或多个格式化代码输入 xff0c 并返回字符串表示形式 用法 strftime
  • signature=cc29255b4425ca4c96b4511e5937abfa,http

    Message ID lt 458798778300 OQB26387 64 intrigue eastciti com gt MIME Version 1 0 Content Type multipart related boundary
  • php ajax等待返回,Ajax对PHP的调用未返回任何内容

    我正在尝试使我的第一个ajax示例在我的MAMP上运行 我的ajax html看起来像 xff1a 我的ajax js看起来像 xff1a 函数ajax gt gt var xmlhttp 如果 window XMLHttpRequest
  • epg信息服务器,EPG系统及EPG信息的实时更新方法

    1 一种EPG系统 包括 播出系统 1 xff0c 所述播出系统 I 包括节目单编辑模块 11 播出在线控制模块 12 和节目单网关模块 13 xff0c 所述节目单网关模块 13 根据节目单编辑模块 11 编辑的节目数据生成EPG信息 x
  • 大华服务器u盘做系统,#测评大玩家#大华P609双接口U盘轻松备份资料

    这些年随着智能手机和5G网络的普及 xff0c 很多人分享资料的时候 xff0c 都习惯使用即时聊天工具 xff0c 对于一些体积较大的文件 xff0c 则是用网盘来完成 不过现在消费者的隐私保护意识越来越高 xff0c 各种网盘服务的价格
  • coursera 计算概论与程序设计基础(李戈)-第二题

    判断闰年 正常情况下一年有365天 xff0c 但是闰年的时候 xff0c 一年有366天 现在给定一个年份 xff0c 请你判断它是不是闰年 凡是能被4整除的年是闰年 xff1b 但逢百之年 xff0c 能被4整除的并不是闰年 xff0c
  • Debian 7 安装使用 Virtualbox及增强功能

    一 安装virtualbox 可以从源里安装 sudo apt get install virtualbox 也可以下载最新版安装 https www virtualbox org wiki Downloads 二 安装增强功能 安装增强功
  • 《你必须知道的.NET》第二次印刷,未来与梦想

    你必须知道的 NET 网站 Anytao技术博客 你必须知道的 NET 第二次印刷 xff0c 未来与梦想 发布日期 xff1a 2008 11 20 作者 xff1a Anytao 2008 Anytao com xff0c Anytao
  • 51学习计划最后

    hhhhhhhhhhh 来了11111111111111111111111111111111111111111111111111111111111111111111111 555 4444 66 77 88 99 00 61 61 61 6
  • sql 跨数据库读取数据库中的数据

    跨数据库读取数据库中的数据 创建链接服务器 右键单击 连接服务器 xff0c 弹出 xff1a 点击 安全性 xff0c 弹出 xff1a 输入连接到的数据库的登陆名和密码 这样链接服务器就创建完成了 这样就可以通过链接服务器的方式查询到链
  • Android系统定制之SystemUI修改:下拉通知栏尺寸【转】

    本文转载自 xff1a https blog csdn net huil0925 article details 67632358 最近项目需要修改下拉通知栏面板的宽度 xff0c 完成后 xff0c 写个Blog做个总结 xff0c 也提
  • git只拉取github部分代码的方法

    需求 xff1a github某个项目所有代码太大 xff0c 有600 43 M xff0c 甚至更大 xff1b 只需要拉取部分代码 xff0c 一是可以降低网络消耗 xff0c 二是可以降低磁盘占用 分析了下空间占用情况 xff1a
  • MatLab计算图像圆度

    本文所述方法可以检测同一图像中的多个圆形 xff08 准确的说 xff0c 应该是闭合图像 xff09 在Matlab2010a中可以实现 附录效果图 xff1a 颗粒圆度 clear close all 读取源图像 I 61 imread