1

ロゴである可能性が高い画像を「スコアリング」する方法を見つけようとしています。コントラスト比の概念を使用することを考えました。明らかにロゴである 1 つの画像を、基本的に単なる背景色または背景色と別の色の列の他の画像と比較します。例えば:

黒の背景

ジャックスの背景

では、Ruby ライブラリを使用してコントラスト比を測定するにはどうすればよいでしょうか。現在 Minimagick を使用していますが、コントラスト比を取得する方法が見つかりません。それを変更するオプションがありますが、言うごとに比率を取得することはできません。

4

1 に答える 1

1

これは、大まかに 2 つの手順で行うことができます。

まず、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 に答える