Matlab函数imfeature详解

时间:2021-08-10 04:36:44

Matlab函数imfeature详解

初学者请多多指正。

 但凡读matlab程序遇到的不了解的函数一除了上网搜索外,matlab中的help和命令行的help也能够提供很大的帮助尤其是help菜单,有详细的解释和举例。今天想把一个车牌识别的程序运用到表格识别中,遇到imfeature函数。没见过,于是help imfeature

得到的是

 IMFEATURE Compute feature measurements for image regions.

    Note: This function isobsolete and may be removed in

    future versions. UseREGIONPROPS instead.

   

    STATS =IMFEATURE(L,MEASUREMENTS) computes a set of

    measurements for eachlabeled region in the label matrix

    L. Positive integerelements of L correspond to different

    regions. For example, theset of elements of L equal to 1

    corresponds to region 1;the set of elements of L equal to 2

    corresponds to region 2;and so on. STATS is a structure

    array of lengthmax(L(:)). The fields of the structure array

    denote differentmeasurements for each region, as specified

    by MEASUREMENTS.

 

    MEASUREMENTS can be acomma-separated list of strings, a cell

    array containing strings,the string 'all', or the string

    'basic'. The set of validmeasurement strings includes:

 

      'Area'             'ConvexHull'   'EulerNumber'

      'Centroid'         'ConvexImage'   'Extrema'

      'BoundingBox'      'ConvexArea'    'EquivDiameter'

      'MajorAxisLength'  'Image'         'Solidity'

      'MinorAxisLength'  'FilledImage'   'Extent'

      'Orientation'      'FilledArea'    'PixelList'

      'Eccentricity'

 

    Measurement strings arecase insensitive and can be

    abbreviated.

 

    If MEASUREMENTS is thestring 'all', then all of the above

    measurements arecomputed. If MEASUREMENTS is not specified

    or if it is the string'basic', then these measurements are 

    computed: 'Area','Centroid', and 'BoundingBox'.

 

    STATS =IMFEATURE(L,MEASUREMENTS,N) specifies the type of

    connectivity used incomputing the 'FilledImage',

    'FilledArea', and'EulerNumber' measurements. N can have a

    value of either 4 or 8,where 4 specifies 4-connected objects

    and 8 specifies8-connected objects; if the argument is

    omitted, it defaults to8.

    Class Support

    -------------

    The input label matrix Lcan be of class double or of any

    integer class.

 

    See also bwlabel,ismember.

 

这段英文的意思是imfeature是用来图像区域的特征的。但是这一函数已经过时了并且在未来的版本里会被移除,建议用regionprops来代替。

怎么用呢?如何设置各个参数?参数的意思?

 句式一: STATS =IMFEATURE(L,MEASUREMENTS),L是已经标记好的标签矩阵(可以通过bwlabel得到,这函数也过时了,汗!)MEASUREMENTS是指定的各个属性可以有如下

'Area'    (面积)         'ConvexHull'    'EulerNumber'

     'Centroid'  (质心)       'ConvexImage'   'Extrema'

      'BoundingBox'  (边框)   'ConvexArea'    'EquivDiameter'

      'MajorAxisLength'  'Image'         'Solidity'

      'MinorAxisLength'  'FilledImage'   'Extent'

      'Orientation'      'FilledArea'    'PixelList'

      'Eccentricity'

也可以是'all',(上述所有属性都测量)'basic'(也是默认情况只计算标注中文的那三个)。

句式二;STATS= IMFEATURE(L,MEASUREMENTS,N),是用在计算'FilledImage',

'FilledArea',  'EulerNumber'时(?)N可以指定四连接和八连接

得到的STATS是啥呢?得到的是最大可达L所有元素数的结构数组(这是啥?类似C语言 的。)结构体中的每一元素代表着每一的不同属性。

重点说一下BoundingBox,这就是包围所有区域的最小矩形,在matlab中是一个1*Q*2的矢量,其中Q是矩形框内的区域数,是这个形式[ul_corner width],ul_corner:指定左上角的坐标,形式[x y z ...],而width则是区域每一维的宽度,形式[x_width y_width ...]。

举例说明一下:

[L,num] = bwlabel(bg2,8); %标注二进制图像中已连接的部分

Feastats = imfeature(L,'basic'); %计算图像区域的特征尺寸

Area=[Feastats.Area];%区域面积

BoundingBox=[Feastats.BoundingBox]; %[xy width height]车牌的框架大小

这里Q=4,Matlab函数imfeature详解

Feastats是<4x1 struct>

每一个struct包含三个Field

BoundingBox:

116.500000000000    159.500000000000    32  20  (粉红)

176.500000000000    136.500000000000    21  24  (黄)

205.500000000000    30.5000000000000    32  27  (橙)

224.500000000000    215.500000000000    99  39  (深粉红)

 Matlab函数imfeature详解