Balanced_histogram_thresholding
で画像処理、バランスのとれたヒストグラム閾値法(BHT)、自動画像のために使用される非常に簡単な方法であるしきい値。大津の方法や反復選択しきい値法と同様に、これはヒストグラムベースのしきい値法です。このアプローチは、画像が背景と前景の2つの主要なクラスに分割されていることを前提としています。BHTの方法は、2つのクラスにヒストグラムを分割し、最適なしきい値レベルを見つけようとします。
元の画像。
しきい値処理された画像。
メソッドの進化。
この方法では、ヒストグラムの重さを量り、両側のどちらが重いかを確認し、重い側が軽くなるまで重みを取り除きます。体重計の端が合うまで同じ操作を繰り返します。
その単純さを考えると、この方法は、自動画像しきい値処理の対象を提示するときの最初のアプローチとして適しています。
アルゴリズム
次のリストは、C表記で、バランスヒストグラムしきい値法の簡略版です。
int BHThreshold (int []ヒストグラム){
i_m = (int )((i_s + i_e )/ 2.0f ); //体重計の中心I_mw_l = get_weight (i_s 、i_m + 1 、ヒストグラム); //左側の重みW_lw_r = get_weight (i_m + 1 、i_e + 1 、ヒストグラム); //右W_R上の重量ながら(I_S もし(W_R > w_l ){ //右側が重いW_R – =ヒストグラム。
if (((i_s + i_e )/ 2 ) w_r + =ヒストグラム;
w_l – =ヒストグラム。 }
} else if (w_l > = w_r ){ //左側が重いw_l- =ヒストグラム; if (((i_s + i_e )/ 2 )> = i_m ){
w_l + =ヒストグラム;
w_r- =ヒストグラム;
i_m ++ ; } } } リターンi_m 。 }
以下は、Python言語で可能な実装です。
def bht (hist 、 min_count : int = 5 ) -> int : “” “バランスの取れたヒストグラムしきい値処理。” “” n_bins = len (hist ) #1Dヒストグラム h_s = 0 と想定し、 hist h_s + = 1 #開始時に小さなカウントを無視する h_e = n_bins – 1 while hist h_e- = 1 #終了時に小さなカウントを無視する #ヒストグラムの平均強度を中心として使用する; 代替的に:(h_s + h_e)/ 2) h_c = INT (ラウンド(NP 。平均(NP 。linspace (0 、 2 ** 8 – 1 、 n_bins )、 重み= HIST ))) w_l = NP 。sum (hist ) #左側の重み w_r = np 。sum (hist [ h_c : h_e + 1 ]) #右側の重み while h_s if w_l > w_r : #左側が重くなった
w_l- = hist
h_s + = 1
else : #右側が重くなった
w_r- = hist
h_e- = 1
new_c = int (round ( (h_e + h_s ) / 2 )) #はかりの中心を再設定します
if new_c w_l- = hist
w_r + = hist
elif new_c > h_c :
w_l + = hist
w_r- = hist
h_c = new_c h_cを返す
参考文献
^ A.AnjosおよびH.Shahbazkia。バイレベル画像しきい値処理-高速な方法。BIOSIGNALS2008。Vol:2。P:70-76。
^ 大津信行(1979)。「グレーレベルヒストグラムからのしきい値選択方法」。IEEETrans。Sys。、Man。、Cyber。9:62–66。
^ Ridler TW、Calvard S.(1978)反復選択法を使用した画像しきい値処理、IEEETrans。システム、人間とサイバネティックス、SMC-8:630-632。
外部リンク
ImageJプラグイン
大津対。BHT