zoukankan      html  css  js  c++  java
  • 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连通,这里就是两个连通区域。
    在这里插入图片描述

     
     
     
     
     
     
     
  • 相关阅读:
    不使用循环使用递归得到数组的值得求和
    将int转int数组并将int数组元素处理后转int,实现加密
    小程序总结
    见过的最好的Layout讲解,挺全的
    (转)Java 的swing.GroupLayout布局管理器的使用方法和实例
    三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
    二十六、Jcreator使用初步
    The Java™ Tutorials下载地址
    中间容器
    二十七、Java图形化界面设计——容器(JFrame)
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/13555940.html
Copyright © 2011-2022 走看看