【Matlab】找到矩阵中每个连通域的最小值
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】找到矩阵中每个连通域的最小值相关推荐
- matlab 连通域数量,【Matlab】找到矩阵中每个连通域的最小值
[Matlab]找到矩阵中每个连通域的最小值 [Matlab]找到矩阵中每个连通域的最小值 连通域在我浅薄的图像处理知识中,一直是很神圣的存在.最近想在Matlab里实现的时候,发现竟然一个函数就解决 ...
- matlab 将矩阵中的0置为Inf(邻接矩阵)
矩阵中的0置为Inf(邻接矩阵) ind=find(x==0); x(ind)=inf; index=isnan(z); z(index)=0; 在Matlab中,有一个logical数据类型,和C+ ...
- 【Matlab】矩阵中选取任意子矩阵
1.Introduction 好久没用Matlab写代码了,嗯,也没用其他语言. 至于怎么实现在矩阵中提取子矩阵,又学了一会,好记性不如烂笔头呀. 2.Materials and methods 如下 ...
- MATLAB提取矩阵中的一部分
MATLAB对矩阵的操作十分灵活,下面对最近遇到的进行总结: 格式A(m,n),用于提取矩阵A中符合m,n要求的部分 1.提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素. 2.提 ...
- matlab 矩阵与数比较,MATLAB 对矩阵中的数据进行大小比较
用matlab对矩阵进行高斯消元 %求解例题2.1%高斯法求解线性方程组Ax=b%A为输入矩阵系数,b为方程组右端系数%方程组的解保存在x变量中%先输入方程系数A=[1 2 3;2 7 5;1& ...
- Matlab查看矩阵中包含的所有数字种类
本文记录了如何用Matlab查看某个矩阵中包含的数字种类.更新于2019.03.06. (本文后续可能会变成Matlab技巧类命令的整合.) 命令: unique 示例:
- matlab 将矩阵中的NAN替换为0
将矩阵中的NAN替换为0,matlab代码如下: x(find(isnan(x)==1)) = 0 其中:x为待处理矩阵.
- matlab 找到数组中第一个不连续点_1.基础知识(1) Matlab基础知识
前言: 前两次文章有读者私信说Matlab初学,基础较差,本次分享一下Matlab的基础内容,熟练者可以跳过本文,后续的文章也会在文后加上一些基础内容分享. 关键字:Matlab.数组.函数.计算.绘 ...
- 学习笔记97—matlab 获取矩阵中特定值的坐标
1.二维矩阵中,找出特定值的坐标: 方法一:[x,y] = find(A == 10); 方法二:ind = find(A == 10); [X, Y, Z] = ind2sub(size(A),in ...
最新文章
- 用华为eNSP模拟器配置Hybrid、Trunk和Access三种链路类型端口
- 图片裁剪功能学习小结
- SpringBoot(2)之自定义配置
- 两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
- python矩阵旋转函数_Python3算法之十:矩阵旋转
- Transform数据权限浅析2之利用Java完成权限设置
- SAP Spartacus的persist focus,触发map set的条件
- P2717-寒假作业【逆序对,树状数组】
- GCC Inline ASM GCC内联汇编
- 网页登陆注册(jsp实现)验证码
- 牛顿法python实现_牛顿法求极值及其Python实现
- 51CTO网友感谢信:昨天以940分的成绩顺利通过NE考试 在此特地感谢网工泡泡
- 旺旺怎么去服务器接收文件夹,xp系统下找到阿里旺旺安装路径文件夹的方法
- 路由器温度测试软件,教你增强小米路由WEB管理(一)——添加CPU温度显示
- Kubernetes 在知乎上的应用
- linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
- GPT-4正式发布!如何访问 怎么免费使用GPT-4?
- JointJS入门实例01-在JOINTJS元素中使用HTML
- 短视频营销与短视频营销的主流营销模式
- Prometheus 一文带你搞懂标签label的作用
热门文章