点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文介绍算法的源码在github上给出

https://github.com/TimChinenov/GraspPicture

前言

成产品及系统平台的现场演示,编写技术应用服务方案等,编写投标类方案文件及标书的制作;

通常,当我们看到一张图片时,会在图片中聚焦一个焦点。这个可能是一个人,一座建筑物甚至是一个桶。其他没有聚焦区域虽然很清晰,但是却由于颜色单调或者纹理较为平滑而很少引起关注。当遇到此类图象时,我们希望从图像中分割感兴趣的对象。下面给出了显着图像的示例,本文探讨了此类显着图像的分割方法,也称为显着性的图像分割。

显着图像的示例。桶(左)和人(右)是感兴趣的对象

这中分割方式最开始起源于希望能够自主寻找图像中的Trimap。Trimap是图像掩码(mask),当与掩码算法配合使用时,可用于分割图像,同时能够提示前景和背景之间的细节。Trimap通常包含定义前景的白色区域,定义背景的黑色区域以及代表不确定区域的灰色区域。具体形式如下图所示。

Trimap示例

大部分抠图算法问题在于,他们希望Trimap由用户提供,这是一项非常耗时的任务。这里面介绍两个试图解决自主trimap生成问题的相关论文,这两篇论文在文末给出。在第一篇论文中使用了一种相当简单且易于实现的方法。不幸的是,他们的方法并不是完全自主的,因为它要求用户为Grabcut算法提供一个矩形区域。第二篇论文中,使用显着性方法预测感兴趣的区域。但是,它们的显着性方法非常复杂,将三种不同的显着性算法的结果结合在一起。这三种算法中有一种利用卷积神经网络,为了易于实现,应该尽量避免这种技术。

如果忽略需要人为给出矩形区域,第一篇论文中能够产生较好的分割结果。通过第二篇论文的原理去自动给出一个Grabcut算法的矩形区域,那么将完美的解决自主分割的问题。

方法

对于大多数形式的图像分割,目标都是将图像二值化为感兴趣的区域。这个本文介绍方法的目标也是这样的。首先,大致确定感兴趣的对象在哪里。将高斯模糊应用于图像,之后在模糊图像中生成平均15像素大小的超像素。超像素算法旨在根据像素区域中值的颜色和距离来分解图像。具体来说,使用了简单的线性迭代聚类(SLIC)算法。具体形式如下图所示。

一个桶和一个人的超像素划分结果

超像素将图像分解为大致相同的区域。这样的一个优点是,超像素允许区域的泛化。我们可以假设超像素内的大多数像素具有相似的属性。

在确定图像中的超像素的同时,计算图像的显着性图。使用了两种不同的显着性技术。第一种方法使用OpenCV内置的方法,即所谓的细颗粒显着性。第二种方法涉及获取细颗粒显着性图像的平均值,然后从图像的高斯模糊版本中减去平均值,然后是新图像的绝对值。

下方的图像均突出显示了感兴趣的区域。细颗粒显着性产生的图像较为柔和。此外,细颗粒显着性图像主要勾勒出突出图像的边界。而另一种方法虽然也捕获了突出图像的内部,但是与细颗粒方法相比,该方法会产生更多的噪音。之后需要对噪声进行去除。

第一种显着性结果

第二种显着性结果

为了将图像二值化,对从彩色图像生成的每个超级像素进行迭代。如果显着图像内该超像素区域的中值像素值大于阈值T1,则整个超像素将被二值化为白色。否则,整个超像素将保留为黑色。T1由用户选择,一般情况下,将T1设置为显着图像中最大像素值的25%-30%。

在对图像进行二值化之后,基于所使用的显着性技术对图像进行扩张。在第一种方法中,将图像放大为平均超像素尺寸的两倍。在第二种方法中没有进行扩大,因为图像中存在的较大噪声使扩张风险增大。处理的结果在下面给出。

最后一步操作取决于使用的是哪种显着性。在这两种方法的结果中,都提取最大的白色像素区域。通过查找图像中的轮廓并选择面积最大的轮廓来执行此操作,之后将边界框拟合到所选区域。

