2.2 获取图像感兴趣区域_基于自适应显着性的图像分割(源码开放)

news/2024/11/9 22:30:07

9b8e91f301d98cae2a8e9ea0f39d0e3b.png
  • 本文介绍算法的源码在github上给出: https://github.com/TimChinenov/GraspPicture

前言

成产品及系统平台的现场演示,编写技术应用服务方案等,编写投标类方案文件及标书的制作;通常,当我们看到一张图片时,会在图片中聚焦一个焦点。这个可能是一个人,一座建筑物甚至是一个桶。其他没有聚焦区域虽然很清晰,但是却由于颜色单调或者纹理较为平滑而很少引起关注。当遇到此类图象时,我们希望从图像中分割感兴趣的对象。下面给出了显着图像的示例,本文探讨了此类显着图像的分割方法,也称为显着性的图像分割。

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

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

16ef1b686477d54329ba3c621dc5a988.png
Trimap示例

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

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

方法

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

3cc0d26a3242775f48f331098db12a72.png
一个桶和一个人的超像素划分结果

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

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

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

4844f3937eabb32e1037f2ed5588d44a.png
第一种显着性结果

660177222efc9b1760090577e5c8bdb6.png
第二种显着性结果

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

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

0ddf458adbcd71c04da324f85e8cbdb2.png

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

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

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

3c84567dc03574fb236a8b6d2485de64.png

结果

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

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

31fa8817a0245609cf47918822002f9b.png

参考文献:
[1] C. Hsieh and M. Lee, “Automatic trimap generation for digital image matting,” 2013 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference, Kaohsiung, 2013, pp. 1–5.

[2] Gupta, Vikas & Raman, Shanmuganathan. (2017). Automatic Trimap Generation for Image Matting.

153391974ab36e27484a69638d72e7f3.png

http://www.niftyadmin.cn/n/2623564.html

相关文章

iOS-UIImage和Base64字符串互转

//UIImage图片转成Base64字符串:UIImage *originImage [UIImage imageNamed:"originImage.png"];NSData *data UIImageJPEGRepresentation(originImage, 1.0f);NSString *encodedImageStr [data base64EncodedStringWithOptions:NSDataBase64Encoding6…

iOS-Provisioning Profile#40;Certificate#41;与Code Signing详解

引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做 iOS 开发的同学没少被折腾。对于一个 iOS 开发小白、半吊子(比如像我自己)抑或老兵,或多或少会有或曾有过以下…

go语言学习(二)——流程控制

下面是go语言的流程控制 // GoStudy2 project main.go /*go语言学习 流程控制 */ package mainimport ("fmt" )func main() {//if//v11 : -10fmt.Println("******************if")if v11 : 10; v11 < 0 { //if后面可以定义变量&#xff0c;用;隔开fmt.P…

app服务器证书无效怎么办,APP上架证书无效:解决(示例代码)

在碰到问题时总是第一反应&#xff0c;“我没做过啥啊”&#xff0c;这主观思想导致了排查问题更加困难。上传之后出现如图错误&#xff0c;”error itms-9000 the bundle at bundle path is not signed using an apple submission certificate”由于最近某些原因&#xff0c;我…

mysql导出excel 多个sheet_数据库多张表导出到excel

数据库多张表导出到excelpublic static void export() throws Exception{//声明需要导出的数据库String dbName "hdcloude";//声明bookHSSFWorkbook book new HSSFWorkbook();//获取Connection,获取db的元数据//Connection con DataSourceUtils.getConn();Connect…

css grid 自动高度_面试押题之 --- CSS部分

本文章中的题来自写代码啦--2020面试押题,之前我总结过一篇HTML部分的面试押题,马上就要秋招了,所以我打算把面试题都总结一边然后开始投简历练练手,之后争取进大厂.必考&#xff1a;两种盒模型分别说一下。必考&#xff1a;如何垂直居中&#xff1f;必考&#xff1a;flex 怎么…

换中国电信卡显示无服务器,用5G或需要换SIM卡 中国电信给出了答案

套餐改成5G要不要换SIM卡?这个问题近日似乎有了准确的答案。5月13日&#xff0c;中国电信发布的一份白皮书指出&#xff0c;套餐该换用5G或需要换SIM卡。此前在2019年底时&#xff0c;三大运营商宣称使用5G服务&#xff0c;用户不换卡、不换号。但5月13日&#xff0c;中国电信…

flask实时显示服务器日志,使用WSGI服务器和flask应用程序进行日志记录

log – If given, an object with a write method to which request (access) logs will be written. If not given, defaults to sys.stderr. You may pass None to disable request logging. You may use a wrapper, around e.g., logging, to support objects that don’t i…