【Matlab】找到矩阵中每个连通域的最小值
【Matlab】找到矩阵中每个连通域的最小值
连通域在我浅薄的图像处理知识中,一直是很神圣的存在。最近想在Matlab里实现的时候,发现竟然一个函数就解决了,Matlab真香!
首先,还是介绍一下主角函数 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:labelNum
dataInSpecialLabel = 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 函数是确定数组中都存在哪些数,具体用法看文末链接。
运行代码,看看结果:
结果如上图所示,代码输出了每个连通域最小值所处的行列坐标,代码功能也便实现了。
其实我一直喜欢代码开源,因为之前看了很多博客,有的是讲原理没代码,有的放代码没注释,甚至运行直接报错。所以我就想,直接把代码贴出来,再配一些解释说明,方便大家使用,也希望不要再反复造轮子了。
但是,我写代码是我想写,而不是我要写。一些代码封装的像艺术品,有的人都不会用,真白瞎我代码了。
猜你喜欢:????
?【Matlab】函数输入个数不定怎么办?
?【Matlab】如何确定数组中存在哪几个数?
【Matlab】找到矩阵中每个连通域的最小值相关教程
稀疏矩阵的乘法运算
稀疏矩阵的乘法运算 稀疏矩阵的乘法运算 题目信息 输入 输出 测试样例 解答 想法 题目信息 数据压缩是提高传输、存储效率一种技术。 本实验要求实现两个稀疏矩阵相乘积的算法。其中稀疏矩阵非零元素数量小于100. 第1个稀疏矩阵的行数,列数,非零元个数(三个数
python matplotlib绘图、混淆矩阵 汉字字体、数字、英文字母的设
python matplotlib绘图、混淆矩阵 汉字字体、数字、英文字母的设置 最近在写一篇文章的时候,文章对图片格式有要求:图中汉字用宋体六号、数字和英文字母用新罗马字体,这些都需要在一张图中表现出来。经过一番查找摸索,现归纳整理如下: 对坐标轴设置 现假
【Matlab】—{最小二乘法拟合一阶线性拟合传感器实验}
【Matlab】—{最小二乘法拟合一阶线性拟合传感器实验} ???九层妖塔?起于垒土 【Matlab】—{最小二乘法拟合一阶线性拟合传感器实验} 一、代码 二、数据处理结果 三、Notes 一、代码 %电容传感器位移实验数据 最小二乘法一阶线性拟合x = [13.080,12.580,12.080,
【Matlab】怎么实现数据归一化与标准化?
【Matlab】怎么实现数据归一化与标准化? 前段时间,突然发现,做了一年的机器学习,居然没有对特征归一化,不过从结果看好像问题不大,从原理上看嘛,我们另开一篇博客单讲。所以这篇文章就讲讲数据归一化和标准化的区别及其实现方式。 关于 归一化 和 标准
矩阵的快速转置算法
矩阵的快速转置算法 矩阵的快速转置算法 题目信息 输入 输出 测试样例 解答 补充 题目信息 数据压缩是提高传输、存储效率一种技术。本实验要求实现三元组顺序表表示下的矩阵快速转置算法。 稀疏矩阵的行数、列数、非零元个数(三个数都大于0) 以行为主序输入稀
MATLAB【十四】————调用深度库生成exe,批量运行三层文件夹
MATLAB【十四】————调用深度库生成exe,批量运行三层文件夹下图片,保存结果 运行路径:D:\matlab\cmd_batch_processing 文件夹架构: clear;clc;close all; %% crop the im into 256*256 oriDataPath = 'D:\matlab\cmd_batch_processing\data\'; targetP
MATLAB18.04安装过程
MATLAB18.04安装过程 参考了以下博客 https://blog.csdn.net/Eric2016_Lv/article/details/52653915?locationNum=6#reply 应该是下面这个,上面那个不太对。 https://blog.csdn.net/u014577061/article/details/79408337 以下是我安装过程的心得: 安装的时候
【啃书】《智能优化算法及其MATLAB实例》例8.2禁忌搜索算法进行
【啃书】《智能优化算法及其MATLAB实例》例8.2禁忌搜索算法进行函数寻优 文章目录 问题描述 仿真过程 matlab源码 问题描述 仿真过程 matlab源码 %该脚本应命名为func2.m%%%%%%%%%%%%%%%%%%%%%%%%%%%%适配值函数%%%%%%%%%%%%%%%%%%%%%%%%function y=func2(x)y=