根据一般性结果,第一种显着性方法通常会导致区域碎片化。生成边界框后,将落入该框的不属于最大区域的所有其他白色区域添加到该框。框的边界增加到包括这些区域。第二种显着性方法不需要这样做。通常,最大获取的区域会超出期望的数量。

最后一步是将最终找到的边界框提供给Grabcut算法。Grabcut是用于分割图像的常用方法,该方法会将绝对是背景和前景的内容分开。这里面我们直接使用OpenCV的内置Grabcut函数。处理的结果如下所示。

结果

两种显着性计算方法对于结果会有一些影响。第一种显着性方法更加适用于含有噪声的图像中,在含有噪声的图像中不会像第二种显着性方法造成分割结果的溢出。,但是如果图像太长或有卷须,则这些部分通常会与图像的其余部分断开连接。

下面是这两种方法分割更多图像的示例结果。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

基于自适应显着性的图像分割(源码开放)相关推荐

  1. python可见图算法_基于自适应显着性的图像分割(源码开放)

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 本文介绍算法的源码在github上给出 https://github.com/TimChin ...

  2. 大学计算机地址块域,基于视觉显着性的信封地址块定位方法-计算机工程.pdf

    基于视觉显着性的信封地址块定位方法-计算机工程 第 卷 第 期 计 算 机 工 程 年 月 图形图像处理 文章编号 文献标识码 中图分类号 基于视觉显著性的信封地址块定位方法 程美玲张汉超续晋华 华东 ...

  3. Python基于OpenCV的异常行为检测系统[源码&部署教程]

    1.项目背景 智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由"被动监控"到& ...

  4. [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)

    1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 ...

  5. 基于springboot教师人事档案管理系统【源码+论文】展示

    基于springboot教师人事档案管理系统[源码+论文] 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:N ...

  6. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

    介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...

  7. 基于Java毕业设计写手管理平台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计写手管理平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计写手管理平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  8. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  9. 基于JAVA糖果销售管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA糖果销售管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA糖果销售管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  10. 基于Java毕业设计缘梦书屋网站源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计缘梦书屋网站源码+系统+mysql+lw文档+部署软件 基于Java毕业设计缘梦书屋网站源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

最新文章

  1. Axure RP使用攻略--入门级(五)系统函数与变量
  2. C# Win32 API 应用
  3. OpenStack安装过程备忘
  4. JMS中queue和topic区别
  5. SAP Commerce Cloud Accelerator Checkout Delivery Mode 选择页面的实现 JSP
  6. mysql 表锁-解锁
  7. 这10种创意图表,能让可视化报告瞬间变得惊艳炫酷,5分钟学会
  8. list清空的函数java,6-1 jmu-Java-05集合-List中指定元素的删除 (20分)
  9. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...
  10. 计算机专业技能水平如何提升,市计算机:提升技能水平
  11. AJAX验证jsp页面验证码
  12. 也许现在的前端,应该了解更多的算法
  13. select count(*) 和 select count(1) 以及 select count(column) 的区别
  14. 机器学习之监督学习(三)——支持向量机(SVM)
  15. Ubuntu18.04 上 phpvirtualbox 折腾记
  16. c语言判断二叉树是不是二叉排序树_判断
  17. visio业务流程图教学_Visio流程图入门
  18. 好用的在线 java 编译网站,编辑器(亲测)
  19. module项目没有蓝色小方块问题
  20. Data too long for column ‘password‘ at row 1“

热门文章

  1. 【ParaView教程】2.13 保存截图和保存动画
  2. 2021-08-23:启动idea项目时,控制台显示java程序包不存在,解决办法:Error:java xxxx 程序包不存在
  3. ESXi5安装vib格式驱动
  4. deactivate不能关闭venv
  5. 技术人员的一点产品思维思考
  6. UTC时区表(.Net)
  7. SNF快速开发平台MVC-Grid++集成打印
  8. 网站被黑 怎么检测代码含有后门
  9. 用Android-X86和VirtualBox打造高性能Android开发环境
  10. 名家名言 Chuck Thacker