2017-05-30 12 views
1

私は画像処理では新しいです。私は小さい四角の縁がそれらの上に円を半減させるかどうかを確認したいim2bw関数の最適グレーレベルを見つける方法

enter image description here

:私は、各エッジの中学で4円と、このようなグレースケール画像を持っています。他の賢明な、円の中心と関連するエッジ間の距離。私は以下のコードを書いた。まず、辺の長さを見つけて、それぞれの真ん中を見つけようとします。

BW1=im2bw(image,0.45); 
BW1=imcomplement(BW1); 

BW1=imclearborder(BW1); 
BW1=bwconvhull(BW1); 
Area=bwarea(BW1); 
side=sqrt(Area); 
s    = regionprops(BW1, 'Centroid'); 
sx1   = round(s.Centroid(1)); 
sy1   = round(s.Centroid(2)); 
C1=[sx1,(sy1-side./2)]; %% middle of top edge 
C2=[(sx1+side./2),sy1]; %% middle of right edge 
C3=[sx1,(sy1+side./2)]; %% middle of bottom edge 
C4=[(sx1-side./2),sy1]; %% middle of left edge 

その後、私は以下のようにそれぞれの円の中心を見つけ、私は関連の端からの距離を計算します。

BW2=im2bw(image,0.6); 
BW2=bwareaopen(BW2,70); 
S  = regionprops(BW2, 'Centroid'); 
centroids = round(cat(1, S.Centroid)); 

D1=centroids(5,:)-C1; %% distance from top edge 
D2=centroids(6,:)-C2; %% distance from right edge 
D3=centroids(4,:)-C3; %% distance from bottom edge 
D4=centroids(3,:)-C4; %% distance from left edge 

しかし、問題は、私はim2bwlevel値を変更したときに、私は違う得るということです結果。信頼性の高い結果を得るにはどうすれば最適なlevelを見つけることができますか? ありがとうございます。

+0

あなたは 'graythresh'を試しましたか? –

+0

私がgraythreshを使用すると、より小さな四角形とすべての円が欠けています。 – Mahdie

答えて

1

あなたはあなたのレベルを微調整して、画像自体(平均値または例えば、レベルの中央値などの機能= 0.5 *中央値(画像))に依存することができます

もう一つの方法は、normalizeあなたのイメージと使用することですアプリケーションとデータに応じて自分自身を見つけ出す一定の値のしきい値。

+0

あなたはもっと説明できますか?イメージを正規化しますが、新しいイメージは完全に暗くなります。 – Mahdie

+0

どのように正規化していますか? (視覚化するには暗すぎる場合はガンマ補正を試してください) –

+0

申し訳ありませんが、私は混乱しています。私は画像処理についてはほとんど知りません。正規化するのではなく、問題を解決する方法はありますか? – Mahdie

関連する問題