opencv2--ヒストグラム5

(A)ヒストグラム

画像はピクセルで構成されている構成、各画素値は、点(グレースケールまたはカラー画像)の色を表します。いわゆるヒストグラムは、グレーの統一された全体のコンセプトを取得し、画像統計でこれらの画素の値にあります。ヒストグラムの利点は、あなたが明確に後者のヒストグラムに基づいて画像処理のために重要である、グレー画像の全体的な分布を理解することができるということです。

画像の各画素に対応するグレーレベルの数であり、(通常0〜255)、x軸のヒストグラムは階調値であり、一般にy軸のグレースケール画像のヒストグラムです。

それでは、どのように画像のヒストグラムを得るのですか?まず、ヒストグラムを描画するために必要な量のいくつかを理解してみましょう:グレースケールが明るいまで暗いから、通常の状況下で、256階調の0-255合計である(白)(統計はまた、グレースケール範囲のいずれかの一部であってもよいです。 )、各数値は、階調に対応するドットの数を格納するグレーレベルに対応します。そのヒストグラムは、実際には、アレイの1×m個(グレースケール)です。しかし、時には我々は増加の階調を望んでいない、例えば、今、私が過ごすにはグレーレベルのヒストグラムとして一緒に15灰色をしたい、この時間は、私たちは、このようなアレイ上で1 *(M / 15)のみが必要な場合があり十分。だから、15は、ここでは間隔ヒストグラムの幅があります。

OpenCVの関数がcv2.calcHist()を提供してくれ、この関数は、5つのパラメータがあります。

着信が括弧[]囲まで囲む必要があり、画像入力画像、
チャネル::入力チャンネルイメージ画像がグレーである場合、それは(とカラー画像である場合、それは、その唯一のチャネル、0の値は、言うまでもないです3つのチャネル)、0,1,2の値次いで、各チャネルのBGRに対応する、選択されました。この値は、[]渡さを使用する必要があります。
マスク:マスク画像。統計画像全体場合は、noneです。ヒストグラム図の主要部分場合は、対応するマスク計算炎症を形成しなければなりません。
HISTSIZE:グレーレベルの数は、[256]のようなブラケット、必要
、さまざまな変更が前後に負の画素値が得られることが一般的に画素値の範囲、[0256]、0から256従来の画像でない場合は言う:範囲素晴らしい、あなたは彼らができる前に調整する必要があります。
また、統計的なヒストグラムのための強力なnumpyの機能があり、汎用関数np.histogramは、関数np.bincountあります()(速く、そのヒストグラムのため)。これら三つのパラメータ渡される実施形態は、括弧内のOpenCVを搬送する必要があることを除いて、実質的に同様です。
ヒストグラム表示のためにその上に比較的単純な、直接plt.plot()です。次のように一つの例は次のとおりです。

1つの インポートCV2
 2  インポートNP AS numpyの
 3  インポートPLT AS matplotlib.pyplot
 。4 IMG = cv2.imread(' test.jpg '、0)  グレースケール画像の直読
。5  
。6  -cv2.calcHistを読み取るOpenCVの方法(速度最速)
7  画像チャネル[0] -グレイスケールマスク-ないグレーレベル、画素範囲
8。 hist_cv cv2.calcHist =([IMG]、[0]、[なし]、[256]、[0 、256 ])
 。9  
10  #の-np.histogramを読み取るnumpyの方法()
。11 hist_np、ビン= np.histogram(img.ravel()、256、[0、256 ])
 12は、 
