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

时间:2012-06-04 13:50:14

标签: php algorithm math statistics

当我有一个带有N个样本大小的选择的图像时,我应该使用什么mean-stat-equation?

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

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

  1. 找到所有选择的平均中心点,并将选择基于该选择。 - 非常简单,但不会那么准确。
  2. 使用某些算法,如K Means或EM Clustering,但我不知道哪种算法最合适。
  3. 期待为我的问题提供一些出色的解决方案

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

2 个答案:

答案 0 :(得分:2)

我相信您上面列出了两个明显不同的问题:

ONE:积分识别

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

我相信您提到数百名用户将成为此图片的选择位置?数百可能是集群的很多要点。考虑排除异常值(通过删除在特定距离内没有一定数量邻居的点)

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


TWO:积分点数

我认为K Means Clustering最适合这个特定问题。 LINK

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

你想要做的似乎是NP-Hard,但应该通过经典近似来满足。

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

另外:

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

希望这有帮助!

答案 1 :(得分:2)

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

通常你选择能量最少的路径,这里的能量是衡量色调/强度沿路径变化的程度。如果图像的区域非常重要(如狗的脸),但这些区域的能量不一定非常高,则会失败。由于您有用户数据指示图像的哪些部分非常重要,因此每当有人选择具有该像素的区域时,您可以通过向像素显式添加一点能量来确保在图像的这些区域周围进行切割。

This video显示了接缝雕刻的动作,即使你不认为你会使用它,看起来也很酷。我认为值得尝试,但之前我已经使用过一些有趣的调整大小应用程序,实际上很容易实现。