Halcon粘连木材图像的目标分割计数

news2024/11/27 2:24:43

Halcon粘连木材图像的目标分割计数

文章目录

  • Halcon粘连木材图像的目标分割计数
    • 1. 提取面积较小区域
    • 2. 分割较大区域
    • 3. 区域合并与计数

本文以一个实际场景图片为例,介绍阈值处理与形态学计算的应用。案例图像如图所示,图(a)为输入的原始图像,图(b)为处理结果。图中计算出了木材的数量,并以不同的颜色对分割出的区域进行了区分。
在这里插入图片描述
首先,从阈值处理开始,图(a)在进行全局阈值处理之后出现了一些问题。阈值设得高了,会蛮化边角的一些木头的局部区域;设得低了,会造成一些区域的粘连。另外,图像中还有一些木棍等小面积物体的干扰。如何在保留边角局部信息的情况下尽可能地防止粘连,是一个要仔细考虑的问题。
结合这个问题,本例的思路分两步走:先把边角一些小的木头区域提取出来,再专门解决粘连的问题。

1. 提取面积较小区域

区分大小的依据主要是面积,在做了一些基本的图像预处理之后,可以把面积较小的一部分图像。如靠近 4个边的部分木头先分割出来。在这个过程中,需要对木头边缘做一些处理,去掉外圈的树皮和一些干扰的区域,提取出木头截面的大块部分。图 (a)为初步阈值分割的结果,图(b)是根据面积的大小,提取出的比较小的,即比较独立的区域。
在这里插入图片描述

2. 分割较大区域

这一步比较简单,针对粘连的情况,可以通过腐蚀操作让边缘更加清晰。图(a)是提取出的面积较大的区域,可见单个木材区域发生了粘连,对其做腐蚀运算,提取出独立的区域,效果如图(b)所示。
在这里插入图片描述

3. 区域合并与计数

把上一步割出的大小区域分别合并,即可得到木头的总数。实现代码如下:

dev_close_window ()
*读取图像,将其转化为灰度图像并显示出来
read_image (Image, 'data/logs')
get_image_size (Image, Width, Height)
rgbl_to_gray(Image, grayImage)
*进行全局阈值分割,将亮色区域提取出来
threshold (grayImage, Bright, 60, 255)
*进行开运算处理,去除边缘毛刺
opening_rectanglel (Bright, Cut, 1, 7)
*将非连通区域分割成独立区域
connection (Cut, ConnectedRegions)
*选择截面比较小的木材的区域
select_shape (ConnectedRegions, smallRegions, 'area', 'and', 500, 20000)
*对粘连区域做腐蚀操作,根据腐蚀的情况和面积选出截面区域
*count_obj(SelectedRegions2,number1)
*选择截面比较大的木材的区域,可能有粘连和区域重叠的情况
select_shape (ConnectedRegions, largeRegions, 'area', 'and', 20000, 1000000)
erosion_circle(largeRegions,erisionedLargeRegions,8.5)
*将非连通区域分割成独立区域
connection (erisionedLargeRegions, ConnectedRegions2)
*再次选择符合面积条件的区域,排除杂点
select_shape (ConnectedRegions2, SelectedRegions3, 'area', 'and', 150, 200000)
*区域合并
concat_obj(smallRegions, SelectedRegions3, ObjectsConcat)
*区域计数
count _obj (ObjectsConcat,number3)
*创建窗口用于显示结果
dev_open_window (0, 0, Width, Height, 'black', Windowiandle)
dev display(ObjectsConcat)
set_display_font (WindowHandle,18,'mono''true','true')
*显示计数的结果,程序结束
disp_message (WindowHandle,'Number of logs : '+number3, 'image', 30, 50, 'blue','true')

本例以木材截面区域的面积为分割依据,通过形态学运算将单个木材的截面区域提取出来,这样可方便进行木材的计数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -小程序端TabBar搭建

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

突破技术边界:R与jsonlite库探秘www.snapchat.com的数据之旅

概述 Snapchat是一款流行的社交媒体应用,它允许用户发送和接收带有滤镜和贴纸的照片和视频,以及创建和观看故事和发现内容。Snapchat的数据是非常有价值的,因为它可以反映用户的行为、偏好和趋势。然而,Snapchat的数据并不容易获…

从0开始python学习-40.通过正则表达式/json进行接口关联

目录 1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。 1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None 1.…

优化企业运营,深入探索SAP库存管理解决方案

