OpenCVの共通の基本的な処理機能(7)と、画像ピラミッドヒストグラム

ガウシアンピラミッド

ガウシアンピラミッドが得られ、連続する行と列除去ボトム画像によってトップです。各ピクセル値は、5つの画素の画像ガウス加重平均の画像層の上部に等しいです。

この操作は一度のMxNピクチャ画像は内M / 2xNの/ 2となります。そこで、画像の面積のこの作品は、オリジナル画像領域の四分の一になります。

あなたは、画像ピラミッドを減少解像度を得ることができます。私たちは、画像ピラミッドを構築するために、関数cv2.pyrDown()とcv2.pyrUp()を使用することができます。

画像の概要:

プロファイルは、単に曲線が同一のカラーまたはグレイスケールを有する一緒に離散点(添付の境界)とみなすことができます。

バイナリ画像の輪郭を見つける:
  ()関数cv2.findContoursは、3つのパラメータ、最初の入力画像、第2の探索モードの概要、第三の輪郭近似法を有しています。3つの戻り値があり、それは、第1の画像、第2のプロファイルであり、そして第三のをクロマトグラフィー構造(プロファイル)です。

 

ヒストグラム

ヒストグラムは、グレースケール画像ではなく、カラーマップを示す図であります

画像のヒストグラム統計を使用してOpenCVの

