一、select_region_point

select_region_point(RegionsDestRegions:row,column:)

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

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

举例如下:

 read_image (Image, 'C:/Users/02/Desktop/shape.png')
threshold (Image, Region, , )
fill_up (Region, RegionFillUp)
difference (RegionFillUp, Region, RegionDifference)
opening_circle (RegionDifference, RegionDifference, 1.5) connection (RegionFillUp, ConnectedRegions)
*RegionHub中共有3个元素
concat_obj (ConnectedRegions, RegionDifference, RegionHub) row :=
col :=
select_region_point (RegionHub, DestRegions, row, col)
dev_display (Image)
dev_display (DestRegions)
gen_cross_contour_xld (Cross, row, col, , 0.80)

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

二、select_region_spatial

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

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

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

 * Select regions by desired neighboring relation
read_image (Meningg6, 'meningg6')
gauss_filter (Meningg6, ImageGauss, )
* Extract watersheds and basins from image
watersheds (ImageGauss, Regions, Watersheds)
dev_clear_window ()
dev_set_color ('light grey')
* select_obj (Regions, Reference, )
select_shape (Regions, Reference, ['row','column'], 'and', [,], [,])
* Choose regions by desired neighboring relation
select_region_spatial (Reference, Regions, 'left', RegionIndex1, RegionIndex2)
dev_set_color ('red')
select_obj (Regions, ObjectSelected1, RegionIndex2)
select_region_spatial (Reference, Regions, 'right', RegionIndex1, RegionIndex2)
dev_set_color ('green')
select_obj (Regions, ObjectSelected2, RegionIndex2)
select_region_spatial (Reference, Regions, 'above', RegionIndex1, RegionIndex2)
dev_set_color ('blue')
select_obj (Regions, ObjectSelected3, RegionIndex2)
select_region_spatial (Reference, Regions, 'below', RegionIndex1, RegionIndex2)
dev_set_color ('cyan')
select_obj (Regions, ObjectSelected4, RegionIndex2) dev_set_color ('black')
area_center (Reference, Area, Row, Column)
gen_cross_contour_xld (Cross, Row, Column, , 0.785398) *绘制4条斜45度的线。gen_line是我自己封装的函数,如果你没有类似的函数,可以将下面4行注释掉
gen_line (Line1, Row, Column, rad(), , 'xld')
gen_line (Line2, Row, Column, rad(), , 'xld')
gen_line (Line3, Row, Column, rad(-), , 'xld')
gen_line (Line4, Row, Column, rad(-), , 'xld') *显示所有小区域的中心点
area_center (ObjectSelected1, Area1, Row1, Column1)
gen_cross_contour_xld (Cross1, Row1, Column1, , 0.785398) area_center (ObjectSelected2, Area2, Row2, Column2)
gen_cross_contour_xld (Cross2, Row2, Column2, , 0.785398) area_center (ObjectSelected3, Area3, Row3, Column3)
gen_cross_contour_xld (Cross3, Row3, Column3, , 0.785398) area_center (ObjectSelected4, Area4, Row4, Column4)
gen_cross_contour_xld (Cross4, Row4, Column4, , 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)了。

select_region_point和select_region_spatial的更多相关文章

  1. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数013,shape模型

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数013,shape模型 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“pr ...

  2. 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版

    <zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...

  3. halcon应用案例探究

    14.1  Access 1. get_region_chain 功能:一个对象的轮廓(contour)作为链式码. 2. get_region_contour 功能:查询一个目标的轮廓(contou ...

  4. HALCON中的算子大全(中英对照)

    HALCON中的算子大全(中英对照) Chapter 1 :Classification1.1 Gaussian-Mixture-Models1.add_sample_class_gmm功能:把一个训 ...

  5. HALCON学习之算子大全

    1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上. 2.classify_class_gmm ...

  6. halcon 算子功能查找大全中文版(可直接下载)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11543364.html haicon算子中文查找大全百度云链接 链接:https://pan. ...

  7. Halcon算子函数

    Chapter_1_:Classification 1.1  Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一個訓練樣本添加到一個高斯混合模型的 ...

  8. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  9. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

随机推荐

  1. linux安装chrome及chromedriver(转)

    1.chrome: curl https://intoli.com/install-google-chrome.sh | bash 1.1.centos安装chrome: 從 Google 下載最新版 ...

  2. R3300L运行CoreELEC, EmuELEC和Armbian

    R3300L的参数 CPU: S905LRAM: Samsung K4B4G1646E-BCMA 512MB * 2 = 1GBROM: Samsung KLM8G1WEPD-B031 8GB eMM ...

  3. vmware ubuntu16 启动蓝屏屏幕闪

    vmware ubuntu16 启动蓝屏屏幕闪 虚拟机安装了ubuntu16 desktop,没有关闭自动更新: 结果关机虚拟机时出现等5秒更新,类似win10关机更新: 再开机发现就蓝屏了,多次重启 ...

  4. vue自定义指令导致的内存泄漏问题解决

    vue的自定义指令是一个比较容易引起内存泄漏的地方,原因就在于指令通常给元素绑定了事件,但是如果忘记了解绑,就会产生内存泄漏的问题. 看下面代码: directives: { scroll: { in ...

  5. GitLab的权限管理及Merge Request

    GitLab的权限管理及Merge Request 原创尘世间一名迷途小码农 发布于2019-06-09 12:40:30 阅读数 2909  收藏 展开 目录 1.前言 2.角色权限 3.强制代码审 ...

  6. Deepin系统中手动开启swap的方法

    Deepin系统中手动开启swap的方法 如何设置 swap(交换空间)的大小建议设置和你的实际物理内存一样大,如你的内存是8G的,则可将下面的count的值设为8192(当然这只是参考值,你可根据你 ...

  7. js---if判断的几种写法

    在写JS中最常见的就是 if 判断,但是直接写 if(){}else{}; 太low ,下面是常见的几种js的if判断的写法: /** * js 判断的几种写法 */ var a = 10,b = 2 ...

  8. 谈谈RPC——golang中jsonrpc和grpc的使用

    前言 不知从什么时候rpc这个东西开始进入我们的视野,一开始做开发的时候经常使用的都是http,偶尔使用的是socket进行通信,使用的是restful的方式.但是,一次偶然的机会你会发现RPC这个东 ...

  9. 【PHP】两个时间段间隔30分钟的所有时间

    运用场景: 比如在进行配送时候,需要让用户选择 送达时间, 平台只需要设置每天的营业时间.比如:08:00 到  22:30. 前台在展示时候: 就需要处理成各个时间段来展示: 代码实现: <? ...

  10. 【错误解决】UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 840: illegal multibyte sequence

    原文来源:https://www.zhihu.com/question/22699590 编码问题错误,读入文件的时候指定编码即可. with open(fname, encoding='utf-8' ...