select_shape_xld特征筛选中‘row‘和‘row1‘的区别和注意点

常见的特征筛选算子有select_shape和select_shape_xld。

其中,select_shape用于筛选Region,select_shape_xld用于筛选Xld。实际项目中,经常需要根据行、列来筛选符合条件的Region或者Xld。(如下图)

在这里插入图片描述

特征’row’是由算子area_center(Regions : : : Area, Row, Column)计算得出的。(如果是Xld,则是area_center_xld)

特征’row1’、'row2’是由算子smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)计算得出的。(如果是Xld,则是smallest_rectangle1_xld)

这其中,最值得注意的是area_center_xld算子。它的算子描述中有这么一句话:

在这里插入图片描述

实际应用中发现,对于一根完全水平或者完全垂直的Xld,使用’row’筛选,筛选结果一般为空(下式中Min大于0时)。

select_shape_xld(XLD : SelectedXLD : ‘row’, ‘and’, Min, Max : )

这是因为此时’row’特征等于0。—— area_center_xld(XLD : : : Area, Row, Column, PointOrder)

因此,对于Xld的行、列的筛选,一般建议使用 ‘row1’、‘column1’,而不建议使用 ‘row’。

可以通过下面的程序加深理解:

1 dev_set_draw (‘margin’)
2 dev_set_line_width (2)
3 dev_set_color (‘green’)
4 set_system (‘tsp_clip_region’, ‘false’)
5 dev_get_window (WindowHandle)
6 set_display_font (WindowHandle, 18, ‘Courier’, ‘true’, ‘false’)
7
8 gen_image_const (Image, ‘byte’, 512, 512)
9 gen_rectangle1 (ROI, 100, 50, 160, 300)
10
11 disp_message (WindowHandle,‘(100, 50)’ , ‘image’, 100, 50, ‘black’, ‘true’)
12 disp_message (WindowHandle,‘(160, 300)’ , ‘image’, 160, 300, ‘black’, ‘true’)
13
14 *Region转Xld, 并且分割Xld
15 gen_contour_region_xld (ROI, Contours, ‘border’)
16 segment_contours_xld (Contours, ContoursSplit, ‘lines_circles’, 5, 4, 2)
17 select_shape_xld (ContoursSplit, XLD_Horiz, ‘ratio’, ‘and’, 0, 0.1)
18
19 *矩形顶边行坐标是100,底边行坐标是160
20 dev_clear_window ()
21 select_shape_xld (XLD_Horiz, XLD_UP, ‘row’, ‘and’, 90, 110) //XLD_UP为空
22 select_shape_xld (XLD_Horiz, XLD_Down, ‘row’, ‘and’, 130, 999) //XLD_Down不为空,有1个对象
23 select_shape_xld (XLD_Horiz, XLD_ALL, ‘row’, ‘and’, 90, 999) //XLD_ALL不为空,有1个对象
24
25 dev_clear_window ()
26 select_shape_xld (XLD_Horiz, XLD_UP2, ‘row1’, ‘and’, 90, 110) //XLD_UP2不为空,有1个对象
27 select_shape_xld (XLD_Horiz, XLD_Down2, ‘row1’, ‘and’, 130, 999) //XLD_Down2不为空,有1个对象
28 select_shape_xld (XLD_Horiz, XLD_ALL2, ‘row1’, ‘and’, 90, 999) //XLD_ALL2不为空,有2个对象

放大窗口后发现了XLD_UP为空、XLD_Down不为空的原因:XLD_Down左端有一个“毛刺”,而XLD_UP是一根完全水平的直线(它的Area、Row、Column均为0)。

在这里插入图片描述

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值