1

我正在尝试找到一种方法来“评分”可能是徽标的图像。我考虑过使用对比度的概念。我会将一个明显是徽标的图像与其他基本上只是背景颜色或背景颜色的图像与另一种颜色的列进行比较。例如:

黑色背景

对比

千斤顶背景

那么,如何使用任何 Ruby 库来测量对比度?我目前正在使用 Minimagick,但我还没有找到获得对比度的方法。有修改它的选项,但不能得到每个人的比率。

4

1 回答 1

1

您可以通过大约两个步骤完成此操作。

首先使用 RMagick 得到图像的直方图:

http://www.simplesystems.org/RMagick/doc/image1.html#color_histogram

下一步是应用一些公式。我在下面提供的一个是我刚刚想到的一个。但是,还有其他一些:

http://en.wikipedia.org/wiki/Contrast_(vision)#Formula

接下来通过将每个像素乘以其权重然后除以像素总数来计算平均颜色。像这样的东西:

color_histogram.each do |pixel, count|
  total_red += pixel.red*count
  total_blue += pixel.blue*count
  total_green += pixel.green*count
end

average_red = total_red / pixel_count average_blue = total_blue / pixel_count average_green = total_green / pixel_count

获得“平均颜色”后,确定每个像素与平均值之间的总距离:

color_histogram.each do |pixel, count|
  distance_red += Math.abs(average_red - pixel.red)
  distance_blue += Math.abs(average_blue - pixel.blue)
  distance_green += Math.abs(average_green - pixel.green)
end

总和distance_red + distance_blue + distance_green应该大致相当于图像的“对比度”。

于 2013-11-27T00:56:09.497 回答