【问题标题】:Is it possible to find average color of an image from its histogram?是否可以从直方图中找到图像的平均颜色?
【发布时间】:2011-11-26 07:23:26
【问题描述】:

我用this method 取每种颜色的平均值,并将红色、绿色和蓝色的平均值写入数据库。

Here are the images 按“-blue”排序。如您所见,第 5 张图像的蓝色最多。我做错了什么,还是无法从直方图中获得平均颜色?

这是我创建直方图的处理程序:

class ImageSave(webapp.RequestHandler):
    def post(self):
        homepage = HomePage()
        original_image = self.request.get("img")
        url = self.request.get("url")
        firm_name = self.request.get("firm_name")

        original_image = db.Blob(original_image)
        thumbnail = images.resize(original_image, 250, 250)
        img = images.Image(thumbnail)
        hist = img.histogram()
        rgb_weighed_average = hist_weighed_average(hist)

        #update database
        homepage.original_image = original_image            
        homepage.thumbnail = thumbnail
        homepage.firm_name = firm_name
        homepage.url = url

        homepage.red = rgb_weighed_average[0]
        homepage.green = rgb_weighed_average[1]
        homepage.blue = rgb_weighed_average[2]

        homepage.put()

        self.redirect("/imageupload")

谢谢!

【问题讨论】:

  • 您需要一个亮度和饱和度分开的色彩空间 (HSL/HSV)。然后找到每个像素的色调分量的主导值。
  • Paolo Moretti:我使用 Python 的 colorsys 来获取色调:hue = colorsys.rgb_to_hls(r,g,b)[0] 并按色调排序,但相似颜色的静止图像不会组合在一起。
  • 这实际上与 App Engine 没有任何关系,不是吗?此外,您询问的是直方图和图像处理,但没有包含任何图像处理代码。
  • @Nick Johnson:我删除了 GAE 标签。该代码包括我如何计算直方图和平均值,但不幸的是,当我按 rgb 或按色调排序时,具有相似颜色的图像不会组合在一起。

标签: python image colors histogram


【解决方案1】:

实际上,第五张图片的蓝色并不是最多的。请注意,白色是(255, 255, 255) 和 rgb,因此完全白色的图像与完全蓝色的图像具有一样多的蓝色。较深的蓝色具有比白色更小的blue 分量。

【讨论】:

  • omz:谢谢!那么有没有办法将相似的颜色从最白到最蓝或最暗组织在一起?我应该使用其他方法吗?
  • 或许您可以计算平均颜色的色调(搜索 rgb 到 hsv/hsl 的转换)并以此为基础进行排序。
  • omz:按色调排序也不起作用。视觉上看起来最蓝的图像被排序在最白的图像旁边;就像你在评论中所说的那样。有没有办法找到图像的视觉主导颜色?再次感谢。
  • 我认为仅靠直方图是不可能的。
  • omz:是的,看起来像。我在这里放置了各种排序顺序:http://ting-1.appspot.com/displayimage,正如您所看到的,颜色不能很好地分组。有什么建议吗?
猜你喜欢
  • 2011-07-06
  • 2012-07-28
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2017-08-23
相关资源
最近更新 更多