1

サムネイル エンジンの場合、画像から x 個のランダムなサムネイル (クロップ、サイズ変更なし) を取得し、コントラストを分析して、コントラストが最も高いものを選択するアルゴリズムを開発したいと考えています。私は PHP と Imagick を使用していますが、画像のコントラストを計算する方法に関する一般的なヒントを教えていただければ幸いです。

色を数えたり、明るさを計算したりなど、コントラストを計算するよりも簡単なことがたくさんあるようです。

画像素材の分析についてどのような経験がありますか?

4

2 に答える 2

2

私はそのようにします(疑似コード):

L[256] = {0,0,0...}

loop over each pixel:
    luminance = avg(R,G,B)
    increment L[luminance] by 1

for i = 0 to 255:
    if L[i] < C: L[i] = 0       // C = threshold of your chose

find index of first and last non-zero value of L[]
contrast = last - first
于 2009-05-31T20:51:34.977 に答える
1

「コントラストが最も高い」画像を探す際には、画像のコントラストをどのように定義するかについて非常に注意する必要があります。最も単純な方法では、コントラストは画像の最低強度と最高強度の差です。それはあなたの場合にはあまり役に立ちません。

ヒストグラム アプローチを使用して特定の画像のコントラストを記述し、ヒストグラムのプロパティを比較して、定義したコントラストが最も高い画像を特定することをお勧めします。よく知られているさまざまなコンテナーを使用して、コードでヒストグラムを表現したり、特定のニーズを満たすクラスを構築したりできます。(グラフの形式でヒストグラムを作成する必要があることを暗示しているわけではありません。強度値の統計的表現にすぎません。)各ヒストグラムの分散をコントラストの尺度として直接使用することも、標準偏差を使用することもできます。それは扱いやすいです。

重要なのは、画像のコントラストをどのように定義するかにあります。一般に、ハイ コントラスト イメージは、考えられるすべての値、またはほぼすべての値に対して値が存在するイメージと定義します。さらに、この高コントラスト画像の定義では、画像の強度値が可能な値の範囲全体に一様に分布する傾向があることを付け加えておきます。

このアプローチを使用すると、低コントラストの画像は離散強度値が比較的少なくなり、それらは均一に分布するのではなく、密接にグループ化される傾向があります。(原則として、範囲の中央に向かってグループ化される傾向もあります。)

于 2009-06-03T02:12:34.480 に答える