Ich bin neu in der Bildverarbeitung. Ich habe ein Graustufenbild wie dieses mit 4 Kreisen in Mitten von jeder Kante:So finden Sie den optimalen Grauthresh für die Funktion im2bw
Ich möchte überprüfen, ob Ränder der kleineren quadratischen die Kreise auf sie halbieren. Anders ausgedrückt, wie groß ist der Abstand zwischen der Mitte des Kreises und der zugehörigen Kante. Ich habe unter dem Code geschrieben. Zuerst versuche ich die Kantenlänge zu finden und finde die Mitte jeder Kante.
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
Dann finde ich Mitte jeden Kreis wie unten und ich berechnen ihre Entfernung von der zugehörigen Kante:
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
Aber das Problem ist, dass, wenn ich level
Wert von im2bw
ändern, ich anders bekommen Ergebnisse. Wie kann ich optimale level
finden, um zuverlässige Ergebnisse zu haben? Vielen Dank im Voraus.
hast du 'graythresh' versucht –
Wenn ich graythresh verwende, vermisse ich das kleinere Quadrat und alle Kreise. – Mahdie