Halcom 发表于 2019-7-22 22:36:37

特征集calculate_feature_set

参考例子:C:\Users\Public\Documents\MVTec\HALCON-12.0\examples\hdevelop\Applications\Object-Recognition-2D\classify_pills_auto_select_features.hdev* *********************************************************
* Feature procedure
* Contains the names, properties and calculation of
* all supproted features.
* It consists of similar blocks for each feature.
*
* If you like to add your own features, please use
* the external procedure get_custom_features.hdvp
* in the HALCON procedures/templates directory.
* *********************************************************
*
* Insert location of your custom procedure here
*
get_system ('empty_region_result', EmptyRegionResult)
set_system ('empty_region_result', 'true')
AccumulatedResults := []
CustomResults := []
count_obj (Region, NumRegions)
get_image_size (Image, ImageWidth, ImageHeight)
*
for I := 0 to |Namelist| - 1 by 1
    CurrentName := Namelist
    *
    get_custom_features (Region, Image, CurrentName, Mode, CustomResults)
    AccumulatedResults :=
    *
    *
    * ************************************
    * HALCON REGION FEATURES
    * ************************************
    *
    * ************************************
    * BASIC
    * ************************************
    * ** area ***
    Name := 'area'
    Groups := ['region','rot_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      area_center (Region, Feature, _, _)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** width ***
    Name := 'width'
    Groups := 'region'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_rectangle1 (Region, Row1, Column1, Row2, Column2)
      Feature := Column2 - Column1 + 1
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** height ***
    Name := 'height'
    Groups := 'region'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_rectangle1 (Region, Row1, Column1, Row2, Column2)
      Feature := Row2 - Row1 + 1
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** ra ***
    Name := 'ra'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis (Region, Ra, Rb, Phi)
      Feature := Ra
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** rb ***
    Name := 'rb'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis (Region, Ra, Rb, Phi)
      Feature := Rb
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** phi ***
    Name := 'phi'
    Groups := ['region','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis (Region, Ra, Rb, Phi)
      Feature := Phi
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** roundness ***
    Name := 'roundness'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      roundness (Region, Distance, Sigma, Roundness, Sides)
      Feature := Roundness
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** num_sides ***
    Name := 'num_sides'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      roundness (Region, Distance, Sigma, Roundness, Sides)
      Feature := Sides
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** num_connected ***
    Name := 'num_connected'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      connect_and_holes (Region, NumConnected, NumHoles)
      Feature := NumConnected
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** num_holes ***
    Name := 'num_holes'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      connect_and_holes (Region, NumConnected, NumHoles)
      Feature := NumHoles
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** area_holes ***
    Name := 'area_holes'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      area_holes (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** max_diameter ***
    Name := 'max_diameter'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      diameter_region (Region, Row1, Column1, Row2, Column2, Diameter)
      Feature := Diameter
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** orientation ***
    Name := 'orientation'
    Groups := ['region','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      orientation_region (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * SHAPE
    * ************************************
    *
    * ************************************
    * ** outer_radius ***
    Name := 'outer_radius'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_circle (Region, Row, Column, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** inner_radius ***
    Name := 'inner_radius'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      inner_circle (Region, Row, Column, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** inner_width ***
    Name := 'inner_width'
    Groups := 'region'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      inner_rectangle1 (Region, Row1, Column1, Row2, Column2)
      Feature := Column2 - Column1 + 1
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** inner_height ***
    Name := 'inner_height'
    Groups := 'region'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      inner_rectangle1 (Region, Row1, Column1, Row2, Column2)
      Feature := Row2 - Row1 + 1
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** circularity ***
    Name := 'circularity'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      circularity (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** compactness ***
    Name := 'compactness'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      compactness (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** convexity ***
    Name := 'convexity'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      convexity (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** rectangularity ***
    Name := 'rectangularity'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      rectangularity (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** anisometry ***
    Name := 'anisometry'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      eccentricity (Region, Anisometry, Bulkiness, StructureFactor)
      Feature := Anisometry
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** bulkiness ***
    Name := 'bulkiness'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      eccentricity (Region, Anisometry, Bulkiness, StructureFactor)
      Feature := Bulkiness
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** struct_factor ***
    Name := 'struct_factor'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      eccentricity (Region, Anisometry, Bulkiness, StructureFactor)
      Feature := StructureFactor
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** dist_mean ***
    Name := 'dist_mean'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      roundness (Region, Distance, Sigma, Roundness, Sides)
      Feature := Distance
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** dist_deviation ***
    Name := 'dist_deviation'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      roundness (Region, Distance, Sigma, Roundness, Sides)
      Feature := Sigma
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** euler_number ***
    Name := 'euler_number'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      euler_number (Region, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** rect2_phi ***
    Name := 'rect2_phi'
    Groups := ['region','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_rectangle2 (Region, Row, Column, Phi, Length1, Length2)
      Feature := Phi
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** rect2_len1 ***
    Name := 'rect2_len1'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_rectangle2 (Region, Row, Column, Phi, Length1, Length2)
      Feature := Length1
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** rect2_len2 ***
    Name := 'rect2_len2'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      smallest_rectangle2 (Region, Row, Column, Phi, Length1, Length2)
      Feature := Length2
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** contlength ***
    Name := 'contlength'
    Groups := ['region','rot_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      contlength (Region, ContLength)
      Feature := ContLength
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    * REGION FEATURES
    * ************************************
    * MISC
    * ************************************
    * ** porosity ***
    Name := 'porosity'
    Groups := ['region','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      area_holes (Region, AreaHoles)
      area_center (Region, Area, Row, Column)
      if (Area == 0)
            Feature := 0.0
      else
            Feature := real(AreaHoles) / (Area + AreaHoles)
      endif
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    * HALCON GRAY VALUE FEATURES
    * ************************************
    * BASIC
    * ************************************
    *
    * ** gray_area ***
    Name := 'gray_area'
    Groups := ['gray','rot_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      area_center_gray (Region, Image, Area, Row, Column)
      Feature := Area
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_ra ***
    Name := 'gray_ra'
    Groups := ['gray','rot_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis_gray (Region, Image, Ra, Rb, Phi)
      Feature := Ra
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_rb ***
    Name := 'gray_rb'
    Groups := ['gray','rot_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis_gray (Region, Image, Ra, Rb, Phi)
      Feature := Rb
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_phi ***
    Name := 'gray_phi'
    Groups := ['gray','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      elliptic_axis_gray (Region, Image, Ra, Rb, Phi)
      Feature := Phi
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_min ***
    Name := 'gray_min'
    Groups := ['gray','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      min_max_gray (Region, Image, 0, Min, Max, Range)
      Feature := Min
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_max ***
    Name := 'gray_max'
    Groups := ['gray','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      min_max_gray (Region, Image, 0, Min, Max, Range)
      Feature := Max
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_range ***
    Name := 'gray_range'
    Groups := ['gray','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      min_max_gray (Region, Image, 0, Min, Max, Range)
      Feature := Range
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * TEXTURE
    * ************************************
    *
    * ************************************
    * ** gray_mean ***
    Name := 'gray_mean'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      intensity (Region, Image, Mean, Deviation)
      Feature := Mean
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_deviation ***
    Name := 'gray_deviation'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      intensity (Region, Image, Mean, Deviation)
      Feature := Deviation
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_plane_deviation ***
    Name := 'gray_plane_deviation'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      plane_deviation (Region, Image, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_anisotropy ***
    Name := 'gray_anisotropy'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      entropy_gray (Region, Image, Entropy, Anisotropy)
      Feature := Anisotropy
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_entropy ***
    Name := 'gray_entropy'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      entropy_gray (Region, Image, Entropy, Anisotropy)
      Feature := Entropy
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_hor_proj ***
    Name := 'gray_hor_proj'
    Groups := ['gray','texture','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Size := 20
      calc_feature_gray_proj (Region, Image, 'hor', Size, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_vert_proj ***
    Name := 'gray_vert_proj'
    Groups := ['gray','texture','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Size := 20
      calc_feature_gray_proj (Region, Image, 'vert', Size, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_hor_proj_histo ***
    Name := 'gray_hor_proj_histo'
    Groups := ['gray','texture','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Size := 20
      calc_feature_gray_proj (Region, Image, 'hor_histo', Size, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** gray_vert_proj_histo ***
    Name := 'gray_vert_proj_histo'
    Groups := ['gray','texture','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Size := 20
      calc_feature_gray_proj (Region, Image, 'vert_histo', Size, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** grad_dir_histo ***
    Name := 'grad_dir_histo'
    Groups := ['gray','texture']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      NumBins := 20
      calc_feature_grad_dir_histo (Region, Image, NumBins, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** edge_density ***
    Name := 'edge_density'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_edge_density (Region, Image, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** edge_density_histogram ***
    Name := 'edge_density_histogram'
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      NumBins := 4
      calc_feature_edge_density_histogram (Region, Image, NumBins, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** edge_density_pyramid ***
    NameRegExp := 'edge_density_pyramid_()'
    Names := 'edge_density_pyramid_' +
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (CurrentName =~ NameRegExp)
      * ** Calculate feature ***
      NumPyramids := number(regexp_match(CurrentName,NameRegExp))
      calc_feature_pyramid (Region, Image, 'edge_density', NumPyramids, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups_pyramid (Mode, Groups, CurrentName, Names, NameRegExp, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** edge_density_histogram_pyramid ***
    NameRegExp := 'edge_density_histogram_pyramid_()'
    Names := 'edge_density_histogram_pyramid_' +
    Groups := ['gray','texture','rot_invar','scale_invar']
    * ****************
    if (CurrentName =~ NameRegExp)
      * ** Calculate feature ***
      NumPyramids := number(regexp_match(CurrentName,NameRegExp))
      calc_feature_pyramid (Region, Image, 'edge_density_histogram', NumPyramids, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups_pyramid (Mode, Groups, CurrentName, Names, NameRegExp, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * ** cooc ***
    Name := 'cooc'
    Groups := ['gray','texture']
    * ****************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Feature := []
      cooc_feature_image (Region, Image, 6, 0, Energy, Correlation, Homogeneity, Contrast)
      if (NumRegions > 0)
            Index :=
            Feature := Energy
            Feature := Correlation
            Feature := Homogeneity
            Feature := Contrast
      endif
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** cooc_pyramid ***
    NameRegExp := 'cooc_pyramid_()'
    Names := 'cooc_pyramid_' +
    Groups := ['gray','texture']
    * ****************
    if (CurrentName =~ NameRegExp)
      * ** Calculate feature ***
      NumPyramids := number(regexp_match(CurrentName,NameRegExp))
      calc_feature_pyramid (Region, Image, 'cooc', NumPyramids, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups_pyramid (Mode, Groups, CurrentName, Names, NameRegExp, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    *
    * ************************************
    *
    * ************************************
    * POLAR TRANSFORM FEATURES
    * ************************************
    *
    * ************************************
    * ** polar_gray_proj ***
    Name := 'polar_gray_proj'
    Groups := ['gray','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Width := 100
      Height := 40
      calc_feature_polar_gray_proj (Region, Image, 'hor_gray', Width, Height, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** polar_grad_proj ***
    Name := 'polar_grad_proj'
    Groups := ['gray','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Width := 100
      Height := 40
      calc_feature_polar_gray_proj (Region, Image, 'hor_sobel_amp', Width, Height, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** polar_grad_x_proj ***
    Name := 'polar_grad_x_proj'
    Groups := ['gray','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Width := 100
      Height := 40
      calc_feature_polar_gray_proj (Region, Image, 'hor_sobel_x', Width, Height, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** polar_grad_y_proj ***
    Name := 'polar_grad_y_proj'
    Groups := ['gray','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Width := 100
      Height := 40
      calc_feature_polar_gray_proj (Region, Image, 'hor_sobel_y', Width, Height, Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** polar_gray_proj_histo ***
    Name := 'polar_gray_proj_histo'
    Groups := ['gray','rot_invar','scale_invar']
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      Width := 100
      Height := 40
      calc_feature_polar_gray_proj (Region, Image, 'vert_gray', Width, Height, Projection)
      NumBins := 20
      Feature := []
      for Index := 1 to NumRegions by 1
            Start := (Index - 1) * Width
            tuple_histo_range (Projection, 0, 255, NumBins, Histo, BinSize)
            Feature :=
      endfor
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * COLOR FEATURES
    * ************************************
    *
    * ************************************
    * ** cielab_mean ***
    Name := 'cielab_mean'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'cielab', 'mean', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** cielab_dev ***
    Name := 'cielab_dev'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'cielab', 'deviation', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** hls_mean ***
    Name := 'hls_mean'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'hls', 'mean', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** hls_dev ***
    Name := 'hls_dev'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'hls', 'deviation', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** rgb_mean ***
    Name := 'rgb_mean'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'rgb', 'mean', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
    * ************************************
    *
    * ************************************
    * ** rgb_dev ***
    Name := 'rgb_dev'
    Groups := 'color'
    * *************
    if (Name == CurrentName)
      * ** Calculate feature ***
      calc_feature_color_intensity (Region, Image, 'rgb', 'deviation', Feature)
      * *************************
      append_length_or_values (Mode, Feature, AccumulatedResults, ExtendedResults)
      AccumulatedResults := ExtendedResults
    endif
    append_names_or_groups (Mode, Name, Groups, CurrentName, AccumulatedResults, ExtendedResults)
    AccumulatedResults := ExtendedResults
endfor
Output := AccumulatedResults
set_system ('empty_region_result', EmptyRegionResult)
return ()








页: [1]
查看完整版本: 特征集calculate_feature_set