パラメータ:
cv2.calcHist(イメージ、チャネル、マスク、HISTSIZE、[、HIST [累算]範囲)
  原画像(または画像フォーマットUINT8用のfloat32):1.イメージ。【例えば、角括弧で囲まれる関数に渡されるとき:[スペース]。
  2.チャンネルは:また、括弧で囲まする必要があり、それは我々が画像を撮影したいヒストグラム機能を教えてくれます。入力画像がグレースケール画像である場合、その値は[0]であり、それがカラー画像である場合、渡されたパラメータは、[0]、[1]、[2]チャネルB、G、Rに対応することができます
  3.マスク:マスク画像。なしにそれを置くために画像全体のヒストグラムにします。あなたは、画像の統計的なヒストグラムの特定の部分をしたい場合しかし、あなたはマスク画像を作成し、それを使用する必要があります。(バックの例があります)
  BIN番号:4 HISTSIZE。また、例えば、角括弧で囲まなければならない:[256]。
  5.範囲:画素値の範囲、通常は[0256]

 

また、ヒストグラム機能を描画するmatplotlibのmatplotlibの、している行うことができます。matplotlib.pyplot.hist()
を直接ヒストグラムと統計を描くことができます

描画中のみ描画関数matplotlibの、使用することができるマルチチャンネル(BGR)ヒストグラム

CV2インポート
インポートnumpyのAS NP
 から matplotlibのインポートpyplot AS PLT 
IMGは = cv2.imread(' home.jpg ' 
の色 =(' B '' G '' R&LT ' 
インデックスとの両方を横断するリストまたはアレイの#列挙使用して、要素を横断する
ための I、COLの列挙(カラー):
histr = cv2.calcHist([IMG]、[I]、[なし]、[ 256 ]、[ 0256 ])
plt.plot(histr、カラー = COL)
plt.xlim([0256 ])
plt.show()

ヒストグラム平坦化

一次元ヒストグラム

得られたヒストグラムは一箇所の画素値のいくつかを指示することができる、高品質な画像の画素値が広く分布されるべきです。

だから、ヒストグラム均等化である均等に分散、ヒストグラム、になるためにそれを置く必要があります。この操作は、通常ます画像のコントラストを向上させます

ここでは直接効果的に画像のいくつかの詳細を保持することができ、適応ヒストグラム均等化機能を導入。

この場合には、全体画像は、多くの小片に分割され、それぞれ、各ヒストグラム等化の小片次いで、(すなわち、2番目のパラメータは、デフォルトでは8×8の関数である)、「タイル」と呼ばれます。の

numpyのインポートAS NP 
インポートCV2 
IMG = cv2.imread(' tsukuba_l.png '0 
#はCLAHEオブジェクト作成
CLAHE = cv2.createCLAHE(clipLimit = 2.0、tileGridSize =(88 )) CL1を = clahe.apply(IMGを) cv2.imwrite(' clahe_2.jpg '、CLL)

 

2Dヒストグラム

二つの要因を考慮するために、この唯一の要因、2Dヒストグラム及び彩度のグレー値の一次元ヒストグラムを考える。(最初の二つは、彩度及び空間HSVです)


2Dヒストグラムは、パラメータを変更する、cv2.calcHist()を計算する:
  •チャンネル= [0 ,. 1] S及びHは、同時に2つのチャネルを処理します。
  •ビン= [180、256] Hは、 チャネル180、S 256チャネルです。
  •範囲= [0、180、 0、256] H の範囲0〜256で0〜180の範囲で、Sを。
最後の行は、PLTカラーヒストグラム、最寄りと補間関数の描画機能を使用して描画されます。
IMG = cv2.imread(' home.jpg ' 
HSV = cv2.cvtColor(IMG、cv2.COLOR_BGR2HSV)

HIST = cv2.calcHist([HSV]、[ 01 ]、[なし]、[ 180256 ]、[ 01800256 ])
plt.imshow(HIST、補間 = ' 最も近いです'

 

投影バックヒストグラム

目的は、我々は画像に興味がある一部または他のアクションを見つけることです。

投影とは、各画素値は、入力画像上の対応点が対象物体に属する確率を表す入力画像(探索する)画像の同じ大きさを出力します。

説明するために、より簡単な言葉、より高い出力画像の画素値(より白い)目標点を表す可能性が高い我々は、(入力画像の位置が配置されている)が検索されます。

ヒストグラム逆投影を行うための機能cv2.calcBackProjectを使用してOpenCVの()。実質的に同一の機能をcv2.calcHistパラメータとそのパラメータ。一つの引数は、我々がターゲットヒストグラムを見つけたいということです。3番目のパラメータはヒストグラムを対象としています

バック我々が何をすべき投影が自分の正規化処理を行うために、同じターゲットヒストグラムを再使用する前に。返された結果が画像が、我々は、ボリュームを行う円盤状の畳み込み演算を使用してチェック確率があり、最後に使用しきい値値化

インポートCV2の
インポートnumpyのようなNPの
ROI = cv2.imread(' tar.jpg ' 
HSV = cv2.cvtColor(ROI、cv2.COLOR_BGR2HSV)
目標 = cv2.imread(' roi.jpg ' 
hsvt = cv2.cvtColor(ターゲットcv2.COLOR_BGR2HSV) 計算対象ヒストグラム
roihist = cv2.calcHist([HSV]、[ 01 ]、[なし]、[ 180256 ]、[ 01800256 ])
逆投影および正規化ヒストグラム#の適用
正規位:原画像、結果は、得られた画像は、最小値、最大値にマッピングされた画像を、正規化されたタイプ
のすべての値は、#cv2.NORM_MINMAXアレイは線形マッピングに形質転換したように、それら最小値と最大値との間の
例示の#の容易さを正規化した後のヒストグラムは、正規化後あろう0255 の間の数。
cv2.normalize(roihist、roihist、0255 、cv2.NORM_MINMAX)
DST = cv2.calcBackProject([hsvt]、[ 01 ]、roihist、[ 01800256 ] 。1 
#今回旋とディスク円形
#畳み込みは、本明細書に散乱させることができるが一緒ポイント
ディスク = cv2.getStructuringElement(cv2.MORPH_ELLIPSE、(。55 ))
DST = cv2.filter2D(DST、 - 。1 、ディスク)
#バイナリ閾値とAND 
RET、THRESH = cv2.threshold(DST、502550 
#は覚えているが故に3チャネル画像、マージの使用であります3つのチャネル
THRESH = cv2.merge((THRESH、THRESH、THRESH)) のビット演算
RES = cv2.bitwise_and(ターゲット、THRESH)
RES = np.hstack((ターゲット、THRESH、RES))
(cv2.imwriteを' res.jpg ' 、RES) 表示画像
cv2.imshow(' 1 ' 、RES)
cv2.waitKey(0

結果は以下の通りであります:

 

 参考自:https://www.cnblogs.com/Undo-self-blog/p/8439149.html

おすすめ

転載: www.cnblogs.com/ywheunji/p/10990311.html