ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7. 如何根据特征过滤区域和轮廓

2019-10-25 21:36:51  阅读:399  来源: 互联网

标签:区域 dev shape 过滤 轮廓 ConnectedRegions select


 

halcon 中过滤特征的算子总共有 3 种,分别为:

  • select_shape()
  • select_shape_std()
  • select_shape_proto()

 

1. select_shape()  根据区域的一些的特征(面积、圆度等)进行过滤,得到我们需要的区域。

2. select_shape_std ()  将给定区域的形状与默认形状进行比较。 如果该区域具有相似的形状,则输出为相似的形状。

3. select_shape_proto()  过滤出彼此具有一定关系的区域,即过滤出来的区域彼此之间具有一定的关系。

 

1. select_shape()


dev_open_window (0, 0, 512, 512, 'black', WindowHandle)


read_image (Image, 'fabrik')

threshold (Image, Region, 128, 255)

* 不同的颜色代表不同的区域
connection (Region, ConnectedRegions)

* 根据区域的一些的特征(面积、圆度等)进行过滤,得到我们需要的区域
* 根据面积范围[8000, 9000]对上述不同颜色的区域进行过滤
* 参数3: 特征类型,即用什么样的特征进行过滤
* 参数4: 比如我们同时希望对区域采用面积和最大直径进行过滤,即参数3为['area','max_diameter'],则参数4采用'and';若希望
* 使用两者中的一个进行,则采用‘or’; 此处由于只有一个特征,所以参数4的‘and’在此处作用不大
dev_display (Image)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 9000)

dev_display (Image)
dev_display (SelectedRegions)

图1.1 所示为采用 select_shape() 中的面积特征来找到我们需要的区域 

图1.1 使用select_shape()中的面积特征来得到需要的区域

 

2. select_shape_std()

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

read_image (Image, 'fabrik')

threshold (Image, Region, 128, 255)

* 不同的颜色代表不同的区域
connection (Region, ConnectedRegions)


*算子select_shape_std将给定区域的形状与默认形状进行比较。 如果该区域具有相似的形状,则输出为相似的形状.
* 遍历上述分割的联通域,寻找相似度在 90% 以上的矩形
* 参数1:输入参数;参数2:输出参数,即过滤出来的区域
select_shape_std (ConnectedRegions, SelectedRegions1, 'rectangle1', 90)

dev_display (Image)
dev_display (SelectedRegions1)

图1.2 所示为在 connection() 算子分割后的区域 上寻找相似度在 90% 以上的区域

图1.2 使用 select_shape_std() 中的矩形特征在联通域中寻找相似度在90%以上的区域

 

3. select_shape_proto()

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

read_image (Image, 'fabrik')

threshold (Image, Region, 128, 255)

* 不同的颜色代表不同的区域
connection (Region, ConnectedRegions)

* 根据区域的一些的特征(面积、圆度等)进行过滤,得到我们需要的区域
* 根据面积范围[8000, 9000]对上述不同颜色的区域进行过滤
* 参数3: 特征类型,即用什么样的特征进行过滤
* 参数4: 比如我们同时希望对区域采用面积和最大直径进行过滤,即参数3为['area','max_diameter'],则参数4采用'and';若希望
* 使用两者中的一个进行,则采用‘or’; 此处由于只有一个特征,所以参数4的‘and’在此处作用不大
dev_display (Image)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 9000)

dev_display (Image)
dev_display (SelectedRegions)
 
*  算子select_shape_proto 过滤出彼此具有一定关系的区域。即过滤出来的区域彼此之间具有一定的关系
* 在上述分割的联通域ConnectedRegions中找出与SelectedRegions具有一定关系区域,这个关系是以distance_center为基础的
* 过滤出 SelectedRegions 的中心到 ConnectedRegions 中每个区域中心距离 在0-200之间的区域
select_shape_proto (ConnectedRegions, SelectedRegions, SelectedRegions2, 'distance_center', 0, 200)

dev_display (Image)
dev_display (SelectedRegions2)

下图中左图为进行 connection() 算子之后形成的不同的联通域图;右图为采用 select_shape() 算子过滤后的图像 。即在ConnectedRegions 区域中寻找与 SelectedRegions 区域存在‘distance_center’ 关系的区域。

 图 1.3 所示为过滤出 SelectedRegions 的中心到 ConnectedRegions 中每个区域中心距离 在0-200之间的区域

图1.3 过滤出 SelectedRegions 的中心到 ConnectedRegions 中每个区域中心距离 在0-200之间的区域
图1.4 select_shape_proto() 得到的效果图

 

标签:区域,dev,shape,过滤,轮廓,ConnectedRegions,select
来源: https://blog.csdn.net/MrYaoLing/article/details/88381366

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有