簡単にするために、モノクロ画像(つまり、ピクセルの色に関する情報ではなく、明るさに関する情報のみを含む画像)から検討を始めます。 画像のヒストグラムは、値のセット[0; 2 bpp ]で定義される離散関数Hと呼ばれます。bppは、1ピクセルの輝度をエンコードするために割り当てられたビット数です。 これは必須ではありませんが、ヒストグラムは多くの場合、範囲[0; 1]に正規化され、関数H [i]の各値を画像内のピクセルの総数で除算します。 タブで。 1は、それらに基づいて構築されたテスト画像とヒストグラムの例を示しています。
タブ。 1.画像とそのヒストグラム
対応するヒストグラムを慎重に検討して、元の画像自体についていくつかの結論を導き出すことができます。 たとえば、非常に暗い画像のヒストグラムは、ヒストグラムの非ゼロ値がゼロ輝度レベル近くに集中するという事実によって特徴付けられ、非常に明るい画像の場合、反対に、すべての非ゼロ値はヒストグラムの右側に集中します。
直感的に、人間の知覚にとって最も便利なのは、ヒストグラムが均一な分布に近い画像になると結論付けることができます。 つまり 視覚的品質を向上させるには、結果のヒストグラムにすべての可能な輝度値が含まれ、同時にほぼ同じ量になるように画像を変換する必要があります。 この変換はヒストグラムイコライゼーションと呼ばれ、リスト1のコードを使用して実行できます。
リスト1.ヒストグラム均等化手順の実装
- プロシージャ TCGrayscaleImage 。 HistogramEqualization ;
- const
- k = 255 ;
- var
- h : doubleの 配列 [ 0 .. k ] 。
- i 、 j : 単語 。
- 始める
- for i : = 0 から k
- h [ i ] : = 0 ;
- for i : = 0 から 自己 。 高さ -1 do
- jの場合: = 0 から self 幅 -1 do
- h [ round ( k * self。Pixels [ i 、 j ] ) ] : = h [ round ( k * self。Pixels [ i 、 j ] ) ] + 1 ;
- for i : = 0 から k
- h [ i ] : = h [ i ] /(self。Height * self。Width ) ;
- for i : = 1 から k
- h [ i ] : = h [ i - 1 ] + h [ i ] ;
- for i : = 0 から 自己 。 高さ -1 do
- jの場合: = 0 から self 幅 -1 do
- 自己 。 Pixels [ i 、 j ] : = h [ round ( k * self。Pixels [ i 、 j ] ) ] ;
- 終わり ;
ヒストグラムの均等化の結果、ほとんどの場合、画像のダイナミックレンジが大幅に拡大され、これまで気付かなかった詳細を表示できます。 この効果は、表に示すように、暗い画像で特に顕著です。 2.さらに、イコライゼーション手順のもう1つの重要な機能に注目する価値があります。パラメータ(開口およびグラデーション変換定数)の設定を必要とするほとんどのフィルタおよびグラデーション変換とは異なり、ヒストグラムのイコライゼーションはオペレータの介入なしに完全自動モードで実行できます。
タブ。 2.イコライゼーション後の画像とそのヒストグラム
イコライゼーション後のヒストグラムには、特有の顕著なギャップがあることに気付くのは簡単です。 これは、出力イメージのダイナミックレンジが元の範囲よりも広いためです。 明らかに、この場合、リスト1で検討したマッピングでは、ヒストグラムのすべてのポケットにゼロ以外の値を提供することはできません。 それでも、出力ヒストグラムのより自然な外観を実現する必要がある場合、ヒストグラムの特定の近傍でi番目のポケットの値のランダム分布を使用できます。
明らかに、ヒストグラムの均等化により、モノクロ画像の品質を簡単に改善できます。 当然、同様のメカニズムをカラー画像に適用したいと思います。
あまり経験のない開発者は、3つのRGBカラーチャネルの形式で画像を提示し、ヒストグラムの均等化手順を各色に個別に適用しようとします。 まれに、これにより成功する場合もありますが、ほとんどの場合、結果はまあまあです(色は不自然で寒いです)。 これは、RGBモデルが人物の色知覚を正確に表示しないという事実によるものです。
別の色空間を思い出してください-HSI。 このカラーモデル(およびそれに関連する他のモデル)は、色調、彩度、および強度のより馴染みのある概念で操作できるため、イラストレーターやデザイナーによって非常に広く使用されています。
白と黒の対角線の方向にRGBキューブの投影を検討すると、六角形が得られ、その角は原色と二次色に対応し、すべての灰色の陰影(立方体の対角線上にある)は六角形の中心点に投影されます(図1を参照):
図 1.カラーキューブの投影
このモデルを使用してRGBモデルで使用できるすべての色をエンコードするには、明度(または強度)の垂直軸(I)を追加する必要があります。 結果は六角形の円錐です(図2、図3):
図 2. HSIピラミッド(トップ)
このモデルでは、色調(H)は赤色の軸に対する角度によって設定され、彩度(S)は色の純度を特徴づけます(1は完全に純粋な色を意味し、0はグレーの陰影に対応します)。 飽和がゼロの場合、トーンには意味がなく、定義されていません。
図 3. HSIピラミッド
タブで。 図3は、画像のHSIコンポーネントへの分解を示しています(トーンチャネル内の白いピクセルはゼロ飽和に対応しています)。
タブ。 3. HSIカラースペース
カラー画像の品質を向上させるには、輝度チャンネルにイコライゼーション手順を適用することが最も効果的であると考えられています。 これはまさに表に示されているものです。 4
タブ。 4.異なるカラーチャンネルのイコライゼーション
この資料が、少なくともおもしろく、可能な限り有用であるように思われたと思います。 ありがとう