Verfasst am: 09.10.2012, 10:31
Titel: Hilfe beim Verstehen des Programmes
Hi zusammen,
ich habe ein Programmcode dies muss ich analysieren, habe schon einiges verstanden, wollte aber etwas detaillierte wissen was es macht, könnte da mir bitte jemand in einigen Sätzen sagen was es macht?
Code:
% Remove all object containing fewer than 1 pixels
bw = bwareaopen(d,1);
% ----> Was macht das bwareaopen(d,1)?
% fill a gap in the pen's cap
se = strel('disk',1);
% ----> Was macht das strel('disk',1)?
bw = imclose(bw,se);
% ----> Was macht das imclose(bw,se)?
%Trace region boundaries in binary image [B,L] = bwboundaries(bw,'holes');
% ----> Was macht das bwboundaries(bw,holes)
%Measure properties of image regions
stats = regionprops(L,'Area','Centroid');
% ----> Was macht das regionprops(L,'Area','Centroid')
%Threshold to consider as circle
threshold = 0.9;
% loop over the boundaries for k = 1:length(B)% ----> Was bewirkt die schleife step to step
% compute a simple estimate of the object's perimeter
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
% obtain the area calculation corresponding to label 'k' area = stats(k).Area;
% compute the roundness metric
metric = 4*pi*area/perimeter^2;
% mark objects above the threshold with a black circle if metric > threshold
centroid = stats(k).Centroid;
end
if(k==2)% ----> Was bedeutet / was macht es hier und warum 2
area1 = stats(k).Area;
r1 = sqrt(area1/pi);
for a = 1:size(boundary(:,1))
y1(a) = boundary(a,2);
x1(a) = boundary(a,1);
end
if(k==3)% ----> Was bedeutet / was macht es hier und warum 3
area2 = stats(k).Area;
r2 = sqrt((area1 + area2)/pi);
for a = 1:size(boundary(:,2))
y2(a) = boundary(a,2);
x2(a) = boundary(a,1);
end
danke erstmal für deine Antwort, sicherlich ist es mir in der ersten Zeile bekannt das es "Entfernen alle Objekte mit weniger als 1 Pixel" bedeutet, war mein Fehler hier die Frage zu stellen, aber bei den anderen Zeilen ist es leider nicht der Fall das es so deutlich zu verstehen ist.
Deswegen wäre es super eventuell bei den nächsten Zeilen mir behilflich zu sein.
% compute a simple estimate of the object's perimeter
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
% obtain the area calculation corresponding to label 'k' area = stats(k).Area;
% compute the roundness metric
metric = 4*pi*area/perimeter^2;
% mark objects above the threshold with a black circle if metric > threshold
centroid = stats(k).Centroid;
end
if(k==2)% ----> Was macht die Schleife hier und warum 2
area1 = stats(k).Area;
r1 = sqrt(area1/pi);
for a = 1:size(boundary(:,1))
y1(a) = boundary(a,2);
x1(a) = boundary(a,1);
end
if(k==3)% ----> Was macht die Schleife hier und warum 3
area2 = stats(k).Area;
r2 = sqrt((area1 + area2)/pi);
for a = 1:size(boundary(:,2))
y2(a) = boundary(a,2);
x2(a) = boundary(a,1);
end
Zu STREL und IMCLOSE. Ich denke in der Doku von IMCLOSE kommt es gut raus. Wenn man mehere Obejkte hat die nah aneinanderliegen und sich überlagern, dann gib es Anwendungen wo man z. B: Gesamtumfang oder Gesamtfläche bestimmen möchten. Da stören manchmal die Lücken zwischen den Objeckten. IMCLOSE schlliesst diese Lücken aus und mit STREL definiert man Form und Grösse des Musters.
So was hängt immer vom Bild, bzw. der Gruppe von Bildern ab -> Nein.
Andreas
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.