13である numpyの-np.bincount()(方法2 = 10倍の速さ)を読み取る別の方法
14 hist_np2 = np.bincount(img.ravel()はminLength = 256 15  
16 plt.subplot(221)、PLT。関数imshow(IMG、' グレイ' 。17 plt.subplot(222 )、plt.plot(hist_cv)
 18である plt.subplot(223 )、plt.plot(hist_np)
 。19 plt.subplot(224 )、plt.plot(hist_np2)
 20 plt.show()

 

結果:

 

 

今、マスクのヒストグラム関数のOpenCVを使用することを検討して、マスクがあなたの次のヒストグラムは領域の画素数であること、の大きさの領域です。例は次のとおりです。

1  インポートCV2
 2  インポートNP AS numpyの
 3  インポートPLT AS matplotlib.pyplot
 。4  
。5 IMG = cv2.imread(' test.jpg '、0)  グレースケール画像の直読
。6マスク= np.zeros(img.shapeの[: 2 ]、np.uint8)
 。7マスク[100:200である、100:200] = 255である
 8。 masked_img = cv2.bitwise_and(IMG、IMG、マスク= マスク)
 9。 
10  #1 -cv2.calcHistを読み取るOpenCVの方法(最速)
11  画像チャネル[0] -グレイスケールマスク-ないグレーレベル、ピクセルの範囲
12は hist_full cv2.calcHist =([IMG]、[0]、[なし]、[256]、[0、256 ])
 13 
14 hist_mask = cv2.calcHist([スペース]、[0]、マスク、[256]、[0、256 ])
 15  
16 plt.subplot(221)、plt.imshow(IMG、' 灰色' 17 plt.subplot (222)、plt.imshow(マスク、' 灰色' 18 plt.subplot(223)、plt.imshow(masked_img、' 灰色' 19 plt.subplot(224 )、plt.plot(hist_full)、plt.plot (hist_mask)
 20 plt.show()

 

結果:

 

 

(B)ヒストグラム等化

画像全体が均一な、黒と白のビットより均一との間の各画素のレベルとの間のポイントを達成するために意図されているように、画像コントラスト効果の処理の画像のヒストグラムです。
長い3つのステップを含むものとしてヒストグラムイコライゼーション:

1の数は、各グレイレベルヒストグラム統計が表示され、
図2に示すように、正規化された累積ヒストグラムを算出し、
図3に示すように、再計算された画素の画素値、
を参照の原理に関する詳細なセクション:

ヒストグラム均等化の原則

Baiduの百科事典の説明は素晴らしいです

http://baike.baidu.com/link?url=RUjahehgkTMDGKwAEyMsHyeMyWWTw9a0KUx2CzLbXtxdZyoF6zqDbJsfEffUQYAwvr7kD9p6cbOxJGYGk1nkZq

 

特殊機能OpenCVのヒストグラム等化関数の例としてcv2.equalizeHistを()を使用します。

 

インポートCV2
 インポートPLT AS matplotlib.pyplot 

IMG = cv2.imread(' flower.jpg ' 0)は、直接グレースケール画像読み取り 
RES = cv2.equalizeHist(IMG)

plt.subplotを( 121)、plt.imshow(IMG ' グレー' 
plt.subplot( 122)、plt.imshow(RES、' グレイ'

 

上記ヒストグラム均等化は、グローバルセンスに均等化することが可能であるが、時にはこの操作は非常に良いではない、いくつかの調整は調整する意志の一部であってはなりません。部分的にローカル等化あるOpenCVのヒストグラム等化は、もあり、すなわち、各小ブロックについて、次に、画像全体(例えば10×10の小片によって)複数の小ブロックに分割されていると言うことですイコライジング。この方法は、画像ヒストグラムのために主に画像がより実用的である(例えば、マルチモーダルケースの存在など)が単一ではありません。一例として、)(この方法は、OpenCVのCLAHEで呼び出される関数はcv2.createCLAHEに使用されます。

 

インポートCV2
 インポートPLTのAS matplotlib.pyplot 

IMG(= cv2.imread ' flower.jpg ' 0)は、直接グレースケール画像読み取り 
CLAHE = cv2.createCLAHE(clipLimit = 2、tileGridSize =(10,10 ))
CL1を = CLAHEを.apply(IMG)

plt.subplot( 121)、plt.imshow(IMG、' グレイ' 
plt.subplot( 122)、plt.imshow(CLL、' グレイ'

 



これは、グローバルヒストグラム均等化に対する相対見ることができ、地元のイコライゼーションは、もう少し自然な効果を得るように見えます。
----------------
免責事項:この記事は元の記事CSDNブロガー「on2way」であり、BY-SAの著作権契約、複製、元のソースのリンクと、この文を添付してくださいCC 4.0に従ってください。 。
オリジナルリンクします。https://blog.csdn.net/on2way/article/details/46881599

 

 

 

 

 

 

 

 

 

1

おすすめ

転載: www.cnblogs.com/weststar/p/11512991.html