1.Introduction

连通域在我浅薄的图像处理知识中,一直是很神圣的存在。最近想在Matlab里实现的时候,发现竟然一个函数就解决了,Matlab真香!

2.Materials and methods

首先,还是介绍一下主角函数 bwlabel,看语法还是比较简单的,其中第二个参数 conn 可以设置判断连通域时用4连接还是8连接。另外,这种既可以输入一个参数,又可以输入两个参数的函数实现,可以看我之前的博客,文末有链接~


ok,那接下来就实际试试吧:

a = xlsread('dataset.xlsx');
b = bwlabel(a,4);


这里我们选的是4联通,如果改成8联通的话,标签就只剩0和1了,因为8联通的条件更严格,也更难判定其为连通域。具体原理看下图:


目前为止,我们找到了矩阵中的连通域,那么接下来就要寻找各个连通域中的最小值了。代码如下:

data = xlsread('dataset.xlsx');
dataLabel = bwlabel(data,4);dataLabelType = unique(dataLabel); labelNum = size(dataLabelType,1)-1;                                         % Obtain the number of label type.
minData = ones(labelNum,1);                                                 % Initializing the minimum element in matrix.
minDataRow = zeros(labelNum,1);                                             % Initializing the row index of minimum element in each label.
minDataCol = zeros(labelNum,1);                                             % Initializing the column index of minimum element in each label.for i = 1:labelNumdataInSpecialLabel = data(dataLabel==i);                                % Obtain all the elements of special label (Continuously increasin).minData(i,1) = min(dataInSpecialLabel);                                 % Obtain the minimum one.[minDataRow(i,1),minDataCol(i,1)] = find(data == minData(i,1));         % Record the row and column index of the minimum one.
end

代码中的 unique 函数是确定数组中都存在哪些数,具体用法看文末链接。

3. Results and discussion

运行代码,看看结果:


结果如上图所示,代码输出了每个连通域最小值所处的行列坐标,代码功能也便实现了。

4. Conclusion

其实我一直喜欢代码开源,因为之前看了很多博客,有的是讲原理没代码,有的放代码没注释,甚至运行直接报错。所以我就想,直接把代码贴出来,再配一些解释说明,方便大家使用,也希望不要再反复造轮子了。

但是,我写代码是我想写,而不是我要写。一些代码封装的像艺术品,有的人都不会用,真白瞎我代码了。

猜你喜欢:

【Matlab】找到矩阵中每个连通域的最小值相关推荐

  1. matlab 连通域数量,【Matlab】找到矩阵中每个连通域的最小值

    [Matlab]找到矩阵中每个连通域的最小值 [Matlab]找到矩阵中每个连通域的最小值 连通域在我浅薄的图像处理知识中,一直是很神圣的存在.最近想在Matlab里实现的时候,发现竟然一个函数就解决 ...

  2. matlab 将矩阵中的0置为Inf(邻接矩阵)

    矩阵中的0置为Inf(邻接矩阵) ind=find(x==0); x(ind)=inf; index=isnan(z); z(index)=0; 在Matlab中,有一个logical数据类型,和C+ ...

  3. 【Matlab】矩阵中选取任意子矩阵

    1.Introduction 好久没用Matlab写代码了,嗯,也没用其他语言. 至于怎么实现在矩阵中提取子矩阵,又学了一会,好记性不如烂笔头呀. 2.Materials and methods 如下 ...

  4. MATLAB提取矩阵中的一部分

    MATLAB对矩阵的操作十分灵活,下面对最近遇到的进行总结: 格式A(m,n),用于提取矩阵A中符合m,n要求的部分 1.提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素. 2.提 ...

  5. matlab 矩阵与数比较,MATLAB 对矩阵中的数据进行大小比较

    用matlab对矩阵进行高斯消元 %求解例题2.1%高斯法求解线性方程组Ax=b%A为输入矩阵系数,b为方程组右端系数%方程组的解保存在x变量中%先输入方程系数A=[1 2 3;2 7 5;1& ...

  6. Matlab查看矩阵中包含的所有数字种类

    本文记录了如何用Matlab查看某个矩阵中包含的数字种类.更新于2019.03.06. (本文后续可能会变成Matlab技巧类命令的整合.) 命令: unique 示例:

  7. matlab 将矩阵中的NAN替换为0

    将矩阵中的NAN替换为0,matlab代码如下: x(find(isnan(x)==1)) = 0 其中:x为待处理矩阵.

  8. matlab 找到数组中第一个不连续点_1.基础知识(1) Matlab基础知识

    前言: 前两次文章有读者私信说Matlab初学,基础较差,本次分享一下Matlab的基础内容,熟练者可以跳过本文,后续的文章也会在文后加上一些基础内容分享. 关键字:Matlab.数组.函数.计算.绘 ...

  9. 学习笔记97—matlab 获取矩阵中特定值的坐标

    1.二维矩阵中,找出特定值的坐标: 方法一:[x,y] = find(A == 10); 方法二:ind = find(A == 10); [X, Y, Z] = ind2sub(size(A),in ...

最新文章

  1. 用华为eNSP模拟器配置Hybrid、Trunk和Access三种链路类型端口
  2. 图片裁剪功能学习小结
  3. SpringBoot(2)之自定义配置
  4. 两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
  5. python矩阵旋转函数_Python3算法之十:矩阵旋转
  6. Transform数据权限浅析2之利用Java完成权限设置
  7. SAP Spartacus的persist focus,触发map set的条件
  8. P2717-寒假作业【逆序对,树状数组】
  9. GCC Inline ASM GCC内联汇编
  10. 网页登陆注册(jsp实现)验证码
  11. 牛顿法python实现_牛顿法求极值及其Python实现
  12. 51CTO网友感谢信:昨天以940分的成绩顺利通过NE考试 在此特地感谢网工泡泡
  13. 旺旺怎么去服务器接收文件夹,xp系统下找到阿里旺旺安装路径文件夹的方法
  14. 路由器温度测试软件,教你增强小米路由WEB管理(一)——添加CPU温度显示
  15. Kubernetes 在知乎上的应用
  16. linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
  17. GPT-4正式发布!如何访问 怎么免费使用GPT-4?
  18. JointJS入门实例01-在JOINTJS元素中使用HTML
  19. 短视频营销与短视频营销的主流营销模式
  20. Prometheus 一文带你搞懂标签label的作用

热门文章

  1. 助力深度学习!阿里开源可插拔 GPU 共享调度工具
  2. Linux练习(write写入)
  3. Bash中的whereis
  4. JVM参数详解和调优
  5. DELPHI加密字串(异或运算加密)
  6. linux下dhcp配置(一)
  7. VS2010数据库项目不能正常工作解决方案(转)
  8. PHP创建图像的应用!!!!
  9. hdu 3577(线段树区间更新)
  10. hdu 2155(dp)