货架物品的分割

2023-12-14 12:30
文章标签 分割 物品 货架

本文主要是介绍货架物品的分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      这个博客已经申请了尽2年时间,但一直没有更新过博客,只是在CSDN博客中写过几篇关于飞信二次开群的博文,见 http://blog.csdn.net/lxiongh ,下面是我给大家带来的一篇博文,关于货架物品的分割与识别,这里我只给大家分享货架物品的分割过程,因为识别这一块是由一个师兄完成的。总体方案流程图如下:

image


项目的要求

对货架物品的识别与定位,如图1,我们需要识别出不同的商品,同时知道相应商品的摆放位置。经过讨论,我们将此问题分解成两个子问题——分割与识别。其中分割由我来完成,识别任务交于师兄完成。

IMG_20120728_104742

图1


分割过程与方法

任务简述:我们需要将不同的物品分割开,需要满足如下两点要求,1.分割块(patch)有且仅包含一种商品;2. 同一种商品可以被分割成不同的块(patch),只要满足后续的物品识别要求。

分割过程:注意到货架的特殊性,我们可以先对图片进行行分割,然后对每个行分割后的图片再进行列分割,最后得到用于物品识别的分割块(patch)。

实施方法:

1. 行分割

(1)方案1. 如图2(a)所示,沿着竖直方向,对所有红色框内的pixels进行直方图统计,用相邻两个框内的直方图欧氏距离衡量差异,得到一个差异曲线。如图2(b)曲线的最低点为行分割线所外的位置。

image      image

图2(a)                                                                            图2(b)

(2)方案2. 在实验过程中,采用方案1的分割线经常会将物品分割开,如图2(b)中的黄色行分割线所示。于是我们的最后实验中,采用了方案2作为行分割的方法。

和传统的直线检测算法一样,我们先从图像中检测边缘像素,然后从这些边缘像素中分析可能存在的直线.传统的边缘检测算法,例如Canny算子,不能很好的找到所需要的边界点.

image

图3 对同一图像用不同参数进行Canny边缘检测的结果

虽然可以调整不同参数得到不同的检测结果,但是如图3所示,不同参数或者导致过多与目标直线无关的边缘被检测到,或者导致一些和目标直线相关的重要边缘丢失.

seg

图4 Graph-based segmentation

注意到图像分割算法提供了很好的图像边缘,如图4所示.因此我们以图像分割后不同块之间的边界像素为初始条件来进行直线检测,采用Efficient Graph-based image segmentation.当然图像分割结果也和参数选取有关系,我们采用比较保守的参数,使得尽可能找到所有和目标直线相关的边缘像素,我们只保留水平的边缘像素。随后腐蚀膨胀,再采用radon直线检测算法进行直线的检测,直线角度限定在-5~+5度,行分割结果如图5所示。

lines

图5. 行分割结果示意

2. 列分割

采用的方法与行分割类似,通过对比发现,直方图统计时,采用HSV空间的H通道得到的效果较为理想,如图6所示。 不同窗口间的差异反应了色调的变化差异,当差异达到最大时,表明此处可能是不同类别的物品的列分割线。我们将窗口间的差异通过三次样条插值拟合的方式,拟合成一条样条曲线,其中极大值(从图3中看为最低点,因图左上角为坐标的原点)处为可能的列分割线,后经过一些细节上的处理,得到如图7所示的行列分割结果。

image

图6 对不同通道进行比较

imageimageimage

图7 行列分割结果


代码下载链接为http://www.kuaipan.cn/file/id_55626101430419500.html (MATLAB)

Copyright 2012 SYSU.LXIONGH. All Rights Reserved. 仅供交流学习之用.

EMAIL: lxiongh@126.com QQ:464050924

这篇关于货架物品的分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/492519

相关文章

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

基于YOLO8的图片实例分割系统

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 segment_app.py 二、核心代码介绍篇2.1 segment_app.py2.2 scan_taskflow.py 三、结语 代码资源:计算机视觉领域YOLO8技术的图片实例分割实

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

图像分割分析效果2

这次加了结构化损失 # 训练集dice: 0.9219 - iou: 0.8611 - loss: 0.0318 - mae: 0.0220 - total: 0.8915  # dropout后:dice: 0.9143 - iou: 0.8488 - loss: 0.0335 - mae: 0.0236 - total: 0.8816 # 加了结构化损失后:avg_score: 0.89

Thinkphp6.0+vue个人虚拟物品网站源码

Thinkphp6.0+vue个人虚拟物品网站源码 支持码支付对接 扫码自动发货 源码一共包含两个部分thinkphp6.0后端文件,以及vue前端文件。 服务器环境 php7以上,mysql5.6以上; 内附安装说明 代码免费下载

linux分割和合并文件命令

split命令: for i in {1..30}; do num=$(printf "%05d\n" "$i");name="model-$num-of-00030.safetensors";split -b 3G $name tmp/$name-;echo $name;done 合并命令: for i in {1..30}; do num=$(printf "%05d\n" "$i")

力扣86.分割链表

class Solution {public ListNode partition(ListNode head, int x) {// 初始化两个链表的头节点和尾节点,分别用于存储小于x和大于等于x的节点ListNode leftHead = null, leftTail = null;ListNode rightHead = null, rightTail = null;// 临时变量,用于遍历

力扣416-分割等和子集(Java详细题解)

题目链接:416. 分割等和子集 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完01背包,所以现在的题解都是以01背包问题为基础再来写的。 如果大家不懂01背包的话,建议可以去学一学,01背包问题可以说是背包问题的基础。 如果大家感兴趣,我后期可以出一篇专门讲解01背包问题。 dp五部曲。 1.确定dp数组和i

支持图片和视频分割,SAM2最新分割一切大模型分享

Segment Anything Model 2(简称SAM 2)是由Meta(Facebook AI)开发的最新一代图像和视频分割模型。 SAM2能够实现对静态图像和动态视频中的对象进行实时、可提示的分割,将图像与视频分割功能整合到了同一个系统中。 SAM2的一个核心特点是其交互式分割过程,用户可以通过点击选择和细化目标对象,模型会根据这些提示自动将分割传播到视频的后续帧 。 此外,SAM