コントラストストレッチングとヒストグラムイコライゼーションの違いを知りたいです。
私はOpenCVを使用して結果を観察しましたが、2つの手法の主な違いをまだ理解していません。洞察は非常に必要な助けになるでしょう。
まずコントラストを定義しましょう、
Contrastは、画像の「範囲」の尺度です。すなわち、その強度がどの程度広がっているか。マイケルソンが有名な多くの正式な定義があります:
彼はcontrast = ( Imax - Imin )/( Imax + I min )
と言います
コントラストは、画像全体の視覚的品質と強く結びついています。理想的には、利用可能なすべての範囲の値を画像で使用したいと考えています。
コントラストストレッチングとヒストグラムイコライゼーションには、同じ目標があります。つまり、画像で利用可能な値の範囲全体を使用するようにします。
しかし、それらは異なる手法を使用します。 コントラストストレッチングはマッピングのように機能します
画像の最小強度を範囲の最小値にマッピングします(上記の例では84 ==> 0)
同じ方法で、画像の最大強度を範囲の最大値にマッピングします(上記の例では153 ==> 255)
これが、コントラストストレッチングが信頼できない理由であり、強度が0と255のピクセルが2つしか存在しない場合、まったく役に立ちません。
ただし、より良いアプローチは、確率分布を使用するヒストグラム均等化です。手順を学ぶことができます こちら
読んだ後、次の点に出会いました。
コントラストストレッチングは、画像の最大強度値と最小強度値の差を大きくすることです。残りの強度値はすべて、この範囲内に広がります。
Histogram equalizationは、ヒストグラムが「平坦化」されるように画像内のすべてのピクセルの輝度値を変更することです現実には、ヒストグラムを正確に平坦化することはできません。いくつかのピークといくつかの谷がありますが、それは実際的な問題です)。
コントラストストレッチングでは、ソースイメージとターゲットイメージの間に強度値の一対一の関係が存在しますすなわち、元の画像をコントラストストレッチ画像から復元できます。
ただし、一度にhistogram equalizationが実行されると、元の画像に戻る方法はありません。
コントラストストレッチは、イメージの強度の任意の間隔をストレッチし、その間隔を別の任意の間隔に合わせる線形正規化です(通常、ターゲット間隔は、イメージの可能な最小値と最大値(0や255など)です)。
ヒストグラム均等化は、高い存在強度でヒストグラムの領域を引き伸ばし、低い存在強度で領域を圧縮する非線形正規化です。
コントラストは、最大ピクセル強度と最小ピクセル強度の差です。
どちらの方法もコントラストを強化するために使用され、より正確には、画像の強度を調整してコントラストを強化します。
ヒストグラムの均等化中に、ヒストグラムの全体的な形状が変化しますが、対照的に、ヒストグラムの全体的な形状は同じままです。
コントラストストレッチングは、イメージの強度レベルのヒストグラムを広げるので、入力範囲の周りの強度が完全な強度範囲にマッピングされると思います。
ヒストグラム均等化一方で、累積分布関数または確率に従って、すべてのピクセルを全範囲にマッピングします。