基于显著性的图像分割实验

核心提示本篇文章介绍了显著性图像的分割,这个方法最初来源于对于发掘一个自动生成图像三分图方法的兴趣,这个抠图算法用于关注前景和背景细节的图像分割。通常我们看到一幅图像的时候,我们都会关注于图像中的某一点上,这有可能是一个人,一个建筑物或者甚至是一个

本文介绍了显著图像的分割。该方法最初来自于对发现自动生成三部分图像的方法的兴趣。这种抠图算法用于聚焦于前景和背景细节的图像分割。

通常我们看到一个图像,总是聚焦在图像中的某个点上,可能是一个人,一个建筑,甚至是一个桶。图像中清晰的部分几乎没有意义。这些部位通常表现为注意力不集中,颜色单调,质地光滑。当这样的图像出现时,它们是将感兴趣的对象从图像的其余部分中分割出来的理想图像。本文探讨了这种显著图像的分割。

显著图像的例子。左边的桶和右边的人是感兴趣的目标。

这个项目源于对发现一种自动生成图像剪裁的方法的兴趣。当结合抠图算法时,三项式图像是图像的掩模。这种抠图算法用于聚焦前景和背景细节的图像分割。通常,三项式图包含前景的白色部分、背景的黑色部分和不确定的灰色区域。

三幅图的例子

大多数抠图算法的问题是,它们希望用户提供三项式图像,这是一项耗时的任务。这里有两篇我参考的主要论文,它们试图自动生成一个三项式图[1][2]。在第一篇论文中,Hsieh等人使用了一种相当直接和简单的方法。不幸的是,他们的方法不是完全自动的,因为它要求用户为Grabcut算法提供一个矩形区域。Gupta等人使用显著性方法来预测感兴趣的区域。但是他们的显著性方法非常复杂,综合了三种显著性算法的结果。其中一种算法使用了卷积神经网络,这是一种为了简单实现而希望避免的技术。

除了用户需要提供信息之外,Hsieh的算法产生的结果是非常合理的。我认为如果我能自动化Grabcut,那么他们算法的其余部分将解决最初的问题。我从Gupta等人提供的方法中获得了创建这样一个自动方法的灵感。

方法

许多图像分割方法的目标是将图像二值化为感兴趣的区域。这个项目的目标是不同的。

首先,我想大致找出感兴趣的区域。高斯模糊滤镜应用于图像。从模糊图像中生成平均大小为15像素的超像素。超像素算法旨在根据像素区域中的值的颜色和距离来分割图像。具体来说,使用简单的线性迭代聚类算法。

桶和人的超像素地图

超像素将图像分成几乎相同大小的区域。这样做的一个优点是超像素允许区域的一般化。我们可以假设超像素中的大多数像素具有相似的属性。

与确定图像中的超像素并行,使用两种不同的显著性方法来计算图像的显著性图。第一种方法使用内置的OpenCV方法,称为细粒度显著性。第二种方法包括获得细粒度显著图像的平均值,并将其从图像的高斯模糊图像中减去,以获得新图像的绝对值。

两种方法的区别在于结果的攻击性。以下两幅图像突出显示了感兴趣的区域。细粒度显著性方法产生的图像比较柔和。此外,细粒度显著性图像主要勾勒出显著性图像的边界,尽管另一种方法也捕捉显著性图像的内部。与细粒度方法相比,主动方法确实会产生更多的噪声。消除噪音是这个过程的下一步。

用细粒度方法生成桶和人的显著图

使用正显著性生成的桶和人的显著性图

以下技术是从Gupta等人那里挖掘出来的,为了对图像进行二值化,通过迭代从彩色图像中生成每个超像素。如果显著性图像的超像素区域的中间像素值大于阈值T1,则整个超像素将被二值化为白色。否则整个超像素都是黑的。T1由用户选择。在参考文献[2]中,T1被设置为显著性图像中最大像素值的30%,但在本项目中使用了25%。

图像二值化后,使用哪种显著性技术对图像进行扩展?在细粒度显著性方法中,图像被放大到超像素平均值的两倍。激进的显著性方法不会扩展图像。图像中的噪声越大,任何扩展的风险就越大。

采用细粒度显著性方法和二值积极显著性方法对桶图像进行扩展

最后一步取决于使用哪种显著性方法。在这两种方法中,提取具有最大白色像素的区域。在OpenCV中,这个操作可以通过找到图像中的轮廓,选择面积最大的轮廓来实现。所选区域将匹配一个边界框。

已经观察到,细粒度的显著性方法经常产生碎片化的区域。生成边界框后,落在边界框中且不属于最大区域的任何其他白色部分将被添加到边界框中。边界框的边界将增加以包围这些区域。激进的显著性方法不需要这么做。通常最大的区域包含比预期更多的内容。

最后一步是将最终找到的包围盒输入Grabcut算法。Grubcut是一种常用的图像分割方法。包围盒赋予Grabcut函数最终被算法分成背景和前景。在大多数包含Grubcut应用程序的软件包中,用户编辑矩形区域可以为算法提供更多信息,以产生更好的结果。本项目中使用了OpenCV内置的Grubcut函数。

在桶实验中,两种方法的结果相同。

这个过程在[1]开始的地方结束。我计划在未来继续开发这个自动旅行地图生成器。

结果

在这两种方法中,积极的显著图似乎为大多数图像产生精确的掩模。细粒度显著性方法产生的图像中的显著性目标更加“笨重”。如果图像很长或有卷须,这些部分通常与图像的其余部分断开。然而,由于其保守性,当图像特别嘈杂时,细粒度方法更好。蒙版可能无法捕捉整个图像,但它不会像主动方法那样频繁溢出。

两种方法的样本结果

还需要指出的是,欠发达掩模对于[1]中发展的算法来说并不差。因为最终目标是开发旅行地图图像,所以遮罩将填充灰色区域。这个灰色区域将有助于区分前景和背景。

对于任何一个周刊读者来说,用C++学习OpenCV并实现这个算法都是非常耗时的。很抱歉耽误了,但是希望这个项目能继续下去,以后能有更多的内容!

Github代码地址:https://github.com/TimChinenov/GraspPicture

参考

[1] C. Hsieh和M. Lee,“数字图像抠图的自动三分图生成”,2013年亚太信号与信息处理协会年度峰会和会议,高雄,2013年,第1–5页。

[2]古普塔,维卡斯拉曼,尚穆加纳坦。。用于图像抠图的三分图自动生成。

本文是为AI研究所整理的技术博客,原题:基于显著性的图像分割。

作者:蒂姆·钦,高丽丽译

原文链接:https://towardsdatascience . com/基于显著性的图像分割-473b4cb31774

本文来自人人都是产品经理的合作媒体@雷锋网。com,由@高丽丽翻译。

题目来自Unsplash,基于CC0协议。

 
友情链接
鄂ICP备19019357号-22