天天看點

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

【Matlab】找到矩陣中每個連通域的最小值

【Matlab】找到矩陣中每個連通域的最小值

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

連通域在我淺薄的圖像處理知識中,一直是很神聖的存在。最近想在Matlab裡實作的時候,發現竟然一個函數就解決了,Matlab真香!

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

首先,還是介紹一下主角函數 bwlabel,看文法還是比較簡單的,其中第二個參數 conn 可以設定判斷連通域時用4連接配接還是8連接配接。另外,這種既可以輸入一個參數,又可以輸入兩個參數的函數實作,可以看我之前的部落格,文末有連結~

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

ok,那接下來就實際試試吧:

a = xlsread('dataset.xlsx');

b = bwlabel(a,4);

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

這裡我們選的是4聯通,如果改成8聯通的話,标簽就隻剩0和1了,因為8聯通的條件更嚴格,也更難判定其為連通域。具體原理看下圖:

matlab 連通域數量,【Matlab】找到矩陣中每個連通域的最小值

目前為止,我們找到了矩陣中的連通域,那麼接下來就要尋找各個連通域中的最小值了。代碼如下:

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】函數輸入個數不定怎麼辦?

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