bwlabel演算法 BWLABEL的演算法

2021-10-13 11:05:44 字數 1602 閱讀 5380

的函式》

使得最後我也參加了討論。

當時我說了一句錯

話:大概

ipt中的

bwlabel

也使用廣度優先的演算法吧。

其實bwlabel

用的並不是圖的廣度

優先遍歷。它用的演算法正是本系列文章

討論的內容。

雖然是本系列的第一篇,但我不打算介紹

bwlabel

的功能,因為這篇文章針對需要了

解演算法的讀者,都到了要研究具體演算法的地步,不可能不知道

bwlabel

是幹什麼的。補充一

句,ipt

是image

processing

toolbox

,在岡薩雷斯的書中都是這樣稱呼的。

bwlabel

是由matlab

語言和c

語言混合實現的。

bwlabel

本身是乙個

m檔案,在裡面

呼叫了幾個

c語言的

mexbwlabel1.mexw32

是本篇主要的研究物件。十分幸運的是,

ipt附帶了

bwlabel1.c

。但是這裡不直接將

c**貼出來,因為:

一、安裝了

matlab

及ipt

就應該能找到這個檔案,不需要我來貼;二、

c語言中很多繁瑣的細節不利於理解演算法。我在

這裡將用

python

activepython

2.5.2.2

)來做bwlabel1.c

做的事情,會比

c語言簡潔很多。

而且這裡僅僅是展現演算法,而不是開發實用程式,所以也可以不用關心效率,簡潔和

清晰是第一位的。

bwlabel.m中開

始部分做

了些引數

檢驗等預

處理操作

之後就調

用了bwlabel1.mexw32

,其對應原始碼正是

bwlabel1.c

。而下面的**則是

bwlabel1.c

的python

對應物:

首先我們在

pybwlabel.py

中寫了乙個輔助函式

size

,用來取得行數和列數,假設為列

優先儲存(

column-major

ordering

defsize(in):

mlen(in[0])

nlen(in)

return

(m,n)

很簡單,不用解釋了。

接著介紹第二個函式

numberofruns

函式numberofruns

將計算每一列裡非零畫素團

(即靠在一起的非零畫素)的數量,並累加起來,例

如,假如有一列:

這一列有兩團,從第三行開始的以及從第六行開始的。這個函式就是數一副影象中在

列方向構成團的數目。

在bwlabel

的**中,這樣列方向上的團被稱為

run

BWLABEL函式的C 實現

實驗中需要用到區域聯通的演算法,就是類似於matlab中bwlabel的函式。網上找了找c 原始碼未果,bwlabel python版 用python描述了matlab中的實現方法,但是最後對標籤的處理部分並未看明白,故自己用c 實現了乙個。先直接看bwlabel函式 cv mat bwlabel ...

Matlab中bwlabel函式的使用

l bwlabel bw,n 功能概述 返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1 2 num 連通區域的個數 n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,預設為8。用法 l bwlabel bw l bwlabel bw,n l,num ...

bwlabel函式 統計連通區域 MATLAB

matlab bwlabel函式 統計連通區域 使用dfs計算連通區域個數 4連通域邊界填充演算法和8連通域邊界填充演算法c l bwlabel bw,n 返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1 2 num 連通區域的個數 n的值為4或8,表示是按...