Region相关算子总结

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

1
2
region_features(Regions : : Features : Value)
* 计算Region指定特征
1
2
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的方向

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

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

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

1
2
3
4
5
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 : : )

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

image.png

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)

image.png


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中的下标值


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

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864