我正试图找到一种方法来“评分”可能是徽标的图像。我曾考虑过使用对比度的概念。我将比较一个明显是徽标的图像与其他基本上只是背景颜色的图像或带有另一种颜色的列的背景颜色。例如:
VS
那么,如何使用任何Ruby库测量对比度?我目前正在使用Minimagick,但我还没有找到一种方法来获得对比度。有修改它的选项,但不是为了得到每个人的比率。
答案 0 :(得分: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
应该大致相当于图像的“对比度”。