• Region相关算子


    Region特征分为三部分
    (1)基础特征:region面积,中心,宽高,左上角右下角坐标,等效椭圆长半轴短半轴方向,洞数及其面积,粗糙度,联通数,最大半径等。
    (2)开关特征:外接圆半径,内接圆半径,圆度,紧密度,长度,矩形度,凸型,偏心率,蓬松度,外接矩形的方向和两边长度等。
    (3)几何矩特征:二阶矩,三阶矩,主惯性轴等。

    region_features(Regions : : Features : Value)
    * 计算Region指定特征
    
    select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
    * 利用形状特征选取指定Region
    

    注意:

    tuple数组下标由0开始,图像变量数组下标由1开始。

      

    1.gen_region_points

    功能:生成像素坐标指定的region

    2.gen_region_line

    功能:生成像素坐标指定的线

    3.get_region_points

    功能:获得区域region的像素点坐标

    4.intersection

    功能:获得两个区域region的交集

    5.orientation_region

    功能:获得区域region的方向

    * X轴逆时针旋转与等效椭圆中心线的夹角为正角度
    * X轴顺时针旋转与等效椭圆中心线的夹角为负角度
    * 轮廓最远点列坐标小于中心列坐标,选择大于零的角度
    * 轮廓最远点列坐标大于中心列坐标,选择小于零的角度

    6.union2

    功能:合并两个区域region为一个region

    7.distance_pr

    功能:计算点到区域的最远距离和最近距离

    8.distance_pl

    功能:计算点到线的距离(点到线的投影距离)

    9.distance_ps

    功能:计算点到线段的最远距离和最近距离

    10.distance_pp

    功能:计算点到点的欧几里得距离

    11.distance_rr_min

    功能:计算region到region最近距离和对应的最近点(欧几里得距离)

    12.distance_lr

    功能:计算线到region的最远距离和最近距离

    13.distance_pc

    功能:计算点到轮廓(XLD)的最远距离和最近距离

    14.distance_sr

    功能:计算线段到区域的最远距离和最近距离

    distance_p**  表示点到**的距离
    distance_l**   表示直线到**的距离
    distance_s**  表示线段到**的距离
    distance_rr** 表示region到region的距离
    distance_cc** 表示xld到xld的距离
    

    15.move_region

    功能:移动区域

    16.select_region_point

    功能:选择包括已给点的所有区域

    17.skeleton(Region : Skeleton : : )

    功能:计算区域的骨架,骨架是由目标内所有内切圆盘的圆心组成

    18.junctions_skeleton

    功能:获得骨架区域的交叉点和端点

    19.gen_grid_region

    功能:生成网格/点区域

    20.projection_pl

    功能:计算点到直线的投影

    21.saddle_points_sub_pix

    功能:图像亚像素鞍点检测

    * 在矩阵中,一个数在所在行中是最大值,在所在列中是最小值则被称为鞍点。  
    * 在图像中,某点在某一方向为此方向灰度值是最小值,而在垂直向上为灰度值最大值,则此点为鞍点。
    read_image (Image, 'landmarks')
    get_image_size (Image, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
    rgb1_to_gray (Image, GrayImage)
    Sigma := 1.5
    Threshold := 12
    saddle_points_sub_pix (GrayImage, 'facet', Sigma, Threshold, Row, Col)
    gen_cross_contour_xld (Crosses, Row, Col, 12, 0.785398)
    dev_display (GrayImage)
    dev_set_color ('red')
    dev_display (Crosses)
    

    22.line_orientation

    功能:计算直线的方向(-pi/2 < Phi <= pi/2)

    与orientation_region区别:

    1.orientation_region 等效椭圆求角度,主轴方向最远的点求方向

    2.line_orientation 两点斜率求角度

    23.line_position

    功能:计算线段的中心,长度,方向

    24.angle_ll

    功能:计算两直线的角度方向,角度计算开始于直线A,终止于直线B,根据直线起止点与终止点确定是顺时针旋转还是逆时针旋转

    26.boundary

    功能:求取区域region的边界(内边界,外边界,内边界填充)

    27.clip_region

    功能:剪切区域region,剪切后得到的区域对象个数不变

    28.count_obj

    功能:计算halcon对象个数

    29.regiongrowing

    功能:使用区域增长法分割图像获得区域region

      Tolerance:灰度差值最小值

    分割思路:在图像内移动相邻模板,对相邻两个模板内比较中心点灰度值相近程度,两灰度值差小则代表属于同一区域,满足同一区域条件如下:

    |g_1 - g_2| < Tolerance 

    30.sort_region

    功能:对区域region按照某种规则排序

     

    Region深入分析

    区域形态学能够高效率的应用就是归功于高效保存区域的方法:行程编码

    区域行程:每个行程的最小量数据包括该行程的纵坐标值、行程开始和行程结束对应的横坐标值,区域可以表示为该区域全部行程的并集。

    一个行程只能是一个region,一个region可以有多个行程。

    相邻两行的行程可以按照4联通或者8联通构成同一个区域。

    25.gen_region_runs

    功能:通过给定的行列生成行程区域

    31.get_region_runs

    功能:获取region的行程坐标(行,列起点,列终点) 

    32.runlength_distribution

    功能:统计region行程分布(区域为前景,区域的洞为背景)

    33.runlength_features

    功能:统计区域行程runs的特征

    * NumRuns 区域行程数
    * KFactor K特征=行程个数/区域面积的开方(侧面反映储存因子)
    * LFactor L特征=平均每行包含的run个数;首先统计run行程占用的行数,行程个数除以行程所占的行数;
    * MeanLength 行程平均长度
    * Bytes 行程编码所占内存大小 288+NumRuns*6

    34.eliminate_runs

    功能:消除长度小于ElimShorter和大于ElimLonger的行程,与腐蚀不同,腐蚀针对的是区域,eliminate_runs针对单个行程操作

    35.set_system('neighborhood', 4)

    功能:设置区域联通像素个数(4联通、8联通),联通区域设置不同,分割出来的像素区域也不一样

    36.area_center

    功能:计算区域region的面积中心,利用行程计算

    37.elliptic_axis

    功能:获得区域等效椭圆参数(二阶矩计算)

    38.convexity

    功能:计算区域的凸性

    凸性:某区域的面积与凸包面积之间的比值

    凸包:包含区域中所有点的最小凸集(区域任意两点连线都在此点集中

    39.shape_trans

    功能:区域形状转换(凸包,最小外接圆,平行轴最小外接矩形,任意方向最小外接矩形)

    40.smallest_circle

    功能:计算区域最小外接圆参数

    41.smallest_rectangle1

    功能:计算区域平行轴最小外接矩形参数

    42.smallest_rectangle2

    功能:计算区域任意方向最小外界矩形参数

    43.contlength

    功能:计算区域的轮廓长度,与数学意义上周长的计算结果不同

    44.circularity

    功能:计算区域的圆度(区域面积比上外接圆面积的比值,圆的圆度为1

    45.roundness

    功能:计算区域的圆度(以区域边界点到区域中心点距离的平均距离和方差来表示圆度)

    46.rectangularity

    功能:计算区域的矩形度(区域面积比上与本区域有相同一阶矩和二阶矩的矩形区域的面积)

    47.compactness

    功能:计算区域的紧密度/粗糙度(长度的平方除以面积乘以4倍pi的商)

    紧密度理解:用绳子围成一定面积的图形,每次围成不同形状的图形,但是面积一样,每次使用的绳子长度不同,绳子长度就是这个值的大小解释。圆的紧密度为1,是使用绳子长度最少的。

    粗糙度理解:圆的边界最光滑,所以值最小,然后是矩形,接着是弯弯曲曲的图形。

    48.eccentricity

    功能:计算区域的离心率,膨松度,结构因子

    离心率:区域等效椭圆长半轴除以短半轴,值越大,区域越细长,圆的离心率为1是最小的

    膨松度:相同矩的等效椭圆面积除以区域面积,可以理解为区域面积的蓬松得到等效椭圆的蓬松倍数

    49.connect_and_holes

    功能:获得区域的联通数和洞数

    50.diameter_region

    功能:获得区域边界上最远的两个点以及距离

    51.find_neighbors

    功能:在区域2中寻找距离区域1到一定距离的区域(包括区域1自己),输出区域在区域1中的下标值,区域在区域2中的下标值

  • 相关阅读:
    并发编程(贰):线程池浅析
    并发编程(壹):创建线程的三种方式及其对比
    Spring Boot使用@Async实现异步调用:自定义线程池
    parallel stream-不能随便使用
    Java 8新特性(四):新的时间和日期API
    Java 8新特性(三):Optional类
    Java 8新特性(二):Stream API
    Java 8新特性(一):Lambda表达式
    ES日期存储
    String,StringBuffer,StringBuillder的底层结构
  • 原文地址:https://www.cnblogs.com/zhengzc/p/11358196.html
Copyright © 2020-2023  润新知