在图像上找到最喜欢的区域

Posted

技术标签:

【中文标题】在图像上找到最喜欢的区域【英文标题】:Find most favored area on an image 【发布时间】:2012-06-08 14:17:05 【问题描述】:

当我的图像具有 N 个样本大小的选择时,我应该使用什么均值统计方程?

我有一个独特的问题,我希望得到一些建议,这样我就不会错过任何事情。 问题:根据用户以不同选择比率选择区域,在图像上找到最喜欢/最喜欢/最重要的区域。

场景:考虑Image of a dog,数百名用户在此图像上选择不同分辨率的区域,大多数选择中明显的焦点区域将是包含狗的区域。我可以记录 x1,x2,y1,y2 坐标并将它们放入数据库中,现在如果我想以一组分辨率自动生成该图像的版本,我应该能够识别具有最大吸引力的区域用户。 我认为可行的方法是:

    找到所有选择的平均中心点,并以此为基础选择。 - 非常简单,但不会那么准确。 使用一些算法,如 K 均值或 EM 聚类,但我不知道哪种算法最适合。

期待我的问题得到一些出色的解决方案

有关该问题的更多信息: 实际图像很可能是 1024x768 图像,并且在其上进行的选择将是最常见的手机分辨率。目标是根据用户的选择,通过智能学习自动生成手机壁纸。

【参考方案1】:

我相信您有上述两个明显的问题:

一:点的识别

为此,您需要开发某种启发式方法来确定是否应考虑某个点。

我相信你提到过数百名用户将在这张图片上选择位置?数百个可能是很多点进行聚类。考虑排除异常值(通过删除在特定距离内没有一定数量邻居的点)

您可以采取任何措施来减少数据集。


二:点聚类

我相信 K 均值聚类最适合这个特定问题。 LINK

您的特定问题似乎与解释此算法时使用的标准笛卡尔坐标聚类示例非常相似。

您尝试做的似乎是 NP-Hard,但应该满足经典近似值。

聚类后,您可以对该聚类中的点取平均值以获得相当准确的近似值。

另外:

您的数据集听起来已经是紧密聚集的。 (即大多数人会选择狗的脸,而不是躯干的一侧。)您需要注意局部最小值。 LINK 这些真的会给你的算法带来麻烦。尤其是在少量集群的情况下。请注意,您可能需要一些动态编程来解决这个问题。您通常可以在算法中引入一些方差,从而使平均点从这些局部最小值中“弹出”。 Local Minima/Maxima

希望这会有所帮助!

【讨论】:

在我能够实现它之前,我将不得不做大量的研究,但是是的,我的想法和我想的差不多! 哈哈,我明白你的意思了。我是一名机器人工程和计算机科学专业的学生,​​专注于人工智能。所以,如果你每年有 5 万美元的闲钱,我会在学校为你说好话 大声笑..如果我每年有 5 万美元的闲钱,我就不会问这个问题了,我现在应该雇佣一个团队.. :P【参考方案2】:

我认为您可能能够以不同的方式解决您的问题。如果您还没有听说过Seam Carving,那么我建议您检查一下,因为您可以使用的数据非常适合它。这个想法是,您可以删除不一定在直线上的像素路径,而不是裁剪图像来调整它的大小。这使您可以在保留更多“有趣”信息的同时调整图像大小。

通常您会选择能量最少的路径,这里的能量是衡量沿路径的色调/强度变化的程度。当您拥有非常重要的图像区域(例如狗的脸)但这些区域的能量不一定非常高时,这将失败。由于您有用户数据表明图像的哪些部分非常重要,因此您可以确保在每次有人选择具有该像素的区域时显式地向像素添加一点能量,从而围绕图像的这些区域进行雕刻。

This video 展示了接缝雕刻的实际效果,即使您认为自己不会使用它,观看也很酷。不过,我认为值得一试,我之前曾在一些有趣的调整大小应用程序中使用过它,而且它实际上很容易实现。

【讨论】:

非常非常有趣!然而,大多数图像将主要包含人脸和人,这种调整大小会扭曲他们的脸。但肯定适用于我想到的更多事情!非常感谢! @Suyasha:但这就是为什么你的情况如此之好,如果有人告诉你图像的哪些区域很重要,那么你就可以避免这个问题。 我将对图像进行一些测试,如果它有效,那就太棒了!我目前正在查找它的 php 实现,还没有发现任何用处.. 刚刚发现 Imagick::liquidRescaleImage 急于得到我的手 Liquid resize 主要会扭曲人类图像,但自然图像非常酷。

以上是关于在图像上找到最喜欢的区域的主要内容,如果未能解决你的问题,请参考以下文章

如何在图像中找到明亮区域(以及如何在图像中找到阴影区域)

选择图像上的区域进行分类

在给定图像边界的情况下查找填充区域

处理图像并找到外边缘。查找算法

使用OpenCV进行图像全景拼接

Opencv c ++检测并裁剪图像上的白色区域