勇哥的实验:halcon阈值分割算子细谈(九)超球体分类像素、区域网格分割

阈值分割引言

C#
阈值分割有非常多的算法,大体上分为全局和局部算法。
全局算法包括全局固定阈值和基于图像直方图的阈值,局部算法包括局部动态阈值分割。
基于图像直方图阈值分割的方法也有很多,比如常规的高斯滤波双峰法,OTSU大津法。
但是这类所有的法都基于一个假设:图像是有前景和背景的,待分割目标处于背景中,即图像直方图是双峰的。
如果因为非均匀光照导致待分割目标不处于背景或前景中,即图像直方图无双峰,
那么基于图像直方图的所有法都是不甚理想的
只能在此基础上进行一定的变换,例如nbl算法等,这些都属于局部算法。

任何算法,都会基于假设空间的。没有假设空间,所有算法性能一致。包括经典算法和深度学习算法。

本系列的贴子勇哥通过实验来细品它们之间的差别,以求以后可以精准应用。


超球体分类像素


代码:

read_image (Image, 'ic')
gen_rectangle1 (Region, 360, 264, 371, 301)
gen_empty_region (EmptyRegion)
learn_ndim_norm (Region, EmptyRegion, Image, 'euclid', 10, 0.01, Radius, Center, Quality)
dev_set_color ('blue')
class_ndim_norm (Image, Regions, 'euclid', 'multiple', Radius, Center)
dev_display (Image)
dev_display (Regions)

核心算子:

learn_ndim_norm(Foreground, Background, Image : : Metric, Distance, MinNumberPercent : Radius, Center, Quality) — 从区域前景和多通道图像中对应的灰度值生成分类聚类

参数Distance决定了簇的最大距离半径。它描述了两个集群中心之间的最小距离。在参数距离较小的情况下,超立方体或超球体可以很好地逼近特征空间。

class_ndim_norm(MultiChannelImage : Regions : Metric, SingleMultiple, Radius, Center : ) — 使用超球体或超立方体分类像素。

class_ndim_norm对MultiChannelImage中给出的多通道图像的像素进行分类。结果以区域的形式返回,每个分类对象返回一个区域。参数Radius, Center必须设置为与learn_ndim_norm中使用的值相同。参数SingleMultiple确定为每个集群生成一个区域(‘single’)还是多个区域(‘multiple’)。半径分别决定了簇的半径或半边长。中心决定了它们的中心。

结果显示:

首先生成一个感兴趣区域

在这里插入图片描述
找到测试图中相似区域
在这里插入图片描述


采用区域网格方式对图像进行分割


这种分割方法只是一种比较好的思路。

勇哥有一篇相似思路的贴子见:《车道标志的快速检测


代码:

read_image (Image1, 'C:/Users/Administrator/Desktop/1.jpg')
decompose3 (Image1, R, G, B)
trans_from_rgb (R, G, B, H, S, V, 'hsv')
dev_display (G)
get_image_size (G, Width, Height)
*生成网格区域
gen_grid_region (RegionGrid, 10, 10, 'lines', Width, Width)
reduce_domain (G, RegionGrid, ImageReduced)
threshold (ImageReduced, Region, 0, 150)
*blob分析提取硬币
closing_circle (Region, RegionClosing1, 10)
connection (RegionClosing1, ConnectedRegions3)
select_shape (ConnectedRegions3, SelectedRegions2, ['roundness','area'], 'and', [0.5822,2634.23], [1,20000])
closing_circle (SelectedRegions2, RegionClosing, 10)
opening_circle (RegionClosing, RegionOpening1, 20)
shape_trans (RegionOpening1, RegionTrans, 'outer_circle')
union1 (RegionTrans, RegionUnion)
reduce_domain (G, RegionUnion, ImageReduced1)

dev_display (ImageReduced1)

在这里插入图片描述

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

作者: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