Matlab中bwlabel函數的使用


用法:

    L = bwlabel(BW,n)
    返回一個和BW大小相同的L矩陣,包含了標記了BW中每個連通區域的類別標簽,這些標簽的值為1、2、num(連通區域的個數)。n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,默認為8。
    4連通或8連通是圖像處理里的基本感念:而8連通,是說一個像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角連接着,則認為他們是聯通的;4連通是指,如果像素的位置在其他像素相鄰的上、下、左或右,則認為他們是連接着的,連通的,在左上角、左下角、右上角或右下角連接,則不認為他們連通。請注意“或”字的含義,就是滿足其中一個條件就認為是連通的。

    [L,num] = bwlabel(BW,n)這里num返回的就是BW中連通區域的個數。

    通俗的說,這個函數的作用是用來找這個二值圖像中的連通區域的,對於不同的符合條件的連通區域(4連通,8連通)分別用不同的標號加以區別,結果保存在L這個矩陣里,而num里保存的是輸入圖像中連通區域的總數。

    舉例說明:
    BW =
    1     1     1     0     0     0     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     1     1     0
    1     1     1     0     0     0     0     0

    按4連通計算,方形的區域,和翻轉的L形區域,有用是對角連接,不屬於連通,所以分開標記,連通區域個數為3,就是有3個不同的連接區域。
    L = bwlabel(BW,4)
    結果如下:
    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     3     3     0
    1     1     1     0     0     0     0     0

    而8連通標記,它們是連通的:
    [L, num] = bwlabel(BW,8)
    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     2     2     0
    1     1     1     0     0     0     0     0
   這里
   num =2

http://blog.csdn.net/wanrenwangxuejing/article/details/25108191



函數bwlabel,belabeln和bwconncomp都是標記二值圖像中的連通域。Bwconncomp可以替代bwlabel and bwlabeln的用法,而且需要相當小的計算空間並且比一些較早的函數計算速度更快。

函數  輸入圖像維數 輸出形式  內存使用  鄰域類型
 bwlabel  2-D  雙精度標記矩陣  高  4 或 8
 bwlabeln  N-D  雙精度標記矩陣  高  任意
 bwconncomp  N-D  CC 結構  低

 任意



Matlab 中 imregionalmax函數 和 bwconncomp函數的使用

 

imregionalmax函數

找出當前連通區域內元素大於或等於強度t的元素,將其置為1,,其他像素都設置為0。返回二值圖像。

舉例說明

三種用法如下:
BW = imregionalmax(I)
BW = imregionalmax(I,conn)
gpuarrayBW = imregionalmax(gpuarrayI,___)

  1. BW = imregionalmax(I) 默認2維數據為8聯通,3維數據為26聯通。
    假設A如下:

    A =

    10    10    10    10    10    10    10    10    10    10
    10    22    22    22    10    10    44    10    10    10
    10    22    22    22    10    10    10    45    10    10
    10    22    22    22    10    10    10    10    44    10
    10    10    10    10    10    10    10    10    10    10
    10    10    10    10    10    33    33    33    10    10
    10    10    10    10    10    33    33    33    10    10
    10    10    10    10    10    33    33    33    10    10
    10    10    10    10    10    10    10    10    10    10
    10    10    10    10    10    10    10    10    10    10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    regmax = imregionalmax(A)
    上述命令的結果為:
    regmax =
    10×10 logical array

           0   0   0   0   0   0   0   0   0   0
           0   1   1   1   0   0   0   0   0   0
           0   1   1   1   0   0   0   1   0   0
           0   1   1   1   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   1   1   1   0   0
           0   0   0   0   0   1   1   1   0   0
           0   0   0   0   0   1   1   1   0   0
           0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

若A(3,3) = 23,則相同命令結果為:
regmax =
10×10 logical array

	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   1   0   0   0   0   1   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   0   0   0   0   0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

若A(3,3) = 20,則相同命令結果為:
regmax =
10×10 logical array

	       0   0   0   0   0   0   0   0   0   0
	       0   1   1   1   0   0   0   0   0   0
	       0   1   0   1   0   0   0   1   0   0
	       0   1   1   1   0   0   0   0   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   1   1   1   0   0
	       0   0   0   0   0   0   0   0   0   0
	       0   0   0   0   0   0   0   0   0   0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. BW = imregionalmax(I,conn)
    conn:指定函數中使用的連通度。
  2. gpuarrayBW = imregionalmax(gpuarrayI,___)
    gpuarrayBW = imregionalmax(gpuarrayI,___) 在GPU上執行該操作,輸入圖像必須是一個gpuArray,函數返回一個gpuArray。需要支持 Parallel Computing Toolbox™ .

bwconncomp函數

找出二值圖像中所有的連通區域。

舉例說明

用法如下:
CC = bwconncomp(BW)
CC = bwconncomp(BW,conn)

  1. BW = imregionalmax(I) 默認2維數據為8聯通,3維數據為26聯通。
    假設S如下:
    S =

            0     0     0     0     0
    		0     1     1     0     0
    		0     1     1     0     0
    	    0     0     0     1     1
    	    1     1     0     0     0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    D = bwconncomp(S);
    上述命令的結果為:
    在這里插入圖片描述
    D=

    1*1 struct

    D.Connectivity 使用的連通度
    D.ImageSize 圖像大小
    D.NumObjects 連通區域數
    D.PixelIdxList 連通區域的索引

這里具體看看 D.PixelIdxList:
因為是默認的8聯通,所以7,8,12,13和19,24為一個連通區域,若使用4連通,這里就是兩個連通區域。
在這里插入圖片描述

 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM