グレーターゲットと背景はいくつかの違いがある場合は、単純なグレースケール画像のために、一定の閾値を抽出するために使用することができます。キーが閾値を決定することで、一般的に用いられる方法です。
モーダル法、Pパラメータ法、可変閾値法、大津反復近似法などが挙げられます。
モーダル方法:
ヒストグラムの谷は、閾値として採用します。これは、グレースケール画像の各ターゲットと背景ヒストグラムのピーク、オブジェクトと背景はかなり異なるグレーに適用されます。
ヒストグラムは、トラフを見つけるために、より強いムラ、困難である場合、平均ヒストグラムに比較的滑らかな技術の点で治療することができます。
Pパラメータ法:
画像の対象領域の割合が知られており、最大値が目標最小グレーの背景グレー値よりも大きくなっている場合、Pパラメータの方法を用いることができます。実際には、それから、白に近いグレーターゲットの場合
画素Pの割合は、(左から蓄積又は)閾値として階調電流のピクセルの累積数になるまで、右側の画素に累積ヒストグラムを開始します。
例えば、閾値決意75、最終ターゲット基地抽出として、わずかに重なる、図0.45のようなムーン割合、及び最小グレーの背景のグレー。
可変閾値法:
画像灰色の背景を変更する場合、干渉を良好に除去することができるように、あなたは、画像の異なる部分について異なる閾値を設定することができます。
図タンポポ例を抽出し、異なる抽出効果の真ん中と下の閾値に沿う上側画像の複数の照明、主にタンポポの羽、低い及びより少ない光、及び主茎は、はるかに良くなります。
大津法:
最も広範囲の大津のアプリケーションとは、優れた適応閾値を持っています。バッチ抽出又は動画像のグレースケール画像抽出に適した(しかし、大津は非常に深刻になり、反射干渉に会ったときに、判明します)。
次のように大津の原理は次のとおりです。
セグメンテーションしきい値Tが設定されるR&LTで示される分割領域1及びR&LT 2。
R&LT 。1つの画像の総画素数の割合、θ 1は、R 2件の総ピクセル画像[シータ]の割合を占める2。
画像の平均濃淡値、μ 0は、R 1つの、μの平均グレー。1は、R 2、μの平均グレー2。
もちろんあります。
S 0 = H 1 * S 1 + H 2 * Mの2
閾値はR&LT次いで、適切なように選択された場合。1及びR&LT 2階調差が大きくなければならない、マイクロ1と、μ 0、、μ 2と、μ 0の差の絶対値も大きいです。
反応階調差の大きさに定義されたクラス間分散:
P 2 = I 1(M 1 -m 0)2 + I 2(M 2 -m 0)2
各選択された閾値Tについては、我々は、σ対応するσを有し、最大閾値Tは、最適な閾値です。
さらに、この方法の反復回数を削減する簡略式(もかかわらずhttps://www.cnblogs.com/kensporger/p/11270452.html)、演算処理大津の量が依然として非常に大きいです。
反復近似法:
これは、大津の方法は、次の手順を簡略化したバージョンです。
それによってR&LTの2つの領域を得るために、初期閾値Tに(画像の平均グレースケールであってもよい)の最大値と最小値の平均グレー階調を取る。1及びR&LT 2
算出R&LT 1及びR&LT 2、μのグレー値。1、マイクロ2
新しいしきい値を選択= T(μ 1 +、μ 2)/ 2は、上記の手順を繰り返し、特定の範囲内にはTの変化又は変化まで。
図に示す方法を用いた場合の効果、おそらく唯一の約5回の反復:
しかし、閾値を決定する方法は、多くの場合、最適な閾値とは、このような抽出前の月のように大きな偏差を、持っているだろう、非常に粗い、パフォーマンスだけで非常に良好ではなかったです。
上記のほとんどのMathWorks社のMATLABシミュレーションテストコードは次のとおりです。
%の決意しきい値パラメータ値p法則 関数THRESある = pthres(ファイル、P) IMGA = 関数imread(ファイル); %階調 IMGA = rgb2gray(IMGA); %の取得サイズ [SIZEX、SIZEY] = サイズ(IMGA); %ヒストグラム ヒストグラムは =ゼロ(256、1 ;) のために I = 1。SIZEX: のためのJ = 1 :SIZEY ヒストグラム(IMGA(I、J) + 1)=ヒストグラム(IMGA(I、J)+ 1)+ 1 ; エンド エンド %累積画素 pixels_cnt = 0 ; THRESは = 256 ; 一方(pixels_cnt <P * SIZEX * SIZEY) pixels_cnt = pixels_cnt + ヒストグラム(THRESである); THRESである = thres- 。1 ; エンド %閾値値化に基づい mybw = imbinarize(IMGA、(thres- 1)/ 255 ); サブプロット(1、2、1 ); 関数imshow(IMGA); タイトル(' オリジナル' ); (サブプロット。1 2、、2 ); 関数imshow(mybw); タイトル(' Pパラメータ値化法' ); 終了
%多阈值分割实例 IMGA =関数imread(' multi_thres.jpg ' )。 IMGA = rgb2gray(IMGA)。 単一 = imbinarize(85 / 255 )。 マルチ(250:300、:) = imbinarize((250:300、:)、85 / 255 )。 マルチ(150:250、:) = imbinarize((150:250、:)、150 / 255 )。 マルチ(1:150、:) = imbinarize((。1:150、:)、170 / 255 ); サブプロット(1、3、1。); 関数imshow(IMGA); タイトル(' オリジナル' ); サブプロット(1、3、2 ); )関数imshow(SINGLE; タイトル(「単一閾値処理」); サブプロット(1、3、3 ); 関数imshow(マルチ); タイトル(' マルチしきい値')。
%反復近似 関数THRESある = イテレータ(ファイル) IMGA = 関数imread(ファイル); %階調 IMGA = rgb2gray(IMGA); %のGetサイズ [SIZEX、SIZEY] = サイズ(IMGA); %のヒストグラムの総グレー統計 gray_sum = 0 ; ヒストグラム =ゼロ(256、1。); のために I = 1 :SIZEX ためのJ = 1 :SIZEY ヒストグラム(IMGA(I、J) + 1)=ヒストグラム(IMGA(I、J)+ 1)+1 ; gray_sum = gray_sum + 二重(IMGA(i、j)は+ 1 )。 エンド エンド %初始阈值 THRES = gray_sum /(SIZEX * SIZEY)。 old_thres = 0 ; %迭代逼近 一方(ABS(THRES-old_thres)> 1 ) DISP(THRES)。 U1 = 0 ; U2 = 0 。 CNT1 = 0 ; CNT2 = 0 。 以下のための I = 1 THRES: U1= U1 +ヒストグラム(I)* I;% 平均階調統計R1領域 CNT1 = CNT1 + ヒストグラム(I)、 終了 するための I = 256: - 1。:THRESある U2 = U2 +ヒストグラム(I)* I;%統計R2領域平均グレー CNT2 = CNT2 + ヒストグラム(I); エンド U1 = U1 / CNT1; U2 = U2 / CNT2; old_thres = THRESであり; THRESは =(U1 + U2)/ 2 ;%新しいしきい値 エンド mybw = imbinarize(IMGA、(THRESであります- 1)/ 256 ); サブプロット(1、2、1 ); 関数imshow(IMGA); タイトル(' オリジナル' ); (サブプロット。1、2、2 ); 関数imshow(mybw); タイトル(' 反復近似法値化" ); 終了