SAP库存管理是SAP提供的一款领先的企业库存管理解决方案。它致力于帮助企业实现对库存的全面掌控,优化供应链管理,降低库存成本,提高客户满意度。这个功能强大的系统为企业提供了丰富的仓储管理功能,如库存盘点、物料追踪、供应商…

WPF DatePicker与Calendar的使用和样式修改

什么是DatePicker,Calendar Calendar:日历(显示年月日视图控件)DatePicker:日期选择器(是一个更小的控件,点击控件时才会弹出一个日历) Calendar使用 常用属性 DisplayMode&#…

MacOS - 苹果电脑程序还能正常启动,但图标消失不见了~

问题描述 网上有一些解决方案说是 killall Finder 命令,重置 Docker 等等,但是发现还是不行,于是必杀技…… 解决方案 方案一、删除该 App,重装即可方案二、如果懒得重装,可以在 Finder 中找到对应的应用程序&#xf…

FPGA高端项目:纯verilog的 10G-UDP 高速协议栈,提供7套工程源码和技术支持

目录 1、前言免责声明更新说明 2、相关方案推荐我这里已有的以太网方案本协议栈的千兆网UDP版本1G 千兆网 TCP-->服务器 方案1G 千兆网 TCP-->客户端 方案10G 万兆网 TCP-->服务器客户端 方案 3、该UDP协议栈性能4、详细设计方案设计架构框图网络调试助手GT资源使用GT…

1.3 金融数据可视化

跳转到根目录:知行合一:投资篇 已完成: 1.1 编程基础   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas 1.2 金融数据处理 1.3 金融数据可视化 文章目录 1. 金融数据可视化1.1. matplotlib1.1.1. 沪深300走势图1.1.2. 日线均线…

06-微服务-SpringAMQP

SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: 自动声明队列、交…

力扣刷题-二叉树-验证二叉搜索树

98.验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 思路 中序遍历下&…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章: 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

Python重温笔记番外篇

1. 写在前面 今天这篇文章是python重温笔记的番外,整理一些面试中的问题以及遇到过的一些坑, 正好借着这个机会把前面的知识进行一个串联, 要不然这些知识很容易就会遗忘, 毕竟知识多而又不太容易常用到。 涉及到的知识包括列表推…

单片机快速入门

参考连接: 安装MinGW-64(在win10上搭建C/C开发环境)https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接:https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码:y1mz --来自百度网盘超级会员V7的分享C…

Python打印Python环境、PyTorch和CUDA版本、GPU数量名称等信息

代码: import torch import platformgpu_num torch.cuda.device_count() torch_version torch.__version__ python_version platform.python_version()print("Python Version: Python %s" % python_version) print("PyTorch Version: %s" %…

[Javaweb/LayUI/上机考试作业/开源]学生/图书/课程/仓库等管理系统六合一基础功能通用模板

展示 考试要求 给定用户表和六张图书/教师/顾客/仓库....的表(随机给每人抽选),要求实现用户登录注册,异步更新,对物品增删改查,精确/模糊查询等。 环境 tomcat 9 mysql 8 java 17 项目结构 项目类图 写前…

分布式【zookeeper面试题23连问】

1. ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终&#x…

Prometheus二进制安装包部署

Prometheus安装部署 一,下载安装包并解压 **下载地址:**https://github.com/prometheus/prometheus/releases 因为服务器上下载速度太慢,所以可以提前在物理机上下载上传到服务器,本次安装使用的版本为:prometheus-…

深度神经网络中的混合精度训练

Mixed-Precision Training of Deep Neural Networks | NVIDIA Technical Blog 目录 混合精度成功训练的技术 FP32 累加 损失缩放 loss scaling FP32 Master Copy of Weights 混合精度训练迭代过程 AMP混合精度训练介绍 FP16和FP32的区别 FP16的优势 FP16的问题 解决P…

shell sshpass 主机交互 在另外一台主机上执行某个命令 批量管理主机 以及一些案例

目录 作用安装 sshpasssshpass 用法在远程主机执行某个命令 案例批量传输密匙批量拷贝文件批量修改密码 作用 就是用一台主机 控制另外一台主机免交互任务管理工具方便批量管理主机使用方法就是在ssh 前边加一个 sshpass 安装 sshpass # 安装 sshpass yum -y install sshpas…

MongoDB快速实战与基本原理

MongoDB 介绍 什么是 MongoDB MongoDB 是一个文档数据库(以 JSON 为数据模型),由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。文档来自于“JSON Document”,并非我们一般理解的 PDF、WORD 文档…