私は画像処理では新しいです。私は小さい四角の縁がそれらの上に円を半減させるかどうかを確認したいim2bw関数の最適グレーレベルを見つける方法
:私は、各エッジの中学で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
しかし、問題は、私はim2bw
のlevel
値を変更したときに、私は違う得るということです結果。信頼性の高い結果を得るにはどうすれば最適なlevel
を見つけることができますか? ありがとうございます。
あなたは 'graythresh'を試しましたか? –
私がgraythreshを使用すると、より小さな四角形とすべての円が欠けています。 – Mahdie