【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=

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

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

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

  2. matlab+代码前+有加号,矩阵中出现加号和星号 什么意思

    matlab中运行后有个矩阵中出现加号和星号  "+      * " 这是什么意思 Columns 52 through 54 0                         ...

  3. numpy找到矩阵中不同元素的种类_基于NumPy和图像分类的人工神经网络构建

    基于NumPy和图像分类的人工神经网络构建 本文利用NumPy系统在Python中构建人工神经网络,以便为Fruits360数据集执行图像分类应用程序. 本文提及的所有内容(即图像和源代码,不包括Fr ...

  4. matlab如何判断矩阵中元素都大于0_在MATLAB中找到矩阵中零元素的数量

    I have a NxM matrix for example named A. After some processes I want to count the zero elements. How ...

  5. MATLAB 如何在二维矩阵中快速找到最大值的位置

    网上找了找方法都比较冗长,适合于复杂的矩阵,但对于简单的二位矩阵找最大值有没有简易方法? 直接贴代码: [m,j]=max(max(ave_pre)):%%得到的是整个矩阵最大值的值和纵坐标 [m,i ...

  6. matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...

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

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

  8. matlab 如何统计矩阵中大于、小于或等于某一值的位置、个数

    善用 find() 和 sum() 函数! 假设存在如下矩阵 a : >> a = [1,2,3;4,5,6;7,8,9] a = 1     2     3      4     5   ...

  9. matlab矩阵指定行最大值,求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.*...

    导航:网站首页 > 求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.* 求Matlab程序:在2行矩阵中,如何求 ...

最新文章

  1. python太慢了-python 读取大文件越来越慢
  2. 柿子不能和什么同吃?柿子相克食物大盘点
  3. TCC两阶段补偿方案
  4. 线性表的定义与操作-顺序表,链式表(C语言)
  5. [html] 你觉得写Html难吗?难在哪?为什么?
  6. (pytorch-深度学习系列)网络中的网络(NiN)
  7. DHCP的安装到简单测试(tar方式)
  8. DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0
  9. 安装apache 后,找不到服务,解决办法
  10. [20150123]热链竞争.txt
  11. 【LeetCode】【字符串】题号:*557. 反转字符串中的单词 III
  12. Spring Cloud(Greenwich版)-01-服务生产者与服务消费者
  13. 场景编辑器 Scene Building
  14. 日记app(1.0)进展报告
  15. 如何成为一名全栈开发人员
  16. html个个代码的意思,网页HTML中各个代码意思大全
  17. 数据完整性、存储过程、函数
  18. 前端图片压缩 pngquanty
  19. 基于Springboot+Vue的电子购物商城设计
  20. 三个sata硬盘只能读取两个_两个SATA硬盘驱动器显示为可弹出

热门文章

  1. 线程创建方式3-实现 callable接口(Java)
  2. 关于发布WP 8.1应用信息不匹配问题的解决办法
  3. 理解BERT Transformer:Attention is not all you need!
  4. 【OCP|052】OCP题库更新,052最新考题及答案整理-第10题
  5. 2018年区块链五大关键趋势预测:区块链与物联网结合有望突破
  6. 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
  7. JavaScript中的六种错误类型
  8. linux源代码剖析之二boot
  9. Linux命令解释之tail
  10. 一文读懂python本地开发环境配置