• select_region_point和select_region_spatial


     

    一、select_region_point

    select_region_point(RegionsDestRegions:row,column:)

     

    算子含义:选择包含给定像素的所有区域。

    Regions是待测试的Region集合,DestRegions是包含给定像素点的所有区域集合。

     

    举例如下:

     1 read_image (Image, 'C:/Users/02/Desktop/shape.png')
     2 threshold (Image, Region, 0, 50)
     3 fill_up (Region, RegionFillUp)
     4 difference (RegionFillUp, Region, RegionDifference)
     5 opening_circle (RegionDifference, RegionDifference, 1.5)
     6 
     7 connection (RegionFillUp, ConnectedRegions)
     8 *RegionHub中共有3个元素
     9 concat_obj (ConnectedRegions, RegionDifference, RegionHub)
    10 
    11 row := 175
    12 col := 253
    13 select_region_point (RegionHub, DestRegions, row, col)
    14 dev_display (Image)
    15 dev_display (DestRegions)
    16 gen_cross_contour_xld (Cross, row, col, 6, 0.80)

    其实就是将所有包含点(175, 253)的区域筛选出来了。这个算子在某些需要对Region进行筛选的项目中可能会有用。

     

    二、select_region_spatial

    select_region_spatial(Regions1, Regions2 : : Direction : RegionIndex1, RegionIndex2)

     

    算子含义:根据区域的位置关系进行筛选。

    虽然Regions1、Regions2都可以包含多个区域,但为了简单起见,这里只研究Regions1只含一个区域的情况。举例如下(可参考select_region_spatial.hdev):

     1 * Select regions by desired neighboring relation
     2 read_image (Meningg6, 'meningg6')
     3 gauss_filter (Meningg6, ImageGauss, 7)
     4 * Extract watersheds and basins from image
     5 watersheds (ImageGauss, Regions, Watersheds)
     6 dev_clear_window ()
     7 dev_set_color ('light grey')
     8 * select_obj (Regions, Reference, 261)
     9 select_shape (Regions, Reference, ['row','column'], 'and', [250,250], [260,260])
    10 * Choose regions by desired neighboring relation
    11 select_region_spatial (Reference, Regions, 'left', RegionIndex1, RegionIndex2)
    12 dev_set_color ('red')
    13 select_obj (Regions, ObjectSelected1, RegionIndex2)
    14 select_region_spatial (Reference, Regions, 'right', RegionIndex1, RegionIndex2)
    15 dev_set_color ('green')
    16 select_obj (Regions, ObjectSelected2, RegionIndex2)
    17 select_region_spatial (Reference, Regions, 'above', RegionIndex1, RegionIndex2)
    18 dev_set_color ('blue')
    19 select_obj (Regions, ObjectSelected3, RegionIndex2)
    20 select_region_spatial (Reference, Regions, 'below', RegionIndex1, RegionIndex2)
    21 dev_set_color ('cyan')
    22 select_obj (Regions, ObjectSelected4, RegionIndex2)
    23 
    24 dev_set_color ('black')
    25 area_center (Reference, Area, Row, Column)
    26 gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)
    27 
    28 *绘制4条斜45度的线。gen_line是我自己封装的函数,如果你没有类似的函数,可以将下面4行注释掉
    29 gen_line (Line1, Row, Column, rad(45), 400, 'xld')
    30 gen_line (Line2, Row, Column, rad(135), 400, 'xld')
    31 gen_line (Line3, Row, Column, rad(-45), 400, 'xld')
    32 gen_line (Line4, Row, Column, rad(-135), 400, 'xld')
    33 
    34 *显示所有小区域的中心点
    35 area_center (ObjectSelected1, Area1, Row1, Column1)
    36 gen_cross_contour_xld (Cross1, Row1, Column1, 6, 0.785398)
    37 
    38 area_center (ObjectSelected2, Area2, Row2, Column2)
    39 gen_cross_contour_xld (Cross2, Row2, Column2, 6, 0.785398)
    40 
    41 area_center (ObjectSelected3, Area3, Row3, Column3)
    42 gen_cross_contour_xld (Cross3, Row3, Column3, 6, 0.785398)
    43 
    44 area_center (ObjectSelected4, Area4, Row4, Column4)
    45 gen_cross_contour_xld (Cross4, Row4, Column4, 6, 0.785398)

    上面程序中,Reference是参考区域,Regions是它周边所有区域的集合。这些区域与Reference的位置关系共有4种:即左侧(left)、右侧(right)、上方(above)、下方(below)

    RegionIndex1的含义不太重要,这里不研究。RegionIndex2指的是符合某种位置关系(例如"left")的区域在原Regions中的索引集合,它是一个元组,例如[4, 6, 8, 15]。

    通过select_obj (Regions, ObjectSelected, RegionIndex2),就可以将这些区域根据索引全部取出,输出到ObjectSelected中。

    那么有一个问题是:程序中的“上下左右”位置具体是如何界定的呢?

    通过上面程序的执行结果可知:它以参考区域的中心点(用area_center)为起点,分别向东北、西北、西南、东南绘制了4条倾斜45°的直线作为分界线,这样整个画面就被分成了4部分。然后用area_center获得Regions中每一个区域的中心点坐标,根据中心点坐标,就可以知道它具体是属于哪一部分(left、right、above、below)了。

     

  • 相关阅读:
    公司开发者账号申请流程之开发者账号的开通
    公司开发者账号申请流程之邓白氏码的申请
    关于idlf无法输入中文的解决办法
    python运算符和表达式
    mac修改默认打开方式
    关于app夜间模式那点事
    关于报错:'sharedApplication' is unavailable: not available on iOS (App Extension)
    ios 代码截屏模糊问题解决办法
    MySQL命令行分号无法结束问题解决
    Oracle rownum的理解
  • 原文地址:https://www.cnblogs.com/xh6300/p/11447673.html
Copyright © 2020-2023  润新知