halcon获取多个独立连通域—connection

前言

针对阈值分割后的图像,我们有时候需要对多个独立的区域做处理,比如要筛选出面积较大的区域等,由于阈值分割的区域在位置上是分离的但是在数量上是一个区域,这时候就需要将一个整体区域分割成多个独立的区域。

1、区域分离原理

每个独立的区域称为连通域,连通域分为4连通域和8连通域

4连通域:一个像素的上、下、左、右四个位置如果存在一个非零像素,则将这两个像素认为是属于一个区域。

8连通域:一个像素的上、下、左、右、左上、右上、左下、右下8个位置如果存在一个非零像素,则将这两个像素认为是属于一个区域。

连通域的作用就是对混乱的区域进行分割,将连通的区域连接在一起从而构成了很多个互相独立的连通区域,在halcon中通常对阈值分隔后的区域进行提取连通域的操作,从而方便后期根据区域的特征,比如面积对区域进行分析做铺垫,在halcon中使用connection 函数。

2、halcon算子应用

csharp 复制代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
mean_image (Image, ImageMean, 15, 15)
threshold (Image, Region, 128, 255)
count_obj (Region, Number1)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions,  Number2)

分离区域就是使用connection算子,该算子只有两个参数

第1个参数阈值分割后的1个整体区域

第2个参数是分离后的多个独立连通域

从下图也可以看出在使用connection前,区域的数量只有1个,使用后区域变为7个。

3、获取连通域效果

1)处理前

1)处理后

可以看出分离后形成了7个独立的区域。

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》

2、《C#与PLC通信从入门到精通 》

3、《C# Modbus通信从入门到精通》

4、《C#Socket通信从入门到精通 》

5、《C# MES通信从入门到精通》

6、《winform控件从入门到精通》

7、《C#操作MySql数据库从入门到精通》

以上教程CSDN订阅已超过2000+~

相关推荐
我是苏苏3 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
Never_Satisfied4 小时前
C#获取汉字拼音字母方法总结
开发语言·c#
不绝1919 小时前
C#核心:多态
开发语言·c#
橙露10 小时前
C#在视觉检测中的优势:工业智能化转型的利器
开发语言·c#·视觉检测
Peter(阿斯拉)11 小时前
[Gdiplus]_[初级]_[拉伸缩放图片时使用适当的插值模式和像素偏移模式绘制完整图片]
图像处理·gdiplus·图像拉伸·插值模式·像素采样模式·底部模糊
爱说实话12 小时前
C# DependencyObject类、Visual类、UIElement类
开发语言·c#
TDengine (老段)12 小时前
TDengine C# 语言连接器进阶指南
大数据·数据库·人工智能·物联网·c#·时序数据库·tdengine
a***592612 小时前
C++跨平台开发:挑战与实战指南
c++·c#
啊阿狸不会拉杆13 小时前
《数字图像处理》第 10 章 - 图像分割
图像处理·人工智能·深度学习·算法·计算机视觉·数字图像处理
leo__52013 小时前
基于C#实现软件注册码注册机制
开发语言·c#·哈希算法